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

一种虚拟机热升级的方法及装置与流程

2023-03-20 14:29:27 来源:中国专利 TAG:


1.本技术属于软件开发技术领域,特别的涉及一种虚拟机热升级的方法及装置。


背景技术:

2.运行的虚拟机由用户态的虚拟化环境和内核态虚拟化环境组成,当升级虚拟化环境版本时,通常做法是冷重启虚拟机或者热迁移,其中,冷重启虚机技术会导致业务中断;热迁移技术可以做到较少的业务中断时间,但需要占用网络带宽且操作跨节点,步骤较复杂,失败后的回滚和问题定位较复杂。以上的传统升级方法对云主机用户体验和服务质量都会有影响。
3.热升级技术可以解决上述提到的这个问题,可回滚的热升级可以在虚拟机用户无感知的情况下完成虚拟机环境的更新,升级过程中失败能够及时回滚,还原到原虚拟化环境。然而现有技术中对于配置有网络虚拟设备(也即vhost设备)的虚拟机在进行热升级时,虚拟化环境只能保存网络虚拟设备部分的设备状态,因此无法在加载新虚拟化环境后恢复网络虚拟设备的运行,这导致在虚拟机热升级后网卡无法正常工作,严重情况甚至宕机。


技术实现要素:

4.本技术为解决上述提到的虚拟化环境只能保存网络虚拟设备部分的设备状态,因此无法在加载新虚拟化环境后恢复网络虚拟设备的运行,这导致在虚拟机热升级后网卡无法正常工作,严重情况甚至宕机等技术缺陷,提出一种虚拟机热升级的方法及装置,其技术方案如下:第一方面,本技术实施例提供了一种虚拟机热升级的方法,包括:当检测到虚拟机的升级动作时,在虚拟机的当前进程中创建子进程,并控制虚拟机处于暂停运行状态;保存虚拟机在当前虚拟化环境下的设备状态信息至预设路径中,并基于第一虚拟化软件保存网络虚拟设备的设备状态信息;基于虚拟机的当前虚拟化环境向第二虚拟化软件发送网络虚拟设备的重协商请求;其中,网络虚拟设备分别对应于第一虚拟化软件以及第二虚拟化软件,第一虚拟化软件与第二虚拟化软件之间建立有网络虚拟协议协商通路;在子进程中根据目标二进制程序加载虚拟机的目标虚拟化环境,并基于虚拟机的目标虚拟化环境对网络虚拟设备进行初始化处理;当网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求;在虚拟机的目标虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。
5.在第一方面的一种可选方案中,在子进程中根据目标二进制程序加载虚拟机的目
标虚拟化环境之后,还包括:当检测到虚拟机的目标虚拟化环境加载失败时,基于虚拟机的当前虚拟化环境对网络虚拟设备进行初始化处理;当网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求;在虚拟机的当前虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。
6.在第一方面的又一种可选方案中,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求,包括:当检测到网络虚拟设备的类型为第一类型时,基于第二虚拟化软件判断网络虚拟协议协商通路是否断开;当确定出网络虚拟协议协商通路处于断开状态时,按照预设时间间隔监测网络虚拟协议协商通路是否恢复通路状态;当确定出网络虚拟协议协商通路恢复至通路状态时,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求。
7.在第一方面的又一种可选方案中,在基于第一虚拟化软件保存网络虚拟设备的设备状态信息之后,基于虚拟机的当前虚拟化环境向第二虚拟化软件发送网络虚拟设备的重协商请求之前,还包括:由第一虚拟化软件通过网络虚拟协议协商通路向第二虚拟化软件发送卸载数据信息;基于第二虚拟化软件对卸载数据信息进行处理。
8.在第一方面的又一种可选方案中,由第一虚拟化软件通过网络虚拟协议协商通路向第二虚拟化软件发送卸载数据信息,包括:当检测到网络虚拟设备的类型为第二类型时,在卸载数据信息中的指定字段添加网络虚拟设备的重协商请求;由第一虚拟化软件通过网络虚拟协议协商通路向第二虚拟化软件发送添加有网络虚拟设备的重协商请求的卸载数据信息。
9.在第一方面的又一种可选方案中,在虚拟机的目标虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息之后,还包括:基于虚拟机的目标虚拟化环境,控制虚拟机由暂停运行状态恢复为运行状态。
10.在第一方面的又一种可选方案中,在虚拟机的当前进程中创建子进程之后,控制虚拟机处于暂停运行状态之前,还包括:将虚拟机的当前进程所对应的内存共享至子进程中。
11.第二方面,本技术实施例提供了一种虚拟机热升级的装置,包括:第一处理模块,用于当检测到虚拟机的升级动作时,在虚拟机的当前进程中创建子进程,并控制虚拟机处于暂停运行状态;信息保存模块,用于保存虚拟机在当前虚拟化环境下的设备状态信息至预设路径
中,并基于第一虚拟化软件保存网络虚拟设备的设备状态信息;第一请求模块,用于基于虚拟机的当前虚拟化环境向第二虚拟化软件发送网络虚拟设备的重协商请求;其中,网络虚拟设备分别对应于第一虚拟化软件以及第二虚拟化软件,第一虚拟化软件与第二虚拟化软件之间建立有网络虚拟协议协商通路;第二处理模块,用于在子进程中根据目标二进制程序加载虚拟机的目标虚拟化环境,并基于虚拟机的目标虚拟化环境对网络虚拟设备进行初始化处理;第二请求模块,用于当网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求;信息加载模块,用于在虚拟机的目标虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。
12.在第二方面的一种可选方案中,装置还包括:在子进程中根据目标二进制程序加载虚拟机的目标虚拟化环境之后,当检测到虚拟机的目标虚拟化环境加载失败时,基于虚拟机的当前虚拟化环境对网络虚拟设备进行初始化处理;当网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求;在虚拟机的当前虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。
13.在第二方面的又一种可选方案中,第二请求模块包括:当检测到网络虚拟设备的类型为第一类型时,基于第二虚拟化软件判断网络虚拟协议协商通路是否断开;当确定出网络虚拟协议协商通路处于断开状态时,按照预设时间间隔监测网络虚拟协议协商通路是否恢复通路状态;当确定出网络虚拟协议协商通路恢复至通路状态时,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求。
14.在第二方面的又一种可选方案中,装置还包括:在基于第一虚拟化软件保存网络虚拟设备的设备状态信息之后,基于虚拟机的当前虚拟化环境向第二虚拟化软件发送网络虚拟设备的重协商请求之前,由第一虚拟化软件通过网络虚拟协议协商通路向第二虚拟化软件发送卸载数据信息;基于第二虚拟化软件对卸载数据信息进行处理。
15.在第二方面的又一种可选方案中,装置还包括:当检测到网络虚拟设备的类型为第二类型时,在卸载数据信息中的指定字段添加网络虚拟设备的重协商请求;由第一虚拟化软件通过网络虚拟协议协商通路向第二虚拟化软件发送添加有网络虚拟设备的重协商请求的卸载数据信息。
16.在第二方面的又一种可选方案中,装置还包括:
在虚拟机的目标虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息之后,基于虚拟机的目标虚拟化环境,控制虚拟机由暂停运行状态恢复为运行状态。
17.在第二方面的又一种可选方案中,装置还包括:在虚拟机的当前进程中创建子进程之后,控制虚拟机处于暂停运行状态之前,将虚拟机的当前进程所对应的内存共享至子进程中。
18.第三方面,本技术实施例还提供了一种虚拟机热升级的装置,包括处理器以及存储器;处理器与存储器连接;存储器,用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于实现本技术实施例第一方面或第一方面的任意一种实现方式提供的虚拟机热升级的方法。
19.第四方面,本技术实施例提供了一种计算机存储介质,计算机存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,可实现本技术实施例第一方面或第一方面的任意一种实现方式提供的虚拟机热升级的方法。
20.在本技术实施例中,可在对虚拟机进行热升级时,当检测到虚拟机的升级动作时,在虚拟机的当前进程中创建子进程,并控制虚拟机处于暂停运行状态;保存虚拟机在当前虚拟化环境下的设备状态信息至预设路径中,并基于第一虚拟化软件保存网络虚拟设备的设备状态信息;基于虚拟机的当前虚拟化环境向第二虚拟化软件发送网络虚拟设备的重协商请求;其中,网络虚拟设备分别对应于第一虚拟化软件以及第二虚拟化软件,第一虚拟化软件与第二虚拟化软件之间建立有网络虚拟协议协商通路;在子进程中根据目标二进制程序加载虚拟机的目标虚拟化环境,并基于虚拟机的目标虚拟化环境对网络虚拟设备进行初始化处理;当网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求;在虚拟机的目标虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。通过引入网络虚拟协议重协商机制,不仅优化了热升级过程中因网络虚拟设备中断而造成的业务中断时间,而且基于重协商机制实现了热升级失败后网络虚拟设备的回滚,可以将热升级后的网络虚拟设备回滚到升级前的状态,大大降低热升级影响客户业务的风险。
附图说明
21.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1为本技术实施例提供的一种虚拟机热升级的方法的整体流程图;图2为本技术实施例提供的一种虚拟机热升级的方法的系统结构示意图;
图3为本技术实施例提供的一种虚拟机热升级的装置的结构示意图;图4为本技术实施例提供的又一种虚拟机热升级的装置的结构示意图。
具体实施方式
23.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
24.在下述介绍中,术语“第一”、“第二”仅为用于描述的目的,而不能理解为指示或暗示相对重要性。下述介绍提供了本技术的多个实施例,不同实施例之间可以替换或者合并组合,因此本技术也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征a、b、c,另一个实施例包含特征b、d,那么本技术也应视为包括含有a、b、c、d的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。
25.下面的描述提供了示例,并且不对权利要求书中阐述的范围、适用性或示例进行限制。可以在不脱离本技术内容的范围的情况下,对描述的元素的功能和布置做出改变。各个示例可以适当省略、替代或添加各种过程或组件。例如所描述的方法可以以所描述的顺序不同的顺序来执行,并且可以添加、省略或组合各种步骤。此外,可以将关于一些示例描述的特征组合到其他示例中。
26.在现有的技术中,对于网络虚拟设备(也即vhost设备)而言,其在设计实现时被天然的划分为两个部分,一部分可理解为第一虚拟化软件(也即对应为master端),用于负责virtio队列的初始化以及传输virtio数据面卸载的必要信息;另一部分可理解为第二虚拟化软件(也即对应为slave端),用于接收由第一虚拟化软件所传输的virtio数据面卸载的必要信息,并实现virtio队列上数据的卸载。然而在配置有该网络虚拟设备的虚拟机进行热升级时,虚拟机的虚拟化环境只能保存网络虚拟设备的master端所对应的设备状态,因此无法在加载新虚拟化环境后恢复vhost设备的运行,这导致在虚拟机热升级后网卡无法正常工作,严重情况甚至宕机。
27.接下来,本技术将结合一个或多个实施例,用以解决上述提到的技术缺陷。
28.请参阅图1,图1示出了本技术实施例提供的一种虚拟机热升级的方法的整体流程图。
29.如图1所示,该虚拟机热升级的方法至少可以包括以下步骤:步骤102、当检测到虚拟机的升级动作时,在虚拟机的当前进程中创建子进程,并控制虚拟机处于暂停运行状态。
30.具体地,在对配置有网络虚拟设备的虚拟机进行热升级时,可在当检测到虚拟机的升级动作时,表明该虚拟机需要对当前的虚拟化环境进行升级,进而可在该虚拟机的当前进程中创建一个用于加载目标虚拟化环境的子进程,并控制该虚拟机此时由运行状态转换为暂停运行状态。其中,该创建的子进程可以但不局限于执行与目标虚拟化环境所对应的二进制文件,且可基于该子进程所创建的目标虚拟化环境,对由该目标虚拟化环境所组成的虚拟机进行运行状态的恢复。
31.作为本技术实施例的一种可选,在虚拟机的当前进程中创建子进程之后,控制虚拟机处于暂停运行状态之前,还包括:
将虚拟机的当前进程所对应的内存共享至子进程中。
32.具体地,在虚拟机的当前进程中创建子进程之后,为保障该子进程的稳定运行,还可将虚拟机的当前进程所对应的内存共享至该子进程中,以便于该子进程可在共享的内存下执行与目标虚拟化环境所对应的二进制文件。
33.步骤104、保存虚拟机在当前虚拟化环境下的设备状态信息至预设路径中,并基于第一虚拟化软件保存网络虚拟设备的设备状态信息。
34.具体地,在控制虚拟机处于暂停运行状态之后,可将该虚拟机在当前虚拟化环境下的设备状态信息保存至预设路径中,该预设路径可以但不局限于为指定的内存或是磁盘中,同时还可由第一虚拟化软件对网络虚拟设备的设备状态信息进行保存,以便于后续在目标虚拟化环境中重新加载该虚拟机在当前虚拟化环境下的设备状态信息,以及重新加载网络虚拟设备的设备状态信息。
35.其中,第一虚拟化软件可对应于网络虚拟设备,也即是说,该第一虚拟化软件可以但不局限于理解为网络虚拟设备的master端,且该master端所保存的网络虚拟设备的设备状态信息,实质上是模拟该网络虚拟设备所必需的状态信息。
36.步骤106、基于虚拟机的当前虚拟化环境向第二虚拟化软件发送网络虚拟设备的重协商请求。
37.具体地,在对虚拟机在当前虚拟化环境下的设备状态信息以及网络虚拟设备的设备状态信息进行保存之后,可基于该虚拟机的当前虚拟化环境向第二虚拟化软件发送网络虚拟设备的重协商请求,其中,该第二虚拟化软件可对应于网络虚拟设备,也即是说,该第二虚拟化软件可以但不局限于理解为网络虚拟设备的slave端,该网络虚拟设备的slave端增加有网络虚拟协议的重协商功能,以便于接收网络虚拟设备的重协商请求。
38.此处,网络虚拟设备的slave端在接收网络虚拟设备的重协商请求之前,可接收由网络虚拟设备的master端通过网络虚拟协议协商通路所传输的卸载数据信息,该卸载数据信息对应为virtio数据面卸载的必要信息,并可对该卸载数据信息进行处理,例如但不局限于为对virtio队列数据面的数据进行处理。需要说明的是,此处卸载数据信息可保障网络虚拟设备的virtio数据面卸载功能可以正常工作,且在本技术实施例中,该卸载数据信息不进行保存,仅需在第一虚拟化软件与第二虚拟化软件进行网络虚拟协议协商之前搜集即可。
39.还可以理解的是,在本技术实施例中虚拟机的当前虚拟化环境可以但不局限于运行在第一虚拟化软件中,也即是说,该第一虚拟化软件可根据虚拟机在当前虚拟化环境下的设备状态信息加载出虚拟机的当前虚拟化环境,并由该第一虚拟化软件向第二虚拟化软件发送网络虚拟设备的重协商请求,且不限定于此。
40.作为本技术实施例的又一种可选,当检测到网络虚拟设备的类型为第二类型时,该第二类型可以但不局限于为非连接的网络虚拟协商通路(也即第一虚拟化软件与第二虚拟化软件之间建立有非连接的网络虚拟协商通路),可在上述提到的卸载数据信息中的指定字段处添加网络虚拟设备的重协商请求,以使该第二虚拟化软件在接收到该添加的网络虚拟设备的重协商请求之后,可在网络虚拟设备完成初始化之后,周期性的向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求。例如以第二类型的网络虚拟设备为基于系统调用的vhost-net或者vhost-vdpa设备为例,可在卸载数据信息
中的request字段新增网络虚拟设备的重协商请求,并在网络虚拟设备完成初始化之后,周期性的向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求。
41.步骤108、在子进程中根据目标二进制程序加载虚拟机的目标虚拟化环境,并基于虚拟机的目标虚拟化环境对网络虚拟设备进行初始化处理。
42.具体地,在基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求之前,可在子进程中运行目标二进制程序,以加载出相应的虚拟机的目标虚拟化环境,并在该虚拟机的目标虚拟化环境下对网络虚拟设备进行复位处理以及初始化处理,以便于在网络虚拟设备完成初始化之后,第一虚拟化软件可响应网络虚拟协议协商请求,并快速与第二虚拟化软件完成网络虚拟协议协商。
43.步骤110、当网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求。
44.具体地,在网络虚拟设备完成初始化之后,还可判断该网络虚拟设备的类型,当检测到该网络虚拟设备的类型为第一类型时,该第一类型可以但不局限于为基于socket连接的网络虚拟协商通路(也即第一虚拟化软件与第二虚拟化软件之间建立有基于socket连接的网络虚拟协商通路),基于第二虚拟化软件判断该网络虚拟协商通路是否断开。可以理解的是,此处基于socket连接的网络虚拟协商通路在实现时第一虚拟化软件会主动断开和第二虚拟化软件之间的网络虚拟协商通路,基于此在该第二虚拟化软件检测到网络虚拟协商通路断开时,可由该第二虚拟化软件按照预设时间间隔监测网络虚拟协议协商通路是否恢复通路状态。当该第二虚拟化软件后续检测到网络虚拟协商通路恢复为通路状态时,可接着由该第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求,直至第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商成功。
45.需要说明的是,在本技术实施例中判断该网络虚拟设备的类型的步骤还可以但不局限于在步骤102或是在步骤104或是在步骤106之前实施,以便于提高整体的升级效率。
46.步骤112、在虚拟机的目标虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。
47.具体地,在完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,可由虚拟机的目标虚拟化环境从预设路径中提取并加载虚拟机在当前虚拟化环境下的设备状态信息,并还可第一虚拟化软件对网络虚拟设备的设备状态信息进行重新加载,以使网络虚拟设备恢复正常,且由于已经完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商,该网络虚拟设备的virtio数据面卸载功能仍然可以正常工作。
48.作为本技术实施例的又一种可选,在虚拟机的目标虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息之后,还包括:基于虚拟机的目标虚拟化环境,控制虚拟机由暂停运行状态恢复为运行状态。
49.具体地,在基于虚拟机的目标虚拟化环境重新加载虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息之后,可控制由该目标虚拟化环境所组成的虚拟机恢复为运行状态,进而虚拟机的整个热升级过程结束。
50.作为本技术实施例的又一种可选,在子进程中根据目标二进制程序加载虚拟机的目标虚拟化环境之后,还包括:当检测到虚拟机的目标虚拟化环境加载失败时,基于虚拟机的当前虚拟化环境对网络虚拟设备进行初始化处理;当网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求;在虚拟机的当前虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。
51.具体地,当检测到虚拟机的目标虚拟化环境加载失败时,为了回滚到虚拟机的当前虚拟化环境,可由虚拟机的当前虚拟化环境对网络虚拟设备进行初始化处理,该虚拟机的当前虚拟化环境可以但不局限于运行在第一虚拟化软件中,并在网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求,直至加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。可以理解的是,在本技术实施例中虚拟机的回滚流程与热升级成功过程的逻辑相同。
52.此处可参阅图2示出的本技术实施例提供的一种虚拟机热升级的方法的系统结构示意图。如图2所示,在虚拟机热升级的方法应用到qemu-kvm虚拟化解决方案时,该虚拟机热升级的方法所对应的系统可包括用于热升级的虚拟机、与网络虚拟设备对应的第一虚拟化软件以及第二虚拟化软件(也即vhost设备的slave端),其中,vhost设备的master端为用于控制第一虚拟化软件的虚拟机监管程序(也即qemu),第一虚拟化软件与第二虚拟化软件之间建立有网络虚拟协议协商通路。其具体步骤如下:步骤1、在完成设备状态信息的保存后,进入下一阶段前针对vhost设备,qemu作为网络虚拟协议的master端,主动发起vhost设备的重协商请求,然后继续热升级下一阶段工作;步骤2、网络虚拟协议的slave端在收到请求后,开始重新向qemu发起协商。其中,对于vhost-user网卡设备,在具体实施时dpdk软件模块作为网络虚拟协议的slave端,会检测到重连接的请求,然后开始向qemu周期性发起网络虚拟协议协商,直到成功;步骤3、在热升级进入设备状态加载阶段前,对于vhost设备,qemu首先复位该并初始化该vhost设备,使其响应网络虚拟协议协商的请求,并与slave端完成网络虚拟协议协商;步骤4、在热升级的设备状态加载阶段,qemu对于vhost设备进行加载,由于qemu对于vhost设备的网络虚拟协议协商的相关状态不做保存,只加载其它设备状态,因此vhost设备状态将恢复正常。由于vhost设备的网络虚拟协议协商在设备恢复前已经完成,因此virtio数据面卸载功能仍然可以正常工作;步骤5、在热升级回滚阶段,当需要vhost设备回滚时,虚拟机的当前虚拟化环境同样复位该vhost设备,完成与dpdk的网络虚拟协议协商后,然后加载之前保存的vhost设备状态,完成回滚。
53.在上述提到的一个或多个实施例中,相比与传统的虚拟机热升级技术,具有如下
有益效果:1)传统虚拟机热升级方案在处理vhost设备时,会重新创建一个vhost设备,新虚拟化环境按照创建vhost设备的流程初始化该设备,热升级成功后虚拟机使用新创建的vhost设备。因此升级过程中虚机的一个vhost设备会同时存在两个vhost的后端,比如vhost-net会同时存在两个tap设备,vhost-user会同时存在两个socket路径和openvswitch的port端口等,上层业务软件需要识别出虚机处于热升级状态而对其进行特殊处理。而且热升级成功后vhost设备后端的标识(比如tap设备的名字和socket路径)会更新,上层业务软件和质量服务软件为了保证业务连续性也需要做特殊处理,适配复杂度大大增加。相比传统方案本技术提出的方案复用原有vhost设备,可以实现热升级任务的原子性,上层业务软件支持热升级不会有任何适配工作,极大降低虚拟机热升级引起的业务软件适配复杂度;2)传统虚拟机热升级方案无法支持vhost设备升级失败可回滚,原因是传统方案在新虚拟化环境使用新创建vhost设备,一旦失败回滚,不能重新协商vhost protocol,进而无法继续使用原vhost设备;3)传统虚拟机热升级方案在升级过程中需要新建vhost设备后端,比如vhost-net网卡需要新建tap设备,vhost-user网卡需要新创openvswitch端口,虚拟化环境升级完成后业务软件需要重新执行业务逻辑,比如vhost网卡需要重新下发流表。因此vhost设备的新建过程和业务逻辑配置过程使得整个热升级时间和业务中断时间增加。
54.请参阅图3,图3示出了本技术实施例提供的一种虚拟机热升级的装置的结构示意图。
55.如图3所示,该虚拟机热升级的装置至少可以包括第一处理模块301、信息保存模块302、第一请求模块303、第二处理模块304、第二请求模块305以及信息加载模块306,其中:第一处理模块301,用于当检测到虚拟机的升级动作时,在虚拟机的当前进程中创建子进程,并控制虚拟机处于暂停运行状态;信息保存模块302,用于保存虚拟机在当前虚拟化环境下的设备状态信息至预设路径中,并基于第一虚拟化软件保存网络虚拟设备的设备状态信息;第一请求模块303,用于基于虚拟机的当前虚拟化环境向第二虚拟化软件发送网络虚拟设备的重协商请求;其中,网络虚拟设备分别对应于第一虚拟化软件以及第二虚拟化软件,第一虚拟化软件与第二虚拟化软件之间建立有网络虚拟协议协商通路;第二处理模块304,用于在子进程中根据目标二进制程序加载虚拟机的目标虚拟化环境,并基于虚拟机的目标虚拟化环境对网络虚拟设备进行初始化处理;第二请求模块305,用于当网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求;信息加载模块306,用于在虚拟机的目标虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。
56.在一些可能的实施例中,装置还包括:在子进程中根据目标二进制程序加载虚拟机的目标虚拟化环境之后,
当检测到虚拟机的目标虚拟化环境加载失败时,基于虚拟机的当前虚拟化环境对网络虚拟设备进行初始化处理;当网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求;在虚拟机的当前虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。
57.在一些可能的实施例中,第二请求模块包括:当检测到网络虚拟设备的类型为第一类型时,基于第二虚拟化软件判断网络虚拟协议协商通路是否断开;当确定出网络虚拟协议协商通路处于断开状态时,按照预设时间间隔监测网络虚拟协议协商通路是否恢复通路状态;当确定出网络虚拟协议协商通路恢复至通路状态时,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求。
58.在一些可能的实施例中,装置还包括:在基于第一虚拟化软件保存网络虚拟设备的设备状态信息之后,基于虚拟机的当前虚拟化环境向第二虚拟化软件发送网络虚拟设备的重协商请求之前,由第一虚拟化软件通过网络虚拟协议协商通路向第二虚拟化软件发送卸载数据信息;基于第二虚拟化软件对卸载数据信息进行处理。
59.在一些可能的实施例中,装置还包括:当检测到网络虚拟设备的类型为第二类型时,在卸载数据信息中的指定字段添加网络虚拟设备的重协商请求;由第一虚拟化软件通过网络虚拟协议协商通路向第二虚拟化软件发送添加有网络虚拟设备的重协商请求的卸载数据信息。
60.在一些可能的实施例中,装置还包括:在虚拟机的目标虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息之后,基于虚拟机的目标虚拟化环境,控制虚拟机由暂停运行状态恢复为运行状态。
61.在一些可能的实施例中,装置还包括:在虚拟机的当前进程中创建子进程之后,控制虚拟机处于暂停运行状态之前,将虚拟机的当前进程所对应的内存共享至子进程中。
62.本领域的技术人员可以清楚地了解到本技术实施例的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(field-programmable gate array,fpga)、集成电路(integrated circuit,ic)等。
63.请参阅图4,图4示出了本技术实施例提供的又一种虚拟机热升级的装置的结构示意图。
64.如图4所示,该虚拟机热升级的装置400可以包括至少一个处理器401、至少一个网络接口404、用户接口403、存储器405以及至少一个通信总线402。
65.其中,通信总线402可用于实现上述各个组件的连接通信。
66.其中,用户接口403可以包括按键,可选用户接口还可以包括标准的有线接口、无线接口。
67.其中,网络接口404可以但不局限于包括蓝牙模块、nfc模块、wi-fi模块等。
68.其中,处理器401可以包括一个或者多个处理核心。处理器401利用各种接口和线路连接虚拟机热升级的装置400内的各个部分,通过运行或执行存储在存储器405内的指令、程序、代码集或指令集,以及调用存储在存储器405内的数据,执行路由虚拟机热升级的装置400的各种功能和处理数据。可选的,处理器401可以采用dsp、fpga、pla中的至少一种硬件形式来实现。处理器401可集成cpu、gpu和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器401中,单独通过一块芯片进行实现。
69.其中,存储器405可以包括ram,也可以包括rom。可选的,该存储器405包括非瞬时性计算机可读介质。存储器405可用于存储指令、程序、代码、代码集或指令集。存储器405可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器405可选的还可以是至少一个位于远离前述处理器401的存储装置。如图4所示,作为一种计算机存储介质的存储器405中可以包括操作系统、网络通信模块、用户接口模块以及虚拟机热升级的应用程序。
70.具体地,处理器401可以用于调用存储器405中存储的虚拟机热升级的应用程序,并具体执行以下操作:当检测到虚拟机的升级动作时,在虚拟机的当前进程中创建子进程,并控制虚拟机处于暂停运行状态;保存虚拟机在当前虚拟化环境下的设备状态信息至预设路径中,并基于第一虚拟化软件保存网络虚拟设备的设备状态信息;基于虚拟机的当前虚拟化环境向第二虚拟化软件发送网络虚拟设备的重协商请求;其中,网络虚拟设备分别对应于第一虚拟化软件以及第二虚拟化软件,第一虚拟化软件与第二虚拟化软件之间建立有网络虚拟协议协商通路;在子进程中根据目标二进制程序加载虚拟机的目标虚拟化环境,并基于虚拟机的目标虚拟化环境对网络虚拟设备进行初始化处理;当网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求;在虚拟机的目标虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。
71.在一些可能的实施例中,在子进程中根据目标二进制程序加载虚拟机的目标虚拟
化环境之后,还包括:当检测到虚拟机的目标虚拟化环境加载失败时,基于虚拟机的当前虚拟化环境对网络虚拟设备进行初始化处理;当网络虚拟设备完成初始化之后,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求;在虚拟机的当前虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息。
72.在一些可能的实施例中,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求,包括:当检测到网络虚拟设备的类型为第一类型时,基于第二虚拟化软件判断网络虚拟协议协商通路是否断开;当确定出网络虚拟协议协商通路处于断开状态时,按照预设时间间隔监测网络虚拟协议协商通路是否恢复通路状态;当确定出网络虚拟协议协商通路恢复至通路状态时,基于第二虚拟化软件向第一虚拟化软件发送与网络虚拟设备的重协商请求对应的网络虚拟协议协商请求。
73.在一些可能的实施例中,在基于第一虚拟化软件保存网络虚拟设备的设备状态信息之后,基于虚拟机的当前虚拟化环境向第二虚拟化软件发送网络虚拟设备的重协商请求之前,还包括:由第一虚拟化软件通过网络虚拟协议协商通路向第二虚拟化软件发送卸载数据信息;基于第二虚拟化软件对卸载数据信息进行处理。
74.在一些可能的实施例中,由第一虚拟化软件通过网络虚拟协议协商通路向第二虚拟化软件发送卸载数据信息,包括:当检测到网络虚拟设备的类型为第二类型时,在卸载数据信息中的指定字段添加网络虚拟设备的重协商请求;由第一虚拟化软件通过网络虚拟协议协商通路向第二虚拟化软件发送添加有网络虚拟设备的重协商请求的卸载数据信息。
75.在一些可能的实施例中,在虚拟机的目标虚拟化环境中完成第一虚拟化软件与第二虚拟化软件的网络虚拟协议协商之后,加载保存至预设路径中的虚拟机在当前虚拟化环境下的设备状态信息,以及加载网络虚拟设备的设备状态信息之后,还包括:基于虚拟机的目标虚拟化环境,控制虚拟机由暂停运行状态恢复为运行状态。
76.在一些可能的实施例中,在虚拟机的当前进程中创建子进程之后,控制虚拟机处于暂停运行状态之前,还包括:将虚拟机的当前进程所对应的内存共享至子进程中。
77.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、dvd、cd-rom、微型驱动器以及磁光盘、rom、ram、eprom、eeprom、dram、vram、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器ic),或适合于存储指令和/
或数据的任何类型的媒介或设备。
78.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
79.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
80.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
81.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
82.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
83.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(read-only memory, rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
84.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(read-only memory, rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
85.以上者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献