基于副本的跨数据中心虚拟机快速迁移算法
刘圣卓1, 2, 姜进磊1, 2, 杨广文1, 2    
1. 清华大学 计算机科学与技术系, 北京 100084;
2. 清华信息科学与技术国家实验室(筹), 北京 100084
摘要:跨广域网的虚拟机动态迁移是多数据中心云计算环境的重要技术支撑。与局域网上相比,跨广域网的动态迁移由于受到带宽的限制而面临更多的技术挑战。基于跨数据中心虚拟机迁移的特性,提出了多数据中心虚拟机快速动态迁移架构和跨数据中心快速动态镜像迁移(FlimCD)算法。FlimCD算法利用脏块去冗、缺块预取和热区排序传输等优化方法,减少了虚拟机整体迁移时间,并降低了迁移对性能的影响。实验表明: 对于中等I/O强度工作流,FlimCD算法的迁移时间比前拷贝方法的减少64.3%;FlimCD的优化机制使后拷贝阶段的缺块率下降49%以上。
关键词虚拟机    广域网迁移    动态存储迁移    去冗余    多数据中心    
Fast cross-datacenter virtual machine migration algorithm based on duplication
LIU Shengzhuo1, 2, JIANG Jinlei1, 2, YANG Guangwen1, 2    
1. Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China;
2. Tsinghua National Laboratory for Information Science and Technology, Tsinghua University, Beijing 100084, China
Abstract:Live migration of virtual machines (VM) over wide-area networks (WAN) is key to cloud computing operations in a multi-datacenter environment. Compared with the migration over a local-area network (LAN), the live migration over a WAN faces more technical challenges due to the limited bandwidth. A live cross-datacenter VM migration infrastructure was developed in a fast live image migration cross-datacenters (FlimCD) method, which makes full use of dirty blocks deduplication, block pre-fetching and hot-area scheduled transmissions to reduce the overall migration time and the impact of the VM migration on the performance. Tests show that, for moderately I/O intensive workloads, the migration time is reduced by 64.3% compared with that of the pre-copy algorithm. The current optimization mechanisms reduce the block miss rate by 49% in the post-copy phase.
Key words: virtual machine    wide-area migration    live storage migration    deduplication    multi-datacenter    

由于可按需使用、运行和维护成本低、可快速伸缩等诸多优势,云计算受到了人们的广泛欢迎。时至今日,多数据中心架构逐渐成为云计算架构的一个发展方向。部署于多个数据中心之上的云计算环境给使用者带来了前所未有的应用体验: 在位于不同地点的数据中心之间调度虚拟机(VM),企业能够以靠近终端的方式为客户提供更好的服务,同时高效利用位于不同地区的计算环境或资源。例如,某公司设有亚洲和欧洲这2个数据中心,由于时区差异导致2个数据中心的负载在一天当中周期性变化,在它们之间周期性地调度虚拟机可以更好地利用计算资源。当虚拟机和数据位于不同数据中心且数据量较大时,将虚拟机迁移到数据所在的数据中心可以大幅降低网络开销。上述应用场景都离不开跨广域网虚拟机动态迁移技术的支持。

随着支持虚拟机无缝迁移的VXLAN[1]技术和支持虚拟机在服务器之间迁移的位置/标识分离协议[2]的提出,无需中断服务的虚拟机跨广域网动态迁移成为可能。尽管如此,跨广域网虚拟机动态迁移除了需要将客户机的内存和虚拟机设备状态迁移到目标主机外,还需要将镜像文件也一同迁移到目标主机。由于镜像文件大小通常是客户机内存大小的十到几十倍,考虑到广域网的带宽限制和高延时,要达到动态迁移而无需中断服务的目标并不容易。

本文分析了跨广域网虚拟机动态迁移的过程及其存在的问题,提出一个用于多数据中心云计算环境的虚拟机快速动态迁移架构和相应的迁移方法,其核心思想是: 利用镜像副本减少虚拟机动态迁移过程中的镜像数据传输,使得虚拟机能够灵活地在各数据中心之间通过低带宽的广域网快速迁移;采用前拷贝和后拷贝相结合的跨数据中心快速动态镜像迁移(fast live image migration cross datacenter, FlimCD)算法和脏块去冗机制进一步减少数据传输;通过缺块预取和热区排序传输机制减少后拷贝阶段的缺块率,降低迁移对性能的影响。

