CN105893114A - 一种虚拟机迁移的方法、目的宿主机和源宿主机 - Google Patents

一种虚拟机迁移的方法、目的宿主机和源宿主机 Download PDF

Info

Publication number
CN105893114A
CN105893114A CN201610206072.0A CN201610206072A CN105893114A CN 105893114 A CN105893114 A CN 105893114A CN 201610206072 A CN201610206072 A CN 201610206072A CN 105893114 A CN105893114 A CN 105893114A
Authority
CN
China
Prior art keywords
page
main frame
virtual machine
internal storage
storage data
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
Application number
CN201610206072.0A
Other languages
English (en)
Inventor
侯德龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN201610206072.0A priority Critical patent/CN105893114A/zh
Publication of CN105893114A publication Critical patent/CN105893114A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种虚拟机迁移方法、目的宿主机和源宿主机,虚拟机迁移方法,应用于目的宿主机,包括:当虚拟机运行在源宿主机时,接收并存储源宿主机发送的虚拟机的第一内存数据;停止源宿主机中的虚拟机运行,将源宿主机中的第二内存数据与第一内存数据进行对比,标记第一内存数据中的脏页面;在目的宿主机上启动虚拟机,当虚拟机访问脏页面时,发送更新脏页面请求给源宿主机,并接收源宿主机返回的与脏页面对应的目标页面;将目标页面替换脏页面。本发明提供的实施例能够有效地降低虚拟机迁移过程的同步数据量。

Description

