APP下载

基于堆叠文件系统的云计算存储优化

2014-12-02丰文雄

计算机工程 2014年12期
关键词:镜像备份实例

郭 婉,张 晓,丰文雄

(西北工业大学计算机学院,西安 710129)

1 概述

云计算系统通过虚拟化技术以虚拟机的形式为用户提供CPU、内存等资源[1],云计算技术的发展使得虚拟化技术得到了前所未有的广泛普及,据统计,截止2012 年底运行在x86 服务器上有将近50% 的应用已被虚拟化,预计在2014 年该数据将接近70%[2-3]。如Microsoft Azure 以 及Amazon Elastic Compute Cloud 分别提供4 种型号的虚拟机实例[4],即小型、中型、大型以及超大型,众多型号的虚拟机相应地拥有众多的虚拟机类型,同一类型的虚拟机也提供多种不同版本。据研究Linux 虚拟机镜像的不同版本之间存在80% 以上的冗余数据块[5]。另外,据IBM 研究院提出单个虚拟磁盘文件中的重复数据是5%,而基于相同操作系统,安装不同应用程序的虚拟磁盘文件中有90% 以上的重复数据,这主要是因为存在大量相同的系统数据[6-7]。这些势必会使得云计算环境中存储以及网络资源的利用率降低,如何缓解并改善这一问题已成为当前云计算高效存储领域的重要挑战之一。

针对虚拟镜像大量使用带来的冗余问题,现有的解决方法基本上是通过利用重复数据删除技术来缓解存储资源以及网络带宽的压力,然而重复数据删除技术在降低存储和带宽资源需求的同时也带来了两方面问题:(1)数据分块、哈希指纹运算等CPU密集型操作增多;(2)数据块在磁盘上的检索操作使得I/O 延迟增大[7]。另外,在重复数据删除环境中的File Recipe[8]的容量也随着重删率和数据量的增加而增大,其容量也不容忽视。

针对云环境中的虚拟机冗余问题,本文提出一种将可堆叠文件系统应用于云环境中来优化存储的解决方案,在缓解虚拟镜像冗余问题的同时,避免了使用重复数据删除技术带来的问题。

2 相关工作

在云环境中,虚拟机镜像模板库中一般存储了多个镜像,其大小在1 GB 到十几GB 之间不等,这些镜像之间不可避免地存在着大量冗余。如何在对处理性能影响较小的条件下高效地缓解云环境中虚拟镜像带来的冗余已成为近年来多数研究者关注的热点。

重复数据删除技术用来避免相同数据块的重复存储,在虚拟机镜像存储方面的使用可以有效节约存储空间。如文献[9]提出的LiveDFS 可以对部署在廉价的、有计算指纹内存限制的硬件设备上的开放云平台中的虚拟镜像进行重复数据删除,然而LiveDFS 未能在容错性和存储效率方面取得平衡。文献[10]提出的对虚拟磁盘文件的分析与研究表明,虚拟磁盘文件中可分为系统数据和用户数据,在系统数据时不经常改变,而用户数据的改变会局限在一个有限的范围内,而且虚拟磁盘文件的数据改变模式也是可以预知的,通过充分挖掘虚拟镜像数据的特征来设计相应的重复数据删除机制,主要通过建立新的指纹索引方法来提高效率,但实现复杂而且只针对虚拟镜像的备份系统而言,可扩展性不强。文献[11]基于虚拟桌面环境下存储系统的需求,研究并实现了VMStore 中实时去冗余机制,但是实时的去冗机制会带来大量的计算开销,在一定程度上降低了虚拟桌面系统的用户体验。总的来说,现有针对虚拟机镜像冗余的解决方案基本上都是通过重复数据删除技术来缓解,然而重复数据删除技术提高资源利用率的同时也带来以下问题:(1)性能降低;(2)指纹计算,索引建立和查询方法复杂,计算开销大;(3)容错性低;(4)随着重删率的增大,File Recipe 容量也随之增多。

