云计算中虚拟机磁盘迁移时机优化策略

2014-12-23 01:25黄黎明李先锋
计算机工程与设计 2014年2期
关键词:通用设备表项磁盘

陈 睦,黄黎明,李先锋

(上海交通大学医学院附属新华医院 信息管理部,上海200092)

0 引 言

虚拟化技术是目前多种新兴网络计算模式的基础支撑技术,为用户提供了高可用性、动态、可扩展、可按需分配的逻辑资源。利用虚拟机迁移技术,实现服务器集群中各服务器的动态负载均衡,使得整个系统中资源的合理利用。

虚拟机迁移的研究主要有虚拟机内存的迁移算法研究以及虚拟机外设的迁移方法研究。针对虚拟机迁移的停机时间和迁移总时间可以设计出以下迁移方法[1-3]: “停止—拷贝”算法,“预拷贝”算法, “后拷贝”算法,以及 “懒惰拷贝”算法。网络挂起/恢复ISR (internet suspend/re-sume)系统[4]通过分布式存储器在不同的时空重现用户执行环境。Collective项目使用写时复制技术[5],通过增量传输机制迁移虚拟机。Luo等提出了通过预拷贝算法来增量地同步虚拟机的镜像数据以实现透明的迁移[6,7]。Bradford等实现了在数据块级别的预拷贝算法以及写操作扼杀的机制来迁移虚拟机的镜像文件以实现在广域网中的迁移[8]。针对集群环境下的虚拟机迁移,刘诗海等提出基于gSOAP的内部角色通信的迁移方法[9]。

虽然上述解决方案都能在特定情况下取得不错的效果,但是对虚拟机迁移过程中迁移量最大的磁盘的细节问题考虑不足,直接导致磁盘迁移的效率低下。为了提升磁盘的迁移效率,本文以Qcow2磁盘格式为例,从更细粒度的资源管理方式入手对磁盘的迁移进行优化,提出了一种磁盘迁移时机优化策略,从而避免迁移过程中无谓的数据传输,从而达到减小数据传输量和总体迁移耗时的效果。

Qcow2 (qemu copy on write 2)[10]是 一 种 虚 拟 磁 盘 格式,正如其名 “写时拷贝”,Qcow2格式的磁盘是由多个磁盘以链式结构构成的一个整体,任意两个相邻磁盘中,被依赖的叫基础磁盘,另一块叫增量磁盘。在迁移Qcow2磁盘时,如果迁入迁出两端有共同的基础磁盘,则可以只迁增量磁盘,否则,迁移将涉及基础磁盘的部分内容。本文的剩余部分安排如下:第二节介绍Qcow2 磁盘布局以及Qcow2磁盘的迁移流程。第三节讲述Qcow2 迁移设计思路,并讲述本文提出的Qcow2设备带外迁移算法,然后通过第四节的实验来验证该算法的优点。第五节对本文的主要内容进行总结。

1 Qcow2磁盘布局及迁移流程

1.1 Qcow2磁盘布局

以磁盘为单位的角度看,Qcow2将多块磁盘组织为链式结构,通过维护存储设备逻辑地址与Qcow2实际地址的映射关系,对外提供逻辑虚拟磁盘。此结构可以使得上层虚拟机设备对数据存储的管理粒度更细,不再只是以一个整体设备为单位与客户机操作系统提供服务,而可以通过一定的元数据组织映射方式为虚拟机提供存储支持,不同虚拟磁盘中的各数据块间产生了依赖关系,从而使得存储设备组织数据从设备级的粒度降低到数据块的粒度。

Qcow2带来了灵活的数据存储组织方式,由于虚拟机系统保存快照的操作要求对数据采用写前拷贝的方式,Qcow2细粒度的存储组织形式为其提供了良好的支持。此外,由于链式存储特性,多个虚拟磁盘可共享一个基础磁盘,因此Qcow2格式可节省大量存储空间。同时,即使是该增量磁盘的内容加以修改,其容量也不会大于基础磁盘的大小。

下面介绍单个Qcow2磁盘内部的磁盘布局,如图1所示。Qcow2将单个虚拟磁盘按固定大小,划分成多个磁盘块,即整个磁盘是由大量磁盘块按序整齐排列构成。无论是Qcow2的元数据还是数据均存储在这些磁盘块当中。