一种虚拟机迁移的方法、目的宿主机和源宿主机
技术领域
本发明涉及计算机技术领域,特别涉及一种虚拟机迁移方法、目的宿主机和源宿主机。
背景技术
虚拟机迁移是指将虚拟机内存状态从一个主机或存储位置迁移到另一个主机或存储位置,是云计算应用应具备的功能之一。
目前,虚拟机内存迁移的主要方式是,源宿主机上运行虚拟机,并将虚拟机当前的内存状态完整地复制到目的宿主机,由于源宿主机上一直运行虚拟机,那么对于更新的数据还需要通过内存轮迭代的方式重新进行更新,如:在第一次迁移过程中,虚拟机更新了内存状态1和内存状态2,那么,在第一次迁移完成之后,还需要进行第二次迁移以更新内存状态1和内存状态2,而在第二次迁移过程中,虚拟机又更新了内存状态3和内存状态4,则还需要进行第三次迁移更新内存状态3和内存状态4,通过如此迭代的方式直至再无更新,现有的这种方式虽然能够保持虚拟机正常运行,但大幅度的增加了虚拟机迁移过程的同步数据量。
发明内容
本发明实施例提供了一种虚拟机迁移方法、目的宿主机和源宿主机,能够有效地降低虚拟机迁移过程的同步数据量。
一种虚拟机迁移方法,应用于目的宿主机,包括:
当虚拟机运行在源宿主机时,接收并存储所述源宿主机发送的所述虚拟机的第一内存数据;
停止所述源宿主机中的虚拟机运行,将所述源宿主机中的第二内存数据与所述第一内存数据进行对比,标记所述第一内存数据中的脏页面;
在所述目的宿主机上启动所述虚拟机,当所述虚拟机访问所述脏页面时,发送更新脏页面请求给所述源宿主机,并接收所述源宿主机返回的与所述脏页面对应的目标页面;
将所述目标页面替换所述脏页面。
优选地,上述方法,进一步包括:设置位图文件;
所述标记所述第一内存数据中的脏页面,包括:确定所述第一内存数据中未同步页面,在所述位图文件中对所述未同步页面标注为缺页状态;
在所述目的宿主机上启动所述虚拟机之后,在所述发送更新所述脏页面请求给所述源宿主机之前,进一步包括:判断所述虚拟机访问的当前页面在所述位图文件中是否标注为缺页状态,如果是,则执行所述发送更新所述脏页面请求给所述源宿主机。
优选地,在所述确定所述第一内存数据中未同步页面之后,进一步包括:确定所述差异页面对应的所述第二内存数据中目标页面的位置,并将该目标页面的位置存储到所述位图文件;
所述接收所述源宿主机返回的与所述脏页面对应的目标页面,包括:根据所述位图文件中目标页面的位置,触发所述源宿主机定位并复制所述目标页面,接收所述源宿主机发送的所述复制的所述目标页面。
优选地,在所述虚拟机访问的当前页面在所述位图文件中标注为缺页状态之后,在所述发送更新所述脏页面请求给所述源宿主机之前,进一步包括:判断所述当前页面是否为空闲页面,如果是,则直接为所述当前页面分配一个零页面,并恢复所述虚拟机运行;否则,执行所述发送更新所述脏页面请求给所述源宿主机。
一种虚拟机迁移方法,应用于源宿主机,包括:
当虚拟机运行在所述源宿主机时,将所述虚拟机的第一内存数据发送给目的宿主机,更新所述第一内存数据形成第二内存数据;
停止所述源宿主机中的虚拟机运行,并在所述目的宿主机上启动所述虚拟机;
当所述虚拟机访问脏页面时,接收所述目的宿主机发送的更新脏页面请求,并根据所述更新脏页面请求,发送所述脏页面对应的目标页面给所述目的宿主机。
优选地,所述发送所述脏页面对应的目标页面给所述目的宿主机,包括:
确定目标页面的位置,定位并复制所述目标页面,并将所述目标页面发送给所述目的宿主机。
一种目的宿主机,包括:第一迁移控制器、存储单元、标记单元、缺页请求控制器,其中,
所述第一迁移控制器,用于当虚拟机运行在外设的源宿主机时,接收所述外设的源宿主机发送的所述虚拟机的第一内存数据,并将所述第一内存数据发送给所述存储单元,并接收外设的源宿主机返回的与脏页面对应的目标页面,将目标页面替换存储单元存储的脏页面
所述存储单元,用于接收并存储所述第一迁移控制器所述第一内存数据;
所述标记单元,用于停止所述外设的源宿主机中的虚拟机运行,将所述外设的源宿主机中的第二内存数据与所述存储单元存储的第一内存数据进行对比,标记所述第一内存数据中的脏页面;
所述缺页请求控制器,用于确定所述标记单元标记的脏页面,启动所述虚拟机,当所述虚拟机访问所述标记单元标记的脏页面时,发送更新脏页面请求给所述外设的源宿主机。
优选地,上述目的宿主机,进一步包括:判断单元,其中,
所述标记单元,用于设置位图文件,确定所述第一内存数据中未同步页面,在所述位图文件中对所述未同步页面标注为缺页状态,并将所述位图文件提供给所述判断单元;
所述判断单元,用于判断所述虚拟机访问的当前页面在所述标记单元提供的位图文件中是否标注为缺页状态,如果是,则触发所述缺页请求控制器;
所述缺页请求控制器,用于在接收到所述判断单元的触发时,执行所述发送更新所述脏页面请求给所述外设的源宿主机。
优选地,
所述标记单元,用于确定所述差异页面对应的所述第二内存数据中目标页面的位置,并将该目标页面的位置存储到所述位图文件,并提供所述位图文件;
所述缺页请求控制器,用于访问所述标记单元提供的所述位图文件,根据所述位图文件中目标页面的位置,触发所述外设的源宿主机定位并复制所述目标页面,接收所述外设的源宿主机发送的所述复制的所述目标页面。
优选地,
所述判断单元,进一步用于判断所述标注为缺页状态的当前页面是否为空闲页面,如果是,则直接为所述当前页面分配一个零页面,并恢复所述虚拟机运行;否则,触发所述缺页请求控制器。
一种源宿主机,包括:第二迁移控制器和缺页响应控制器,其中,
所述第二迁移控制器,用于当虚拟机运行在所述源宿主机时,将所述虚拟机的第一内存数据发送给外设的目的宿主机,更新所述第一内存数据形成第二内存数据,在接收到所述缺页响应控制器的触发时,根据所述更新脏页面请求,发送所述脏页面对应的目标页面给所述外设的目的宿主机;
所述缺页响应控制器,用于当所述虚拟机访问脏页面时,接收所述外设的目的宿主机发送的更新脏页面请求,并触发所述第二迁移控制器。
本发明实施例提供了一种虚拟机迁移方法、目的宿主机和源宿主机,目的宿主机执行的虚拟机迁移方法,包括:当虚拟机运行在源宿主机时,接收并存储源宿主机发送的虚拟机的第一内存数据;停止源宿主机中的虚拟机运行,将源宿主机中的第二内存数据与第一内存数据进行对比,标记第一内存数据中的脏页面;在目的宿主机上启动虚拟机,当虚拟机访问脏页面时,发送更新脏页面请求给源宿主机,并接收源宿主机返回的与脏页面对应的目标页面;将目标页面替换脏页面,在本发明提供的方案中,停止源宿主机中的虚拟机运行的过程主要为了将第二内存数据与第一内存数据进行对比,之后虚拟机运行于目的宿主机上,在这个过程中,将第二内存数据与第一内存数据间差异性的页面重新发送,这整个过程中,每个差异性的页面只需经过一次迁移,而不会迭代迁移,能够有效地降低虚拟机迁移过程的同步数据量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种虚拟机迁移方法的流程图;
图2是本发明一个实施例提供的一种虚拟机迁移方法的流程图;
图3是本发明一个实施例提供的一种目的宿主机的结构示意图;
图4是本发明另一个实施例提供的一种目的宿主机的结构示意图;
图5是本发明一个实施例提供的一种源宿主机的结构示意图;
图6是本发明一个实施例提供的目的宿主机和源宿主机之间交互的结构示意图;
图7是本发明又一个实施例提供的一种虚拟机迁移方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种虚拟机迁移方法,应用于目的宿主机,该方法可以包括以下步骤:
步骤101:当虚拟机运行在源宿主机时,接收并存储源宿主机发送的虚拟机的第一内存数据;
步骤102:停止源宿主机中的虚拟机运行,将源宿主机中的第二内存数据与第一内存数据进行对比,标记第一内存数据中的脏页面;
步骤103:在目的宿主机上启动虚拟机,当虚拟机访问脏页面时,发送更新脏页面请求给源宿主机,并接收源宿主机返回的与脏页面对应的目标页面;
步骤104:将目标页面替换脏页面。
在图1所示的发明实施例中,当虚拟机运行在源宿主机时,接收并存储源宿主机发送的虚拟机的第一内存数据;停止源宿主机中的虚拟机运行,将源宿主机中的第二内存数据与第一内存数据进行对比,标记第一内存数据中的脏页面;在目的宿主机上启动虚拟机,当虚拟机访问脏页面时,发送更新脏页面请求给源宿主机,并接收源宿主机返回的与脏页面对应的目标页面;将目标页面替换脏页面,在本发明提供的方案中,停止源宿主机中的虚拟机运行的过程主要为了将第二内存数据与第一内存数据进行对比,之后虚拟机运行于目的宿主机上,在这个过程中,将第二内存数据与第一内存数据间差异性的页面重新发送,这整个过程中,每个差异性的页面只需经过一次迁移,而不会迭代迁移,能够有效地降低虚拟机迁移过程的同步数据量。
在本发明一个实施例中,上述方法进一步包括:设置位图文件;步骤102中标记第一内存数据中的脏页面的具体实施方式,包括:确定第一内存数据中未同步页面,在位图文件中对未同步页面标注为缺页状态;在步骤103中,在目的宿主机上启动虚拟机之后,在发送更新脏页面请求给源宿主机之前,进一步包括:判断虚拟机访问的当前页面在位图文件中是否标注为缺页状态,如果是,则执行发送更新脏页面请求给源宿主机,通过在位图文件中对未同步页面标注为缺页状态,那么,通过位图文件可以准确的确定出脏页面,以准确的定位出脏页面,从而保证数据的更新。
在本发明一个实施例中,在确定第一内存数据中差异页面之后,进一步包括:确定差异页面对应的第二内存数据中目标页面的位置,并将该目标页面的位置存储到位图文件;步骤103中接收源宿主机返回的与脏页面对应的目标页面的具体实施方式,包括:根据位图文件中目标页面的位置,触发源宿主机定位并复制目标页面,接收源宿主机发送的复制的目标页面,通过该过程,能够准确的定位出差异页面对应的第二内存数据中目标页面,保证数据更新的准确性。
在本发明一个实施例中,在虚拟机访问的当前页面在位图文件中标注为缺页状态之后,在发送更新脏页面请求给源宿主机之前,进一步包括:判断当前页面是否为空闲页面,如果是,则直接为当前页面分配一个零页面,并恢复虚拟机运行;否则,执行发送更新脏页面请求给源宿主机,通过该过程保证了脏页面更新的准确性。
在本发明一个实施例中,在目的宿主机上启动虚拟机之后,在判断虚拟机访问的当前页面在位图文件中是否标注为缺页状态之前,进一步包括:接收到虚拟机发送的当前页面缺页异常,在发现页面缺页异常之后,才访问位图文件查看该当前页面标注是否为缺页状态,而无需一直持续的访问位图文件,有效地提高了迁移效率。
如图2所示,本发明一个实施例提供一种虚拟机迁移方法,应用于源宿主机,该方法可以包括如下步骤:
步骤201:当虚拟机运行在源宿主机时,将虚拟机的第一内存数据发送给目的宿主机,更新第一内存数据形成第二内存数据;
步骤202:停止源宿主机中的虚拟机运行,并在目的宿主机上启动虚拟机;
步骤203:当虚拟机访问脏页面时,接收目的宿主机发送的更新脏页面请求,并根据更新脏页面请求,发送脏页面对应的目标页面给目的宿主机。
在本发明一个实施例中,步骤203的具体实施方式,包括:确定目标页面的位置,定位并复制目标页面,并将目标页面发送给目的宿主机,通过该过程准确的定位出了目标页面,保证了目标页面的准确性。
如图3所示,本发明一个实施例提供一种目的宿主机,该目的宿主机包括:第一迁移控制器301、存储单元302、标记单元303、缺页请求控制器304,其中,
第一迁移控制器301,用于当虚拟机运行在外设的源宿主机时,接收外设的源宿主机发送的虚拟机的第一内存数据,并将第一内存数据发送给存储单元302,并接收外设的源宿主机返回的与脏页面对应的目标页面,将目标页面替换存储单元302存储的脏页面。
存储单元302,用于接收并存储第一迁移控制器301第一内存数据;
标记单元303,用于停止外设的源宿主机中的虚拟机运行,将外设的源宿主机中的第二内存数据与存储单元302存储的第一内存数据进行对比,标记第一内存数据中的脏页面;
缺页请求控制器304,用于确定标记单元303标记的脏页面,启动虚拟机,当虚拟机访问标记单元303标记的脏页面时,发送更新脏页面请求给外设的源宿主机。
如图4所示,在本发明另一实施例中,目的宿主机,进一步包括:判断单元401,其中,
标记单元303,用于设置位图文件,确定第一内存数据中未同步页面,在位图文件中对未同步页面标注为缺页状态,并将位图文件提供给判断单元401;
判断单元401,用于判断虚拟机访问的当前页面在标记单元303提供的位图文件中是否标注为缺页状态,如果是,则触发缺页请求控制器304;
缺页请求控制器304,用于在接收到判断单元401的触发时,执行发送更新脏页面请求给外设的源宿主机。
在本发明另一实施例中,标记单元303,用于确定差异页面对应的第二内存数据中目标页面的位置,并将该目标页面的位置存储到位图文件,并提供位图文件;
缺页请求控制器304,用于访问标记单元303提供的位图文件,根据位图文件中目标页面的位置,触发外设的源宿主机定位并复制目标页面,接收外设的源宿主机发送的复制的目标页面。
在本发明又一实施例中,判断单元401,进一步用于判断标注为缺页状态的当前页面是否为空闲页面,如果是,则直接为当前页面分配一个零页面,并恢复虚拟机运行;否则,触发缺页请求控制器。
如图5所示,本发明实施例提供一种源宿主机,该源宿主机包括:第二迁移控制器501和缺页响应控制器502,其中,
第二迁移控制器501,用于当虚拟机运行在源宿主机时,将虚拟机的第一内存数据发送给外设的目的宿主机,更新第一内存数据形成第二内存数据,在接收到缺页响应控制器502的触发时,根据更新脏页面请求,发送脏页面对应的目标页面给外设的目的宿主机;
缺页响应控制器502,用于当虚拟机访问脏页面时,接收外设的目的宿主机发送的更新脏页面请求,并触发第二迁移控制器501。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见下述的本发明方法实施例中的叙述,此处不再赘述。
为使本发明的目的、技术方案和优点更加清楚,结合图6所示的目的宿主机中各个单元和源宿主机中各个单元之间的交互,以主机运行系统为linux为例,展开说明,虚拟机从源宿主机迁移到目的宿主机的方法,如图7所示该方法可以包括以下步骤:
步骤701:确定目的宿主机;
在该步骤中,目的宿主机和源宿主机之间的交互如图6所示,目的宿主机601和源宿主机602中均安装了linux基础系统,在目的宿主机601和在源宿主机602运行虚拟化系统(KVM),是实现虚拟机运行的基础设置,该虚拟化系统(KVM)以虚拟化模块的方式加载进入linux内核运行于目的宿主机601和在源宿主机602。
步骤702:当虚拟机运行在源宿主机时,目的宿主机接收源宿主机发送的第一内存状态数据;
如图6所示,在该步骤中,源宿主机602的用户态进程(QEMU)中第二迁移控制器6021从存在于lunix内核的内存虚拟化模块第二KVM_MMU6023中获取虚拟机内存状态的第二EPT表项6024(该第二EPT表项存在于源宿主机602),同时,第二迁移控制器6021将虚拟机内存状态数据流发送给目的宿主机601的用户态进程(QEMU)中第一迁移控制器6011,第一迁移控制器6011将虚拟机内存状态数据流通过内存虚拟化模块第一KVM_MMU6013存储到第一EPT表项6014(该第一EPT表项存在于目的宿主机601)。
步骤703:源宿主机更新第一内存状态数据,形成第二内存状态数据;
在该步骤中,在虚拟机迁移过程中,虚拟机仍然运行于源宿主机上,那么,在这个过程中,难免有内存状态被更新,将更新后的虚拟机内存状态数据记为第二内存状态数据。
步骤704:停止源宿主机中的虚拟机运行,将源宿主机中的第二内存状态数据与第一内存状态数据进行对比;
该步骤的停止源宿主机中的虚拟机运行的过程十分短暂,用户或许根本感受不到虚拟机被停止过。
步骤705:确定第一内存状态数据中未同步页面,在位图文件中对未同步页面标注为缺页状态;
在该步骤中,如图6所示,位图文件dirty_bitmap6015位于目的宿主机601的内核态KVM模块中,这样在查询dirty_bitmap6015时可以直接通过内核态查询,即,在目的宿主机601的第一迁移控制器6011接收到dirty_bitmap数据时,通过第一迁移控制器6011中的ioctl系统调用访问第一KVM_MMU6013接口,在dirty_bitmap6015中对未同步页面设置缺页状态,同时,可通过在KVM虚拟系统中建立dirty_bitmap副本来保证位图文件的完整。
步骤706:确定未同步页面对应的第二内存状态数据中目标页面的位置,并将该目标页面的位置存储到位图文件;
例如:第一内存状态中未同步页面1对应第二内存状态中目标页面1,而该目标页面1在源宿主机的存储位置为位置a,则将该位置a存储到位图文件中,方便对目标页面的定位。
步骤707:在目的宿主机上启动虚拟机;
在确定好未同步的页面之后,由于第一内存状态数据已经加载到该目的宿主机,那么,虚拟机能够在目的宿主机上启动。
步骤708:目的宿主机上的虚拟机访问当前页面;
前面已经提及内存状态数据存储于EPT表项中,在访问EPT表项中的内存状态数据过程中,往往以页为单位进行访问,即内存状态数据由各个页面数据组成,该各个页面数据均可作为当前页面。
步骤709:当虚拟机访问当前页面出现缺页异常时,判断当前页面在位图文件中是否标注为缺页状态,如果是,则执行步骤710;否则,执行步骤711;
在该步骤中,虚拟化系统(KVM)的异常处理入口函数handle_exception,根据异常类型,确定缺页异常,并通过调用异常处理函数KVM_MMU_page_fault确认是否是对未同步的脏页面的访问即当前页面在位图文件中是否标注为缺页状态。
步骤710:判断当前页面是否为空闲页面,如果是,则执行步骤712;否则,执行步骤713;
在该步骤中,仍然通过调用异常处理函数KVM_MMU_page_fault判断当前页面是否为空闲页面。
步骤711:按照正常缺页异常处理逻辑进行处理,并执行步骤708;
步骤712:直接为当前页面分配一个零页面,并恢复虚拟机运行,结束当前流程;
在该步骤中,判断出当前页面对应的目的页面为空闲页面,即目的页面的页面数据为空,即可将当前页面中的数据清除,并调用VM_LANCH函数恢复虚拟机运行。
步骤713:目的宿主机发送更新脏页面请求给源宿主机;
该步骤的具体实施过程,如图6所示,目的宿主机的用户态进程(QEMU)中缺页请求控制器6012通过第一KVM_MMU6013接口接收到更新脏页面请求,向源宿主机的用户态进程(QEMU)中缺页响应控制器6022发送该更新脏页面请求,在该请求中包含有位图文件存储的目标页面的位置。
步骤714:根据目标页面的位置,源宿主机确定目标页面的位置,定位并复制目标页面,并将目标页面发送给目的宿主机;
在该步骤中,值得说明的是,在根据地址查找对应的EPT表项的过程中,还需要适时地为该地址建立各级EPT表项,并将最低级EPT表项设置为non-present属性。
步骤715:目的宿主机接收源宿主机发送的复制的目标页面。
该步骤具体过程,如图6所示,源宿主机602的用户态中第二迁移控制器6021通过源宿主机602的第二KVM_MMU6023接口从源宿主机602的linux内核中的第二EPT表项6024中复制目标页面,并将该目标页面发送给目的宿主机601的用户态中第一迁移控制器6011,并通过目的宿主机601的第一KVM_MMU6013接口将目标页面发送给目的宿主机601的linux内核中的第一EPT表项6014,同时,修改目的宿主机601的linux内核中位图文件bitmap6015中页面的状态。
根据上述方案,本发明的各实施例所提供的虚拟机迁移方法、目的宿主机和源宿主机,至少具有如下有益效果:
1.当虚拟机运行在源宿主机时,接收并存储源宿主机发送的虚拟机的第一内存数据;停止源宿主机中的虚拟机运行,将源宿主机中的第二内存数据与第一内存数据进行对比,标记第一内存数据中的脏页面;在目的宿主机上启动虚拟机,当虚拟机访问脏页面时,发送更新脏页面请求给源宿主机,并接收源宿主机返回的与脏页面对应的目标页面;将目标页面替换脏页面,在本发明提供的方案中,停止源宿主机中的虚拟机运行的过程主要为了将第二内存数据与第一内存数据进行对比,之后虚拟机运行于目的宿主机上,在这个过程中,将第二内存数据与第一内存数据间差异性的页面重新发送,这整个过程中,每个差异性的页面只需经过一次迁移,而不会迭代迁移,能够有效地降低虚拟机迁移过程的同步数据量。
2.在本发明实施例中,通过判断虚拟机访问的当前页面在位图文件中是否标注为缺页状态,如果是,则执行发送更新脏页面请求给源宿主机,并接收源宿主机发送的当前页面对应的目标页面,利用目标页面更新当前页面,而不是同时将所有的未同步页面进行同步,实现了按需复制同步。
3.由于本发明实施例在进行一次完整复制之后,即停止了源宿主机上虚拟机的运行,在虚拟机停止运行后,通过对比源宿主机和目的宿主机中的内存状态数据即可一次性确定出未同步页面,在之后虚拟机运行于目的宿主机,避免了内存状态数据的迭代迁移,有效地缩短了总迁移时间。
4.在本发明实施例中,虚拟机停止的过程只是为了找出未同步页面,而不涉及数据的迁移等复杂的过程,使得虚拟机不可访问的时间较短。
5.在本发明实施例中,只有当前脏页面即未同步页面被访问时才会被更新,而无需对未被访问的脏页面进行更新,使得脏页面更新更加具有针对性,由于当前被访问的脏页面数据量并不会特别大,其在更新过程中对虚拟机运行影响较小,保证了虚拟机的应用性能不被影响。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种虚拟机迁移方法,其特征在于,应用于目的宿主机,包括:
当虚拟机运行在源宿主机时,接收并存储所述源宿主机发送的所述虚拟机的第一内存数据;
停止所述源宿主机中的虚拟机运行,将所述源宿主机中的第二内存数据与所述第一内存数据进行对比,标记所述第一内存数据中的脏页面;
在所述目的宿主机上启动所述虚拟机,当所述虚拟机访问所述脏页面时,发送更新脏页面请求给所述源宿主机,并接收所述源宿主机返回的与所述脏页面对应的目标页面;
将所述目标页面替换所述脏页面。
2.根据权利要求1所述的方法,其特征在于,进一步包括:设置位图文件;
所述标记所述第一内存数据中的脏页面,包括:确定所述第一内存数据中未同步页面,在所述位图文件中对所述未同步页面标注为缺页状态;
在所述目的宿主机上启动所述虚拟机之后,在所述发送更新所述脏页面请求给所述源宿主机之前,进一步包括:判断所述虚拟机访问的当前页面在所述位图文件中是否标注为缺页状态,如果是,则执行所述发送更新所述脏页面请求给所述源宿主机。
3.根据权利要求2所述的方法,其特征在于,
在所述确定所述第一内存数据中未同步页面之后,进一步包括:确定所述差异页面对应的所述第二内存数据中目标页面的位置,并将该目标页面的位置存储到所述位图文件;
所述接收所述源宿主机返回的与所述脏页面对应的目标页面,包括:根据所述位图文件中目标页面的位置,触发所述源宿主机定位并复制所述目标页面,接收所述源宿主机发送的所述复制的所述目标页面。
4.根据权利要求2或3所述的方法,其特征在于,
在所述虚拟机访问的当前页面在所述位图文件中标注为缺页状态之后,在所述发送更新所述脏页面请求给所述源宿主机之前,进一步包括:判断所述当前页面是否为空闲页面,如果是,则直接为所述当前页面分配一个零页面,并恢复所述虚拟机运行;否则,执行所述发送更新所述脏页面请求给所述源宿主机。
5.一种虚拟机迁移方法,其特征在于,应用于源宿主机,包括:
当虚拟机运行在所述源宿主机时,将所述虚拟机的第一内存数据发送给目的宿主机,更新所述第一内存数据形成第二内存数据;
停止所述源宿主机中的虚拟机运行,并在所述目的宿主机上启动所述虚拟机;
当所述虚拟机访问脏页面时,接收所述目的宿主机发送的更新脏页面请求,并根据所述更新脏页面请求,发送所述脏页面对应的目标页面给所述目的宿主机。
6.根据权利要求5所述的方法,其特征在于,所述发送所述脏页面对应的目标页面给所述目的宿主机,包括:
确定目标页面的位置,定位并复制所述目标页面,并将所述目标页面发送给所述目的宿主机。
7.一种目的宿主机,其特征在于,包括:第一迁移控制器、存储单元、标记单元、缺页请求控制器,其中,
所述第一迁移控制器,用于当虚拟机运行在外设的源宿主机时,接收所述外设的源宿主机发送的所述虚拟机的第一内存数据,并将所述第一内存数据发送给所述存储单元,并接收外设的源宿主机返回的与脏页面对应的目标页面,将目标页面替换存储单元存储的脏页面
所述存储单元,用于接收并存储所述第一迁移控制器所述第一内存数据;
所述标记单元,用于停止所述外设的源宿主机中的虚拟机运行,将所述外设的源宿主机中的第二内存数据与所述存储单元存储的第一内存数据进行对比,标记所述第一内存数据中的脏页面;
所述缺页请求控制器,用于确定所述标记单元标记的脏页面,启动所述虚拟机,当所述虚拟机访问所述标记单元标记的脏页面时,发送更新脏页面请求给所述外设的源宿主机。
8.根据权利要求7所述的目的宿主机,其特征在于,进一步包括:判断单元,其中,
所述标记单元,用于设置位图文件,确定所述第一内存数据中未同步页面,在所述位图文件中对所述未同步页面标注为缺页状态,并将所述位图文件提供给所述判断单元;
所述判断单元,用于判断所述虚拟机访问的当前页面在所述标记单元提供的位图文件中是否标注为缺页状态,如果是,则触发所述缺页请求控制器;
所述缺页请求控制器,用于在接收到所述判断单元的触发时,执行所述发送更新所述脏页面请求给所述外设的源宿主机。
9.根据权利要求8所述的目的宿主机,其特征在于,
所述标记单元,用于确定所述差异页面对应的所述第二内存数据中目标页面的位置,并将该目标页面的位置存储到所述位图文件,并提供所述位图文件;
所述缺页请求控制器,用于访问所述标记单元提供的所述位图文件,根据所述位图文件中目标页面的位置,触发所述外设的源宿主机定位并复制所述目标页面,接收所述外设的源宿主机发送的所述复制的所述目标页面;
和/或,
所述判断单元,进一步用于判断所述标注为缺页状态的当前页面是否为空闲页面,如果是,则直接为所述当前页面分配一个零页面,并恢复所述虚拟机运行;否则,触发所述缺页请求控制器。
10.一种源宿主机,其特征在于,包括:第二迁移控制器和缺页响应控制器,其中,
所述第二迁移控制器,用于当虚拟机运行在所述源宿主机时,将所述虚拟机的第一内存数据发送给外设的目的宿主机,更新所述第一内存数据形成第二内存数据,在接收到所述缺页响应控制器的触发时,根据所述更新脏页面请求,发送所述脏页面对应的目标页面给所述外设的目的宿主机;
所述缺页响应控制器,用于当所述虚拟机访问脏页面时,接收所述外设的目的宿主机发送的更新脏页面请求,并触发所述第二迁移控制器。
CN201610206072.0A 2016-04-05 2016-04-05 一种虚拟机迁移的方法、目的宿主机和源宿主机 Pending CN105893114A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610206072.0A CN105893114A (zh) 2016-04-05 2016-04-05 一种虚拟机迁移的方法、目的宿主机和源宿主机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610206072.0A CN105893114A (zh) 2016-04-05 2016-04-05 一种虚拟机迁移的方法、目的宿主机和源宿主机