另有众多研究通过利用可堆叠文件系统对文件存储及访问进行优化,如文献[12]通过采用可堆叠文件系统技术,实现对不同特征的文件进行自动适应和优化以便提高基于Linux 的云存储的文件服务性能;再如文献[13]提出一种面向文件特征基于可堆叠结束的存储优化系统,旨在为下层安全文件系统增加存储优化功能;现有的通过堆叠文件系统来优化存储的方案基本是基于文件的大小特征,而对于文件的类型特征关注较少。本文提出利用堆叠式文件系统Unionfs 来优化云计算存储、缓解云环境下虚拟镜像冗余问题。Unionfs 在系统中的堆叠结构如图1 所示。

图1 Unionfs 在系统中的堆叠结构

堆叠式文件系统Unionfs 可以联合众多文件系统或目录,可提供类似快照的功能。本文选择Unionfs 正是充分利用了其类似快照的功能,将其应用在云存储优化中,提高存储资源利用率以及性能。Unionfs 可以在目录物理位置隔离的情况下将众多目录合并成一个单一视图[14]。目前,Unionfs 应用的地方较多,如前人提出可以用Unionfs 将多个NFS服务器的不同主目录合并起来,组成统一的/home目录提供给单个客户端,Unionfs 也被用来合并分布式镜像;另外,Unionfs 通过利用Copy-on-Write 技术来修补CD-ROM;又如文献[15]提出将Unionfs 用于LiveCDs,即将一个标准的只读文件系统ISO9660和一个赋予高优先级的可读写tmpsf 文件系统联合起来;再如,和前面应用不同的是,Unionfs 可以通过逻辑上标记一个物理上可读写的分支为只读的提供其copy-on-write 语义,在这种情况下,Unionfs 可被用于为文件系统做快照,本文提出的方案主要用到了Unionfs 提供的快照技术。

3 堆叠文件系统用于云环境的方案设计

本文提出将堆叠式文件系统用于云环境中方案,主要为了改进云环境中诸多镜像的保存方法,以便在保证性能的前提下提高资源的利用率。下文通过详细介绍现有云中镜像的普通存储方案、使用了重复数据删除技术的镜像存储方案以及将堆叠式文件系统用于云环境时镜像存储方式来对比说明本文提出的方案的设计思路及优势。

3.1 云环境中虚拟镜像的普通存储方案

在云环境中,对虚拟镜像的存储不进行任何优化处理,不对多个虚拟镜像造成的冗余问题予以管理,此时云计算环境中虚拟镜像的存储方案如图2所示,其中,img1~imgN代表不同的虚拟镜像,在不考虑众多虚拟镜像带来的冗余的情况下,将所有需要用到的虚拟机镜像都分别单独存储一份供用户启动实例,这种情况导致存储资源以及网络带宽资源的利用率较低。

图2 虚拟镜像的普通存储方案

3.2 重复数据删除镜像存储方案

图3 所示是将重复数据删除技术应用到云环境中来缓解虚拟镜像冗余带来的存储资源和网络资源利用率低的问题的一种解决方案,在该方案中,根据所用的具体的重复数据删除类别的不同,众多的虚拟机镜像会被分成大小相同或不同的块,这些块会在存储之前进行对应的指纹运算并且进行一些了索引操作,从而鉴定是否有重复,例如在图3 中,c1~c5 是经过重复数据删除之后所存储的无重数据块,这样通过重复数据删除,相比3.1 节的解决方案提高了资源的利用率。然而在用户需要启动虚拟机的时候,读取虚拟镜像需要做一系列恢复操作,这些恢复操作会设计到多种复杂的检索,例如用户1 需要虚拟镜像img2 来生成instance3,那么就需要通过读取重复数据删除时建立的索引指针来决定读取c2,c2 和c5 3 个数据块的内容来恢复出img2 的原始文件,这个过程使得虚拟镜像的读取操作由原先的顺序读取变成零散的随机读取,从而导致虚拟镜像的读取速率下降,延长了用户启动虚拟机的时间;另外,重复数据块的索引文件也会随着系统中虚拟镜像的增多以及重复数据删除率的增大而增大。

图3 重复数据删除镜像存储方案

3.3 堆叠式虚拟镜像存储方案

本文提出在云环境中使用堆叠式文件系统来缓解云环境中虚拟镜像冗余导致的存储资源和网络资源利用率低的问题。

