近年来,云计算已成为分布式计算领域中的研究热点,它是指运行在数据中心软硬件上的应用通过Internet为用户按需提供服务;并将数据中心内的软硬件资源统称为云,云计算自身并不是一种新技术,而是一种新服务模式。这种模式能够将设备安装和资源管理外包给云服务商,具有按使用计费和扩展灵活的特性,通过对IT资源的统一部署与集中管理,云计算能够优化资源的利用率,为用户提供廉价、高效、可靠的服务。
虚拟桌面作为一种典型的云计算应用,是建立在服务器虚拟化基础上的云应用。如图1所示,虚拟桌面基础架构在云中为用户提供远程的计算机桌面服务;服务提供者在数据中心服务器上运行用户所需的操作系统和应用软件,然后采用桌面显示出议将操作系统桌面视图以图像的方式传送到用户端设备上。同时,服务器对用户端的输入进行处理,并随时更新桌面视图的内容。用户通过任意可以接入Internet的终端,通过授权认证即可进行桌面计算。在虚拟桌面计算模式下,所有计算都可以放在数据中心的服务器上,对终端设备的要求将大大降低,类似于平板电脑、智能手机、掌上电脑以及其他智能的手持设备这样的瘦终端就可以满足更广泛、更灵活的应用需求。虚拟桌面架构通过服务器虚拟化,集中管理、统一配置,使得计算和数据更安全;同时,便于精简配置,降低IT系统成本、能耗以及管理开销。
图1虚拟桌面计算架构
虚拟桌面架构面临服务器虚拟化所带来的存储代价和性能上的挑战。由于几十或上百个虚拟桌面整合到一台物理服务器上,随着用户数目的增长和用户需求的提高,服务器的存储空间需求会迅速扩展;如果一台物理服务器上有100个虚拟桌面,每个40 GB的容量就需要创建和维护100个虚拟磁盘镜像,总共需要4TB的存储容量。另外,一台物理服务器往往需要同时启动和运行多个虚拟机,如何优化虚拟机I/O访问来提高存储性能也是亟待解决的问题,利用虚拟磁盘镜像中存在大量数据冗余的特性;本文应用重复数据删除技术来优化虚拟桌面架构的存储空间利用率,由于数据消重后,数据块被重复引用频率不同;本文将被频繁引用的数据块存放在数据中心中较传统硬盘性能高的基于闪存的固态硬盘上,并同时在服务器端通过本地磁盘缓存热数据以提高虚拟桌面的访间性能。
相关工作
1. 1重复数据删除技术
重复数据删除技术是一种基于数据冗余度的数据缩减技术。它首先利用一定的数据分块策略将大的数据对象划分为若干较小的数据块,并用数据块的加密哈希值作为指纹来标识它们;通过比对数据块的指纹,我们可以提高存储系统的空间利用率和网络系统的带宽利用率。按重复数据删除操作时机的不同。可以分为在线重复数据删除和离线重复数据删除。在虚拟桌面架构中,由于即时缩减数据能够避免不必要的数据传输和写操作,使得在线重复数据删除更具有优势。按重复数据删除操作粒度的差异,可以分为文件级、块级甚至字节级重复数据删除。根据虚拟机磁盘镜像特点,我们发现块级在线重复数据删除技术更适合虚拟桌面存储的优化。
目前,重复数据删除技术已被广泛应用于虚拟机环境。通过分析虚拟机磁盘镜像的消重效果,发现重复数据删除技术能够大量地缩减虚拟机磁盘镜像存储空间。 Nath等人发现在基于虚拟机的存储系统中进行块级重复数据删除能够充分利用存储和网络资源,Liguori等人对不同操作系统的虚拟机磁盘镜像进行重复数据删除效果比较分析,并测试重复数据删除技术对虚拟机启动和读性能的影响, Zhang等人研究了重复数据删除技术对虚拟机在线迁移的加速效果。本文主要研究如何利用重复数据删除技术来优化虚拟桌面存储系统的存储利用率和I/ O性能。
1.2基于闪存的固态硬盘
基于闪存的固态硬盘是一种非易失性的存储器,主要由闪存芯片和闪存转换层构成。它的数据访问性能介于易失性存储器DRAM和传统硬盘之间,价格比DRAM更便宜。相比于传统硬盘,因为没有机械的磁头运动,其随机读性能与顺序读性能同样快;但由于写操作之前需要进行代价较高的数据擦除操作,使得写性能低于读性能。另外,基于闪存的固态硬盘较DRAM和传统硬盘具有更低的能耗。
基于闪存的固态硬盘较DRAM具有更高的性价比以及能耗优势,使得其在数据中心的数据密集型应用中很受青睐。重复数据删除技术自身是一种密集型的应用;特别是针对数据块索引以及数据块元数据的访问操作,访问数据量小但很频繁。利用基于闪存固态硬盘随机读性能的优势,用其来存储数据块索引和元数据能够极大地优化存储系统的访问性能。由于虚拟磁盘镜像文件在数据消重后文件数据存储碎片化,在传统硬盘上其读性能很差;本文利用基于闪存的固态硬盘在随机读性能上的优势来优化虚拟磁盘镜像文件的读性能。
2 虚拟桌面存储优化技术
为了节省硬件的采购成本和经常性的管理开销,虚拟化技术被广泛应用于企业数据中心的服务器资源管理,使得每台物理服务器能够整合几十或上百台虚拟机,从而提高IT资源的利用率。这使得每台服务器需要管理大量的虚拟磁盘镜像,而服务器的本地磁盘不足以提供如此大的存储容量,需要将这些磁盘镜像存放到一个集中的大容量存储池,并由多台服务器所共享。当服务器需要启动某个虚拟机时,需要从存储池将虚拟磁盘镜像读到服务器的本地磁盘来运行。利用虚拟磁盘镜像之间数据高度冗余的特性,我们应用重复数据删除技术来缩减虚拟磁盘镜像的存储空间需求,同时减少服务器与存储池之间的I/O操作以提高虚拟机启动性能。如图2所示,基于重复数据删除技术的虚拟桌面基础架构其I/O由4层构成,包括最上层是虚拟机监控器(也叫Hypervisar)实现的I/O虚拟层、重复数据删除引擎构成的重复数据删除层、服务器本地磁盘实现的本地磁盘缓存层以及共享存储池充当的主存储层。
图2基于重复数据删除技术的虚拟桌面架构
虚拟机监控器Hypervisor是位于硬件资源和操作系统之间的系统软件层,允许多个操作系统和应用共享底层的硬件,使得同一物理服务器上能够虚拟出多个虚拟桌面,Hypervisor不但协调着这些硬件资源的访问,也同时通过资源隔离在各个虚拟机之间施加防护,目前市场主流的Hypervisor有VMware的ESX Server、微软的Hype—V以及Citrix的Xen Server等。
重复数据删除引擎包括数据分块、指纹计算、索引查询/更新以及数据存储4个模块,由于块级的重复数据删除技术能够很好地兼顾存储空间利用率和系统开销,本文采用块级消重来优化虚拟机磁盘镜像存储;并将重复数据删除引擎设计为Hypervisor下的一个模块,使得上层的数据I/O请求都必须经过重复数据删除层过滤,避免重复数据块的写操作,以及重复数据块从共享存储池到服务器的读人操作,通过支持多个虚拟机磁盘镜像进行在线重复数据删除,以优化存储利用率和虚拟机启动性能,在多服务器环境下,还可以通过支持全局的数据块指纹索引进行全局重复数据删除来迸一步提高数据缩减率。
虚拟桌面基础架构在启动虚拟机时,需要从共享存储池将虚拟磁盘镜像读人到服务器,而不是从本地磁盘读取,往往因为受网络带宽或者存储池I/0性能的影响,使得其启动性能低,利用数据访问的局部性原理,类似于Parallax系统,我们允许虚拟机将数据写到在服务器本地磁盘缓存上,而不需要与共享存储池交互,直到本地磁盘缓存填满才将一部分数据写到存储池,利用重复数据删除层带来的优势,服务器本地磁盘能够存放更多的虚拟机数据。这样,可以降低重复数据删除技术对虚拟机I/O性能的影响,极大地提高虚拟机的启动速度。
重复数据删除技术能够消除虚拟机磁盘镜像存储中的大量冗余,提高存储空间的利用率,但也使得虚拟机磁盘镜像文件在存储池内的存放变得不连续,从而严重影响其读性能,基于闪存的固态硬盘,相比于传统的硬盘具有很好的随机读性能以及能耗优势,使得固态硬盘被一些重复数据删除系统所采用以优化其吞吐量,另外,相似虚拟磁盘镜像之间具有大量相同内容的数据块,使得重复数据删除后,这些数据块的重复引用次数较其他数据块更高,利用固态硬盘较传统硬盘在随机读性能上的明显优势,我们在存储池中采用基于闪存的固态硬盘来存储重复引用次数较高的数据块以优化其读性能。
3实验结果与分析
我们通过2000多行C++代码实现了重复数据删除引擎模块,并基于真实的虚拟机磁盘镜像来测试重复数据删除技术对基于VMware虚拟桌面原型系统下的存储系统容量和性能的影响,在本文的实验环境中,我们以一台单机作为服务器,其配置为2.53 GHz Intel Core 2 Duo处理器,4GB内存容量,250GB SATA硬盘;并通过千兆以太网连接个由2块硬盘(Western Digital 160 GB WD1600AAJS SATA)、1块固态硬盘(Kingston 64GB SSDNovgV100 Series 2.5”SATA II)构成的RAIDo磁盘阵列系统作为存储池,基于4种不同的操作系统虚拟机磁盘镜像,采用了3种不同的重复数据删除技术分别进行测试。
通过对Windows XP,Ubuntu,Fedora和Centos等4种不同操作系统的虚拟机镜像分别进行全文件分块(WFC)、静态分块(SC)以及基于内容分块(CDC)3种重复数据删除技术测试;并为块级重复数据删除技术选取8 KB的平均分块大小,对于变长分块的CDC策略,我们采用TTTD算法,并且将分块的大整除因子作为平均分块大小,小整除因子设为平均分块大小的一半,上界规定为平均块大小的两倍,下界为平均块大小的1/4,如图3所示,Base为消重前原始文件大小,WFC,SC和CDC分别代表3种重复数据删除策略,从实验结果中我们发现不同操作系统的虚拟磁盘镜像自身的冗余度有差别;Windows XP的冗余度最高,而Centos的冗余度最低,不同的重复数据技术对虚拟机磁盘镜像的消重效果差别较大;基于静态分块的重复数据删除机制较其他两种都具有更高的数据缩减率,基于全文件分块的重复数据删除技术消重效果最差,仅有极其微小的数据缩减量,通过分析这4种不同虚拟磁盘镜像的重复引用计数与相应分类中的数据容量关系,如图4所示,我们发现虚拟机镜像内部数据块的重复引用数与相应的数据容量按对数成反比例。
图3单个虚拟磁盘镜像的消重效果比较
图4重复引用次数与数据存量的关系
由于文件级别的重复数据删除技术对虚拟机磁盘镜像的数据缩减效果很不明显,我们来研究块级别的重复数据删除技术,它相比于字节级别的数据缩减技术往往具有较小的开销和更好的扩展性,如图5所示,通过比较定长块大小的静态分块(SC)策略和变长块大小的基于内容划分(CDC)策略两种重复数据删除技术的数据缩减效果,发现随着(平均)分块大小的递增,重复数据删除的效果越差;相比于CDC策略,SC策略能获得更高的数据缩减率,为了平衡重复数据删除技术对存储系统I/O吞吐量的影响,我们需要考虑重复数据删除技术的效率,定义重复数据删除效率为减少的数据量与消重过程的时间开销之比,当然这是在同一实验平台上进行比较,如图6所示,通过比较两种重复数据删除技术的消重效率,发现CDC的消重效率只有sc消重效率的1/6左右,SC的最优分块大小为4KB,而CDC的最优分块大小为2 KB,通过上述分析,我们发现SC策略较CDC策略更适合于虚拟机磁盘镜像的重复数据删除过程,具有更高的数据缩减率和重复数据删除效率。
图5块级重复数据删除技术消重效果
图6块级重复数据删除技术消重效率
为了研究重复数据删除技术对虚拟桌面存储空间的优化效果,我们利用基于静态分块(SC)的重复数据删除技术对7个相似Windows XP虚拟机磁盘镜像进行了消重,实验结果如图7所示,随着相似虚拟机磁盘镜像数目的增加,重复数据删除技术能够获得越高的数据缩减率,并且能将7个虚拟机磁盘镜像的存储空间需求降低85%,随着相似虚拟机磁盘镜像数目的增加数据冗余度也随之改变,如图8所示,DT代表左边的重复数据删除吞吐量,DR代表右边的数据缩减率;由于重复数据删除技术能够避免很多不必要的数据写操作,使得虚拟机磁盘镜像的写吞吐量随着冗余度的增(减)而升(降)。
图7静态分块消重优化虚拟桌面存储
图8数据冗余度与重复数据删除吞吐量的关系
通过测试虚拟机的启动时间,我们来评估优化策略对虚拟桌面存储系统的性能影响,受服务器配置性能影响,我们只启动前面连续存放了的7台Windows XP虚拟机中的前3台相似的虚拟机VM1,VM2和VM3,如图9所示,对比没有重复数据删除技术支持且无任何优化的虚拟桌面存储系统(Naive),重复数据删除技术(Dedupe)在节省存储空间的同时影响了存储系统性能,使得虚拟机的平均启动时间增加了1倍;通过设置1 GB本地磁盘缓存(LDC)的优化,基于重复数据删除技术的虚拟桌面存储系统能够将虚拟机的启动时间减少30%,特别是对虚拟机VM1启动速度的提升;而通过加入SSD存放重复引用次数大于等于7的数据块来优化存储池I/O性能,即使不采用本地磁盘缓存,基于重复数据删除的虚拟桌面存储系统能够提升28%的性能;如果将两种优化策略结合(Opt-Dedupe)来优化基于重复数据删除技术的虚拟桌面存储系统,总的性能提升可达到35%。
图9虚拟桌面存储系统性能对比
4结论与展望
虚拟桌面技术已成为一种重要的云计算应用,针对虚拟桌面存储中具有大量数据冗余的特性,本文基于重复数据删除来缩减虚拟桌面基础架构的存储空间需求;为了改进重复数据删除技术自身的I/O性能瓶颈,我们通过服务器本地的磁盘缓存以及基于闪存的固态硬盘在共享存储池内存储重复引用次数较高的数据块以优化虚拟机的性能,通过实验测试我们总结出:静态分块策略较基于内容分块的策略更适合虚拟桌面存储进行重复数据删除,其最优的分块大小为4 KB,可以缩减85%的存储空间容量;通过服务器本地磁盘缓存和基于闪存的固态硬盘进行I/O优化,虚拟机的启动速度能够获得35%的提升,下一步的研究工作我们将考虑在多个服务器环境下如何高效地进行重复数据删除,以及如何设计数据块索引来提升I/O吞吐量。