首页 / 专利库 / 电脑编程 / 计算机虚拟化 / 一种升级虚拟化模拟器的方法和装置

一种升级虚拟化模拟器的方法和装置

阅读:146发布:2020-05-13

专利汇可以提供一种升级虚拟化模拟器的方法和装置专利检索,专利查询,专利分析的服务。并且本 申请 公开了一种升级虚拟化 模拟器 的方法和装置。该方法包括:在第一 虚拟机 正在基于旧版本虚拟化模拟器运行时,使用新版本虚拟化模拟器来启动第二虚拟机,其中,第二虚拟机具有与第一虚拟机相同的配置,然后,暂停第一虚拟机以及第二虚拟机,并将第一虚拟机的设备状态信息发送给第二虚拟机,以便于控制第二虚拟机能够基于第一虚拟机的设备状态信息恢复运行。可见,即使升级失败,由于第一虚拟机依然可以基于旧版本虚拟化模拟器恢复运行,因此,中断的虚拟机业务可以在第一虚拟机上恢复运行,从而可以避免升级不成功导致虚拟机终止运行以及虚拟机的业务被迫中断无法恢复运行的问题。,下面是一种升级虚拟化模拟器的方法和装置专利的具体信息内容。

1.一种升级虚拟化模拟器的方法,其特征在于,包括:
在第一虚拟机正在基于旧版本虚拟化模拟器运行时,安装新版本的虚拟化模拟器;
使用所述新版本虚拟化模拟器,启动第二虚拟机,所述第二虚拟机具有与所述第一虚拟机相同的配置信息;
暂停所述第一虚拟机和所述第二虚拟机;
将所述第一虚拟机的设备状态信息发送给所述第二虚拟机;
控制所述第二虚拟机基于所述设备状态信息恢复运行。
2.根据权利要求1所述的方法,其特征在于,还包括:
将所述第一虚拟机的虚拟设备的目标资源信息从所述第一虚拟机发送到所述第二虚拟机;
响应于为所述第二虚拟机创建第一虚拟设备的指令,在所述目标资源信息中查找所述第一虚拟设备的资源信息,并将查找到的所述资源信息作为所述第一虚拟设备的资源信息。
3.根据权利要求2所述的方法,其特征在于,还包括:
响应于为所述第二虚拟机创建第二虚拟设备的指令,在所述目标资源信息中查找所述第二虚拟设备的资源信息;
若查找不到,则为所述第二虚拟设备创建所述资源信息。
4.根据权利要求1所述的方法,其特征在于,还包括:
基于所述第一虚拟机的虚拟内存区域的标识信息,创建所述第二虚拟机的虚拟内存区域,其中,所述第二虚拟机的虚拟内存区域为所述第一虚拟机的虚拟内存区域。
5.根据权利要求4所述的方法,其特征在于,还包括:
响应于所述第二虚拟机与所述第一虚拟机共享所述虚拟内存区域的请求,以所述第一虚拟机的进程页表中所述虚拟内存区域对应的项生成所述第二虚拟机的进程页表中所述虚拟内存区域对应的项;
基于所述第二虚拟机的进程页表,为所述第二虚拟机的虚拟内存区域建立反向映射信息。
6.根据权利要求5所述的方法,其特征在于,所述以所述第一虚拟机的进程页表中所述虚拟内存区域对应的项生成所述第二虚拟机的进程页表中所述虚拟内存区域对应的项,包括:
将所述第一虚拟机的页全局目录PGD页表中所述虚拟内存区域对应的项复制到所述第二虚拟机的PGD页表中所述虚拟内存区域对应的项;
将所述第二虚拟机的PGD页表中所述虚拟内存区域对应的项指向的下级页表的引用计数加1。
7.根据权利要求4-6中任一项所述的方法,其特征在于,所述标识信息包括所述虚拟内存区域的起始地址和大小。
8.根据权利要求1所述的方法,其特征在于,还包括:
获取所述第一虚拟机的扩展页表EPT基地址;
依据所述第一虚拟机的EPT基地址设置所述第二虚拟机的EPT基地址。
9.一种升级虚拟化模拟器的装置,其特征在于,包括:
安装单元,用于在第一虚拟机正在基于旧版本虚拟化模拟器运行时,安装新版本的虚拟化模拟器;
启动单元,用于使用所述新版本虚拟化模拟器,启动第二虚拟机,所述第二虚拟机具有与所述第一虚拟机相同的配置信息;
暂停单元,用于暂停所述第一虚拟机和所述第二虚拟机;
第一发送单元,用于将所述第一虚拟机的设备状态信息发送给所述第二虚拟机;
控制单元,用于控制所述第二虚拟机基于所述设备状态信息恢复运行。
10.根据权利要求9所述的装置,其特征在于,还包括:
第二发送单元,用于将所述第一虚拟机的虚拟设备的目标资源信息从所述第一虚拟机发送到所述第二虚拟机;
第一查找单元,用于响应于为所述第二虚拟机创建第一虚拟设备的指令,在所述目标资源信息中查找所述第一虚拟设备的资源信息,并将查找到的所述资源信息作为所述第一虚拟设备的资源信息。
11.根据权利要求10所述的装置,其特征在于,还包括:
第二查找单元,用于响应于为所述第二虚拟机创建第二虚拟设备的指令,在所述目标资源信息中查找所述第二虚拟设备的资源信息;
第一创建单元,用于若查找不到,则为所述第二虚拟设备创建所述资源信息。
12.根据权利要求9所述的装置,其特征在于,还包括:
第二创建单元,用于基于所述第一虚拟机的虚拟内存区域的标识信息,创建所述第二虚拟机的虚拟内存区域,其中,所述第二虚拟机的虚拟内存区域为所述第一虚拟机的虚拟内存区域。
13.根据权利要求12所述的装置,其特征在于,还包括:
生成单元,用于响应于所述第二虚拟机与所述第一虚拟机共享所述虚拟内存区域的请求,以所述第一虚拟机的进程页表中所述虚拟内存区域对应的项生成所述第二虚拟机的进程页表中所述虚拟内存区域对应的项;
建立单元,用于基于所述第二虚拟机的进程页表,为所述第二虚拟机的虚拟内存区域建立反向映射信息。
14.根据权利要求13所述的装置,其特征在于,所述生成单元,包括:
复制子单元,用于将所述第一虚拟机的页全局目录PGD页表中所述虚拟内存区域对应的项复制到所述第二虚拟机的PGD页表中所述虚拟内存区域对应的项;
增值子单元,用于将所述第二虚拟机的PGD页表中所述虚拟内存区域对应的项指向的下级页表的引用计数加1。
15.根据权利要求12-14中任一项所述的装置,其特征在于,所述标识信息包括所述虚拟内存区域的起始地址和大小。
16.根据权利要求9所述的装置,其特征在于,还包括:
获取单元,用于获取所述第一虚拟机的扩展页表EPT基地址;
设置单元,用于依据所述第一虚拟机的EPT基地址设置所述第二虚拟机的EPT基地址。
17.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得所述计算机或处理器执行所述权利要求1至8中任一项所述的方法。
18.一种包含指令的计算机程序产品,当其在计算机或处理器上运行时,使得所述计算机或处理器执行所述权利要求1至8中任一项所述的方法。

说明书全文

一种升级虚拟化模拟器的方法和装置

技术领域

[0001] 本申请涉及虚拟化领域,特别是涉及一种升级虚拟化模拟器的方法和装置。

背景技术

