王建辉,石宇良
(北京工业大学 软件学院,北京 100022)
随着现代化的飞速发展,传统行业逐渐进入自动化办公时代。人们工作和生活中需要的信息量猛增[1],现有的硬件备份不能有效解决当今动不动就达上PB的数据[2]。需要解决的问题有:如何降低构建大型备份系统的硬件成本,提高现有线性备份的磁带库恢复特定数据速度等。采用分布式存储备份数据的优点可以解决该问题,避免传统备份系统的一些缺点[3]。计算机行业最著名的分布式存储系统即HDFS(Hadoop Distributed File System)。HDFS的最大优点是可以轻松处理海量数据。
云备份服务是一个低成本高效率的方案,用来有效地对大型企业的数据备份提供保护。尽管云备份有着许多优势,但潜在的问题一直存在。一个最主要问题是云服务采用大规模的集群节点构成,节点之间大量的数据传输备份等操作严重的消耗了有限的网络带宽,导致网络瓶颈[4]。传统存储也存在HDFS所不具备的优势,最重要的一点即重复数据删除技术,简称重删技术,它是将大量文件分块,删除相同的文件块,只备份非重复数据,达到数据压缩的效果[5]。
如果把重复数据删除的技术应用到HDFS上,将可以最大限度的发挥HDFS存储能力。将更多的数据压缩,充分利用网络带宽传输和存储介质空间。研究方法结合开源架构的HDFS与OPEN DEDUP,设计实现了基于分布式存储的支持数据重删技术的备份系统DDFS(Deduplication Distributed File System),该系统充分利用分布式系统的存储能力,替代原有磁盘与磁带的备份机制,满足用户的数据备份容灾。
传统备份方案主要分为LAN-Base和LAN-Free备份[6]。Lan-Base备份中的生产服务器与备份服务器之间采用以太网连接,其最大的缺点是备份时占用了生产服务器的网络带宽,影响线上实时业务的性能。LAN-Free备份克服LAN-Free的缺点,采用FC光纤线连接网络设备,备份时不占用主业务带宽,能够有效地提高备份效率,但其缺点是硬件设备成本太高。
为了满足原有网络不改变的情况下,大大降低增加存储设备的成本,采用HDFS良好的节点扩展性与重删技术的结合。如图1所示。
图1 DDFS系统结构图Fig.1 DDFS System structure
DDFS系统采由3部分组成:备份客户端,备份服务器,HDFS服务器。备份客户端主要放在需要备份的服务器上,如:生产服务器,备份源端等。其主要作用是接受用户备份请求,收集备份数据,与备份服务器建立通讯,传输备份文件。备份服务器用来处理来自客户端的数据,并对文件重删操作、加密、压缩等操作,最后上传HDFS分布式存储,归档数据。可以认为备份服务器是中转数据流的重要桥梁。HDFS服务器用于存放由备份服务器处理后的数据。由于HDFS有着高容错、极高可扩展性,副本备份策略、高并发处理数据的能力等,极易作为海量数据的存储地。DDFS框架备份/恢复流程如图2所示。
图2 DDFS备份/恢复结构图Fig.2 DDFS Backup/Recovery structure
DDFS采用三层架构的优点:
1)备份服务器采用标准LAN-Free架构,可以无缝地与现有备份环境相容,便于扩展。
2)备份服务器的存储介质采用Raid0的方案,利用Raid0磁盘阵列的高并发读写的优势,提高备份/恢复速度。
3)备份服务器加入数据重删技术,并与压缩结合,大大降低了备份数据的大小,从而减少网络传输的数据量与存储硬盘的成本。
4)数据存储介质端采用HDFS分布式文件系统,利用HDFS自带的文件备份系统,克服了Raid0阵列的不支持数据备份的劣势。
5)DDFS全部采用开源架构,便于爱好者研究与优化。
备份客户端主要功能:接受备份请求、搜集备份数据、数据发送,获取备份信息和恢复数据。核心设计思想是让客户端与服务器进行通讯,传输数据。
备份服务器端主要对数据进行重删,压缩,备份,恢复等操作,是整个备份系统的核心。采用开源存储架构Open Dedup进行修改集成。整个服务器存储介质采用运行硬盘IO极快的Raid0磁盘阵列。如图3所示。
图3 备份服务器模块结构图Fig.3 Backup server module structure
2.2.1 文件索引
采用开源架构Lucene建立文件索引。Lucene是Apache开源机构提供的一个检索工具包,可以建立高效的文件索引,便于以及其快的速度从大量文件中查询信息。在备份系统中高效的索引意味着可以快速查询出是否有备份了相同的文件,减少重删的时间。由于Lecene中存在Field(域)的概念,对于每一个备份文件信息,采用表1中的数据类型存储。
表1 文件索引结构Tab.1 File index structure
块存储位置和快长度:用来将一个文件拆分成的多个文件块并合并成一个大文件,保存块位置和块长度便于文件恢复。由于备份计算Hash值时需要把一个文件分成很多小文件块,这样带来的是备份了大量的小文件块,对于本来就性能差的硬盘IO来说是不可以接受的。因此,将大量小文件合成一个大文件,并记录每个文件的起始位置和长度,便于恢复。既满足降低了文件IO与传输压力,又方便文件恢复时的查找。经在普通个人电脑测试Lucene建立1 500个文件索引仅需要 2 s,查询只有 5 μs。
2.2.2 重删
重删技术现主要用于数据备份领域。简单地说,首先把文件分块,检验每块是否相同。如果数据是第一次备份,文件会被存储在存储介质里[7]。如果不是,重删技术只对前未被存储的文件块进行保存[8]。如果需要备份的文件块与已备份的文件块相同,则不备份此块,而用指针指向重复的数据,记录备份信息,便于恢复。重删主要应用在客户端或者服务器端,各有优缺点。为了备份框架清晰,减少备份环境网络带宽占用,采用客户端重删的方法。
Open Dedup框架支持定长模块切,每个分块长度设定可以从4k到128k。重删效果与分块长度成反比,分块越少,文件去重效果越好。同时,较小的文件切分块会需要更大的内存支持。分块长度可以按照实际应用来调节,对于备份系统中的文件主要类型不同的应用,实际长度不同。备份采用两个方案:一个方案是采用文件系统过滤技术,检查和只备份修在一个周期内改过的文件。另一个是采用重删技术,将一个备份文件切分成大量的小文件块,用来Hash计算每个文件块的唯一指纹,对比并删除重复的文件块来达到重删的目的。
文件块的Hash值计算采用Rabin指纹算法(Rabin fingerprint)进行文件分块,计算每个文件块的Hash。同时与已经存储到备份介质中的数据的Hash值进行比对,如果不相同则把文件块保存,如相同则在原有文件块对应的信息“是否被占用”中累加1,对新文件建立索引,并将文件备份路径的指针指向已备份的文件。如图4所示。
图4 文件重删流程图Fig.4 File deduplication flowchart
2.2.3 HDFS
采用HDFS作为最终数据存储介质,是因为HDFS是采用了廉价的硬件环境,提供了高并发性,高扩展性,高容错性的存储平台。
1)高吞吐量,由于HDFS采用分布式存储,大量的节点组合成一个对外的存储平台,这就保证了其有着高并发读性。由于数据分布在集群中的每个节点,当读取数据时,系统可以并发的从每个节点上分段并行读取文件,大大增加了获取文件的速度。数据备份系统一个重要指标即是容灾速度。如果出现生产事故,需要数据还原,HDFS所提供的几乎无上限吞吐量一定能满足需求。
2)高扩展性,由于采用廉价的硬件作为集群节点,所以当需要扩充存储空间时只需要增加节点电脑数量即可。而且HDFS的提供不用重启服务就可识别新加入的节点,并将其自动扩展到整个集群中。如果备份量下降,还可以将集群中的节点撤出,节约资源。
3)高容错性,由于硬盘存在故障率,虽然不高,但是一旦出了问题,数据无法恢复将造成损失。HDFS有着数据备份副本策略。一旦数据上传到集群上,数据就会自动备份,并把数据分发到不同的物理位置的节点上[9]。其自带的数据一致性校验可以确保文件数据不会损失。
由于备份客户端性能需求较低,所以采用一台笔记本电脑(CPU:I5M 双核 2.67 GHz,内存:2 GB,硬盘 5 400 转/分)。备份服务器采用一台台式电脑 (CPU:I5 3470四核3.2 GHz,内存:4 GB,硬盘7 200转/分X2 Raid0)。HDFS集群采用3台台式电脑(CPU:I5 650双核 3.2GGHz,内存 2 GB,硬盘7 200 转/分)。
测试数据采用ZIP压缩包(1GB,1个文件)和大量文件(1GB,1500个),采用一次全量备份和一次微小改动的增量备份进行测试。HDFS备份策略默认为3。
测试主要针对不同数量文件的备份时间,备份文件重删比进行了着重对比。如表2所示。
表2 测试结果Tab.2 Measurement result
由表2可知,对于已经压缩过的文件,如:ZIP,RAR等压缩包,重删效果不好,几乎无法再次重删。对于含有大量未压缩文件的重删效果很好,可以达到70%以上的重删。对于增量备份可以只备份修改过的文件,大大增加了重删效果。最终放在HDFS上的文件备份,在3个备份策略的情况下,备份2 GB(HDFS中为6 GB)文件、总的备份空间最好情况下可以节省到864 MB,节省率57%。备份服务器采用Raid0架构的双硬盘阵列,在备份速度上可以达到70 MB/s。经测试如果采用单7 200转/分的硬盘,备份速度将下降到37 MB/s。可以证明在服务器端采用更高性能的硬盘IO,将提高整个备份效果。大量小文件在IO上消耗了大量时间,实际备份速度不如单个大文件快。由于采用1 000 M网络带宽,HDFS节点间网络带宽未占满,瓶颈出现在备份服务器端。
综上所述,介绍了基于重复数据删除技术与HDFS存储系统结合的DDFS应用。传统LAN-Free备份硬件投入高,HDFS存储占用空间多。但在云备份时代,DDFS在备份效率和存储占用率这两个硬性指标上有着不错的表现。借助HDFS分布式平台的扩展能力,重删的数据压缩能力,有效控制了数据备份的成本。同时存在像对特定文件重删率低、重删性能不高、文件分块不科学、不支持断点备份、快照等问题,将成为DDFS下一步的研究对象。
[1]郭东,杜勇,胡亮.基于HDFS的云数据备份系统[J].吉林大学学报,2012,50(1):101-105.GUO Dong,DU Yong,HU Liang.HDFS based cloud data backup system[J].Journal of Jilin University,2012,50 (1):101-105.
[2]Rashid F,Miri A,Woungang I.A secure data deduplication framework for cloud environments[C].Department of Computer Science,2012,12:81-87.
[3]SUN Zhe,SHEN Jun,YANG Jian-ming.A novel approach to data deduplication overthe engineering-oriented cloud systems[J].Integrated Computer Aided Engineering,2013,20(1):45-57.
[4]郑胜利.容灾备份系统中备份服务器及系统安全机制的研究与实现[D].武汉:华中科技大学,2011.
[5]Chun-I Fan,HUANG Shi-yuan,Wen-che Hsu.Hybrid Data Deduplication in Cloud Environment[C].Department of Computer Science and Engineering,2012,12:174-177.
[6]王欢,李战怀,张晓.支持连续数据保护的云备份系统架构设计[J].计算机工程与应用,2012,48(1):90-93.WANG Huan,LI Zhan-huai,ZHANG Xiao.Design of cloud backup system architecture supporting continuousdata protection [J].Computer Engineering and Applications,2012,48(1):90-93.
[7]杜勇.基于HDFS的云数据备份系统的设计与实现 [D].吉林:吉林大学,2011.
[8]苏艳森.分布式文件存储平台文件备份与恢复系统设计与实现[D].杭州:浙江大学,2008.
[9]肖笑.基于BCC算法的多机系统PSS参数优化设计[J].陕西电力,2012(12):51-54.XIAO Xiao.Optimal design of multi-machine power system stabilizer parameters based on bacterial colony chemotaxis algorithm[J].Shaanxi Electric Power,2012(12):51-54.