1 研究背景和相关工作 1.1 虚拟机动态迁移算法

虚拟机内存动态迁移技术主要分为前拷贝和后拷贝这2类。前拷贝技术[3,4]通过多次迭代拷贝将虚拟机内存和新产生的脏页拷贝到目标主机,在适当时机停机并将剩余的内存页和虚拟机的设备状态拷贝到目标主机,最后在目标主机上重启虚拟机。后拷贝技术[5]先暂停虚拟机,将设备状态拷贝到目标主机,然后在目标主机上重启虚拟机,同时源主机上的内存页面不断被拷贝到目标主机。

与内存动态迁移类似,镜像动态迁移的前拷贝方法[6,7]通过多次迭代将镜像文件和迁移过程中被修改的镜像数据拷贝到目标主机。文[6]通过记录写入数据和数据写入位置来记录脏数据,而脏块跟踪(dirty block tracking,DBT)机制[7]则利用位图记录被修改的数据块。前拷贝方法存在2个问题: 1) 同一位置的数据可能被多次传输,增加额外的网络开销;2) 对于磁盘写密集型应用,迁移的收敛时间将变长。

镜像后拷贝方法[8,9]则是在内存和设备状态的迁移完成后,立刻在目标主机上重启虚拟机,同时源主机不断将镜像的数据块发送到目标主机。虚拟机的写操作直接作用于目标主机,如果读操作的数据块还没有传输到目标主机,则需要向目标主机请求数据块。源主机接到请求后以高优先级发送数据块至目标主机。后拷贝方法避免了数据块的多次传输,降低了带宽占用,但远程缺块会影响虚拟机的性能。

与局域网相比,跨广域网的迁移由于受到带宽的限制和延时的影响,迁移时间和停机时间都将变长。此外,虚拟机跨广域网迁移导致的大量数据传输将占用有限的带宽,可能影响其他应用的性能。因此,跨广域网的动态迁移算法应当使迁移时间尽量短,同时还要考虑对被迁移对象的性能影响。

1.2 相关工作

镜像迁移的混合拷贝[10]方法是整合前拷贝和后拷贝方法的折中方案。首先将镜像拷贝到目标主机,然后将内存迭代拷贝到目标主机; 适当时机暂停虚拟机,将剩余的内存页和设备状态传输到目标主机, 并在目标主机上重启虚拟机。由于在镜像拷贝和内存拷贝过程中,有些数据块被再次修改,因此在虚拟机重启的同时,源主机还需要将被修改的数据块传输到目标主机。混合拷贝方法的数据传输量和迁移时间都小于前拷贝方法的,对虚拟机的性能影响小于后拷贝方法的,因此本文的FlimCD算法也基于混合拷贝方法。

Zheng等[11]将广域网的动态迁移方法归纳为前拷贝、后拷贝和前后拷贝结合这3种模型,并在这3种迁移模型之上提出镜像迁移数据块传输的调度算法。该调度算法统计每个脏块的读或写热度,并据此调整数据块的传输顺序。为降低计算开销,采用包含若干个数据块的块组为调度单位。

本文对采集自佛罗里达国际大学(FIU)计算机系邮件服务器的I/O跟踪信息文件[12]进行分析,运行1 d后仅有约1%的数据块被修改, 这体现了操作系统工作流的局部性。虚拟机从一台主机迁移到另外一台主机,运行一段时间后可能再次迁回原来的主机。如果在源主机或数据中心内部保留虚拟机镜像的副本,虚拟机再次迁移回来时,只传输被改写的数据块可以大幅减少迁移时间。文[10]提出一个增量迁移机制: 在主机上保留镜像副本并用一个位图文件记录虚拟机迁移后的脏块信息,当虚拟机再次迁回时仅传输脏数据块,从而降低迁移时间。

为了靠近客户或数据存储位置,虚拟机常常需要在同一个云环境的多个数据中心之间多次往复迁移。虚拟机迁回曾经运行的数据中心,但目标主机可能不再是曾经运行的主机,而前述的增量迁移方法则仅适用于目标主机为曾经运行主机的情况。