[0002] 在基于核心的虚拟机(Kernel-based Virtual Machine,KVM)技术中,通过快速模拟器(Quick Emulator,QEMU)等虚拟化模拟器,可以模拟出能够独立运行操作系统的虚拟机(Virtual Machine,VM)实例。具体地,在物理主机上,一个虚拟机实例对应一个虚拟化模拟器进程,该虚拟化模拟器进程可以在物理主机上申请该虚拟机所使用的内存并为该虚拟机模拟网卡、磁盘、串口、输入设备等虚拟设备。
[0003] 对于已经在线上运行的虚拟机实例来说,为了增强安全性、修复漏洞、优化源码级性能等目的,难以避免地需要对虚拟机的组件进行局部或整体的升级,也即,基于旧版本虚拟化模拟器进程运行的虚拟机需要升级成基于新版本虚拟化模拟器进程运行的虚拟机。为了使得虚拟机的业务不受影响,虚拟化模拟器可以在不关闭虚拟机的情况下在线升级。但是,在线升级虚拟化模拟器常常会出现升级不成功的情况,此时,基于新版本虚拟化模拟器进行运行的虚拟机无法正行运行,而基于新版本虚拟化模拟器进程运行的虚拟机又无法回退成基于旧版本虚拟化模拟器运行的虚拟机,从而导致虚拟机终止运行,造成虚拟机的业务被迫中断。发明内容
[0004] 本申请实施例所要解决的技术问题是,提供一种升级虚拟化模拟器的方法和装置,以使得在线升级虚拟化模拟器不成功的情况下基于新版本虚拟化模拟器进程运行的虚拟机可以回退成基于旧版本虚拟化模拟器运行的虚拟机,从而避免升级不成功导致虚拟机终止运行以及虚拟机的业务被迫中断。
[0005] 第一方面,本申请实施例提供了一种升级虚拟化模拟器的方法,包括:在第一虚拟机正在基于旧版本虚拟化模拟器运行时;使用新版本虚拟化模拟器,启动第二虚拟机,第二虚拟机具有与第一虚拟机相同的配置信息;暂停第一虚拟机和第二虚拟机;将第一虚拟机的设备状态信息发送给第二虚拟机;控制第二虚拟机基于设备状态信息恢复运行。
[0006] 如果第二虚拟机能够恢复运行,则表明此次热升级成功,第一虚拟机中断的虚拟机业务可以继续在第二虚拟机上运行;而如果第二虚拟机无法正常恢复运行,则表明此次热升级失败,虽然中断的虚拟机业务无法在第二虚拟机上继续运行,但是由于第一虚拟机依然可以基于旧版本虚拟化模拟器恢复运行,因此,中断的虚拟机业务可以在第一虚拟机上恢复运行,这意味着在热升级失败的情况下,运行同一虚拟机业务的虚拟机,可以由基于新版本虚拟化模拟器进行运行的虚拟机回退成基于旧版本虚拟化模拟器运行的虚拟机,从而避免升级不成功导致虚拟机终止运行以及虚拟机的业务被迫中断无法恢复运行的问题。
[0007] 结合第一方面,在第一方面的第一种可能的实现方式中,该方法还包括:将第一虚拟机的虚拟设备的目标资源信息从第一虚拟机发送到第二虚拟机;响应于为第二虚拟机创建第一虚拟设备的指令,在该目标资源信息中查找第一虚拟设备的资源信息,并将查找到的资源信息作为第一虚拟设备的资源信息。
[0008] 在该实现方式中,第二虚拟机还可以获得第一虚拟机的虚拟设备的目标资源信息,这样,第二虚拟机在创建虚拟设备时,对于目标资源信息中存在的资源信息可以直接利用可以不用再创建,从而减少了热升级过程中额外的资源消耗。
[0009] 结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实现方式中,该方法还包括:响应于为所述第二虚拟机创建第二虚拟设备的指令,在该目标资源信息中查找第二虚拟设备的资源信息;若查找不到,则为第二虚拟设备创建第二虚拟设备的资源信息。
[0010] 在该实现方式中,若查找不到第二虚拟设备的资源信息,则为了保证第二虚拟机能够具有该第二虚拟设备的资源信息,可以为第二虚拟机针对于该第二虚拟设备的资源信息进行创建。
[0011] 结合第一方面,在第一方面的第三种可能的实现方式中,该方法还包括:基于第一虚拟机的虚拟内存区域的标识信息,创建第二虚拟机的虚拟内存区域,其中,第二虚拟机的虚拟内存区域为第一虚拟机的虚拟内存区域。
[0012] 在该实现方式中,通过根据第一虚拟机的虚拟内存区域的标识信息,为第二虚拟机创建相应的虚拟内存区域,可以使得第一虚拟机与第二虚拟机可以共享同一个虚拟内存区域,从而无需为第二虚拟机再开辟新的虚拟内存区域,减少了热升级过程中的开销。
[0013] 结合第一方面的第三种可能的实施方式,在第一方面的第四种可能的实现方式中,该方法还包括:响应于第二虚拟机与第一虚拟机共享虚拟内存区域的请求,以第一虚拟机的进程页表中该虚拟内存区域对应的项生成第二虚拟机的进程页表中该虚拟内存区域对应的项;基于第二虚拟机的进程页表,为第二虚拟机的虚拟内存区域建立反向映射信息。
[0014] 在该实现方式中,第一虚拟机的虚拟内存区域可以在20微秒以内实现与第二虚拟机的共享,而且,通过增加相关进程页表的引用技术,即使第二虚拟机无法成功恢复运行或者其它原因而导致热升级失败,第一虚拟机的进程页表也不会被释放掉,第一虚拟机依然可以正常恢复运行,从而使得在第一虚拟机上中断的虚拟机业务能够继续运行。
[0015] 结合第一方面的第四种可能的实施方式,在第一方面的第五种可能的实现方式中,所述以第一虚拟机的进程页表中虚拟内存区域对应的项生成第二虚拟机的进程页表中虚拟内存区域对应的项,包括:将第一虚拟机的页全局目录PGD页表中虚拟内存区域对应的项复制到第二虚拟机的PGD页表中所述虚拟内存区域对应的项;将第二虚拟机的PGD页表中该虚拟内存区域对应的项指向的下级页表的引用计数加1。
[0016] 在该实现方式中,通过将第二虚拟机的PGD页表中虚拟内存区域对应的项所指向的下级页表的引用计数加1。这样,当第一虚拟机关闭时,第一虚拟机的进程页表中的PUD页表、PMD页表以及PT页表不会被释放掉,从而使得第二虚拟机的逻辑地址可以映射到第一虚拟机的虚拟内存区域所对应的物理地址,也即第二虚拟机可以访问第一虚拟机的虚拟内存区域中的内存资源,以此可以实现第二虚拟机共享第一虚拟机的虚拟内存区域。
[0017] 结合第一方面的第三种至第五种中任一种可能的实施方式,在第一方面的第六种可能的实现方式中,标识信息包括虚拟内存区域的起始地址和大小。
[0018] 结合第一方面的第六种可能的实施方式,在第一方面的第七种可能的实现方式中,该方法还包括:获取第一虚拟机的扩展页表EPT基地址;依据第一虚拟机的EPT基地址设置第二虚拟机的EPT基地址。
[0019] 在该实现方式中,通过将第一虚拟机的EPT页表基地址,设置为自身的EPT页表基地址,可以实现第一虚拟机的EPT页表对于第二虚拟机的共享,这样,在对虚拟化模拟器进行热升级后,第二虚拟机不需要重新创建EPT页表,从而可以避免创建EPT页表而造成的EPT violation异常,进而可以保证热升级后一段时间内第二虚拟机的内存访问性能不会下降,减少了由热升级而导致的虚拟机业务性能波动
[0020] 在一些可能的实现方式中,所述暂停第一虚拟机和第二虚拟机,具体可以是在第二虚拟机的初始化设置完成之后,暂停第一虚拟机和第二虚拟机。
[0021] 在一些可能的实现方式中,在控制第二虚拟机基于设备状态信息恢复运行时,还可以关闭第一虚拟机。
[0022] 第二方面,本申请实施例还提供了一种升级虚拟化模拟器的装置,该装置包括:安装单元,用于在第一虚拟机正在基于旧版本虚拟化模拟器运行时,安装新版本的虚拟化模拟器;启动单元,用于使用所述新版本虚拟化模拟器,启动第二虚拟机,所述第二虚拟机具有与所述第一虚拟机相同的配置信息;暂停单元,用于暂停所述第一虚拟机和所述第二虚拟机;第一发送单元,用于将所述第一虚拟机的设备状态信息发送给所述第二虚拟机;控制单元,用于控制所述第二虚拟机基于所述设备状态信息恢复运行。
[0023] 结合第二方面,在第二方面的第一种可能的实现方式中,该装置还包括:第二发送单元,用于将所述第一虚拟机的虚拟设备的目标资源信息从所述第一虚拟机发送到所述第二虚拟机;第一查找单元,用于响应于为所述第二虚拟机创建第一虚拟设备的指令,在所述目标资源信息中查找所述第一虚拟设备的资源信息,并将查找到的所述资源信息作为所述第一虚拟设备的资源信息。
[0024] 结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实现方式中,该装置还包括:第二查找单元,用于响应于为所述第二虚拟机创建第二虚拟设备的指令,在所述目标资源信息中查找所述第二虚拟设备的资源信息;第一创建单元,用于若查找不到,则为所述第二虚拟设备创建所述资源信息。
[0025] 结合第二方面,在第二方面的第三种可能的实现方式中,该装置还包括:第二创建单元,用于基于所述第一虚拟机的虚拟内存区域的标识信息,创建所述第二虚拟机的虚拟内存区域,其中,所述第二虚拟机的虚拟内存区域为所述第一虚拟机的虚拟内存区域。
[0026] 结合第二方面的第三种可能的实施方式,在第二方面的第四种可能的实现方式中,该装置还包括:生成单元,用于响应于所述第二虚拟机与所述第一虚拟机共享所述虚拟内存区域的请求,以所述第一虚拟机的进程页表中所述虚拟内存区域对应的项生成所述第二虚拟机的进程页表中所述虚拟内存区域对应的项;建立单元,用于基于所述第二虚拟机的进程页表,为所述第二虚拟机的虚拟内存区域建立反向映射信息。
[0027] 结合第二方面的第四种可能的实施方式,在第二方面的第五种可能的实现方式中,所述生成单元,包括:复制子单元,用于将所述第一虚拟机的页全局目录PGD页表中所述虚拟内存区域对应的项复制到所述第二虚拟机的PGD页表中所述虚拟内存区域对应的项;增值子单元,用于将所述第二虚拟机的PGD页表中所述虚拟内存区域对应的项指向的下级页表的引用计数加1。
[0028] 结合第二方面的第三种至第五种中任一种可能的实施方式,在第二方面的第六种可能的实现方式中,所述标识信息包括所述虚拟内存区域的起始地址和大小。
[0029] 结合第二方面的第六种可能的实施方式,在第二方面的第七种可能的实现方式中,该装置还包括:获取单元,用于获取所述第一虚拟机的扩展页表EPT基地址;设置单元,用于依据所述第一虚拟机的EPT基地址设置所述第二虚拟机的EPT基地址。
[0030] 第二方面提供的升级虚拟化模拟器的装置,对应于第一方面提供的升级虚拟化模拟器的方法,故第二方面提供的升级虚拟化模拟器的装置的各种可能的实施方式,可以参照第一方面提供的升级虚拟化模拟器的方法的各种可能的实施方式。
[0031] 第三方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得该计算机或处理器执行上述第一方面中任一种可能的设计中的方法。
[0032] 第四方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机或处理器上运行时,使得所述计算机或处理器执行上述第一方面中任一种可能的设计中的方法。
[0033] 在本申请实施例中,在第一虚拟机正在基于旧版本虚拟化模拟器运行时,即需要对虚拟化模拟器进行热升级时,可以安装新版本的虚拟化模拟器,使用新版本虚拟化模拟器来启动第二虚拟机,其中,第二虚拟机具有与第一虚拟机相同的配置,然后,可以暂停第一虚拟机以及第二虚拟机,并将第一虚拟机的设备状态信息发送给第二虚拟机,以便于控制第二虚拟机能够基于第一虚拟机的设备状态信息恢复运行。可见,第一虚拟机与第二虚拟机具有相同配置以及设备状态信息,因此,第一虚拟机上运行的虚拟机业务也可以在第二虚拟机上运行,如果第二虚拟机能够在暂停后恢复运行,则表明此次热升级成功,第一虚拟机中断的虚拟机业务可以继续在第二虚拟机上运行;而如果第二虚拟机未能够恢复运行,则表明此次热升级失败,虽然中断的虚拟机业务无法在第二虚拟机上继续运行,但是由于第一虚拟机依然基于旧版本虚拟化模拟器恢复运行,因此,中断的虚拟机业务可以在第一虚拟机上恢复运行,这意味着在热升级失败的情况下,运行同一虚拟机业务的虚拟机,可以由基于新版本虚拟化模拟器进行运行的虚拟机回退成基于旧版本虚拟化模拟器运行的虚拟机,从而避免升级不成功导致虚拟机终止运行以及虚拟机的业务被迫中断无法恢复运行的问题。附图说明
[0034] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0035] 图1为本申请实施例中一示例性应用场景示意图;
[0036] 图2为本申请实施例中一种升级虚拟化模拟器的方法流程示意图;
[0037] 图3为本申请实施例中另一种升级虚拟机模拟器的方法流程示意图;
[0038] 图4为本申请实施例中一示例性应用场景架构图;
[0039] 图5为本申请实施例中一示例性应用场景架构图;
[0040] 图6为本申请实施例中又一种升级虚拟机模拟器的方法流程示意图;
[0041] 图7为本申请实施例中再一种升级虚拟机模拟器的方法流程示意图;
[0042] 图8为本申请实施例中一示例性应用场景架构图;
[0043] 图9为本申请实施例中一种升级虚拟机模拟器的装置结构示意图;
[0044] 图10为本申请实施例中一种升级虚拟机模拟器的设备结构示意图。

