(四川大學 計算機學院, 成都 610065)
摘 要:
為了消除原始數(shù)據(jù)持續(xù)變化對數(shù)據(jù)一致性檢測帶來的影響,設(shè)計并實現(xiàn)了一種基于Windows操作系統(tǒng)的網(wǎng)絡(luò)備份系統(tǒng)數(shù)據(jù)一致性檢測方法。本方法在一致性檢測過程中使用實時的Windows卷影拷貝數(shù)據(jù)來替代原始的動態(tài)變化數(shù)據(jù)執(zhí)行與備份數(shù)據(jù)的一致性檢測。通過實驗結(jié)果證明,本方法的檢測結(jié)果和使用原始數(shù)據(jù)與備份數(shù)據(jù)進行檢測的結(jié)果一致。
關(guān)鍵詞:一致性檢測; 數(shù)據(jù)備份; 卷影拷貝
中圖分類號:TP393 文獻標志碼: A
文章編號:10013695(2008)12370002
Data consistency checking method in network backup system
YI Guwu, LIU Xiaojie, LI Tao, LU Zhengtian, GE Liang, ZHOU Yu
(School of Computer, Sichuan University, Chengdu, 610065, China)
Abstract:In order to eliminate the affection that the everchanging original data bring to MS the data consistency checking in the network backup system, this paper proposed a data consistency checking method based on MSWindows OS. This method used a realtime volume shadow copy to check data consistency with the backup data instead of the everchanging original data. The experiment shows that the result is the same as using original volume data.
Key words:data consistency checking; data backup; volume shadow copy
在網(wǎng)絡(luò)數(shù)據(jù)備份中,用戶關(guān)注某一時刻的備份數(shù)據(jù)是否與對應時刻的原始數(shù)據(jù)一致。如果在同一時刻兩邊數(shù)據(jù)不一致,就意味著備份數(shù)據(jù)不可用于恢復,那么整個備份變得毫無意義。因此需要對原始數(shù)據(jù)和備份數(shù)據(jù)作一致性檢測。但在網(wǎng)絡(luò)數(shù)據(jù)備份中因為網(wǎng)絡(luò)傳輸存在時間延遲,即在Ti時刻原始數(shù)據(jù)發(fā)生的變化將在T′i=Ti+ΔT(ΔT>0)時刻反映到備份數(shù)據(jù)中。從理論上講在同一時刻兩地的數(shù)據(jù)原本就是不一致的,這導致在實踐中數(shù)據(jù)一致性檢測變得相當困難。為了驗證兩邊數(shù)據(jù)是否一致,目前常用的數(shù)據(jù)一致性檢測方法均要求保證在檢測時原始數(shù)據(jù)和備份數(shù)據(jù)不發(fā)生變化且在備份網(wǎng)絡(luò)中沒有數(shù)據(jù)的傳輸。在實際應用中,這就要求在一致性檢測開始前和檢測進行過程中不僅要停止所有能對數(shù)據(jù)發(fā)生改變的業(yè)務,而且還要停止對數(shù)據(jù)的備份。隨著檢測數(shù)據(jù)量的增大,停止業(yè)務和備份時間會隨之增長,這對數(shù)據(jù)實時性和安全性要求高的企業(yè)是不能忍受的。為此,本文設(shè)計了一種針對動態(tài)變化數(shù)據(jù)的一致性檢測方法。
1 網(wǎng)絡(luò)備份系統(tǒng)結(jié)構(gòu)
網(wǎng)絡(luò)備份系統(tǒng)在物理上分為本地數(shù)據(jù)生產(chǎn)中心和遠程數(shù)據(jù)備份中心兩個部分,如圖1所示。本地數(shù)據(jù)生產(chǎn)中心是數(shù)據(jù)備份任務的發(fā)起端;遠程數(shù)據(jù)備份中心是備份數(shù)據(jù)的接收端。備份任務就是將備份任務發(fā)起端指定的數(shù)據(jù)通過Internet傳輸?shù)浇邮斩舜鎯Α*?/p>
如圖2所示,本系統(tǒng)從功能上被劃分為四個功能模塊:
a)數(shù)據(jù)生產(chǎn)中心監(jiān)控模塊(數(shù)據(jù)監(jiān)控模塊)。它負責截獲監(jiān)控卷的寫操作I/O請求包(IRP),提取出IRP中的有效數(shù)據(jù),將有效數(shù)據(jù)按照固定格式封裝寫入海量緩存中。
b)海量緩存模塊。它負責分析寫入海量緩存中的數(shù)據(jù),按照遠程備份中心對數(shù)據(jù)的要求再次封裝后發(fā)送給數(shù)據(jù)備份中心。
c)遠程備份中心數(shù)據(jù)接收模塊(接收模塊)。它負責接收來自數(shù)據(jù)生產(chǎn)中心的數(shù)據(jù),驗證數(shù)據(jù)在傳輸過程中是否出現(xiàn)差錯,然后將其存儲供以后使用。
d)一致性檢測模塊。它用于驗證備份中心的數(shù)據(jù)是否與數(shù)據(jù)生產(chǎn)中心的數(shù)據(jù)一致。
在備份任務啟動前先將監(jiān)控卷上的已有數(shù)據(jù)備份到數(shù)據(jù)備份中心,使得在監(jiān)控開始時備份中心數(shù)據(jù)與監(jiān)控卷數(shù)據(jù)一致。
2 快照原理
快照是指將一個具體數(shù)據(jù)對象在一個時刻上的全部信息保留一個副本,使得在快照后對數(shù)據(jù)對象的修改不會影響到副本數(shù)據(jù)。在目前快照應用技術(shù)中,主要的實現(xiàn)方式大致分為三種,即中斷鏡像、按需復制和虛擬映像。其中,中斷鏡像和按需復制獲得快照是原數(shù)據(jù)的物理拷貝,故其需要與原數(shù)據(jù)大小相同的空間來存放原數(shù)據(jù)的所有信息;而虛擬映像只保存了在快照建立后原數(shù)據(jù)中發(fā)生改變的部分,使得虛擬映像占用的存儲空間一般只有原數(shù)據(jù)空間的20%~30%,但其快照依賴于原始數(shù)據(jù)而存在。
Windows卷影拷貝服務(VSS)創(chuàng)建的快照是虛擬映像的一種。其快照生成采用寫時拷貝(copyonwrite)技術(shù),即在原始數(shù)據(jù)被修改時先將修改前的數(shù)據(jù)拷貝出來存儲,再將修改后的數(shù)據(jù)寫入。
3 動態(tài)數(shù)據(jù)一致性檢測方法
對數(shù)據(jù)一致性檢測定義如下:設(shè)原始數(shù)據(jù)集P={a,b,c},備份數(shù)據(jù)集P′={a′,b′,c 3. 1 一致性檢測算法描述
設(shè)當前監(jiān)控卷數(shù)據(jù)集D,備份中心對應監(jiān)控卷的備份數(shù)據(jù)集D′,則備份數(shù)據(jù)集
3. 2 動態(tài)數(shù)據(jù)一致性檢測難點及解決方法
由一致性檢測算法描述可知,在網(wǎng)絡(luò)備份系統(tǒng)中,面對動態(tài)數(shù)據(jù),需要重點解決的問題是:a)怎樣找到ΔT以確定原始數(shù)據(jù)發(fā)生變化后何時備份數(shù)據(jù)發(fā)生的相應改動;b)怎樣使得在一致性檢測過程中原始數(shù)據(jù)和備份數(shù)據(jù)不發(fā)生變化。
問題a)使用海量緩存來解決。利用海量緩存模塊,可以容易控制發(fā)向備份中心的數(shù)據(jù)。結(jié)合備份中心在收到數(shù)據(jù)后給發(fā)送方的回復,可以確認原始數(shù)據(jù)的改變已經(jīng)反映在了備份數(shù)據(jù)集中。通過對接收方回復的確認,間接創(chuàng)建了一個可控的備份數(shù)據(jù)集。原始數(shù)據(jù)集的每次數(shù)據(jù)改變通過接收方的回復確認被用戶知道。借用這個方法,雖然沒有明確測出ΔT時間,但可以完全控制原始數(shù)據(jù)的改變何時反映在備份數(shù)據(jù)中。
卷影拷貝解決了問題b)。利用卷影拷貝,可以在原始數(shù)據(jù)變化時創(chuàng)建某一時刻的快照。這個快照記錄下了某一時刻卷的全部信息,且快照時刻后原始數(shù)據(jù)的變化不會影響快照的數(shù)據(jù)。借助于快照,獲得了原始數(shù)據(jù)集某一時刻的副本;再利用海量緩存將快照前的備份數(shù)據(jù)發(fā)送給備份中心,獲得了對應快照時間的備份數(shù)據(jù)集。使用這兩個數(shù)據(jù)集作一致性檢測,其結(jié)果就反映了快照時刻兩地數(shù)據(jù)是否一致。
3. 3 動態(tài)數(shù)據(jù)一致性檢測的實現(xiàn)
整個動態(tài)數(shù)據(jù)一致性檢測由卷影拷貝服務、海量緩存模塊和一致性檢測模塊協(xié)同完成,其流程如下:
a)啟動一致性檢測模塊。
b)要求海量緩存模塊停止數(shù)據(jù)發(fā)送。
c) 一致性檢測模塊確認數(shù)據(jù)已經(jīng)停止發(fā)送后,通知卷影拷貝服務創(chuàng)建快照。在快照生成時必須要確認數(shù)據(jù)停止發(fā)送,這樣保證快照后產(chǎn)生的備份數(shù)據(jù)不會被海量緩存發(fā)送到備份中心。
d)海量緩存獲取快照生成時間,根據(jù)此時間發(fā)送海量緩存中快照前備份數(shù)據(jù)。
e)快照前備份數(shù)據(jù)發(fā)送完成后,海量緩存停止發(fā)送備份數(shù)據(jù),然后通知一致性檢測模塊進行一致性檢測。
f)一致性檢測模塊執(zhí)行兩地數(shù)據(jù)一致性檢測。
g)一致性檢測模塊返回檢測結(jié)果;通知卷影拷貝服務銷毀快照;通知海量緩存模塊繼續(xù)發(fā)送數(shù)據(jù)。一致性檢測完成。
動態(tài)數(shù)據(jù)一致性檢測序列如圖3所示。在過程f)中,根據(jù)一致性檢測算法描述,結(jié)合實際應用,作如下實現(xiàn):
a)將原始數(shù)據(jù)集和備份數(shù)據(jù)集依照數(shù)據(jù)在卷上的偏移從小到大排列成有序數(shù)列。
b)將兩個集合的數(shù)據(jù)按照在卷上的偏移一一對應從而構(gòu)成雙射。如果出現(xiàn)一個集合在另一個集合中找不到對應偏移的數(shù)據(jù),則在相應集合中以0與其對應。
c)將每個集合的有序數(shù)列以512 Byte劃分,構(gòu)成與原始數(shù)據(jù)集和備份數(shù)據(jù)集的子集D1,D2,…,Dn和D1′,D2′,…,Dn′。
d)將原始數(shù)據(jù)集和備份數(shù)據(jù)集依照數(shù)據(jù)在卷上的偏移從小到大排列成有序數(shù)列。
e)將兩個集合的數(shù)據(jù)按照在卷上的偏移一一對應從而構(gòu)成雙射。如果出現(xiàn)一個集合在另一個集合中找不到對應偏移的數(shù)據(jù),則在相應集合中以0與其對應。
f)將每個集合的有序數(shù)列以512 Byte劃分,構(gòu)成與原始數(shù)據(jù)集和備份數(shù)據(jù)集的子集D1,D2,…,Dn和D′1,D′2,…,D′n。
g)函數(shù)f(x)取為計算每個集合的MD5摘要值。
h)比較對應摘要值獲得一致性檢測結(jié)果。
i)為了減少比較次數(shù),對算法作了一點優(yōu)化。不按照算法直接比較每個子集的摘要值,而是將計算所得的摘要值構(gòu)成兩個摘要值集合;再將這兩個集合作一致性檢測,從而提高性能。
4 實驗結(jié)果與結(jié)論
筆者搭建了一個網(wǎng)絡(luò)備份環(huán)境來測試動態(tài)數(shù)據(jù)一致性檢測的正確性并測試其檢測耗時。其中本地服務器硬件配置為Intel Pentium D 2.8 GHz CPU,512 MB內(nèi)存,120 GB硬盤,100 Mbps網(wǎng)卡。遠程服務器硬件配置為Intel Celeron 2.4 GHz CPU,內(nèi)存448 MB,160 GB硬盤,100 Mbps網(wǎng)卡。實驗方法如下:持續(xù)不斷地向2 GB大小監(jiān)控卷寫入數(shù)據(jù),在寫入數(shù)據(jù)的過程中執(zhí)行一致性檢測。測試結(jié)果如表1所示。實驗結(jié)果如圖4所示。
表1 測試實驗結(jié)果
原始扇區(qū)數(shù)快照扇區(qū)數(shù)實測扇區(qū)數(shù)檢測耗時/s是否一致
2 2482 24822484.203是
40 10240 10240 10281.434是
43 45243 45243 45282.053是
81 24481 24481 244164.344是
167 58416 7584167 584202.328是
183 032183 032183 032221.975是
453 664453 664453 664247.047是
實驗結(jié)果表明:動態(tài)數(shù)據(jù)一致性檢測方法能在原始數(shù)據(jù)動態(tài)改變的同時執(zhí)行一致性檢測,且檢測結(jié)果能正確反映原始數(shù)據(jù)和備份數(shù)據(jù)的一致性。
5 結(jié)束語
本文設(shè)計并實現(xiàn)了一種網(wǎng)絡(luò)備份系統(tǒng)的一致性檢測方法。利用快照實時、快照數(shù)據(jù)不會改變的特性,本方法采用一個實時的快照來代替持續(xù)變化的原始數(shù)據(jù)執(zhí)行與備份數(shù)據(jù)的一致性檢測。該方法解決了目前網(wǎng)絡(luò)備份系統(tǒng)中作一致性檢測必須要停止系統(tǒng)運行才能作數(shù)據(jù)一致性檢測的缺點,為目前網(wǎng)絡(luò)備份系統(tǒng)提供了一個安全、快捷、有效的數(shù)據(jù)一致性檢測手段。
參考文獻:
[1]李濤.網(wǎng)絡(luò)安全概論[M].北京:電子工業(yè)出版社,2004.
[2]SOLOMON D, RUSSINOVICH M. Microsoft Windows internals[M].4th ed. Washington: Microsoft Press, 2005.
[3]ONEY W. Programming the Microsoft Windows driver model[M].2nd ed. Washington:Microsoft Press, 2003.
[4]王志明.容災抗毀系統(tǒng)中數(shù)據(jù)一致性檢測及快速恢復方法[D]. 成都:四川大學,2006.
[5]王瑋,劉曉潔,李濤,等.一種異地災難恢復系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機應用研究,2007,24(9):106108.
[6]周婧,王意潔,阮煒,等.面向海量數(shù)據(jù)的數(shù)據(jù)一致性研究[J].計算機科學,2006,33(4):137140.
08020413