Unionfs 通过堆叠在只读和可读写的目录之上可以提供类似快照的功能,本文充分利用Unionfs 这一功能,将Unionfs 堆叠在存放虚拟镜像文件的目录和存放用户修改的目录上,前者操作属性为只读,后者的操作属性为可读写。如图4 所示,img1~imgN代表不同的虚拟镜像;diff1~diff5 代表相同或不同用户启动虚拟机实例后做自己所需的操作所致镜像变换的部分。如根据自己的需要安装特定软件,在这种设计模式下,如user1 需要启动instance1,则其可以读取img1 以及diff1 来启动instance1,当user1需要启动instance2 时不需要再次读取存放在只读盘上的img1,而只需要读取相应于instance2 的diff2 并将其和先前已经读取到的img1 结合来生成所需的instance2,这样既节约了存储资源又缩减了虚拟实例启动时间;当user1 需要启用instance3 时会读取img2 以及对应的diff3,但是同时当user2 需要启动instance4 时,其需要读取img2 和相应的diff4 来生成instance4,这种设计使得不同用户需同时启动同一镜像时不会存在资源争用,从而也不会对性能有太大影响。

图4 堆叠式虚拟镜像存储方案

4 堆叠存储虚拟镜像方案的优势

在云环境中,使用堆叠式文件系统来组织存储虚拟镜像相比传统的虚拟镜像存储方案具有以下优势:(1)在跨数据中心的镜像移动方面可以缩短镜像的移动时间;(2)在虚拟镜像备份方面可以在保证恢复速度的前提下减少备份数据量;(3)在同一用户将启动多个相同镜像的实例的情况下可以缩短虚拟机实例的启动时间,在一定程度上提高云用户体验。

在云计算数据中虚拟机的动态迁移对于计算节点的负载和整个系统的节能平衡方面有着重要的作用。随着信息数据的爆炸式增长,数据中心的数目也在日益增长,跨数据中心的虚拟镜像移动在云环境中越来越重要,要实现实时迁移则要保证只需要短暂的暂停原域,不必完全的停止服务[16],这就要求虚拟镜像的迁移要快速平稳。本文提出的云环境中虚拟镜像存储方案中,对同一用户的众多相同虚拟镜像只存一份原始镜像的同时将用户启动的虚拟机中改变的部分(如图4 中的diff 部分)单独存放,在虚拟机镜像需要迁移时对同一用户而言只需要移动一个原虚拟镜像以及众多diff 数据,由于diff 数据量相对虚拟机镜像来说非常小,因此移动的数据量整体上少于传统的虚拟镜像存储方式下所需的移动数据量,从而缩短了镜像的移动时间。

云计算环境中对可靠性的要求相比其他平台只增不减,因此,虚拟机的备份也是云环境中一个主要环节。在客户操作系统、虚拟机监视器和虚拟机外部这3 个层次的虚拟机备份机制中,每一层都有缩减备份时间的需求[17],本文提出的堆叠虚拟镜像存储方案由于在备份及恢复时,不会像重复数据删除存储虚拟镜像方案那样需要复杂的计算、检索等操作,因此该方案相比传统的镜像存储方案可以缩减虚拟机备份时间的同时保证恢复时间也比较短。

虚拟化在云环境中前所未有的普及,使得虚拟机的启停已成为云环境中例行的公事。用户在使用云平台时,启动虚拟机所需的时间与特定时间段的网络带宽,服务器性能甚至用户自己的机器性能等都有关系,本文提出的堆叠存储虚拟镜像方案对于同一用户而言,如果要启动相同虚拟镜像的多个实例,那么可以只读取一次原虚拟镜像,再读取多个实例的diff 部分即可,而diff 比原虚拟镜像文件小很多,因此,相对减少了读取镜像时传输的数据量,从而在一定程度上可以缩短同一用户启动相同虚拟镜像的多个实例所需的时间。

5 实验测试及评价

本节通过设计并实施一系列测试实验来比较3.2 节和3.3 节2 种方案各自的优劣。在对2 种方案进行对比的实验中,使用了 iozone[18]以及filebench[19]2 个不同侧重点的文件系统测试工具,其中,iozone 用来测试堆叠式文件系统对文件系统读写性能的影响;filebench 用来测试2 种方案下系统对不同负载表现出来的性能差异。