其元数据主要可划分为4分部:

属性块 (Header):位于第一个磁盘块,保存了该Qcow2的基本属性,如磁盘魔数、版本、存储容量、块大小等,也可据此获得其它元数据块的位置与长度信息。

快照块 (Snapshot):单个Qcow2磁盘内部可进行快照保存,该块存放了相应快照的基本属性信息,包括快照的名称,映射块地址,保存时间等。

图1 Qcow2磁盘布局

映射块 (L1,L2):维护存储逻辑地址与Qcow2 实际存储地址映射关系。在给定设备逻辑地址的情况下,可通过映射块中的映射表项进行二级映射查找,从而获得所需数据块的实际地址。

Qcow2磁盘运行的核心环节是将设备的逻辑地址映射为设备内部实际地址的过程。在单个Qcow2磁盘内部,元数据部分设计了二级映射表,其中一级映射表是由多个连续的L1块构成。映射表中的表项从第一个L1块的起始处顺序存储,每一个表项负责相应的逻辑地址范围的转换,该地址范围可由属性块中的CLUSTER_BITS 计算得到。所有表项长度固定且相等,记录了一个二级映射表的地址,每个二级映射表由一个单独的L2块构成,与一级映射表类似,表项依然以固定长度从L2块起始处顺序存储,每个表项负责相应逻辑地址范围的转换,其存储内容为所请求逻辑地址在Qcow2设备中的实际地址。至此,完成了逻辑地址到Qcow2层物理地址的映射,单磁盘Qcow2二层寻址如图2所示。

图2 单磁盘Qcow2二层寻址

在多个Qcow2磁盘的链式存储中,可能出现逻辑地址在当前磁盘无法找到有效映射表项的情形,由此需跨越至基础磁盘进行映射,其对于读请求和写请求中的处理方式有异。在读请求中,遇到无效的映射表项时,该请求被直接转至基础磁盘,从而将对增量磁盘的读请求转化为对基础磁盘的读请求,如果基础磁盘依然无法完成映射,则可继续向依赖的基础磁盘转发读请求,如此迭代进行。在写请求中,遇到无效表项的情况,首先在增量磁盘分配数据块,然后根据其逻辑地址在映射块中构建映射表项,Qcow2多磁盘寻址示意图如图3所示。

图3 Qcow2多磁盘寻址

1.2 Qcow2磁盘的迁移流程

由于Qcow2磁盘独特的链式结构,QEMU 迁移分为两种模式:独立迁移模式和共享迁移模式。独立迁移模式适用于迁入迁出两端没有相同基础磁盘的情形,将迁出端磁盘链上被迁移客户机依赖的所有数据块发送至迁入端,在迁出端形成一个独立的磁盘,该磁盘不依赖任何其它磁盘。共享迁移适用于迁移两端具有相同基础磁盘的情形,该模式只对增量磁盘进行迁移,增量磁盘存储容量较基础磁盘越小。

图4是Qcow2增量磁盘作为块设备在QEMU 中的迁移流程。QEMU 块设备迁移是在通用设备层进行的,以设备数据为迁移对象,而非设备本身,即其迁移时并不传输存储设备层的任何元数据,只传输上层软件需要的逻辑层数据内容。

图4 基于Qcow2磁盘数据的迁移

QEMU 块迁移采用了 “存—传—取”的模式,在迁移Qcow2磁盘时,其 “存”的行为是通过向QEMU 通用块设备层发送读请求,该请求通过Qcow2的设备驱动再逐层转发,最终获得请求地址的数据,这一系列过程中,Qcow2磁盘中所有元数据都只服务于Qcow2的设备驱动,而未被通用块设备层甚至更高层的应用感知。随后,在 “传”的环节中,其传输对象也是读请求获得的数据,即只对应用层有意义的磁盘存储内容。在 “取”的环节中,迁入端会将收到的数据打包成写请求向通用设备层下发,继而通过Qcow2 设备驱动完成写请求。迁移最终的结果是,在Qcow2设备层以上的层次来看,迁移两端的数据是完全一致的,但在Qcow2存储设备内部,其元数据几乎不可能完全相同。

