基于VIRTIO驱动进行虚拟机内存在线迁移的方法.pdf

上传人:a*** 文档编号:6180868 上传时间:2019-05-17 格式:PDF 页数:9 大小:1.28MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310647925.0

申请日:

2013.12.04

公开号:

CN103677955A

公开日:

2014.03.26

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/455申请日:20131204|||公开

IPC分类号:

G06F9/455

主分类号:

G06F9/455

申请人:

深圳清华大学研究院

发明人:

武永卫; 陈康; 郑纬民; 吴之豪

地址:

518057 广东省深圳市南山区高新技术产业园南区深圳清华大学研究院大楼A302室

优先权:

专利代理机构:

深圳市鼎言知识产权代理有限公司 44311

代理人:

孔丽霞

PDF下载: PDF下载
内容摘要

本发明公开了一种基于Virtio驱动进行虚拟机内存在线迁移的方法,主要涉及虚拟机虚拟化领域。该方法包括:修改虚拟机管理器后台驱动以指导客户机的内存迁移;编写客户机Virtio驱动以分配保留页面;参考内存位图进行非保留页面的循环迁移。本发明将半虚拟化技术应用于虚拟机的迁移当中,通过虚拟机内存的实际使用情况动态地进行内存迁移,相对于传统虚拟机迁移方法,能够大大降低虚拟机的内存迁移时间和开销,提高迁移效率。

权利要求书

权利要求书
1.  一种基于Virtio驱动进行虚拟机内存在线迁移的方法,其特征在于,所述方法包括以下步骤:
S1:宿主机使用Qemu模拟器模拟PCI设备,进行迁移初始化;
S2:宿主机通过保留页面设置函数向PCI配置空间写需要保留的内存页面数,源客户机通过保留页面获取函数从PCI配置空间中获得需要保留的内存页面数;
S3:源客户机根据需要保留的内存页面数,分配保留内存页面,同时以内存位图的方式记录下来内存页面分配信息,并将内存位图传输至宿主机;
S4:宿主机根据该内存位图,控制源客户机循环迁移非保留的内存页面至目的客户机的目的虚拟机;及
S5:当迁移完毕时,启用目的虚拟机,目的虚拟机释放保留内存页面。

2.  如权利要求1所述的基于Virtio驱动进行虚拟机内存在线迁移的方法,其特征在于,所述步骤S1包括:
所述宿主机使用Qemu模拟器模拟PCI设备,并进行PCI配置空间初始化;
所述宿主机使用Qemu模拟器添加虚拟队列,设置虚拟队列的处理回调函数;及
使用初始化函数做Virtio驱动初始化。

3.  如权利要求1所述的基于Virtio驱动进行虚拟机内存在线迁移的方法,其特征在于,所述步骤S2包括:
所述宿主机通过保留页面设置函数向PCI配置空间中写入需要保留的内存页面数,以指导源客户机的页面分配工作;
所述源客户机通过保留页面获取函数从PCI配置空间中获得需要保留的内存页面数,为步骤S3做准备。

4.  如权利要求1所述的基于Virtio驱动进行虚拟机内存在线迁移的方法,其特征在于,所述步骤S3包括:
在步骤S2的指导下进行内存页面的分配工作,并以内存位图的方式记录下来内存页面分配信息;
将内存位图传输至宿主机Qemu模拟器的虚拟队列,并通知宿主机Qemu模拟器接收虚拟队列中的内存位图。

5.  如权利要求1所述的基于Virtio驱动进行虚拟机内存在线迁移的方法,其特征在于,所述步骤S4包括:
所述宿主机Qemu模拟器根据内存位图信息控制虚拟机的迁移过程;
所述源客户机通过多次循环将非保留页面传输到目的客户机。

6.  如权利要求1所述的基于Virtio驱动进行虚拟机内存在线迁移的方法,其特征在于,所述步骤S5包括:
当迁移完毕时,启用目的虚拟机,替代源客户机中的源虚拟机对外提供服务;
所述目的虚拟机释放保留的内存页面,恢复内存页面的正常使用。

