CN114116132A - 一种虚拟机的冻结方法及装置 - Google Patents
一种虚拟机的冻结方法及装置 Download PDFInfo
- Publication number
- CN114116132A CN114116132A CN202111433624.9A CN202111433624A CN114116132A CN 114116132 A CN114116132 A CN 114116132A CN 202111433624 A CN202111433624 A CN 202111433624A CN 114116132 A CN114116132 A CN 114116132A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- storage pool
- target virtual
- instruction
- issuing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明公开了一种虚拟机的冻结方法及装置。其中,该方法包括:获取文件系统中存储池的当前存储状态;判断当前存储状态是否存在异常;在当前存储状态存在异常时,向与存储池具有依赖关系的目标虚拟机下发挂机指令,以使目标虚拟机暂停与存储池之间的通信交互;向目标虚拟机下发关闭指令,以使运行在目标虚拟机上的文件描述符关闭,进而使目标虚拟机与存储池之间不再进行通信交互。通过实施本发明,在存储池发生不可用故障时,通过挂机指令以暂停目标虚拟机与存储池之间的通信交互,进而通过关闭指令以关闭运行在目标虚拟机上的文件描述符,保证了目标虚拟机的运行状态以及内存数据均能够被完整保留,避免出现内存数据丢失或损坏问题。
Description
技术领域
本发明涉及共享存储技术领域,具体涉及一种虚拟机的冻结方法及装置。
背景技术
共享存储作为两个以上的进程共享的存储空间,其在当前主流云平台上的应用越来越广泛,但是由于网络以及硬件等原因,共享存储不可避免地存在发生故障的可能性。当共享存储发生故障不可用时,依赖该共享存储的虚拟机则无法正常运行,从而导致该虚拟机的内存数据丢失或损坏,使其对应的业务发生中断,严重影响了业务的持续可用性。
通常为了最大程度的保证业务的持续可用性,在共享存储发生故障不可用时,强制关闭依赖该共享存储的虚拟机,并卸载该共享存储,若集群中存在能够正常访问该共享存储的其他主机,则将虚拟机迁移至该主机上,重新启动;若没有能够访问该共享存储的主机,则等待共享存储恢复后重新挂载该共享存储并启动虚拟机。但是在共享存储发生故障不可用时关闭虚拟机,会导致虚拟机内存中的数据丢失,业务中断。
发明内容
有鉴于此,本发明实施例提供了一种虚拟机的冻结方法及装置,以解决共享存储发生不可用故障时导致虚拟机内存中的数据丢失、业务中断的问题。
根据第一方面,本发明实施例提供了一种虚拟机的冻结方法,所述方法包括:获取文件系统中存储池的当前存储状态;判断所述当前存储状态是否存在异常;当所述当前存储状态存在异常时,向与所述存储池具有依赖关系的目标虚拟机下发挂机指令,以使所述目标虚拟机暂停与所述存储池之间的通信交互;向所述目标虚拟机下发关闭指令,以使运行在所述目标虚拟机上的文件描述符关闭,进而使所述目标虚拟机与所述存储池之间不再进行通信交互。
本发明实施例提供的虚拟机的冻结方法,在存储池的存储状态发生异常时,通过挂机指令以暂停目标虚拟机与存储池之间的通信交互,进而通过关闭指令以关闭运行在目标虚拟机上的文件描述符,从而保证了目标虚拟机的运行状态以及内存数据等均能够被完整保留,避免出现内存数据丢失或损坏问题。
结合第一方面,在第一方面的第一实施方式中,在向与所述存储池具有依赖关系的目标虚拟机下发暂停指令之前,包括:判断是否接收到所述存储池发送的故障信息;当接收到所述存储池发送的故障信息时,向所述目标虚拟机下发暂停指令。
本发明实施例提供的虚拟机的冻结方法,在向与存储池具有依赖关系的目标虚拟机下发暂停指令前,判断是否接收到存储池返回的故障信息。在接收到存储池返回的故障信息时,向与存储池具有依赖关系的目标虚拟机下发暂停指令,以保证目标虚拟机能够及时暂停与存储池的通信交互,避免目标虚拟机的运行状态受影响。
结合第一方面第一实施方式,在第一方面的第二实施方式中,所述方法还包括:向所述存储池下发阻塞指令,以阻塞对应于所述存储池的故障信息的发送;若所述存储池已被隔离,则向所述存储池下发解除指令,以使得所述存储池发送所述故障信息。
结合第一方面第二实施方式,在第一方面的第三实施方式中,在向所述存储池下发阻塞指令之后,所述方法还包括:获取所述存储池的异常持续时间;判断所述异常持续时间是否大于预设时间;当所述异常持续时间大于所述预设时间时,对所述存储池进行隔离。
本发明实施例提供的虚拟机的冻结方法,在检测到存储池存在异常时,向存储池下发阻塞指令,以阻塞对应于存储池的故障信息的发送,在存储池的异常持续时间大于预设时间且存储池已被隔离时,解除故障信息的阻塞以使得存储池向目标虚拟机发送故障信息,进而使得目标虚拟机暂停与存储池之间的通信交互。该方法通过监测异常持续时间以确定是否暂停目标虚拟机与存储池之间的通信交互,避免存储池闪断而触发冻结状态,同时异常持续时间到达预设时间后可以及时返回故障信息,与便及时触发目标虚拟机的冻结。
结合第一方面,在第一方面的第四实施方式中,在所述冻结所述目标虚拟机之后,还包括:卸载所述存储池。
本发明实施例提供的虚拟机的冻结方法,通过卸载存储池以重新加载存储状态正常的存储池,以便能够恢复目标虚拟机的正常运行。
结合第一方面四实施方式,在第一方面的第五实施方式中,所述方法还包括:当所述存储池的存储状态恢复时,向所述目标虚拟机下发开启指令,以使运行在所述目标虚拟机上的文件描述符开启;在检测到运行在所述目标虚拟机上的文件描述符打开时,向所述目标虚拟机下发恢复指令,以使得恢复所述目标虚拟机与所述存储池之间的依赖关系,进而使得所述目标虚拟机与所述存储池之间恢复通信交互。
本发明实施例提供的虚拟机的冻结方法,在检测到存储池的存储状态恢复时,则向目标虚拟机下发开启指令,以开启运行在目标虚拟机上的文件描述符,并向目标虚拟机下发恢复指令以恢复目标虚拟机与存储池之间的依赖关系,进而恢复目标虚拟机与虚拟机之间的数据通信,保证目标虚拟机能够恢复正常的运行状态。
根据第二方面,本发明实施例提供了一种虚拟机的冻结装置,所述装置包括:第一获取模块,用于获取文件系统中存储池的当前存储状态;第一判断模块,用于判断所述当前存储状态是否存在异常;第一下发模块,用于当所述当前存储状态存在异常时,向与所述存储池具有依赖关系的目标虚拟机下发暂停指令,以使所述目标虚拟机暂时挂起;第二下发模块,用于向所述目标虚拟机下发关闭指令,以使运行在所述目标虚拟机上的文件描述符关闭,进而使所述目标虚拟机与所述存储池之间不再进行通信交互。
结合第二方面,在第二方面的第一实施方式中,所述装置还包括:第二判断模块,用于判断是否接收到所述存储池发送的故障信息;第三下发指令,用于当接收到所述存储池发送的故障信息时,向所述目标虚拟机下发暂停指令。
结合第二方面第一实施方式,在第二方面的第二实施方式中,所述装置还包括:第四下发指令,用于向所述存储池下发阻塞指令,以阻塞对应于所述存储池的故障信息的发送;第五下发指令,用于若所述存储池已被隔离,则向所述存储池下发解除指令,以使得所述存储池发送所述故障信息。
结合第二方面第二实施方式,在第二方面的第三实施方式中,所述装置还包括:第二获取模块,用于获取所述存储池的异常持续时间;第三判断模块,用于判断所述异常持续时间是否大于预设时间;隔离模块,用于当所述异常持续时间大于所述预设时间时,对所述存储池进行隔离。
结合第二方面,在第二方面的第四实施方式中,所述装置还包括:卸载模块,用于卸载所述存储池。
结合第二方面第四实施方式,在第二方面的第五实施方式中,所述装置还包括:第六下发模块,用于当所述存储池的存储状态恢复时,向所述目标虚拟机下发开启指令,以使运行在所述目标虚拟机上的文件描述符开启;第七下发模块,用于在检测到运行在所述目标虚拟机上的文件描述符打开时,向所述目标虚拟机下发恢复指令,以使得恢复所述目标虚拟机与所述存储池之间的依赖关系,进而使得所述目标虚拟机与所述存储池之前恢复通信交互。
需要说明的是,本发明实施例提供的虚拟机的冻结装置的相应有益效果,请参见虚拟机的冻结方法中相应内容的描述,在此不再赘述。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的虚拟机的冻结方法的流程图;
图2是根据本发明实施例的虚拟机的冻结方法的另一流程图;
图3是根据本发明实施例的虚拟机的冻结方法的另一流程图;
图4是根据本发明实施例的QEMU/Libvirt的实现示意图;
图5是根据本发明实施例的虚拟机冻结的流程图;
图6是根据本发明实施例的虚拟机解冻的流程图;
图7是根据本发明实施例的虚拟机的冻结装置的结构框图;
图8是本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了最大程度的保证业务的持续可用性,在共享存储发生故障不可用时,强制关闭依赖该共享存储的虚拟机,并卸载该共享存储,若集群中存在能够正常访问该共享存储的其他主机,则将虚拟机迁移至该主机上,重新启动;若没有能够访问该共享存储的主机,则等待共享存储恢复后重新挂载该共享存储并启动虚拟机。但是在共享存储发生故障不可用时关闭虚拟机,会导致虚拟机内存中的数据丢失,业务中断。
基于此,本发明技术方案在共享存储发生故障不可用时挂起虚拟机,保证虚拟机的运行状态完整,避免虚拟机内存数据丢失或损失,以便存储池的存储状态恢复后,依赖于该存储池的虚拟机能够恢复正常运行状态。
根据本发明实施例,提供了一种虚拟机的冻结方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种虚拟机的冻结方法,可用于电子设备,如手机、平板电脑、电脑、服务器等,图1是根据本发明实施例的虚拟机的冻结方法的流程图,如图1所示,该流程包括如下步骤:
S11,获取文件系统所对应存储池的当前存储状态。
文件系统为基于共享磁盘的集群文件系统,集群文件系统对应有多个节点,存储池为服务器在其中存储副本、卷影副本和传输日志的一组磁盘。该文件系统对应有存储池,以OCFS2为例进行说明,集群中所有节点都可以通过文件系统接口同时访问同一个磁盘,OCFS2可以实时检测存储池的存储状态。
S12,判断当前存储状态是否存在异常。
电子设备可以基于当前存储状态确定存储池是否存在异常,当检测到存储池的存储状态存在异常时执行步骤S13,否则继续对存储池的存储状态予以实时检测。
S13,向与存储池具有依赖关系的目标虚拟机下发挂机指令,以使目标虚拟机暂停与存储池之间的通信交互。
在存储池的当前存储状态存在异常时,依赖该存储池的目标虚拟机将会出现运行异常,此时存储池对应的文件系统能够可以将存储池对应的异常信息发送至的目标虚拟机对应接口,该接口能够向目标虚拟机发出挂机指令,以将与存储池具有依赖关系的目标虚拟机暂时挂起,暂停该目标虚拟机与其所依赖存储池之间的通信交互,保证目标虚拟机的运行状态能够保存不至于因存储池异常而关闭。
S14,向目标虚拟机下发关闭指令,以使运行在目标虚拟机上的文件描述符关闭,进而使目标虚拟机与存储池之间不再进行通信交互。
文件描述符用于表征目标虚拟机与存储池之间的依赖关系,为了解除目标虚拟机与存储池的依赖关系,文件系统可以向目标虚拟机下发关闭指令,并通过目标虚拟机对应接口将运行在目标虚拟机上的文件描述符予以关闭,控制目标虚拟机与存储池之间不再进行通信交互,同时缓存目标虚拟机与存储池之间的输入输出(Input-output,IO)信息,保证虚拟机的运行状态完整。
以集群文件系统OCFS2为例进行说明,OCFS2具有与其对应的代理OCFS2 Agent,当OCFS2检测到存储池的存储状态存在异常时,可以通知OCFS2 Agent进行故障隔离,再由OCFS2 Agent将存储池的异常信息发送至电子设备的高可用性组件,以使该高可用性组件调用目标虚拟机所对应模拟器或管理工具(QEMU/libvirt)的接口,关闭运行在目标虚拟机上的文件描述符,以解除目标虚拟机与存储池之间的依赖关系,并调用QEMU/libvirt所提供的接口设置目标虚拟机进入冻结状态。
本实施例提供的虚拟机的冻结方法,在存储池的存储状态发生异常时,通过挂机指令以暂停目标虚拟机与存储池之间的通信交互,进而通过关闭指令以关闭运行在目标虚拟机上的文件描述符,从而保证了目标虚拟机的运行状态以及内存数据等均能够被完整保留,避免出现内存数据丢失或损坏问题。
在本实施例中提供了一种虚拟机的冻结方法,可用于电子设备,如手机、平板电脑、电脑等,图2是根据本发明实施例的虚拟机的冻结方法的流程图,如图2所示,该流程包括如下步骤:
S21,获取文件系统所对应存储池的当前存储状态。详细说明参见上述实施例对应步骤S11的相关描述,此处不再赘述。
S22,判断当前存储状态是否存在异常。详细说明参见上述实施例对应步骤S12的相关描述,此处不再赘述。
S23,向目标虚拟机下发阻塞指令,以阻塞对应于存储池的故障信息的发送。
故障信息为存储池异常时所发出的磁盘IO错误信息,在故障信息并非不可用故障信息或异常持续时间较短自行恢复时,此时则无需下目标虚拟机下发挂机指令,继而无需关闭目标虚拟机与存储池的通信交互。在检测到存储池的存储状态存在异常时,集群文件系统可以向存储池下发阻塞指令,以阻塞对应于存储池的故障信息的发送,以便进一步确定该故障信息是否为不可用故障信息。
S24,获取存储池的异常持续时间。
异常持续时间为存储池的存储状态出现异常的持续时间。具体地,存储池的存储状态发生异常时,可以由时间戳记录存储状态发生的异常的时间,并能够根据当时时间值与时间戳之间的差值确定异常持续时间;还可以在存储池的存储状态发生异常时开启异常计时,以确定存储池的异常持续时间。
S25,判断异常持续时间是否大于预设时间。
预设时间为存储池发生不可用故障的异常持续时间,该预设时间可以由本领域技术人员根据经验值确定,可以为3s、可以为5s,也可以为其他时间,本申请对此不作具体限定。
将异常持续时间与预设时间进行比较,确定异常持续时间是否超过预设时间,在异常持续时间超过预设时间时,表示存储池发生不可用故障,执行步骤S26,否则执行其他操作,该其他操作可以表示存储池的存储状态发生异常后自行恢复,与存储池具有依赖关系的目标虚拟机恢复正常运行状态;该其他操作还可以为继续监测异常持续时间是否到达预设时间,此处对其他操作不作具体限定。
S26,对存储池进行隔离。
当异常持续时间大于预设时间时,表示存储池发生了不可用故障,此时可以触发存储池的故障隔离,以将存储池所对应集群文件系统的故障节点与正常节点进行隔离,即将故障节点从集群文件系统中隔离出去。
S27,在存储池已被隔离时,向存储池下发解除指令,以使得存储池发送故障信息。
当存储池已被隔离时,存储多路径冗余管理工具Multipath可以向该存储池下发解除指令,以使存储池能够执行相关脚本解除故障信息的阻塞,将故障信息发送至目标虚拟机的管理工具的相关接口,以通过管理工具的相关接口在接收到的存储池发送的故障信息时,能够向目标虚拟机下发挂机指令。
具体地,以集群文件系统OCFS2为例,当OCFS2内核检测到故障隔离信息fence时,其可以时通知存储多路径冗余管理工具Multipath执行脚本disablequeue以解除磁盘IO错误的阻塞,便于存储池将磁盘IO错误发送至目标虚拟机的模拟器或管理工具,即QEMU/libvirtde。
S28,判断是否接收到存储池发送的故障信息。
QEMU/libvirtde所提供的接口能够监测其是否接收到存储池所发送的故障信息。当接收到存储池发送的故障信息时,执行步骤S29,否则继续检测故障信息的接收情况。
S29,向与存储池具有依赖关系的目标虚拟机下发挂机指令,以使目标虚拟机暂停与存储池之间的通信交互。
当接收到存储池发送的故障信息时,表示存储池已经不可用故障,此时目标虚拟机的模拟器或管理工具可以生成目标虚拟机的挂机指令,并将该挂机指令通过模拟器或管理工具提供的连接目标虚拟机的接口将该挂机指令发送至目标虚拟机,以暂停目标虚拟机与存储池之间的通信交互,无需关闭目标虚拟机,保证目标虚拟机具有完整的运行状态。
S210,向目标虚拟机下发关闭指令,以使运行在目标虚拟机上的文件描述符关闭,进而使目标虚拟机与存储池之间不再进行通信交互。详细说明参见上述实施例对应步骤S14的相关描述,此处不再赘述。
本实施例提供的虚拟机的冻结方法,在检测到存储池存在异常时,向存储池下发阻塞指令,以阻塞对应于存储池的故障信息的发送,在存储池的异常持续时间大于预设时间且存储池已被隔离时,解除故障信息的阻塞以使得存储池向目标虚拟机发送故障信息,进而使得目标虚拟机暂停与存储池之间的通信交互。该方法通过监测异常持续时间以确定是否暂停目标虚拟机与存储池之间的通信交互,避免存储池闪断而触发冻结状态,同时异常持续时间到达预设时间后可以及时返回故障信息,与便及时触发目标虚拟机的冻结。
在本实施例中提供了一种虚拟机的冻结方法,可用于电子设备,如手机、平板电脑、电脑等,图3是根据本发明实施例的虚拟机的冻结方法的流程图,如图3所示,该流程包括如下步骤:
S31,获取文件系统所对应存储池的当前存储状态。详细说明参见上述实施例对应步骤S11的相关描述,此处不再赘述。
S32,判断当前存储状态是否存在异常。详细说明参见上述实施例对应步骤S12的相关描述,此处不再赘述。
S33,向与存储池具有依赖关系的目标虚拟机下发挂机指令,以使目标虚拟机暂停与存储池之间的通信交互。详细说明参见上述实施例对应步骤S13的相关描述,此处不再赘述。
S34,向目标虚拟机下发关闭指令,以使运行在目标虚拟机上的文件描述符关闭,进而使目标虚拟机与存储池之间不再进行通信交互。详细说明参见上述实施例对应步骤S14的相关描述,此处不再赘述。
S35,卸载存储池。
将存储状态存在异常的存储池进行卸载。具体地,在关闭运行在目标虚拟机上对应于存储池的文件描述符之后,即目标虚拟机与存储池之间已不存在依赖关系,此时目标虚拟机已缓存其完整的运行状态,集群文件系统可以卸载掉存在异常的存储池,并重新装载相应的存储池。
S36,当存储池的存储状态恢复时,向目标虚拟机下发开启指令,以使运行在目标虚拟机上的文件描述符开启。
在重新装载存储池完成存储池的修复后,存储池的存储状态恢复为活动状态,此时可以向目标虚拟机下发开启指令,以通过对应于目标虚拟机的模拟器或管理工具的接口打开运行在目标虚拟机上的与存储池具有依赖关系的文件描述符。具体地,在检测到存储池的存储状态恢复后,电子设备中的高可用组件(high availability,HA)可以通过管理工具Libvirt所提供的接口以查询处于冻结状态的目标虚拟机,并通过调用模拟器QEMU所提供的接口打开目标虚拟机所需使用的文件描述符。
S37,在检测到运行在目标虚拟机上的文件描述符打开时,向目标虚拟机下发恢复指令,以使得恢复目标虚拟机与所述存储池之间的依赖关系,进而使得目标虚拟机与存储池之间恢复通信交互。
当检测到运行在目标虚拟机上的与存储池具有依赖关系的文件描述符已经打开时,此时可以调用相应接口向目标虚拟机下发恢复指令,以恢复目标虚拟机与所述存储池之间的依赖关系。同时尝试目标虚拟机与存储池之间的IO通信,恢复目标虚拟机与存储池之间的通信交互,目标虚拟机进入正常运行状态。
本实施例提供的虚拟机的冻结方法,通过卸载存储池以重新加载存储状态正常的存储池,在检测到存储池的存储状态恢复时,则向目标虚拟机下发开启指令,以开启运行在目标虚拟机上的文件描述符,并向目标虚拟机下发恢复指令以恢复目标虚拟机与存储池之间的依赖关系,进而恢复目标虚拟机与虚拟机之间的数据通信,保证目标虚拟机能够恢复正常的运行状态。
本实施例以基于共享磁盘的集群文件系统(Oracle Cluster File SystemVersion 2,OCFS2)作为文件系统、以QEMU作为开源模拟器、以libvirt作为虚拟机管理工具为例对上述虚拟机的冻结方法进行具体说明,对于QEMU/Libvirt的具体实现为:Libvirt提供接口,HA调用该接口设置和查询目标虚拟机的状态为冻结状态或非冻结状态;QEMU提供接口,HA调用该接口能够设置虚拟机进入冻结模式或正常处理模式。如图4所示,在冻结模式下当出现磁盘IO错误时,缓存之前的磁盘IO信息并挂起虚拟机,重新创建协同corouting线程,以等待虚拟机恢复时再次尝试磁盘IO操作;在正常模式下,当出现磁盘IO错误时,将磁盘IO错误反馈至虚拟机,由客户操作系统GuestOS处理;QEMU提供接口,HA调用该接口以关闭QEMU进程打开的磁盘文件描述符或打开虚拟机磁盘所需使用的文件描述符。
HA调用QEMU/Libvirt接口设置虚拟机进入冻结处理模式,在存储池处于正常状态时,虚拟机工作于正常处理模式,在存储池的存储状态出现异常时,虚拟机则可以进入冻结处理模式。如图5所示,在存储池的存储状态出现异常时将会出现磁盘IO错误,存储多路径冗余管理工具Multipath可以设置no_path_retry为queue以阻塞磁盘IO错误的返回,并触发fence检测操作;当OCFS2内核检测到fence时通知Multipath执行disablequeue以解除磁盘IO错误的阻塞,以便OCFS2将磁盘IO错误返回至QEMU;QEMU在接收到磁盘IO错误时,可以根据该磁盘IO错误信息挂起虚拟机;OCFS2通知OCFS2 Agent发生fence,OCFS2 Agent则通知HA存储池的存储状态已发生异常;HA调用QEMU/Libvirt接口,关闭文件描述符,设置虚拟机处于冻结状态;OCFS2 Agent将发生异常的存储池卸载掉。如图6所示,待存储池的存储状态恢复时,Libvirt启动存储池,并通知HA存储池变为活动状态;HA通过Libvirt接口查询处于冻结状态的虚拟机;打开虚拟机对应的文件描述符;QEMU恢复虚拟机,重新尝试IO操作,HA调用QEMU/Libvirt接口以控制虚拟机退出冻结状态。
在本实施例中还提供了一种虚拟机的冻结装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种虚拟机的冻结装置,如图7所示,包括:
第一获取模块41,用于获取文件系统所对应存储池的当前存储状态。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
第一判断模块42,用于判断当前存储状态是否存在异常。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
第一下发模块43,用于在当前存储状态存在异常时,向与存储池具有依赖关系的目标虚拟机下发挂机指令,以使目标虚拟机暂停与存储池之间的通信交互。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
第二下发模块44,用于向目标虚拟机下发关闭指令,以使运行在目标虚拟机上的文件描述符关闭,进而使目标虚拟机与存储池之间不再进行通信交互。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
本实施例提供的虚拟机的冻结装置,在存储池的存储状态发生异常时,通过挂机指令以暂停目标虚拟机与存储池之间的通信交互,进而通过关闭指令以关闭运行在目标虚拟机上的文件描述符,从而保证了目标虚拟机的运行状态以及内存数据等均能够被完整保留,避免出现内存数据丢失或损坏问题。
可选地,该装置还可以包括:
第二判断模块,用于判断是否接收到存储池发送的故障信息。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
第三下发指令,用于当接收到存储池发送的故障信息时,向目标虚拟机下发暂停指令。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
可选地,该装置还可以包括:
第四下发指令,用于向存储池下发阻塞指令,以阻塞对应于存储池的故障信息的发送。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
第五下发指令,用于若存储池已被隔离,则向存储池下发解除指令,以使得存储池发送故障信息。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
可选地,该装置还可以包括:
第二获取模块,用于获取存储池的异常持续时间。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
第三判断模块,用于判断异常持续时间是否大于预设时间。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
隔离模块,用于当异常持续时间大于预设时间时,对存储池进行隔离。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
可选地,该装置还可以包括:
卸载模块,用于卸载存储池。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
可选地,该装置还包括:
第六下发模块,用于当存储池的存储状态恢复时,向目标虚拟机下发开启指令,以使运行在目标虚拟机上的文件描述符开启。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
第七下发模块,用于在检测到运行在目标虚拟机上的文件描述符打开时,向目标虚拟机下发恢复指令,以使得恢复目标虚拟机与存储池之间的依赖关系,进而使得目标虚拟机与存储池之前恢复通信交互。详细说明参见上述方法实施例对应的相关描述,此处不再赘述。
本实施例中的虚拟机的冻结装置是以功能单元的形式来呈现,这里的单元是指ASIC电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各模块的更进一步的功能描述与上述方法实施例相同,在此不再赘述。
本发明实施例还提供一种电子设备,具有图7所示的虚拟机的冻结装置。
请参阅图8,图8是本发明可选实施例提供的一种电子设备的结构示意图,如图8所示,该电子设备可以包括:至少一个处理器501,例如CPU(Central Processing Unit,中央处理器),至少一个通信接口503,存储器504,至少一个通信总线502。其中,通信总线502用于实现这些组件之间的连接通信。其中,通信接口503可以包括显示屏(Display)、键盘(Keyboard),可选通信接口503还可以包括标准的有线接口、无线接口。存储器504可以是高速RAM存储器(Random Access Memory,易挥发性随机存取存储器),也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器504可选的还可以是至少一个位于远离前述处理器501的存储装置。其中处理器501可以结合图7所描述的装置,存储器504中存储应用程序,且处理器501调用存储器504中存储的程序代码,以用于执行上述任一方法步骤。
其中,通信总线502可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。通信总线502可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器504可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard diskdrive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);存储器504还可以包括上述种类存储器的组合。
其中,处理器501可以是中央处理器(英文:central processing unit,缩写:CPU),网络处理器(英文:network processor,缩写:NP)或者CPU和NP的组合。
其中,处理器501还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,缩写:ASIC),可编程逻辑器件(英文:programmable logic device,缩写:PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,缩写:FPGA),通用阵列逻辑(英文:generic arraylogic,缩写:GAL)或其任意组合。
可选地,存储器504还用于存储程序指令。处理器501可以调用程序指令,实现如本申请图1至图3实施例中所示的虚拟机的冻结方法。
本发明实施例还提供了一种非暂态计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例中的虚拟机的冻结方法的处理方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (12)
1.一种虚拟机的冻结方法,其特征在于,所述方法包括:
获取文件系统中存储池的当前存储状态;
判断所述当前存储状态是否存在异常;
当所述当前存储状态存在异常时,向与所述存储池具有依赖关系的目标虚拟机下发挂机指令,以使所述目标虚拟机暂停与所述存储池之间的通信交互;
向所述目标虚拟机下发关闭指令,以使运行在所述目标虚拟机上的文件描述符关闭,进而使所述目标虚拟机与所述存储池之间不再进行通信交互。
2.根据权利要求1所述的方法,其特征在于,在向与所述存储池具有依赖关系的目标虚拟机下发暂停指令之前,包括:
判断是否接收到所述存储池发送的故障信息;
当接收到所述存储池发送的故障信息时,向所述目标虚拟机下发暂停指令。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
向所述存储池下发阻塞指令,以阻塞对应于所述存储池的故障信息的发送;
若所述存储池已被隔离,则向所述存储池下发解除指令,以使得所述存储池发送所述故障信息。
4.根据权利要求3所述的方法,其特征在于,在向所述存储池下发阻塞指令之后,所述方法还包括:
获取所述存储池的异常持续时间;
判断所述异常持续时间是否大于预设时间;
当所述异常持续时间大于所述预设时间时,对所述存储池进行隔离。
5.根据权利要求1所述的方法,其特征在于,在所述冻结所述目标虚拟机之后,所述方法还包括:
卸载所述存储池。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述存储池的存储状态恢复时,向所述目标虚拟机下发开启指令,以使运行在所述目标虚拟机上的文件描述符开启;
在检测到运行在所述目标虚拟机上的文件描述符打开时,向所述目标虚拟机下发恢复指令,以使得恢复所述目标虚拟机与所述存储池之间的依赖关系,进而使得所述目标虚拟机与所述存储池之间恢复通信交互。
7.一种虚拟机的冻结装置,其特征在于,所述装置包括:
第一获取模块,用于获取文件系统中存储池的当前存储状态;
第一判断模块,用于判断所述当前存储状态是否存在异常;
第一下发模块,用于当所述当前存储状态存在异常时,向与所述存储池具有依赖关系的目标虚拟机下发暂停指令,以使所述目标虚拟机暂时挂起;
第二下发模块,用于向所述目标虚拟机下发关闭指令,以使运行在所述目标虚拟机上的文件描述符关闭,进而使所述目标虚拟机与所述存储池之间不再进行通信交互。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二判断模块,用于判断是否接收到所述存储池返回的故障信息;
第三下发指令,用于当接收到所述存储池发送的故障信息时,向所述目标虚拟机下发暂停指令。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第四下发指令,用于向所述存储池下发阻塞指令,以阻塞对应于所述存储池的故障信息的发送;
第五下发指令,用于若所述存储池已被隔离,则向所述存储池下发解除指令,以使得所述存储池发送所述故障信息。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取所述存储池的异常持续时间;
第三判断模块,用于判断所述异常持续时间是否大于预设时间;
隔离模块,用于当所述异常持续时间大于所述预设时间时,对所述存储池进行隔离。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
卸载模块,用于卸载所述存储池。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第六下发模块,用于当所述存储池的存储状态恢复时,向所述目标虚拟机下发开启指令,以使运行在所述目标虚拟机上的文件描述符开启;
第七下发模块,用于在检测到运行在所述目标虚拟机上的文件描述符打开时,向所述目标虚拟机下发恢复指令,以使得恢复所述目标虚拟机与所述存储池之间的依赖关系,进而使得所述目标虚拟机与所述存储池之前恢复通信交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111433624.9A CN114116132A (zh) | 2021-11-29 | 2021-11-29 | 一种虚拟机的冻结方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111433624.9A CN114116132A (zh) | 2021-11-29 | 2021-11-29 | 一种虚拟机的冻结方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114116132A true CN114116132A (zh) | 2022-03-01 |
Family
ID=80371822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111433624.9A Pending CN114116132A (zh) | 2021-11-29 | 2021-11-29 | 一种虚拟机的冻结方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114116132A (zh) |
-
2021
- 2021-11-29 CN CN202111433624.9A patent/CN114116132A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9396054B2 (en) | Securing crash dump files | |
US6477663B1 (en) | Method and apparatus for providing process pair protection for complex applications | |
CN112486585B (zh) | 恢复fpga芯片中的逻辑的方法、系统和fpga设备 | |
US9703568B2 (en) | Live initialization of a boot device | |
US11221927B2 (en) | Method for the implementation of a high performance, high resiliency and high availability dual controller storage system | |
US20140122421A1 (en) | Information processing apparatus, information processing method and computer-readable storage medium | |
US11366682B1 (en) | Automatic snapshotting for recovery of instances with local storage | |
US9148479B1 (en) | Systems and methods for efficiently determining the health of nodes within computer clusters | |
CN109976886B (zh) | 内核远程切换方法及装置 | |
CN111552489A (zh) | 用户态文件系统热升级方法、装置、服务器及介质 | |
US9465643B1 (en) | Systems and methods for monitoring a primary operating system (OS) and/or migrating data using an OS hypervisor | |
US10037276B1 (en) | Systems and methods for accelerating access to data by pre-warming the cache for virtual machines | |
US11226875B2 (en) | System halt event recovery | |
US7467324B1 (en) | Method and apparatus for continuing to provide processing on disk outages | |
CN114116132A (zh) | 一种虚拟机的冻结方法及装置 | |
CN115617263A (zh) | 块设备的自动发现及实时复制变化数据的方法及存储介质 | |
US9465710B1 (en) | Systems and methods for predictively preparing restore packages | |
EP4248320A1 (en) | Live migrating virtual machines to a target host upon fatal memory errors | |
US9424189B1 (en) | Systems and methods for mitigating write-back caching failures | |
CN107783855B (zh) | 虚拟网元的故障自愈控制装置及方法 | |
US11977458B2 (en) | System and method for storage awareness service failover | |
CN114116330B (zh) | 服务器性能测试方法、系统、终端及存储介质 | |
US11977431B2 (en) | Memory error prevention by proactive memory poison recovery | |
US20240095011A1 (en) | State machine operation for non-disruptive update of a data management system | |
US20240134760A1 (en) | Investigation procedures for virtual machines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |