一种虚拟机在线迁移方法及装置与流程

文档序号:13744467阅读:147来源:国知局
本申请涉及虚拟化
技术领域
,尤其涉及一种虚拟机在线迁移方法及装置。
背景技术
:在线迁移又称为实时迁移,是在保证虚拟机服务正常运行的情况下,将虚拟机在不同的物理主机之间迁移。目前虚拟机在线迁移主要通过多轮内存迭代实现,虚拟机的迁移时间由N次迭代时间和最后一次脏页(被虚拟机修改过的内存页)拷贝时间决定,虚拟机的停机时间也取决于最后一次脏页拷贝时间。但是,在迭代过程中,如果虚拟机更新内存的速率较高,会出现同一内存页被多次修改、多次拷贝的情况,增加拷贝的数据量,延长了虚拟机的迁移时间。同时,也会导致最后一次拷贝的脏页数据量增加,延长虚拟机的停机时间,影响虚拟机的服务性能。技术实现要素:有鉴于此,本申请提供一种虚拟机在线迁移方法及装置。具体地,本申请是通过如下技术方案实现的:本申请提供一种虚拟机在线迁移方法,应用于源宿主机上,该方法包括:向目的宿主机发送当前源虚拟机的全部内存数据;将发送内存数据期间产生的脏页数据同步拷贝到预先挂载的共享存储中;在完成所述内存数据发送后,停止所述源虚拟机运行;在所述源虚拟机停机后,根据当前存在的脏页生成脏页记录表;将所述脏页记录表发送给所述目的宿主机,以使所述目的宿主机根据所述脏页记录表从所述共享存储读取脏页数据更新所述内存数据。本申请还提供一种虚拟机在线迁移方法,应用于目的宿主机上,该方法包括:接收源宿主机发送的当前源虚拟机的全部内存数据;接收所述源宿主机在所述源虚拟机停机后发送的所述源虚拟机的脏页记录表,所述源宿主机在同步完成所述内存数据发送以及向共享存储拷贝脏页数据后停机;启动目的虚拟机;当所述目的虚拟机访问内存时,根据所述脏页记录表从所述共享存储中读取所述脏页数据,以更新所述内存数据。本申请还提供一种虚拟机在线迁移装置,应用于源宿主机上,该装置包括:发送单元,用于向目的宿主机发送当前源虚拟机的全部内存数据;拷贝单元,用于将发送内存数据期间产生的脏页数据同步拷贝到预先挂载的共享存储中;停机单元,用于在完成所述内存数据发送后,停止所述源虚拟机运行;生成单元,用于在所述源虚拟机停机后,根据当前存在的脏页生成脏页记录表;更新单元,用于将所述脏页记录表发送给所述目的宿主机,以使所述目的宿主机根据所述脏页记录表从所述共享存储读取脏页数据更新所述内存数据。本申请还提供一种虚拟机在线迁移装置,应用于目的宿主机上,该装置包括:接收单元,用于接收源宿主机发送的当前源虚拟机的全部内存数据;接收所述源宿主机在所述源虚拟机停机后发送的所述源虚拟机的脏页记录表,所述源宿主机在同步完成所述内存数据发送以及向共享存储拷贝脏页数据后停机;启动单元,用于启动目的虚拟机;读取单元,用于当所述目的虚拟机访问内存时,根据所述脏页记录表从所述共享存储中读取所述脏页数据,以更新所述内存数据。由以上描述可以看出,本申请中源宿主机在向目的宿主机拷贝虚拟机内存数据的同时,将脏页数据拷贝到共享存储上,并在源虚拟机停机后,将脏页记录表发送给目的宿主机,目的宿主机根据脏页记录表从共享存储读取脏页数据,完成虚拟机迁移。本申请可有效缩短虚拟机的停机时间,提高虚拟机的迁移效率,满足可用性要求更高的场景。附图说明图1是本申请一示例性实施例示出的一种虚拟机在线迁移方法流程图;图2是本申请另一示例性实施例示出的一种虚拟机在线迁移方法流程图;图3是本申请一示例性实施例示出的一种虚拟机在线迁移装置所在设备的基础硬件结构示意图;图4是本申请一示例性实施例示出的一种虚拟机在线迁移装置的结构示意图;图5是本申请另一示例性实施例示出的一种虚拟机在线迁移装置的结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。在线迁移又称为实时迁移,是在保证虚拟机服务正常运行的情况下,将虚拟机在不同的物理主机之间迁移。目前虚拟机在线迁移过程主要通过多轮内存迭代实现,具体为,第一轮将源宿主机上被迁移虚拟机的全部内存页数据拷贝到目的宿主机上,后续每一轮拷贝上一轮被虚拟机修改过的脏页数据,经过若干次迭代后,如果剩余脏页数据小于预设的剩余最小值或迭代次数大于预设的迭代最大值,则终止迭代,被迁移虚拟机停机,内存不会再被修改,将剩余的脏页数据一次性拷贝到目的宿主机,目的宿主机恢复虚拟机运行。从上述描述可以看出,虚拟机的迁移时间等于N次迭代时间加上最后一次脏页拷贝时间;虚拟机的停机时间等于最后一次脏页拷贝时间,上述时间越短越有利于虚拟机性能的提升。但是,由于虚拟机的迁移需要经过N次迭代,如果在迭代过程中虚拟机更新内存的速率较高,则会出现内存页被多次修改、多次拷贝的情况,增加拷贝的数据量,延长了虚拟机的迁移时间。同时,也可能导致最后剩余的脏页数据量增加,而延长虚拟机的停机时间,影响虚拟机的服务性能。针对上述问题,本申请实施例提出一种虚拟机在线迁移方法,该方法中源宿主机在向目的宿主机拷贝虚拟机内存数据的同时,将内存数据拷贝期间产生的脏页数据拷贝到共享存储上,并在源虚拟机停机后,生成脏页记录表,并发送给目的宿主机,目的宿主机根据脏页记录表从共享存储读取脏页数据,完成虚拟机内存数据的更新,进而完成虚拟机迁移。参见图1,为本申请虚拟机在线迁移方法的一个实施例流程图,该实施例从源宿主机侧对虚拟机迁移过程进行描述。步骤101,向目的宿主机发送当前源虚拟机的全部内存数据。当虚拟机迁移时,首先由源宿主机(虚拟机未迁移时所在主机)发送迁移请求,目的宿主机(虚拟机准备迁移到的主机)接收迁移请求,并向源宿主机发送迁移响应,源宿主机接收迁移响应后开始迁移虚拟机的内存数据。以下将源宿主机上待迁移的虚拟机称为源虚拟机,源虚拟机迁移到目的宿主机上后称为目的虚拟机。与现有技术的第一轮内存数据拷贝相同,本申请实施例的第一步也是将当前源虚拟机的全部内存数据拷贝到目的宿主机,即源宿主机向目的宿主机发送当前源虚拟机的全部内存数据,在此不再赘述。步骤102,将发送内存数据期间产生的脏页数据同步拷贝到预先挂载的共享存储中。由于源虚拟机还在正常运行,因此,会不断产生脏页(被修改的内存页)。本申请实施例在通过步骤101向目的宿主机发送内存数据的同时,将内存中不断产生的脏页数据向共享存储中拷贝,以达到内存数据发送与脏页数据拷贝同步完成,节省虚拟机的迁移时间。其中,共享存储由网络管理员在系统运行之前创建,分别挂载在源宿主机和目的宿主机上,以便源宿主机和目的宿主机访问,即读、写共享存储中的数据。通过本步骤处理,共享存储中保存了所有脏页数据,即目的宿主机需要更新的内存数据。步骤103,在完成所述内存数据发送后,停止所述源虚拟机运行。步骤104,在所述源虚拟机停机后,根据当前存在的脏页生成脏页记录表。源虚拟机停机后,内存状态将不再变化,此时,记录当前存在的脏页,生成脏页记录表。具体为,在源虚拟机对应内存中,查询存在脏页标记的内存页,将存在脏页标记的内存页的页号添加到脏页记录表中。参见表1,为脏页记录表示例。表项序号页号110021303230表1步骤105,将所述脏页记录表发送给所述目的宿主机,以使所述目的宿主机根据所述脏页记录表从所述共享存储读取脏页数据更新所述内存数据。目的宿主机接收源宿主机发送的脏页记录表后,即可启动目的虚拟机,并在目的虚拟机访问内存时,根据脏页记录表中的页号从共享存储中读取对应脏页数据,完成内存数据更新。同时,在目的虚拟机启动后,向源宿主机发送迁移完成命令。源宿主机接收目的宿主机发送的迁移完成命令后,关闭源虚拟机,完成虚拟机迁移。参见图2,为本申请虚拟机在线迁移方法的另一个实施例流程图,该实施例从目的宿主机侧对虚拟机在线迁移过程进行描述。步骤201,接收源宿主机发送的当前源虚拟机的全部内存数据。参见前述步骤101的描述,在此不再赘述。步骤202,接收所述源宿主机在所述源虚拟机停机后发送的所述源虚拟机的脏页记录表,所述源宿主机在同步完成所述内存数据发送以及向共享存储拷贝脏页数据后停机。参见前述步骤102~步骤105的描述,在此不再赘述。步骤203,启动目的虚拟机。步骤204,当所述目的虚拟机访问内存时,根据所述脏页记录表从所述共享存储中读取所述脏页数据,更新所述内存数据。具体为,获取脏页记录表中的页号,该页号为源虚拟机停机后存在脏页标记的内存页的页号,根据获取的页号从共享存储中读取对应脏页数据。如前所述,源宿主机和目的宿主机均可访问共享存储,源宿主机将脏页数据写入共享存储,目的宿主机将脏页数据从共享存储中读出,直到共享存储中没有脏页数据,即完成了内存数据更新。此外,在目的虚拟机启动后,会向源宿主机发送迁移完成命令,以使源宿主机关闭源虚拟机,完成整个虚拟机迁移过程。从上述描述可以得出,本申请的虚拟机迁移时间等于第一次的全部内存数据拷贝时间加上源宿主机向目的宿主机发送脏页记录表的时间。其中,由于源宿主机向共享存储拷贝脏页数据的过程与源宿主机向目的宿主机拷贝全部内存数据的过程同步进行,因此,源宿主机向共享存储拷贝脏页数据的时间不计入虚拟机的迁移时间。此外,目的宿主机从共享存储读取脏页数据时,目的宿主机已启动,只是处于有脏页状态,因此,目的宿主机读取脏页数据的时间也可以不计入虚拟机的迁移时间。可见,本申请中的虚拟机迁移时间远小于现有技术中的虚拟机迁移时间。此外,本申请的虚拟机停机时间等于源宿主机向目的宿主机发送脏页记录表的时间。该脏页记录表的数据量远小于脏页数据本身的数据量,因此,可有效缩短虚拟机的停机时间,提高虚拟机的迁移效率,满足可用性要求更高的场景。与前述虚拟机在线迁移方法的实施例相对应,本申请还提供了虚拟机在线迁移装置的实施例。本申请虚拟机在线迁移装置的实施例可以应用在源宿主机或目的宿主机上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器运行存储器中对应的计算机程序指令形成的。从硬件层面而言,如图3所示,为本申请虚拟机在线迁移装置所在设备的一种硬件结构图,除了图3所示的处理器、网络接口、以及存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。请参考图4,为本申请一个实施例中的虚拟机在线迁移装置的结构示意图。该虚拟机在线迁移装置包括发送单元401、拷贝单元402、停机单元403、生成单元404以及更新单元405,其中:发送单元401,用于向目的宿主机发送当前源虚拟机的全部内存数据;拷贝单元402,用于将发送内存数据期间产生的脏页数据同步拷贝到预先挂载的共享存储中;停机单元403,用于在完成所述内存数据发送后,停止所述源虚拟机运行;生成单元404,用于在所述源虚拟机停机后,根据当前存在的脏页生成脏页记录表;更新单元405,用于将所述脏页记录表发送给所述目的宿主机,以使所述目的宿主机根据所述脏页记录表从所述共享存储读取脏页数据更新所述内存数据。进一步地,所述生成单元404,具体用于查询存在脏页标记的内存页;将所述存在脏页标记的内存页的页号添加到所述脏页记录表中,以使所述目的宿主机根据所述脏页记录表中的页号从所述共享存储中读取对应脏页数据。进一步地,所述装置还包括:关闭单元,用于接收所述目的宿主机发送的迁移完成命令;关闭所述源虚拟机。请参考图5,为本申请另一个实施例中的虚拟机在线迁移装置的结构示意图。该虚拟机在线迁移装置包括接收单元501、启动单元502以及读取单元503,其中:接收单元501,用于接收源宿主机发送的当前源虚拟机的全部内存数据;接收所述源宿主机在所述源虚拟机停机后发送的所述源虚拟机的脏页记录表,所述源宿主机在同步完成所述内存数据发送以及向共享存储拷贝脏页数据后停机;启动单元502,用于启动目的虚拟机;读取单元503,用于当所述目的虚拟机访问内存时,根据所述脏页记录表从所述共享存储中读取所述脏页数据,以更新所述内存数据。进一步地,所述读取单元503,具体用于获取所述脏页记录表中的页号,所述页号为所述源虚拟机停机后存在脏页标记的内存页的页号;根据获取的页号从所述共享存储中读取对应脏页数据。进一步地,所述装置还包括:发送单元,用于在所述启动单元502启动目的虚拟机之后,向所述源宿主机发送迁移完成命令,以使所述源宿主机关闭所述源虚拟机。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1