说明书

说明书基于Virtio驱动进行虚拟机内存在线迁移的方法
技术领域
本发明涉及虚拟机虚拟化领域,特别涉及一种采用virtio驱动进行虚拟机内存在线迁移的方法。
背景技术
虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过对计算资源的抽象,屏蔽各种各样复杂的底层物理环境,来实现虚拟化。虚拟化技术分为以下三类:用户层的虚拟化,基于操作系统的有硬件支持的虚拟化,直接操作管理硬件的虚拟化。而不同的虚拟机使用不同的虚拟化技术,如当前使用最为广泛的X86虚拟机有Vmware,Xen,KVM,其中KVM是使用Linux内核的虚拟机,它只能支持有硬件支持的虚拟化,而在用户层使用Qemu来实现。
虚拟机的迁移技术是虚拟机虚拟化技术的一个研究热点,流行的虚拟化解决方案基本上都有对应的迁移技术,虚拟机迁移分为P2V,P2P,V2V三种,而这里讨论的KVM则是其中的V2V(虚拟机迁移到虚拟机)。虚拟机迁移主要工作为CPU状态的迁移,内存的迁移,块设备迁移,网络迁移这几个部分,针对内存和块设备的迁移,KVM采用了预拷贝技术。如何缩短在线迁移的时间,只用很短的停机时间使得用户尽可能的感觉不到,是虚拟机在线迁移技术需要解决的问题。
当前内存在线迁移的实现通常采用预拷贝技术,就是先把全部内存拷贝过去,然后再逐步把变化过的部分迁移过去,直到估计剩余的页面可以在一个可接受的很短的时间片内完成,此时源虚拟机停机,完成剩余的拷贝,最后目的虚拟机开始运行。
当前的内存在线迁移方案中,具有一定的时间和带宽浪费。目前的虚拟机内存配置一般都在一到几个GB,如果把全部内存页标记上并全部拷贝至目的机,这样的效率很低。其实这几个GB的内存空间中,真正是系统占有的、有用的空间所占比例往往很小,这部分的内存内容的拷贝占用了大量的时间和网络带宽。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何提供一种高效的虚拟机内存在线迁移方法,从而减少不必要的时间和带宽开销。
(二)技术方案
为解决上述技术问题,本发明提供一种基于Virtio驱动的虚拟机内存在线迁移方法,包括以下几个方面:
U1:设计虚拟机管理器用户层Qemu的驱动,工作在宿主机的用户态,负责Virtio pci设备的模拟以及内存页面循环迁移过程的控制;
U2:设计源客户机Virtio驱动程序,尽可能多地分配保留内存页面,并以内存位图形式记录下内存页面情况;
U3:设计目的客户机的驱动程序,使得循环迁移结束后,启用目的虚拟机并释放保留的内存页面。
优选地,在设计宿主机U1相关工作中,包括以下几个方面:
U11:使用初始化函数Virtio_migration_init,做virtio驱动初始化,分配虚拟队列,进行PCI配置空间初始化等;
U12:设置分别用于处理读取和设置PCI配置空间的两个函数virtio_migration_get_config(保留页面获取函数)和virtio_migration_set_config(保留页面设置函数),用来指导客户机分配内存;
U13:使用虚拟队列的函数virtio_migration_handle_output处理回调,进行内存位图的回调处理;
U14:参考内存位图,使用arch_init.c中的函数ram_save_live和ram_save_block进行内存页面的循环迁移工作。
优选地,在设计源客户机U2相关工作中,包括以下几个方面:
U21:定义Virtio_driver信息,使用接口函数(如register_virtio_driver函数)将其注册为Virtio驱动,并调用virtballoon_probe初始化函数进行初始化;
U22:使用内核线程函数vmigration负责监视PCI设备配置空间预保留页面数的变化,当预保留页面数大于已保留页面数就会调用fill_balloon(内存页面分配函数)进行页面分配,当预保留页面数小于已保留页面数就会调用leak_balloon(内存页面释放函数)进行页面释放;
U23:如果是调用内存页面分配函数,则使用fill_balloon函数分配内存页面,将分配得到的内存页面号保存在vb->pages链表中,并置内存位图相应位为1;
U24:如果是调用内存页面释放函数,则使用leak_balloon函数释放内存页面,遍历vb->pages链表删除每个内存页面,并置内存位图相应位为0;
U25:使用接口函数unregister_virtio_driver进行驱动的移除,并调用virtioballoon_remove(内存页面清除函数)释放内存。
优选地,在设计目的客户机U3相关工作中,包括以下几个方面:
U31:循环迁移完毕时,启用目的虚拟机,代替源虚拟机对外提供服务;
U32:目的虚拟机释放保留的内存页面,恢复内存页面的正常使用。
(三)有益效果
本发明提供了一种基于Virtio驱动进行虚拟机在线迁移的方法,其在内存页面迁移方面使用保留页面方法,经实验检验,除了内存使 用率极高、已接近100%这个极端情况以外,使用virtio驱动的方法能很好的缩短虚拟机的在线迁移时间,而且内存使用率越低,其迁移时间的改善效果就越明显。
附图说明
图1是本发明实施例所述基于Virtio驱动进行虚拟机内存在线迁移的系统结构图;
图2是本发明实施例所述基于Virtio驱动进行虚拟机内存在线迁移的方法流程图;
图3是本发明实施例所述使用Virtio驱动分配保留页面的流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1是本发明实施例所述基于Virtio驱动进行虚拟机内存在线迁移的系统结构图,如图1所述,该系统结构包括以下几个方面:
U1(宿主机),执行以下功能:虚拟机管理器用户层Qemu的驱动,工作在宿主机的用户态,负责Virtio PCI设备的模拟以及内存页面循环迁移过程的控制;
U2(源客户机),执行以下功能:源客户机Virtio驱动程序,尽可能多地分配保留内存页面,并以内存位图形式记录下内存页面情况;
U3(目的客户机),执行以下功能:目的客户机的驱动程序,使得循环迁移结束后,启用目的虚拟机并释放保留的内存页面。
本发明实施例的方法采用Virtio驱动的方式,对虚拟机内存迁移进行改进,减少不必要的时间和带宽开销,大大提升虚拟机迁移的效率。
图2是本发明实施例所述基于Virtio驱动进行虚拟机内存在线迁移的迁移流程图,该流程包括以下步骤:
S1:宿主机使用Qemu模拟器模拟PCI设备,进行迁移初始化,源 客户机启动Virtio驱动,做好准备工作。
具体而言,所述步骤S1包括:所述宿主机使用Qemu模拟器模拟PCI设备,并进行PCI配置空间初始化;所述宿主机使用Qemu模拟器添加虚拟队列,设置虚拟队列的处理回调函数;使用初始化函数做Virtio驱动初始化。
S2:宿主机使用virto_migration_set_config函数(保留页面设置函数)向PCI配置空间写需要保留的内存页面数,源客户机通过virtio_migration_get_config函数(保留页面获取函数)从PCI配置空间中获得需要保留的内存页面数。
具体而言,所述步骤S2包括:所述宿主机通过保留页面设置函数Virtio_migration_set_config向PCI配置空间中写入需要保留的内存页面数,以指导源客户机的页面分配工作;所述源客户机通过保留页面获取函数Virtio_migration_get_config从PCI配置空间中获得需要保留的内存页面数,为步骤S3做准备。
S3:源客户机根据需要保留的内存页面数,开始分配保留内存页面,同时以内存位图的方式记录下来内存页面分配信息,随后将内存位图传输至宿主机。
具体而言,所述步骤S3包括:在步骤S2的指导下进行内存页面的分配工作,并以内存位图的方式记录下来内存页面分配信息;将内存位图传输至宿主机Qemu模拟器的虚拟队列,并通知宿主机Qemu模拟器接收虚拟队列中的内存位图。
S4:宿主机根据该内存位图,控制源客户机不断地循环迁移非保留的内存页面至目的客户机的目的虚拟机。
具体而言,所述步骤S4包括:所述宿主机Qemu模拟器根据内存位图信息控制虚拟机的迁移过程;所述源客户机通过多次循环将非保留页面传输到目的客户机。
S5:迁移完毕,启用目的虚拟机,目的虚拟机释放保留内存页面。
具体而言,所述步骤S5包括:当迁移完毕时,启用目的虚拟机,替代源客户机中的源虚拟机对外提供服务;所述目的虚拟机释放保留的内存页面,恢复内存页面的正常使用。
图3是本发明实施例所述使用Virtio驱动分配保留页面的流程图,该流程包括以下步骤:
步骤S30,计算内存页面总数。
步骤S31,为位图数据(如内存位图)分配内存。
步骤S32,接收迁移指令,包括页面分配指令与页面释放指令。如果是页面分配指令,执行步骤S331至步骤S334;如果是页面释放指令,执行步骤S335至步骤S338。
步骤S331,控制内存页面迁移开始。
步骤S332,分配内存页面。
步骤S333,标记内存位图。其中,步骤S332与步骤S333需要循环执行,直至步骤S334,内存页面分配完毕。
步骤S335,控制内存页面迁移结束。
步骤S336,释放内存页面。
步骤S337,清除内存位图。其中,步骤S336与步骤S337需要循环执行,直至步骤S338,内存页面释放完毕。
其中主循环的主要任务是当宿主机发出迁移指令时,除保留一小部分空闲内存供系统使用外逐渐分配尽可能多的内存并以位图的形式进行标记,再把内存分配的位图传回给宿主机Qemu供迁移时参考使用。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

