基于Virtio驱动进行虚拟机内存在线迁移的方法技术

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

【技术实现步骤摘要】
基于Virtio驱动进行虚拟机内存在线迁移的方法
本专利技术涉及虚拟机虚拟化领域,特别涉及一种采用virtio驱动进行虚拟机内存在线迁移的方法。
技术介绍
虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过对计算资源的抽象,屏蔽各种各样复杂的底层物理环境,来实现虚拟化。虚拟化技术分为以下三类:用户层的虚拟化,基于操作系统的有硬件支持的虚拟化,直接操作管理硬件的虚拟化。而不同的虚拟机使用不同的虚拟化技术,如当前使用最为广泛的X86虚拟机有Vmware,Xen,KVM,其中KVM是使用Linux内核的虚拟机,它只能支持有硬件支持的虚拟化,而在用户层使用Qemu来实现。虚拟机的迁移技术是虚拟机虚拟化技术的一个研究热点,流行的虚拟化解决方案基本上都有对应的迁移技术,虚拟机迁移分为P2V,P2P,V2V三种,而这里讨论的KVM则是其中的V2V(虚拟机迁移到虚拟机)。虚拟机迁移主要工作为CPU状态的迁移,内存的迁移,块设备迁移,网络迁移这几个部分,针对内存和块设备的迁移,KVM采用了预拷贝技术。如何缩短在线迁移的时间,只用很短的停机时间使得用户尽可能的感觉不到,是虚拟机在线迁移技术需要解决的问题。当前内存在线迁移的实现通常采用预拷贝技术,就是先把全部内存拷贝过去,然后再逐步把变化过的部分迁移过去,直到估计剩余的页面可以在一个可接受的很短的时间片内完成,此时源虚拟机停机,完成剩余的拷贝,最后目的虚拟机开始运行。当前的内存在线迁移方案中,具有一定的时间和带宽浪费。目前的虚拟机内存配置一般都在一到几个GB,如果把全部内存页标记上并全部拷贝至目的机,这样的效率很低。其实这几个GB的内存空间中,真正是系统占有的、有用的空间所占比例往往很小,这部分的内存内容的拷贝占用了大量的时间和网络带宽。
技术实现思路
(一)要解决的技术问题本专利技术要解决的技术问题是:如何提供一种高效的虚拟机内存在线迁移方法,从而减少不必要的时间和带宽开销。(二)技术方案为解决上述技术问题,本专利技术提供一种基于Virtio驱动的虚拟机内存在线迁移方法,包括以下几个方面:U1:设计虚拟机管理器用户层Qemu的驱动,工作在宿主机的用户态,负责Virtiopci设备的模拟以及内存页面循环迁移过程的控制;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的驱动,工作在宿主机的用户态,负责VirtioPCI设备的模拟以及内存页面循环迁移过程的控制;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驱动进行虚拟机内存在线迁移的方法

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

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

【专利技术属性】
技术研发人员:武永卫陈康郑纬民吴之豪
申请(专利权)人:深圳清华大学研究院
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1