一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种虚拟机管理程序热升级方法、装置及存储介质与流程

2022-04-30 10:11:28 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种虚拟机管理程序热升级方法、装置及存储介质。


背景技术:

2.虚拟机管理程序hypervisor为运行在物理主机host系统上的实现虚拟功能的程序,hypervisor包括模拟器qemu进程和基于内核的虚拟机(kvm,kernel-based virtual machine)驱动。
3.相关技术中,对hypervisor进行热升级时,通常将qemu进程和kvm驱动分开进行热升级,qemu进程的热升级过程对虚拟机的性能影响非常大;kvm驱动的热升级过程需要对kvm驱动做较大的改动,存在改动风险,并且这种热升级过程无法适配非开源的第三方linux内核的原生kvm驱动。因此,相关技术中对hypervisor进行热升级时还存在升级效率低下的问题。


技术实现要素:

4.有鉴于此,本技术实施例的主要目的在于提供一种虚拟机管理程序热升级方法、装置及存储介质,以解决相关技术中对虚拟机管理程序热升级时升级效率低下的问题。
5.为达到上述目的,本技术实施例的技术方案是这样实现的:
6.本技术实施例提供了一种虚拟机管理程序热升级方法,所述方法包括:
7.通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程;
8.在将所述第一qemu进程更新为第二qemu进程之后,通过所述设定服务,在确定所述虚拟机管理程序的第一kvm驱动没有被使用的情况下卸载所述第一kvm驱动,并加载第二kvm驱动;
9.通过所述设定服务启动所述第二qemu进程;其中,所述第二qemu进程的启动依赖于所述第二kvm驱动。
10.上述方案中,所述通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程,包括:
11.通过所述设定服务向所述第一qemu进程发送第一指令;所述第一指令用于指示所述第一qemu进程将工作状态调整为退出状态;
12.在接收到所述第一qemu进程关于所述第一指令的第一响应的情况下,通过所述设定服务将第一qemu进程更新为第二qemu进程;所述第一响应表征所述第一qemu进程已将工作状态调整为退出状态。
13.上述方案中,所述通过所述设定服务确定所述虚拟机管理程序的第一kvm驱动没有被使用,包括:
14.通过所述设定服务判断所述第二qemu进程是否处于退出状态,得到判断结果;
15.在所述判断结果表征所述第二qemu进程处于退出状态的情况下,确定所述第一
kvm驱动没有被使用。
16.上述方案中,所述通过所述设定服务启动所述第二qemu进程,包括:
17.通过所述设定服务程序向所述第二qemu进程发送第二指令;所述第二指令用于指示所述第二qemu进程调用第一文件以及加载第二文件;所述第一文件包括第一qemu进程对应的至少一个虚拟机中每个虚拟机的内存文件;所述第二文件用于记录第一qemu进程对应的至少一个虚拟机中每个虚拟机的运行状态;
18.在收到所述第二qemu进程关于所述第二指令的第二响应的情况下,确定启动所述第二qemu进程;所述第二响应表征所述第二qemu进程调用所述第一文件成功以及加载所述第二文件成功。
19.上述方案中,在所述通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程之前,所述方法包括:
20.通过所述设定服务获取所述第一qemu进程对应的至少一个虚拟机的内存文件;
21.将所述至少一个虚拟机中每个虚拟机的内存文件映射至所述第一文件。
22.上述方案中,在所述通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程之前,所述方法还包括:
23.通过所述设定服务程序向所述第一qemu进程发送第三指令;所述第三指令用于指示所述第一qemu进程将工作状态调整为暂停状态;
24.在接收到所述第一qemu进程关于所述第三指令的第三响应的情况下,通过所述设定服务获取所述第一qemu进程对应的至少一个虚拟机的运行状态;所述第三响应表征所述第一qemu进程已将工作状态调整为暂停状态;
25.将所述至少一个虚拟机中每个虚拟机的运行状态保存至第二文件。
26.上述方案中,在所述确定启动所述第二qemu进程之后,所述方法包括:
27.通过所述设定服务删除所述第二文件。
28.本技术实施例还提供了一种虚拟机管理程序热升级装置,所述装置包括:
29.更新单元,用于通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程;
30.加载单元,用于在将所述第一qemu进程更新为第二qemu进程之后,通过所述设定服务,在确定所述虚拟机管理程序的第一kvm驱动没有被使用的情况下卸载所述第一kvm驱动,并加载第二kvm驱动;
31.启动单元,用于通过所述设定服务启动所述第二qemu进程;其中,所述第二qemu进程的启动依赖于所述第二kvm驱动。
32.本技术实施例还提供了一种电子设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,
33.所述处理器用于运行所述计算机程序时,执行上述任一方法的步骤。
34.本技术实施例还提供了一种存储介质,其上存有计算机程序,所述计算机程序被处理器执行时实现上述任一方法的步骤。
35.在本技术实施例中,通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程。在将第一qemu进程更新为第二qemu进程之后,通过设定服务,在确定虚拟机管理程序的第一kvm驱动没有被使用的情况下卸载第一kvm驱动,并加载第二kvm驱动。通过设定
服务启动第二qemu进程,其中,第二qemu进程的启动依赖于第二kvm驱动。如此,在通过设定服务对虚拟机管理程序进行更新的过程中,对qemu进程完成更新之后,如果检测到kvm驱动没有被使用,则继续更新kvm驱动,这样,在对虚拟机管理程序进行更新的一个更新过程中,可以对qemu进程和kvm驱动都进行更新,从而在一个更新流程中实现对虚拟机管理程序的完整更新,提高了虚拟机管理程序热升级的升级效率。
附图说明
36.图1为虚拟机管理程序的架构示意图;
37.图2为相关技术中对kvm驱动进行热升级的示意图;
38.图3为本技术实施例提供的虚拟机管理程序热升级方法的实现流程示意图;
39.图4a和图4b为本技术实施例提供的第二qemu进程的启动过程示意图;
40.图5为本技术实施例提供的确定第一文件的示意图;
41.图6为本技术实施例提供的保存第二文件的示意图;
42.图7为本技术实施例提供的删除第二文件的示意图;
43.图8为本技术实施例提供的虚拟机管理程序热升级装置的示意图;
44.图9为本技术实施例电子设备的硬件组成结构示意图。
具体实施方式
45.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
46.需要说明的是,本技术实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
47.另外,在本技术实施例中,术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,术语“至少一个”表示多个中的任意一个或多个中的至少两个的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
48.对本技术实施例进行进一步详细说明之前,对本技术实施例中涉及的名词和术语进行说明,本技术实施例中涉及的名词和术语适用于如下的解释。
49.虚拟机guest:在虚拟化平台上运行的虚拟机。
50.主机host:运行虚拟机的物理主机。
51.qemu:一种开源的模拟器及虚拟机监管器(vmm,virtual machine monitor)。主要作为虚拟机监管器模拟全系统,利用kvm驱动来使用硬件提供的虚拟化支持,并创建接近于主机性能的虚拟机。
52.kvm:基于内核的虚拟机,是linux内核的一个可加载模块。kvm通过调用linux本身的内核功能,实现对中央处理器cpu的底层虚拟化和内存的虚拟化,使linux内核成为虚拟
化层。kvm依赖于x86架构,支持虚拟化功能的硬件(比如intel-vt和amd-v),是一种全虚拟化架构。从存在形式来说,kvm包括两个内核模块:kvm.ko和kvm_intel.ko(或kvm_amd.ko)。
53.qemu-kvm:qemu与kvm结合起来形成的一整套虚拟化技术方案。
54.hypervisor:虚拟机管理程序,运行于host系统上,用于实现虚拟化功能的软件程序。本技术实施例中的hypervisor包括qemu进程和kvm驱动。
55.update_mgr:热升级管理模块,负责整个hypervisor的热升级。
56.图1为虚拟机管理程序的架构示意图,如图1所示:
57.该架构包括虚拟机、物理主机用户空间和物理主机内核三个部分。其中,
58.虚拟机包括虚拟用户空间和虚拟内核。
59.物理主机用户空间包括qemu进程、输入输出控制(ioctl,input/output control)模块和句柄模块。其中,ioctl模块为一个专用于设备输入输出操作的系统调用。ioctl模块包括系统system ioctl、虚拟机vm ioctl和虚拟中央处理器vcpu ioctl,每个ioctl模块分别对应一个kvm句柄。
60.物理主机内核包括kvm驱动driver模块以及物理主机内核。
61.kvm驱动负责cpu和内存的虚拟化,加载kvm驱动之后,用户可以通过设定工具进一步创建虚拟机,相当于kvm驱动提供了一个接口。然而,仅有kvm驱动,用户是无法直接控制虚拟机内核的。也就是说,kvm驱动仅仅提供接口,并不能实现虚拟机的创建、vcpu的分配等功能。因此,还需要提供运行在物理主机用户空间的工具,kvm驱动的开发者选择了比较成熟的开源虚拟化软件qemu进程来作为这个工具,并对qemu进程进行调整,最后形成了qemu-kvm架构,也就是虚拟机管理程序架构。在该架构中,kvm驱动运行在物理主机内核,qemu进程运行在物理主机用户空间,从而实现实际模拟创建、管理各种虚拟机。
62.根据业界的相关统计,在虚拟机技术领域,超过90%的缺陷和安全漏洞位于虚拟机管理程序上。为了尽可能避免缺陷和安全漏洞,需要不断对虚拟机管理程序进行升级。
63.针对虚拟机管理程序的升级,传统方式是冷升级,也就是关闭虚拟机进行升级。然而,关闭虚拟机会导致虚拟机业务的中断。因此,不关闭虚拟机对虚拟机管理程序进行升级的热升级更受欢迎。
64.相关技术中,在对虚拟机管理程序进行热升级时,通常是将qemu进程和kvm驱动分开进行热升级。具体如下:
65.1、针对qemu进程的热升级。目前,业界主流的qemu进程热升级方案是直接复用qemu进程的热迁移功能来实现的。热迁移过程中,虚拟机内存文件的拷贝会占用一定的内存带宽与网络带宽,同时,为了避免脏页产生速度过快导致无法完成内存拷贝,需要对cpu进行限速,这样必然导致虚拟机业务在热迁移过程中性能下降。
66.而虚拟机内存文件越大且内存写入频率越高,热迁移所需时长将越长。对于金融、大数据等高端业务,虚拟机内存文件通常有数百gb大,如果对虚拟机业务性能要求较高,那么基于热迁移升级方式将难以满足用户需求。
67.此外,热迁移过程中,需要额外的内存空间来存放迁移中的虚拟机内存文件,同时迁移线程也需要占用额外的cpu、内存带宽和网络带宽等。对硬件资源的额外消耗导致热迁移方式难以高并发进行,对于负载较高的集群,仅能实现对虚拟机逐一进行升级,难以满足大规模的虚拟机升级需求。
68.2、针对kvm驱动的热升级。
69.图2为相关技术中对kvm驱动进行热升级的示意图,如图2所示:
70.同时维护两个kvm驱动实例:kvm.ko和kvm-intel.ko,并对两个kvm驱动实例进行封装。在升级kvm驱动时,交替切换两个kvm驱动。
71.然而,这种升级方式实现复杂,需要对kvm驱动做较大的改动,存在改动风险。由于涉及到kvm驱动改动,无法适配非开源的第三方linux内核的原生kvm驱动,也无法对既有的旧版kvm驱动做到热升级。
72.也就是说,相关技术中对虚拟机管理程序进行热升级时,只能分别对qemu进程和kvm驱动进行热升级,对qemu进程和kvm驱动分别进行热升级的过程中分别存在很多限制,导致对虚拟机管理程序进行热升级的升级效率非常低下。
73.基于此,本技术实施例提供了一种虚拟机管理程序热升级方法、装置及存储介质,通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程。在将第一qemu进程更新为第二qemu进程之后,通过设定服务,在确定虚拟机管理程序的第一kvm驱动没有被使用的情况下卸载第一kvm驱动,并加载第二kvm驱动。通过设定服务启动第二qemu进程,其中,第二qemu进程的启动依赖于第二kvm驱动。如此,在通过设定服务对虚拟机管理程序进行更新的过程中,对qemu进程完成更新之后,如果检测到kvm驱动没有被使用,则继续更新kvm驱动,这样,在对虚拟机管理程序进行更新的一个更新过程中,可以对qemu进程和kvm驱动都进行更新,从而在一个更新流程中实现对虚拟机管理程序的完整更新,提高了虚拟机管理程序热升级的升级效率。
74.下面结合附图及实施例对本技术再作进一步详细的描述。
75.图3为本技术实施例提供的虚拟机管理程序热升级方法的实现流程示意图。如图3所示,所述方法包括:
76.步骤301:通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程。
77.这里,设定服务是设定的专用于负责虚拟机管理程序的热升级的服务。实际应用中,设定服务可以为热升级管理服务update_mgr。
78.通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程。
79.在一实施例中,所述通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程,包括:
80.通过所述设定服务向所述第一qemu进程发送第一指令;所述第一指令用于指示所述第一qemu进程将工作状态调整为退出状态;
81.在接收到所述第一qemu进程关于所述第一指令的第一响应的情况下,通过所述设定服务将第一qemu进程更新为第二qemu进程;所述第一响应表征所述第一qemu进程已将工作状态调整为退出状态。
82.这里,通过设定服务向第一qemu发送第一指令,第一指令用于指示第一qemu进程将工作状态调整为退出状态。在收到第一qemu进程已经将工作状态调整为退出状态的第一响应的情况下,通过设定服务将第一qemu进程更新为第二qemu进程。
83.实际应用中,可以通过update_mgr向第一qemu进程发送第一指令。通过将第一qemu进程对应的二进制程序替换为第二qemu进程对应的二进制程序,完成对虚拟机管理程序的qemu进程的更新。
84.通过在确定第一qemu进程处于退出状态的情况下,再将第一qemu进程更新为第二qemu进程,避免更新过程对第一qemu进程的正常工作状态造成影响,提高了在对第一qemu进程进行升级时虚拟机管理程序的运行稳定性。
85.步骤302:在将所述第一qemu进程更新为第二qemu进程之后,通过所述设定服务,在确定所述虚拟机管理程序的第一kvm驱动没有被使用的情况下卸载所述第一kvm驱动,并加载第二kvm驱动。
86.这里,在将第一qemu进程更新为第二qemu进程之后,通过设定服务继续确认虚拟机管理程序的第一kvm驱动是否被使用,如果确认第一kvm驱动当前没有被使用,那么通过设定服务卸载第一kvm驱动,并加载第二kvm驱动,从而实现对kvm驱动的更新。
87.需要说明的是,本技术实施例是通过将第一kvm驱动卸载,并加载第二kvm驱动的方式来实现对kvm驱动的热升级,所以,在kvm驱动的热升级过程中并不需要对kvm驱动本身进行任何改动,因而,本技术实施例提供的kvm驱动的热升级方法能够适配第三方的linux内核的原生kvm驱动的热升级,也能够支持既有的旧版的kvm驱动的热升级。
88.在一实施例中,所述通过所述设定服务确定所述虚拟机管理程序的第一kvm驱动没有被使用,包括:
89.通过所述设定服务判断所述第二qemu进程是否处于退出状态,得到判断结果;
90.在所述判断结果表征所述第二qemu进程处于退出状态的情况下,确定所述第一kvm驱动没有被使用。
91.这里,通过设定服务判断第二qemu进程是否处于退出状态,如果第二qemu进程处于退出状态,则确定第一kvm驱动没有被使用。
92.在将第一qemu进程更新为第二qemu进程之后,虚拟机管理程序中包括第二qemu进程和第一kvm驱动。由于qemu进程的启动依赖于kvm驱动,如果第二qemu进程处于工作状态,那么第一kvm驱动处于被使用的状态,如果第二qemu进程处于退出状态,那么在虚拟机管理程序中,没有进程使用第一kvm驱动。所以在第二qemu进程处于退出状态的情况下,确定第一kvm驱动没有被使用。
93.通过在判断第二qemu进程处于退出状态的情况下,确定第一kvm驱动没有被使用,可以准确得到第一kvm驱动当前的使用状态。
94.步骤303:通过所述设定服务启动所述第二qemu进程;其中,所述第二qemu进程的启动依赖于所述第二kvm驱动。
95.这里,在对qemu进程和kvm驱动均进行更新之后,通过设定服务启动第二qemu进程。其中,第二qemu进程的启动依赖于第二kvm驱动。
96.这样,依赖第二kvm驱动将第二qemu进程启动后,在重新启动的虚拟机管理程序中,无论是qemu进程和kvm驱动都是升级更新后的版本,因此,实现了对虚拟机管理程序的完整升级。
97.在一实施例中,所述通过所述设定服务启动所述第二qemu进程,包括:
98.通过所述设定服务程序向所述第二qemu进程发送第二指令;所述第二指令用于指示所述第二qemu进程调用第一文件以及加载第二文件;所述第一文件包括第一qemu进程对应的至少一个虚拟机中每个虚拟机的内存文件;所述第二文件用于记录第一qemu进程对应的至少一个虚拟机中每个虚拟机的运行状态;
99.在收到所述第二qemu进程关于所述第二指令的第二响应的情况下,确定启动所述第二qemu进程;所述第二响应表征所述第二qemu进程调用所述第一文件成功以及加载所述第二文件成功。
100.这里,通过设定服务向第二qemu进程发送第二指令,第二指令用于指示第二qemu进程调用第一文件并加载第二文件。其中,第一文件包括第一qemu进程对应的至少一个虚拟机中每个虚拟机的内存文件,第二文件用于记录第一qemu进程对应的至少一个虚拟机中每个虚拟机的运行状态。也就是说,在启动第二qemu进程时,需要借助更新之前的第一qemu进程对应的虚拟机的内存文件,以及更新之前的第一qemu进程对应的虚拟机的运行状态。
101.如果接收到第二qemu进程关于第二指令的第二响应,说明第二qemu进程已经成功调用第一文件并成功加载第二文件。在这种情况下,确定启动第二qemu进程。
102.实际应用中,通过update_mgr向第二qemu进程发送vm_load指令,第二qemu进程接收到该指令后,去调用第一文件并加载第二文件。第一文件可以命名为guest_mem,第二文件可以命名为dev_state。第一文件和第二文件除了可以存储在内存中之外,还可以存储在磁盘中或者共享内存中。
103.需要说明的是,在启动第二qemu进程时,需要先使用第二kvm驱动,然后第二qemu进程再调用第一文件并加载第二文件,这样,在调用成功第一文件并且加载成功第二文件后,说明第二qemu进程已经成功调用了更新前的第一qemu进程对应的虚拟机的内存文件,并成功加载了更新前的第一qemu进程对应的虚拟机的运行状态,这样,第二qemu进程成功启动。
104.可以理解的是,在本技术实施例中,对qemu进程的更新,是指更新qemu进程对应的二进制程序,而对qemu进程对应的虚拟机的内存文件和运行状态,并不会进行更新。
105.图4a和图4b为本技术实施例提供的第二qemu进程的启动过程示意图,如图4a和图4b所示:
106.如图4a所示,在启动第二qemu进程时,首先使用第二kvm驱动。
107.此时,第二qemu进程对应的虚拟机的内存文件是空白的,对应的虚拟机的运行状态也是空白的。因此,通过设定服务向第二qemu进程发送第二指令,指示第二qemu进程调用第一文件并加载第二文件。第一文件包括第一qemu进程对应的每个虚拟机的内存文件,第二文件用于记录第一qemu进程对应的每个虚拟机的运行状态。
108.如图4b所示,第二qemu进程基于第二指令调用第一文件,并加载第二文件,此时,第二qemu进程对应的虚拟机获得了更新之前的第一qemu进程对应的虚拟机的内存文件,并加载了更新之前的第一qemu进程对应的虚拟机的运行状态,因此,第二qemu进程已经启动成功。
109.通过调用第一文件以及加载第二文件来启动第二qemu进程,能够避免qemu进程热升级过程中对应的虚拟机的内存文件的拷贝和迁移过程,不需要消耗额外的硬件资源,能进行大规模的qemu进程实例的并发热升级,也能够快速启动更新后的第二qemu进程。
110.在一实施例中,在所述通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程之前,所述方法包括:
111.通过所述设定服务获取所述第一qemu进程对应的至少一个虚拟机的内存文件;
112.将所述至少一个虚拟机中每个虚拟机的内存文件映射至所述第一文件。
113.这里,在通过设定服务将第一qemu进程更新为第二qemu进程之前,先通过设定服务获取第一qemu进程对应的至少一个虚拟机的内存文件,并将获取到的每个虚拟机的内存文件映射至第一文件。
114.图5为本技术实施例提供的确定第一文件的示意图。如图5所示:
115.在第一qemu进程处于正常工作状态、第一qemu进程对应的虚拟机均处于正常运行状态的情况下,通过设定服务获取第一qemu进行对应的每个虚拟机的内存文件,并将获取到的内存文件映射至第一文件。
116.通过将第一qemu进程对应的虚拟机的内存文件映射至第一文件,便于在更新后的第二qemu进程进行启动时,可以直接调用第一文件来恢复第二qemu进程对应的虚拟机的内存文件,避免了对虚拟机内存文件进行拷贝,从而避免消耗额外的硬件资源,也提高了第二qemu进程的启动效率。
117.在一实施例中,在所述通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程之前,所述方法还包括:
118.通过所述设定服务程序向所述第一qemu进程发送第三指令;所述第三指令用于指示所述第一qemu进程将工作状态调整为暂停状态;
119.在接收到所述第一qemu进程关于所述第三指令的第三响应的情况下,通过所述设定服务获取所述第一qemu进程对应的至少一个虚拟机的运行状态;所述第三响应表征所述第一qemu进程已将工作状态调整为暂停状态;
120.将所述至少一个虚拟机中每个虚拟机的运行状态保存至第二文件。
121.这里,在通过设定服务将第一qemu进程更新为第二qemu进程之前,先通过设定服务向第一qemu进程发送第三指令,第三指令用于指示第一qemu进程将工作状态调整为暂停状态。如果接收到第一qemu进程的第三响应,说明第一qemu进程已经将工作状态调整为暂停状态,此时,通过设定服务获取第一qemu进程对应的每个虚拟机的运行状态,并将获取到的虚拟机的运行状态保存至第二文件。
122.实际应用中,通过update_mgr向第一qemu进程发送vm_save指令,第一qemu进程接收到该指令后,将工作状态调整为暂停状态。在第一qemu进程处于暂停状态之后,通过update_mgr将第一qemu进程对应的每个虚拟机的运行状态保存至第二文件。
123.图6为本技术实施例提供的保存第二文件的示意图,如图6所示:
124.通过设定服务向第一qemu进程发送第三指令,第一qemu进程基于第三指令,将工作状态调整为暂停状态之后,此时,通过设定服务获取第一qemu进程对应的每个虚拟机的运行状态,并将获取到的每个虚拟机的运行状态保存至第二文件。
125.需要说明的是,第二文件的确定过程在第一文件的确定过程之后,也就是说,先将第一qemu进程对应的每个虚拟机的内存文件映射成第一文件之后,再将第一qemu进程对应的每个虚拟机的运行状态保存至第二文件。
126.通过设定服务在第一qemu进程处于暂停状态的情况下,将第一qemu进程对应的每个虚拟机的运行状态保存至第二文件,便于在第二qemu进程的启动过程中,直接加载第二文件来恢复第二qemu进程对应的虚拟机的运行状态,缩短了第二qemu进程的启动时间,提高了第二qemu进程的启动效率。
127.在一实施例中,在所述确定启动所述第二qemu进程之后,所述方法包括:
128.通过所述设定服务删除所述第二文件。
129.这里,如果确定第二qemu进程已经成功启动,说明第二qemu进程对应的虚拟机已经获得并恢复成第二文件中的对应的运行状态,此时,第二文件已经没有存在的必要,所以通过设定服务将第二文件删除。
130.图7为本技术实施例提供的删除第二文件的示意图,如图7所示:
131.如果第二qemu进程已经成功启动,则通过设定服务将第二文件删除。
132.通过设定服务在第二qemu进程成功启动后将第二文件删除,节约了内存空间。
133.在本技术实施例中,通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程。在将第一qemu进程更新为第二qemu进程之后,通过设定服务,在确定虚拟机管理程序的第一kvm驱动没有被使用的情况下卸载第一kvm驱动,并加载第二kvm驱动。通过设定服务启动第二qemu进程,其中,第二qemu进程的启动依赖于第二kvm驱动。如此,在通过设定服务对虚拟机管理程序进行更新的过程中,对qemu进程完成更新之后,如果检测到kvm驱动没有被使用,则继续更新kvm驱动,这样,在对虚拟机管理程序进行更新的一个更新过程中,可以对qemu进程和kvm驱动都进行更新,从而在一个更新流程中实现对虚拟机管理程序的完整更新,提高了虚拟机管理程序热升级的升级效率。
134.为实现本技术实施例的方法,本技术实施例还提供了一种虚拟机管理程序热升级装置,图8为本技术实施例提供的虚拟机管理程序热升级装置的示意图,请参见图8,该装置包括:
135.更新单元801,用于通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程;
136.加载单元802,用于在将所述第一qemu进程更新为第二qemu进程之后,通过所述设定服务,在确定所述虚拟机管理程序的第一kvm驱动没有被使用的情况下卸载所述第一kvm驱动,并加载第二kvm驱动;
137.启动单元803,用于通过所述设定服务启动所述第二qemu进程;其中,所述第二qemu进程的启动依赖于所述第二kvm驱动。
138.在一实施例中,所述更新单元801,还用于通过所述设定服务向所述第一qemu进程发送第一指令;所述第一指令用于指示所述第一qemu进程将工作状态调整为退出状态;
139.在接收到所述第一qemu进程关于所述第一指令的第一响应的情况下,通过所述设定服务将第一qemu进程更新为第二qemu进程;所述第一响应表征所述第一qemu进程已将工作状态调整为退出状态。
140.在一实施例中,所述装置还包括:确定单元,用于通过所述设定服务判断所述第二qemu进程是否处于退出状态,得到判断结果;
141.在所述判断结果表征所述第二qemu进程处于退出状态的情况下,确定所述第一kvm驱动没有被使用。
142.在一实施例中,所述启动单元803,还用于通过所述设定服务程序向所述第二qemu进程发送第二指令;所述第二指令用于指示所述第二qemu进程调用第一文件以及加载第二文件;所述第一文件包括第一qemu进程对应的至少一个虚拟机中每个虚拟机的内存文件;所述第二文件用于记录第一qemu进程对应的至少一个虚拟机中每个虚拟机的运行状态;
143.在收到所述第二qemu进程关于所述第二指令的第二响应的情况下,确定启动所述
第二qemu进程;所述第二响应表征所述第二qemu进程调用所述第一文件成功以及加载所述第二文件成功。
144.在一实施例中,所述装置还包括:映射单元,用于通过所述设定服务获取所述第一qemu进程对应的至少一个虚拟机的内存文件;
145.将所述至少一个虚拟机中每个虚拟机的内存文件映射至所述第一文件。
146.在一实施例中,所述装置还包括:保存单元,用于通过所述设定服务程序向所述第一qemu进程发送第三指令;所述第三指令用于指示所述第一qemu进程将工作状态调整为暂停状态;
147.在接收到所述第一qemu进程关于所述第三指令的第三响应的情况下,通过所述设定服务获取所述第一qemu进程对应的至少一个虚拟机的运行状态;所述第三响应表征所述第一qemu进程已将工作状态调整为暂停状态;
148.将所述至少一个虚拟机中每个虚拟机的运行状态保存至第二文件。
149.在一实施例中,所述装置还包括:删除单元,用于通过所述设定服务删除所述第二文件。
150.实际应用时,所述更新单元801、所述加载单元802、所述启动单元803、所述确定单元、所述映射单元、所述保存单元、所述删除单元可通过终端中的处理器,比如中央处理器(cpu,central processing unit)、数字信号处理器(dsp,digital signal processor)、微控制单元(mcu,microcontroller unit)或可编程门阵列(fpga,field-programmable gate array)等实现。
151.需要说明的是:上述实施例提供的虚拟机管理程序热升级装置在进行信息显示时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的虚拟机管理程序热升级装置与虚拟机管理程序热升级方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
152.基于上述程序模块的硬件实现,且为了实现本技术实施例的方法,本技术实施例还提供了一种电子设备。图9为本技术实施例提供的电子设备的硬件组成结构示意图,如图9所示,电子设备包括:
153.通信接口901,能够与其它设备比如网络设备等进行信息交互;
154.处理器902,与所述通信接口901连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述终端侧一个或多个技术方案提供的方法。而所述计算机程序存储在存储器903上。
155.具体地,所述处理器902,用于通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程;
156.在将所述第一qemu进程更新为第二qemu进程之后,通过所述设定服务,在确定所述虚拟机管理程序的第一kvm驱动没有被使用的情况下卸载所述第一kvm驱动,并加载第二kvm驱动;
157.通过所述设定服务启动所述第二qemu进程;其中,所述第二qemu进程的启动依赖于所述第二kvm驱动。
158.在一实施例中,所述处理器902还用于通过所述设定服务向所述第一qemu进程发
送第一指令;所述第一指令用于指示所述第一qemu进程将工作状态调整为退出状态;
159.在接收到所述第一qemu进程关于所述第一指令的第一响应的情况下,通过所述设定服务将第一qemu进程更新为第二qemu进程;所述第一响应表征所述第一qemu进程已将工作状态调整为退出状态。
160.在一实施例中,所述处理器902还用于通过所述设定服务判断所述第二qemu进程是否处于退出状态,得到判断结果;
161.在所述判断结果表征所述第二qemu进程处于退出状态的情况下,确定所述第一kvm驱动没有被使用。
162.在一实施例中,所述处理器902还用于通过所述设定服务程序向所述第二qemu进程发送第二指令;所述第二指令用于指示所述第二qemu进程调用第一文件以及加载第二文件;所述第一文件包括第一qemu进程对应的至少一个虚拟机中每个虚拟机的内存文件;所述第二文件用于记录第一qemu进程对应的至少一个虚拟机中每个虚拟机的运行状态;
163.在收到所述第二qemu进程关于所述第二指令的第二响应的情况下,确定启动所述第二qemu进程;所述第二响应表征所述第二qemu进程调用所述第一文件成功以及加载所述第二文件成功。
164.在一实施例中,在所述通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程之前,所述处理器902还用于通过所述设定服务获取所述第一qemu进程对应的至少一个虚拟机的内存文件;
165.将所述至少一个虚拟机中每个虚拟机的内存文件映射至所述第一文件。
166.在一实施例中,在所述通过设定服务将虚拟机管理程序的第一qemu进程更新为第二qemu进程之前,所述处理器902还用于通过所述设定服务程序向所述第一qemu进程发送第三指令;所述第三指令用于指示所述第一qemu进程将工作状态调整为暂停状态;
167.在接收到所述第一qemu进程关于所述第三指令的第三响应的情况下,通过所述设定服务获取所述第一qemu进程对应的至少一个虚拟机的运行状态;所述第三响应表征所述第一qemu进程已将工作状态调整为暂停状态;
168.将所述至少一个虚拟机中每个虚拟机的运行状态保存至第二文件。
169.在一实施例中,在所述确定启动所述第二qemu进程之后,所述处理器902还用于通过所述设定服务删除所述第二文件。
170.当然,实际应用时,电子设备中的各个组件通过总线系统904耦合在一起。可理解,总线系统904用于实现这些组件之间的连接通信。总线系统904除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图9中将各种总线都标为总线系统904。
171.本技术实施例中的存储器903用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。
172.可以理解,存储器903可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read-only memory)、可擦除可编程只读存储器(eprom,erasable programmable read-only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read-only memory)、磁性随机存取存储
器(fram,ferromagnetic random access memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd-rom,compact disc read-only memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,random access memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,static random access memory)、同步静态随机存取存储器(ssram,synchronous static random access memory)、动态随机存取存储器(dram,dynamic random access memory)、同步动态随机存取存储器(sdram,synchronous dynamic random access memory)、双倍数据速率同步动态随机存取存储器(ddrsdram,double data rate synchronous dynamic random access memory)、增强型同步动态随机存取存储器(esdram,enhanced synchronous dynamic random access memory)、同步连接动态随机存取存储器(sldram,synclink dynamic random access memory)、直接内存总线随机存取存储器(drram,direct rambus random access memory)。本技术实施例描述的存储器903旨在包括但不限于这些和任意其它适合类型的存储器。
173.上述本技术实施例揭示的方法可以应用于处理器902中,或者由处理器902实现。处理器902可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器902中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器902可以是通用处理器、dsp,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器902可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器903,处理器902读取存储器903中的程序,结合其硬件完成前述方法的步骤。
174.处理器902执行所述程序时实现本技术实施例的各个方法中的相应流程。
175.在示例性实施例中,本技术实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器903,上述计算机程序可由处理器902执行,以完成前述方法所述步骤。计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、flash memory、磁表面存储器、光盘、或cd-rom等存储器。
176.在本技术所提供的几个实施例中,应该理解到,所揭露的装置、终端和方法,可以通过其它的方式实现。以上所描述的设备实施例仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
177.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
178.另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
179.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
180.或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
181.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献