[13]采用8b的版本号记录虚拟机对数据块的修改,版本号大于镜像副本版本号的数据块即为脏块。这种方法解决了针对不同主机的脏块记录问题, 但仍存在2个问题: 1) 当版本号溢出时处理将变得十分复杂;2) 与位图相比,在同样块大小条件下空间开销偏大。为降低开销,文[13]采用大的块组记录脏块,但只有1个数据块被修改也会导致整个块组变成脏块,带来不必要的数据传输。

借鉴上述工作,本文在数据中心内建立保存镜像副本的镜像仓库,使用多个位图文件分别记录虚拟机镜像对应于不同数据中心的修改,从而使借助镜像副本的快速迁移对象从仅限于2台主机之间扩展到多个数据中心的任意主机之间。本文采用2种不同的粒度划分镜像: 脏块记录以4 KB数据块为单位,保证脏块识别效率;读写热度统计以包含若干数据块的区为单位,降低计算开销。

2 方案设计 2.1 总体架构

跨数据中心虚拟机快速迁移架构见图1,主要包括在每个数据中心内部建立的镜像仓库以及运行在主机上的迁移管理和DBT等模块。KVM(kernel-based rirtual machine)和QEMU块驱动共同完成对VM的监控管理。迁移时,目标主机从本地镜像仓库调入镜像副本,源主机只需将脏块发送到目标主机并与镜像合并。图1中数据块α′是数据块α对应的脏块。迁移结束后,镜像文件副本被写入本地镜像仓库。

不同虚拟机的镜像文件之间以及镜像文件内部都存在大量的数据冗余。文[14]对收集的183个不同操作系统的虚拟机镜像文件进行了分析,分别以4 KB和1 MB大小的固定块对文件进行划分,其冗余率分别为76%和55%。镜像仓库将镜像文件划分为固定大小的块,并利用冗余删除技术减少存储空间开销。

图1 跨数据中心虚拟机快速动态迁移架构

镜像仓库保存的镜像副本可以提高虚拟机再次迁回该数据中心的迁移效率,但需要考虑大量镜像带来的存储开销。因此,可以优先保留迁移频率高的镜像,定期清除长时间没有迁回的镜像;也可以在迁移时指定是否保留本次迁移的虚拟机镜像。

2.2 脏块记录

虚拟机迁移到新的数据中心后,利用DBT机制捕获并记录对镜像文件所有的写操作,使用位图文件记录虚拟机对镜像文件数据块的修改,并为每个数据中心分别建立位图文件。迁移时,这些位图文件和虚拟机一同迁移。虽然一个虚拟机镜像附带多个位图文件,但运行过程中只需要维护当前的脏页位图,迁移前将目标主机位图和当前位图合并即可得到目标主机的脏页位图。

位图文件的空间开销不大。以32 GB的镜像为例,如果每个数据块的大小为4 KB,位图文件仅为1 MB。若数据中心的个数为n(一般n<10),脏块位图文件空间总开销为n MB,小于镜像文件的0.03%。

2.3 FlimCD算法

本文提出的FlimCD算法分为前拷贝、内存迭代拷贝和后拷贝这3个阶段,如图2所示。

图2 FlimCD算法时序图
2.4 FlimCD算法的优化

为降低数据传输总量,利用副本减少镜像传输可以理解为一种粗粒度的冗余删除机制,而在脏块中也存在较多的冗余数据块。冗余的脏块主要来自文件的拷贝、移动和合并等操作。本文分析了FIU计算机系邮件服务器4 d的I/O跟踪信息文件[12],每天脏块的冗余率分别为19.5%、14.4%、18.7%和20.2%。

前拷贝阶段对每个将要传输的数据块利用MD5[15]算法计算指纹。将当前数据块的指纹信息与已传输数据块指纹信息进行比较,如果存在指纹相同的数据块,则只需传输块号和已传相同数据块的块号。目标主机负责把相应的数据块拷贝到当前数据块的位置。如果没有找到相同的指纹,则将指纹信息和块号保存在指纹库中,并将数据块发送至目标主机;如果指纹库中存在相同的块号,则用当前的指纹覆盖已有的指纹信息避免传输错误。

