一种优化的KVM前置拷贝虚拟机热迁移方法与流程

文档序号:31219023发布日期:2022-08-20 05:14阅读:238来源:国知局
一种优化的KVM前置拷贝虚拟机热迁移方法与流程
一种优化的kvm前置拷贝虚拟机热迁移方法
技术领域
1.本发明涉及虚拟机热迁移技术领域,尤其是涉及一种优化的kvm前置拷贝虚拟机热迁移方法。


背景技术:

2.在kvm云平台中,虚拟机热迁移是一个常用的关键技术,热迁移的目标是在不影响虚拟机内业务运行的情况下,把虚拟机从云平台中的一个源物理节点(后文简称源节点)迁移到云平台中的另一个目标物理节点(后文简称目标节点)。热迁移功能的稳定性影响着云平台运维的日常工作,例如做物理节点的升级、云主机的救援或者做云平台软件的升级。虚拟机热迁移技术分为前置拷贝(pre-copy)虚拟机热迁移和后置拷贝(post-copy)虚拟机热迁移,本专利只讨论前置虚拟机热迁移技术。
3.在前置拷贝虚拟机热迁移过程中,迁移进程需要把虚拟机源节点上的内存全部拷贝到目标节点,在拷贝过程中允许源节点的内存持续读写。在虚拟机迁移开始的时候,源节点上的虚拟机的所有内存都被标记为脏页,所有的脏页都会被拷贝到目标节点。拷贝完成后相关内存脏页则被标记为干净内存。在内存拷贝过程中,如果虚拟机内的部分内存因为读写发生了更新,则相关内存页也会被标记为脏页。
4.虚拟热迁移过程有两个关键指标:downtime(中断时间)和timeout(超时时间),在内存拷贝的过程中,迁移进程会预估剩余的内存脏页能否在小于中断时间的时间内拷贝完成。如果可以完成,迁移进程会停止源节点上虚拟机内的内存更新,把剩余的内存拷贝完成,迁移过程即完成。如果在拷贝过程中,迁移进程预估的剩余拷贝时间一直大于中断时间,则迁移过程一直无法完成,如果迁移用时超过超时时间,则迁移过程超时失败,虚拟机热迁移超时失败的情况常常是因为虚拟机内的进程快速更新内存,内存的更新速度超过了内存的拷贝的速度。这种情况下虚拟机的内存脏页无法收敛,则虚拟机迁移过程超时失败。


技术实现要素:

