APP下载

云计算环境中虚拟机动态迁移技术研究

2018-12-15袁爱平

计算机时代 2018年10期
关键词:虚拟机云计算

袁爱平

摘 要: 预拷贝是虚拟机动态迁移的主要方法之一,通过迭代传输内存页完成源节点到目标节点的迁移。但预拷贝方法由于重复传输同一脏页内存,导致了迁移过程占据较长的时间。本文通过对预拷贝方法的改进,提出了一种快速的虚拟机实时迁移方法,提高了迭代过程中脏页内存的传输效率。实验结果证明,与传统的预拷贝方法相比,改进后的预拷贝方法明显地减少了迁移时间和传输数据,达到了虚拟机快速迁移的目的。

关键词: 云计算; 虚拟机; 动态迁移; 预拷贝

中图分类号:TP301 文献标志码:A 文章编号:1006-8228(2018)10-05-03

Abstract: Pre-copy is one of the main methods of virtual machine live migration, and the migration of source node to destination node is accomplished by iteratively transmitting memory pages. However, due to the repeated transmission of the same dirty page memory, the migration process takes longer migration time. By improving the pre-copy method, a fast live migration method for virtual machine is proposed, which improves the transmission efficiency of dirty pages in the iteration process. The experimental results show that the improved pre-copy method obviously reduces the migration time and transmission data, and it achieves the goal of rapid migration of virtual machines.

Key words: cloud computing; virtual machine; live migration; pre-copy

0 引言

隨着信息技术和网络应用的快速发展,云计算作为一种全新的计算模式,已越来越受到工业界和学术界的关注。通过云计算平台,用户可以获得按需、灵活和可伸缩的计算及存储资源。为了提高系统资源的利用率,云计算系统引入了虚拟化技术,通过将一台物理服务器分割为若干个相互隔离的虚拟服务器,实现对物理资源的动态分割。虚拟机的动态迁移作为虚拟化的关键技术之一,解决了云计算数据中心的负载均衡、电源管理、在线维护等问题。在虚拟机的动态迁移问题中,预拷贝方法是虚拟机最主要的实时迁移技术之一[1]。

1 预拷贝方法

预拷贝方法[2]是由Clark等人提出并实现的虚拟机动态迁移机制。目前最流行的Xen、KVM及VMware等虚拟化平台都已经提供了预拷贝机制,并且已经被广泛应用。预拷贝方法将源计算机上的内存页以迭代的方式拷贝到目的计算机上。首先第一轮拷贝所有的内存页,第二轮只拷贝在第一轮迭代过程中修改过的页(脏页),依此类推,第n轮拷贝的是第n-1轮迭代过程中修改过的页。当脏页数目到达某个常数或者迭代达到一定次数时,预拷贝阶段就结束。这时停机,并把剩余的脏页和CPU运行状态拷贝到目的计算机。

预拷贝方法存在的一个问题就是重复传输同一脏页内存,从而导致迁移过程占据较长的迁移时间,这对于云计算数据中心是不利的;存在的另一个问题是内存脏页面的收敛性问题。当网络传输速率小于源虚拟机内存更新速率时,就会产生脏页面无法收敛的问题。对于预拷贝方法的数据高冗余性和收敛性这两个问题,已经有学者提出了改进方案。赵春等人[3]提出了一种基于动态调整阈值的虚拟机迁移算法,通过统计分析物理机历史负载数据,动态地调整虚拟机迁移的阈值门限,再延时触发和预测物理机的负载趋势来确定虚拟机迁移时机。Bolin Hu等人[4]提出了一个基于次数序列的预拷贝算法,通过设定高脏页面的阀值K,低于K值的脏页在本轮迭代中可能被发送给目的主机,否则直到迭代结束才被发送出去。Petter Svard等人[5]提出了基于增量压缩技术的预拷贝算法,以内存页更新变化的增量来代替变化后的页面本身数据。本文通过对传统预拷贝方法的改进,提出了一种快速的虚拟机实时迁移方法。