后拷贝阶段的缺页使虚拟机响应变慢,虚拟机等待远程调取缺块的时间将大于网络双向延时的时间。因此,要设法降低后拷贝阶段的缺块率。

根据操作系统读操作的顺序性,预取机制将所缺数据块和其后一定范围内的脏块一同传输到目标主机,可以降低缺块率。预取范围太大可能超出了顺序读操作的范围,太小则会使得预取的效率下降。根据部分典型工作流的统计分析,本文将预取的范围设定为256个数据块。

由于操作系统I/O的空间和时间局部性,一段时间内读操作次数多的热区相对稳定。将所有区按访问热度排序,优先传输区读热度高的脏块,可以进一步减少缺块率。本文将镜像文件分成若干个大小固定的区,每个区包含若干个数据块。从迁移开始,每个区内所有数据块的读次数记为Rcount,每个区脏块数记为Dcount。读脏比Rcount/Dcount可以代表某个区内数据块被虚拟机读取概率的高低。本文将读脏比作为区内数据块读热度的量度,脏块根据读脏比的大小依次传输。以32 GB的镜像文件为例,设每个区包含16 384个数据块,共512个区。一个512个元素的数组的运算和排序的开销相对较小。

3 性能评价 3.1 实现和实验平台 3.1.1 镜像仓库的实现

镜像仓库由镜像管理、索引管理和数据存储这3个模块组成。镜像管理模块负责镜像副本元数据的管理并提供镜像的保存和读出接口;索引管理模块则负责管理索引,确保相同的数据块只保留一份。索引信息保存在固态硬盘(SSD)上以获取更快的检索速度;数据存储模块由普通硬盘组成。

3.1.2 迁移算法的实现

本文使用QEMU-KVM[16]作为虚拟机管理程序,FlimCD算法实现包括3个模块:

1) 一个DBT内核模块用于脏块跟踪,管理当前脏块位图信息。

2) 一个修改的QEMU块驱动模块。VM发起的磁盘I/O请求由QEMU块驱动处理,大部分的脏块去冗、缺块预取和热区排序操作都在QEMU块驱动中实现。

3) 一个迁移管理器作为用户层模块,完成镜像迁移和镜像副本的管理。

3.1.3 实验平台

使用2台配置完全相同的主机分别作为源主机和目标主机,每台机器包含一块2.93 GHz Intel i3 CPU、4 GB内存和1 TB硬盘。运行内核为3.13.0的Ubuntu(包含KVM模块),QEMU版本为2.0.0。一台配置了2.6 GHz Intel Pentium Dual-Core CPU、4 GB内存和500 GB硬盘的主机作为软件网关连接源主机和目标主机,控制网络带宽和延时。一台Windows主机作为测试客户机。镜像仓库配置包括1块2.4 GHz Xeon E5-2620 CPU和24 GB内存,存储设备包括4块500 GB硬盘和1块60 GB SSD,操作系统为Ubuntu(内核版本为2.6.38)。镜像仓库通过1 Gb/s以太网与目标主机相连。

实验测试的算法包括前拷贝(precopy)、FlimCD、带缺块预取机制的FlimCD(Flim+pre)、带热区排序传输的FlimCD(Flim+ord)、带脏块去冗机制的FlimCD(Flim+ded)以及全优化的FlimCD(Flim+all)等算法。为使测试具有可比性,本文采取了2项措施:1) 通过随机增加脏块位图中“1”的个数将迁移开始时的镜像统一设定为包含1 GB脏数据 2)测试开始的时间和测试脚本的运行环境尽量保持一致。迁移时间、迁移数据量和缺块率的测试进行3次,以平均值作为测试结果。在以下的测试中,限定虚拟机迁移使用的带宽为50 Mb/s,停机时间不超过500 ms。

3.2 镜像仓库性能