具体实施方式

[0045] 热升级,即为在不关闭虚拟机实例的情况下在线对虚拟机的组件进行局部或者整体的升级,也是目前能够安全、高效、经济的解决公有集群大规模升级虚拟化模拟器的方法。发明人经过研究发现,在需要对虚拟机的虚拟化模拟器进行升级时,通常会先暂停基于旧版本虚拟化模拟器进行运行的虚拟机,同时,运行在该虚拟机上的虚拟机业务也会暂停运行,然后,再将该虚拟机上的虚拟化模拟器由旧版本升级至新版本,升级完成后,虚拟机业务在该虚拟机上恢复运行,此时,该虚拟机基于新版本虚拟化模拟器进行运行。而在热升级时,难免会出现虚拟机模拟器升级不成功的情况,如果升级失败,由于该虚拟机上的虚拟化模拟器已经由旧版本升级成新版本,而且,基于新版本虚拟化模拟器进行运行的虚拟机又无法正常运行,则基于新版本虚拟化模拟器进行运行的虚拟机无法回退成基于旧版本虚拟化模拟器进行运行的虚拟机,这就导致了虚拟机很可能会终止运行,以及造成虚拟机业务被迫中断而无法恢复运行。
[0046] 基于此,本申请实施例提供了一种升级虚拟化模拟器的方法,在第一虚拟机基于旧版本虚拟化模拟器进行运行的基础上,创建一个基于新版本模拟器进行运行的第二虚拟机,该第二虚拟机与第一虚拟机之间具有相同的配置以及设备状态信息,这样,在第二虚拟机成功运行后,在第一虚拟机上中断的虚拟机业务,可以在第二虚拟机上恢复运行,从而完成对虚拟化模拟器的升级;而且,即使热升级失败,虽然中断的虚拟机业务无法在第二虚拟机上继续运行,但是由于第一虚拟机依然可以基于旧版本虚拟化模拟器恢复运行,因此,中断的虚拟机业务可以在第一虚拟机上恢复运行,这意味着在热升级失败的情况下,运行同一虚拟机业务的虚拟机,可以由基于新版本虚拟化模拟器进行运行的虚拟机回退成基于旧版本虚拟化模拟器运行的虚拟机,从而避免升级不成功导致虚拟机终止运行以及虚拟机的业务被迫中断无法恢复运行的问题。
[0047] 举例来说,本申请实施例的场景之一,可以是应用到如图1所示的示例性的场景中。在该场景中,基于Linux系统的KVM宿主机(也即物理机)中可以包含两个虚拟机,分别为基于Linux客户机操作系统的虚拟机1以及基于Windows客户机操作系统的虚拟机2。KVM宿主机使用具有虚拟机扩展能的x86架构(x86with virtualization extension),并通过虚拟化模拟器模来模拟硬件行为,使得虚拟机1和虚拟机2能够在虚拟化模拟器模拟的环境中正常运行。
[0048] 在对虚拟机1上安装的旧版本虚拟化模拟器进行热升级之前,虚拟机业务运行在该虚拟机1上,当需要对虚拟机1上的虚拟化模拟器进行热升级时,KVM宿主机上的虚拟机监控器(virtual machine monitor,VMM)可以在KVM宿主机上安装新版本的虚拟化模拟器,然后,虚拟机监控器可以使用该新版本的虚拟化模拟器启动第二虚拟机,其中,所启动的第二虚拟机具有与第一虚拟机相同的配置信息;然后,虚拟机监控器可以暂停虚拟机1以及第二虚拟机,此时,虚拟机1上的虚拟机业务也会处于中断状态;接着,虚拟机监控器可以将虚拟机1的设备状态信息发送给第二虚拟机,并控制第二虚拟机基于该设备相关设备恢复运行。由于第二虚拟机是基于虚拟机1的设备状态信息恢复运行,因此,原先运行在虚拟机1上的虚拟机业务,可以在第二虚拟机上恢复运行,而且,即使热升级失败,虚拟机1恢复运行后,之前中断的虚拟机业务也可以继续在虚拟机1上恢复运行,从而使得运行虚拟机业务的虚拟机,可以从基于新版本虚拟化模拟器进行运行的虚拟机回退成基于旧版本虚拟化模拟器运行的虚拟机,进而可以避免升级不成功而导致的虚拟机终止运行以及虚拟机业务被迫中断的问题。
[0049] 可以理解的是,上述场景仅是本申请实施例提供的一个场景示例,本申请实施例并不限于此场景,比如,宿主机上可以包含2个以上的虚拟机、宿主机上各个虚拟机具有相同的操作系统等。
[0050] 为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0051] 参阅图2,图2示出了本申请实施例中一种升级虚拟化模拟器的方法流程示意图,该方法具体可以包括:
[0052] S201:在第一虚拟机正在基于旧版本虚拟化模拟器运行时,虚拟机监控器安装新版本的虚拟化模拟器。
[0053] 本实施例中,为了不影响当前运行在第一虚拟机中的虚拟机业务,可以采用热升级的方式对第一虚拟机所在宿主机上的虚拟机模拟器进行升级,并具体可以是由该宿主机上的虚拟机监控器控制虚拟机模拟器的升级。在第一虚拟机正在基于旧版本虚拟化模拟器运行时,虚拟机监控器可以在该宿主机的系统上安装新版本的虚拟化模拟器。这样,虚拟机业务在第一虚拟机上运行时,可以不受安装新版本虚拟化模拟器的影响,第一虚拟机可以不用暂停虚拟机业务来安装新版本虚拟化模拟器,从而可以减少热升级过程中,虚拟机业务的中断时间。在一些场景中,虚拟机监控器可以基于QEMU二进制包安装新版本的虚拟化模拟器。
[0054] S202:虚拟机监控器使用新版本虚拟化模拟器启动第二虚拟机,其中,第二虚拟机具有与第一虚拟机相同的配置信息。
[0055] 在一种示例性的实施方式中,在成功安装新版本的虚拟化模拟器后,虚拟机监控器使用新版本的虚拟化模拟器来启动第二虚拟机,同时,虚拟机监控器可以获取第一虚拟机的配置信息,并根据该配置信息,为第二虚拟机进行相应的配置,以使得第一虚拟机与第二虚拟机可以具有相同的配置。这样,保证了第一虚拟机上运行的虚拟机业务也可以在第二虚拟机上运行,从而使得在热升级后,中断的虚拟机业务可以在第二虚拟机上恢复运行。
[0056] 其中,第一虚拟机的配置信息,可以包括第一虚拟机的ID(identity,身份标识号码)、第一虚拟机的名称、所具有的虚拟设备等信息。
[0057] 通常情况下,第一虚拟机与第二虚拟机之间具有相同的配置,则,第一虚拟机和第二虚拟机可以在宿主机上使用相同的虚拟设备资源,比如,TAP(network tap,网络分流器)设备、Pty(pseudo-tty,虚拟终端)设备、VNC(virtual network computing,虚拟网络计算)端口、磁盘设备、串口设备等。
[0058] 值的注意的是,这些虚拟设备资源虽然可以被第一虚拟机和第二虚拟机共享,但是并没有被第一虚拟机以及第二虚拟机同时使用。具体的,本实施例中,在暂停第一虚拟机之前,这些虚拟设备资源是被第一虚拟机所使用,对于处于启动状态以及初始化设置状态的第二虚拟机,并不会使用这些虚拟设备资源,而在暂停第一虚拟机后,第一虚拟机通常也不会再使用这些虚拟设备资源。因此,第一虚拟机与第二虚拟机通常不会同时这些虚拟设备资源。
[0059] 需要说明的是,由于第一虚拟机与第二虚拟机均可以使用相同的虚拟设备资源,因此,在热升级过程中,虚拟机监控器无需再为第二虚拟机创建这些虚拟设备,从而可以避免热升级过程中创建这些额外的虚拟设备资源所造成的开销。
[0060] 在虚拟机监控器根据第一虚拟机的配置信息为第二虚拟机进行相应的配置后,第二虚拟机可以依据所能使用的虚拟设备进行初始化设置。
[0061] S203:虚拟机监控器暂停第一虚拟机和第二虚拟机。
[0062] 在一种示例性的实现方式中,可以是在第二虚拟机完成初始化设置后,虚拟机监控器暂停第一虚拟机以及第二虚拟机。此时,运行在第一虚拟机上的虚拟机业务因为第一虚拟机的暂停而发生中断。其中,对于第一虚拟机与第二虚拟机的暂停先后顺序,在此并不做限定。
[0063] 需要说明的是,上述实施方式中,是在虚拟机监控器成功安装新版本的虚拟化模拟器、对第二虚拟机进行配置以及第二虚拟机完成初始化设置后,才中断第一虚拟机上的虚拟机业务,而并非先中断第一虚拟机上的虚拟机业务才开始对虚拟化模拟器进行升级,这样的热升级方式中,在安装新版本的虚拟化模拟器以及对第二虚拟机进行配置和初始化设置时,虚拟机业务一直处于运行状态,也就减少了虚拟机业务的中断时间,进一步减少了热升级对虚拟机业务的影响。
[0064] 当然,实际应用中,在第二虚拟机完成初始化设置前,虚拟机监控器可以先暂停第一虚拟机,然后,在确定第二虚拟机完成初始化设置后,虚拟机监控器再暂停第二虚拟机。
[0065] S204:虚拟机监控器将第一虚拟机的设备状态信息发送给第二虚拟机。
[0066] 其中,第一虚拟机的设备状态信息,是指在第一虚拟机暂停时,第一虚拟机上与所暂停业务相关的虚拟设备的运行状态信息。比如,在暂停第一虚拟机时,第一虚拟机正在使用串口设备以及磁盘设备完成数据存储业务,则第一虚拟机的设备状态信息,可以表征第一虚拟机在暂停时刻对于串口设备以及磁盘设备正处于使用状态,而对于VNC端口、TAP设备等其余设备,并未使用。在一种示例中,第一虚拟机的设备状态信息可以是相关虚拟设备上与处理暂停业务相关联的寄存器中的具体值。
[0067] 值的注意的是,虚拟机业务在运行时,通常需要使用相应的虚拟设备来满足运行的需要,这就使得第一虚拟机的设备状态信息,可以反映运行在第一虚拟机上的虚拟机业务的运行情况。比如,对于数据保存的虚拟机业务,第一虚拟机通常需要使用相应的虚拟磁盘设备来对数据进行保存,在存储过程中,磁盘设备一直处于使用状态,而当暂停数据保存业务时,该设备状态信息不仅可以表征第一虚拟机在暂停时刻正在执行虚拟机业务,也可以表征该数据保存业务的存储进度。
[0068] 在一些可能的实施方式中,可以将第一虚拟机的设备状态信息通过Unix Socket共享通道发送给第二虚拟机。
[0069] S205:虚拟机监控器控制第二虚拟机基于第一虚拟机的设备状态信息恢复运行。
[0070] 可以理解,之前中断的虚拟机业务是运行在第一虚拟机上的,为使得之前中断的虚拟机业务能够在第二虚拟机上继续运行,可以控制第二虚拟机基于第一虚拟机的设备状态信息恢复运行,这样,第二虚拟机在恢复运行后,能够根据该设备状态信息,从虚拟机业务的中断处继续运行虚拟机业务。
[0071] 在进一步的实施方式中,若第二虚拟机能够恢复运行并且运行正常,则表明此次升级虚拟化模拟器成功,虚拟机业务运行时所在的虚拟机由基于旧版本虚拟化模拟器运行的第一虚拟机变成基于新版本虚拟化模拟器运行的第二虚拟机,中断的虚拟机业务可以在第二虚拟机上恢复运行,此时,第一虚拟机无需保持暂停状态,可关闭第一虚拟机;若第二虚拟机无法恢复运行或者运行失败,则表明此次升级虚拟化模拟器失败,但是,第一虚拟机可以基于旧版本的虚拟化模拟器继续运行,因此,中断的虚拟机业务依然可以在第一虚拟机上恢复运行,即运行虚拟机业务的虚拟机,可以从基于新版本虚拟化模拟器进行运行的虚拟机回退成基于旧版本虚拟化模拟器运行的虚拟机,进而可以避免升级不成功而导致的虚拟机终止运行以及虚拟机业务被迫中断而无法恢复运行的问题,此时,可以关闭第二虚拟机并结束此次对宿主机上虚拟化模拟器的升级,或者可以重新启动并配置第二虚拟机,以再次尝试对宿主机上虚拟化模拟器的升级。
[0072] 本实施例中,如果第二虚拟机能够恢复运行,则表明此次热升级成功,第一虚拟机中断的虚拟机业务可以继续在第二虚拟机上运行;如果第二虚拟机无法正常恢复运行,则表明此次热升级失败,虽然中断的虚拟机业务无法在第二虚拟机上继续运行,但是由于第一虚拟机依然基于旧版本虚拟化模拟器恢复运行,因此,中断的虚拟机业务可以在第一虚拟机上恢复运行,这意味着在热升级失败的情况下,运行同一虚拟机业务的虚拟机,可以由基于新版本虚拟化模拟器进行运行的虚拟机回退成基于旧版本虚拟化模拟器运行的虚拟机,从而避免升级不成功导致虚拟机终止运行以及虚拟机的业务被迫中断无法恢复运行的问题。
[0073] 实际应用中,一个虚拟机实例对应着一个虚拟化模拟器进程,而在QEMU虚拟机中,通常是以进程文件句柄方式对多种虚拟设备资源进行管理与访问,比如,在基于Linux系统的虚拟机中,会为虚拟化模拟器进程配备一张文件句柄表,以记录该进程所拥有的文件句柄资源等资源信息。因此,在热升级过程中,还可以将第一虚拟机的虚拟设备的资源信息发送至第二虚拟机,以便于第二虚拟机进行初始化设置。具体的,参见图3,图3示出了本申请实施例中另一种升级虚拟化模拟器的方法流程示意图。与上一实施例不同的是,在本实施例中,为了便于第二虚拟机的初始化设置,在热升级过程中,还将第一虚拟机的虚拟设备的资源信息发送给第二虚拟机。该方法具体可以包括:
[0074] S301:在第一虚拟机正在基于旧版本虚拟化模拟器运行时,虚拟机监控器安装新版本的虚拟化模拟器。
[0075] 本实施例中,同样是在不关闭第一虚拟机示例的情况下,对宿主机上的虚拟化模拟器进行在线升级。在一些可能的实施方式中,可以在宿主机的系统中安装新版本虚拟化模拟器的二进制包。
[0076] S302:虚拟机监控器使用新版本虚拟化模拟器启动第二虚拟机,其中,第二虚拟机具有与第一虚拟机相同的配置信息。
[0077] 实际应用中,宿主机上的虚拟机监控器可以使用已安装的新版本的虚拟器来启动第二虚拟机,并将第一虚拟机的配置信息发送给第二虚拟机,以便根据该配置信息对第二虚拟机进行相应的配置,使得第二虚拟机与第一虚拟机具有相同的配置,这样可以保证第一虚拟机上运行的虚拟机业务也能在第二虚拟机上运行。
[0078] S303:虚拟机监控器中的虚拟设备代理1收集第一虚拟机的虚拟设备的目标资源信息。
[0079] 在一些示例中,所收集的虚拟设备的目标资源信息可以包括第一虚拟机的虚拟设备的标识(如虚拟设备的名称等),以及与第一虚拟机的虚拟设备的标识相对应的文件句柄,其中,虚拟设备可以包括但不限于TAP设备、Pty设备、VNC端口、磁盘设备、串口设备等。
[0080] 作为一种示例性的实施方式,第二虚拟机在启动后,虚拟机监控器中的虚拟设备代理2可以向虚拟设备代理1发送获取第一虚拟机的虚拟设备资源的请求,由虚拟设备代理1响应接收到的请求,并收集第一虚拟机的虚拟设备的目标资源信息。其中,虚拟机监控器可以包括虚拟设备代理(Virtual Device Forwarding)1以及虚拟设备代理2,虚拟设备代理1位于第一虚拟机上,虚拟设备代理2位于第二虚拟机上,如图4所示。
[0081] S304:虚拟机监控器中的虚拟设备代理1将第一虚拟机的虚拟设备的目标资源信息从第一虚拟机发送到第二虚拟机。
[0082] 本实施例中,虚拟设备代理1在确定第一虚拟机在收集得到虚拟设备的目标资源信息后,可以将该目标资源信息发送给第二虚拟机,并由虚拟设备代理2接收并存储该目标资源信息。在一种示例中,虚拟设备代理1在需要将目标资源信息发送给第二虚拟机时,可以将收集到的目标资源信息组装成数据包,并通过套接字接口将该数据包发送给虚拟设备代理2;虚拟设备代理2在接收到该数据包后,可以将数据包中的目标资源信息保存在虚拟设备代理2提供的如图4所示的临时列表中,以便于第二虚拟机可以利用临时列表中所记录的文件句柄资源访问该文件句柄资源所对应的虚拟设备资源,如虚拟磁盘设备、虚拟串口设备等。当然,在另一些可能的实施方式中,也可以将目标资源信息存储于其它有效存储位置,对于目标资源的存储方式,在此不做限定。
[0083] S305:虚拟机监控器中的虚拟设备代理2响应于为第二虚拟机创建第一虚拟设备的指令,在目标资源信息中查找第一虚拟设备的资源信息,并将查找到的资源信息作为第一虚拟设备的资源信息。
[0084] 本实施例中,虚拟设备代理2可以是基于创建指令来为第二虚拟机创建第一虚拟设备,具体实现时,虚拟设备代理2在确定第二虚拟机已经接收到第一虚拟机的虚拟设备的目标资源信息后,可以响应为第二虚拟机创建第一虚拟机设备的指令,在接收到的目标资源信息中查找第一虚拟设备的资源信息,如果查找第一虚拟设备的资源信息,则将查找到的资源信息,作为第二虚拟机中第一虚拟设备的资源信息。比如,可以将目标资源信息中第一虚拟设备资源的文件句柄,作为第二虚拟机中第一虚拟设备资源的文件句柄等。
[0085] 当然,在一些场景中,虚拟设备代理2响应于为第二虚拟机创建第二虚拟设备的指令,并在接收到的目标资源信息中查找第二虚拟设备的资源信息时,如果没有查找到第二虚拟设备的资源信息,则虚拟设备代理2可以为第二虚拟机中的第二虚拟设备创建资源信息。
[0086] 按照上述过程,虚拟设备代理2可以为第二虚拟机创建第二虚拟机的全部虚拟设备,以便于后续对第二虚拟机进行初始化设置。
[0087] S306:虚拟器监控器暂停第一虚拟机和第二虚拟机。
[0088] 在一种示例性的实施方式中,可以是在第二虚拟机的初始化设置完成之后,暂停第一虚拟机以及第二虚拟机。具体实现时,可以是由虚拟设备代理1暂停第一虚拟机,由虚拟设备代理2暂停第二虚拟机。
[0089] 需要说明的是,在成功安装新版本的虚拟化模拟器、对第二虚拟机进行配置以及初始化设备后,第一虚拟机上的虚拟机业务才会发生中断,这样,可以减少虚拟机业务的中断时间,从而可以减少热升级对虚拟机业务的影响。
[0090] S307:虚拟器监控器中的虚拟设备代理1将第一虚拟机的设备状态信息发送给第二虚拟机。
[0091] 在一些可能的实施方式中,虚拟设备代理1可以将第一虚拟机的设备状态信息通过Unix Socket共享通道发送给第二虚拟机,而第二虚拟机上的虚拟设备代理2可以接收该设备状态信息。
[0092] S308:虚拟器监控器中的虚拟设备代理2控制第二虚拟机基于第一虚拟机的设备状态信息恢复运行。
[0093] 实际应用中,由于第二虚拟机是基于第一虚拟机的设备状态信息恢复运行,则在第一虚拟机上中断的虚拟机业务可以在第二虚拟机上恢复运行,此时,第一虚拟机无需保持暂停状态,可以关闭第一虚拟机。
[0094] 本实施例中,在进行热升级的过程中,第二虚拟机还会获得第一虚拟机的虚拟设备的目标资源信息,这样,第二虚拟机在创建虚拟设备时,对于目标资源信息中存在的资源信息可以直接利用可以不用再创建,从而减少了热升级过程中额外的资源消耗。
[0095] 在如图5所示的应用场景中,在对虚拟化模拟器进行热升级时,还可以将第一虚拟机的虚拟内存区域的信息发送给第二虚拟机,这样,第二虚拟机在进行初始化设置时,可以不用为第二虚拟机额外申请内存,而可以共享第一虚拟机的内存资源即可。在该场景中,宿主机上的虚拟机监控器可以包括内存共享装置(memory sharing,MS),该内存共享装置包括内存共享前端代理(Memory Sharing Front-End,MS FE),以及内存共享后端代理(memory sharing back-end,MS BE),其中,内存共享前端代理,可以位于虚拟化模拟器组件中,具体的,内存共享前端代理1可以位于第一虚拟机上的虚拟化模拟器组件中,内存共享前端代理2可以位于第二虚拟机上的虚拟化模拟器组件中,内存共享后端代理可以位于宿主机Linux内核组件中。
[0096] 具体的,参阅图6,图6示出了本申请实施例中又一种升级虚拟化模拟器的方法流程示意图,该方法具体可以包括:
[0097] S601:在第一虚拟机正在基于旧版本虚拟化模拟器运行时,虚拟器监控器安装新版本的虚拟化模拟器。
[0098] S602:虚拟器监控器使用新版本虚拟化模拟器启动第二虚拟机,其中,第二虚拟机具有与第一虚拟机相同的配置信息。
[0099] S603:虚拟器监控器暂停第一虚拟机和第二虚拟机。
[0100] S604:虚拟器监控器中的内存共享前端代理1将第一虚拟机的虚拟内存区域的标识信息从第一虚拟机发送给第二虚拟机。
[0101] 在一种示例性的实施方式中,在确定第二虚拟机完成初始化设置后,内存共享前端代理1可以将第一虚拟机的虚拟内存区域的标识信息发送给第二虚拟机,以便于内存共享前端代理2接收到该第一虚拟机的虚拟内存区域的标识信息,从而使得第二虚拟机能够共享第一虚拟机的虚拟内存区域。其中,第一虚拟机的虚拟内存区域,可以是第一虚拟机在创建时从指定线性区域内申请的。
[0102] S605:虚拟器监控器中的内存共享前端代理2基于第一虚拟机的虚拟内存区域的标识信息,创建第二虚拟机的虚拟内存区域,其中,第二虚拟机的虚拟内存区域为第一虚拟机的虚拟内存区域。
[0103] 具体实现时,内存共享前端代理2在接收到第一虚拟机的虚拟内存区域的标识信息后,可以向宿主机申请通过Linux系统的mmap接口创建一个虚拟内存区域,并将所创建的虚拟内存区域作为第二虚拟机的虚拟内存区域。其中,第一虚拟机的虚拟内存区域与第二虚拟机的虚拟内存区域为同一虚拟内存区域,即可以看作是第一虚拟机以及第二虚拟机之间共享同一个虚拟内存区域。
[0104] 作为一种示例,虚拟内存区域的标识信息可以是该虚拟内存区域的起始地址以及大小,这样,基于该标识信息所建立的第二虚拟机的虚拟内存区域,与第一虚拟机虚拟内存区域可以拥有相同的起始地址和大小。需要说明的是,内存共享前端代理2在为第二虚拟机创建虚拟内存区域时,并不会触发任何的页表填充操作。
[0105] S606:虚拟器监控器中的内存共享后端代理响应于第二虚拟机与第一虚拟机共享虚拟内存区域的请求,以第一虚拟机的进程页表中虚拟内存区域对应的项生成第二虚拟机的进程页表中虚拟内存区域对应的项。
[0106] 在一种示例性的具体实施方式中,内存共享前端代理2在创建第二虚拟机的虚拟内存区域后,可以向内存共享后端代理发送共享第一虚拟机的虚拟内存区域的请求,内存共享后端代理可以响应该请求,并根据第一虚拟机的虚拟内存区域的标识信息确定需要对第二虚拟机的进程页表中哪些项进行修改
[0107] 需要说明的是,第一虚拟机以及第二虚拟机本质上是宿主机Linux系统中的一个进程,在Linux系统中,每当创建一个新的进程时,Linux内核的内存管理模块会为该进程创建新的PGD(Page Global Directory,页全局目录)页表,以记录该进程的逻辑地址与物理地址的内存映射关系。因此,当第二虚拟机请求共享第一虚拟机的虚拟内存区域时,Linux内核的内存管理模块可以对第二虚拟机的PGD页表中的项进行适应性的修改,而对于第一虚拟机的虚拟内存区域对应的项通常可以不用修改。
[0108] 对于PGD页表中不需要修改的项,内存共享后端代理可以将第一虚拟机的PGD页表中与第一虚拟机的虚拟内存区域对应的项,复制到第二虚拟机的PGD页表中与第二虚拟机的虚拟内存区域对应的项,同时,将第二虚拟机的PGD页表中虚拟内存区域对应的项所指向的下级页表的引用计数加1。这样,当第一虚拟机关闭时,第一虚拟机的进程页表中的PUD(Page Upper Directory,页上级目录)页表、PMD(Page Middle Directory,页中间目录)页表以及PT(Page Table,页内偏移)页表不会被释放掉,从而使得第二虚拟机的逻辑地址可以映射到第一虚拟机的虚拟内存区域所对应的物理地址,也即第二虚拟机可以访问第一虚拟机的虚拟内存区域中的内存资源,以此可以实现第二虚拟机共享第一虚拟机的虚拟内存区域。
[0109] 而且,第一虚拟机的进程页表在热升级过程中依然得以保留,这样,即使第二虚拟机无法成功恢复运行或者基于其它原因而导致此次热升级失败,第一虚拟机依然可以正常恢复运行,从而使得在第一虚拟机上中断的虚拟机业务可以继续在第一虚拟机上恢复运行。
[0110] S607:内存共享后端代理基于第二虚拟机的进程页表,为第二虚拟机的虚拟内存区域建立反向映射信息。
[0111] 作为一种示例性的具体实现方式,内存共享后端代理可以基于第二虚拟机的进程页表,通过Linux内核反向映射接口为第二虚拟机的虚拟内存区域建立反向映射信息。
[0112] S608:虚拟器监控器将第一虚拟机的设备状态信息发送给第二虚拟机。
[0113] S609:虚拟器监控器控制第二虚拟机基于第一虚拟机的设备状态信息恢复运行。
[0114] 本实施例中,第一虚拟机的虚拟内存区域可以在20微秒以内实现与第二虚拟机的共享,而且,通过增加相关进程页表的引用技术,即使第二虚拟机无法成功恢复运行或者其它原因而导致热升级失败,第一虚拟机的进程页表也不会被释放掉,第一虚拟机依然可以正常恢复运行,从而使得在第一虚拟机上中断的虚拟机业务能够继续运行。
[0115] 需要说明的是,在硬件辅助虚拟化技术中,每个虚拟机除了自身的进程页表外,还可以存在另外一套页表,将虚拟机的逻辑地址转换成物理地址,这种页表在Inter VT(intel virtualization technology,inter虚拟化技术)技术中被称为EPT(extended page table,扩展页表)页表。在一些场景中,第一虚拟机可以将自身的EPT页表共享给第二虚拟机。具体的,参阅图7和图8,图7示出了本申请实施例中再一种升级虚拟化模拟器的方法流程示意图,图8示出了共享第一虚拟机EPT页表的场景架构图。本实施例中,虚拟机监控器可以包括扩展页表继承装置(extended page table inheriting),该方法具体可以包括:
[0116] S701:在第一虚拟机正在基于旧版本虚拟化模拟器运行时,虚拟机监控器安装新版本的虚拟化模拟器。
[0117] S702:虚拟机监控器使用新版本虚拟化模拟器启动第二虚拟机,其中,第二虚拟机具有与第一虚拟机相同的配置信息。
[0118] S703:虚拟机监控器中的扩展页表继承装置获取第一虚拟机的EPT页表基地址。
[0119] S704:扩展页表继承装置依据第一虚拟机的EPT基地址设置第二虚拟机的EPT页表基地址。
[0120] 如图8所示,第一虚拟机预先通过EPT Inheriting装置的缓存池申请EPT页面,其中,该缓存池可以对EPT Inheriting页面的申请或释放进行管理;然后,第二虚拟机可以通过EPT装置获取第一虚拟机的EPT页表基地址,并依据该EPT页表基地址设置第二虚拟机的EPT页表基地址,从而实现第一虚拟机的EPT页表对第二虚拟机的共享。
[0121] S705:虚拟机监控器暂停第一虚拟机和第二虚拟机。
[0122] S706:虚拟机监控器将第一虚拟机的设备状态信息发送给第二虚拟机。
[0123] S707:虚拟机监控器控制第二虚拟机基于第一虚拟机的设备状态信息恢复运行。
[0124] 本实施例中,虚拟机监控器通过将第一虚拟机的EPT页表基地址,设置为自身的EPT页表基地址,可以实现第一虚拟机的EPT页表对于第二虚拟机的共享,这样,在对虚拟化模拟器进行热升级后,第二虚拟机不需要重新创建EPT页表,从而可以避免创建EPT页表而造成的EPT violation异常,进而可以保证热升级后一段时间内第二虚拟机的内存访问性能不会下降,减少了由热升级而导致的虚拟机业务性能波动。
[0125] 此外,本申请实施例还提供了一种升级虚拟化模拟器的装置。参阅图9,图9示出了本申请实施例中一种升级虚拟化模拟器的装置结构示意图,该装置900包括:
[0126] 安装单元901,用于在第一虚拟机正在基于旧版本虚拟化模拟器运行时,安装新版本的虚拟化模拟器;
[0127] 启动单元902,用于使用所述新版本虚拟化模拟器,启动第二虚拟机,所述第二虚拟机具有与所述第一虚拟机相同的配置信息;
[0128] 暂停单元903,用于暂停所述第一虚拟机和所述第二虚拟机;
[0129] 第一发送单元904,用于将所述第一虚拟机的设备状态信息发送给所述第二虚拟机;
[0130] 控制单元905,用于控制所述第二虚拟机基于所述设备状态信息恢复运行。
[0131] 在一种可能的实现方式中,该装置900还包括:
[0132] 第二发送单元,用于将所述第一虚拟机的虚拟设备的目标资源信息从所述第一虚拟机发送到所述第二虚拟机;
[0133] 第一查找单元,用于响应于为所述第二虚拟机创建第一虚拟设备的指令,在所述目标资源信息中查找所述第一虚拟设备的资源信息,并将查找到的所述资源信息作为所述第一虚拟设备的资源信息。
[0134] 在一种可能的实施方式中,该装置900还包括:
[0135] 第二查找单元,用于响应于为所述第二虚拟机创建第二虚拟设备的指令,在所述目标资源信息中查找所述第二虚拟设备的资源信息;
[0136] 第一创建单元,用于若查找不到,则为所述第二虚拟设备创建所述资源信息。
[0137] 在一种可能的实现方式中,该装置900还包括:
[0138] 第二创建单元,用于基于所述第一虚拟机的虚拟内存区域的标识信息,创建所述第二虚拟机的虚拟内存区域,其中,所述第二虚拟机的虚拟内存区域为所述第一虚拟机的虚拟内存区域。
[0139] 在一种可能的实现方式中,该装置900还包括:
[0140] 生成单元,用于响应于所述第二虚拟机与所述第一虚拟机共享所述虚拟内存区域的请求,以所述第一虚拟机的进程页表中所述虚拟内存区域对应的项生成所述第二虚拟机的进程页表中所述虚拟内存区域对应的项;
[0141] 建立单元,用于基于所述第二虚拟机的进程页表,为所述第二虚拟机的虚拟内存区域建立反向映射信息。
[0142] 在一种可能的实现方式中,所述生成单元,包括:
[0143] 复制子单元,用于将所述第一虚拟机的页全局目录PGD页表中所述虚拟内存区域对应的项复制到所述第二虚拟机的PGD页表中所述虚拟内存区域对应的项;
[0144] 增值子单元,用于将所述第二虚拟机的PGD页表中所述虚拟内存区域对应的项指向的下级页表的引用计数加1。
[0145] 在一种可能的实施方式中,所述标识信息包括所述虚拟内存区域的起始地址和大小。
[0146] 在一种可能的实现方式中,该装置900还包括:
[0147] 获取单元,用于获取所述第一虚拟机的扩展页表EPT基地址;设置单元,用于依据所述第一虚拟机的EPT基地址设置所述第二虚拟机的EPT基地址。
[0148] 本实施例中,在第一虚拟机基于旧版本虚拟化模拟器进行运行的基础上,创建一个基于新版本模拟器进行运行的第二虚拟机,该第二虚拟机与第一虚拟机之间具有相同的配置以及设备状态信息,这样,在第二虚拟机成功运行后,在第一虚拟机上中断的虚拟机业务,可以在第二虚拟机上恢复运行,从而完成对虚拟化模拟器的升级;而且,即使热升级失败,虽然中断的虚拟机业务无法在第二虚拟机上继续运行,但是由于第一虚拟机依然可以基于旧版本虚拟化模拟器恢复运行,因此,中断的虚拟机业务可以在第一虚拟机上恢复运行,这意味着在热升级失败的情况下,运行同一虚拟机业务的虚拟机,可以由基于新版本虚拟化模拟器进行运行的虚拟机回退成基于旧版本虚拟化模拟器运行的虚拟机,从而避免升级不成功导致虚拟机终止运行以及虚拟机的业务被迫中断无法恢复运行的问题。
[0149] 上一实施例是从功能实体的度对本申请实施例中升级虚拟化模拟器的装置进行描述,下面从硬件处理的角度对本申请实施例中升级虚拟化模拟器的装置进行详细描述。
[0150] 接下来介绍本申请实施例提供的升级虚拟化模拟器的设备,请参阅图10所示,升级虚拟化模拟器的设备1000,包括:接收器1001、发射器1002、处理器1003和存储器1004(其中设备1000中的处理器1003的数量可以一个或多个,图10中以一个处理器为例)。其中,通信接口可包括接收器1001、发射器1002。在本申请的一些实施例中,接收器1001、发射器1002、处理器1003和存储器1004可通过总线或其它方式连接,其中,图10中以通过总线连接为例。
[0151] 存储器1004可以包括只读存储器随机存取存储器,并向处理器1003提供指令和数据。存储器1004的一部分还可以包括非易失性随机存取存储器(英文全称:Non-Volatile Random Access Memory,英文缩写:NVRAM)。存储器1004存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
[0152] 处理器1003控制设备1000的操作,处理器1003还可以称为中央处理单元(英文全称:Central Processing Unit,英文简称:CPU)。具体的应用中,的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。
[0153] 上述本申请实施例揭示的方法可以应用于处理器1003中,或者由处理器1003实现。处理器1003可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1003中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1003可以是通用处理器、数字信号处理器(英文全称:digital signal processing,英文缩写:DSP)、专用集成电路(英文全称:Application Specific Integrated Circuit,英文缩写:ASIC)、现场可编程阵列(英文全称:Field-Programmable Gate Array,英文缩写:FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1004,处理器1003读取存储器1004中的信息,结合其硬件完成上述方法的步骤。
[0154] 接收器1001可用于接收输入的数字或字符信息,以及产生与设备1000的相关设置以及功能控制有关的信号输入,发射器1002可包括显示屏等显示设备,发射器1002可用于通过外接接口输出数字或字符信息。
[0155] 本申请实施例中,处理器1003,用于执行如下操作:
[0156] 在第一虚拟机正在基于旧版本虚拟化模拟器运行时,安装新版本的虚拟化模拟器;
[0157] 使用所述新版本虚拟化模拟器,启动第二虚拟机,所述第二虚拟机具有与所述第一虚拟机相同的配置信息;
[0158] 暂停所述第一虚拟机和所述第二虚拟机;
[0159] 将所述第一虚拟机的设备状态信息发送给所述第二虚拟机;
[0160] 控制所述第二虚拟机基于所述设备状态信息恢复运行。
[0161] 在一些可能的实施方式中,处理器1003还用于执行如下操作:
[0162] 将所述第一虚拟机的虚拟设备的目标资源信息从所述第一虚拟机发送到所述第二虚拟机;
[0163] 响应于为所述第二虚拟机创建第一虚拟设备的指令,在所述目标资源信息中查找所述第一虚拟设备的资源信息,并将查找到的所述资源信息作为所述第一虚拟设备的资源信息。
[0164] 在一些可能的实施方式中,处理器1003还用于执行如下操作:
[0165] 响应于为所述第二虚拟机创建第二虚拟设备的指令,在所述目标资源信息中查找所述第二虚拟设备的资源信息;
[0166] 若查找不到,则为所述第二虚拟设备创建所述资源信息。
[0167] 在一些可能的实施方式中,处理器1003还用于执行如下操作:
[0168] 基于所述第一虚拟机的虚拟内存区域的标识信息,创建所述第二虚拟机的虚拟内存区域,其中,所述第二虚拟机的虚拟内存区域为所述第一虚拟机的虚拟内存区域。
[0169] 在一些可能的实施方式中,处理器1003还用于执行如下操作:
[0170] 响应于所述第二虚拟机与所述第一虚拟机共享所述虚拟内存区域的请求,以所述第一虚拟机的进程页表中所述虚拟内存区域对应的项生成所述第二虚拟机的进程页表中所述虚拟内存区域对应的项;
[0171] 基于所述第二虚拟机的进程页表,为所述第二虚拟机的虚拟内存区域建立反向映射信息。
[0172] 在一些可能的实施方式中,处理器1003具体用于执行如下操作:
[0173] 将所述第一虚拟机的页全局目录PGD页表中所述虚拟内存区域对应的项复制到所述第二虚拟机的PGD页表中所述虚拟内存区域对应的项;
[0174] 将所述第二虚拟机的PGD页表中所述虚拟内存区域对应的项指向的下级页表的引用计数加1。
[0175] 在一些可能的实施方式中,所述标识信息包括所述虚拟内存区域的起始地址和大小。
[0176] 在一些可能的实施方式中,处理器1003还用于执行如下操作:
[0177] 获取所述第一虚拟机的扩展页表EPT基地址;
[0178] 依据所述第一虚拟机的EPT基地址设置所述第二虚拟机的EPT基地址。
[0179] 此外,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得该计算机或处理器执行上述升级虚拟化模拟器的方法。
[0180] 另外,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机或处理器上运行时,使得所述计算机或处理器执行上述升级虚拟化模拟器的方法。
[0181] 需要说明的是,本申请实施例中提到的“第一虚拟机”、“第一虚拟设备”等名称中的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”等。
[0182] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(英文:read-only memory,ROM)/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如路由器等网络通信设备)执行本申请各个实施例或者实施例的某些部分所述的方法。
[0183] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0184] 以上所述仅是本申请示例性的实施方式,并非用于限定本申请的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