一種云平臺數據管理方法
【技術領域】
[0001]本發(fā)明涉及基于云計算,特別涉及一種云平臺數據管理方法。
【背景技術】
[0002]云計算作為一種新型計算模式,其相對無限的計算和存儲資源可以靈活配置、動態(tài)伸縮,并且以實際資源消耗量為依據進行計費。因此云存儲資源比本地資源具有更高的性價比。在數據備份應用場景中,多數的恢復請求都是恢復到離當前時刻較近的某個時間點,很少需要讀取較舊版本的數據。對于這類數據,如果采用本地存儲資源容納,將導致嚴重的資源浪費。云存儲資源則非常適用于存儲這類海量備份數據,可以達到很低廉的備份成本。然而,云計算的數據備份面臨以下幾個問題,(I)如何兼容各類云存儲平臺。對于云存儲后端,由于云存儲平臺接口各不相同,很難實現最大的兼容性,在選擇云存儲提供商時受限。(2)在云存儲模式下備份和恢復成本較高。然而云存儲的計費模型比本地存儲更加復雜。(3)云存儲的低帶寬高延遲缺陷將顯著影響備份系統(tǒng)的恢復速度。
[0003]因此,針對相關技術中所存在的上述問題,目前尚未提出有效的解決方案。
【發(fā)明內容】
[0004]為解決上述現有技術所存在的問題,本發(fā)明提出了一種云平臺數據管理方法,其特征在于,包括:
[0005]云平臺通過數據去重處理進行備份數據的壓縮,記錄每個數據段寫操作的版本信息,在數據恢復時查詢并讀取對應的版本信息進行數據恢復。
[0006]優(yōu)選地,所述備份數據的壓縮進一步包括:
[0007]在數據保護模式下,所述云平臺業(yè)務接口不斷從客戶系統(tǒng)接收寫操作流數據段,客戶將自身驅動層的所有段寫入請求發(fā)送給業(yè)務接口;
[0008]把接收到的每一個請求都切分成若干個四元組<Client_ID,LA,Timestamp, Seg_Data〉,每個元組表示對某個段的一次寫操作;其中Client_ID表示客戶的編號;LA表示目標段的邏輯段號;TimeStamp表示寫請求發(fā)生的時間戳;Seg_Data表示新寫入的段數據;
[0009]將每個段的寫操作的Seg_Data傳遞給云平臺的數據去重模塊,計算出Seg_Data_ID即Seg_Data的標識符進行去重;
[0010]將新段的寫操作傳遞給云平臺的版本索引模塊,記錄相應的版本信息,在索引更新粒度上采用定期更新策略,每次索引更新時,讀取當前的一級索引,將內存cache內每個段的新版本記錄追加到該段的一級索引記錄區(qū)末尾,二級索引是一個固定長度的結構,在新的一級索引生成之后進行原地更新,在索引更新開始前,一個新的內存cache會被生成,以容納新的記錄,而已有的cache則在更新操作完成之后被釋放;
[0011]根據數據去重模塊的結果更新元數據信息,對新的Seg_Data建立新的元組并賦初始值,對重復的Seg_Data則更新其引用計數;
[0012]將每一個新段的寫操作信息傳遞給云平臺的磁盤緩存模塊,僅將磁盤緩存內不存在的Seg_Data寫入磁盤,同步更新所有Seg_Data在磁盤緩存中的位置和引用計數信息;
[0013]利用云平臺中的數據歸檔模塊,從去重得到所有的去重結果批量存儲到云端,同時更新其云端位置信息。
[0014]優(yōu)選地,所述數據恢復進一步包括:
[0015]當業(yè)務接口從客戶系統(tǒng)接收到一個數據恢復請求時將啟動數據恢復進程,首先啟動工作線程,包括一個版本查詢線程、多個數據讀取線程和一個數據合成線程,上述工作線程并發(fā)工作,形成一個數據恢復流水線;
[0016]對于每個數據段,版本查詢線程會從版本索引中查找到時間戳不晚于待恢復時間戳的最新的版本信息,對于第i號段,首先查詢內存cache,如存在查詢結果則直接返回,否則查詢線程從二級索引中讀取該段的信息<A’ Ti, Bi)以及Ai+1,其中Ai表示第i號段的版本信息在一級索引中的起始位置,Ti, Bi則表示該段最新版本的時間戳和Seg_Data_ID,
[0017]如果Ti滿足條件,則直接返回B i,否則繼續(xù)在一級索引中,根據AjP A i+1指明的起止位置,采用二分搜索算法查找到滿足條件的結果;
[0018]將查找到的每個段的待恢復版本的Seg_Data_ID傳遞給數據讀取線程和數據合成線程,數據合成線程在內存中維護一個隊列結構作為滑動恢復窗口,每個隊列元素依次表示一個連續(xù)待恢復區(qū)域內的某個段,對于某個需讀取的Seg_Data_ID,合成線程首先檢查內存緩存,如果緩存命中則直接讀取,否則查找其元數據信息,如果其大于0,則根據該Seg_Data的存儲位置從磁盤讀取,否則根據該Seg_Data的存儲位置從云端讀取;
[0019]讀取操作由數據讀取線程并發(fā)執(zhí)行,對于每個讀取到的Seg_Data,合成線程將其數據復制到當前滑動恢復窗口內所有其出現的位置,隨后,滑動恢復窗口前部已讀取的段數據被批量傳輸給客戶系統(tǒng)供其寫入,恢復窗口則繼續(xù)向后滑動,直至完成所有段的恢復操作。
[0020]優(yōu)選地,所述云平臺的數據去重模塊用于對每一個新的Seg_Data使用hash算法計算其Seg_Data_ID,通過比對該標識符,判斷此Seg_Data是否與已有的Seg_Data重復,進而進行去重,云平臺采用統(tǒng)一的后端存儲池,其數據去重是針對所有客戶的所有段的版本數據進行的。
[0021]優(yōu)選地,所述云平臺保存所有Seg_Data的元數據信息,由五元組<Seg_Data_ID,Cloud_RC,Cloud_Locat1n,Cache_RC,Cache_Locat1n〉組成;其中 Cloud_RC 和 Cache_RC分別表示該在云存儲和本地磁盤緩存中的引用計數,即冗余度;Cloud_Locat1n和Cache_Locat1n分別表示該Seg_Data在云存儲和本地磁盤緩存中的存儲位置。
[0022]優(yōu)選地,所述云平臺的磁盤緩存模塊用于對每個客戶在磁盤存儲兩類數據以加速恢復過程,第一類數據是所有段的最新版本Seg_Data,其邏輯上等效于被保護系統(tǒng)的實時鏡像,第二類數據是客戶系統(tǒng)內最近若干次段寫入操作的Seg_Data,使用具有較高隨機讀寫性能的固態(tài)盤作為磁盤緩存,并且直接使用裸分區(qū)存儲去重后的Seg_Data ;磁盤緩存使用段分配位圖來管理存儲空間,其段大小被設置成所有客戶系統(tǒng)段大小的最小值,每個Seg_Data在磁盤上連續(xù)存儲,其存儲位置用其起始段號來表示。
[0023]優(yōu)選地,所述云平臺包括數據歸檔模塊,用于將經過去重的所有Seg_Data存儲到云端,并在數據恢復時從云端讀取;
[0024]所述云平臺包括數據恢復模塊,用于根據客戶傳遞的數據恢復請求,查詢并獲取相應的版本數據,進行合成之后批量傳輸給客戶系統(tǒng)供其寫入。
[0025]本發(fā)明相比現有技術,具有以下優(yōu)點:
[0026]本發(fā)明的方法支持使用各類云存儲平臺作為后端存儲,通過采用全局數據去重技術,本發(fā)明具有比傳統(tǒng)數據備份系統(tǒng)更好的數據壓縮效果和更短的數據恢復時間;通過采用兩級緩存機制,進一步優(yōu)化了云存儲模式下的數據恢復速度。
【附圖說明】
[0027]圖1是根據本發(fā)明實施例的云平臺數據管理方法的流程圖。
【具體實施方式】
[0028]下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細描述。結合這樣的實施例描述本發(fā)明,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細節(jié),并且無這些具體細節(jié)中的一些或者所有細節(jié)也可以根據權利要求書實現本發(fā)明。
[0029]數據備份系統(tǒng)能夠備份所有數據段的改變,能夠將磁盤恢復到過去任意時間點的狀態(tài)。然而系統(tǒng)長時間運行將生成大量備份數據,存儲成本髙昂,因此需要采用數據壓縮技術以減少備份數據量。要在云存儲模式下減少備份成本,必須減少備份數據量和數據請求次數。而要優(yōu)化恢復速度,則必須降低云端數據讀取量。
[0030]傳統(tǒng)方案不能利用不同段間的數據相似性,喪失了一部分壓縮機會,而且在恢復過程需要讀取基礎版本進行解碼運算,在云存儲模式