Publications (1)

Publication Number Publication Date
CN105893114A true CN105893114A (zh) 2016-08-24

Family

ID=57012174

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610206072.0A Pending CN105893114A (zh) 2016-04-05 2016-04-05 一种虚拟机迁移的方法、目的宿主机和源宿主机

Country Status (1)

Country Link
CN (1) CN105893114A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107704311A (zh) * 2017-09-27 2018-02-16 郑州云海信息技术有限公司 一种虚拟机内存迁移方法及其装置
CN108932149A (zh) * 2017-05-22 2018-12-04 中兴通讯股份有限公司 数据传输方法及装置
CN112148421A (zh) * 2019-06-29 2020-12-29 华为技术有限公司 虚拟机迁移的方法以及装置
CN112988243A (zh) * 2019-12-02 2021-06-18 中国移动通信集团浙江有限公司 设备切换方法、装置及计算设备
CN113157395A (zh) * 2021-04-20 2021-07-23 上海泓戟信息科技有限公司 一种优化计算机内存数据同步的方法
WO2023109357A1 (zh) * 2021-12-16 2023-06-22 华为技术有限公司 一种数据恢复方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101101562A (zh) * 2007-07-10 2008-01-09 北京大学 一种虚拟机的外存在线迁移方法
CN102136993A (zh) * 2010-07-29 2011-07-27 华为技术有限公司 一种数据迁移的方法、装置和系统
CN102609361A (zh) * 2012-01-16 2012-07-25 北京邮电大学 虚拟机存储数据迁移方法和装置
CN104410681A (zh) * 2014-11-21 2015-03-11 上海交通大学 基于远程直接内存访问的虚拟机动态迁移优化方法
CN104598303A (zh) * 2013-10-31 2015-05-06 中国电信股份有限公司 基于kvm的虚拟机间在线迁移方法与装置
CN105335223A (zh) * 2014-06-20 2016-02-17 富士通株式会社 源主机和目的主机上的虚拟机内存迁移装置、方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101101562A (zh) * 2007-07-10 2008-01-09 北京大学 一种虚拟机的外存在线迁移方法
CN102136993A (zh) * 2010-07-29 2011-07-27 华为技术有限公司 一种数据迁移的方法、装置和系统
CN102609361A (zh) * 2012-01-16 2012-07-25 北京邮电大学 虚拟机存储数据迁移方法和装置
CN104598303A (zh) * 2013-10-31 2015-05-06 中国电信股份有限公司 基于kvm的虚拟机间在线迁移方法与装置
CN105335223A (zh) * 2014-06-20 2016-02-17 富士通株式会社 源主机和目的主机上的虚拟机内存迁移装置、方法及系统
CN104410681A (zh) * 2014-11-21 2015-03-11 上海交通大学 基于远程直接内存访问的虚拟机动态迁移优化方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932149A (zh) * 2017-05-22 2018-12-04 中兴通讯股份有限公司 数据传输方法及装置
CN108932149B (zh) * 2017-05-22 2023-11-17 中兴通讯股份有限公司 数据传输方法及装置
CN107704311A (zh) * 2017-09-27 2018-02-16 郑州云海信息技术有限公司 一种虚拟机内存迁移方法及其装置
CN112148421A (zh) * 2019-06-29 2020-12-29 华为技术有限公司 虚拟机迁移的方法以及装置
CN112148421B (zh) * 2019-06-29 2024-01-30 华为技术有限公司 虚拟机迁移的方法以及装置
CN112988243A (zh) * 2019-12-02 2021-06-18 中国移动通信集团浙江有限公司 设备切换方法、装置及计算设备
CN112988243B (zh) * 2019-12-02 2022-12-27 中国移动通信集团浙江有限公司 设备切换方法、装置及计算设备
CN113157395A (zh) * 2021-04-20 2021-07-23 上海泓戟信息科技有限公司 一种优化计算机内存数据同步的方法
WO2023109357A1 (zh) * 2021-12-16 2023-06-22 华为技术有限公司 一种数据恢复方法及装置

