2012-07-09 16:13:32 来源:万方数据
虚拟机在线迁移是虚拟化的一个杀手级应用,在没有共享存储的情况下,迁移除了需要拷贝虚拟机的CPU状态和内存映像以外,还必须同步磁盘映像,称为虚拟机全系统在线迁移,全系统在线迁移越来越广泛地受到重视,因为:首先,广域网环境中没有共享存储,无论是个人工作环境在办公室和家庭之间的同步,还是云计算中计算向数据的移动,都需要使用全系统迁移;其次,即使在局域网内共享存储也有自身限制,价格昂贵,延迟较高,使得不少虚拟化平台依然采用本地存储,全系统在线迁移就变得更加重要。
全系统在线迁移分为3个阶段:第1阶段将初始映像拷贝到目的端;第2阶段包括多轮增量同步,不断拷贝上一轮迁移中改变的映像数据;第3阶段停机同步,拷贝剩余映像和CPU状态,并在目的端继续运行虚拟机,这种方法称为预拷贝。
迁移的性能指标主要包括迁移数据量、迁移时间和停机时间,提高迁移性能非常必要,因为:首先,迁移需消耗大量系统资源,迁移时间越长,应用性能受影响的时间就越长;其次,迁移是为了进行负载平衡、功耗管理等系统运维任务,迁移时间过长,会错失合适的迁移时机,导致系统运维效果变差;最后,如果停机时间过长,一些延迟敏感的应用就会拒绝服务,在线迁移便失去意义。
提高I/O带宽固然能加速迁移,但价格昂贵,在I/O带宽不变的情况下,如何减少同步的数据量,是加速迁移的关键,XenoServer利用写拷贝方法有效减少了迁移同步的磁盘映像,但是,写拷贝影响虚拟机正常运行时的性能,在大规模虚拟化平台上抽象出统一的磁盘映像模板也异常困难,压缩被引入到内存映像同步中,取得了很好的效果,如何根据迁移映像特征提高压缩比并降低压缩时间,如何将压缩引入磁盘映像的迁移,值得进一步探讨,后拷贝可以保证映像数据不会重复拷贝,但其可靠性存在缺陷,不再深入探讨。
本文提出一种快速全系统在线迁移方法,包括文件系统感知的磁盘同步、异或压缩和流水迁移3个关键技术,在不影响虚拟机正常使用的情况下,避免了无效和冗余数据的拷贝,充分并行迁移各个阶段,有效加速了迁移过程。
1 快速全系统在线迁移的设计
1.1 文件系统感知的磁盘同步
我们调查了一些实验室及IT企业的虚拟机磁盘资源使用情况,发现其利用率都很低,一般在50%左右,这是因为大容量的磁盘越来越便宜,系统管理员往往按照最大使用量一次性分配磁盘配额,以减少工作量,同时,物理平台最大可支持的虚拟机数量往往受限于I/o带宽,而磁盘的容量相对充足,因此存在大量的空闲块,空闲块的内容没有任何意义,传统迁移方法把虚拟磁盘当作黑盒,将空闲磁盘块连同实际使用的磁盘块一起同步,不仅增加了迁移时间,还浪费了大量的磁盘和网络带宽。
文件系统感知的磁盘同步,就是在特权域虚拟机DO块设备层消除对非特权域虚拟机DU文件系统部分信息的语义缺失,在迁移磁盘映像时,根据DU文件系统提供的磁盘块分配位图,只迁移实际使用的磁盘块,虚拟机的设备驱动采用前后端形式实现,前端使用文件系统管理虚拟磁盘,虚拟磁盘在后端看来,只是一个磁盘分区或映像文件,DO中的迁移进程并不知道该分区或文件中哪些块是空闲的,因此,在DO中如何获得DU文件系统的磁盘块分配位图,是消除语义缺失的关键。
在准虚拟化系统里,文件系统感知的磁盘同步工作流程如下:假设DO以磁盘分区作为DU的虚拟磁盘,迁移进程将DU虚拟磁盘置为记录模式,然后通过事件通道通知DU生成该虚拟磁盘的磁盘块分配位图,DU根据文件系统信息生成位图,以共享页面形式传递给DO,迁移进程根据由DU传递的磁盘块分配位图读取磁盘映像,通过网络发送给迁移目的端,并由目的端恢复映像,修改DU的操作系统,使其根据内存中最新的文件系统元数据生成磁盘块分配位图,体现了准虚拟化的灵活性。[page] 全虚拟化系统中,DU的操作系统可能不是开源的,不能像准虚拟化系统那样工作,但是,所有磁盘文件系统的元数据都会定期写回到磁盘的固定区域,因此,DO可以根据磁盘分区或映像文件中存储的DU文件系统元数据,生成DU虚拟磁盘的磁盘块分配位图,磁盘中的元数据可能不是最新的,但由于元数据总是先于数据被写回,同时,在生成位图之前整个磁盘已被置为记录模式,所以根据磁盘元数据生成的位图总是有效的。
此时,DO先读取引导块以确定DU虚拟磁盘的分区结构,然后只需采用探测的方法从分区固定位置读取魔术签名(类似fsck开始阶段的操作),就可确定该分区的文件系统类型,并得知磁盘块分配位图的存放位置,读取位图,此过程涉及3个特殊位置:引导块位置、魔术签名位置和磁盘块分配位图的位置,引导块固定于磁盘的0~512B;如果由魔术签名确定了文件系统类型,那么该文件系统磁盘块分配位图的位置就随之确定,不同文件系统魔术签名的位置可能不同,因此探测过程最为复杂,但依然是可行和有效的,因为:首先,常用的文件系统不多,包括EXT2,EXT3,XFS,OCFS2以及GFS等,探测过程只探测这些常用文件系统的魔术签名,就可满足绝大多数需求,即使探测失败,迁移也可正常进行,此时DO只需将磁盘块分配位图全部置1(即退回黑盒迁移模式);其次,探测开销很小,只读1个磁盘块即可,若成功则极大加速磁盘迁移,即使失败,对黑盒迁移的性能影响也可忽略,因此,文件系统感知的磁盘同步对准虚拟化和全虚拟化都适用。
需要说明,有些文件系统是内存文件系统,如TMPFS,它们没有对应的磁盘存储;有些文件系统,如NFS,虽挂载到本地目录,但不对应任何磁盘数据,迁移不需要考虑这些,有些文件系统虽对应磁盘存储,但在磁盘上的元数据很少(如SWAP分区的磁盘块分配位图只保存在内存中),全虚拟化时,DO即使探测到该文件系统的类型,也不能生成磁盘块分配位图,幸运的是,我们调研了很多文件系统,只有SWAP属于这种情况,一般而言,SWAP分区的大小和内存大小相同,即使DO将SWAP分区的磁盘块分配位图全部置1,也没有太大的性能损失,如前所述,虚拟机磁盘空问利用率不高,磁盘块分配位图作为预拷贝迁移第1阶段的磁盘位图,有效避免了空闲磁盘块的同步,节省了系统资源,极大加速了全系统在线迁移,同时,文件系统感知的磁盘同步在虚拟机正常运行时,并不影响其写操作性能,也不占用任何额外内存资源,本研究目前支持的文件系统类型有EXT2,EXT3和SWAP,并采用模块化设计,方便扩展到其他文件系统类型。
1.2异或压缩
磁盘映像先压缩再迁移,一般不能降低整个过程的时间开销,读取磁盘映像的带宽一般为70 MBps,千兆局域网的传输带宽为128 MBps,从带宽比较中明显看出,磁盘迁移的瓶颈在于读取磁盘映像,不在于网络传输,文件系统感知的磁盘同步之所以有效,是因为它减少了磁盘映像的读取,而压缩的价值在于克服网络带宽的限制,网络带宽并不是瓶颈时,压缩只能降低网络传输量,但是,在广域网环境下,或者虚拟机上的应用占据大量网络资源的条件下,用来迁移的网络带宽往往低于读取磁盘映像的带宽,此时,网络带宽重新成为性能瓶颈,压缩便非常必要,这就是本研究第1次引入磁盘映像压缩的意义所在。
对于内存映像的迁移来说,内存映像的读取就是DO映射DU内存空间的过程,映射带宽可达每秒几个GB,即使在千兆局域网环境下,网络也必然成为迁移的性能瓶颈,压缩必不可少,压缩和迁移时间的关系依赖于压缩算法的压缩比和压缩带宽,压缩使得传输的数据量变小,有利于降低迁移时间,然而,一般而言,高压缩比的算法压缩速度都很慢;反之,快速压缩算法压缩比都不高,如果一味追求高压缩比,则压缩时间开销过大,甚至超过减少的网络传输时间,得不偿失;如果牺牲压缩比,只追求压缩速度,则减少的网络传输时间有限,不能体现压缩的价值,如何根据网络带宽选择合适的压缩算法,甚至根据应用负载改善压缩算法的压缩比和压缩速度,成为提高迁移性能的关键。
表1统计了虚拟机运行VOD和Specweb05等应用时,增量迁移各轮中内存页面内容变化数据量的比例,表1表明,多数应用内存写操作修改的数据量低于内存页面大小的20%,存在和磁盘写操作同样的特征,因此,本文将异或压缩引入到虚拟机磁盘和内存映像的压缩迁移中。
表1 不同应用内存写操作修改页面内容的比例%
异或压缩在源端DO的内存中,以最近最少被使用(least recently used,LRU)方式维护一个旧版本映像缓存,源端压缩一个磁盘块或内存页时,先查询是否存在该磁盘块或内存页的旧版本缓存,如果有,就异或压缩(参见式(1)),并以最新内容更新缓存;否则,直接将映像数据插入缓存,使用其他算法压缩,目的端理论上不维护LRU缓存也能支持解压以后的数据恢复(参见式(2)),因为旧版本磁盘块和内存页都已经被同步过来,但是,为了不从磁盘中读取旧版本磁盘块,异或压缩在目的端DO内存中仍然维护LRU缓存,并且只有当磁盘块在源端进入缓存的情况下,该磁盘块传递到目的端后才进入目的端缓存,旧版本内存页本来就保存在目的端内存中,只需重新映射即可,不必进入缓存。[page] 1.3流水迁移
引入压缩以后,迁移在源端和目的端都分为3个阶段:源端读取映像,压缩映像,发送映像;目的端接收映像,解压映像,恢复映像。
发送和接收映像是异步操作,与其他阶段并行执行;迁移内存时,内存映像的读写非常快,开销完全可以忽略,因此,传统的多线程压缩方法E5]能很好地并行内存迁移各个阶段,然而,磁盘映像的读写开销很大,甚至比网络传输还慢,单纯的多线程压缩迁移磁盘就不是非常有效了。
迁移时,源端和目的端操作完全并行,迁移在源端所需时间可近似为整个迁移过程的时间,图1以磁盘迁移源端3个阶段为例,说明传统迁移方法的不足,以及流水并行各个阶段的好处,读取磁盘映像、压缩映像和发送映像的带宽相差不大,而且各阶段相对独立,各磁盘块迁移顺序也不互相依赖,非常适合流水。
图1各种迁移方法的比较
综上,由式(3)和式(4)可以看出,流水迁移可以并行迁移的各个阶段,相比于普通压缩迁移和多线程压缩迁移,极大加速了迁移过程,式(5)表明,采用流水迁移以后,只要保证压缩带宽不低于读取映像的带宽即可,多线程压缩意义不大。
2快速全系统在线迁移的实现
由于读取磁盘映像的时间较长,内存映像被修改的速度更快,本研究在每一轮同步中,都先迁移磁盘映像,再迁移内存映像。[page] 流水迁移线程组采用多线程实现,多个压缩和解压线程以线程池形式存在,功能不同的各类线程之间是经典的生产者和消费者关系,实验表明,当压缩线程为2个(压缩内存需2个线程,压缩磁盘只需1个线程)、解压线程为1个时,整个流水迁移线程组就能非常有效地工作。
本研究采取多算法综合压缩的方法,它基于3种算法:异或压缩、WKDM压缩和LZO压缩,其中,异或压缩在异或后采用WKDM算法压缩;WKDM是现有最快速的压缩算法之一,但压缩比有限;LZO算法是一种压缩比很高的现代压缩算法,但压缩速度较慢,综合压缩算法先判断待压缩数据是否有旧版本在LRU缓存中,若有则使用异或压缩,如果效果不佳则退回到LZO高压缩比算法;若没有则使用WKDM快速压缩算法压缩,如果压缩比不高再退回到LZO算法。
全系统在线迁移需要进行网络重定向,使虚拟机的网络应用在跨网段迁移后也可继续运行,我们采用的方法和文献[4]一致,即使用IP通道、动态域名系统和IP信息包过滤系统共同完成这一目标,不再详细论述。
3性能评价
3.1 实验平台和应用
本实验的硬件平台,是由6个相同服务器组成的机群,其中,2台机器作为迁移的源端和目的端,其他机器作为负载的客户端,每台服务器配置2个AMD Opteron双核处理器,主频为2,4 GHz,4 GB物理内存,1个转速为10 000转/min的SeagateSCSI硬盘,1张千兆网卡,VMM为Xen一3.3.1,客户操作系统为修改过的Linux一2.6.18.8.每个虚拟机配置1个VCPU和1 GB物理内存,分配40 GB的磁盘空间和1 GB的交换分区,迁移不使用专用网络,和应用共享千兆网卡。
本节使用的应用负载如下:
1)VOD,视频服务器,属于延迟敏感应用,以测试停机时间对应用的影响,客户端有400个连接同时向VOD服务器请求视频文件。
2)Specweb05,复杂网络服务器,模拟真实负载(Banking,Ecommerce和Support),同时提供静态、动态网络内容,不规则地产生大量写操作,对内存和磁盘压力较大,客户端有400个连接同时向Specweb05服务器发出请求。
3)Iozone,磁盘密集型标准测试程序,可测试系统在极限负载时的迁移性能。
如不作特别说明,实验中的迁移数据量,为每一轮传输的内存和磁盘映像的数据量总和。
3.2文件系统感知的磁盘同步的有效性
本实验测试文件系统感知的磁盘同步(Fs—aware)能否避免空闲磁盘块的迁移,并与传统黑盒磁盘同步方式(Default)、黑盒结合综合压缩的方式(Cpr)以及文件系统感知的磁盘同步结合综合压缩的方式(Fs+Cpr)进行比较,表2为各种方法迁移空闲虚拟机时,实际同步磁盘映像的数据量,其中,新建虚拟机(New)指的是刚创建的虚拟机,没有任何用户数据,实际使用磁盘空间4.5 GB;正常虚拟机(Normal)是在新建虚拟机中,安装了4.1节所有测试程序和数据的虚拟机,实际使用磁盘空间20 GB,代表了多数企业和实验室中虚拟磁盘资源使用率的平均值;过载虚拟机(Overload)指的是磁盘使用率过高的虚拟机,实际使用磁盘空间34.7 GB.由表2数据可知,文件系统感知的磁盘同步能有效避免空闲磁盘块的迁移;同时,由于磁盘映像数据压缩性较差,压缩算法所减少的磁盘同步数据量,比文件系统感知的磁盘同步少很多。
表2迁移磁盘映像数据量的比
图2描述了各种方法迁移空闲的正常虚拟机时的迁移时间和停机时间,迁移内存时,所有方法都使用相同的压缩算法,故性能差别只和磁盘迁移相关,由图2可知,磁盘迁移的瓶颈在于读取磁盘映像,文件系统感知的磁盘同步通过减少读磁盘的数据量,有效降低了50%的迁移时间,千兆局域网环境下网络资源不是瓶颈,压缩减少了传输数据量,但并没有减少读磁盘的数据量,故不能降低迁移时间,如不特殊说明,以下实验均采用文件系统感知的磁盘同步迁移正常虚拟机。
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。