一种虚拟机到虚拟机热迁移的方法及装置的制作方法

文档序号:6442432阅读:173来源:国知局
专利名称:一种虚拟机到虚拟机热迁移的方法及装置的制作方法
技术领域
本发明涉及网络通信领域中的虚拟机管理技木,尤其涉及一种虚拟机到虚拟机热迁移的方法及装置。
背景技术
虚拟机指通过在物理设备中安装虚拟机管理软件(Hypervisor),由Hypervisor模拟出ー个或多个具有完整硬件系统功能的、运行在ー个完全隔离环境中的完整系统。虚拟机的热迁移是虚拟机应用中的ー个重要技术,虚拟机的热迁移有物理设备到虚拟机的热迁移、虚拟机到虚拟机的热迁移和虚拟机到物理设备的热迁移;其中虚拟机到虚拟机的热 迁移为将源虚拟机的物理内存及运行状态完全拷贝到目的虚拟机。上述虚拟机到虚拟机的热迁移,将源虚拟机对应的物理内存包括无效内存,全部从源虚拟机拷贝到目的虚拟机。上述源虚拟机对应的物理内存,是由Hypervisor为虚拟机的虚拟内存分配一定的物理内存,比如,如图I所示,Hypervisor为虚拟机I、虚拟机2和虚拟机3的虚拟内存分别分配物理设备中一定的物理内存;所述无效内存,为分配给虚拟机但是没有使用的物理内存为无效内存,比如,如图2所示,虚拟机3中虚拟内存中运行了进程I、进程2和进程3,每个在虚拟内存中运行的进程占用部分实际的物理内存,其余分配给虚拟机3、却没有使用的物理内存为无效内存。但是,使用上述虚拟机到虚拟机的热迁移,由于在拷贝时会拷贝部分无效内存,如此,就浪费了热迁移过程所需的时间。可见,目前已有的虚拟机到虚拟机的热迁移方法,由于在进行热迁移时没有对物理内存是否无效进行区分,而是将物理内存进行全部拷贝,如此浪费了热迁移过程所需的时间,进而无法提高虚拟机热迁移的效率。

发明内容
有鉴于此,本发明的目的在于提供一种虚拟机到虚拟机热迁移的方法及装置,减少热迁移过程所需的时间,进而提高虚拟机到虚拟机热迁移的效率。为达到上述目的,本发明的技术方案是这样实现的本发明提供了一种虚拟机到虚拟机热迁移的装置,该装置包括内存统计模块和内存迁移模块;其中,内存统计模块,用于收到确定开始热迁移的通知后,根据进程控制表及内存映射表确定源虚拟机的初始拷贝内存,将初始拷贝内存的地址发送给内存迁移模块;内存迁移模块,用于根据内存统计模块发来的初始拷贝内存的地址,将对应的初始拷贝内存拷贝到目的虚拟机。上述方案中,所述内存统计模块,具体用于将进程控制表中记录的所有进程对应的虚拟地址作为源虚拟机的初始拷贝内存的虚拟地址,再根据内存映射表确定所述源虚拟机的初始拷贝内存的虚拟地址对应的物理内存地址,该物理内存地址作为源虚拟机的初始拷贝的内存的地址。
上述方案中,所述装置还包括内存变化监视模块,用于判断是否开始拷贝剩余的变化内存,如果不是,则将上一次拷贝过程中发生变化的内存地址发送给内存迁移模块,继续判断是否开始拷贝剩余的变化内存;否则,将源虚拟机剩余的变化内存的地址及运行状态发送给内存迁移模块;相应的,所述内存迁移模块,还用于接收内存变化监视模块发来的上一次拷贝过程中发生变化的内存地址,将对应的在上一次拷贝过程中发生变化的内存从源虚拟机拷贝到目的虚拟机,或者,接收内存变化监视模块发来的源虚拟机剩余的变化内存的地址及运行状态,将对应的源虚拟机剩余的变化内存及运行状态拷贝到目的虚拟机。上述方案中,所述内存变化监视模块,具体用于根据循环次数或拷贝时长判断是 否开始拷贝剩余的变化内存。上述方案中,所述装置还包括虚拟机管理模块,用于运行Hypervisor,并实时产生源虚拟机的进程控制表和内存映射表,以及为内存统计模块提供进程控制表和内存映射表,及通知内存统计模块确定开始热迁移;相应的,所述内存统计模块,具体用于收到虚拟机管理模块发来的确定开始热迁移的通知后,从虚拟机管理模块获取源虚拟机的进程控制表和内存映射表。本发明还提供了一种虚拟机到虚拟机热迁移的方法,该方法包括确定开始热迁移后,根据进程控制表及内存映射表确定源虚拟机的初始拷贝内存;将所述源虚拟机的初始拷贝内存拷贝到目的虚拟机。上述方案中,所述根据进程控制表及内存映射表确定源虚拟机的初始拷贝内存,包括将进程控制表中记录的所有进程对应的虚拟地址作为源虚拟机的初始拷贝内存的虚拟地址,再根据内存映射表确定所述源虚拟机的初始拷贝内存的虚拟地址对应的物理内存地址,该物理内存地址中的内存即源虚拟机的初始拷贝的内存。上述方案中,所述将所述源虚拟机的初始拷贝内存拷贝到目的虚拟机之后,该方法还包括判断是否开始拷贝剩余的变化内存,如果不是,则将上一次拷贝过程中发生变化的内存从源虚拟机拷贝到目的虚拟机,继续判断是否开始拷贝剩余的变化内存;否则,将源虚拟机剩余的变化内存及运行状态的拷贝到目的虚拟机。上述方案中,所述判断是否开始拷贝剩余的变化内存,为根据循环次数或拷贝时长进行判断。上述方案中,所述确定开始热迁移之前,该方法还包括运行Hypervisor,实时产生源虚拟机的进程控制表和内存映射表,并确定开始热迁移。本发明所提供的虚拟机到虚拟机热迁移的方法及装置,具有以下的优点和特点由于源虚拟机的初始拷贝内存是通过根据进程控制表及内存映射表确定得到的,因此,不需要拷贝无效内存,以此来减少虚拟机到虚拟机热迁移时初次拷贝的内存,如此,就可以减少热迁移过程所需的时间,进而提高虚拟机到虚拟机热迁移的效率。