预先在镜像仓库中写入了包括Windows、Ubuntu、Fedora和CentOS不同版本共13个镜像副本,具体信息如表1所示。镜像采用qcow2格式,分块大小为1 MB。全部镜像的原始大小为168.5 GB,去冗余后占用59.3 GB空间,节省了 64.8%的存储空间。目标主机调入大小为10.3 GB的Ubuntu 14.04虚拟机镜像文件共耗时127 s,镜像仓库的实际读出速率为83 MB/s。镜像副本调入时间与虚拟机迁移时间在相同的数量级上,副本调入和迁移可以同时进行。

表1 虚拟机镜像的分布
操作系统数量镜像大小/GB
Windows 7514.8,10.3,19.2,15.0,22.4
Ubuntu 12.0429.6,14.6
Ubuntu 14.04312.0,12.5,10.3
Fedora 2128.4,11.2
CentOS 718.2
3.3 迁移架构性能 3.3.1 借助镜像副本的迁移

使用FlimCD算法对正常运行的文件服务器(fileserver)、邮件服务器(mailserver)和网页服务器(webserver)进行全镜像迁移和借助副本的部分迁移测试。这3个服务器虚拟机的镜像文件大小分别为14.8、14.6和10.3 GB,图3为全镜像迁移的迁移时间whole-t和数据传输量whole-d以及部分迁移的迁移时间dirty-t和数据传输量dirty-d的测试结果。可以看出,这3种不同工作流下部分迁移的迁移时间和传输数据量比全镜像迁移的分别减少92%和94%。

图3 全镜像迁移和部分迁移比较
3.3.2 FlimCD算法的性能

通过mailserver(邮件服务器)、oltp(联机事务处理系统)和webserver(网页服务器)这3种不同的工作流测试FlimCD算法的性能。测试的对象包括precopy、FlimCD、Flim+pre、Flim+ord、Flim+ded和Flim+all等。编写脚本分别访问mailserver和webserver。OLTP由Iometer[17]模拟生成,IO请求的数据块大小分别为4、8和64 KB,读操作占70%。在3种不同工作流下,迁移时间和传输数据量的测试结果分别由图4和5给出。

图4 迁移时间
图5 迁移过程的数据传输量

与前拷贝方法相比,FlimCD算法不需要对磁盘镜像进行多次迭代拷贝,迁移时间明显下降。在mailserver和oltp工作流测试中,FlimCD算法迁移时间分别为前拷贝方法的43.8%和51%,迁移数据量分别减少43.1%和37.8%。在mailserver测试中,全优化FlimCD算法的迁移时间减少到前拷贝方法的35.7%。由于webserver处于较空闲状态且写操作比例比较低,FlimCD算法和前拷贝法的迁移时间基本相同,但去冗机制使FlimCD算法的迁移时间比前拷贝方法的减少了16.1%。由于oltp的工作流由随机数填充,因此去冗机制没有发挥作用。实验结果表明: 对于中等I/O强度的应用,FlimCD算法与前拷贝方法相比可以大幅减少迁移时间。

3.4 针对缺块率的优化效果

本文测试了3种工作流下FlimCD算法在后拷贝阶段的缺块率。mailserver和oltp与节3.3.2 测试环境的相同,writeintensive是通过Iometer产生的工作流,其读写模式与oltp相同,但写操作比例提高到37%。采用不同优化机制的FlimCD算法的缺块率如图6所示。

图6 迁移过程的缺块率

从实验结果可以看出,采用缺块预取、热区排序传输和脏块去冗这3种优化措施均可降低缺块率。全优化的FlimCD算法比未优化FlimCD算法在这3种工作流的测试中缺块率分别降低60.9%、72%和49.5%。缺块预取机制相比其他2种优化措施对降低缺块率的作用更为明显,这主要归功于工作流中的顺序存取模式。3种工作流的缺块率都降低到每秒1块以下。

总体实验结果表明: 跨数据中心快速动态迁移架构可以利用虚拟机镜像副本有效减少虚拟机迁移时间,提高虚拟机在由广域网连接的数据中心之间迁移的灵活性。FlimCD算法结合相关优化机制可以进一步减少迁移过程的数据传输,降低后拷贝阶段的缺块率。

4 结 论

