一种跨CPU的虚拟机热迁移实现方法及系统与流程

文档序号:30135792发布日期:2022-05-21 01:03阅读:979来源:国知局
一种跨CPU的虚拟机热迁移实现方法及系统与流程
一种跨cpu的虚拟机热迁移实现方法及系统
技术领域
1.本发明公开一种跨cpu的虚拟机热迁移实现方法及系统,涉及云计算技术领域。


背景技术:

2.当前大部分云计算及云服务提供商依托开源项目openstack作为云管理基础平台实现公有云和私有云的部署及管理。openstack nova组件作为openstack项目中核心组件,用来提供云平台计算能力。常规的云计算集群一般由管理节点、计算节点和存储节点构成。计算节点依托物理机部署openstack nova-compute服务相关服务,用来为虚机机提供上层的计算管理服务。在nova-compute服务底层,会调用不同虚拟机管理工具,管理内核kvm、xen、vmware esx,qemu和其他虚拟化技术。本文以libvirt为例,调用内核kvm,管理云平台内虚拟机。
3.随着集群规模的不断扩大和业务复杂程度的增加,集群内可能会包含多种不同cpu型号的计算节点物理机。此时,一般可以通过将同种型号的物理机划分到相同的主机聚合的方式,实现同一主机聚合内虚拟机之间相互热迁移。但主机聚合中不只包含cpu型号一种属性信息,随着主机聚合信息的不断细化,会导致必须规划出大量主机聚合,增加了维护成本,并且如果集群规模较小,细化的主机聚合会导致每个聚合中的主机数量很少,失去了分类的作用。因此实际生产中一般不会将cpu信息作为属性加入主机聚合,这就导致了同一主机聚合中可能会存在不同cpu型号的计算节点。在执行虚拟机热迁移时,nova-compute服务会调用libvirt comparecpu api验证虚拟机特性是否可迁移到目标计算节点,这就导致两个cpu型号不同的计算节点可能会出现热迁移失败的情况。
4.虚拟机热迁移功能受虚拟机启动文件配置影响,libvirt主要支持三种cpu mode:host-passthrough、host-model和custom。理论上说,host-passthrough模式要求源节点和目的节点的指令集完全一致;host-model模式允许源节点和目的节点的指令集存在轻微差异;custom模式允许源节点和目的节点指令集存在较大差异(以虚机启动xml文件实际配置为准)。当不存在热迁移的场景时,建议选择host-passthrough模式;对于host-model模式,不同型号的cpu如果可以使用主机聚合划分,在迁移时可以使用主机聚合filter来匹配相同型号的物理机;当cpu型号过多,且不便用主机聚合划分时,建议使用custom模式。使用custom模式时,需要显示的指定使用的cpu model和required/disable的cpu features,但不同主机cpu型号支持的model类型、物理机cpu特性不同,如何自动准确的选择和配置cpu model和cpu features变得越发重要。
5.openstack计算服务nova-compute配置文件libvirt组中支持配置cpu_mode、cpu_models和cpu_model_extra_flags参数,对应虚拟机配置xml配置文件中domain/cpu中mode属性、domain/cpu/model和domain/cpu/model/feature配置。通过添加上述三个配置,指定虚拟机启动时cpu相关配置。
6.本发明主要针对以上问题,提出了一种跨cpu的虚拟机热迁移实现方法及系统。


技术实现要素:

7.本发明针对现有技术的问题,提供一种跨cpu的虚拟机热迁移实现方法及系统,所采用的技术方案为:一种跨cpu的虚拟机热迁移实现方法,所述的方法具体步骤如下:
8.s1对加入的支持跨cpu型号热迁移的计算节点集合进行配置;
9.s2依据指定的软件及版本对集群内的计算节点自动化部署虚拟机管理程序libvirt及其他基础依赖软件;
10.s3获取节点cpu配置信息,并进行适配计算分析;
11.s4对集群内的计算节点自动化部署初始化nova-compute服务。
12.所述s1对加入的支持跨cpu型号热迁移的计算节点集合进行配置的具体步骤如下:
13.s101通过配置计算节点ip对接到openstack部署的云管理平台中;
14.s102连接计算节点libvirt客户端并调用libvirt命令行获取节点配置信息。
15.所述s3获取节点cpu配置信息,并进行适配计算分析的具体步骤如下:
16.s301在集合内的计算节点上执行libvirt-qemu相关api获取节点cpu配置信息;
17.s301配置初始化程序自动获取集群所有计算节点cpu的相关配置xml文件;
18.s302解析节点采集的cpu xml文件并计算出适配计算节点集合的可用的cpu model及cpu features信息;
19.s303将解析的配置同步到集合内各节点nova-compute配置文件。
20.所述s301配置初始化程序调用virsh

