馮美祿 胡樂燕
(1.河南省教育技術裝備管理中心,河南 鄭州 450004;2.河南省財政廳干部教育中心,河南,鄭州 450004)
一種改進的文件級持續數據保護機制
馮美祿1胡樂燕2
(1.河南省教育技術裝備管理中心,河南 鄭州 450004;2.河南省財政廳干部教育中心,河南,鄭州 450004)
信息技術的廣泛應用使得數據在信息系統中發揮的作用日益顯現,數據的丟失或損壞對整個系統造成的損失難以估量。本文充分分析了當前持續數據保護技術的現狀,立足現有的TRAP-4持續數據保護思想,提出了一種改進的文件級持續數據保護機制。在虛擬層改進了日志生成方式,減輕了系統工作負載,縮短了數據備份與恢復時間,增強了系統對于核心數據的持續全備份能力。
持續數據保護;F-CDP;日志;TRAP
隨著計算機技術的飛速發展和網絡的廣泛普及,社會信息數據進入了快速膨脹的時代,人類的學習、工作和生活對數據的依賴程度越來越高,數據丟失或損壞將會嚴重影響企事業單位的生存和發展。持續數據保護(CDP)通過實時記錄數據的改變,使得災難發生后能夠將數據恢復到任意時間點。對于一些特殊的部門如銀行、證券、電信等,由于其特殊的數據存在形式(以個人賬戶為基本單位),單個賬戶數據的備份可能涉及多個數據塊,單個數據塊中也可能含有多個賬戶數據。眾所周知,賬戶數據中的信息有相當一部分是固定的,進行持續數據備份時,無論是以文件為單位還是以塊為單位,都會存在大量的重復數據,極大的浪費了存儲空間,本文立足于TRAP-4機制的數據保護思想,以賬戶數據為基本的數據保護單位,在邏輯層進行增量數據的備份,提出了改進的文件級持續數據保護技術(F-CDP)。
1.1 TRAP-4機制
美國羅德島大學楊慶教授提出的TRAP-4技術的工作原理[1]如下:設某數據塊B(x)的原始數據為D(0),應用程序在時刻T(m)對數據D(m-1)有一次寫操作,得到的新數據為D(m),則該時刻前后數據的異或校驗值為P(m)= D(m-1)⊕D(m),并記錄時間戳為T(m)。TRAP-4按時間戳順序保存這些寫操作時間點的校驗值,形成一個日志鏈{B(x),P(m)、P(m-1)、……、P(0),D(0)}。當數據塊B(x)需要將數據恢復到T(m)以前的某個時間節點T(k)時,只需在日志鏈中讀取相應的校驗值,依次執行下面的公式[3]計算就可完成數據恢復:

通過T(k)時刻的數據恢復到T(m)時刻計算公式類似,如下:

TRAP-4的優點是通過數據的異或值來記錄寫操作,根據日志鏈可以將數據恢復到任意寫操作時間點,實現方式比較簡便;改進的TRAP-4機制[2]定期在日志鏈中插入對應時間點的快照數據,{B(x),P(m)、P(m-1)、……P(n+1)、D(n)、P(n-1)、……、P(1)、P(0),D(0)},有效解決了日志鏈的長時間失效風險,提高了機制的安全性,但是還存在以下幾個方面的問題:
1.1.1 寫操作經常是針對某個文件或者某項數據,而文件或數據往往存放在許多物理上各自分離的磁盤或數據塊上,大量數據塊的調度增加了系統的工作負擔,多處數據塊改動在數據恢復時效率低下。
1.1.2 數據備份與恢復時的異或運算占用了大量的系統資源,降低了系統的服務效能。
1.1.3 改進的TRAP-4機制雖然解決了日志鏈的失效問題,但是,定期進行數據全備份數據需要大量的存儲空間,并且缺少針對重要文件或者核心數據進行保護的策略。
1.2文件級CDP思想
基于文件的CDP機制是針對特定的重要文件或數據提出的,如銀行賬戶信息、公安部人口資料、軍事作戰地圖、導航數據等,這類文件的共同特點:數據價值高、數據更改范圍有限、每次改變都要求進行數據全備份、實時性要求高。文件數據由一個或多個數據塊組成,由于應用需求,文件中的部分數據會經常變動。僅僅對其改變的數據塊進行備份,恢復數據時首先通過塊恢復,然后進一步構成文件,恢復速度勢必會影響文件數據的實時性;而每次寫操作均對文件進行全備份,文件中大量未改變的數據勢必會占用相對較大的存儲空間,造成存儲資源的極大浪費。

