容器和虚拟机之间的热迁移方法及电子设备与流程

文档序号:30965452发布日期:2022-07-30 17:00阅读:158来源:国知局
容器和虚拟机之间的热迁移方法及电子设备与流程

1.本技术涉及虚拟化技术领域,特别涉及一种容器和虚拟机之间的热迁移方法及电子设备。


背景技术:

2.当虚拟机在物理机上运行时,物理机可能存在资源分配不均,造成负载过重或过轻的情况。另外,物理机存在硬件更换、软件升级、组网调整、故障处理等操作,如何在不中断业务的情况下完成这些操作十分重要。虚拟机热迁移技术可以在业务连续前提下,完成负载均衡或上述操作,提升用户体验和工作效率。虚拟机热迁移通常是将整个虚拟机的运行状态完整保存下来,同时可以快速恢复到原有的甚至不同的硬件平台上。虚拟机恢复后,仍然可以平滑运行,用户感知不到任何差异。
3.在虚拟化技术应用越来越广泛的大背景下,容器作为一种轻量化的操作系统虚拟化形式,因其轻量化、系统资源占用量较小、易于部署且具有较高的灵活性等优点,应用也越来越广泛,对容器进行热迁移的需求也越来越大。但通常情况下只有虚拟机和虚拟机之间能够进行热迁移,或者容器和容器之间能够进行热迁移,目前尚未有一种方案能够实现容器和虚拟机之间的热迁移。


技术实现要素:

4.本技术提供了一种容器和虚拟机之间的热迁移方法及电子设备,本技术实施例采用的技术方案如下。
5.本技术第一方面提供了一种容器和虚拟机之间的热迁移方法,包括:
6.获取第一请求,其中,所述第一请求包括将源设备中的进程迁移到目标设备的请求;所述源设备为容器,所述目标设备为虚拟机;或者,所述源设备为虚拟机,所述目标设备为容器;
7.基于所述第一请求,获取第一进程的第一标识;
8.基于所述第一标识,获取第一关系信息,以及与所述第一关系信息相关联的多个第一资源组;其中,所述第一关系信息用于标识所述第一进程的逻辑地址空间与物理地址空间之间的映射关系,所述第一资源组存储在所述第一进程的物理地址空间中;
9.将所述第一关系信息和多个所述第一资源组发送至所述目标设备。
10.在一些实施例中,所述将所述第一关系信息和多个所述第一资源组发送至所述目标设备,包括:
11.获取各所述第一资源组的第一热度信息;其中,所述第一热度信息表征所述第一资源组的访问频率;
12.确定多个所述第一资源组中访问频率大于第一阈值的目标资源组;
13.将所述第一关系信息和所述目标资源组发送至所述目标设备。
14.在一些实施例中,所述将所述第一关系信息和多个所述第一资源组发送至所述目
标设备,还包括:
15.获取所述目标设备的设备信息;其中,所述设备信息用于标识所述目标设备的数据处理能力;
16.基于所述设备信息,确定所述第一阈值。
17.在一些实施例中,所述基于所述第一标识,获取第一关系信息,以及与所述第一关系信息相关联的多个第一资源组,包括:
18.基于所述第一标识,获取所述第一关系信息;其中,所述第一关系信息用于标识第一逻辑单元和第一物理单元之间的一一映射关系,所述第一进程的逻辑地址空间包括多个第一逻辑单元,所述第一进程的物理地址空间包括多个第一物理单元,所述第一物理单元用于存储一所述第一资源组;
19.基于所述第一关系信息,获取各所述第一物理单元中存储的所述第一资源组。
20.在一些实施例中,所述基于所述第一标识,获取第一关系信息,以及与所述第一关系信息相关联的多个第一资源组,还包括:
21.基于所述第一标识,获取第二关系信息,其中,所述第一进程的逻辑地址空间包括多个第二逻辑单元,所述第一进程的物理地址空间包括多个第二物理单元,所述第二关系信息用于标识所述第二逻辑单元和所述第二物理单元之间的一一映射关系,所述第二物理单元用于存储所述第一进程的第二资源组;
22.基于所述第二关系信息,获取各所述第二物理单元中存储的所述第二资源组;
23.获取用于标识目标物理单元的容量的第一容量信息;其中,所述目标物理单元为所述目标设备的物理地址空间的基本组成单元;
24.基于所述第一容量信息,确定所述第一逻辑单元、所述第一物理单元、所述第一资源组和所述第一关系信息;
25.其中,所述第一逻辑单元由所述第二逻辑单元拆分形成或由多个所述第二逻辑单元组合形成,所述第一物理单元由所述第二物理单元拆分形成或由多个所述第二物理单元组合形成,所述第一资源组由所述第二资源组拆分形成或由多个所述第二资源组组合形成。
26.在一些实施例中,所述基于所述第一容量信息,确定所述第一逻辑单元、所述第一物理单元、所述第一资源组和所述第一关系信息,包括:
27.获取所述第二资源组的第二热度信息;其中,所述第二热度信息表征所述第二资源组的访问频率;
28.基于所述第一容量信息和所述第二热度信息,将访问频率之间差值小于第二阈值的多个所述第二资源组合并为所述第一资源组,将相应的多个所述第二逻辑单元合并为所述第一逻辑单元,将相应的多个所述第二物理单元合并为所述第一物理单元,并生成所述第一关系信息。
29.在一些实施例中,所述方法还包括:
30.获取所述源设备的状态信息;其中,所述状态信息用于表征所述源设备当前的运行状态;
31.在将所述第一关系信息和多个所述第一资源组发送至所述目标设备之前,将所述状态信息发送至所述目标设备。
32.本技术第二方面提供了一种容器和虚拟机之间的热迁移方法,包括:
33.获取第一关系信息和多个第一资源组;其中,所述第一关系信息用于标识第一进程在源设备中的逻辑地址空间与物理地址空间之间的映射关系;
34.基于所述第一关系信息,获取第三关系信息;其中,所述第三关系信息用于标识所述第一进程在目标设备中的逻辑地址空间与物理地址空间的映射关系;所述源设备为容器,所述目标设备为虚拟机;或者,所述源设备为虚拟机,所述目标设备为容器;
35.基于所述第三关系信息和多个所述第一资源组,在所述目标设备中恢复运行所述第一进程。
36.本技术第三方面提供了一种电子设备,包括:
37.第一获取模块,用于获取第一请求,其中,所述第一请求包括将源设备中的进程迁移到目标设备的请求;所述源设备为容器,所述目标设备为虚拟机;或者,所述源设备为虚拟机,所述目标设备为容器;
38.第二获取模块,用于基于所述第一请求,获取第一进程的第一标识;
39.第三获取模块,用于基于所述第一标识,获取第一关系信息,以及与所述第一关系信息相关联的多个第一资源组;其中,所述第一关系信息用于标识所述第一进程的逻辑地址空间与物理地址空间之间的映射关系,所述第一资源组存储在所述第一进程的物理地址空间中;
40.发送模块,用于将所述第一关系信息和多个所述第一资源组发送至所述目标设备。
41.本技术第四方面提供了一种电子设备,包括:
42.第四获取模块,用于获取第一关系信息和多个第一资源组;其中,所述第一关系信息用于标识第一进程在源设备中的逻辑地址空间与物理地址空间之间的映射关系;
43.第五获取模块,用于基于所述第一关系信息,获取第三关系信息;其中,所述第三关系信息用于标识所述第一进程在目标设备中的逻辑地址空间与物理地址空间的映射关系;所述源设备为容器,所述目标设备为虚拟机;或者,所述源设备为虚拟机,所述目标设备为容器;
44.恢复模块,用于基于所述第三关系信息和多个所述第一资源组,在所述目标设备中恢复运行所述第一进程。
45.本技术实施例的容器和虚拟机之间的热迁移方法,用于将容器迁移到虚拟机,或者将虚拟机迁移到容器,通过获取第一请求,第一请求包括将源设备中的进程迁移到目标设备的请求,基于所述第一请求获取第一进程的第一标识,基于第一标识获取第一关系信息,第一关系信息用于标识第一进程的逻辑地址空间与物理地址空间之间的映射关系,第一进程的各个第一资源组存储在其物理地址空间中,基于第一关系信息能够获取多个第一资源组,将第一关系信息和多个第一资源组发送至目标设备,使得目标设备能够基于第一关系信息和多个第一资源组在目标设备上恢复第一进程,不仅为容器和虚拟机之间进行热迁移提供了一种可行的实施方案,而且迁移效率较高,有益于缩短热迁移过程中的宕机时间,以提高用户体验。
附图说明
46.图1为本技术第一种实施例的容器和虚拟机之间的热迁移方法的流程图;
47.图2为步骤s130的一种实施例的流程图;
48.图3为步骤s130的另一种实施例的流程图;
49.图4为步骤s140的一种实施例的流程图;
50.图5为步骤s140的另一种实施例的流程图;
51.图6为本技术第二种实施例的容器和虚拟机之间的热迁移方法的流程图;
52.图7为本技术第三种实施例的容器和虚拟机之间的热迁移方法的流程图;
53.图8为本技术第三种实施例的容器和虚拟机之间的热迁移方法的场景图;
54.图9为本技术第四种实施例的电子设备的结构框图;
55.图10为本技术第五种实施例的电子设备的结构框图。
具体实施方式
56.此处参考附图描述本技术的各种方案以及特征。
57.应理解的是,可以对此处申请的实施例做出各种修改。因此,上述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本技术的范围和精神内的其他修改。
58.包含在说明书中并构成说明书的一部分的附图示出了本技术的实施例,并且与上面给出的对本技术的大致描述以及下面给出的对实施例的详细描述一起用于解释本技术的原理。
59.通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本技术的这些和其它特性将会变得显而易见。
60.还应当理解,尽管已经参照一些具体实例对本技术进行了描述,但本领域技术人员能够确定地实现本技术的很多其它等效形式,它们具有如权利要求所述的特征并因此都位于借此所限定的保护范围内。
61.当结合附图时,鉴于以下详细说明,本技术的上述和其他方面、特征和优势将变得更为显而易见。
62.此后参照附图描述本技术的具体实施例;然而,应当理解,所申请的实施例仅仅是本技术的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本技术模糊不清。因此,本文所申请的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本技术。
63.本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本技术的相同或不同实施例中的一个或多个。
64.本技术实施例提供了一种容器和虚拟机之间的热迁移方法,包括:
65.获取第一请求,其中,所述第一请求包括将源设备中的进程迁移到目标设备的请求;所述源设备为容器,所述目标设备为虚拟机,或者所述源设备为虚拟机,所述目标设备为容器;
66.基于所述第一请求,获取第一进程的第一标识;
67.基于所述第一标识,获取第一关系信息,以及与所述第一关系信息相关联的多个第一资源组;其中,所述第一关系信息用于标识所述第一进程的逻辑地址空间与物理地址空间之间的映射关系,所述第一资源组存储在所述第一进程的物理地址空间中;
68.将所述第一关系信息和多个所述第一资源组发送至所述目标设备。
69.本技术实施例的容器和虚拟机之间的热迁移方法,用于将容器迁移到虚拟机,或者将虚拟机迁移到容器,通过获取第一请求,第一请求包括将源设备中的进程迁移到目标设备的请求,基于所述第一请求获取第一进程的第一标识,基于第一标识获取第一关系信息,第一关系信息用于标识第一进程的逻辑地址空间与物理地址空间之间的映射关系,第一进程的第一资源组存储在第一进程的物理地址空间中,基于第一关系信息能够获取多个第一资源组,将第一关系信息和多个第一资源组发送至目标设备,使得目标设备能够基于第一关系信息和多个第一资源组在目标设备上恢复第一进程,不仅为容器和虚拟机之间进行热迁移提供了一种可行的实施方案,而且迁移效率较高,有益于缩短热迁移过程中的宕机时间,以提高用户体验。
70.以下结合附图和具体实施例对本技术实施例的容器和虚拟机之间的热迁移方法的步骤和原理进行详细说明。
71.本技术第一种实施例提供了一种容器和虚拟机之间的热迁移方法,应用在源设备。参见图1所示,本技术第一种实施例的容器和虚拟机之间的热迁移方法具体可包括如下步骤。
72.s110,获取第一请求,其中,所述第一请求包括将源设备中的进程迁移到目标设备的请求。
73.可选的,该源设备可为容器,相对应的,目标设备可为虚拟机。或者,该源设备也可为虚拟机,相对应的,该目标设备可为容器。也即,该方法可用于将容器中的进程迁移至虚拟机,也可用于将虚拟机中的进程迁移至容器。可选的,该源设备可运行在第一物理机上,目标设备可运行在第二物理机上。第一物理机和第二物理机可为单个服务器、多个服务器组成的分布式集群系统或其他类型的电子设备。
74.可选的,源设备可从管理员所使用的终端处获取第一请求。例如,管理员对分布式集群系统进行管理过程中,如果确定第一物理机需要进行硬件更换、软件升级、组网调试或故障处理等操作时,可通过所使用的终端设备向源设备发送第一请求,以请求将源设备上的进程迁移至目标设备。
75.可选的,源设备也可从例如控制设备获取第一请求。以分布式集群系统或云服务平台为例,分布式集群系统或云服务平台可具有控制设备,在一个物理机的工作负载较大时,或者出于降低分布式进群系统的整体功耗考虑,控制设备可基于负载均衡规则,或基于功耗控制规则自动向系统中的一台物理机发送第一请求,以请求将该物理机上的源设备迁移到另一台物理机上。
76.可选的,该第一请求可包括将源设备中的进程迁移到目标设备的请求,还可包括其他信息,例如,该第一请求还可包括目标设备所运行的第二物理机的地址信息,和/或指示源设备与目标设备建立通信连接的指令等等。
77.s120,基于所述第一请求,获取第一进程的第一标识。
78.可选的,第一进程为源设备上运行的进程,可以理解的是,源设备上运行的进程可
包括处于运行状态的进程、处于就绪状态的进程和处于阻塞状态的进程。
79.可选的,源设备在获取到第一请求的情况下,可基于第一请求确定当前源设备上运行的第一进程,并获取第一进程的第一标识。该第一标识可包括能够唯一标识第一进程的信息,例如第一标识可包括进程编号(pid)。
80.以源设备为虚拟机为例,虚拟机自身具有操作系统,操作系统通常具有任务管理器或进程管理器,在获取到第一请求的情况下,可基于第一请求调取例如进程管理器,通过进程管理器确定虚拟机上运行的第一进程,并获取各个第一进程的pid。
81.以源设备为容器为例,可在源设备的/proc/$pid/task目录下递归搜集容器及其所属工作负载的进程、子进程及线程等等,以确定源设备上运行的第一进程,并获取第一进程的第一标识。
82.可选的,在获取第一进程的第一标识的基础上,还可冻结源设备上的第一进程。仍然以源设备为容器为例,在从源设备的/proc/$pid/task目录下递归搜集容器到容器中的各个第一进程的基础上,还可通过调用ptrace()函数,分配ptrace_interrupt指令来冻结第一进程。仍然以源设备为容器为例,也可通过第一物理机的内核中的cgroup的freezer子系统批量冻结一组第一进程。以源设备为虚拟机为例,可通过例如任务管理器或进程管理器冻结各个第一进程。
83.s130,基于所述第一标识,获取第一关系信息,以及与所述第一关系信息相关联的多个第一资源组。其中,所述第一关系信息用于标识所述第一进程的逻辑地址空间与物理地址空间之间的映射关系,所述第一资源组存储在所述第一进程的物理地址空间中。
84.可选的,第一物理机可基于相对应的逻辑单元和物理单元为源设备中的第一进程分配地址空间,逻辑单元作为逻辑地址空间的基本组成单元,物理单元作为物理地址空间的基本组成单元。当第一进程需要内存空间时,第一物理机可为该第一进程分配一个逻辑单元,并对应的分配一个物理单元,该逻辑单元和物理单元的容量相同,且逻辑单元映射到物理单元,可通过例如第一关系信息来记录逻辑单元和物理单元之间的映射关系。物理单元用于实际存储第一进程的资源,每个物理单元中的资源形成一个第一资源组。在一个逻辑单元和物理单元使用完毕时,该第一物理机可为该第一进程分配另一个逻辑单元和另一个物理单元。
85.例如,第一物理机可基于分页存储管理方式为源设备中的进程分配地址空间,第一物理机可将页作为逻辑地址空间的基本单位,将块作为物理地址空间的基本单位,第一物理机可以页为单位为第一进程分配逻辑地址空间,并以块为单位为第一进程分配物理地址空间,通过页表记录记录逻辑地址空间和物理地址空间的映射关系,每个块中所存储的资源可构成一个第一资源组。类似的,第二物理机也可基于分页存储管理方式为目标设备中的进程分配地址空间。
86.可选的,在获取到第一标识的情况下,可而基于第一标识获取该第一进程的第一关系信息,第一关系信息用于标识第一进程的逻辑地址空间与物理地址空间之间的映射关系。可选的,该第一关系信息可用于标识各个逻辑单元与各个物理单元之间的映射关系,进而即可确定第一进程的各个物理单元的物理地址范围。在源设备为容器的情况下,由于容器自身不具有操作系统,容器直接运行在物理机的操作系统上,该物理单元的物理地址范围即为第一物理机的物理地址范围。在源设备为虚拟机的情况下,由于虚拟机自身具有操
作系统,虚拟机运行在物理机上的虚拟机管理器上,该物理地址范围并非是由物理机物理地址所构成的地址范围,而是虚拟机物理地址所构成的地址范围。还需要通过虚拟机管理器将虚拟机物理地址(gpa)转换为物理机虚拟机地址(hva),进而转换为物理机物理地址(hpa)。
87.可选的,在确定了第一进程的物理地址空间的物理地址范围的情况下,基于该物理地址范围就能够获取物理地址空间中所存储的第一资源组。例如,在确定了第一进程的各个物理单元的物理地址范围的情况下,可基于各个物理地址范围从各个物理单元中获取第一资源组。
88.s140,将所述第一关系信息和多个所述第一资源组发送至所述目标设备。
89.可选的,可在源设备和目标设备之间构建通信通路,基于源设备和目标设备之间的通信通路将第一关系信息和多个第一资源组发送至目标设备,使得目标设备基于诡异关系信息和多个第一资源组在目标设备上恢复各个第一进程,实现将源设备中的进程迁移至目标设备的目的。
90.可选的,也可在第一物理机和第二物理机之间构建通信通路,基于第一物理机和第二物理机之间的通信通路将第一关系信息和多个第一资源组发送至目标设备。
91.在具体实施时,也可在源设备和目标设备层次构建一个通信通路,并在第一物理机和第二物理机之间构建另一个通信通路,分别通过这两个通信通路传输不同的数据。
92.本技术实施例的容器和虚拟机之间的热迁移方法,用于将容器迁移到虚拟机,或者将虚拟机迁移到容器,通过获取第一请求,第一请求包括将源设备中的进程迁移到目标设备的请求,基于所述第一请求获取第一进程的第一标识,基于第一标识获取第一关系信息,第一关系信息用于标识第一进程的逻辑地址空间与物理地址空间之间的映射关系,第一进程的第一资源组存储在第一进程的物理地址空间中,基于第一关系信息能够获取多个第一资源组,将第一关系信息和多个第一资源组发送至目标设备,使得目标设备能够基于第一关系信息和多个第一资源组在目标设备上恢复第一进程,不仅为容器和虚拟机之间进行热迁移提供了一种可行的实施方案,而且迁移效率较高,有益于缩短热迁移过程中的宕机时间,以提高用户体验。
93.配合图2所示,在一些实施例中,步骤s130,基于所述第一标识,获取第一关系信息,以及与所述第一关系信息相关联的多个第一资源组,可包括如下步骤。
94.s131,基于所述第一标识,获取所述第一关系信息。
95.可选的,第一逻辑单元可作为源设备为第一进程分配逻辑地址空间的基本组成单元,第一物理单元可作为源设备为第一进程分配物理地址空间的基本组成单元,第一逻辑单元和第一物理单元容量相同,第一逻辑单元和第一物理单元均可具有连续的地址范围。第一进程的逻辑地址空间可由多个第一逻辑单元组成,第一进程的物理地址空间可由多个第一物理单元组成,第一关系信息可用于标识第一逻辑单元和第一物理单元之间的一一映射关系。第一关系信息可作为第一进程的进程信息的组成部分。在获取到能够位移标识第一进程的第一标识的情况下,可基于该第一标识获取该第一关系信息。
96.可选的,第一物理机可基于分页管理方式为源设备中的第一进程分配地址空间,如此,第一进程的逻辑地址空间可包括多个大页(hugepage),第一进程的物理地址空间可包括多个与大页相对应的块或页框,可通过页表记录大页和页框之间一一对应的映射关
系。在此基础上,可基于第一进程的pid,获取第一进程的页表。
97.s132,基于所述第一关系信息,获取各所述第一物理单元中存储的所述第一资源组。
98.可选的,可基于页表中所记载的各个块的物理地址范围,获取各个块中所存储的第一资源组。在基于逻辑单元和物理单元为第一进程分配逻辑地址空间和物理地址空间的情况下,第一进程所需各种资源及数据均存储在各个物理单元中,第一进程的各种资源及数据存储的较为工整规范。需要迁移第一进程时,只需要基于第一关系信息,确定各个第一物理单元的物理地址范围,基于第一物理单元的物理地址范围从中获取第一资源组,就能够获取到第一进程所需的各种资源及数据。
99.这样,无需通过例如寄生虫等方式检索第一进程的进程树,能够显著提高第一进程所需的各种资源及数据的获取效率,进而能够显著缩短热迁移的宕机时间,有益于提高用户体验。
100.配合图3所示,在一些实施例中,步骤s130,基于所述第一标识,获取第一关系信息,以及与所述第一关系信息相关联的多个第一资源组,还可包括如下步骤。
101.s133,基于所述第一标识,获取第二关系信息,其中,所述第一进程的逻辑地址空间包括多个第二逻辑单元,所述第一进程的物理地址空间包括多个第二物理单元,所述第二关系信息包含所述第二逻辑单元和所述第二物理单元之间的一一映射关系,所述第二物理单元用于存储所述第一进程的第二资源组。
102.s134,基于所述第二关系信息,获取各所述第二物理单元中存储的所述第二资源组。
103.s135,获取用于标识目标物理单元的容量的第一容量信息;其中,所述目标物理单元为所述目标设备的物理地址空间的基本组成单元;
104.s136,基于所述第一容量信息,确定所述第一逻辑单元、所述第一物理单元、所述第一资源组和所述第一关系信息;其中,所述第一逻辑单元由所述第二逻辑单元拆分形成或由多个所述第二逻辑单元组合形成,所述第一物理单元由所述第二物理单元拆分形成或由多个所述第二物理单元组合形成,所述第一资源组由所述第二资源组拆分形成或由多个所述第二资源组组合形成。
105.可选的,可响应于第一请求,在源设备和目标设备之间构建第一通信通路,源设备可基于第一通信通路获取目标设备的第一容量信息,第一容量信息用于标识目标设备的目标物理单元的容量,目标物理单元作为目标设备的物理地址空间的基本组成单元。
106.在初始状态下,源设备可基于第二逻辑单元和第二物理单元为第一进程分配逻辑地址空间和物理地址空间。也即,在初始状态下,第一进程的逻辑地址空间可将第二逻辑单元作为基本组成单元,第一进程的物理地址空间可将第二物理单元作为基本组成单元。因此,基于第一标识可获取到能够表征第二逻辑单元和第二物理单元之间一一对应的映射关系的第二关系信息。基于第二关系信息,能够确定第二物理单元中的各个第二资源组。
107.可选的,在第二物理单元的容量小于目标物理单元的容量的情况下,可将多个第二逻辑单元组合为一个第一逻辑单元,将多个第二物理单元组合为一个第一物理单元,将多个第二资源组组合为一个第一资源组。继而,基于第二关系表,多个第二逻辑地址单元的组合关系,多个第二物理单元的组合关系,生成第一关系信息。
108.在第二物理单元的容量大于目标物理单元的容量的情况下,可将第二逻辑单元拆分为多个第一物理单元,将第二物理单元拆分为多个第一物理单元,将第二资源组拆分为多个第一资源组,基于第二关系信息,第二逻辑单元拆分方式和第二物理单元的拆分方式等,生成第二关系信息。
109.该第一逻辑单元和第一物理单元的容量可与目标物理单元具有相同的容量。如此,第一资源组和第一关系信息发送至目标设备,目标设备可直接将各个第一资源组存储在各个目标存储单元中,可直接将各个第一逻辑单元映射到目标存储单元,无需修改逻辑地址空间的结构,甚至于无需修改逻辑地址空间的偏移关系,有益于缩短第一进程在目标设备上的恢复时间,进而有益于缩短热迁移的宕机时间。
110.在一些实施例中,步骤s136,基于所述第一容量信息,确定所述第一逻辑单元、所述第一物理单元、所述第一资源组和所述第一关系信息,可包括如下步骤。
111.获取所述第二资源组的第二热度信息;其中,所述第二热度信息表征所述第二资源组的访问频率。
112.基于所述第一容量信息和所述第二热度信息,将访问频率之间差值小于第二阈值的多个所述第二资源组合并为所述第一资源组,将相应的多个所述第二逻辑单元合并为所述第一逻辑单元,将相应的多个所述第二物理单元合并为所述第一物理单元,并生成所述第一关系信息。
113.也即,在将第二资源组合并为第一资源组时,可基于将访问频率接近的第二资源组合并为一个第一资源组。例如,将访问频率较高的多个第二资源组合并为第一资源组,将访问频率较低的多个第二资源组合并为第一资源组。相对应的,并将存储第二资源组的多个第二物理单元合并为第一物理单元,将与该第二物理单元对应的多个第二逻辑单元合并为第一逻辑单元,并基于合并组合关系生成第一关系信息。可首先将访问频率比较高的第一资源组发送至目标设备,继而再将访问频率较低的第一资源组发送至目标设备,或者,访问频率较低的第一资源组可作为硬盘数据发送至目标设备。如此,在保证第一进程能够正常运行的基础上,能够降低热迁移初期的数据迁移量,有益于减少宕机时间。
114.配合图4所示,在一些实施例中,步骤s140,将所述第一关系信息和多个所述第一资源组发送至所述目标设备,可包括如下步骤。
115.s141,获取各所述第一资源组的第一热度信息;其中,所述第一热度信息表征所述第一资源组的访问频率。
116.s142,确定多个所述第一资源组中访问频率大于第一阈值的目标资源组。
117.s143,将所述第一关系信息和所述目标资源组发送至所述目标设备。
118.可选的,以第一物理机基于分页存储管理方式为源设备中的第一进程分配地址空间为例,页表中可记录有各个页和块的访问频率,可获取各个页或块的访问频率,作为块中所存储的第一资源组的访问频率。
119.可选的,可预先设置第一阈值。当第一资源组的访问频率大于第一阈值时,则表明第一进程运行过程中会频率访问第一资源组中所包含的资源,如果不在热迁移初期将该第一资源组迁移至目标设备,容易导致第一进程运行错误,会显著影响用户体验。因此,可将这部分访问频率大于第一阈值的第一资源作为目标资源组。当第一资源组的访问频率小于第一阈值时,则表明第一进程运行过程中不经常访问该第一资源组中所包含的资源,如果
不在热迁移初期将该第一资源组迁移至目标设备,也不容易导致第一进程出现故障。
120.可选的,第一物理机和第二物理机之间可构建有第二通信通路,该第二通信通路可作为一种高速通路,可具有较高的数据传输速率。可通过该第二通信通路将目标资源组发送至第二物理机,通过第二物理机映射到目标设备,使得目标设备可基于第一关系信息和目标资源组恢复第一进程。访问频率小于第一阈值的第一资源组迁移的时效性要求较低,可将这部分第一资源组作为硬盘数据发送送至目标设备,以减少热迁移初期的数据迁移量,提高热迁移效率。
121.配合图5所示,在一些实施例中,步骤s140,将所述第一关系信息和多个所述第一资源组发送至所述目标设备,还可包括如下步骤。
122.s144,获取所述目标设备的设备信息;其中,所述设备信息用于标识所述目标设备的数据处理能力。
123.s145,基于所述设备信息,确定所述第一阈值。
124.可选的,目标设备的数据处理能力可通过例如目标设备的处理器的占用率、处理器的频率、内存的占用率、内存空间总容量等信息来标识,也即,设备信息可包括例如处理器的占用率、处理器的频率、内存的占用率、内存空间总容量等信息。
125.可选的,可响应于第一请求,在源设备和目标设备之间构建第一通信通路,该第一通信通路可作为一种轻量级的通信通路,用于传输数据量相对较小的数据。源设备可基于该第一通信通路获取目标设备的设备信息。在获取到目标设备的设备信息的基础上,可基于该设备信息确定第一阈值。
126.例如,在源设备为容器,目标设备为虚拟机的情况下,通常情况下虚拟机的处理能力较强,内存空间容量通常较为充足,此时,可将第一阈值设置的较小,如此,在热迁移初期能够将尽可能多个的资源发送至目标设备,能够避免第一进程在目标设备上运行过程中出现故障。在源设备为虚拟机,目标设备为容器的情况下,通常情况下容器的处理能力相对较弱,内存空间容量通常相对较小,此时,可将第一预置设置的较大,如此,能够避免数据迁移量较大导致容器出现拥堵,在满足第一进程正常运行的基础上,能够确保容器运行的流畅性。
127.在一些实施例中,所述方法还可包括如下步骤:
128.获取所述源设备的状态信息;其中,所述状态信息用于表征所述源设备当前的运行状态;
129.在将所述第一关系信息和多个所述第一资源组发送至所述目标设备之前,将所述状态信息发送至所述目标设备。
130.可选的,源设备的状态信息可用于表征源设备的处理器当前的运行状态、内存当前的运行状态和/或其他硬件当前的运行状态,例如源设备的处理器当前的占用率、内存当前的占用率、网卡的使用情况等等。
131.可选的,可先将多个第一关系信息和多个第一资源组迁移至目标设备,待第一资源组迁移完成或基本迁移完成时,再暂停源设备的运行,将状态信息发送至目标设备,使得目标设备基于状态信息开始运行。
132.可选的,也可在将第一关系信息和多个第一资源组发送至目标设备之前,将状态信息发送至目标设备,目标设备可基于状态信息配置自身的cpu状态、内存状态等运行状
态,继而开始运行。然后,将第一关系信息和多个第一资源组迅速迁移至目标设备,有益于缩短热迁移耗时,提高热迁移效率。
133.参见图6所示,本技术第二种实施例提供了一种容器和虚拟机之间的热迁移方法,应用于目标设备。本技术第二种实施例的容器和虚拟机之间的热迁移方法具体可包括如下步骤。
134.s210,获取第一关系信息和多个第一资源组。其中,所述第一关系信息包括第一进程在源设备中的逻辑地址空间与物理地址空间之间的映射关系。
135.可选的,该源设备可为容器,相对应的,目标设备可为虚拟机。或者,该源设备也可为虚拟机,相对应的,该目标设备可为容器。也即,该方法可用于将容器中的进程迁移至虚拟机,也可用于将虚拟机中的进程迁移至容器。可选的,该源设备可运行在第一物理机上,目标设备可运行在第二物理机上。第一物理机和第二物理机可为单个服务器、多个服务器组成的分布式集群系统或其他类型的电子设备。
136.可选的,目标设备可基于其与源设备之间的第一通信通路获取该第一关系信息和多个第一资源组,也可基于第一物理机和第二物理机之间的第二通信通路获取该第一关系信息和多个第一资源组,或者,也可通过第一通信通路获取该第一关系信息,通过第二通信通路获取多个第一资源组。
137.例如,目标设备可通过第一通信通路从源设备获取第一关系信息,基于第一关系信息确定第一目标物理空间,继而,确定第一目标物理空间是否被占用,在第一目标物理空间未被占用的情况下,通过第二通信通路获取多个第一资源组,并将多个第一资源组存储在第一目标物理空间中。在第一目标物理空间被占用的情况下,可确定未被占用的第二目标物理空间,例如,可通过增加偏移量的方式避让开被占用的物理空间,通过第二通信通路获取多个第一资源组,并将多个第一资源组存储在第二目标物理空间中。
138.可选的,第二物理机可基于逻辑单元和物理单元为目标设备分配逻辑地址空间和物理地址空间,逻辑单元作为逻辑地址空间的基本组成单元,物理单元作为物理地址空间的基本组成单元。目标设备的物理单元的容量可大于源设备的物理单元的容量,也可与源设备的物理单元的容量相同,或者小于源设备的物理单元的容量。相应的,在获取到多个第一资源组后,可将多个第一资源组一一存储在目标设备的各个物理单元中,也可将多个第一资源组存储在目标设备的一个物理单元中,或者,也可将一个第一资源组存储在目标设备的多个物理单元。
139.可选的,第二物理机可基于第三逻辑单元和第三物理单元为目标设备分配逻辑地址空间和物理地址空间,第三逻辑单元作为逻辑地址空间的基本组成单元,第三物理单元作为物理地址空间的基本组成单元。第三逻辑单元和第三物理的容量可与第一物理地址单元的容量相同。目标设备获取到多个第一资源组,可将多个第一资源组一一存储在多个第三物理单元,无需拆分或重新组合第一资源组,有利于快速恢复第一进程的运行。
140.s220,基于所述第一关系信息,获取第三关系信息。其中,所述第三关系信息用于表征所述第一进程在目标设备中的逻辑地址空间与物理地址空间的映射关系。
141.可选的,在将各个第一资源组存储在目标设备的物理地址空间中,可记录物理机物理地址,以替换第一关系信息中各个第一资源组中的物理地址范围。在目标设备为虚拟机的情况下,还需通过虚拟机管理器将该物理机物理地址(hpa)转换为物理机虚拟地址
(hva),继而将物理机虚拟地址(hva)转转成虚拟机物理地址(gpa),通过虚拟机将虚拟机物理地址(gpa)转换为虚拟机能够识别的虚拟机虚拟地址(gva),形成第三关系信息。通过该第三关系信息记录第一进程在虚拟机中的逻辑地址空间和物理地址空间的映射关系。在目标设备为容器的情况下,由于容器直接运行在第二物理机上,只需将物理地址转换为虚拟地址即可将各个第一资源组映射至容器,容器就能够基于虚拟机地址访问各个第一资源组。
142.s230,基于所述第三关系信息和多个所述第一资源组,在所述目标设备中恢复运行所述第一进程。
143.可选的,目标设备在获取到第三关系信息和多个第一资源组的情况下,实际上就已经确定了第一进程所需的各种资源的存储位置,以及第一进程的调用关系。在此基础上,即可基于第三关系信息和多个第一资源组,在目标设备中恢复第一进程的运行。以该目标设备为虚拟机为例,可调用fork()函数重新构建第一进程的进程树,并利用clone3()的命名空间,或者/proc/sys/kernel/ns_last_pid将第一进程分配到原始pid上,继而,在目标设备中恢复第一进程的运行。
144.本技术实施例的容器和虚拟机之间的热迁移方法,用于将容器迁移到虚拟机,或者将虚拟机迁移到容器,获取第一关系信息和多个第一资源组,第一关系信息包括第一进程在源设备中的逻辑地址空间与物理地址空间之间的映射关系,基于第一关系信息获取第三关系信息,第三关系信息能够表征第一进程在目标设备中的逻辑地址空间与物理地址空间的映射关系,基于第三关系和多个第一资源组,就能够在目标设备中恢复运行第一进程,不仅为容器和虚拟机之间进行热迁移提供了一种可行的实施方案,而且迁移效率较高,有益于缩短热迁移过程中的宕机时间,以提高用户体验。
145.本技术第三实施例提供了一种容器和虚拟机之间的热迁移方法,应用于包含第一物理机和第二物理机的系统中,例如,该方法应用于分布式集群系统中,该第一物理机和第二物理机可作为分布器集群系统中一台物理机。源设备运行在第一物理机上,目标设备运行在第二物理机上。
146.参见图7和图8所示,本技术第三种实施例的容器和虚拟机之间的热迁移方法具体可包括如下步骤。
147.s301,获取第一请求,其中,所述第一请求包括将源设备中的进程迁移到目标设备的请求。
148.可选的,该源设备可为容器,目标设备可为虚拟机;或者,该源设备可为虚拟机,该目标设备可为容器。以源设备为容器,目标设备为虚拟机为例,容器中可设置有迁移控制单元,容器可通过该迁移控制单元接收该第一请求,如容器可从系统中的控制设备接收该第一请求。
149.s302,基于所述第一请求,获取第一进程的第一标识。
150.可选的,源设备在获取到第一请求的情况下,可基于该第一请求确定单签源设备上运行的第一进程,并获取该第一进程的第一标识。例如,可获取第一进程的进程编号(pid)。
151.以源设备为虚拟机为例,虚拟机自身具有操作系统,操作系统通常具有任务管理器或进程管理器,在获取到第一请求的情况下,可基于第一请求调取例如进程管理器,通过
进程管理器确定虚拟机上运行的第一进程,并获取各个第一进程的pid。
152.以源设备为容器为例,可在源设备的/proc/$pid/task目录下递归搜集容器及其所属工作负载的进程、子进程及线程等等,以确定源设备上运行的第一进程,并获取第一进程的第一标识。
153.s303,基于所述第一标识,获取第一关系信息,以及与所述第一关系信息相关联的多个第一资源组。其中,所述第一关系信息用于标识所述第一进程在源设备中的逻辑地址空间与物理地址空间之间的映射关系,所述第一资源组存储在所述第一进程的物理地址空间中。
154.可选的,第一物理机可基于分页管理方式为源设备中的进程分配地址空间。第一物理机可将第一大页作为逻辑地址空间的基本单元,将第一物理块作为物理空间的基本单元。第一进程在源设备上的逻辑地址空间包括多个第一大页,第一进程在源设备上的物理地址空间可包括多个第一物理块,每个第一物理块中可存储有一个第二资源组,可通过第一页表记录第一大页和第一物理块之间一一对应的映射关系。也即,第二关系信息可记录在页表中。源设备在获取到第一标识的情况下,基于该第一标识,查找该第一进程的第一页表。例如,可基于pid查找第一进程的第一页表。
155.可选的,源设备的迁移控制单元与目标设备的迁移控制单元之间可构建有第一通信通路,源设备基于该第一通信通路可从目标设备获取设备信息,该设备信息中可包括第一容量信息,该第一容量信息用于标识目标设备的物理空间的基本组成单元的容量。例如,第二物理机可将第二大页作为逻辑地址空间的基本组成单元,将第二物理块作为物理空间的基本组成单元。该第一容量信息可用于标识第二大页的容量和第二物理块的容量。
156.可选的,源设备中的迁移控制单元获取到第一容量信息之后,可将该第一容量信息发送至第一物理机底层的内存管理单元,如果确定第一大页与第二大页的容量不同,则可基于第一容量信息,通过内存管理单元对第一大页执行拆分或合并操作,以形成与第二大页容量相同的第三大页。
157.以源设备为容器,目标设备为虚拟机为例,相较于容器,虚拟机的系统资源通常较为充沛,第二大页和第二物理块的容量可以大于第一大页和第一物理块的容量。在此基础上,可在内存管理单元的控制下,对第一大页、第一物理块和第二资源组执行合并操作,将多个第一大页合并为一个第三大页,将多个第一物理块合并为一个第三物理块,将多个第二资源组合并为一个第一资源组,并基于第二关心信息生成第一关系信息。该第三大页与第二大页的容量相同,第三物理块与第二物理块的容量相同,第一关系信息中可记录有第三大页和第三物理块的一一对应的映射关系。
158.s304,将所述第一关系信息和多个所述第一资源组发送至所述目标设备。
159.可选的,源设备的内存管理单元和目标设备的内存管理单元之间可构建有第二通信通路,该第二通信通路可作为一种高速通信通路,用于传输内存数据。源设备的内存管理单元可基于该第二通信通路将第一关系信息和多个第一资源组发送至目标设备。相对应的,目标设备一侧通过内存管理单元接收该第一关系信息和多个第一资源组。由于第二物理块与第三物理块的容量相同,所以,每个第二物理块恰好能够存储一个单位的第一资源组。目标设备的内存管理单元在获取到多个第一资源组的情况下,可将多个第一资源组一一对应的存储到各个第二物理块中。
160.s305,基于所述第一关系信息,获取第三关系信息。其中,所述第三关系信息用于表征所述第一进程在目标设备中的逻辑地址空间与物理地址空间的映射关系。
161.可选的,以目标设备为虚拟机为例,将各个第一资源组一一对应的存储在目标设备的各个第二物理块中,可记录各个第二物理块的物理机物理地址,以替换第一关系信息中各个第一资源组中的物理地址范围。由于第三大页与第二大页的容量相同,且在存储各个第一资源组时,并未改变各个第一资源组与第三大页的对应关系,因此,实际上可以不修改逻辑地址空间,而是可选择直接将第三大页作为第二大页。
162.由于虚拟机自身具有操作系统,具有虚拟机虚拟地址和虚拟机物理地址。因此,还需通过虚拟机管理器将该物理机物理地址(hpa)转换为物理机虚拟地址(hva),继而将物理机虚拟地址(hva)转转成虚拟机物理地址(gpa),通过虚拟机将虚拟机物理地址(gpa)转换为虚拟机能够识别的虚拟机虚拟地址(gva),形成第三关系信息。通过该第三关系信息记录第一进程在虚拟机中的逻辑地址空间和物理地址空间的映射关系。
163.s306,基于所述第三关系信息和多个所述第一资源组,在所述目标设备中恢复运行所述第一进程。
164.可选的,目标设备在获取到第三关系信息和多个第一资源组的情况下,实际上就已经确定了第一进程所需的各种资源的存储位置,以及第一进程的调用关系。在此基础上,即可基于第三关系信息和多个第一资源组,在目标设备中恢复第一进程的运行。以该目标设备为虚拟机为例,可调用fork()函数重新构建第一进程的进程树,并利用clone3()的命名空间,或者/proc/sys/kernel/ns_last_pid将第一进程分配到原始pid上,继而,在目标设备中恢复第一进程的运行。
165.本技术实施例的容器和虚拟机之间的热迁移方法,能够将容器迁移到虚拟机,或者将虚拟机迁移到容器,为容器和虚拟机之间进行热迁移提供了一种可行的实施方案,具有迁移效率较高,有益于缩短热迁移过程中的宕机时间,以提高用户体验。
166.参见图9所示,本技术第四种实施例提供了一种电子设备,包括:
167.第一获取模块401,用于获取第一请求,其中,所述第一请求包括将源设备中的进程迁移到目标设备的请求;所述源设备为容器,所述目标设备为虚拟机,或者所述源设备为虚拟机,所述目标设备为容器;
168.第二获取模块402,用于基于所述第一请求,获取第一进程的第一标识;
169.第三获取模块403,用于基于所述第一标识,获取第一关系信息,以及与所述第一关系信息相关联的多个第一资源组;其中,所述第一关系信息用于标识所述第一进程的逻辑地址空间与物理地址空间之间的映射关系,所述第一资源组存储在所述第一进程的物理地址空间中;
170.发送模块404,用于将所述第一关系信息和多个所述第一资源组发送至所述目标设备。
171.在一些实施例中,所述发送模块404具体用于:
172.获取各所述第一资源组的第一热度信息;其中,所述第一热度信息表征所述第一资源组的访问频率;
173.确定多个所述第一资源组中访问频率大于第一阈值的目标资源组;
174.将所述第一关系信息和所述目标资源组发送至所述目标设备。
175.在一些实施例中,所述发送模块404还用于:
176.获取所述目标设备的设备信息;其中,所述设备信息用于标识所述目标设备的数据处理能力;
177.基于所述设备信息,确定所述第一阈值。
178.在一些实施例中,所述第三获取模块403具体用于:
179.基于所述第一标识,获取所述第一关系信息;其中,所述第一关系信息用于标识第一逻辑单元和第一物理单元之间的一一映射关系,所述第一进程的逻辑地址空间包括多个第一逻辑单元,所述第一进程的物理地址空间包括多个第一物理单元,所述第一物理单元用于存储一所述第一资源组;
180.基于所述第一关系信息,获取各所述第一物理单元中存储的所述第一资源组。
181.在一些实施例中,所述第三获取模块403具体用于:
182.基于所述第一标识,获取第二关系信息,其中,所述第一进程的逻辑地址空间包括多个第二逻辑单元,所述第一进程的物理地址空间包括多个第二物理单元,所述第二关系信息用于标识所述第二逻辑单元和所述第二物理单元之间的一一映射关系,所述第二物理单元用于存储所述第一进程的第二资源组;
183.基于所述第二关系信息,获取各所述第二物理单元中存储的所述第二资源组;
184.获取用于标识目标物理单元的容量的第一容量信息;其中,所述目标物理单元为所述目标设备的物理地址空间的基本组成单元;
185.基于所述第一容量信息,确定所述第一逻辑单元、所述第一物理单元、所述第一资源组和所述第一关系信息;
186.其中,所述第一逻辑单元由所述第二逻辑单元拆分形成或由多个所述第二逻辑单元组合形成,所述第二逻辑单元由所述第二物理单元拆分形成或由多个所述第二物理单元组合形成,所述第一资源组由所述第二资源组拆分形成或由多个所述第二资源组组合形成。
187.在一些实施例中,所述第三获取模块403进一步用于:
188.获取所述第二资源组的第二热度信息;其中,所述第二热度信息表征所述第二资源组的访问频率;
189.基于所述第一容量信息和所述第二热度信息,将访问频率之间差值小于第二阈值的多个所述第二资源组合并为所述第一资源组,将相应的多个所述第二逻辑单元合并为所述第一逻辑单元,将相应的多个所述第二物理单元合并为所述第一物理单元,并生成所述第一关系信息。
190.在一些实施例中,所述发送模块404还用于:
191.获取所述源设备的状态信息;其中,所述状态信息用于表征所述源设备当前的运行状态;
192.在将所述第一关系信息和多个所述第一资源组发送至所述目标设备之前,将所述状态信息发送至所述目标设备。
193.参见图10所示,本技术第五种实施例还提供了一种电子设备,包括:
194.第四获取模块501,用于获取第一关系信息和多个第一资源组;其中,所述第一关系信息包括第一进程在源设备中的逻辑地址空间与物理地址空间之间的映射关系;
195.第五获取模块502,用于基于所述第一关系信息,获取第三关系信息;其中,所述第三关系信息包含所述第一进程在目标设备中的逻辑地址空间与物理地址空间的映射关系;所述源设备为容器,所述目标设备为虚拟机,或者所述源设备为虚拟机,所述目标设备为容器;
196.恢复模块503,用于基于所述第三关系信息和多个所述第一资源组,在所述目标设备中恢复运行所述第一进程。
197.以上实施例仅为本技术的示例性实施例,不用于限制本技术,本技术的保护范围由权利要求书限定。本领域技术人员可以在本技术的实质和保护范围内,对本技术做出各种修改或等同替换,这种修改或等同替换也应视为落在本技术的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1