在通用设备层迁移的好处体现在两个方面:①通用设备层对迁移流程的控制,使各种格式的虚拟磁盘驱动无须考虑迁移的实现,减轻了磁盘驱动的开发压力,避免每个磁盘驱动实现迁移接口;②通用设备层迁移的兼容性较好,迁入端和迁出端无需具备相同的虚拟磁盘格式,因为通用设备层负责了迁移的逻辑控制,而各驱动实现了相同的设备读写接口,这样不管底层设备是否异构,迁入和迁出两端便可以通用设备层进行数据交互。

2 Qcow2设备带外迁移算法

2.1 Qcow2迁移设计思路

在通用设备层进行迁移是一种优雅的方法,屏蔽了底层设备的细节,为不同虚拟存储设备提供了通用的数据迁移接口[11],但由此造成了对磁盘格式特点的忽视,这在面对Qcow2独立模式迁移时尤其明显:

(1)作为动态映射磁盘格式,Qcow2具有的一项重要功能便是压缩。在迁移过程中,基于数据内容的迁移会首先在迁出端Qcow2驱动层为通用设备层解压缩,将解压缩的内容传输到迁入端后可能会对该数据进行压缩后再存储。反复进行的压缩和解压缩造成大量无谓的系统开销。

(2)通用设备层的迁移是面向数据的,即将迁移行为转化为多个读写请求,每个读写请求向相应的设备驱动转发,在Qcow2中,其L2 数据块不会全部储存在内存中,因此这些读写请求的下发不仅使得内存读写更为频繁,也因读写L2数据块而增加了物理读写请求的发出频率。

(3)对于Qcow2而言,其二级地址映射模式通常将逻辑上地址连续的内容存储在非连续的实际物理地址中,这在增量磁盘中体现得更为明显,因此,迁移中大量的顺序读写逻辑地址的请求在Qcow2设备层经二级地址映射后很可能体现为物理设备上的随机读写请求,从而降低读写效率。

鉴于上述考虑,本文针对Qcow2 设备的独立迁移模式[12]进行优化,将基础磁盘与增量磁盘迁移内容分离,对基础磁盘的数据内容直接进行设备层迁移,从而避免迁移两端在迁移基础磁盘数据时由压缩引起的无谓系统开销,减少迁移时读写流程中的多次寻址,减少顺序请求转为随机请求的发生次数,最终提高迁移速度,基于Qcow2磁盘设备的迁移如图5所示。

图5 基于Qcow2磁盘设备的迁移

QEMU 的通用设备层迁移不区分数据来源,迁移数据既可能来自基础磁盘,也可能来自增量磁盘,客观上造成了基础磁盘和增量磁盘两部分数据的交替传输,因此,对基础磁盘采用基于设备的迁移可以分别将基础磁盘和增量磁盘数据传输时机进行集中,实现Qcow2磁盘迁移时机进行优化。

基础磁盘迁移时机优化体现在该磁盘内容的迁移不依赖整个迁移进程中Qcow2驱动对读请求的处理,而是忽略Qcow2的存储与管理细节,直接在迁移开始阶段以设备形式迁移,从而使得基础磁盘数据传输不会被增量磁盘数据传输中断。Qcow2磁盘的写请求处理为写时拷贝模式:对于客户机下发的写请求,新的数据只会更新到增量镜像,在虚拟机的整个运行过程中,虚拟机不会对基础镜像造成任何改变。这样的特性使得Qcow2的基础磁盘迁移在数据一致性方面的问题被大大简化,以虚拟设备整体的形式发送到迁入端,基础磁盘迁移前后,迁入迁出两端上该磁盘文件完全相同。

增量磁盘迁移时机的集中主要体现在处理迁移造成的读写请求时,增量磁盘与基础磁盘的链式关系被割裂,从而使得增量磁盘的数据传输不会被基础磁盘数据传输中断。在基础磁盘迁移完成后,由于其所有数据已被传至迁入端,增量磁盘在处理由迁移造成的读请求时应当避免再去基础磁盘查取数据。这需要修改Qcow2驱动层,使其识别迁移造成的读请求,并返回约定的已迁移标识。