圖 1 信用卡賬戶信息組成
圖1展示了信用卡賬戶的組成要素,賬戶中除了賬戶金額經常變動以外,大部分信息數據是未改變或很少變化的,對文件數據進行全備份過程中,未改變的數據被反復備份,浪費了較大的存儲空間,而重要的賬戶數據占用的存儲資源相對有限,需要對這種特殊的需求提出新的應對方法。因此,本文提出了改進的文件級持續數據保護技術(F-CDP)。
F-CDP技術是在ULVM層設計與實現的,是塊級CDP技術的一種演化,組成文件的所有數據塊在ULVM層是連續的,由于文件數據在備份過程中大部分數值保持不變,Pn值中大量的“0”是長期存在且位置不變的,如圖2所示,賬戶中的個人信息長期未發生變化,只有賬戶金額部分發生改變。

圖 2 個人賬戶數據的異或值
2.1 系統架構
根據第二節中提到的問題,我們的解決方案是通過虛擬技術在邏輯層實施數據保護,利用虛擬技術將物理上分散存儲的文件數據邏輯鏈接成一個整體,從而更有利于數據保護的實現,如圖3所示。在文件系統驅動與邏輯卷管理層(LVM)之間,增加了上層邏輯卷管理驅動(ULVM),ULVM由指針記錄模塊、數據轉換模塊和編碼模塊三部分組成,指針記錄模塊設置了數據增加指針Pa(Point addition)、數據刪除指針Pd(Point delete)和數據更改指針Pc(Point change),分別記錄數據增加、刪除、更改時的起始位置;數據轉換模塊負責按照預定機制對相關的數據進行“0”“1”轉換,編碼模塊用于對增量數據進行編碼壓縮。ULVM對上提供數據訪問接口和統一的邏輯視圖,對下維護下級各節點的邏輯映射關系。尋址模塊進行數據物理地址的定向與訪問,實現邏輯塊與物理塊的一一映射。

圖3 系統架構
2.2 機制實現
2.2.1 指針記錄模塊
數據增加:當有新的文件建立或文件中增加新的數據時使用Pa,Pa包含起始位Pab(beginning)和結束位Pae(end)兩部分,分別標明數據增加的起始位與結束位,Pab與Pae是一一對應的。對于數據增加的情況,新增的數據保持原有狀態不變,原有數據異或后得到的值全部為“0”,本文設定Pab為“110”,Pae為“011”,ULVM首先通過數據轉換模塊將原來的數據全部轉換為“0”,在數據的后面插入指針“110”,用于區分原有數據與新增數據,然后將新數據寫到起始指針后面,最后插入結束位“011”,數據壓縮解壓時只需讀取指針便可對指定的數據形態進行逐一恢復。如圖4所示。

圖4 數據增加
數據更改:文件中部分數據發生改變時使用Pc,如賬戶中的金額變動、地圖坐標的更改、導航定位信息的修正等等,在改變的數據中插入相應的指針起始位Pcb和結束位Pce,分別標明數據改變的起始位與結束位,Pcb與Pce是一一對應的,當數據中有多個部分更改時,在Pcb與Pce后面加n分別標明即可。對于數據更改的情況,數據異或后改變的部分全部為“1”,未改變的部分全部為“0”,由于同一數據的一次寫操作可能會涉及多個部分,本文設定Pcb為“10‘000’01”Pce為“01‘000’10”,中間三個比特位代表“000-111”八個數字,逐一累加,若一次寫所涉及的修改不超過八處,則通過指針進行一一標記;若一次寫操作涉及的改變超過九處以上,則對數據進行一次全備份。F-CDP通過數據轉換模塊將對應的數據進行轉換,在改變的數據部分前后各插入相應的起始位與結束位指針,并記錄時間戳,得到的結果如圖5所示。

