王建輝,石宇良
(北京工業(yè)大學(xué) 軟件學(xué)院,北京 100022)
隨著現(xiàn)代化的飛速發(fā)展,傳統(tǒng)行業(yè)逐漸進(jìn)入自動(dòng)化辦公時(shí)代。人們工作和生活中需要的信息量猛增[1],現(xiàn)有的硬件備份不能有效解決當(dāng)今動(dòng)不動(dòng)就達(dá)上PB的數(shù)據(jù)[2]。需要解決的問(wèn)題有:如何降低構(gòu)建大型備份系統(tǒng)的硬件成本,提高現(xiàn)有線性備份的磁帶庫(kù)恢復(fù)特定數(shù)據(jù)速度等。采用分布式存儲(chǔ)備份數(shù)據(jù)的優(yōu)點(diǎn)可以解決該問(wèn)題,避免傳統(tǒng)備份系統(tǒng)的一些缺點(diǎn)[3]。計(jì)算機(jī)行業(yè)最著名的分布式存儲(chǔ)系統(tǒng)即HDFS(Hadoop Distributed File System)。HDFS的最大優(yōu)點(diǎn)是可以輕松處理海量數(shù)據(jù)。
云備份服務(wù)是一個(gè)低成本高效率的方案,用來(lái)有效地對(duì)大型企業(yè)的數(shù)據(jù)備份提供保護(hù)。盡管云備份有著許多優(yōu)勢(shì),但潛在的問(wèn)題一直存在。一個(gè)最主要問(wèn)題是云服務(wù)采用大規(guī)模的集群節(jié)點(diǎn)構(gòu)成,節(jié)點(diǎn)之間大量的數(shù)據(jù)傳輸備份等操作嚴(yán)重的消耗了有限的網(wǎng)絡(luò)帶寬,導(dǎo)致網(wǎng)絡(luò)瓶頸[4]。傳統(tǒng)存儲(chǔ)也存在HDFS所不具備的優(yōu)勢(shì),最重要的一點(diǎn)即重復(fù)數(shù)據(jù)刪除技術(shù),簡(jiǎn)稱重刪技術(shù),它是將大量文件分塊,刪除相同的文件塊,只備份非重復(fù)數(shù)據(jù),達(dá)到數(shù)據(jù)壓縮的效果[5]。
如果把重復(fù)數(shù)據(jù)刪除的技術(shù)應(yīng)用到HDFS上,將可以最大限度的發(fā)揮HDFS存儲(chǔ)能力。將更多的數(shù)據(jù)壓縮,充分利用網(wǎng)絡(luò)帶寬傳輸和存儲(chǔ)介質(zhì)空間。研究方法結(jié)合開源架構(gòu)的HDFS與OPEN DEDUP,設(shè)計(jì)實(shí)現(xiàn)了基于分布式存儲(chǔ)的支持?jǐn)?shù)據(jù)重刪技術(shù)的備份系統(tǒng)DDFS(Deduplication Distributed File System),該系統(tǒng)充分利用分布式系統(tǒng)的存儲(chǔ)能力,替代原有磁盤與磁帶的備份機(jī)制,滿足用戶的數(shù)據(jù)備份容災(zāi)。
傳統(tǒng)備份方案主要分為L(zhǎng)AN-Base和LAN-Free備份[6]。Lan-Base備份中的生產(chǎn)服務(wù)器與備份服務(wù)器之間采用以太網(wǎng)連接,其最大的缺點(diǎn)是備份時(shí)占用了生產(chǎn)服務(wù)器的網(wǎng)絡(luò)帶寬,影響線上實(shí)時(shí)業(yè)務(wù)的性能。LAN-Free備份克服LAN-Free的缺點(diǎn),采用FC光纖線連接網(wǎng)絡(luò)設(shè)備,備份時(shí)不占用主業(yè)務(wù)帶寬,能夠有效地提高備份效率,但其缺點(diǎn)是硬件設(shè)備成本太高。
為了滿足原有網(wǎng)絡(luò)不改變的情況下,大大降低增加存儲(chǔ)設(shè)備的成本,采用HDFS良好的節(jié)點(diǎn)擴(kuò)展性與重刪技術(shù)的結(jié)合。如圖1所示。
圖1 DDFS系統(tǒng)結(jié)構(gòu)圖Fig.1 DDFS System structure
DDFS系統(tǒng)采由3部分組成:備份客戶端,備份服務(wù)器,HDFS服務(wù)器。備份客戶端主要放在需要備份的服務(wù)器上,如:生產(chǎn)服務(wù)器,備份源端等。其主要作用是接受用戶備份請(qǐng)求,收集備份數(shù)據(jù),與備份服務(wù)器建立通訊,傳輸備份文件。備份服務(wù)器用來(lái)處理來(lái)自客戶端的數(shù)據(jù),并對(duì)文件重刪操作、加密、壓縮等操作,最后上傳HDFS分布式存儲(chǔ),歸檔數(shù)據(jù)。可以認(rèn)為備份服務(wù)器是中轉(zhuǎn)數(shù)據(jù)流的重要橋梁。HDFS服務(wù)器用于存放由備份服務(wù)器處理后的數(shù)據(jù)。由于HDFS有著高容錯(cuò)、極高可擴(kuò)展性,副本備份策略、高并發(fā)處理數(shù)據(jù)的能力等,極易作為海量數(shù)據(jù)的存儲(chǔ)地。DDFS框架備份/恢復(fù)流程如圖2所示。
圖2 DDFS備份/恢復(fù)結(jié)構(gòu)圖Fig.2 DDFS Backup/Recovery structure
DDFS采用三層架構(gòu)的優(yōu)點(diǎn):
1)備份服務(wù)器采用標(biāo)準(zhǔn)LAN-Free架構(gòu),可以無(wú)縫地與現(xiàn)有備份環(huán)境相容,便于擴(kuò)展。
2)備份服務(wù)器的存儲(chǔ)介質(zhì)采用Raid0的方案,利用Raid0磁盤陣列的高并發(fā)讀寫的優(yōu)勢(shì),提高備份/恢復(fù)速度。
3)備份服務(wù)器加入數(shù)據(jù)重刪技術(shù),并與壓縮結(jié)合,大大降低了備份數(shù)據(jù)的大小,從而減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量與存儲(chǔ)硬盤的成本。
4)數(shù)據(jù)存儲(chǔ)介質(zhì)端采用HDFS分布式文件系統(tǒng),利用HDFS自帶的文件備份系統(tǒng),克服了Raid0陣列的不支持?jǐn)?shù)據(jù)備份的劣勢(shì)。
5)DDFS全部采用開源架構(gòu),便于愛好者研究與優(yōu)化。
備份客戶端主要功能:接受備份請(qǐng)求、搜集備份數(shù)據(jù)、數(shù)據(jù)發(fā)送,獲取備份信息和恢復(fù)數(shù)據(jù)。核心設(shè)計(jì)思想是讓客戶端與服務(wù)器進(jìn)行通訊,傳輸數(shù)據(jù)。
備份服務(wù)器端主要對(duì)數(shù)據(jù)進(jìn)行重刪,壓縮,備份,恢復(fù)等操作,是整個(gè)備份系統(tǒng)的核心。采用開源存儲(chǔ)架構(gòu)Open Dedup進(jìn)行修改集成。整個(gè)服務(wù)器存儲(chǔ)介質(zhì)采用運(yùn)行硬盤IO極快的Raid0磁盤陣列。如圖3所示。
圖3 備份服務(wù)器模塊結(jié)構(gòu)圖Fig.3 Backup server module structure
2.2.1 文件索引
采用開源架構(gòu)Lucene建立文件索引。Lucene是Apache開源機(jī)構(gòu)提供的一個(gè)檢索工具包,可以建立高效的文件索引,便于以及其快的速度從大量文件中查詢信息。在備份系統(tǒng)中高效的索引意味著可以快速查詢出是否有備份了相同的文件,減少重刪的時(shí)間。由于Lecene中存在Field(域)的概念,對(duì)于每一個(gè)備份文件信息,采用表1中的數(shù)據(jù)類型存儲(chǔ)。
表1 文件索引結(jié)構(gòu)Tab.1 File index structure
塊存儲(chǔ)位置和快長(zhǎng)度:用來(lái)將一個(gè)文件拆分成的多個(gè)文件塊并合并成一個(gè)大文件,保存塊位置和塊長(zhǎng)度便于文件恢復(fù)。由于備份計(jì)算Hash值時(shí)需要把一個(gè)文件分成很多小文件塊,這樣帶來(lái)的是備份了大量的小文件塊,對(duì)于本來(lái)就性能差的硬盤IO來(lái)說(shuō)是不可以接受的。因此,將大量小文件合成一個(gè)大文件,并記錄每個(gè)文件的起始位置和長(zhǎng)度,便于恢復(fù)。既滿足降低了文件IO與傳輸壓力,又方便文件恢復(fù)時(shí)的查找。經(jīng)在普通個(gè)人電腦測(cè)試Lucene建立1 500個(gè)文件索引僅需要 2 s,查詢只有 5 μs。
2.2.2 重刪
重刪技術(shù)現(xiàn)主要用于數(shù)據(jù)備份領(lǐng)域。簡(jiǎn)單地說(shuō),首先把文件分塊,檢驗(yàn)每塊是否相同。如果數(shù)據(jù)是第一次備份,文件會(huì)被存儲(chǔ)在存儲(chǔ)介質(zhì)里[7]。如果不是,重刪技術(shù)只對(duì)前未被存儲(chǔ)的文件塊進(jìn)行保存[8]。如果需要備份的文件塊與已備份的文件塊相同,則不備份此塊,而用指針指向重復(fù)的數(shù)據(jù),記錄備份信息,便于恢復(fù)。重刪主要應(yīng)用在客戶端或者服務(wù)器端,各有優(yōu)缺點(diǎn)。為了備份框架清晰,減少備份環(huán)境網(wǎng)絡(luò)帶寬占用,采用客戶端重刪的方法。
Open Dedup框架支持定長(zhǎng)模塊切,每個(gè)分塊長(zhǎng)度設(shè)定可以從4k到128k。重刪效果與分塊長(zhǎng)度成反比,分塊越少,文件去重效果越好。同時(shí),較小的文件切分塊會(huì)需要更大的內(nèi)存支持。分塊長(zhǎng)度可以按照實(shí)際應(yīng)用來(lái)調(diào)節(jié),對(duì)于備份系統(tǒng)中的文件主要類型不同的應(yīng)用,實(shí)際長(zhǎng)度不同。備份采用兩個(gè)方案:一個(gè)方案是采用文件系統(tǒng)過(guò)濾技術(shù),檢查和只備份修在一個(gè)周期內(nèi)改過(guò)的文件。另一個(gè)是采用重刪技術(shù),將一個(gè)備份文件切分成大量的小文件塊,用來(lái)Hash計(jì)算每個(gè)文件塊的唯一指紋,對(duì)比并刪除重復(fù)的文件塊來(lái)達(dá)到重刪的目的。
文件塊的Hash值計(jì)算采用Rabin指紋算法(Rabin fingerprint)進(jìn)行文件分塊,計(jì)算每個(gè)文件塊的Hash。同時(shí)與已經(jīng)存儲(chǔ)到備份介質(zhì)中的數(shù)據(jù)的Hash值進(jìn)行比對(duì),如果不相同則把文件塊保存,如相同則在原有文件塊對(duì)應(yīng)的信息“是否被占用”中累加1,對(duì)新文件建立索引,并將文件備份路徑的指針指向已備份的文件。如圖4所示。
圖4 文件重刪流程圖Fig.4 File deduplication flowchart
2.2.3 HDFS
采用HDFS作為最終數(shù)據(jù)存儲(chǔ)介質(zhì),是因?yàn)镠DFS是采用了廉價(jià)的硬件環(huán)境,提供了高并發(fā)性,高擴(kuò)展性,高容錯(cuò)性的存儲(chǔ)平臺(tái)。
1)高吞吐量,由于HDFS采用分布式存儲(chǔ),大量的節(jié)點(diǎn)組合成一個(gè)對(duì)外的存儲(chǔ)平臺(tái),這就保證了其有著高并發(fā)讀性。由于數(shù)據(jù)分布在集群中的每個(gè)節(jié)點(diǎn),當(dāng)讀取數(shù)據(jù)時(shí),系統(tǒng)可以并發(fā)的從每個(gè)節(jié)點(diǎn)上分段并行讀取文件,大大增加了獲取文件的速度。數(shù)據(jù)備份系統(tǒng)一個(gè)重要指標(biāo)即是容災(zāi)速度。如果出現(xiàn)生產(chǎn)事故,需要數(shù)據(jù)還原,HDFS所提供的幾乎無(wú)上限吞吐量一定能滿足需求。
2)高擴(kuò)展性,由于采用廉價(jià)的硬件作為集群節(jié)點(diǎn),所以當(dāng)需要擴(kuò)充存儲(chǔ)空間時(shí)只需要增加節(jié)點(diǎn)電腦數(shù)量即可。而且HDFS的提供不用重啟服務(wù)就可識(shí)別新加入的節(jié)點(diǎn),并將其自動(dòng)擴(kuò)展到整個(gè)集群中。如果備份量下降,還可以將集群中的節(jié)點(diǎn)撤出,節(jié)約資源。
3)高容錯(cuò)性,由于硬盤存在故障率,雖然不高,但是一旦出了問(wèn)題,數(shù)據(jù)無(wú)法恢復(fù)將造成損失。HDFS有著數(shù)據(jù)備份副本策略。一旦數(shù)據(jù)上傳到集群上,數(shù)據(jù)就會(huì)自動(dòng)備份,并把數(shù)據(jù)分發(fā)到不同的物理位置的節(jié)點(diǎn)上[9]。其自帶的數(shù)據(jù)一致性校驗(yàn)可以確保文件數(shù)據(jù)不會(huì)損失。
由于備份客戶端性能需求較低,所以采用一臺(tái)筆記本電腦(CPU:I5M 雙核 2.67 GHz,內(nèi)存:2 GB,硬盤 5 400 轉(zhuǎn)/分)。備份服務(wù)器采用一臺(tái)臺(tái)式電腦 (CPU:I5 3470四核3.2 GHz,內(nèi)存:4 GB,硬盤7 200轉(zhuǎn)/分X2 Raid0)。HDFS集群采用3臺(tái)臺(tái)式電腦(CPU:I5 650雙核 3.2GGHz,內(nèi)存 2 GB,硬盤7 200 轉(zhuǎn)/分)。
測(cè)試數(shù)據(jù)采用ZIP壓縮包(1GB,1個(gè)文件)和大量文件(1GB,1500個(gè)),采用一次全量備份和一次微小改動(dòng)的增量備份進(jìn)行測(cè)試。HDFS備份策略默認(rèn)為3。
測(cè)試主要針對(duì)不同數(shù)量文件的備份時(shí)間,備份文件重刪比進(jìn)行了著重對(duì)比。如表2所示。
表2 測(cè)試結(jié)果Tab.2 Measurement result
由表2可知,對(duì)于已經(jīng)壓縮過(guò)的文件,如:ZIP,RAR等壓縮包,重刪效果不好,幾乎無(wú)法再次重刪。對(duì)于含有大量未壓縮文件的重刪效果很好,可以達(dá)到70%以上的重刪。對(duì)于增量備份可以只備份修改過(guò)的文件,大大增加了重刪效果。最終放在HDFS上的文件備份,在3個(gè)備份策略的情況下,備份2 GB(HDFS中為6 GB)文件、總的備份空間最好情況下可以節(jié)省到864 MB,節(jié)省率57%。備份服務(wù)器采用Raid0架構(gòu)的雙硬盤陣列,在備份速度上可以達(dá)到70 MB/s。經(jīng)測(cè)試如果采用單7 200轉(zhuǎn)/分的硬盤,備份速度將下降到37 MB/s??梢宰C明在服務(wù)器端采用更高性能的硬盤IO,將提高整個(gè)備份效果。大量小文件在IO上消耗了大量時(shí)間,實(shí)際備份速度不如單個(gè)大文件快。由于采用1 000 M網(wǎng)絡(luò)帶寬,HDFS節(jié)點(diǎn)間網(wǎng)絡(luò)帶寬未占滿,瓶頸出現(xiàn)在備份服務(wù)器端。
綜上所述,介紹了基于重復(fù)數(shù)據(jù)刪除技術(shù)與HDFS存儲(chǔ)系統(tǒng)結(jié)合的DDFS應(yīng)用。傳統(tǒng)LAN-Free備份硬件投入高,HDFS存儲(chǔ)占用空間多。但在云備份時(shí)代,DDFS在備份效率和存儲(chǔ)占用率這兩個(gè)硬性指標(biāo)上有著不錯(cuò)的表現(xiàn)。借助HDFS分布式平臺(tái)的擴(kuò)展能力,重刪的數(shù)據(jù)壓縮能力,有效控制了數(shù)據(jù)備份的成本。同時(shí)存在像對(duì)特定文件重刪率低、重刪性能不高、文件分塊不科學(xué)、不支持?jǐn)帱c(diǎn)備份、快照等問(wèn)題,將成為DDFS下一步的研究對(duì)象。
[1]郭東,杜勇,胡亮.基于HDFS的云數(shù)據(jù)備份系統(tǒng)[J].吉林大學(xué)學(xué)報(bào),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]鄭勝利.容災(zāi)備份系統(tǒng)中備份服務(wù)器及系統(tǒng)安全機(jī)制的研究與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),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]王歡,李戰(zhàn)懷,張曉.支持連續(xù)數(shù)據(jù)保護(hù)的云備份系統(tǒng)架構(gòu)設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,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的云數(shù)據(jù)備份系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [D].吉林:吉林大學(xué),2011.
[8]蘇艷森.分布式文件存儲(chǔ)平臺(tái)文件備份與恢復(fù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:浙江大學(xué),2008.
[9]肖笑.基于BCC算法的多機(jī)系統(tǒng)PSS參數(shù)優(yōu)化設(shè)計(jì)[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.