通过基础和增量磁盘迁移时机的集中完成了Qcow2迁移时机的优化,该优化较传统方法的优势主要体现在:①基础磁盘的迁移对物理存储来讲是一个文件的传输,因此这部分迁移造成的读写请求无需经过Qcow2的驱动,避免了Qcow2的寻址过程。②Qcow2本身具有压缩特性,由于其较大的数据量而占用了网络资源,在迁入端看来,基于Qcow2设备的迁移办法可避免对数据的无谓解压缩与压缩,达到加速迁移的目的。

2.2 Qcow2设备带外迁移算法

作为一种虚拟设备,Qcow2基础磁盘在宿主机看来是一个普通文件,在整个迁移过程中,该文件内容不会发生任何变化。因此,可将该设备的迁移以带外远程文件拷贝的形式实现。依赖现有的远程文件拷贝 (remote file copy,RCP)协议[13],通过在迁移两端物理机建立传输文件的连接,即可完成基础磁盘的整体设备迁移,磁盘迁移时机优化流程如图6所示。

图6 磁盘迁移时机优化流程

以设备整体形式对基础磁盘进行迁移,与QEMU 原有的迁移办法完全兼容。从迁出端看,其对增量镜像读请求如果可以在增量镜像找到地址,则发送增量镜像内的数据,否则在基础镜像映射地址发送基础镜像内的数据。从迁入端看,其对Qcow2磁盘不存在读请求操作,其通过增量镜像获取的数据打包成写请求后,与普通写请求完全相同,只是对基础镜像的更新操作,Qcow2驱动可确保该请求正确完成。所以,基础磁盘整体迁移并未对QEMU 原有的迁移流程造成影响,因此,在基础磁盘整体迁移后,再按QEMU 原有的迁移流程进行增量磁盘的迁移从设计逻辑来讲是完全可行的。

具体到QEMU 虚拟机迁移的流程,基础磁盘整体迁移的体现在开始阶段和迭代阶段:

开始阶段:为了在实现上保持与QEMU 原有迁移流程的兼容,基础磁盘迁移可以看作是增量迁移进行数据内容传输前期的参数设定阶段,因此,可在迁移开始阶段对基础磁盘迁移,其具体实现形式为从迁出端向迁入端发送基础磁盘文件,本文选择RCP协议进行。

迭代阶段:该阶段中基础磁盘迁移已经完成,正在进行增量磁盘迁移。此处需要关注增量磁盘的读请求。按照Qcow2的驱动实现,其读请求应当在增量磁盘内无法完成地址映射时转而向基础磁盘发送读请求。但在基础磁盘整体迁移后,如果该读请求并非客户机下发,而是由迁移模块向通用设备层下发的,那么其获得的数据则将通过迁移连接发送至迁入端,而这些数据已经在开始阶的基础磁盘整体迁移过程中迁移完成,这样就失去了整体迁移的意义。因此,对于此阶段的读请求,应添加标志位对于读请求的来源加以区分。Qcow2 驱动中的读函数为qcow2_co_readv,其中有一项整型参数表示扇区个数,因扇区个数不可能为负,所以将该整型最高位用来区分该读请求的来源,在迁移模块下发读请求时,将此参数最高位置为1,在客户机发送读请求时,该参数正常。进入到qcow2_co_readv函数内时,对此参数最高位进行判断,并标记目前请求是否为迁移模块的请求,如果是,则在地址映射遇到结果为未分配块时停止该请求向基础磁盘的转发,其它地址映射结果的处理流程不变。如果不是,则按QEMU 原有正常流程处理。

3 Qcow2迁移时机优化实验

本实验硬件设备由三台配置相同的物理机组在成:CPU 为Intel(R)Xeon (R)X5650 2.67GHz,六核十二线程,内存32G,硬盘1T 容量7200rpm 32MB缓存,千兆以太网互联。

本节测试了5个不同大小的增量磁盘在磁盘迁移时机优化前后的表现,它们有共同的基础磁盘,大小为812MB,该磁盘对外提供2GB的逻辑磁盘地址。实验结果如图7。

图7 空载下不同增量磁盘迁移优化前后对比