图I为Hypervisor为虚拟机的虚拟内存分配对应的物理内存的示意图;图2为虚拟机中运行的进程占用的物理内存的示意图3为本发明虚拟机到虚拟机热迁移的装置的组成结构示意图;图4为进程控制表示意图;图5为内存映射表不意图;图6为本发明虚拟机到虚拟机热迁移的方法流程示意图。
具体实施例方式本发明的基本思想是确定开始热迁移后,根据进程控制表及内存映射表确定源 虚拟机的初始拷贝内存;将该初始拷贝内存从源虚拟机拷贝到目的虚拟机。下面结合附图及具体实施例对本发明再作进ー步详细的说明。本发明提供了一种虚拟机到虚拟机热迁移的装置,如图3所示,该装置包括内存统计模块11和内存迁移模块12 ;其中,内存统计模块11,用于收到确定开始热迁移的通知后,根据进程控制表及内存映射表确定源虚拟机的初始拷贝内存,将初始拷贝内存的地址发送给内存迁移模块12 ;内存迁移模块12,用于根据内存统计模块11发来的初始拷贝内存的地址,将对应的初始拷贝内存拷贝到目的虚拟机。所述装置,还包括虚拟机管理模块13,用于安装及运行Hypervisor, Hypervisor判断其管理的虚拟机是否有任意一个虚拟机需要热迁移,若有,则将该虚拟机作为源虚拟机,并确定目的虚拟机,通知内存统计模块11确定开始热迁移;相应的,所述内存统计模块11,还用于接收虚拟机管理模块13发来的确定开始热迁移的通知;其中,所述Hypervisor判断其管理的虚拟机是否有任意一个虚拟机需要热迁移,为已有技木,这里不做赘述;所述确定目的虚拟机,为已有技木,这里不做赘述。所述虚拟机管理模块13,还用于在Hypervisor运行过程中,实时产生源虚拟机的进程控制表和内存映射表,以及为内存统计模块11提供进程控制表和内存映射表;相应的,所述内存统计模块11,具体用于收到确定开始热迁移的通知后,从虚拟机管理模块13获取源虚拟机的进程控制表和内存映射表,将进程控制表中记录的所有进程对应的虚拟地址作为源虚拟机的初始拷贝内存的虚拟地址,再根据内存映射表确定上述源虚拟机的初始拷贝内存的虚拟地址所对应的物理内存地址,该查找到的物理内存地址确定为源虚拟机的初始拷贝内存的地址;其中,所述进程控制表,如图4所示,由虚拟机当前运行的进程的编号及运行的进程对应的虚拟地址组成,进程控制表为Hypervisor运行时产生的列表,产生方法为已有技木,这里不做赘述;所述内存映射表,如图5所示,由虚拟地址及各个虚拟地址对应的物理内存地址组成,内存映射表为Hypervisor运行时产生的列表,产生方法为已有技术,这里不做赘述。所述装置,还包括内存变化监视模块14,用于收到内存统计模块11发来的开始监视源虚拟机发生变化的内存的通知后,从虚拟机管理模块13中获取当前内存映射表作为热迁移前的内存映射表进行保存;相应的,所述内存统计模块11,具体用于将源虚拟机的初始拷贝内存的地址发送给内存迁移模块12时,通知内存变化监视模块14开始监视源虚拟机发生变化的内存;所述虚拟机管理模块13,还用于为内存变化监视模块14提供当前的内存映射表。
所述内存迁移模块12,还用于完成将初始拷贝内存拷贝到目的虚拟机时,通知内存变化监视模块14开始判断是否开始拷贝剩余的变化内存;相应的,所述内存变化监视模块14,还用于在收到内存迁移模块12发来的开始判断是否开始拷贝剩余的变化内存的通知后,判断是否开始拷贝剩余的变化内存,如果不开始拷贝剩余的变化内存,则统计源虚拟机在上一次拷贝过程中发生变化的内存地址并发送给内存迁移模块12,否则,统计源虚拟机剩余的变化内存的地址及源虚拟机运行状态并发送给内存迁移模块12。所述内存变化监视模块14,具体用于根据预置的判断方式进行判断是否开始拷贝剩余的变化内存;其中,所述判断方式,可以为根据循环次数来判断,也可以根据拷贝时长来判断;具体的当判断方式为根据循环次数判断时,所述内存变化监视模块14,收到开始监视源 虚拟机发生变化的内存通知时,设置循环次数为O ;每次收到开始判断是否拷贝变化的内存通知时,判断循环次数是否小于预置的循环门限,若小于,则判定为不开始拷贝剩余的变化内存、且将循环次数加一,否则判定为开始拷贝剩余的变化内存;所述循环门限,为根据实际情况预置,比如预置为30次;当判断方式为根据拷贝时长判断时,所述内存变化监视模块14,根据内存迁移模块12发来的开始拷贝的通知以及开始判断是否开始拷贝剩余的变化内存的通知,两个通知之间的时长确定为每次拷贝时长,判断每次拷贝时长是否小于时长门限,若不小于,则判定为不开始拷贝剩余的变化内存,否则,判定为开始拷贝剩余的变化内存;相应的,所述内存迁移模块12,还可以在每次将发生变化的内存从源虚拟机拷贝到目的虚拟机开始时,向内存变化监视模块14发送开始拷贝的通知;其中,所述时长门限,为根据实际情况预置的时长,比如,可以预置为5ms。所述内存变化监视模块14,具体用于统计源虚拟机在上一次拷贝过程中发生变化的内存时,提取虚拟机管理模块13中当前的内存映射表、与自身保存的热迁移前的内存映射表进行比较,统计发生变化的内存的地址,将发生变化的内存的地址发送给内存迁移模块12,并将提取的当前内存映射表替换原热迁移前的内存映射表进行保存;相应的,所述内存迁移模块12,具体用于接收内存变化监视模块14发来的发生变化的内存的地址,将对应的发生变化的内存从源虚拟机拷贝到目的虚拟机,再次通知内存变化监视模块14开始判断是否拷贝变化的内存。所述内存变化监视模块14,具体用于统计源虚拟机剩余的变化内存的地址及源虚拟机运行状态时,将源虚拟机当前的内存映射表与保存的热迁移前的内存映射表进行比较,统计出发生变化的物理内存地址作为剩余的变化内存的地址,以及从虚拟机管理模块13获取源虚拟机运行状态信息,将剩余的变化内存的地址及源虚拟机运行状态发送给内存迁移模块12 ;相应的,所述虚拟机管理模块13,还用于利用Hypervisor记录各个管理的虚拟机的运行状态,以及为内存变化监视模块14提供源虚拟机运行状态信息;所述内存迁移模块12,具体用于接收内存变化监视模块14发来的剩余的变化内存的地址及源虚拟机运行状态,将对应的剩余的变化内存及源虚拟机运行状态发送给目的虚拟机;所述源虚拟机运行状态,为已有的热迁移技术中规定的热迁移内容,其获取方法为已有技术,这里不做赘述。上述虚拟机到虚拟机热迁移的装置,可以作为基于对Hypervisor作出修改后得到的软件,安装在任何能够运行Hypervisor的物理设备中,比如,数据中心的服务器。如图6所示,本发明提供了一种虚拟机到虚拟机热迁移的方法,包括步骤201 :根据进程控制表及内存映射表确定源虚拟机的初始拷贝内存。这里,所述初始拷贝内存为将进程控制表中记录的所有进程对应的虚拟地址作为源虚拟机的初始拷贝内存的虚拟地址,再根据内存映射表确定上述源虚拟机的初始拷贝内存的虚拟地址所对应的物理内存地址,该物理内存地址中的内存即源虚拟机的初始拷贝内存;步骤201之前,由Hypervisor判断管理的虚拟机是否有任意一个虚拟机需要热迁移,若有,则将该虚拟机作为源虚拟机,并确定目的虚拟机,然后确定开始热迁移,执行步骤 201。步骤202 :将初始拷贝内存从源虚拟机拷贝到目的虚拟机。本步骤具体为将当前内存映射表作为热迁移前的内存映射表进行保存;将步骤201中确定的初始拷贝内存从源虚拟机拷贝到目的虚拟机;所述拷贝,为已有技木,这里不做赘述。步骤203 :判断是否开始拷贝剩余的变化内存,如果不是,则执行步骤204 ;如果是,则执行步骤206。这里,所述判断是否开始拷贝剰余的变化内存,根据预置的判断方式进行判断,所述判断方式可以为根据循环次数来判断,也可以根据拷贝时长来判断;具体的当判断方式为根据循环次数判断吋,步骤202完成吋,设置循环次数为0,然后本步骤判断循环次数是否小于预置的循环门限,若小于,则判定为不开始拷贝剰余的变化内存、将循环次数加一,否则判定为开始拷贝剩余的变化内存;当判断方式为根据拷贝时长判断吋,记录每次拷贝所耗时长,本步骤判断每次记录的拷贝时长是否小于时长门限,若不小于,则判定为不开始拷贝剰余的变化内存,否则,判定为开始拷贝剰余的变化内存。步骤204 :统计源虚拟机在上一次拷贝过程中发生变化的内存。这里,所述统计源虚拟机在上一次拷贝过程中发生变化的内存,为将当前的内存映射表与保存的热迁移前的内存映射表进行比较,统计发生变化的物理内存地址,该发生变化的物理内存地址所对应的内存为在上一次拷贝过程中发生变化的内存。步骤205 :将上一次拷贝过程中发生变化的内存从源虚拟机拷贝到目的虚拟机,执行步骤203。具体的将当前内存映射表作为热迁移前的内存映射表进行保存;将步骤204中确定的源虚拟机在上一次拷贝过程中发生变化的内存从源虚拟机拷贝到目的虚拟机,然后返回步骤203。步骤206 :将源虚拟机剩余的变化内存及运行状态的拷贝到目的虚拟机。这里,所述剩余的变化内存为将当前的内存映射表与保存的热迁移前的内存映射表进行比较,统计出发生变化的物理内存地址,该发生变化的物理内存地址所对应的内存,即为剰余的发生变化的内存;所述源虚拟机运行状态,为已有的热迁移技术中规定的需要热迁移内容,其获取方法为已有技木,这里不做赘述。
上述步骤206完成之后,源虚拟机及目的虚拟机按照已有虚拟机到虚拟机的热迁移技术进行后续操作,这里不做赘述。以上所述,仅为本发明的较佳实施例而已,并非 用于限定本发明的保护范围。
权利要求
1.一种虚拟机到虚拟机热迁移的装置,其特征在于,该装置包括内存统计模块和内存迁移模块;其中, 内存统计模块,用于收到确定开始热迁移的通知后,根据进程控制表及内存映射表确定源虚拟机的初始拷贝内存,将初始拷贝内存的地址发送给内存迁移模块; 内存迁移模块,用于根据内存统计模块发来的初始拷贝内存的地址,将对应的初始拷贝内存拷贝到目的虚拟机。
2.根据权利要求I所述的装置,其特征在干, 所述内存统计模块,具体用于将进程控制表中记录的所有进程对应的虚拟地址作为源虚拟机的初始拷贝内存的虚拟地址,再根据内存映射表确定所述源虚拟机的初始拷贝内存的虚拟地址对应的物理内存地址,该物理内存地址作为源虚拟机的初始拷贝的内存的地址。
3.根据权利要求I所述的装置,其特征在于,所述装置还包括内存变化监视模块,用于判断是否开始拷贝剰余的变化内存,如果不是,则将上一次拷贝过程中发生变化的内存地址发送给内存迁移模块,继续判断是否开始拷贝剰余的变化内存;否则,将源虚拟机剰余的变化内存的地址及运行状态发送给内存迁移模块; 相应的,所述内存迁移模块,还用于接收内存变化监视模块发来的上一次拷贝过程中发生变化的内存地址,将对应的在上一次拷贝过程中发生变化的内存从源虚拟机拷贝到目的虚拟机,或者,接收内存变化监视模块发来的源虚拟机剩余的变化内存的地址及运行状态,将对应的源虚拟机剰余的变化内存及运行状态拷贝到目的虚拟机。
4.根据权利要求3所述的装置,其特征在于,所述内存变化监视模块,具体用于根据循环次数或拷贝时长判断是否开始拷贝剰余的变化内存。
5.根据权利要求I至4任一所述的装置,其特征在于,所述装置还包括虚拟机管理模块,用于运行虚拟机管理软件Hypervisor,并实时产生源虚拟机的进程控制表和内存映射表,以及为内存统计模块提供进程控制表和内存映射表,及通知内存统计模块确定开始热迁移; 相应的,所述内存统计模块,具体用于收到虚拟机管理模块发来的确定开始热迁移的通知后,从虚拟机管理模块获取源虚拟机的进程控制表和内存映射表。
6.—种虚拟机到虚拟机热迁移的方法,其特征在于,该方法包括 确定开始热迁移后,根据进程控制表及内存映射表确定源虚拟机的初始拷贝内存; 将所述源虚拟机的初始拷贝内存拷贝到目的虚拟机。
7.根据权利要求6所述的方法,其特征在于,所述根据进程控制表及内存映射表确定源虚拟机的初始拷贝内存,包括将进程控制表中记录的所有进程对应的虚拟地址作为源虚拟机的初始拷贝内存的虚拟地址,再根据内存映射表确定所述源虚拟机的初始拷贝内存的虚拟地址对应的物理内存地址,该物理内存地址中的内存即源虚拟机的初始拷贝的内存。
8.根据权利要求6所述的方法,其特征在于,所述将所述源虚拟机的初始拷贝内存拷贝到目的虚拟机之后,该方法还包括判断是否开始拷贝剰余的变化内存,如果不是,则将上一次拷贝过程中发生变化的内存从源虚拟机拷贝到目的虚拟机,继续判断是否开始拷贝剰余的变化内存;否则,将源虚拟机剰余的变化内存及运行状态的拷贝到目的虚拟机。
9.根据权利要求8所述的方法,其特征在于,所述判断是否开始拷贝剰余的变化内存,为根据循环次数或拷贝时长进行判断。
10.根据权利要求6所述的方法,其特征在干,所述确定开始热迁移之前,该方法还包括运行Hypervisor,实时产生源虚拟机的进程控制表和内存映射表,并确定开始热迁移。
全文摘要
本发明公开了一种虚拟机到虚拟机热迁移的装置,包括内存统计模块,用于收到确定开始热迁移的通知后,根据进程控制表及内存映射表确定源虚拟机的初始拷贝内存,将初始拷贝内存的地址发送给内存迁移模块;内存迁移模块,用于根据内存统计模块发来的初始拷贝内存的地址,将对应的初始拷贝内存拷贝到目的虚拟机。本发明还同时公开了一种虚拟机到虚拟机热迁移的方法,采用本发明能减少热迁移过程所需的时间,进而提高虚拟机到虚拟机热迁移的效率。
文档编号G06F9/46GK102681913SQ20111043218
公开日2012年9月19日 申请日期2011年12月21日 优先权日2011年12月21日
发明者韩辉 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1