在线升级机器虚拟器的方法与设备技术

技术编号:14369250 阅读:35 留言:0更新日期:2017-01-09 14:57
本发明专利技术的目的是提供一种在线升级机器虚拟器的方法与设备,所述方法与设备通过申请一指定内存,该指定内存用于保存虚拟机的内存地址和状态信息,且该指定内存在更新机器虚拟器中不被释放,则在机器虚拟器升级之后,所述虚拟机的状态信息可以直接从该指定内存中恢复,从而加快了恢复速度、缩短了升级时间,并且将所述指定内存的地址作为新增参数传入所述机器虚拟器,从而实现了机器虚拟器的在线升级(热升级)。此外,通过在机器虚拟器更新过程中,利用执行模块更新机器虚拟器的可执行文件来实现机器虚拟器原地(即进程ID不变)在线升级,能够使升级时间控制在100ms~200ms左右,做到用户无感知,进而提高用户的使用体验。

【技术实现步骤摘要】

本专利技术涉及计算机领域,尤其涉及一种在线升级机器虚拟器的技术。
技术介绍
在KVM(Kernel-basedVirtualMachine,基于内核虚拟机)虚拟化中,QEMU(机器虚拟器)是运行在主机(Host,例如Linux)上的进程,因此相当于虚拟机的容器。其中,在一个主机上可以运行一个或多个QEMU进程,虚拟机的每个VCPU(VirtualCPU,虚拟中央处理器)对应QEMU进程的一个线程。QEMU进程在主机上申请虚拟机所使用的内存,同时QEMU还负责虚拟机设备(如网卡、鼠标、磁盘等)的模拟,所以QEMU是KVM虚拟化中非常重要的组件。在KVM虚拟化下热升级(即在不关闭虚拟机的情况下在线升级)QEMU组件,使得QEMU组件的快速迭代变得可能,以便于引入新特性、修复漏洞等。然而QEMU组件热升级一直是业界难题,目前业界还没有QEMU热升级技术,最接近的现有方案是热迁移技术。在KVM虚拟化中,热迁移是比较成熟的技术,其中,热迁移指在不关机的情况下将一台虚拟机从一台物理机迁移到另一台物理机。若要升级QEMU,可以通过将虚拟机进行一次本机到本机的迁移,迁移目的虚拟机使用升级过的QEMU,这样热迁移完成后,QEMU就得到了升级。利用热迁移技术方案升级QEMU组件存在不少缺陷。第一,该方案需要拷贝内存,目前的热迁移中拷贝内存分为两个步骤:(1)迭代地拷贝源虚拟机内存“脏页”(指没拷贝到目的虚拟机或者在拷贝到目的虚拟机后又被源虚拟机修改过的内存页)到目的虚拟机,直到剩余脏页数小于一定值;(2)暂停虚拟机,将剩余“脏页”拷贝到目的虚拟机。如果虚拟机中内存压力很大,不断产生新的脏页,第一步可能收敛不了,热迁移时间就会很长或者失败。第二,热迁移完成后QEMU进程的ID会改变,这可能会造成一些不必要的麻烦,比如虚拟机物理CPU利用率(即QEMU进程的CPU利用率)监控工具,在QEMU进程ID变过后,虚拟机名和QEMU进程ID对应关系也改变了,工具中必须要考虑这种情况。第三,libvirt(一款主流的虚拟化功能和虚拟机管理软件)不支持本地到本地的热迁移(尽管QEMU本身支持),需要对libvirt进行较大的修改以使其支持本地到本地的热迁移。由此可见,使用现有技术方案升级QEMU组件成功率不高,会给开发者带来不少麻烦,且升级时间长,影响用户体验。
技术实现思路
本申请的一个目的是提供一种在线升级机器虚拟器的方法与设备。根据本申请的一个方面,提供了一种在线升级机器虚拟器的方法,其中,所述方法包括:申请一指定内存,所述指定内存在更新机器虚拟器时不被释放;暂停虚拟机运行,并将所述虚拟机的相关信息保存至所述指定内存中;对机器虚拟器进行升级,并将所述指定内存的地址作为新增参数传入所述机器虚拟器中;以及恢复所述虚拟机的状态信息,并恢复所述虚拟机运行。进一步地,所述虚拟机的相关信息包括:所述虚拟机的状态信息、所述虚拟机内存地址信息以及所述虚拟机显存地址信息。进一步地,申请一指定内存,所述指定内存在更新机器虚拟器时不被释放包括:对主机的内核进行修改,使之支持在更新机器虚拟机时不释放内存的功能;以及将要更新机器虚拟器时,申请一块指定内存,所述指定内存在更新机器虚拟器时不被释放。进一步地,所述方法还包括:在暂停所述虚拟机运行之后及保存所述虚拟机的相关信息之前,将当前机器虚拟器模拟的块设备中未写入磁盘的内容写入磁盘。进一步地,所述虚拟机的状态信息包括:所述机器虚拟器所模拟的所有需要保存状态的设备的当前的状态信息。进一步地,需要保存状态的设备包括鼠标、键盘、cpu、串口及磁盘设备中的任一种或任其组合。进一步地,对机器虚拟器进行升级包括:利用执行模块更新所述机器虚拟器可执行程序和所有参数,并增加一个所述指定内存的地址参数。进一步地,所述方法还包括:在对所述机器虚拟器升级之后,运行升级后的所述机器虚拟器。进一步地,所述运行升级后的所述机器虚拟器包括:对所述升级后的机器虚拟器进行初始化,以及为所述虚拟机申请内存时,用所述指定内存中保存的虚拟机内存地址。进一步地,恢复所述虚拟机的状态信息包括:从所述指定内存中恢复所述虚拟机的状态信息。进一步地,所述方法还包括:在恢复所述虚拟机运行之后,释放所述指定内存。根据本申请的另一方面,还提供了一种在线升级机器虚拟器的设备,其中,所述设备包括:第一装置,用于申请一指定内存,所述指定内存在更新机器虚拟器时不被释放;第二装置,用于暂停虚拟机运行,并将所述虚拟机的相关信息保存至所述指定内存中;第三装置,用于对机器虚拟器进行升级,并将所述指定内存的地址作为新增参数传入所述机器虚拟器中;以及第四装置,用于恢复所述虚拟机的状态信息,并恢复所述虚拟机运行。进一步地,所述虚拟机的相关信息包括:所述虚拟机的状态信息、所述虚拟机内存地址信息以及所述虚拟机显存地址信息。进一步地,所述第一装置包括:第一单元,用于对主机的内核进行修改,使之支持在更新机器虚拟机时不释放内存的功能;以及第二单元,用于将要更新机器虚拟器时,申请一块指定内存,所述指定内存在更新机器虚拟器时不被释放。进一步地,所述第二装置包括:第三单元,用于在暂停所述虚拟机运行之后及保存所述虚拟机的相关信息之前,将当前机器虚拟器模拟的块设备中未写入磁盘的内容写入磁盘。进一步地,所述虚拟机的状态信息包括:所述机器虚拟器所模拟的所有需要保存状态的设备的当前的状态信息。进一步地,需要保存状态的设备包括鼠标、键盘、cpu、串口及磁盘设备中的任一种或任其组合。进一步地,所述第三装置包括:第四单元,用于利用执行模块更新所述机器虚拟器可执行程序和所有参数,并增加一个所述指定内存的地址参数。进一步地,所述设备还包括:第五装置,用于在对所述机器虚拟器升级之后,运行升级后的所述机器虚拟器。进一步地,所述第五装置包括:第五单元,用于对所述升级后的机器虚拟器进行初始化,以及为所述虚拟机申请内存时,用所述指定内存中保存的虚拟机内存地址。进一步地,所述第四装置包括:第六单元,用于从所述指定内存中恢复所述虚拟机的状态信息。进一步地,所述设备还包括:第六装置,用于在恢复所述虚拟机运行之后,释放所述指定内存。与现有技术相比,本申请的一个实施例通过申请一指定内存,该指定内存用于保存虚拟机的内存地址和状态信息,且该指定内存在更新机器虚拟器中不被释放,则在机器虚拟器升级之后,所述虚拟机的状态信息可以直接从该指定内存中恢复,从而加快了恢复速度、缩短了升级时间,并且将所述指定内存的地址作为新增参数传入所述机器虚拟器,从而实现了机器虚拟器的在线升级(热升级)。此外,通过在机器虚拟器更新过程中,利用执行模块更新机器虚拟器的可执行文件来实现机器虚拟器原地(即进程ID不变)在线升级,能够使升级时间控制在100ms~200ms左右,做到用户无感知,进而提高用户的使用体验。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:图1示出根据本申请一个方面的一个实施例的一种在线升级机器虚拟器的设备示意图;图2示出根据本申请一个方面的一个优选实施例的一种在线升级机器虚拟器的设备的第一装置示意图;图3示出根据本申请一个本文档来自技高网
...
在线升级机器虚拟器的方法与设备