本文通过具体的实例研究了虚拟机工作流的I/O存取特性,分析了现有虚拟机跨广域网动态迁移技术的优缺点, 提出一种面向多数据中心的跨广域网虚拟机动态迁移架构,通过减少迁移过程的数据传输量达到减少虚拟机迁移时间的目的。在数据中心中建立镜像仓库,将借助副本的部分镜像迁移对象从主机对主机扩展到多数据中心之间。从减少迁移时间和虚拟机性能下降出发,提出了FlimCD算法及缺块预取、热区排序传输和脏块去冗等优化机制。实验结果表明: 本文提出的动态迁移架构和FlimCD算法使虚拟机在多个数据中心之间迁移更加灵活。

参考文献
[1] Mahalingam M, Dutt D, Duda K, et al. VXLAN: A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks [S/OL]. [2015-01-25]. https://tools.ietf.org/html/draft-mahalingam-dutt-dcops-vxlan-00.
[2] Farinacci D, Fuller V, Meyer D, et al. The Locator/ID Separation Protocol (LISP) [S/OL]. [2015-01-25]. http://tools.ietf.org/html/rfc6830.
[3] Clark C, Fraser K, Hand S, et al. Live migration of virtual machines [C]//Proc of NSDI 2005. Berkeley, CA, USA: USENIX Association, 2005: 273-286.
[4] Nelson M, Lim B H, Hutchins G. Fast transparent migration for virtual machines [C]//Proceedings of the Annual Conference on USENIX Annual Technical Conference. Berkeley, CA, USA: USENIX Association, 2005: 391-394.
[5] Hines M R, Deshpande U, Gopalan K. Post-copy live migration of virtual machines [C]//Proc of SIGOPS'09. Montana, USA: Association for Computing Machinery Special Interest Group on Operating Systems, 2009: 14-26.
[6] Bradford R, Kotsovinos E, Feldmann A, et al. Live wide-area migration of virtual machines including local persistent state [C]//Proc of VEE'07. New York, NY, USA: ACM, 2007: 169-179.
[7] Mashtizadeh A, Celebi E, Garfinkel T, et al. The design and evolution of live storage migration in VMware ESX [C]//Proceedings of the 2011 USENIX Conference on USENIX Annual Technical Conference. Berkeley, CA, USA: USENIX Association, 2011: 14-14.
[8] Hirofuchi T, Nakada H, Ogawa H, et al. A live storage migration mechanism over wan and its performance evaluation [C]//Proc of VTDC'09. New York, NY, USA: ACM, 2009: 67-74.
[9] Hirofuchi T, Ogawa H, Nakada H, et al. A live storage migration mechanism over WAN for relocatable virtual machine services on clouds [C]//Proceedings of the 9th IEEE/ACM International Symposium on Cluster Computing and the Grid, 2009. Washington DC, USA: IEEE Computer Society, 2009: 460-465.
[10] Luo Y, Zhang B, Wang X, et al., Live and incremental whole-system migration of virtual machines using block-bitmap [C]//2008 IEEE International Conference on Cluster Computing. Tsukuba, Japan: IEEE Computer Society, 2008: 99-106.
[11] Zheng J, Ng T S E, Sripanidkulchai K. Workload-aware live storage migration for clouds [C]//Proceedings of the 7th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments. New York, NY, USA: ACM, 2011: 133-144.
[12] FIU. FIU IODedup mail server trace [Z/OL]. [2015-01-05]. http://iotta.snia.org/traces/391.
[13] Takahashi K, Sasada K, Hirofuchi T. A fast virtual machine storage migration technique using data deduplication [C]//Proc of CLOUD COMPUTING 2012. Nice, France: IARIA, 2012: 57-64.
[14] Zhao X, Zhang Y, Wu Y, et al. Liquid: A scalable deduplication file system for virtual machine images [J]. IEEE Trans Parallel Distrib Syst, 2014, 25: 1257-1266.
[15] Rivest R. The MD5 Message-Digest Algorithm [S/OL]. [2015-01-25]. https://www.ietf.org/rfc/rfc1321.txt.
[16] KVM Forum. QEMU/KVM [R/OL]. [2015-01-25]. http://www.linux-kvm.org/page/Main_Page.
[17] Intel Corporation. Iometer [R/OL]. [2015-01-25]. http://www.iometer.org/.