5.1 堆叠式文件系统对性能的影响

为了测试堆叠文件系统对性能的影响程度,本文选用iozone 对安装有Unionfs 文件系统的环境进行了读写性能的测试,实验环境如表1 所示。本文在以上实验环境基础上实施一组对比实验,其中,将2 组实验数据进行对比,即系统挂载了Unionfs 时相应读写操作的性能和系统卸载了Unionfs 后相应读写操作性能的比较,通过比较有无Unionfs 时文件系统读写操作的性能来评估Unionfs 的平均性能损失百分比,以指导用户在应用可以接受的性能损失范围内使用Unionfs,从而充分利用Unionfs 提供的功能特性。

表1 装有Unionfs 文件系统的实验环境

利用同一磁盘的不同分区来模拟不同的物理磁盘,其中,使用2 个40 GB 的被格式化为ext3 的分区来模拟Unionfs 底层2 个不同的物理磁盘,这2 个分区的挂载点分别为/mnt/t2 和/mnt/t3,在根分区下建立/mnt/t 用来作为Unionfs 的上层目录。使用如下命令进行挂载:

其中,rw 表示/mnt/t2 可读写;ro 表示/mnt/t3 为只读;/mnt/t2 的优先级高于/mnt/t3 的优先级,即/mnt/t 中存放/mnt/t2 和/mnt/t3 中的相同文件名的文件时优先存放/mnt/t2 中的文件。使用iozone 对文件的顺序读和顺序写,随机读和随机写的性能进行测试。

Unionfs 顺序读/写操作测试结果如图5 所示。其中,t~t3 表示目录卸载Unionfs;t_Unionfs~t3_Unionfs 表示挂载Unionfs;性能百分差=(挂载Unionfs 性能—卸载Unionfs 性能)/挂载Unionfs 性能×100% 。由图5(a)~图5(c)可以看出,在挂载Unionfs 时对不同优先级的目录进行顺序读操作的速率在75 Mb/s~85 Mb/s 区间内浮动,在卸载Unionfs后对不同目录的顺序读操作速率在80 Mb/s~90 Mb/s区间内浮动,可以看出,进行顺序读操作时由于Unionfs 只是通过简单的目录查找去读取底层目录中的文件,因此Unionfs 对文件系统性能的平均影响大约仅为3.6% 。

由图5(d)~图5(f)可以看出,在挂载Unionfs时对不同优先级的目录进行顺序写操作的速率在60 Mb/s~72 Mb/s 区间内浮动,在卸载Unionfs 后对不同目录的顺序读操作速率在60 Mb/s~72 Mb/s区间内浮动,可以看出,进行顺序写操作时由于Unionfs 不会附加额外的操作处理,因此Unionfs 对文件系统顺序写性能的平均影响大小仅约为2.9% 。

Unionfs 随机读/写操作性能测试结果如图6所示。

图5 Unionfs 顺序读/写操作性能测试结果

图6 Unionfs 随机读/写操作性能测试结果

由图6(a)~图6(c)可以看出,在挂载/卸载Unionfs 2 种情况下,随机读操作的性能均随着操作块的增大而增大,这是由于随着操作块的增大,一次读入内存的内容增多而文件总的大小不变,这样使得随机读的次数相对较少。可以看出,进行随机读操作时在Unionfs 挂载情况下不同的优先级的目录中随机读操作的性能差异不大,同时,卸载Unionfs的情况下随机读操作的性能相比有Unionfs 时的随机读性能差异也不大,可见Unionfs 对文件系统随机读性能的平均影响比较小仅约为4.3% 。

由图6(d)~图6(f)可以看出,在挂载/卸载Unionfs 2 种情况下,与随机读操作相似,随机写操作的性能均随着操作块的增大而增大。可以看出,进行随机写操作时在Unionfs 挂载情况下不同的优先级的目录中随机写操作的性能差异不大;同时,卸载Unionfs 的情况下随机写操作的性能相比有Unionfs时的随机写性能差异也不大,可见Unionfs 对文件系统随机写性能的平均影响较小且仅约为0.8% 。

