虚拟机容错方法以及设备的制作方法
【专利摘要】本发明提供了一种虚拟机容错方法以及设备。其中,该方法包括:判断预取缓冲区中的缓存数据是否是完整的文件;根据判断结果确定备用虚拟机的同步完成状态,并将预取缓冲区中的缓存数据写入相关地址;当主虚拟机发生故障时,根据与故障发生时间最相近一次确定的备用虚拟机处于的同步完成状态启动容错功能。在保证同步数据的实时性的前提下,本发明实施例能够有效避免因同步中断,同步数据不完整导致主虚拟机发生故障时,备用虚拟机未处于同步完成状态,无法启动容错功能进行容错的恶劣后果。
【专利说明】虚拟机容错方法以及设备
【技术领域】
[0001]本发明涉及虚拟机容错领域,特别是涉及虚拟机容错方法以及设备。
【背景技术】
[0002]随着各种云计算平台得到广泛应用,对系统高可用的要求也逐步提高。提高系统可用性的常用方法之一就是系统容错,系统容错的技术包括:硬件冗余、软件备份和检查点、虚拟机容错。以上系统容错的技术中,虚拟机容错是目前云时代系统容错的研究热点。
[0003]对虚拟机进行容错保护时,需要先创建与被保护的虚拟机完全一样的副本,称为备用虚拟机。在主虚拟机(即被保护的虚拟机)正常运行时,备用虚拟机保持与主虚拟机的同步。当主虚拟机由于发生故障,备用虚拟机能够立即代替主虚拟机运行,保证虚拟机的对外服务不会中断。现有技术中,主虚拟机与备用虚拟机能够实现基本的虚拟机容错功能,但现有技术存在如下缺点:
[0004]在主虚拟机负载较重并且系统事件频繁的时候,主虚拟机和备用虚拟机之间的同步时间增长,若此时同步中断,容错功能会失败,即主虚拟机发生故障后,备用虚拟机无法正常运行,导致无法实现对系统高可用的要求。
【发明内容】
[0005]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的虚拟机容错方法以及相应的设备。
[0006]依据本发明的一个方面,提供了一种虚拟机容错方法,在与主虚拟机相应的备用虚拟机中设有预取缓冲区,用于接收来自所述主虚拟机的同步数据并进行缓存,包括:判断所述预取缓冲区中的缓存数据是否是完整的文件;根据判断结果确定所述备用虚拟机的同步完成状态,并将所述预取缓冲区中的缓存数据写入相关地址;当主虚拟机发生故障时,根据与故障发生时间最相近一次确定的所述备用虚拟机处于的同步完成状态启动容错功能。
[0007]可选地,根据判断结果确定所述备用虚拟机的同步完成状态,并将所述预取缓冲区中的缓存数据写入相关地址,包括:若否,拒绝将所述预取缓冲区中的缓存数据写入所述相关地址,确定所述备用虚拟机处于上一同步完成状态,其中,所述处于上一同步完成状态是指所述备用虚拟机中存储的数据与上一次同步完成状态时存储的数据相同;若是,将所述缓存数据写入所述相关地址,确定所述备用虚拟机处于与所述上一同步完成状态不同的下一冋步完成状态。
[0008]可选地,所述缓存数据包括下列至少任意之一:内存脏页数据;设备数据。
[0009]可选地,所述主虚拟机与所述备用虚拟机通过传输控制协议TCP进行连接。
[0010]可选地,所述主虚拟机以及所述备用虚拟机均采用模拟处理器的自由软件QEMU执行运行操作。
[0011]可选地,判断所述预取缓冲区中的缓存数据是否是完整的文件,包括:监测到所述主虚拟机与所述备用虚拟机的数据同步过程停止时,判断所述预取缓冲区中的缓存数据是否是完整的文件。
[0012]依据本发明的另一个方面,还提供了一种备用虚拟机,其中,所述备用虚拟机中设有预取缓冲区,用于接收来自所述主虚拟机的同步数据并进行缓存,包括:判断器,配置为判断预取缓冲区中的缓存数据是否是完整的文件;确定器,配置为根据判断结果确定所述备用虚拟机的同步完成状态;写入器,配置为根据判断结果将所述预取缓冲区中的缓存数据写入相关地址;启动器,配置为当主虚拟机发生故障时,根据与故障发生时间最相近一次所述确定器确定的所述备用虚拟机处于的同步完成状态启动容错功能。
[0013]可选地,所述备用虚拟机还包括:监测器,配置为监测所述主虚拟机与所述备用虚拟机的数据同步过程;以及监测到所述主虚拟机与所述备用虚拟机的数据同步过程停止时,触发所述判断器判断所述预取缓冲区中的缓存数据是否完整。
[0014]依据本发明实施例能够判断备用虚拟机中用于接收及缓存同步数据的预取缓冲区中的缓存数据是否是完整的文件,并根据判断结果确定备用虚拟机的同步完成状态。继而,在主虚拟机发生故障时,根据确定的同步完成状态启动容错功能。其中,备用虚拟机的预取缓冲区能够预取缓存数据同步过程中主虚拟机发送至备用虚拟机的同步数据。因此,若同步中断时,预取缓冲区中的同步数据不完整,本发明实施例能够确定备用虚拟机处于上一同步完成状态。若同步中断时,预取缓冲区中的同步数据为完整的文件,则能够将同步数据写入相关地址。在保证同步数据的实时性的前提下,本发明实施例能够有效避免因同步中断,同步数据不完整导致主虚拟机发生故障时,备用虚拟机未处于同步完成状态,无法启动容错功能进行容错的恶劣后果。
[0015]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
[0016]根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
【专利附图】
【附图说明】
[0017]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0018]图1示出了根据本发明一个实施例的备用虚拟机的数据写入方法的处理流程图;
[0019]图2示出了根据本发明一个实施例的备用虚拟机容错方法的处理流程图;
[0020]图3示出了根据本发明一个实施例的包括主虚拟机和备用虚拟机的容错系统的技术架构图;
[0021]图4示出了根据本发明一个实施例的数据同步过程的同步时间以及时间间隔的关系;
[0022]图5示出了根据本发明一个实施例的一种备用虚拟机的数据写入装置的结构示意图;以及
[0023]图6示出了根据本发明一个实施例的备用虚拟机的结构示意图。【具体实施方式】
[0024]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0025]相关技术中提及,在主虚拟机负载较重并且系统时间频繁的时候,主虚拟机和备用虚拟机之间的同步时间增长,若此时同步中断,容错功能会失败。
[0026]为解决上述技术问题,本发明实施例提供了一种备用虚拟机的数据写入方法。图1示出了根据本发明一个实施例的备用虚拟机的数据写入方法的处理流程图。需要说明的是,本发明实施例中,在与主虚拟机相应的备用虚拟机中设有预取缓冲区,用于接收来自主虚拟机的同步数据,并对接收到的数据进行缓存。如图1所示,本发明实施例的备用虚拟机的数据写入方法的流程起始于步骤S102。如图1所示的步骤S102,本发明实施例判断预取缓冲区中缓存的数据是否是完整的文件。得到判断结果之后,执行步骤S104,根据判断结果确定备用虚拟机的同步完成状态。另外,得到判断结果之后,本发明实施例将预取缓冲区中的缓存数据写入相关地址。
[0027]依据本发明实施例能够判断备用虚拟机中用于接收及缓存同步数据的预取缓冲区中的缓存数据是否是完整的文件,并根据判断结果确定备用虚拟机的同步完成状态。因此,依据本发明实施例能够实现主虚拟机与备用虚拟机的数据同步过程,将主虚拟机的数据备份至任意备用虚拟机,避免数据丢失造成的不良后果。并且,依据本发明实施例能够在主虚拟机与备用虚拟机进行数据同步的过程中,根据需要随时终止数据同步过程而不影响主虚拟机与备用虚拟机各自的运行操作。本发明实施例提供的数据写入方法能够适用于存在备用虚拟机的多种环境,除常用于容错功能外,还可能应用于存在同步备份功能、数据复制功能等环境。
[0028]上文提及,本发明实施例中,能够判断预取缓冲区中的缓存数据是否是完整的文件。在整个数据同步过程中,循环判断预取缓冲区中的缓存数据是否完整这一操作会占用大量的运行空间,造成数据同步过程中大量资源被浪费。并且,由于大量资源被占用于循环判断操作,容易导致整个数据同步过程进度缓慢,需要较长的时间才能够完成同步过程。因此,本发明实施例中优选对主虚拟机与备用虚拟机的数据同步过程进行监测。当监测到主虚拟机与备用虚拟机的数据同步过程停止时,判断预取缓冲区中的缓存数据是否完整,合理节省运行空间。
[0029]对预取缓冲区中的缓存数据进行判断之后,若判断结果为否,则本发明实施例拒绝将预取缓冲区中的缓存数据写入相关地址,并且备用虚拟机当前同步失败。因此,能够确定备用虚拟机处于上一同步完成状态。本发明实施例中,备用虚拟机处于上一同步完成状态是指,备用虚拟机当前存储的数据与备用虚拟机上一次成功完成数据同步状态时所存储的数据相同,则当前同步过程失败之后,为区分当前同步过程与上一次同步过程,本发明实施例称备用虚拟机处于上一同步完成状态。
[0030]上文介绍了当判断预取缓冲区中的缓存数据是否是完整文件的判断结果为否时,本发明实施例对备用虚拟机状态的确定。当判断结果为是时,将在预取缓冲区缓存的数据写入备用虚拟机的相关地址。并且,确定备用虚拟机处于与上一同步完成状态不同的下一同步完成状态。本发明实施例中,与上一同步完成状态不同的下一同步完成状态是指,若备用虚拟机成功完成同步,则备用虚拟机内存储的数据更新至与当前主虚拟机数据一致的状态,为将备用虚拟机当前同步完成状态与上一同步完成状态区分,本发明实施例中称备用虚拟机处于与上一同步完成状态不同的下一同步完成状态。
[0031]由上文可知,本发明实施例中,根据对备用虚拟机的预取缓冲区内存储的数据是否是完整的文件能够确定备用虚拟机处于何种同步完成状态(如上文提及的备用虚拟机处于上一同步完成状态或者备用虚拟机处于与上一同步完成状态不同的下一同步完成状态),进而能够根据判断结果确定是否将缓存数据写入相关地址。本发明实施例中,缓存数据可以是内存脏页数据,可以是设备数据,还可以是其他任意主虚拟机在数据同步过程中同步至备用虚拟机的数据,本发明对此并不加以限定。
[0032]本发明实施例中,主虚拟机以及备用虚拟机可以采用模拟处理器的软件进行运行操作。优选地,本发明实施例采用自由软件QEMU进行运行操作。其中,QEMU在支持硬件虚拟化的架构上能够使用KVM (其中的KVM为
[0033]Kernel-based Virtual Machine的缩写)加速配合内核,不仅速度快,并且对比其他模拟处理器更为稳定。QEMU-KVM有一个非官方的虚拟机容错功能,通常称为“蹴鞠”。QEMU-KVM能够监控系统事件通道。当有事件发生时,QEMU-KVM暂停主虚拟机,对主虚拟机和备用虚拟机进行数据同步操作。数据同步操作结束后,由主虚拟机继续执行运行操作。QEMU能够默认支持多种架构(例如能够模拟多种个人电脑),并且是开源的、可移植的。另夕卜,QEMU仿真速度快,通过QEMU执行运行操作能够达到高效率、低出错率的有益效果。因此,本发明实施例中,主虚拟机以及备用虚拟机采用QEMU执行运行操作。本发明实施例中,主虚拟机与备用虚拟机能够通过常用控制协议进行连接。优选地,本发明实施例中主虚拟机与备用虚拟机通过TCP协议(传输控制协议)进行连接。
[0034]上文介绍了本发明实施例提供的备用虚拟机的数据写入方法,依据本发明实施例提供的备用虚拟机的数据写入方法能够应用于存在同步备份功能的环境中,更加合理有效地对主虚拟机与备用虚拟机之间进行数据同步。在主虚拟机与备用虚拟机进行数据同步的过程中,若需要对数据同步过程进行临时停止,采用本发明实施例提供的备用虚拟机的数据写入方法能够保证主虚拟机与备用虚拟机在数据同步过程临时终止的情况下继续正常的运行操作,避免在数据同步过程临时停止时主虚拟机与备用虚拟机无法正常运行造成的不良后果。因此,依据本发明实施例提供的备用虚拟机的数据写入方法能够应用于同步备份功能、数据复制功能等环境中,有效避免在数据同步过程中由于数据同步过程临时停止或者主虚拟机和/或备用虚拟机故障造成的主虚拟机和/或备用虚拟机无法正常运行的问题。本发明实施例除应用于前文介绍的存在同步备份功能、数据复制功能的环境外,上文提及,本发明实施例常用于容错功能。对主虚拟机与备用虚拟机进行数据同步时,若主虚拟机发生故障,依据本发明实施例能够根据确定的同步完成状态启动容错功能,避免因同步中断,同步数据不完整导致主虚拟机发生故障时,备用虚拟机未处于同步完成状态,无法启动容错功能进行容错的恶劣后果。
[0035]相关技术中提及,在主虚拟机与备用虚拟机进行数据同步过程时,若同步中断,无法确定备用虚拟机的同步完成状态,导致容错失败。为解决该技术问题,基于上文各优选实施例提供的备用虚拟机的数据写入方法,基于同一发明构思,本发明实施例提供了一种虚拟机容错方法。图2示出了根据本发明一个实施例的备用虚拟机容错方法的处理流程图。参见图2,该流程起始于步骤S202,判断预取缓冲区中的缓存数据是否是完整的文件,并触发步骤S204。在步骤S204中,根据步骤S202中的判断结果确定备用虚拟机的同步完成状态,并将预取缓冲区中的缓存数据写入相关地址。由上文可知,图2所示的步骤S202以及步骤S204为前文提及的备用虚拟机的数据写入方法的步骤。应用上文提及的备用虚拟机的数据写入方法确定备用虚拟机的同步完成状态之后,当主虚拟机发生故障时,执行步骤S206,根据与故障发生时间最相近一次确定的备用虚拟机处于的同步完成状态启动容错功倉泛。
[0036]依据本发明实施例能够在监测到主虚拟机与备用虚拟机的数据同步过程停止时,判断备用虚拟机中用于接收及缓存同步数据的预取缓冲区中的缓存数据是否是完整的文件,并根据判断结果确定备用虚拟机的同步完成状态。继而,在主虚拟机发生故障时,根据确定的同步完成状态启动容错功能。其中,备用虚拟机的预取缓冲区能够预取缓存数据同步过程中主虚拟机发送至备用虚拟机的同步数据。因此,若同步中断时,预取缓冲区中的同步数据不完整,本发明实施例能够确定备用虚拟机处于上一同步完成状态。若同步中断时,预取缓冲区中的同步数据为完整的文件,则能够将同步数据写入相关地址。在保证同步数据的实时性的前提下,本发明实施例能够有效避免因同步中断,同步数据不完整导致主虚拟机发生故障时,备用虚拟机未处于同步完成状态,无法启动容错功能进行容错的恶劣后果O
[0037]实施例一
[0038]为将上文介绍的备用虚拟机的数据写入方法以及虚拟机容错方法阐述得更加清晰明白,现采用一个优选实施例对备用虚拟机的数据写入方法、虚拟机容错方法以及设备进行介绍。
[0039]本优选实施例中,将主虚拟机中的文件分为10个数据片段,依次为命名为文件块
1、文件块2、文件块3、文件块4、文件块5、文件块6、文件块7、文件块8、文件块9、文件块
10。在数据同步过程中,将10个数据片段无先后顺序地同步至备用虚拟机中。
[0040]备用虚拟机在数据同步过程中,首先将接收到的数据片段缓存至预取缓冲区。其次,当监督到数据同步过程中止,判断预取缓冲区中的数据片段是否是完整的文件。若预取缓冲区中缓存的数据片段为文件块1、文件块2、文件块3、文件块5、文件块7、文件块8,不存在数据片段文件块4、文件块6、文件块9、文件块10,则预取缓冲区中的数据片段不是完整的文件。当判断处预取缓冲区中的文件非完整文件,则当前数据同步过程未成功,拒绝将预取缓冲区中数据写入相关地址,备用虚拟机处于上一同步完成状态。
[0041]若经过判断,预取缓冲区中的数据为完整的文件,则将预取缓冲区中的数据写入相关地址,并且能够确定备用虚拟机处于与上一同步完成状态不同的下一同步完成状态。
[0042]当主虚拟机发生故障时,根据上文确定的备用虚拟机的同步完成状态启动容错功能进行容错。
[0043]实施例二
[0044]为将本优选实施例阐述得更加清楚明白,现对下文用到的名词进行定义:
[0045]迁移:将一台位于物理计算机A上的虚拟机转移到物理计算机B上的操作。[0046]热迁移:在不暂停虚拟机的情况下,对虚拟机进行迁移。
[0047]主虚拟机:容错操作中,发送数据的虚拟机。
[0048]备用虚拟机:容错操作中,接收数据的虚拟机。
[0049]缓冲区:临时存放数据的内存区域。
[0050]图3示出了根据本发明一个实施例的包括主虚拟机和备用虚拟机的容错系统的技术架构图。需要说明的是,本优选实施例中的主虚拟机以及备用虚拟机均采用自由软件QEMU进行运行操作。并且,在QEMU中使用LINUX (—种操作系统)的KVM加速配合内核。在主虚拟机以及备用虚拟机中分别启动QEMU进程。启动之后,在主虚拟机控制台中输入容错命令:migrate-f tcp:<B的IP地址 >:〈端口〉。容错命令输入完毕之后,在主虚拟机与备用虚拟机之间建立TCP连接。本优选实施例中,主虚拟机与备用虚拟机通过存储区域网络(Storage Area Network,以下简称 SAN)或者网络文件系统(Network File System,以下简称NFS)进行连接。在主虚拟机与备用虚拟机之间建立连接之后,创建并执行同步线程migrate_thread函数,准备发送数据。
[0051]参见图3,步骤S302中,主虚拟机获取内存脏页和设备数据作为同步数据。获取到同步数据之后,执行步骤S304。在步骤S304,主虚拟机发送获取到的同步数据,为将本优选实施例阐述得清楚简洁,在主虚拟机中设置内存脏页和设备信息发送器,由该发送器将获取到的同步数据(包括内存脏页和/或设备信息)发送至备用虚拟机。备用虚拟机创建预取缓冲区perfetch_buffer,等待接收数据。
[0052]当备用虚拟机接收到同步数据之后,暂时不将同步数据写入相关地址,而是执行步骤S306,将同步数据写入预取缓冲区。同样的,为将本优选实施例阐述得清楚简洁,在备用虚拟机中设置内存脏页和设备信息发送器,由该发送器将获取到的同步数据(包括内存脏页和/或设备信息)发送至预取缓冲区。在数据同步过程中,主虚拟机循环调用qemu_savevm_state_beg1、qemu_savevm_state_iterate> qemu_savevm_state_complete 等函数将主虚拟机获取到的数据转化为数据流发送至备用虚拟机。当判断备用虚拟机中的预取缓冲区已经接收到同步数据的完整文件之后,执行步骤S308,备用虚拟机调用qemU_loadVm_state将同步数据写入相关地址,数据同步过程完成。另外,达到同步时间间隔之后,返回步骤S302,继续进行下一次数据同步过程。当主机发生故障时,调用vm_Start启动容错功能,由备用虚拟机代替主虚拟机进行运行操作。
[0053]图4示出了本优选实施例中,数据同步过程的同步时间以及时间间隔的关系。如图4所示,主虚拟机与备用虚拟机之间完成一次数据同步过程需要的时间称为同步时间。为保证数据同步过程的完整,避免数据同步过程中数据包的丢失的问题以及在合理时间间隔内保证数据同步过程的实时性,本优选实施例中,在达到时间间隔之后再次进行数据同步过程。其中,时间间隔的时间长度长于同步时间的时间长度。
[0054]当数据同步过程在执行图3所示的步骤S304时(即主虚拟机发出数据,备用虚拟机尚未接收数据时)中断,则备用虚拟机处于上一同步完成状态。当数据同步过程在执行步骤S306时(即主虚拟机发出数据,备用虚拟机接收数据,但接收数据判断为不完整文件时)中断,则拒绝将接收到的文件写入相关地址,备用虚拟机处于上一同步完成状态。当数据同步过程在执行步骤S308时(即主虚拟机发送数据结束,备用虚拟机接收数据为完整文件时)时中断,此时备用虚拟机的预取缓冲区中缓存有此次数据同步过程同步数据的完整文件,则将预取缓冲区中完整的文件写入相关地址,确定备用虚拟机当前数据同步过程完成,备用虚拟机处于与上一同步完成状态不同的下一同步完成状态。本优选实施例中,通过预取缓冲区对数据同步过程中接收到的数据进行预取缓存,保证备用虚拟机能够一直处于同步完成状态,进一步保证了任意时刻主虚拟机发生故障时,能够及时启动容错功能。
[0055]基于上文各优选实施例提供的备用虚拟机的数据写入方法,基于同一发明构思,本发明实施例提供了一种备用虚拟机的数据写入装置,用以实现上述备用虚拟机的数据写入方法。
[0056]图5示出了根据本发明一个实施例的一种备用虚拟机的数据写入装置的结构示意图。参见图5,本发明实施例的备用虚拟机的数据写入装置至少包括:判断器520、确定器530以及写入器540。需要说明的是,本发明实施例中,备用虚拟机的数据写入装置中设有预取缓冲区,用于接收来自主虚拟机的同步数据,并对接收到的数据进行缓存。
[0057]现介绍本发明实施例的备用虚拟机的数据写入装置的各器件或组成的功能以及各部分间的连接关系。如图5所示,备用虚拟机的数据写入装置中的判断器520判断备用虚拟机中的预取缓冲区中的缓存数据是否是完整的文件,并触发确定器530根据判断器520的判断结果确定备用虚拟机的同步完成状态,并由与另一与判断器520相耦合的写入器540将预取缓冲区中的缓存数据写入相关地址。
[0058]依据本发明实施例能够判断备用虚拟机中用于接收及缓存同步数据的预取缓冲区中的缓存数据是否是完整的文件,并根据判断结果确定备用虚拟机的同步完成状态。因此,依据本发明实施例能够实现主虚拟与备用虚拟机的数据同步过程,将主虚拟机的数据备份至任意备用虚拟机,避免数据丢失造成的不良后果。并且,依据本发明实施例能够在主虚拟机与备用虚拟机进行数据同步的过程中,根据需要随时终止数据同步过程而不影响主虚拟机与备用虚拟机各自的运行操作。本发明实施例提供的数据写入方法能够适用于存在备用虚拟机的多种环境,除常用于容错功能外,还可能应用于存在同步备份功能、数据复制功能等环境。
[0059]上文提及,本发明实施例中,由判断器520判断预取缓冲区中的缓存数据是否是完整的文件。在整个数据同步过程中,判断器520循环判断预取缓冲区中的缓存数据是否完整这一操作会占用大量的运行空间,造成数据同步过程中大量资源被浪费。并且,由于大量资源被占用于循环判断操作,容易导致整个数据同步过程进度缓慢。因此,本发明实施例中优选采用监测器510对主虚拟机与备用虚拟机的数据同步过程进行监测。当监测器510监测到主虚拟机与备用虚拟机的数据同步过程停止时,触发判断器520。由判断器520判断预取缓冲区中的缓存数据是否完整,合理节省运行空间。
[0060]对预取缓冲区中的缓存数据进行判断之后,若判断结果为否,则确定器530确定备用虚拟机处于上一同步完成状态,与判断器520相耦合的写入器540拒绝将预取缓冲区中缓存的数据写入相关地址。即,备用虚拟机当前同步失败,因此,能够确定备用虚拟机处于上一同步完成状态。本发明实施例中,备用虚拟机处于上一同步完成状态是指,备用虚拟机当前存储的数据域备用虚拟机上一次成功完成数据同步状态时所存储的数据相同,则当前同步过程失败之后,为区分当前同步过程与上一次同步过程,本发明实施例称备用虚拟机处于上一同步完成状态。
[0061]上文介绍了当判断器520判断预取缓冲区中的缓存数据是否是完整文件的判断结果为否时,本发明实施例对备用虚拟机状态的确定。当判断结果为是时,写入器540将在预取缓冲区缓存的数据写入备用虚拟机的相关地址。并且,由确定器530确定备用虚拟机处于与上一同步完成状态不同的下一同步完成状态。本发明实施例中,与上一同步完成状态不同的下一同步完成状态是指,若备用虚拟机成功完成当前同步,则备用虚拟机内存储的数据更新至与当前主虚拟机数据一致的状态,为将备用虚拟机当前同步完成状态与上一同步完成状态区分,本发明实施例中称备用虚拟机处于与上一同步完成状态不同的下一同步完成状态。
[0062]由上文可知,本发明实施例中,根据判断器520对预取缓冲区内存储的数据是否是完整的文件,确定器530能够确定备用虚拟机处于何种同步完成状态(如上文提及的备用虚拟机处于上一同步完成状态或者备用虚拟机处于与上一同步完成状态不同的下一同步完成状态),进而能够根据判断结果确定是否由写入器540将缓存数据写入相关地址。本发明实施例中,缓存数据可以是内存脏页数据,可以是设备数据,还可以是其他任意主虚拟机在数据同步过程中同步至备用虚拟机的数据,本发明对此并不加以限定。
[0063]本发明实施例中,主虚拟机以及备用虚拟机可以采用模拟处理器的软件进行运行操作。优选地,本发明实施例采用自由软件QEMU进行运行操作。其中,QEMU在支持硬件虚拟化的架构上能够使用KVM加速配合内核,不仅速度快,并且对比其他模拟处理器更为稳定。QEMU-KVM是一款主流虚拟化产品,它有一个非官方的虚拟机容错功能,称为“蹴鞠”。QEMU-KVM能够监控系统事件通道。当有事件发生时,QEMU-KVM暂停主虚拟机,对主虚拟机和备用虚拟机进行数据同步操作。数据同步操作结束后,由主虚拟机继续执行运行操作。QEMU能够默认支持多种架构(例如能够模拟多种个人电脑),并且是开源的、可移植的。另夕卜,QEMU仿真速度快,通过QEMU执行运行操作能够达到高效率、低出错率的有益效果。因此,本发明实施例中,主虚拟机以及备用虚拟机采用QEMU执行运行操作。本发明实施例中,主虚拟机与备用虚拟机能够通过常用控制协议进行连接。优选地,本发明实施例中主虚拟机与备用虚拟机通过TCP协议(传输控制协议)进行连接。
[0064]上文介绍了本发明实施例提供的备用虚拟机的数据写入装置,依据本发明实施例提供的备用虚拟机的数据写入装置能够应用于存在同步备份功能的环境中,更加合理有效地对主虚拟机与备用虚拟机之间进行数据同步。在主虚拟机与备用虚拟机进行数据同步的过程中,若需要对数据同步过程进行临时停止,采用本发明实施例提供的备用虚拟机的数据写入装置能够保证主虚拟机与备用虚拟机在数据同步过程临时终止的情况下继续正常的运行操作,避免在数据同步过程临时停止时主虚拟机与备用虚拟机无法正常运行造成的不良后果。因此,依据本发明实施例提供的备用虚拟机的数据写入装置能够应用于同步备份功能、数据复制功能等环境中,有效避免在数据同步过程中由于数据同步过程临时停止或者主虚拟机和/或备用虚拟机故障造成的主虚拟机和/或备用虚拟机无法正常运行的问题。本发明实施例除应用于前文介绍的存在同步备份功能、数据复制功能的环境外,上文提及,本发明实施例常用于容错功能。对主虚拟机与备用虚拟机进行数据同步时,若主虚拟机发生故障,依据本发明实施例能够根据确定的同步完成状态启动容错功能,避免因同步中断,同步数据不完整导致主虚拟机发生故障时,备用虚拟机未处于同步完成状态,无法启动容错功能进行容错的恶劣后果。
[0065]相关技术中提及,在主虚拟机与备用虚拟机进行数据同步过程时,若同步中断,无法确定备用虚拟机的同步完成状态,导致容错失败。为解决该技术问题,基于上文各优选实施例提供的备用虚拟机的数据写入方法及装置、虚拟机容错方法,基于同一发明构思,本发明实施例提供了一种备用虚拟机。图6示出了根据本发明一个实施例的备用虚拟机的结构示意图。参见图6,本发明实施例的备用虚拟机至少包括所示的备用虚拟机的数据写入装置(即图6中的备用虚拟机的数据写入装置610)以及启动器620。图6所示的备用虚拟机中,判断器520判断预取缓冲区中的缓存数据是否是完整的文件,并触发与其耦合的确定器530以及写入器540。其中,确定器530根据判断器520的判断结果确定备用虚拟机的同步完成状态,而写入器540根据判断器520的判断结果将预取缓冲区中的缓存数据写入相关地址。
[0066]综上,图6中的备用虚拟机的数据写入装置610(即上文介绍的如图5所示的备用虚拟机的数据写入装置)能够确定备用虚拟机的同步完成状态。因此,当主虚拟机发生故障时,备用虚拟机的数据写入装置610触发启动器620。由启动器620根据备用虚拟机的数据写入装置610确定的与故障发生时间最相近一次的备用虚拟机处于的同步完成状态启动容错功能,进行容错。
[0067]根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
[0068]依据本发明实施例能够在监测到主虚拟机与备用虚拟机的数据同步过程停止时,判断备用虚拟机中用于接收及缓存同步数据的预取缓冲区中的缓存数据是否是完整的文件,并根据判断结果确定备用虚拟机的同步完成状态。继而,在主虚拟机发生故障时,根据确定的同步完成状态启动容错功能。其中,备用虚拟机的预取缓冲区能够预取缓存数据同步过程中主虚拟机发送至备用虚拟机的同步数据。因此,若同步中断时,预取缓冲区中的同步数据不完整,本发明实施例能够确定备用虚拟机处于上一同步完成状态。若同步中断时,预取缓冲区中的同步数据为完整的文件,则能够将同步数据写入相关地址。在保证同步数据的实时性的前提下,本发明实施例能够有效避免因同步中断,同步数据不完整导致主虚拟机发生故障时,备用虚拟机未处于同步完成状态,无法启动容错功能进行容错的恶劣后果O
[0069]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0070]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0071 ] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0072]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0073]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP )来实现根据本发明实施例的虚拟机容错设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0074]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0075]至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
【权利要求】
1.一种虚拟机容错方法,在与主虚拟机相应的备用虚拟机中设有预取缓冲区,用于接收来自所述主虚拟机的同步数据并进行缓存,包括: 判断所述预取缓冲区中的缓存数据是否是完整的文件; 根据判断结果确定所述备用虚拟机的同步完成状态,并将所述预取缓冲区中的缓存数据与入相关地址; 当主虚拟机发生故障时,根据与故障发生时间最相近一次确定的所述备用虚拟机处于的冋步完成状态启动各错功能。
2.根据权利要求1所述的方法,其中,根据判断结果确定所述备用虚拟机的同步完成状态,并将所述预取缓冲区中的缓存数据写入相关地址,包括: 若否,拒绝将所述预取缓冲区中的缓存数据写入所述相关地址,确定所述备用虚拟机处于上一同步完成状态,其中,所述处于上一同步完成状态是指所述备用虚拟机中存储的数据与上一次同步完成状态时存储的数据相同; 若是,将所述缓存数据写入所述相关地址,确定所述备用虚拟机处于与所述上一同步完成状态不同的下一同步完成状态。
3.根据权利要求1或2所述的方法,其中,所述缓存数据包括下列至少任意之一: 内存脏页数据; 设备数据。
4.根据权利要求3所述的方法,其中,所述主虚拟机与所述备用虚拟机通过传输控制协议TCP进行连接。
5.根据权利要求1至4任一项所述的方法,其中,所述主虚拟机以及所述备用虚拟机均采用开源虚拟机软件QEMU-KVM执行运行操作。
6.根据权利要求1至5任一项所述的方法,其中,判断所述预取缓冲区中的缓存数据是否是完整的文件,包括: 监测到所述主虚拟机与所述备用虚拟机的数据同步过程停止时,判断所述预取缓冲区中的缓存数据是否是完整的文件。
7.一种备用虚拟机,其中,所述备用虚拟机中设有预取缓冲区,用于接收来自所述主虚拟机的同步数据并进行缓存,包括: 判断器,配置为判断预取缓冲区中的缓存数据是否是完整的文件; 确定器,配置为根据判断结果确定所述备用虚拟机的同步完成状态; 写入器,配置为根据判断结果将所述预取缓冲区中的缓存数据写入相关地址; 启动器,配置为当主虚拟机发生故障时,根据与故障发生时间最相近一次所述确定器确定的所述备用虚拟机处于的同步完成状态启动容错功能。
8.根据权利要求7所述的备用虚拟机,其中,还包括: 监测器,配置为监测所述主虚拟机与所述备用虚拟机的数据同步过程;以及 监测到所述主虚拟机与所述备用虚拟机的数据同步过程停止时,触发所述判断器判断所述预取缓冲区中的缓存数据是否完整。
【文档编号】G06F11/14GK103885857SQ201410085945
【公开日】2014年6月25日 申请日期:2014年3月10日 优先权日:2014年3月10日
【发明者】王峻青, 尹殷, 田媛媛 申请人:中标软件有限公司