从图7可以看出,优化前,迁移耗时对增量磁盘大小的变化并不敏感,甚至在增量磁盘较大时,迁移时间还轻微地缩短了。这是因为在通用块设备层迁移数据时,迁移对象是Qcow2对外呈现的逻辑磁盘的数据,迁移时间主要由逻辑磁盘空间大小决定,与Qcow2内部如何组织磁盘链式结构无关,无论增量磁盘大小如何变化,其对外提供的逻辑空间大小是不变的,因此迁移的时间基本恒定。至于在增量磁盘增大时出现的迁移时间轻微下降,是因为相较于增量磁盘较小的情况,迁移的大部分数据只依靠增量磁盘完成,而无需再去基础磁盘查取,从而减小了开销。

下面再来分析优化后的情况。优化后增量磁盘大小直接影响着迁移时间,甚至在某些极端条件下,优化后的效果轻微弱于优化前的系统表现。这是因为优化后,迁移时间由两部分构成:基础磁盘迁移时间和增量磁盘迁移时间,基础磁盘迁移时间由基础磁盘的大小决定。在基础磁盘不变的情况下,随着增量磁盘的增长,迁移时间逐渐变长。

由于优化的效果体现在优化前后迁移时间的差值,结合上述分析,优化效果主要由逻辑磁盘大小与虚拟磁盘(包括基础磁盘与增量磁盘)大小的差值决定。结合Qcow2格式的特点,此差值的两个主要决定因素是:逻辑磁盘空间与基础磁盘空间的比值和基础磁盘与增量磁盘的逻辑空间重叠表示量。其中,前者对优化效果起正面作用,因为压缩比越高,基础磁盘越小,时间差值越大。后者对优化效果起负面作用,基础磁盘与增量磁盘重叠表示逻辑磁盘空间,意味着一个逻辑数据块占用了两个块的虚拟磁盘空间,使得虚拟磁盘增大,减小优化前后迁移时间差值,这种数据重叠表示是由虚拟机对增量磁盘写操作导致基础磁盘相应数据块失效引起的。

在系统实际运行情况下,基础磁盘通常扮演着虚拟电气的角色,只安装操作系统和用户定制的应用程序。这使其具有两个显著特点:大量逻辑磁盘空间空闲,使得逻辑磁盘与基础磁盘空间比值很高;系统运行时,对基础磁盘表示的逻辑数据块写请求非常少,以致基础磁盘与增量磁盘重叠表示的逻辑空间非常少。内核编译负载下不同增量磁盘迁移优化前后对比如图8所示。

图8 内核编译负载下不同增量磁盘迁移优化前后对比

本文对虚拟机有负载情形下的优化效果进行测试,在有负载镜像中,由于安装了Linux源码树,基础磁盘增大到1.3GB,对外提供逻辑磁盘空间依旧为2GB。从图7中可以看出,基础磁盘的增大使得每个增量磁盘的迁移时间都相应增加。但对于Qcow2的应用环境来讲,逻辑空间与基础磁盘与大小比值通常较为悬殊,至少为数倍,多的甚至达数十倍,图9实验描述了基础磁盘大小为695MB,增量磁盘大小为1300MB 时,不同逻辑空间大小下的磁盘优化情况,可以发现物理空间一定的情况下,逻辑空间越大,优化效果越好。

图9 不同逻辑磁盘迁移优化前后对比

综上,在系统正常使用状态下,虚拟磁盘总大小通常小于逻辑磁盘空间大小,该优化可以带来正面效果。在极端条件下,即用户将所有逻辑磁盘空间都耗尽时,也只造成了微弱的负面效果,这也是该技术优化的最坏情况。因此,在绝大部分情况下,该优化技术可以有效加速迁移。

4 结束语

针对虚拟机迁移中虚拟磁盘迁移效率低下的问题,本文以qcow2磁盘格式为例,从更细粒度的资源管理方式入手,提出了一种qcow2 设备带外迁移算法。首先阐述qcow2磁盘布局以及其迁移过程,然后针对Qcow2设备的独立迁移模式进行优化,针对qcow2格式磁盘自压缩的的特点,分离基础磁盘和增量磁盘的迁移阶段,对基础磁盘直接迁移,不对增量磁盘进行解压缩,避免了因解压缩和压缩带来不必要的系统开销,同时降低迁移的数据量,缩短迁移延时。实验结果表明,相对与优化前,虚拟磁盘的迁移时间可以降低25%-55%左右。