2 快速的虚拟机实时迁移方法

在预拷贝方法中,根据页面的使用状态将迁移的内存页分为三类,也就是三种页位图:to_send、to_skip和to_fix。这三种页位图的说明如下。

to_send:标记的是在前一轮迭代过程中变脏的页,也就是在本次迭代中需要被传送的页;

to_skip:标记的是在本次迭代中可以跳过不传的页;

to_fix:标记的是在最后的停机拷贝阶段才传送的页。

实际上,to_send页位图中记录的内存页是前一轮迭代过程中被修改的页,只需在迭代开始前把上一轮的脏页位图拷贝到to_send就可以了。to_skip是为了减少页的反复重传而引入的一个页位图,记录的是那些由于改动较频繁而可以跳过不传的页。to_skip中记录的是那些还没有被映射的页,这些页被放到最后一轮传送。

针对预拷贝方法中存在的这个问题,在预拷贝方法中新增了一个页位图[6]:to_send_last,与to_fix位图页面一样,to_send_last标记的也是需要在最后一轮迭代被传送的页面,但是to_send_last只记录那些频繁更新的页面。为了更好地确定哪些内存页是改动频繁的,我们设定只有在最近的n次观测中至少有k次被确认改动,才被最终确认为改动频繁的内存页。

在改进的预拷贝方法中,那些频繁更新的页面被放入了to_send_last位图页中,并且仅在最后一轮迭代中被传送,因此可写工作集会快速收敛,并且迭代拷贝过程可以在若干轮迭代中完成。在改进的预拷贝算法中,那些频繁更新的页面仅在最后一轮迭代中被传送。同时为了避免导致留到最后传送的页面过多而造成停机时间的延长,使内存迁移的效率和性能下降,我们定义了一个链表p,p中的一个节点代表to_send_last中的一个内存页面,并且按照脏页率由低到高排序。定义链表的长度为m,其值根据具体情况设置。每次把脏页面放入to_send_last位图时,同时把该页面的地址按照脏页率插入到链表p中。当链表的长度超过m时,则把脏页率最低的节点移出链表,同时把该节点指向的页面从to_send_last位图中删除,再传送该内存页面到目的计算机上。

改进后预拷贝方法的迁移过程,分为以下6个步骤[2],如图1所示,这里把迁移的发起者即源计算机记为主机A,目的计算机记为主机B。

⑴ 预迁移

程序将验证主机A和主机B的存储以及网络设置,并对主机B进行资源清理,以确保主机B有足够的资源接受这个虚拟机。

⑵ 预定资源

主机B预订虚拟机所需要的资源,并生成一个虚拟机的容器。

⑶ 预拷贝

这个阶段为我们改进的部分。在这一阶段VM仍然运行,主机A以迭代的方式将VM的内存页拷贝到主机B上。其过程为首先传输所有的内存页,然后在迭代过程中把那些改动频繁的内存页放入到to_ send last页位图,同时把该页面的地址按照脏页率插入到一个链表p中。当链表的长度超过m时,则把脏页率最低的节点移出链表,同时把该节点指向的页面从to_send_last位图中删除,在此轮迭代中传送该内存页面到目的计算机上,否则在最后一轮迭代过程中传送。

⑷ 停机拷贝

首先,在主机A上停止虚拟机的运行,接着通过ARP广播将与虚拟机有关的网络流量从主机A重定向到主机B上。最后,让主机A上的虚拟机和主机B上的容器做最后的同步工作。

⑸ 提交

当主机B已经收到完整的虚拟机状态时,它会发一个确认信息给主机A,接着,主机A会关闭之前的虚拟机。

⑹ 启动

主机B上的容器被激活,主机B成为新的虚拟机,并且对外广播它的IP地址。

3 实验与结果分析

3.1 实验环境