基于VIRTIO驱动进行虚拟机内存在线迁移的方法.pdf_第1页
第1页 / 共9页
基于VIRTIO驱动进行虚拟机内存在线迁移的方法.pdf_第2页
第2页 / 共9页
基于VIRTIO驱动进行虚拟机内存在线迁移的方法.pdf_第3页
第3页 / 共9页
点击查看更多>>
资源描述

《基于VIRTIO驱动进行虚拟机内存在线迁移的方法.pdf》由会员分享,可在线阅读,更多相关《基于VIRTIO驱动进行虚拟机内存在线迁移的方法.pdf(9页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103677955 A (43)申请公布日 2014.03.26 CN 103677955 A (21)申请号 201310647925.0 (22)申请日 2013.12.04 G06F 9/455(2006.01) (71)申请人 深圳清华大学研究院 地址 518057 广东省深圳市南山区高新技术 产业园南区深圳清华大学研究院大楼 A302 室 (72)发明人 武永卫 陈康 郑纬民 吴之豪 (74)专利代理机构 深圳市鼎言知识产权代理有 限公司 44311 代理人 孔丽霞 (54) 发明名称 基于 Virtio 驱动进行虚拟机内存在线迁移 的方法 (57) 摘要 。

2、本发明公开了一种基于 Virtio 驱动进行虚 拟机内存在线迁移的方法, 主要涉及虚拟机虚拟 化领域。该方法包括 : 修改虚拟机管理器后台驱 动以指导客户机的内存迁移 ; 编写客户机 Virtio 驱动以分配保留页面 ; 参考内存位图进行非保留 页面的循环迁移。本发明将半虚拟化技术应用于 虚拟机的迁移当中, 通过虚拟机内存的实际使用 情况动态地进行内存迁移, 相对于传统虚拟机迁 移方法, 能够大大降低虚拟机的内存迁移时间和 开销, 提高迁移效率。 (51)Int.Cl. 权利要求书 1 页 说明书 4 页 附图 3 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页。

3、 说明书4页 附图3页 (10)申请公布号 CN 103677955 A CN 103677955 A 1/1 页 2 1. 一种基于 Virtio 驱动进行虚拟机内存在线迁移的方法, 其特征在于, 所述方法包括 以下步骤 : S1 : 宿主机使用 Qemu 模拟器模拟 PCI 设备, 进行迁移初始化 ; S2 : 宿主机通过保留页面设置函数向 PCI 配置空间写需要保留的内存页面数, 源客户 机通过保留页面获取函数从 PCI 配置空间中获得需要保留的内存页面数 ; S3 : 源客户机根据需要保留的内存页面数, 分配保留内存页面, 同时以内存位图的方式 记录下来内存页面分配信息, 并将内存位图。

4、传输至宿主机 ; S4 : 宿主机根据该内存位图, 控制源客户机循环迁移非保留的内存页面至目的客户机 的目的虚拟机 ; 及 S5 : 当迁移完毕时, 启用目的虚拟机, 目的虚拟机释放保留内存页面。 2. 如权利要求 1 所述的基于 Virtio 驱动进行虚拟机内存在线迁移的方法, 其特征在 于, 所述步骤 S1 包括 : 所述宿主机使用 Qemu 模拟器模拟 PCI 设备, 并进行 PCI 配置空间初始化 ; 所述宿主机使用 Qemu 模拟器添加虚拟队列, 设置虚拟队列的处理回调函数 ; 及 使用初始化函数做 Virtio 驱动初始化。 3. 如权利要求 1 所述的基于 Virtio 驱动进行。

5、虚拟机内存在线迁移的方法, 其特征在 于, 所述步骤 S2 包括 : 所述宿主机通过保留页面设置函数向 PCI 配置空间中写入需要保留的内存页面数, 以 指导源客户机的页面分配工作 ; 所述源客户机通过保留页面获取函数从 PCI 配置空间中获得需要保留的内存页面数, 为步骤 S3 做准备。 4. 如权利要求 1 所述的基于 Virtio 驱动进行虚拟机内存在线迁移的方法, 其特征在 于, 所述步骤 S3 包括 : 在步骤 S2 的指导下进行内存页面的分配工作, 并以内存位图的方式记录下来内存页 面分配信息 ; 将内存位图传输至宿主机 Qemu 模拟器的虚拟队列, 并通知宿主机 Qemu 模拟器。

6、接收虚 拟队列中的内存位图。 5. 如权利要求 1 所述的基于 Virtio 驱动进行虚拟机内存在线迁移的方法, 其特征在 于, 所述步骤 S4 包括 : 所述宿主机 Qemu 模拟器根据内存位图信息控制虚拟机的迁移过程 ; 所述源客户机通过多次循环将非保留页面传输到目的客户机。 6. 如权利要求 1 所述的基于 Virtio 驱动进行虚拟机内存在线迁移的方法, 其特征在 于, 所述步骤 S5 包括 : 当迁移完毕时, 启用目的虚拟机, 替代源客户机中的源虚拟机对外提供服务 ; 所述目的虚拟机释放保留的内存页面, 恢复内存页面的正常使用。 权 利 要 求 书 CN 103677955 A 2 。

7、1/4 页 3 基于 Virtio 驱动进行虚拟机内存在线迁移的方法 技术领域 0001 本发明涉及虚拟机虚拟化领域, 特别涉及一种采用 virtio 驱动进行虚拟机内存 在线迁移的方法。 背景技术 0002 虚拟机是指通过软件模拟的具有完整硬件系统功能的、 运行在一个完全隔离环境 中的完整计算机系统。 通过对计算资源的抽象, 屏蔽各种各样复杂的底层物理环境, 来实现 虚拟化。虚拟化技术分为以下三类 : 用户层的虚拟化, 基于操作系统的有硬件支持的虚拟 化, 直接操作管理硬件的虚拟化。 而不同的虚拟机使用不同的虚拟化技术, 如当前使用最为 广泛的 X86 虚拟机有 Vmware, Xen, K。

8、VM, 其中 KVM 是使用 Linux 内核的虚拟机, 它只能支持 有硬件支持的虚拟化, 而在用户层使用 Qemu 来实现。 0003 虚拟机的迁移技术是虚拟机虚拟化技术的一个研究热点, 流行的虚拟化解决方案 基本上都有对应的迁移技术, 虚拟机迁移分为P2V, P2P, V2V三种, 而这里讨论的KVM则是其 中的V2V(虚拟机迁移到虚拟机)。 虚拟机迁移主要工作为CPU状态的迁移, 内存的迁移, 块 设备迁移, 网络迁移这几个部分, 针对内存和块设备的迁移, KVM 采用了预拷贝技术。如何 缩短在线迁移的时间, 只用很短的停机时间使得用户尽可能的感觉不到, 是虚拟机在线迁 移技术需要解决的。

9、问题。 0004 当前内存在线迁移的实现通常采用预拷贝技术, 就是先把全部内存拷贝过去, 然 后再逐步把变化过的部分迁移过去, 直到估计剩余的页面可以在一个可接受的很短的时间 片内完成, 此时源虚拟机停机, 完成剩余的拷贝, 最后目的虚拟机开始运行。 0005 当前的内存在线迁移方案中, 具有一定的时间和带宽浪费。目前的虚拟机内存配 置一般都在一到几个 GB, 如果把全部内存页标记上并全部拷贝至目的机, 这样的效率很低。 其实这几个 GB 的内存空间中, 真正是系统占有的、 有用的空间所占比例往往很小, 这部分 的内存内容的拷贝占用了大量的时间和网络带宽。 发明内容 0006 (一) 要解决的。

10、技术问题 0007 本发明要解决的技术问题是 : 如何提供一种高效的虚拟机内存在线迁移方法, 从 而减少不必要的时间和带宽开销。 0008 (二) 技术方案 0009 为解决上述技术问题, 本发明提供一种基于 Virtio 驱动的虚拟机内存在线迁移 方法, 包括以下几个方面 : 0010 U1: 设计虚拟机管理器用户层 Qemu 的驱动, 工作在宿主机的用户态, 负责 Virtio pci 设备的模拟以及内存页面循环迁移过程的控制 ; 0011 U2: 设计源客户机 Virtio 驱动程序, 尽可能多地分配保留内存页面, 并以内存位 图形式记录下内存页面情况 ; 说 明 书 CN 103677。

11、955 A 3 2/4 页 4 0012 U3: 设计目的客户机的驱动程序, 使得循环迁移结束后, 启用目的虚拟机并释放保 留的内存页面。 0013 优选地, 在设计宿主机 U1 相关工作中, 包括以下几个方面 : 0014 U11 : 使用初始化函数 Virtio_migration_init, 做 virtio 驱动初始化, 分配虚拟 队列, 进行 PCI 配置空间初始化等 ; 0015 U12 : 设置分别用于处理读取和设置 PCI 配置空间的两个函数 virtio_migration_ get_config(保留页面获取函数) 和 virtio_migration_set_config。

12、(保留页面设置函数) , 用来指导客户机分配内存 ; 0016 U13 : 使用虚拟队列的函数 virtio_migration_handle_output 处理回调, 进行内 存位图的回调处理 ; 0017 U14 : 参考内存位图, 使用 arch_init.c 中的函数 ram_save_live 和 ram_save_ block 进行内存页面的循环迁移工作。 0018 优选地, 在设计源客户机 U2 相关工作中, 包括以下几个方面 : 0019 U21 : 定义Virtio_driver信息, 使用接口函数 (如register_virtio_driver函数) 将其注册为 Virt。

13、io 驱动, 并调用 virtballoon_probe 初始化函数进行初始化 ; 0020 U22 : 使用内核线程函数 vmigration 负责监视 PCI 设备配置空间预保留页面数的 变化, 当预保留页面数大于已保留页面数就会调用 fill_balloon(内存页面分配函数) 进 行页面分配, 当预保留页面数小于已保留页面数就会调用 leak_balloon(内存页面释放函 数) 进行页面释放 ; 0021 U23 : 如果是调用内存页面分配函数, 则使用 fill_balloon 函数分配内存页面, 将 分配得到的内存页面号保存在 vb-pages 链表中, 并置内存位图相应位为 1。

14、 ; 0022 U24 : 如果是调用内存页面释放函数, 则使用 leak_balloon 函数释放内存页面, 遍 历 vb-pages 链表删除每个内存页面, 并置内存位图相应位为 0 ; 0023 U25 : 使 用 接 口 函 数 unregister_virtio_driver 进 行 驱 动 的 移 除, 并 调 用 virtioballoon_remove(内存页面清除函数) 释放内存。 0024 优选地, 在设计目的客户机 U3 相关工作中, 包括以下几个方面 : 0025 U31 : 循环迁移完毕时, 启用目的虚拟机, 代替源虚拟机对外提供服务 ; 0026 U32 : 目的虚。

15、拟机释放保留的内存页面, 恢复内存页面的正常使用。 0027 (三) 有益效果 0028 本发明提供了一种基于 Virtio 驱动进行虚拟机在线迁移的方法, 其在内存页面 迁移方面使用保留页面方法, 经实验检验, 除了内存使用率极高、 已接近 100% 这个极端情 况以外, 使用 virtio 驱动的方法能很好的缩短虚拟机的在线迁移时间, 而且内存使用率越 低, 其迁移时间的改善效果就越明显。 附图说明 0029 图 1 是本发明实施例所述基于 Virtio 驱动进行虚拟机内存在线迁移的系统结构 图 ; 0030 图 2 是本发明实施例所述基于 Virtio 驱动进行虚拟机内存在线迁移的方法流。

16、程 图 ; 说 明 书 CN 103677955 A 4 3/4 页 5 0031 图 3 是本发明实施例所述使用 Virtio 驱动分配保留页面的流程图。 具体实施方式 0032 下面结合附图和实施例, 对本发明的具体实施方式作进一步详细描述。以下实施 例用于说明本发明, 但不用来限制本发明的范围。 0033 图 1 是本发明实施例所述基于 Virtio 驱动进行虚拟机内存在线迁移的系统结构 图, 如图 1 所述, 该系统结构包括以下几个方面 : 0034 U1(宿主机) , 执行以下功能 : 虚拟机管理器用户层 Qemu 的驱动, 工作在宿主机的 用户态, 负责 Virtio PCI 设备。

17、的模拟以及内存页面循环迁移过程的控制 ; 0035 U2(源客户机) , 执行以下功能 : 源客户机 Virtio 驱动程序, 尽可能多地分配保留 内存页面, 并以内存位图形式记录下内存页面情况 ; 0036 U3(目的客户机) , 执行以下功能 : 目的客户机的驱动程序, 使得循环迁移结束后, 启用目的虚拟机并释放保留的内存页面。 0037 本发明实施例的方法采用 Virtio 驱动的方式, 对虚拟机内存迁移进行改进, 减少 不必要的时间和带宽开销, 大大提升虚拟机迁移的效率。 0038 图 2 是本发明实施例所述基于 Virtio 驱动进行虚拟机内存在线迁移的迁移流程 图, 该流程包括以下。

18、步骤 : 0039 S1 : 宿主机使用 Qemu 模拟器模拟 PCI 设备, 进行迁移初始化, 源客户机启动 Virtio 驱动, 做好准备工作。 0040 具体而言, 所述步骤 S1 包括 : 所述宿主机使用 Qemu 模拟器模拟 PCI 设备, 并进行 PCI 配置空间初始化 ; 所述宿主机使用 Qemu 模拟器添加虚拟队列, 设置虚拟队列的处理回 调函数 ; 使用初始化函数做 Virtio 驱动初始化。 0041 S2 : 宿主机使用virto_migration_set_config函数 (保留页面设置函数) 向PCI配 置空间写需要保留的内存页面数, 源客户机通过 virtio_m。

19、igration_get_config 函数 (保 留页面获取函数) 从 PCI 配置空间中获得需要保留的内存页面数。 0042 具体而言, 所述步骤 S2 包括 : 所述宿主机通过保留页面设置函数 Virtio_ migration_set_config 向 PCI 配置空间中写入需要保留的内存页面数, 以指导源客户机 的页面分配工作 ; 所述源客户机通过保留页面获取函数 Virtio_migration_get_config 从 PCI 配置空间中获得需要保留的内存页面数, 为步骤 S3 做准备。 0043 S3 : 源客户机根据需要保留的内存页面数, 开始分配保留内存页面, 同时以内存位。

20、 图的方式记录下来内存页面分配信息, 随后将内存位图传输至宿主机。 0044 具体而言, 所述步骤 S3 包括 : 在步骤 S2 的指导下进行内存页面的分配工作, 并以 内存位图的方式记录下来内存页面分配信息 ; 将内存位图传输至宿主机 Qemu 模拟器的虚 拟队列, 并通知宿主机 Qemu 模拟器接收虚拟队列中的内存位图。 0045 S4 : 宿主机根据该内存位图, 控制源客户机不断地循环迁移非保留的内存页面至 目的客户机的目的虚拟机。 0046 具体而言, 所述步骤S4包括 : 所述宿主机Qemu模拟器根据内存位图信息控制虚拟 机的迁移过程 ; 所述源客户机通过多次循环将非保留页面传输到目。

21、的客户机。 0047 S5 : 迁移完毕, 启用目的虚拟机, 目的虚拟机释放保留内存页面。 说 明 书 CN 103677955 A 5 4/4 页 6 0048 具体而言, 所述步骤 S5 包括 : 当迁移完毕时, 启用目的虚拟机, 替代源客户机中的 源虚拟机对外提供服务 ; 所述目的虚拟机释放保留的内存页面, 恢复内存页面的正常使用。 0049 图3是本发明实施例所述使用Virtio驱动分配保留页面的流程图, 该流程包括以 下步骤 : 0050 步骤 S30, 计算内存页面总数。 0051 步骤 S31, 为位图数据 (如内存位图) 分配内存。 0052 步骤 S32, 接收迁移指令, 包。

22、括页面分配指令与页面释放指令。如果是页面分配指 令, 执行步骤 S331 至步骤 S334 ; 如果是页面释放指令, 执行步骤 S335 至步骤 S338。 0053 步骤 S331, 控制内存页面迁移开始。 0054 步骤 S332, 分配内存页面。 0055 步骤 S333, 标记内存位图。其中, 步骤 S332 与步骤 S333 需要循环执行, 直至步骤 S334, 内存页面分配完毕。 0056 步骤 S335, 控制内存页面迁移结束。 0057 步骤 S336, 释放内存页面。 0058 步骤 S337, 清除内存位图。其中, 步骤 S336 与步骤 S337 需要循环执行, 直至步骤。

23、 S338, 内存页面释放完毕。 0059 其中主循环的主要任务是当宿主机发出迁移指令时, 除保留一小部分空闲内存供 系统使用外逐渐分配尽可能多的内存并以位图的形式进行标记, 再把内存分配的位图传回 给宿主机 Qemu 供迁移时参考使用。 0060 以上实施方式仅用于说明本发明, 而并非对本发明的限制, 有关技术领域的普通 技术人员, 在不脱离本发明的精神和范围的情况下, 还可以做出各种变化和变型, 因此所有 等同的技术方案也属于本发明的范畴, 本发明的专利保护范围应由权利要求限定。 说 明 书 CN 103677955 A 6 1/3 页 7 图 1 说 明 书 附 图 CN 103677955 A 7 2/3 页 8 图 2 说 明 书 附 图 CN 103677955 A 8 3/3 页 9 图 3 说 明 书 附 图 CN 103677955 A 9 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1