c《compute-node-ip》domcapabilities或libvirt api:getdomaincapabilities获取目标计算节点domaincapabilities/cpu下name='host-model'的mod节点信息并保存为xml文件。
21.所述s302解析节点采集的cpu xml文件并计算出适配计算节点集合的可用的cpu model及cpu features信息的具体步骤如下:
22.s3021通过集群中各计算节点xml文件中name='host-model'的mode中的model名称结合有序cpu模型列表选择一个可支持的最低配cpu model;
23.s3022根据xml文件中features列表计算出计算节点均可支持的公共的cpu features集合,渲染成对应cpu xml文件;
24.s3023检查该model的名称是否在计算节点选出的最小可用model集合内。
25.所述s3023检查该model的名称是否在计算节点选出的最小可用model集合内,若在集合内,再通过在每个计算执行libvirt api:comparehypervisorcpu,验证构造的cpu xml文件是否适配每个计算节点,保证配置的model满足各个计算节点要求。
26.所述s303将解析的配置同步到集合内各节点nova-compute配置文件具体步骤如下:
27.s3031在集合中每个节点再次验证选择出的cpu model及features是否可用;
28.s3032将选择出的cpu model和features配置并转化nova-compute服务可用的为cpu_mode、cpu_models和cpu_model_extra_flags配置添加到nova.conf配置文件中。
29.所述s4对集群内的计算节点自动化部署初始化nova-compute服务的具体步骤如下:
30.s401将xml文件中model和features转化为nova-compute配置文件中对应的参数:
cpu_mode、cpu_models和cpu_model_extra_flags配置添加到nova.conf配置文件中;
31.s402由配置分发器覆盖到集合中每个计算节点中/etc/nova/nova.conf及/etc/nova/nova-compute.conf,完成nova-compute配置文件初始化。
32.一种跨cpu的虚拟机热迁移实现方法,所述的系统具体包括节点配置模块、节点部署模块、数据处理模块和服务部署模块:
33.节点配置模块:对加入的支持跨cpu型号热迁移的计算节点集合进行配置;
34.节点部署模块:依据指定的软件及版本对集群内的计算节点自动化部署虚拟机管理程序libvirt及其他基础依赖软件;
35.数据处理模块:获取节点cpu配置信息,并进行适配计算分析;
36.服务部署模块:对集群内的计算节点自动化部署初始化nova-compute服务。
37.本发明的有益效果为:本发明方法针对不同cpu型号计算节点间热迁移虚拟机的方法,实现了新部署及已有云管理平台新增计算节点两种场景下云管理平台内不同cpu型号计算节点间虚拟机热迁移功能。一方面可以精简主机聚合属性(不通过向主机聚合添加cpu型号信息方式即同cpu型号划定在同一主机聚合方式避免由于cpu型号不同导致热迁移失败问题),同时提高了虚拟机热迁移的灵活性。
附图说明
38.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
39.图1是实施例中云管理平台场景下的调用链流程示意图;图2是实施例中配置初始化的实现机制示意图;图3是本发明方法的流程图。
具体实施方式
40.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
41.实施例一:
42.一种跨cpu的虚拟机热迁移实现方法,所述的方法具体步骤如下:
43.s1对加入的支持跨cpu型号热迁移的计算节点集合进行配置;
44.s2依据指定的软件及版本对集群内的计算节点自动化部署虚拟机管理程序libvirt及其他基础依赖软件;
45.s3获取节点cpu配置信息,并进行适配计算分析;
46.s4对集群内的计算节点自动化部署初始化nova-compute服务;
47.首先按照s1配置要加入支持跨cpu型号热迁移的计算节点集合,可添加不同cpu属性的计算节点(适合新建云管理平台或扩容已有云管理平台的计算节点),然后按照s2对于集群内的计算节点依据指定的软件源及版本自动化部署虚拟机管理程序libvirt及其他基础依赖软件(kvm、qemu、openvswitch等);
48.接着按照s3获取节点cpu配置信息,并进行适配计算分析;最后按照对于集群内的
计算节点自动化部署初始化nova-compute服务,使用s3解析的cpu配置启动nova-compute服务,完成计算节点nova服务初始化;
49.如图1所示,对于新建云管理平台,首先初始化各个计算节点libvirt服务;待libvirt服务启动成功后,调用配置初始化系统,初始化各个计算节点nova-compute服务配置文件;最后完成nova-compute服务启动。针对扩容已有计算节点场景,首先初始化新扩容计算节点libvirt服务;待libvirt服务启动成功后,调用配置初始化系统,初始化待合入主机聚合相关计算节点及新扩容计算节点nova-compute服务配置文件;最后完成上述计算节点nova-compute服务启动;
50.进一步的,所述s1对加入的支持跨cpu型号热迁移的计算节点集合进行配置的具体步骤如下:
51.s101通过配置计算节点ip对接到openstack部署的云管理平台中;
52.s102连接计算节点libvirt客户端并调用libvirt命令行获取节点配置信息;
53.接到openstack部署的云管理平台中通过配置计算节点ip,实现连接计算节点libvirt客户端并调用libvirt命令行获取节点配置信息;
54.所述s3获取节点cpu配置信息,并进行适配计算分析的具体步骤如下:
55.s301在集合内的计算节点上执行libvirt-qemu相关api获取节点cpu配置信息;
56.s301配置初始化程序自动获取集群所有计算节点cpu的相关配置xml文件;
57.s302解析节点采集的cpu xml文件并计算出适配计算节点集合的可用的cpu model及cpu features信息;
58.s303将解析的配置同步到集合内各节点nova-compute配置文件;
59.如图2所示,通过该方法可在虚拟机管理程序初始化成功后,通过配置初始化程序自动获取集群所有计算节点cpu相关配置,并解析适用于集群内所有计算节点的cpu配置,适配到各个计算节点nova-compute配置文件中;针对已有的云管理平台新加计算节点时,可通过配置新增计算节点名和相应主机聚合或已有计算节点集合映射,对映射内的计算节点集合收集、解析cpu配置,由配置分发器分发到集合内计算节点,实现映射集合内计算节点虚拟机相互热迁移;
60.所述s301配置初始化程序调用virsh