【技术保护点】
一种在线升级机器虚拟器的方法,其中,所述方法包括:申请一指定内存,所述指定内存在更新机器虚拟器时不被释放;暂停虚拟机运行,并将所述虚拟机的相关信息保存至所述指定内存中;对机器虚拟器进行升级,并将所述指定内存的地址作为新增参数传入所述机器虚拟器中;以及恢复所述虚拟机的状态信息,并恢复所述虚拟机运行。

【技术特征摘要】
1.一种在线升级机器虚拟器的方法,其中,所述方法包括:申请一指定内存,所述指定内存在更新机器虚拟器时不被释放;暂停虚拟机运行,并将所述虚拟机的相关信息保存至所述指定内存中;对机器虚拟器进行升级,并将所述指定内存的地址作为新增参数传入所述机器虚拟器中;以及恢复所述虚拟机的状态信息,并恢复所述虚拟机运行。2.根据权利要求1所述的方法,其中,所述虚拟机的相关信息包括:所述虚拟机的状态信息、所述虚拟机内存地址信息以及所述虚拟机显存地址信息。3.根据权利要求1或2所述的方法,其中,申请一指定内存,所述指定内存在更新机器虚拟器时不被释放包括:对主机的内核进行修改,使之支持在更新机器虚拟机时不释放内存的功能;以及将要更新机器虚拟器时,申请一块指定内存,所述指定内存在更新机器虚拟器时不被释放。4.根据权利要求1至3所述的方法,其中,所述方法还包括:在暂停所述虚拟机运行之后及保存所述虚拟机的相关信息之前,将当前机器虚拟器模拟的块设备中未写入磁盘的内容写入磁盘。5.根据权利要求1至4中任一项所述的方法,其中,所述虚拟机的状态信息包括:所述机器虚拟器所模拟的所有需要保存状态的设备的当前的状态信息。6.根据权利要求5所述的方法,其中,需要保存状态的设备包括鼠标、键盘、cpu、串口及磁盘设备中的任一种或任其组合。7.根据权利要求1至6中任一项所述的方法,其中,对机器虚拟器进行升级包括:利用执行模块更新所述机器虚拟器可执行程序和所有参数,并增加一个所述指定内存的地址参数。8.根据权利要求1至7中任一项所述的方法,其中,所述方法还包括:在对所述机器虚拟器升级之后,运行升级后的所述机器虚拟器。9.根据权利要求1至8中任一项所述的方法,其中,所述运行升级后的所述机器虚拟器包括:对所述升级后的机器虚拟器进行初始化,以及为所述虚拟机申请内存时,用所述指定内存中保存的虚拟机内存地址。10.根据权利要求1至9中任一项所述的方法,其中,恢复所述虚拟机的状态信息包括:从所述指定内存中恢复所述虚拟机的状态信息。11.根据权利要求1至10中任一项所述的方法,其中,所述方法还包括:在恢复所述虚拟机运行之后,释放所述指定内存。12.一种在线升级机器虚拟器的设备,其中,所述设备包括:第一装置,用于申请一...

【专利技术属性】
技术研发人员:张献涛傅俊康
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1