圖5 數據更改
數據刪除:文件中部分數據刪除時使用該指針Pd,用來標明數據中刪除的部分,該指針的作用是為了防止由病毒、誤操作、人為破壞等造成的數據丟失,將刪除的數據保存下來以便需要時恢復,該指針也包括Pdb與Pde兩部分,分別標明數據刪除部分的起始位與結束位。數據刪除的情況較為簡單,為了有效記錄已刪除的數據,防止誤操作發生,本文設定數據刪除指針Pdb與Pde均為“111”,F-CDP通過數據轉換模塊將未改變的數據轉換為“0”,在刪除的數據部分前后各插入相應的起始位與結束位指針,并記錄時間戳,得到的結果如圖6所示。

圖6 數據刪除
2.2.2 數據轉換模塊
針對標記指針的文件或者數據塊,若指針為數據增加或刪除,則將指針之外的全部數據轉換為“0”,指針間的數據保持不變;若指針為數據更改,則將指針之間的數據全部轉換為“1”,將指針之外的數據轉換為“0”。
當應用對某數據進行一次數據更改寫操作時,數據轉換算法如下所示:

Algorithm DataTransition 1 Lp=getlenth(P); //獲取指針長度2 Ld=getlenth(data); //獲取數據長度3 Lw=getlenth(write); //寫操作涉及的數據長度4 k=*Pb; //指針的起始位置5 for(i=1;i<Pb-1;i++)6 mi=0; //遍歷指針前的所有數據,將其全部置為“0”7 for(i=Pb+LP; i<Pb+Lp+Lw-1; i++)8 mi=1; //遍歷指針之間改變的數據,將其全部置為“1”9 for(i=Pb+Lp*2+Lw; i<Ld-1; i++)10 mi=0; //遍歷指針之后的所有數據,將其全部置為“0”11 return mi
數據轉換模塊的核心思想是將指針之外的數據全部轉換為“0”,指針之間的數據根據指針的不同,區別對待,對于數據更改的情況,指針之間的數據全部轉換為“1”,對于其他兩種情況,指針之間的數據保持不變。當同一數據的更改涉及多個部分時,可依次類推。
2.2.3 編碼模塊
由于P(n)中包含了大量連續的“0”和“1”,在進行數據保存時,只需記錄指針之間有多少位“1”,指針之外有多少位“0”就能完整保存數據的詳細信息,而對于類似的數據形態,本文提出了一種新的數據編碼方式“表程編碼”。
設計思想:假設在Pcb與Pce之間有Xbit的“1”,定義壓縮比特流1所用的數據位為L,壓縮后得到的值為C,根據二進制算法計算出L=|log2X|+1,其中||為取整運算。利用L位的0、1組合便可壓縮保存Xbit的數據信息。例如X=1048573,即Pcb與Pce之間有1048573個連續排列的“1”,利用公式得出L=|log21048573|+1=19+1=20,即用 20位的“0”“1”數字“11111111111111111101”表示了1048573個連續的“1”,即C= 11111111111111111101。同樣的原理應用在未改變的部分,其值全部為“0”,編碼結果與改變的部分相同。由于每次編碼過程中X的長度不同,在獲取壓縮值C的過程中,系統每次都要進行二進制樹的遍歷,遍歷過程耗費了大量的系統資源,針對這種情況,本文提出了“表程編碼”算法。
表程編碼:針對大小為4KB的數據塊,其數據改變量是有限的,也就是指X的范圍相對可控:1≤X≤4×8×1024,如果系統事先計算出X的所有取值對應的編碼值,記錄在數據表中,通過讀取數據轉換模塊得到的X長度,然后查找表中對應的編碼值,就能節省系統對每個X進行計算所占用的資源,編碼表如表1所示。

