基于服务活跃度的虚拟机实时迁移方案的研究
2013-07-19张乐
张乐
暨南大学信息科学技术学院计算机科学系,广州 510630
基于服务活跃度的虚拟机实时迁移方案的研究
张乐
暨南大学信息科学技术学院计算机科学系,广州 510630
1 引言
虚拟机[1]是指通过虚拟机管理器在一个物理硬件资源上虚拟出来的具有完整硬件系统功能,运行在一个完全隔离环境下的完整计算机系统。
1.1 背景
虚拟机的实时迁移[2]是在保持虚拟机服务正常运行的同时,将虚拟机从一个物理主机(源主机)迁移到另外一台物理主机(目标主机)上,并在目标主机上恢复虚拟机的运行。
1.2 实时迁移
虚拟机的实时迁移可以在虚拟机迁移的同时保证虚拟机的服务不受迁移的影响,方便用户的使用,提高服务器的使用效率,因而在服务器集群方面有着广泛的应用。
1.2.1 原因及解决问题
虚拟机的实时迁移所带来的变化以及其解决的问题包括了以下几个方面:
(1)解决“剩余的依赖关系[3]”的问题,因为有些虚拟机必须保持其所在主机的系统配置以及网络访问接口等。
(2)虚拟机的内存状态能够在迁移过程中保持一致并且有效,这也适用于内核内部状态(如当前活动连接的TCP控制块),这意味着在实际应用中可以迁移游戏服务器、流媒体服务器,而不需要进行客户端的重新连接。
(3)解决了用户和管理员之间的担忧,用户可以全权管理虚拟机内运行的软件和服务而不需要提供任何操作系统级别的访问,管理员则不需要关注虚拟机内发生的细节。
(4)虚拟机的实时迁移对其所在的主机的维护也是很有价值的(可能虚拟机实时迁移完成后该主机就将退役)。
总之,虚拟机的实时迁移是机器集群管理员强有力的工具,它分离了软硬件,并且将机器集群整合成一个单一的连贯管理域。此外,可以通过虚拟机的实时迁移来减轻其所在主机的负载,从而达到机器集群的负载均衡以及提高资源的可利用性,可以看出虚拟机的实时迁移是非常必要且有用的。
1.2.2 基本概念
虚拟机的实时迁移需要对虚拟机的所有信息进行迁移,包括存储、网络以及内存。
存储迁移因为其数据量极大,在迁移时会造成大量的时间和网络带宽的消耗,降低了实时迁移的效率,为了减少这种消耗,通常采用NFS[4]共享数据和文件系统。
网络迁移[5]是指虚拟机的所有网络设备,包括协议状态以及IP地址都要进行迁移,网络迁移可以通过发送ARP重定向包,将虚拟机的IP地址与目标主机的MAC地址绑定,绑定之后发送到虚拟机的所有包都可以直接发送到目标主机上,从而实现网络的无缝迁移。
内存迁移是虚拟机中迁移最重要也是最复杂的迁移,因为内存页的信息直接反应了当前虚拟机的运行状态。虚拟机实时迁移的过程中会不断地更新内存页的内容,这样就需要重新传输内存页到目标主机上,如果虚拟机的脏页率高(内存页的内容更新快),那么就需要多次传输脏页到目标主机上,这将会大大增大虚拟机的总迁移时间,如果脏页率低,虚拟机过早进入停机阶段又会导致虚拟机服务停顿时间过长,所以如何选择合适的临界点进入停机阶段将直接影响虚拟机实时迁移的效率和时间。
1.3 内存迁移
虚拟机的内存迁移主要分为三个步骤:Push阶段、Stop and Copy阶段以及Pull阶段。
Push阶段:该阶段源主机上的虚拟机持续的运行,同时不断地传输内存页到目标主机上,为了保证源主机和目标主机的一致性,源主机需要重新发送发生更新的内存页(即内存脏页)。
Stop and Copy阶段:该阶段源主机上的虚拟机停止运行,并在停止期间发送剩下的内存脏页到目标主机上,传输完成之后目标主机上的虚拟机开始运行,这个阶段的时间就是停机时间downtime[6]。
Pull阶段:该阶段目标主机上的虚拟机保持运行,如果出现页错误,目标主机会向源主机请求重新发送出现错误的页。
其中,Stop and Copy阶段和Pull阶段相结合的迁移方案称为Post-copy[7];Push阶段和Stop and copy阶段相结合的迁移方案被称为Pre-copy。
Post-copy和Pre-copy分别适应于不同的环境下,Post-copy为了尽量减小总迁移时间,Pre-copy为了尽量减小停机时间。
1.3.1 Post-copy
Post-copy方案分为以下四个步骤:
(1)停止源主机上虚拟机的运作;
(2)传输运行所需的内存页到目标主机上;
(3)在目标主机上恢复虚拟机的运作;
(4)传输剩下的内存页直到所有页传输完。
在Post-copy方案中,大部分的内存页只需要传输一次,因此可以很好地降低总迁移时间,但是当虚拟机运行所需的内存页较多时,则会使得停机时间过长,虚拟机的性能会大幅下降。此外,在第二步中,停止运作的虚拟机是不能释放源主机的资源的,当出现多个虚拟机并发迁移的时候,将会导致大量资源需要等待迁移结束后才能得到释放,这也会造成源主机的硬件资源的浪费和迁移效率的下降。
1.3.2 Pre-copy
Pre-copy方案的核心思想是先将所有内存页传输到目标主机上,在一轮传输过后,再向目标主机传输上一轮传输中发生更新的内存页(后文中称脏页),如此迭代传输直到需要传输的脏页数目满足进入停机阶段的停机条件后,进入停机阶段,此时停止源主机上虚拟机的运行,再将余下的脏页传输到目标主机上,最后在目标主机上恢复虚拟机的运行。Pre-copy方案的具体算法流程如图1所示。
图1 Pre-copy算法流程图
2 相关工作
在针对虚拟机动态迁移技术优化的研究上,大部分都是对针对Pre-copy方案的改进,目的都是更好地降低总迁移时间和停机时间。主要研究成果有如下:
(1)基于虚拟机实时迁移技术的内存紧压缩算法和防抖动分层拷贝算法[8]。内存紧压缩算法的核心思想是通过充分利用虚拟机中的气球驱动程序,对迁移域进行内存紧压缩,从而达到降低迁移时间和目标域启动时间的目的;脏页防抖动分层算法则是通过对迁移中出现的脏页进行分层,并且设计了防抖动阈值,很好地解决了迁移中的脏页问题。
(2)基于虚拟机实时迁移技术的分层拷贝算法和脏页减速算法[9]。分层拷贝算法是为了减少传统迭代过程中重复拷贝相同脏页,通过对内存页重写次数统计来尽量减少不必要的拷贝;脏页减速算法则是考虑如何适量减少被迁移域的CPU占有量来降低脏页率。通过分层算法与减速算法的协同工作,在尽可能不影响迁移域服务的前提下,减少了迁移时间。
(3)利用Writable Working Set对Pre-copy方案进行优化。在虚拟机正常工作的一段时间内记录虚拟机的内存页的更新次数,当虚拟机需要进行实时迁移时统计出内存页的更新频率,将更新频率不高的内存页在第三阶段传输,更新频率比较高的内存页则在第四阶段传输,从而达到降低总迁移时间和停机时间的目的。
表1 虚拟机的内存分配和使用机制
3 基于服务活跃度的优化方案
在Pre-copy方案中,源主机上的虚拟机管理器首先将待迁移的内存页传输到目标主机上,然后对脏页进行迭代传输。这种方案在虚拟机低负载或者无负载的情况下能够较好地降低总迁移时间和停机时间,但是当虚拟机高负载的情况下,Pre-copy方案在面对脏页率很高的问题时,迭代传输脏页的次数将会非常多,直到迁移达到系统承受上限时才会进入停机阶段,这显然会带来较大总迁移时间和停机时间的开销。可以看出,在Pre-copy方案中内存页的数量以及脏页率对虚拟机的实时迁移有着非常重要的影响,因此对虚拟机在主机上的内存分配和使用机制[10]进行分析是非常有必要的。
3.1 虚拟机的内存分配与使用
在主机上创建虚拟机需要分配内存资源给虚拟机,一般情况下有三个需要配置的选项(内存上限、内存预留、内存分享),这三个选项的分配和使用机制如下表1所示。
3.2 停止条件
停止条件[11]就是虚拟机结束迭代传输内存页的第三阶段并且进入第四阶段的判断条件。
3.2.1 源代码中的相关代码
根据对实时迁移源代码的分析,停止条件如表2和表3所示。
表2 源代码中的停止条件
表2中,条件1.1和条件1.2需要同时满足才算满足第1个停止条件。
条件1.1当前迭代轮传输的脏页数量大于上一轮传输的脏页数量;
条件1.2由迁移引起的网络负载已经超过了由虚拟机定义的吞吐量的阙值。
表3 涉及变量的名词解释
条件2迭代次数超过定义的最大次数。
条件3当前迭代轮需要传输的脏页数量和不需要传输的脏页数量和小于50。
条件4总迁移的内存页数量大于虚拟机所有内存页总数量的max_factor倍数。
3.2.2 条件分析
对于停止条件2,在源代码中,max_iters定义的初始值为29,即当迭代传输超过30次时,实时迁移进入停机阶段,29是一个经验值。对于低负载的情况,因为每次迭代传输的脏页不多,所以不需要过多的迭代轮数就可以进入停机阶段,而对于高负载的情况,因为每次迭代传输的脏页数量很多,过多的迭代轮数有可能导致总迁移时间的增大,所以说在不考虑虚拟机负载的情况就直接使用一个确定的数值显然是不合理的。
对于停止条件3,在源代码中,N=50也是一个经验值,即当前迭代需要传输的脏页和不需要传输的脏页数量和超过50时,实时迁移进入停机阶段。对于低负载的情况,50这个上限是不容易被达到的,而对于高负载的情况,50又很容易满足,这样就会导致过早进入停机阶段,从而导致停机阶段需要传输过多内存页,导致停机时间的增大,这同样也是不合理的。
对于停止条件1和4,因为条件中都是动态数值或者是根据虚拟机得到的数值,所以可以不做优化的考虑。
3.2.3 结论
通过对停止条件的分析得到,Pre-copy方案中的停止条件是静态的,对于不同负载的虚拟机实时迁移不能起到动态的调整,这就很难控制任意负载的虚拟机实时迁移的总迁移时间和停机时间,所以就需要在虚拟机实时迁移开始前或进行中对停止条件进行动态的配置,从而使得当前的停止条件对于当前虚拟机的实时迁移是最佳的。通过对虚拟机的当前服务活跃度的研究来动态配置停止条件,来达到优化实时迁移的目的。
3.3 服务活跃度
虚拟机的负载[12]就是虚拟机上运行的服务对虚拟机资源的利用率。内存资源是虚拟机非常重要的资源之一,服务对内存资源的使用主要表现为两种情况。
(1)写操作:运行服务将新的内容写到内存页的操作,写操作的次数越多相对应内存页的更新率就会越高。
(2)读操作:运行服务获取内存页的内容来进行相关处理的操作,读操作不会对内存页的内容进行修改,但站在算法设计的角度上,读操作会增加内存页的被读取次数,从而会引起程序代码中读次数变量的变化。因此对于算法而言,读操作也是属于内存页的更新范畴。
于是在这里认为虚拟机的负载越高就会导致虚拟机内存页的更新越频繁(即脏页率高)。
定义服务对虚拟机资源的利用率(即单位时间内虚拟机上所有用户作出的操作数)为服务活跃度,根据大量实验验证(实验环境为Olio[13],实验机制为虚拟机上不同数量的用户同时使用虚拟机上的各种服务,然后观察虚拟机上的脏页变化),从而得到服务活跃度与脏页率之间的关系如下图2所示。
图2 服务活跃度与脏页率之间的关系
从图2可以看出,在系统承受范围内,服务活跃度和脏页率之间呈正比关系,这里的“系统承受范围”是由实验主机的网络带宽和其物理内存大小所决定的。实验中所使用的主机能接受的用户数量范围在0到150之间,当超过150这个数量值时,主机在单位时间内能更新的内存页数量也就是在220到240之间,针对上述原因认为服务活跃度越高代表了虚拟机的负载越高,从而导致了脏页率的增加,所以通过研究服务活跃度来配置停止条件的方案是可行的。
3.4 优化方案
结合上文的结论,提出根据虚拟机当前的服务活跃度来配置实时迁移的停止条件,具体流程为:
(1)虚拟机实时迁移前,通过服务活跃度检测器检测到虚拟机当前的服务活跃度SLL(Service Live Level);
(2)根据得到的SLL在SLL基准库寻找对应的最佳停止条件的配置参数(max_iters以及N);
(3)将得到新的配置参数初始化到实时迁移程序中,启动实时迁移。
根据SLL来得到最佳停止条件的Pre-copy优化系统模型,如图3所示。
在这个系统模型中,涉及到“停止条件参数”、“SLL检测器”以及“SLL基准库”三个概念。
(1)停止条件参数:源代码中停止条件中的静态参数N以及max_iters,这两个参数是根据SLL的不同而动态变化的。
(2)SLL检测器:检测虚拟机实时迁移开始前的服务活跃度,在测试系统中,主要是利用Olio服务中所带的用户操作检测器来实现的。
(3)SLL基准库:一个存储“不同区间的SLL”和“其对应的最佳停止条件参数”的数据库,这个数据库是通过大量的虚拟机实时迁移实验来得到的,数据库的建立过程会在第4章节中进行介绍。
4 实验与结果分析
为了验证上文提出方案的有效性,在物理主机上搭建测试环境,分别进行静态停止条件和基于服务活跃度的停止条件两种情况下的虚拟机实时迁移实验,并对总迁移时间和停机时间的结果进行分析。
4.1 实验环境搭建
在实验中,使用NFS服务来管理源主机和目标主机的硬存储资源,采用一台PC机来作为提供NFS服务的服务器,此外,虚拟机在两台相同配置的主机上进行实时迁移,这样可以在两台主机上相互迁移并连续进行多次实验。
图3 加入SLL的系统模型图
用于搭建环境的服务器主机和虚拟机的配置,如表4所示。
系统整体架构[14]如图4所示。
图4 实验整体架构图
主要配置过程如下:
(1)在源主机和目标主机上安装Xen[15];
(2)修改Xen的配置文件,开启虚拟机实时迁移的端口,重启xend服务,使更改生效;
(3)激活portmap和NFS服务,启动NFS挂载功能;
(4)源主机和目标主机将虚拟机的镜像挂载到自己对应的盘符上,实现虚拟机镜像的NFS共享;
(5)使用Xen create命令创建虚拟机,修改配置文件来配置虚拟机的各种信息。
4.2 实验测试
实验测试主要分为三个部分:第一部分是建立SLL基准库;第二部分是在静态停止条件下的虚拟机实时迁移;第三部分是在基于SLL的停止条件下的虚拟机实时迁移。
4.2.1 建立SLL基准库
在基于SLL的优化方案中,SLL基准库是非常重要的,因为这个数据库的作用是帮助系统根据当前虚拟机的SLL选择最佳停止条件。
SLL基准库的建立是通过大量的重复实时迁移实验来获取的,具体方法是多次实时迁移不同SLL的虚拟机,通过调整停止条件参数(max_iters和N),记录每次实时迁移的总迁移时间和停机时间,选择总迁移时间和停机时间最短的那个停止条件参数作为对应SLL的最佳停止条件参数,实验初始化数据如表5所示。
表5中,max_iters的取值跨度是2,即取值顺序为7,9,11,13,15,同理,N的取值跨度为200。
因为实验次数特别多,所以仅列出并发用户为25的实验结果,如表6所示。
表5 实验初始化数据
表6 并发用户为25的实时迁移结果
表6中,总迁移时间用TT表示,停机时间用DT表示,单位是ms。
从表6的测试结果可以得到,当并发用户为25,SLL=4.975的时候,虚拟机的实时迁移在停止条件参数max_iters=9以及N=900时,总迁移时间和停机时间的最小值分别为733 470 ms和1 107 ms。
当并发用户和SLL分别为其他取值的时候,其对应的最佳停止条件参数的实验结果如表7所示。
表7 SLL基准库
4.2.2 静态停止条件下的实时迁移
在静态停止条件下,对于不同SLL的虚拟机,采用多次实时迁移并取每次结果的平均值,实验测试结果如表8所示。
4.2.3 基于SLL的停止条件下的实时迁移
在基于SLL的停止条件下,先通过SLL检测器检测当前虚拟机的SLL,然后从SLL基准库中选取最佳的停止条件并配置到迁移程序中,同样采用多次实验去平均值。实验结果如表9所示。
表8 静态停止条件下的实时迁移
表9 基于SLL的停止条件下的实时迁移
4.3 结果分析
从表8和表9的结果,针对不同SLL的虚拟机实时迁移,当实时迁移分别采用静态停止条件和基于SLL的停止条件的时候,总迁移时间TT的结果如图5所示,停机时间DT的结果如图6所示。
图5 两种停止条件下的总迁移时间
图6 两种停止条件下的停机时间
根据图5和图6的结果,得出的结论是基于SLL的虚拟机实时迁移方案可以达到降低总迁移时间和停机时间的效果,从而加快了虚拟机的实时迁移。
5 结束语
为了解决虚拟机在不同负载的情况下实时迁移的效率问题,提出了基于虚拟机当前服务活跃度的实时迁移优化方案。通过虚拟机服务活跃度来选择最佳的停机条件并配置到相关迁移程序中,从而达到降低总迁移时间和停机时间的目的,在一定程度上优化了虚拟机的实时迁移。
实验是通过Olio服务自带的用户操作检测器来获取虚拟机活跃度的,而这种方法不能很好地面对任何情况下的虚拟机。如何能够做到随时检测虚拟机的服务活跃度并实时地配置最佳停止条件,将是今后的一个研究方向。
[1]Goldberg R P.Survey of virtual machine research[J].Computer,1974,7(6):34-45.
[2]Clark C,Fraser K,Hand S,et al.Live migration of virtual machines[C]//Proceedings of the 2nd Conference on Symposium on Networked Systems Design&Implementation.[S.l.]:USENIX Association,2005:273-286.
[3]Douglis F,Ousterhout J.Transparent process migration:design alternatives and the sprite implementation[J].Software:Practice and Experience,1991,21(8):757-785.
[4]Hitz D,Lau J,Malcolm M.File system design for an NFS file serverappliance[C]//ProceedingsoftheUSENIXWinter 1994 Technical Conference,1994:235-246.
[5]温抿雄,李沁.虚拟机迁移系统网络连接重定向技术[J].计算机应用研究,2009,26(5).
[6]Patterson D A.A simple way to estimate the cost of downtime[C]//Proceedingsofthe16thSystemsAdministration Conference,2002.
[7]Hines M R,Deshpande U,Gopalan K.Post-copy live migration ofvirtualmachines[J].ACMSIGOPSOperatingSystems Review,2009,43(3):14-26.
[8]李永.基于虚拟机动态迁移技术的分析和研究[D].长沙:国防科学技术大学,2009.
[9]阮敏.Xen环境下实时迁移结构和算法研究[D].大连:大连海事大学,2009.
[10]张伟哲,张宏莉,张迪,等.云计算平台中多虚拟机内存协同优化策略研究[J].计算机学报,2011,34(12):2265-2277.
[11]Akoush S,Sohan R,Rice A,et al.Predicting the performance of virtual machine migration[C]//Proceedings of Modeling,Analysis and Simulation of Computer and Telecommunication Systems(MASCOTS).[S.l.]:IEEE,2010:37-46.
[12]李运发,徐向华,万键.基于虚拟机负载迁移的资源调度机制[J].华中科技大学学报:自然科学版,2009(9):45-48.
[13]Breitgand D,Kutiel G,Raz D.Cost-aware live migration of services in the cloud[C]//Proceedings of the 3rd Annual Haifa Experimental Systems Conference.[S.l.]:ACM,2010.
[14]赵华茗.基于虚拟机的高可用信息服务平台建设[J].现代图书情报技术,2009,25(12):18-23.
[15]Barham P,Dragovic B,Fraser K,et al.Xen and the art of virtualization[J].ACM SIGOPS Operating Systems Review,2003,37(5):164-177.
ZHANG Le
Department of Computer Science,School of Information Science and Technology,Jinan University,Guangzhou 510630,China
The live migration of virtual machine is the migration between the different physical hosts,at the same time,ensuring the normal operations of the virtual machine service.In order to ensure the migration efficiency and the normal operation,it needs to reduce the total migration time and downtime.Post-copy and Pre-copy are both frequently used to live migration, Post-copy can reduce the total migration time,Pre-copy can reduce the downtime.This paper presents an optimization Pre-copy scheme based on service live level.According to the relationship between service and dirty page rate,selecting the appropriate stop condition,it makes the live migration enter the stop and copy phase in an appropriate critical point.This not only reduces the number of iterations of the page,but also transmits fewer pages in the stop and copy phase,so as to achieve the purpose of reducing the total migration time and downtime at the same time.
live migration;Post-copy;Pre-copy;service live level;dirty page rate;stop condition
虚拟机实时迁移是在保证虚拟机服务正常运行的同时,在不同的物理主机之间迁移,为保证迁移效率和服务正常运行,需降低总迁移时间和停机时间。后拷贝和预拷贝是常用的两种实时迁移方案,后拷贝能降低总迁移时间,预拷贝能降低停机时间。基于服务活跃度的预拷贝优化方案是根据服务活跃度选择合适的停止条件,使得虚拟机在合适的临界点进入停机阶段,这不仅减少了页的迭代次数,也使停机阶段传输更少的页,从而达到同时降低总迁移时间和停机时间的目的。
实时迁移;后拷贝;预拷贝;服务活跃度;脏页率;停止条件
A
TP302.2
10.3778/j.issn.1002-8331.1303-0250
ZHANG Le.Scheme research of virtual machine live migration based on service live level.Computer Engineering and Applications,2013,49(19):254-259.
张乐(1988—),男,硕士,研究方向为云计算。E-mail:shine_paul@163.com
2013-03-18
2013-05-27
1002-8331(2013)19-0254-06