Similar Documents

Publication Publication Date Title
CN105893114A (zh) 一种虚拟机迁移的方法、目的宿主机和源宿主机
CN103597451B (zh) 用于高可用性的存储器镜像和冗余生成
CN101964820B (zh) 一种保持数据一致性的方法及系统
CN102985910B (zh) 对无用存储单元收集的系统和方法
US10838622B2 (en) Method and apparatus for improving storage performance of container
CN110088733A (zh) 虚拟机迁移的基于存储层的编排
CN108351752A (zh) 存储虚拟化卸载
CN107066498B (zh) 键值kv存储方法和装置
CN105830040A (zh) 用于访问存储器的存储器装置
CN107111548B (zh) 硬件辅助的对象存储器迁移
CN105659208A (zh) 处理多个线程的数据处理装置及方法
CN110990133B (zh) 边缘计算服务迁移方法、装置、电子设备及介质
CN104102535B (zh) 进程迁移方法和可迁移操作系统
CN112328354A (zh) 虚拟机热迁移方法、装置、电子设备及计算机存储介质
CN105589704B (zh) 一种加速虚拟机启动的方法及系统
CN107003949A (zh) 用于多核系统的内存同步的系统和方法
CN103488523A (zh) 一种页的访问方法和页的访问装置、服务器
CN103473113B (zh) 一种通用的虚拟机收养方法
CN113032086A (zh) 虚拟机部署及热迁移方法、vmm升级方法、服务器
CN112000426A (zh) 一种数据处理方法及装置
CN101808141B (zh) 一种基于虚拟化平台的宿主客户机协同换页的方法
CN102004773A (zh) 数据读写处理方法及web应用服务器
CN105739918B (zh) 虚拟机的存储在线迁移方法及装置
US20140359201A1 (en) Persistent memory garbage collection
CN105279166A (zh) 文件管理方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20160824

RJ01 Rejection of invention patent application after publication