c《compute-node-ip》domcapabilities或libvirt api:getdomaincapabilities获取目标计算节点domaincapabilities/cpu下name='host-model'的mod节点信息并保存为xml文件;
61.通过调用libvirt api:libvirt api:getdomaincapabilities获取集合内每个计算节点domcapabilities中domaincapabilities/cpu下name='custom'的mode,得到节点usable='yes'的model,即示例一;同时获取domaincapabilities/cpu下name='host-model'的mode节点中model名称及mode内信息,即示例二;同时处理xml并添加架构信息保存为xml文件,即示例三;
62.示例一:
63.《mode name='custom'supported='yes'》
64.《model usable='no'》qemu64《/model》
65.《model usable='yes'》qemu32《/model》
66.《model usable='no'》phenom《/model》
67.《model usable='yes'》pentium3《/model》
68.《model usable='yes'》pentium2《/model》
69.《model usable='yes'》pentium《/model》
70.《model usable='yes'》n270《/model》
71.《model usable='yes'》kvm64《/model》
72.《model usable='yes'》kvm32《/model》
73.《model usable='yes'》coreduo《/model》
74.《model usable='yes'》core2duo《/model》
75.《model usable='no'》athlon《/model》
76.《model usable='yes'》westmere-ibrs《/model》
77.《model usable='yes'》westmere《/model》
78.《model usable='yes'》skylake-server-notsx-ibrs《/model》
79.《model usable='yes'》skylake-server-ibrs《/model》
80.《model usable='yes'》skylake-server《/model》
81.《model usable='yes'》skylake-client-notsx-ibrs《/model》
82.《model usable='yes'》skylake-client-ibrs《/model》
83.《model usable='yes'》skylake-client《/model》
84.《model usable='yes'》sandybridge-ibrs《/model》
85.《model usable='yes'》sandybridge《/model》
86.《model usable='yes'》penryn《/model》
87.《model usable='no'》opteron_g5《/model》
88.《model usable='no'》opteron_g4《/model》
89.《model usable='no'》opteron_g3《/model》
90.《model usable='no'》opteron_g2《/model》
91.《model usable='yes'》opteron_g1《/model》
92.《model usable='yes'》nehalem-ibrs《/model》
93.《model usable='yes'》nehalem《/model》
94.《model usable='yes'》ivybridge-ibrs《/model》
95.《model usable='yes'》ivybridge《/model》
96.《model usable='no'》icelake-server-notsx《/model》
97.《model usable='no'》icelake-server《/model》
98.《model usable='no'》icelake-client-notsx《/model》
99.《model usable='no'》icelake-client《/model》
100.《model usable='yes'》haswell-notsx-ibrs《/model》
101.《model usable='yes'》haswell-notsx《/model》
102.《model usable='yes'》haswell-ibrs《/model》
103.《model usable='yes'》haswell《/model》
104.《model usable='no'》epyc-rome《/model》
105.《model usable='no'》epyc-ibpb《/model》
106.《model usable='no'》epyc《/model》
107.《model usable='no'》dhyana《/model》
108.《model usable='yes'》conroe《/model》
109.《model usable='no'》cascadelake-server-notsx《/model》
110.《model usable='no'》cascadelake-server《/model》
111.《model usable='yes'》broadwell-notsx-ibrs《/model》
112.《model usable='yes'》broadwell-notsx《/model》
113.《model usable='yes'》broadwell-ibrs《/model》
114.《model usable='yes'》broadwell《/model》
115.《model usable='yes'》486《/model》
116.《/mode》
117.示例二:
118.《mode name='host-model'supported='yes'》
119.《model fallback='forbid'》cascadelake-server《/model》
120.《vendor》intel《/vendor》
121.《feature policy='require'name='ss'/》
122.《feature policy='require'name='hypervisor'/》
123.《feature policy='require'name='tsc_adjust'/》
124.《feature policy='require'name='pku'/》
125.《feature policy='require'name='md-clear'/》
126.《feature policy='require'name='stibp'/》
127.《feature policy='require'name='xsaves'/》
128.《feature policy='require'name='invtsc'/》
129.《feature policy='disable'name='avx512vnni'/》
130.《/mode》
131.示例三:
132.《cpu》
133.《arch》x86_64《/arch》
134.《model fallback='forbid'》cascadelake-server《/model》
135.《vendor》intel《/vendor》
136.《feature policy='require'name='ss'/》
137.《feature policy='require'name='hypervisor'/》
138.《feature policy='require'name='tsc_adjust'/》
139.《feature policy='require'name='pku'/》
140.《feature policy='require'name='md-clear'/》
141.《feature policy='require'name='stibp'/》
142.《feature policy='require'name='xsaves'/》
143.《feature policy='require'name='invtsc'/》
144.《feature policy='disable'name='avx512vnni'/》
145.《/cpu》
146.所述s302解析节点采集的cpu xml文件并计算出适配计算节点集合的可用的cpu model及cpu features信息的具体步骤如下:
147.s3021通过集群中各计算节点xml文件中name='host-model'的mode中的model名称结合有序cpu模型列表选择一个可支持的最低配cpu model;
148.s3022根据xml文件中features列表计算出计算节点均可支持的公共的cpu features集合,渲染成对应cpu xml文件;
149.s3023检查该model的名称是否在计算节点选出的最小可用model集合内;
150.根据数据采集器上报的集合内各个计算节点usable='yes'的model信息,计算出集合内计算节点所能匹配的最小可用model集合;
151.同时数据分析器会根据cpu出场年份不同维护一个有序cpu模型列表(表征cpu发布时间和性能);
152.数据分析器根据数据采集器上报的每个计算节点cpu xml文件到对应计算节点执行libvirt api:baselinehypervisorcpu扩展节点支持的全部features,即示例四;
153.示例四:
154.《cpu mode='custom'match='exact'》
155.《model fallback='forbid'》cascadelake-server《/model》
156.《vendor》intel《/vendor》
157.《feature policy='require'name='3dnowprefetch'/》
158.《feature policy='require'name='abm'/》
159.《feature policy='require'name='adx'/》
160.《feature policy='require'name='aes'/》
161.《feature policy='require'name='apic'/》
162.《feature policy='require'name='arat'/》
163.《feature policy='require'name='avx'/》
164.《feature policy='require'name='avx2'/》
165.《feature policy='require'name='avx512bw'/》
166.《feature policy='require'name='avx512cd'/》
167.《feature policy='require'name='avx512dq'/》
168.《feature policy='require'name='avx512f'/》
169.《feature policy='require'name='avx512vl'/》
170.《feature policy='disable'name='avx512vnni'/》
171.《feature policy='require'name='bmi1'/》
172.《feature policy='require'name='bmi2'/》
173.《feature policy='require'name='clflush'/》
174.《feature policy='require'name='clflushopt'/》
175.《feature policy='require'name='clwb'/》
176.《feature policy='require'name='cmov'/》
177.《feature policy='require'name='cx16'/》
178.《feature policy='require'name='cx8'/》
179.《feature policy='require'name='de'/》
180.《feature policy='require'name='erms'/》
181.《feature policy='require'name='f16c'/》
182.《feature policy='require'name='fma'/》
183.《feature policy='require'name='fpu'/》
184.《feature policy='require'name='fsgsbase'/》
185.《feature policy='require'name='fxsr'/》
186.《feature policy='require'name='hle'/》
187.《feature policy='require'name='hypervisor'/》
188.《feature policy='require'name='invpcid'/》
189.《feature policy='require'name='invtsc'/》
190.《feature policy='require'name='lahf_lm'/》
191.《feature policy='require'name='lm'/》
192.《feature policy='require'name='mca'/》
193.《feature policy='require'name='mce'/》
194.《feature policy='require'name='md-clear'/》
195.《feature policy='require'name='mmx'/》
196.《feature policy='require'name='movbe'/》
197.《feature policy='require'name='mpx'/》
198.《feature policy='require'name='msr'/》
199.《feature policy='require'name='mtrr'/》
200.《feature policy='require'name='nx'/》
201.《feature policy='require'name='pae'/》
202.《feature policy='require'name='pat'/》
203.《feature policy='require'name='pcid'/》
204.《feature policy='require'name='pclmuldq'/》
205.《feature policy='require'name='pdpe1gb'/》
206.《feature policy='require'name='pge'/》
207.《feature policy='require'name='pku'/》
208.《feature policy='require'name='pni'/》
209.《feature policy='require'name='popcnt'/》
210.《feature policy='require'name='pse'/》
211.《feature policy='require'name='pse36'/》
212.《feature policy='require'name='rdrand'/》
213.《feature policy='require'name='rdseed'/》
214.《feature policy='require'name='rdtscp'/》
215.《feature policy='require'name='rtm'/》
216.《feature policy='require'name='sep'/》
217.《feature policy='require'name='smap'/》
218.《feature policy='require'name='smep'/》
219.《feature policy='require'name='spec-ctrl'/》《feature policy='require'name='ss'/》
220.《feature policy='require'name='ssbd'/》
221.《feature policy='require'name='sse'/》
222.《feature policy='require'name='sse2'/》
223.《feature policy='require'name='sse4.1'/》
224.《feature policy='require'name='sse4.2'/》
225.《feature policy='require'name='ssse3'/》
226.《feature policy='require'name='stibp'/》
227.《feature policy='require'name='syscall'/》
228.《feature policy='require'name='tsc'/》
229.《feature policy='require'name='tsc-deadline'/》
230.《feature policy='require'name='tsc_adjust'/》
231.《feature policy='require'name='vme'/》
232.《feature policy='require'name='x2apic'/》
233.《feature policy='require'name='xgetbv1'/》
234.《feature policy='require'name='xsave'/》
235.《feature policy='require'name='xsavec'/》
236.《feature policy='require'name='xsaveopt'/》
237.《feature policy='require'name='xsaves'/》
238.《/cpu》
239.进一步的,所述s3023检查该model的名称是否在计算节点选出的最小可用model集合内,若在集合内,再通过在每个计算执行libvirt api:comparehypervisorcpu,验证构造的cpu xml文件是否适配每个计算节点,保证配置的model满足各个计算节点要求;
240.进一步的,所述s303将解析的配置同步到集合内各节点nova-compute配置文件具体步骤如下:
241.s3031在集合中每个节点再次验证选择出的cpu model及features是否可用;
242.s3032将选择出的cpu model和features配置并转化nova-compute服务可用的为cpu_mode、cpu_models和cpu_model_extra_flags配置添加到nova.conf配置文件中;
243.再进一步的,所述s4对集群内的计算节点自动化部署初始化nova-compute服务的具体步骤如下:
244.s401将xml文件中model和features转化为nova-compute配置文件中对应的参数:cpu_mode、cpu_models和cpu_model_extra_flags配置添加到nova.conf配置文件中;
245.s402由配置分发器覆盖到集合中每个计算节点中/etc/nova/nova.conf及/etc/nova/nova-compute.conf,完成nova-compute配置文件初始化。
246.实施例二:
247.一种跨cpu的虚拟机热迁移实现方法,所述的系统具体包括节点配置模块、节点部
署模块、数据处理模块和服务部署模块:
248.节点配置模块:对加入的支持跨cpu型号热迁移的计算节点集合进行配置;
249.节点部署模块:依据指定的软件及版本对集群内的计算节点自动化部署虚拟机管理程序libvirt及其他基础依赖软件;
250.数据处理模块:获取节点cpu配置信息,并进行适配计算分析;
251.服务部署模块:对集群内的计算节点自动化部署初始化nova-compute服务。
252.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1