5.2 堆叠方案和重删方案性能对比

为了对比堆叠方案(堆叠式虚拟镜像存储方案)和重删方案(重复数据删除镜像存储方案),本文使用开源软件Opendedup[20]来为重删方案提供重复数据删除功能,空间重删文件系统(Space Deduplication File System,SDFS)作为Opendedup 的核心是一个基于对象的的重复删除文件系统。堆叠方案和重删方案性能对比实验的软硬件环境如表2 所示。

表2 堆叠方案和重删方案性能对比实验环境

在Opendedup 环境搭建过程中,建立SDFS 文件系统时,设置卷实际存取基本路径为/data,卷实际存取的基本路径是进行了deduplication 操作之后实际存储数据的位置。如图7 所示,/sdfs 是挂载好sdfs 文件系统的目录;/data 是卷实际存取的目录;deduplication 操作发生在/sdfs 处,经过重复数据删除后的数据最终存储在/data 目录中。

图7 Opendedup 实际存储路径

堆叠式文件系统的使用能为云环境下的虚拟镜像管理提供众多优势,Opendedup 在处理虚拟镜像重复冗余问题方面表现也比较突出,为了定量地分析Unionfs 和Opendedup 对不同应用负载表现出的性能差异,本文使用Filebench 性能测试工具测试了在fileserver、varmail、webserver 3 种不同的负载环境两者表现出的性能差异。如表3 所示分别表示3 种负载环境下使用Unionfs 和使用opendedup 时系统在60 s 内吞吐量,平均读写速率,平均每个操作的CPU 时钟周期数以及延迟结果对比,可以看出,在3 种负载环境下,使用堆叠方案时系统的被测性能指标均远优于重删方案的被测性能指标结果。

表3 堆叠方案和重删方案对比结果

如表3 所示,堆叠方案CPU 的使用率在3 种负载情况下均比重删方案的CPU 使用率高;对于系统的延迟时间,重删方案的延迟远大于堆叠方案的延迟。出现表3 所示对比结果的原因主要有2 点:(1)重复数据删除方案本身需要大量指纹计算、索引查询等操作,增加了系统的计算量和操作复杂度,而堆叠方案不需要这些额外的计算操作;(2)重复数据删除方案Opendedup 的文件系统SDFS 是在用户层而堆叠方案的文件系统Unionfs 是作为模块装载在系统的核心层,因此后者比前者对系统性能的影响小。

5.3 堆叠方案和重删方案存储容量对比

为了将堆叠方案和重删方案在降低存储容量方面的能力进行对比,本文实验收集了实验室所搭建的基于Openstack 的私有云平台[21]上的部分ubuntu虚拟镜像数据,其中,包括8 个Ubuntu 虚拟实例以及一个Ubuntu 镜像模板,总容量为6.3 GB。实验通过Opendedup 进行重复数据删除处理得出重删后的总容量为3.1 GB;通过分析8 个虚拟实例中已被特定用户改变的文件数目以及容量,并将这些容量与镜像模板容量相加得到堆叠方案下所需的总容量为2.011 7 GB,由图8 可以看出,重删方案和堆叠方案均在一定程度上降低了存储容量;出现堆叠方案相比重删方案所需的容量更小的原因是:在本文实验云平台中,用户只对虚拟实例进行了少量的修改致使3.3 节中的diff 文件的容量较小,从而使得总的容量降低。因此,在用户对虚拟实例只需少量修改的情况下,堆叠方案对存储容量的需求相比传统重复数据删除方案更具优势。

图8 3 种方案存储容量对比

6 结束语

针对云环境中大量虚拟镜像带来的冗余,使得存储资源和网络资源利用率降低的问题,本文提出一种基于可堆叠文件系统的云计算存储优化方案。实验结果表明,该方案在跨数据中心虚拟镜像移动、虚拟镜像备份等方面具有一定优势。今后将考虑在堆叠式文件系统下层增加更多的硬盘分支,搭建更接近云环境的测试平台,运行更多类型的负载,以观察系统性能的变化情况。