表 1 編碼值遍歷表
編碼值遍歷表計算出每個X值對應的壓縮值C,每20組數據為一張子表,壓縮解壓模塊從數據轉換模塊獲取到X的值后,首先通過公式Table=|X÷20|+1計算出C值在哪張子表中,然后取X÷20的余數找到C的具體數值。
若文件數據大于4KB對于數據長期未改變的部分,通過公式L=|log2X|+1將記錄數據信息所需全部“0”的比特位計算出來,通過“0”“1”組合得到表示數據“0”位數的信息,該組合是固定值,一次計算可以應用在文件數據日后所有的記錄中,在賬戶金額部分插入指針后,鏈接在該固定值之后,生成新的日志信息,為該文件維護一個日志鏈,并定期進行文件的全備份。
2.3 ULVM工作流程
客戶端的I/O命令先傳送到ULVM,ULVM判別該命令是讀或者是寫。若是讀,ULVM直接返回相應的數據,直接授權客戶端通過網絡訪問存儲池的相關數據;若是寫,則由ULVM統一處理,首先將相應的數據調入內存,由指針模塊記錄數據改變部分的位置,然后通過數據轉換模塊,將未改變的部分設為“0”,改變的部分設為“1”,經過壓縮解壓模塊對數據進行壓縮生成Pn值,然后把Pn值寫到相應的日志鏈中,具體過程如圖7所示。

圖7 ULVM命令解析流程
2.4 F-CDP的性能分析
無論持續數據保護機制在哪個層次實現或者是應用技術有多大提高,對于新增加和已刪除的數據,任何數據保護機制都要完成最基礎的工作:備份增量數據或待刪除數據,這部分數據的備份工作占用的系統資源是無法減少的,性能提升的空間相對有限。本文針對數據的改變部分,將F-CDP與TRAP-4的性能進行比較,設定原型系統的數據塊大小為4Kb,系統中有10TB的工作數據,每天數據的改變量約20%,每周做一次全備份。
若1M的文件每天同樣有20%的改變,對于理想情況而言,也就是近52個數據塊發生了改變,采用TRAP-4機制,系統最少保留52個數據塊的P(m)值,利用游程編碼進行數據壓縮,系統要占用52×log212bit的空間,而F-CDP機制最多占用52×log220bit的空間,最少僅占用log220bit的空間,顯然,F-CDP并沒有明顯增加系統的工作負載,但是該機制能夠對重要文件或核心數據做持續的全備份,極大地保證了核心數據的安全性與可用性,提高了系統數據的可靠性。而對于特殊情況,256個數據塊各改變了20%,且改變僅為一次寫操作,F-CDP不但節省了備份空間,而且極大提高了數據的備份效率,尤其適合銀行、證券等以小文件、實時性為特點的數據系統。
為了檢驗F-CDP的數據備份與恢復效率,對F-CDP進行實驗,并與TRAP-4機制得出的結果進行比較。
實驗環境:主機CPU為2.50GHz,RAM為1G,Ethernet adapt?ers為RTL8139,Operating System為Linux Fedora 15,內核為2.6.40版,數據庫為Demon 5.0。采用TPC-C Benchmark模擬在線事務處理,運行半個小時。借鑒參考文獻[1]中的實驗方法及實現參考程序,做了相應的模擬實驗。
3.1 數據壓縮效率實驗
分別取大小為1、10、100、1000、10000(M)的文件數據(對以上數據進行一次寫操作,數據改變量小于1%),分別采用COW、TRAP-4、F-CDP的三種數據備份方式將更新的數據復制到備份中心,得到的網絡數據流量如圖8所示。