⑴ 硬件环境

2台普通PC机,配置如下:

CPU:Intel Pentium Dua1CPU 1.81GHz;

内存:2048M;

硬盘:80G;

网络:100M以太网。

⑵ 软件环境

实验在安装了Xen 3.3.0的Ubuntu 8.04系统上进行。被迁移的虚拟机是源计算机中唯一的虚拟机,并且在目的计算机中也没有其他虚拟机。虚拟机的内存大小从256MB到1024 MB。对于改动频繁内存页的确认,实验中采用的设置是n为5,k为2,链表的长度m设为10。实验的各项参数值均从Xen的日志中直接获得或计算得出,并且为多次实验的平均值。

3.2 实验结果与分析

低脏页率实验是在操作系统空负载时进行的,而高脏页率实验则是在操作系统中有负载时进行的。表1-4给出的是传统预拷贝方法和快速预拷贝方法在低、高脏页率下的迭代次数、宕机时间和总消耗时间值的对比。

在低脏页率环境下,迁移时内存页迭代的次数不多,所有迭代次数距设定的最多迭代次数30次还有很大的距离。优化前后对比可以看出优化效果并不明显。

当脏页率很高的时候,迭代的次数也随之增多,设定的迭代次数最多为30次,传统的预拷贝方法在各种环境都达到最高的迭代次数。而快速预拷贝方法在迭代次数、宕机时间和总消耗时间上明显地少于传统的预拷贝方法,提高了虚拟机动态迁移的性能。

4 结束语

本文根据对预拷贝方法机制的分析,提出了一种快速的预拷贝方法来动态迁移虚拟机,通过增加一个标记改动频繁内存页的页位图,并使用链表来控制最后迭代传送的内存页面,提高了虚拟机的迁移性能。最后在Xen 3.3.0上通过实验进行了验证,结果表明,与预拷贝方法相比,本文提出的快速预拷贝方法能够在不同的虚拟机内存大小和高脏页率环境下减少迭代次数和总迁移时间。

参考文献(References):

[1] 赵佳.虚拟机动态迁移的关键问题研究[D].吉林大学,2013.

[2] Clark C, Fraser K, Hand S Hansen J, Jul E, Limpach C,Pratt I, Warfield A. Live migration of virtual machines[C].Proceedings of the 2nd Conference on Symposium on Networked Systems Design&Implementation;(NSDI'OS). Berkeley, USA: ACM Press,2005:273-286

[3] 赵春,闫连山,崔允贺等.基于动态调整阈值的虚拟机迁移算法[J].计算机应用,2017.37(9):2547-2550

[4] Bolin Hu, Zhou Lei, Yu Lei, Dong Xu, Jiandun Li. A Time-Series Based Precopy Approach for Live Migration of Virtual Machines[C].Proceedings of 2011 IEEE 17th International Conference on Parrallel and Distributed Systems (ICPADS). Tainan, Taiwan:IEEE Press,2011:947-952

[5] Petter Svard, Johan Tordsson, Benoit Hudzia, Erik Elmroth. High performance live migration through dynamic page transfer reordering and compression[C].Proceedings of 2011 3rd IEEE International Conference on Cloud Computing Technology and Science. Athens, Greece: IEEE Press,2011:542-548

[6] 馬飞.云计算数据中心中虚拟机放置和实时迁移研究[D].北京交通大学,2013.

猜你喜欢

虚拟机云计算
虚拟机技术在计算机组装课堂中的应用
虚拟机服务器在教学实践中的探索研究
浅谈计算机系统虚拟化网络设置方案
志愿服务与“互联网+”结合模式探究
云计算与虚拟化
任务驱动教学法在《网络应用服务管理》教学中的应用
基于云计算的移动学习平台的设计
虚拟机局域网组建技术应用初探
实验云:理论教学与实验教学深度融合的助推器
云计算中的存储虚拟化技术应用