[1]Nguyen Q T,Tuong N H.Virtual Machine Allocation in Cloud Computing for Minimizing Total Execution Time on Each Machine [C]//Proceedings of International Conference on Computing,Management and Telecommunications.Ho Chi Minh City,Vietnam:[s.n.],2013:241-245.

[2]Thomas B.Virtual Machines and Market Share Through 2012[EB/OL].(2012-11-20).http://citeseerx.ist.psu.edu/showciting? cid=19262285.

[3]Thomas B.Q&A:Six Misconceptions about Server Virtualization Gartner[EB/OL].(2010-07-11).http://citeseerx.ist.psu.edu/showciting? cid=19262286.

[4]Nejad M M,Mashayekhy L,Grosu D.A Family of Truthful Greedy Mechanisms for Dynamic Virtual Machine Provisioning and Allocation in Clouds[C]//Proceedings of the 6th IEEE International Conference on Cloud Computing.[S.l.]:IEEE Press,2013:188-195.

[5]Jin K,Miller E L.The Effectiveness of Deduplication on Virtual Machine Disk Images [C]//Proceedings of SYSTOR’09.Haifa,Israel:[s.n.],2009:57-69.

[6]Liguori A,Hensbergen E.Experiences with Content Addressable Storage and Virtual Disks [ C ]//Proceedings of WIOV’08.San Diego,USA:USENIX Association,2008:129-137.

[7]Zhu Rui,Qin Leihua,Zhou Jingli,et al.Using Multithreads to Hide Deduplication I/O Latency with Low Synchronization Overhead[J].Journal of Central South University,2013,20(6):1582-1591.

[8]Meister D,Brinkmann A.File Recipe Compression in Data Deduplication Systems[C]//Proceedings of the 11th USENIX Conference on File and Storage Technologies.San Jose,USA:USENIX Association,2013:175-182.

[9]Ng C H,Ma M,Wong T Y,et al.Live Deduplication Storage of Virtual Machine Images in an Open-source Cloud [ C]//Proceedings of the 12th International Middleware Conference.[S.l.]:USENIX Association,2011:80-99.

[10]丁德兵.虚拟机备份系统中存储空间的优化[D].武汉:华中科技大学,2012.

[11]候海翔.虚拟桌面环境下数据去冗余系统的设计与实现[D].武汉:华中科技大学,2011.

[12]陈公超,刘海涛.云存储中多类型文件存储及访问优化机制的研究[J].计算机应用与软件,2011,28(12):220-226.

[13]谢 俊.可堆叠安全文件系统的存储优化的分析与研究[D].上海:上海交通大学,2008.

[14]Wright C P,Zadok E.Unionfs:Bringing Filesystems Together [ EB/OL ].(2004-11-28).http://www.linuxjournal.com/article/7714.

[15]Quigley D,Sipek J,Wright C P,et al.Unionfs:User-and Community-oriented Development of a Unification Filesystem [C]//Proceedings of Linux Symposium.Ottawa,Canada:Ottava Congress Center,2006:349-362.

[16]魏 坤,许 晖,杨 旸.基于虚拟机实时迁移的绿色云计算及其技术实现[J].计算机应用与软件,2013,30(6):101-103.

[17]褚祸勇,肖 侬,蔡志平,等.虚拟机备份机制研究[J].计算机工程与科学,2009,31(9):131-134.

[18]William D,Norcott I.File System Benchmark[EB/OL].(2007-03-23).http://www.iozone.org/.

[19]Mauroj S V.File System Bench[EB/OL].(2011-09-06).http://sourceforge.net/apps/mediawiki/filebench.

[20]Global Deduplication.Gloab Inline Deduplication for Block Storage and Files [EB/OL].(2012-07-14).http://code.google.com/p/opendedup/.

[21]张瑞杰,李战怀,张 晓,等.基于私有云的虚拟实验平台的设计与实现[J].计算机与现代化,2013,31(8):159-164.

猜你喜欢

镜像备份实例
“备份”25年:邓清明圆梦
镜像
创建vSphere 备份任务
镜像
旧瓶装新酒天宫二号从备份变实验室
镜像
完形填空Ⅱ
完形填空Ⅰ
出版原图数据库迁移与备份恢复