(四川大學 計算機學院, 成都 610064)
摘 要:介紹了可應用于遠程文件備份系統的關鍵技術,包括對于傳統RSYNC算法的改進、采用快照技術、設計有效的文件同步策略和在服務器端進行加密存儲。實驗表明,采用這些技術可以使系統有效降低網絡流量,從而實現高效、快速和安全的遠程文件同步。
關鍵詞:文件備份;RSYNC算法;快照;加密
中圖分類號:TP3093 文獻標志碼:A
文章編號:10013695(2009)01036103
Key technologies applied into remote file backup system
HE Yuping,LI Tao,HU Xiaoqin,PENG Yong,MA Xiaoxu
(School of Computer, Sichuan University, Chengdu 610064, China)
Abstract:This paper presented some key technologies which could be applied into remote file backup system. These technologies included improved traditional RSYNC algorithm,snapshot,effective file backup strategy and backup file with encryption.The experiment results indicate that with these technologies, system can decrease network traffic remarkablely, so as to realize effective,fast and safely remote file backup.
Key words:file backup;RSYNC algorithm;snapshot;encyption
當今信息社會,人們的生活日益依賴于信息技術,如果發生數據丟失與損壞,將會造成難以估量的損失。例如,美國的“9#8226;11”事件發生后,世貿大廈中40%的公司倒閉,究其原因主要是因為電腦中商業數據的丟失。備份是保證數據安全的有效方法[1]。傳統的備份技術[2],如磁帶備份、RAID[3]等,只能在較短的距離內實現備份,并不是真正意義上的異地備份。NAS[4,5]等網絡存儲技術可實現數據的遠距離備份,但需要光纖專線,成本十分昂貴。因此,容災及遠程備份技術正成為目前的研究熱點[6~8]。隨著PC的普及,人們依賴于信息技術,數據安全對于企業以及個人用戶也越來越重要。
1體系結構
系統從物理上分為客戶端和遠程數據中心兩部分??蛻舳送ㄟ^Internet網絡與服務器端相連接,向服務器端備份、同步數據,或者從服務器端恢復數據。其體系結構如圖1所示。
2 技術細節
決定一個遠程文件同步系統優劣的關鍵,在于同步的效率。一個好的同步系統,即使在低帶寬、低網速的環境下,也能夠高效、快速地同步文件。設想,如果用戶已經在服務器端備份了文件F,文件F大小有600 MB?,F在用戶要同步文件F,而此時文件F只發生了一個字節的改變。這種情況下,將文件全部傳輸到服務器端顯然是愚蠢的。而聰明的辦法是,將這改變的一個字節發送到服務器端;再將這一個字節加入到舊文件中,重構生成新文件。
21 RSYNC算法
RSYNC[9,10]算法由A. Tridgell發明,它通過檢測、傳輸新舊文件的差異部分,可以實現快速、高效的文件同步。
算法過程如下:
a)服務器S將文件fold進行分塊,塊長為k Byte,最后一個塊的長度可能小于k。
b)服務器S計算每個數據塊的滾動校驗和與強校驗和,強校驗和采用128 bit MD4哈希算法。
c)服務器S建立哈希表,對于每一對校驗值,以滾動校驗值為關鍵值進行哈希排序,表示為hi〈Ri,Mi〉,并將哈希表傳送給客戶端C。
d)客戶端C從頭搜索文件fnew,產生滾動校驗和與hi〈Ri,Mi〉中的Ri比較,發現與Ri相匹配的數據塊,再計算其MD4哈希值與強校驗和Mi比較。如果與強校驗和相等,說明這兩個數據塊相同;如果不匹配,說明這兩個數據塊不同,則記錄該數據塊的第一個字節,然后向后移動一個偏移量,繼續比較,直到文件末尾。
e)所有比較完成后,服務器S收到客戶端C包含差異內容和hash指示值的數據流,更新fold,生成fnew。
RSYNC算法在新文件上進行滑動查找,移動一個字節或一個塊長。它能實現快速查找,很大部分要歸功于采用了滾動校驗和。
22 對于RSYNC算法的改進
傳統的RSYNC算法每找到新、舊文件的一處差異或相同塊,就會發指令給服務器端。這樣增加了客戶與服務器之間的交互,在網絡狀況不好的情況下,會影響文件同步的效率。于是,如果在計算差異時,客戶端與服務器端的交互盡可能少,那么就可以將網絡帶寬以及網速的影響降至最低。
23 保存差異計算的結果
新、舊文件之間的差異由兩個文件表示,即差異指示文件find和差異數據文件fdata。find由一系列的整數表示,如-1、3、10、-6;fdata則保存了新文件相對于舊文件增加的差異數據。
在find中,-i表明舊文件中第i個數據塊,i則表明fdata中i個字節。在服務器端,根據原文件和find、fdata重構生成新文件。
24 差異重構
在服務器端,現有舊文件fold和兩個差異文件find、fdata,重構生成新文件fnew的過程如下:a)建立臨時文件F′;b)從find中讀取數字n,若已到文件尾,重構結束;c) 如果n>0,從fdata中讀取n個字節到F′中,轉b),否則轉d);d)如果n<0,從fold中讀取第-n個數據塊到F′中,轉b);e)將F′取代fold,重構完成,F′即為新文件。
25 快照
引入快照是為了讓客戶端不用聯系服務器,從本機上就可獲取上次備份的舊文件的信息,以便進行差異計算??墒菃栴}在于舊文件已經通過變化,變為了新文件,那么到哪里去找舊文件呢?答案是到快照中去找。
快照的官方定義是關于指定數據集合的一個完全可用拷貝,該拷貝包括相應數據在某個時間點(拷貝開始的時間點)的映像。通過訪問快照,就可以訪問舊文件。本文采用Windows的快照技術:VSS(volume shadow copy,卷影拷貝服務)。VSS屬于指針型快照。它由requestor、write和provider三部分組成,主要由驅動程序volsnap.sys實現,被加到卷管理驅動與文件系統驅動之間,同時集成了COM技術。因此,它不再是單單在卷集的block進行處理,而是與各種系統應用相關聯,從而使得在不關機,也不停止應用的情況下作快照。VSS被廣泛地應用于Windows的備份處理中。
26 同步策略
上面介紹的RSYNC算法和快照,解決了單個文件的差異同步?,F在,需要定義有效的同步策略,解決文件集合之間的差異同步。先進行定義:
文件: f(f path,f size,f time),表示文件(路徑、大小、最后修改時間);
文件集合:F={f1, f2,…, fi,…, fn};
文件之間差異:Δf=fi-fj,表示兩個文件之間的差異;
文件差異集合:ΔF=F2-F1,表示在t1、t2時刻文件集合F1、F2之間的差異。
設文件集合F2已經在時刻t1備份,現在需要在t2時刻對于文件集合F2進行文件同步,同步策略過程如下:
a)對于fi∈F2,fi∈F1,有f pathi=f pathj,表明fi在時刻點t1已備份,轉b);否則表明為新增文件,將fi加入文件差異集ΔF。
b)若f sizei=f sizej且f timei=f timej,則表明兩文件相同,無須備份,轉a),繼續處理文件集合F2的其他文件;否則轉c)。
c)利用差異算法,計算文件之間的差異,生成差異文件,加入到文件差異集ΔF中。
d)將文件差異集合ΔF由客戶端傳輸到服務器端。
生成ΔF的流程圖如圖3所示。
e)在服務器端根據原文件和ΔF進行差異重構,生產新文件。
27 加密存儲
為了保護用戶存儲文件的安全,應該在存儲端對文件進行加密處理。對于單個文件進行加密,本身不是問題,無非是需要多耗用一些時間。問題出在差異重構。由前所述,差異重構是由舊文件和兩個差異文件,重構生成新文件。與前面的情況不同,這里的舊文件是加密文件,由于加密算法的“雪崩效應”,會使新、舊文件本來一個字節的差異會變得相當大。因此,對于加密文件的差異重構,需要采取特殊的方法。
如圖4所示,共有兩個操作線程,即生產者線程和消費者線程;兩個緩沖區,即緩沖區1是一個循環隊列,緩沖區2是一普通隊列。
設有加密的舊文件fold和兩個差異文件find、fdata,重構生成加密的新文件fnew過程如下:
主線程
a)建立臨時文件F′,將緩沖區1分為若干塊。
生產者線程
b)生產者線程從find中讀取數字n,若已到文件尾,線程結束,通知消費者線程。
c)如果n>0,生產者線程從fdata中讀取n個字節到緩沖區1;否則,轉d)。若緩沖區1滿,等待;不滿,寫入。填滿1個塊后,將此塊標記為已寫。寫完,轉b)。
d)如果n<0,生產者線程從fold中讀取第-n個數據塊,解密后寫到緩沖區1。若緩沖區1滿,等待;不滿,寫入。填滿1個塊后,將此塊標記為已寫。寫完,轉b)。
消費者線程
e)檢查緩沖區1中當前塊,若標記為已寫,則將此塊加密,并寫入緩沖區2中,若緩沖區2滿,則將數據寫入F′中。將當前塊標記為未寫,移動至下一塊。
f)收到生產者線程結束的通知后,將緩沖區1中所有未處理的已寫塊進行處理,處理完畢,線程結束。
主線程
g)將F′取代fold,重構完成。F′即為加密后的新文件。
這里采用生產者、消費者模型,是為了同時處理解密和加密,并且與文件的差異重構相結合,提高效率。
3 實驗
31 差異重構實驗
測試環境為CPU:Intel(R) Pentium(R) D CPU 2.80 GHz、內存512 MB、硬盤ST380815AS、操作系統為Fedora 8x86_642623內核。
測試方法:對于同一文件,比較帶加解密與不帶加解密的差異重構所耗用時間。加、解密算法采用OPENSSL提供的AES算法。
圖5更加直觀地比較了兩種差異重構的時間。帶加解密的差異重構,需要進行加解密,耗用一定時間,因此總時間要比不帶加解密的差異重構長。隨著文件大小的增大,兩者所用時間更加接近。這表明,采用生產者、消費者模型并發處理加解密與文件的差異重構,能夠比較有效地提高效率。
32 文件同步實驗
測試環境:客戶端選擇操作系統為MS Windows 2003,文件系統為NTFS,快照的實現為VSS,SDK版本為7.2,RSYNC版本2.6.9,協議版本29。網絡環境為全雙工100 Mbps。選用網絡流量測試工具NetMeter,版本為1.1.3。文件變化產生方法為:選擇一個文件,隨機修改其中1 Byte。如表 2所示為同步不同大小文件時,采用本文所介紹技術的系統與RSYNC所產生的網絡流量。通過圖 6能夠更加直觀地反映兩者的對比效果。因此,本備份系統相對于RSYNC,能夠顯著地降低網絡流量。
表2 文件同步網絡流量表
4 結束語
遠程文件備份在信息社會中,對于個人和企業用戶的重要性越來越顯著。本文介紹了可應用于遠程文件備份系統的幾個關鍵技術,無論是改進的RSYNC算法、快照技術以及備份策略的制定,都是基于這樣的考慮,即使在低帶寬、低網速的情況下,文件同步仍然能夠快速完成。文件的加密存儲是為了保證文件的數據安全。實驗表明,采用上述技術的備份系統,可以有效降低網絡流量,實現快速的遠程文件同步。
參考文獻:
[1]
李濤.網絡安全概論[M] 北京:電子工業出版社,2004.
[2]CUNHUA Q,SYOUJI N,TOSHIO N.Optimal backup policies for a database system with incremental backup[J].Fundamental Electronic Science,2002,85(4):19.
[3]STEFANO T,SOURCE C W.The distributed data center:frontend solutions[J].IT Professional,2004,6(3):2632.
[4]SOURCE A.SANs sharing storage to infinity and beyond[J].Electronic Design,2004, 52(9): 5059.
[5]HAYES P E,HAMMONS A.Disaster recovery project management[C]//Proc of Conference Record IAS Annual Meeting (IEEE Industry Applications Society).San Antonio,TX:[s.n.],2000:5563.
[6]LO Chichun.A novel approach of backup path reservation for sruvivable highspeed networks[J].IEEE Communications Magazine,2003,41(3):146152.
[7]SUZUKI J,SUDA T.Middleware support for disaster response infrastructure[C]//Proc of the 1st IEEE Workshop on Disaster Recovery Networks.New York:[s.n.],2002:3842.
[8]TOIGO J W.Disaster recovery planningstrategies for protecting critical information assets[M].New Jersey:Prentice Hall PTR,2000.
[9]TRIDGELL A.Efficient algorithms for sorting and synchronization[D].Canberra:Australian National University,1999.
[10]TRIDGELL A,MACKERRAS P.The RSYNC algorithm[R].Canberra:Australian National University,1996.