5.本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种优化的kvm前置拷贝虚拟机热迁移方法。
6.本发明的目的可以通过以下技术方案来实现:
7.一种优化的kvm虚拟机热迁移方法,该方法包括以下步骤:
8.步骤1:进行kvm虚拟机热迁移的内存拷贝;
9.步骤2:监测并获取kvm虚拟机的热迁移过程中的指标;
10.步骤3:对指标的监测情况进行比较,基于轮询判断策略切换不同的热迁移策略,并完成虚拟机的热迁移。
11.所述的步骤2中,指标包括虚拟机内存的更新速度v1、拷贝速度v2、虚拟机的总内存r0、虚拟机所在源宿主机的可用内存空间r、迁移时间t以及虚拟机迁移超时时间阈值t0。
12.所述的虚拟机内存的更新速度v1具体为nova服务在虚拟机热迁移过程中,实时获
取虚拟机的剩余内存脏页并结合内存的拷贝速度和时间差值计算出的虚拟机的内存更新速度;
13.所述的拷贝速度v2具体为虚拟机热迁移过程中虚拟机内存在宿主机之间的拷贝速度,虚拟机内存拷贝速度为取决于物理服务器之间传输带宽的常量;
14.所述的虚拟机的总内存r0具体为一个常量;
15.所述的虚拟机所在源宿主机的可用内存空间r具体为在源宿主机上实施监测的变量,并通过linux命令free获取;
16.所述的迁移时间t具体为虚拟机迁移过程的耗时时间,指当前时间与虚拟机迁移开始时间的差值;
17.所述的虚拟机迁移超时时间阈值t0具体为在nova里配置的一个常量,若迁移过程耗时时间大于该值,则正常的虚拟机的迁移过程抛出超时失败异常并回滚该迁移过程。
18.所述的热迁移策略包括内存缓存策略和自动降频策略。
19.所述的自动降频策略具体为:
20.通过降低虚拟机的cpu频率使得虚拟机内的内存更新速度降低,且降频方式为递进式降频,从20%逐步降低到99%,直到虚拟机的迁移能够顺利完成。
21.所述的内存缓存策略具体为:
22.在热迁移时在迁移源主机上保存一份缓冲区,用以缓存传输过的脏页面,当下次迭代传输时,若缓存过的页面中写入数据,则被标记为脏页,此时只传输数据,以减少传输的数据量。
23.所述的步骤3中,基于轮询判断策略切换不同的热迁移策略的过程具体包括以下步骤:
24.步骤301:比较更新速度为v1和拷贝速度为v2的大小并采取对应的策略,若v1<v2,则不开启任何策略,执行步骤304,若v1≥v2,则执行步骤302;
25.步骤302:查看虚拟机的总内存大小r0,并获取虚拟机所在源宿主机的可用内存空间r,进而比较两者大小,若r>r0,则开启内存缓存策略完成热迁移虚拟机,并执行步骤304,若r≤r0,则开启自动降频策略完成虚拟机热迁移;
26.步骤303:持续监测热迁移的进程,并判断迁移时间t与虚拟机迁移超时时间阈值t0的大小,若t≥t0,则开启自动降频策略完成虚拟机热迁移,若t<t0,则执行步骤304;
27.步骤304:持续拷贝内存直到完成kvm虚拟机的热迁移。
28.所述的步骤3中,根据虚拟机热迁移的策略计算公式获取计算结果,进而判断是否开启对应的热迁移策略。
29.所述的虚拟机热迁移的策略计算公式具体为:
30.f(v1,v2,r0,r,t,t0)=sng4(v
2-v1)+sng2(r-r0)+sng(t-t0)
31.其中,sng函数为阶跃函数;
32.所述的sng函数的表达式为:
[0033][0034]
所述的计算结果与热迁移策略相对应:
[0035]
当计算结果f(v1,v2,r0,r,t,t0)∈{4,∞},则执行kvm虚拟机的正常迁移进程,不
开启任何策略;
[0036]
当计算结果f(v1,v2,r0,r,t,t0)∈{2},开启虚拟机热迁移的内存缓存策略;
[0037]
当计算结果f(v1,v2,r0,r,t,t0)∈{0,1,3},开启虚拟机热迁移的自动降频策略。
[0038]
与现有技术相比,本发明具有以如下有益效果:
[0039]
本发明通过获取6个相关监测指标和2种热迁移策略,根据这6个指标的监测情况比较,自动化的切换不同的热迁移策略,可选的热迁移策略包括自动降频策略和内存缓存策略在虚拟机热迁移过程中设置轮询判断策略,保证在不影响用户体验的情况下,提高内存繁忙的kvm虚拟机热迁移的成功率以及减少内存繁忙的虚拟机的迁移时间。
附图说明
[0040]
图1为本发明的方法流程图。
具体实施方式
[0041]
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0042]
本发明主要解决了内存繁忙的虚拟机可能会出现的迁移超时失败的问题。内存繁忙的虚拟机迁移超时失败的根本原因在虚拟机的内存更新速度超过了虚拟机内存的拷贝速度,在不关停虚拟机内应用的情况下,有两种的热迁移策略能够解决该问题:
[0043]
自动降频:能够降低虚拟机的cpu频率,使得虚拟机内的内存更新速度降低,这种方法是递进式降频的,从20%逐步降低到99%,直到虚拟机的迁移能够顺利完成,但问题在于cpu降频达到80%以上的时候,虚拟机几乎接近于卡死状态,严重影响用户体验;
[0044]
内存缓存:这种方法在迁移的时候会在迁移源主机上保存一份缓冲区(默认是64mb),用于缓存传输过的脏页面,当下次迭代传输时,若缓存过的页面写入(比如128b)的数据,而被标记为脏页,此时只传输(比如128b)数据,而不是整个4kb页面,以减少传输的数据量,若某个用户程序频繁写申请过的内存,开启该功能,将会大大增加热迁移效率。但是问题在于如果某个用户程序频繁申请新的内存,则开启该功能则没有明显效果,除此以外,该功能开启之后,将会把虚拟机的部分内存缓存在宿主机上,在极端情况下,将会把虚拟机的全量内存在宿主机上缓存,则该虚拟机将会在宿主机上占用两倍的内存空间,如果宿主机内存空间不足,则有可能导致宿主机宕机。
[0045]
两种热迁移策略适用于不同的情况,本发明综合它们的特点,提出了一种优化的kvm虚拟机热迁移方法,在kvm虚拟机的热迁移过程中,监测虚拟机内存的更新速度为v1,内存的拷贝速度为v2,若v1<v2,则不开启任何策略,持续拷贝内存完成热迁移;若v1≥v2,则查看虚拟机的总内存大小为r0,监测虚拟机所在源宿主机的可用内存空间r,若r>r0,则开启内存缓存策略热迁移虚拟机,开启该策略后持续监测热迁移的进程,如果迁移时间t仍大于虚拟机迁移超时时间阈值t0(t≥t0),则开启自动降频策略完成虚拟机热迁移,如果迁移时间t<t0,则继续完成热迁移;如果r≤r0,则开启自动降频策略完成虚拟机热迁移。
[0046]
对上述内容进行总结,得到虚拟机热迁移的策略计算公式为:
[0047]
f(v1,v2,r0,r,t,t0)=sng4(v
2-v1)+sng2(r-r0)+sng(t-t0)
[0048]
其中,sng函数为阶跃函数,sng函数的表达式为:
[0049][0050]
根据策略计算公式的结果,判断是否实行对应的热迁移策略:
[0051]
f(v1,v2,r0,r,t,t0)∈{4,∞},则执行kvm虚拟机的正常迁移进程,不开启任何策略;
[0052]
f(v1,v2,r0,r,t,t0)∈{2},开启虚拟机热迁移的内存缓存策略;
[0053]
f(v1,v2,r0,r,t,t0)∈{0,1,3},开启虚拟机热迁移的自动降频策略。
[0054]
本发明以openstack云平台中的nova服务管理的kvm虚拟机为例介绍实施过程,在nova服务热迁移kvm虚拟机的过程中,持续监测6个指标:
[0055]
v1为虚拟机内存的更新速度,nova服务在虚拟机热迁移过程中,实时获取虚拟机的剩余内存脏页(nova compute服务中的virt/libvirt/driver.py文件中的_live_migration_monitor函数),结合内存的拷贝速度和时间差值,计算出虚拟机的内存更新速度;
[0056]
v2为热迁移过程中虚拟机内存在宿主机之间的拷贝速度,热迁移过程中的虚拟机内存拷贝速度在一般情况下是个常量,取决于物理服务器之间的传输带宽;
[0057]
r0为虚拟机的总内存大小,通常也是一个容易获取的常量;
[0058]
r为虚拟机所在源宿主机的可用内存空间,源宿主机的可用内存空间能够在源宿主机上获取,该值为变量,需要实时监测,监测方法具体为通过linux命令free获取该值。
[0059]
t为虚拟机迁移过程的耗时时间,该值指当前时间与虚拟机迁移开始时间的差值;
[0060]
t0为虚拟机迁移过程的超时时间阈值,该值通常为在nova里配置的一个常量,如果迁移过程耗时时间大于这个值,则正常的虚拟机迁移过程抛出超时失败异常并回滚该次迁移过程。
[0061]
根据这6个指标的监测情况进行比较自动化切换不同的热迁移策略,保证在不影响用户体验的情况下,最大程度的提高虚拟机热迁移的效率和成功率,其中,可选的热迁移策略包括自动降频策略和内存缓存策略,自动降频策略和内存缓存策略的打开方法分别为:
[0062]
自动降频策略:在nova服务中开启live_migration_permit_auto_converge=true配置即可打开自动降频功能;
[0063]
内存缓存策略:在nova libvirt driver中,修改migration_flags即可开启内存缓存策略:|migration_flags|=1<<11(<<为左移运算符,左移运算符为计算机用语,用以将一个数的各二进制位全部左移若干位,移动的位数由右操作数指定,右操作数必须是非负值,其右边空出的位用0填补,高位左移溢出则舍弃该高位),修改相关nova代码即可实现。
[0064]
在获取6个相关监测指标和2种热迁移策略的打开方法之后,在虚拟机热迁移过程中加一个轮询判断策略,根据虚拟机热迁移的策略计算公式判断是否开启相关热迁移策略即可。
[0065]
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术
人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1