圖 8 數據壓縮效率對比
對于大小不同的文件數據,分別采用COW、TRAP-4和F-CDP技術對其進行數據備份,COW技術直接將數據復制到備份中心,數據大小不變,占用的網絡帶寬與數據量相關;TRAP-4技術通過異或器將數據進行了異或并且壓縮,數據壓縮后數據量明顯變小,約為原數據的10%~30%;F-CDP技術采用表程編碼進行數據壓縮,數據壓縮后大小一般在KB范圍,網絡傳輸過程中,數據量明顯較小。
3.2 備份還原實驗
分別取大小為0.1、0.2、0.4、0.8、1.6、3.2、6.4、12.8(M)的文件數據(區域地圖數據),對以上數據進行一次寫操作,數據改變量小于1%,實驗分別采用COW、TRAP-4、F-CDP的三種數據備份方式,對文件數據進行寫操作增量數據備份實驗,實驗得到的備份時間數據如圖9所示:

圖 9 數據備份對比
在100KB平均速率的網絡中,數據較小時(小于1MB),COW由于直接將數據復制到異地備份中心,沒有經歷TRAP-4的數據異或和壓縮及F-CDP的查表壓縮過程,備份時間相對較短,TRAP-4與F-CDP的備份時間相差不大。而數據較大時(1MB以上),隨著數據的增大,網絡中傳輸數據所用的時間明顯占據了備份時長的主體,COW技術的備份時間呈線性增長,TRAP-4機制相比COW來講,提高了一定的傳輸效率和備份效率,而F-CDP技術中,查表壓縮的時間沒有明顯增加,但是數據壓縮的效率明顯提高,網絡傳輸的數據量增長不大,明顯提高了數據的備份效率。
實驗結果表明,基于虛擬存儲的異地CDP技術具有生成增量數據快、壓縮效率高、占用網絡帶寬小、存儲空間利用率高的優點,雖然數據還原時要占用較長的時間進行數據解壓,且數據壓縮后無法對外提供訪問工作,但是該機制的設計理念就是能夠最大限度地保存數據版本、容忍重大災難,面對重大災難造成的損失,數據恢復期間所造成的損失幾乎可以忽略不計。總而言之,F-CDP技術較好地解決了數據異地容災的問題。
F-CDP機制是針對特定工作場景應運而生的,既對重要文件數據進行了實時數據全備份,又沒有顯著增加信息系統的計算和存儲資源,能夠將數據恢復到任意時刻,較好地解決了金融、證券、軍事數據等核心信息的備份存檔問題,提升了信息系統的容災能力,該機制特別適合于文件數據較大、改動部分較少且改變位置相對固定的應用場景。
持續數據保護與系統負載是一對矛盾的平衡體,如何最大限度地保護數據、最低程度的增加系統負載是持續數據保護技術的發展方向,本文在TRAP-4的基礎上,針對銀行、證券等特定的文件數據格式,提出了改進的文件級的持續數據保護技術研究,一定程度上增強了系統的工作效能,提高了數據保護能力。
[1]Yang Q,Xiao W,Ren J.TRAP-Array:A disk array architecture providing timely recovery to any point-in-time[C]// Proc of the Int Sytnp on Computer Architecture.New York:ACM,2006.
[2]李旭,謝長生,楊靖等.一種改進的塊級連續數據保護機制[J].計算機研究與發展,2009(5).
[3]Kimberly Keeton,Cipriano Santos,Dirk Beyer,etc. Designing for Disasters[C].Proceedings of the 3th USENIX Conference on File and Storage Technologies,San Francisco,CA,USA.USENIX Association.2004.03.
[4]王晶.強隔離操作系統的設備虛擬化[D].合肥:中國科學技術大學,2009.
[5]Yonghong Sheng,Dongsheng Wang,JinYang He et al. TH-CDP:An Efficient Block Level Continuous Data Protection System[C].In:2009 IEEE International Conference on Networking,Architecture,and Storage.2009:395-404.
[6]Deng Yibing,Chen Shanguang,Hu Wei,Gao Feng,Liu Chuanyi.A Novel Block-level Continuous Data Protection System [C].IEEEComputer Society.2010:242-247.
TP309
A
1671-0037(2014)10-70-4
馮美祿(1976.8-),本科,工程師,研究方向:電子產品。