[1]LU Xiaohu,LI Qin.Research and implementation on migration of virtual machine including Vm-disk [J].Computer Science,2009,36 (7):256-261 (in Chinese).[吕小虎,李沁.虚拟机磁盘迁移技术研究与实现 [J].计算机科学,2009,36(7):256-261.]

[2]Jie Zheng,Tze Sing Eugene Ng,Kunwadee Sripanidkulchai.Workload-aware live storage migration for clouds [C]//Proceedings of the 7th International Conference on Virtual Execution Environments.New York:ACM,2011:133-144.

[3]Hines M R,Gopalan K.Post-copy based live virtual machine migration using adaptive pre-paging and dynamic self-ballooning[C]//Proc Fifth International Conf Virtual Execution Environments.New York:ACM,2009:51-60.

[4]Satyanarayanan M,Gilbert B,Toups M,et al.Pervasive personal computing in an internet suspend/resume system [J].IEEE Internet Computing,2007,11 (2):16-25.

[5]Bogdan Nicolae,Franck Cappello.A hybrid local storage transfer scheme for live migration of I/O intensive workloads[C]//Proceedings of the 21st International Symposium on High-Performance Parallel and Distributed Computing.New York:ACM,2012:85-96.

[6]Luo Y,Zhang B,Wang X,et al.Live and incremental wholesystem migration of virtual machines using block-bitmap[C]//Proc IEEE International Conf Cluster Computing.Washington DC, USA:IEEE Computer Society,2008:99-106.

[7]ZHANG Binbin,LUO Yingwei, WANG Xiaolin,et al.Whole-system live migration mechanism for virtual machines[J].Acta Electronica Sinica,2009,37 (4):894-899 (in Chinese).[张彬彬,罗英伟,汪小林,等.虚拟机全系统在线迁移 [J].电子学报,2009,37 (4):894-899.]

[8]Bradford R,Kotsovinos E,Feldmann A,et al.Live wide-area migration of virtual machines including local persistent state.[C]//Proc Third ACM Conf Virtual Execution Environments.New York:ACM Press,2007:169-179.

[9]LIU Shihai,SUN Yuqing,SHI Weiqi,et al.Rapid migration method of virtual machine for extensible cluster environment[J].Journal of Southeast University (Natural Science Edition),2011,41 (3):468-472 (in Chinese).[刘诗海,孙宇清,石维琪,等.面向可扩展集群环境的快速虚拟机迁移方法[J].东南大学学报:自然科学版,2011,41 (3):468-472.]

[10]McLoughlin M.The QCOW2image format [DB/OL].https://people.gnome.org/~markmc/qcow-image-format.html,2008.

[11]REN Qingdong,LI Tianyang,YUAN Man,et al.Generalized data migration tool based on metadata-driven [J].Journal of Daqing Petroleum Institute,2011,35 (1):76-80 (in Chinese).[任庆东,李天阳,袁满,等.基于元数据驱动的通用数据迁移工具 [J].大庆石油学院学报,2011,35 (1):76-80.]

[12]LIU Pengcheng,CHEN Rong.Cloud computing-oriented live migration framework for virtual machine[J].Computer Engineering,2010,36 (5):37-39 (in Chinese). [刘鹏程,陈榕.面向云计算的虚拟机动态迁移框架 [J].计算机工程,2010,36 (5):37-39.]

[13]JIANG Nan,SHU Yantai,KANG Yang.A cross-layer method to improve receiver-centric transport protocol in WLAN [J].Control &Automation,2008,24 (18):56-58(in Chinese). [姜楠,舒炎泰,康杨.一种RCP 协议在WLAN 下的跨层改进方法 [J].微计算机信息,2008,24(18):56-58.]

猜你喜欢
通用设备表项磁盘
一种改进的TCAM路由表项管理算法及实现
基于ARMA模型预测的交换机流表更新算法
解决Windows磁盘签名冲突
修改磁盘属性
变电站电流互感器额定容量选择
SDN数据中心网络基于流表项转换的流表调度优化
磁盘组群组及iSCSI Target设置
创建VSAN群集
关于招标过程中电梯选型及建设性建议分析
通用设备节能成为金桥绿色低碳发展的重要途径