一種基于云計(jì)算的數(shù)據(jù)備份方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及基于云計(jì)算,特別涉及一種基于云計(jì)算的數(shù)據(jù)備份方法。
【背景技術(shù)】
[0002]云計(jì)算作為一種新型計(jì)算模式,其相對無限的計(jì)算和存儲資源可以靈活配置、動(dòng)態(tài)伸縮,并且以實(shí)際資源消耗量為依據(jù)進(jìn)行計(jì)費(fèi)。因此云存儲資源比本地資源具有更高的性價(jià)比。在數(shù)據(jù)備份應(yīng)用場景中,多數(shù)的恢復(fù)請求都是恢復(fù)到離當(dāng)前時(shí)刻較近的某個(gè)時(shí)間點(diǎn),很少需要讀取較舊版本的數(shù)據(jù)。對于這類數(shù)據(jù),如果采用本地存儲資源容納,將導(dǎo)致嚴(yán)重的資源浪費(fèi)。云存儲資源則非常適用于存儲這類海量備份數(shù)據(jù),可以達(dá)到很低廉的備份成本。然而,云計(jì)算的數(shù)據(jù)備份面臨以下幾個(gè)問題,(I)如何兼容各類云存儲平臺。對于云存儲后端,由于云存儲平臺接口各不相同,很難實(shí)現(xiàn)最大的兼容性,在選擇云存儲提供商時(shí)受限。(2)在云存儲模式下備份和恢復(fù)成本較高。然而云存儲的計(jì)費(fèi)模型比本地存儲更加復(fù)雜。(3)云存儲的低帶寬高延遲缺陷將顯著影響備份系統(tǒng)的恢復(fù)速度。
[0003]因此,針對相關(guān)技術(shù)中所存在的上述問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0004]為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種基于云計(jì)算的數(shù)據(jù)備份方法,包括:
[0005]云平臺針對所有客戶的所有段的版本數(shù)據(jù),使用哈希算法計(jì)算每段數(shù)據(jù)的標(biāo)識符,判斷是否存在重復(fù),并將重復(fù)數(shù)據(jù)進(jìn)行壓縮處理,壓縮后的備份數(shù)據(jù)寫入統(tǒng)一的后端存儲池,記錄每個(gè)數(shù)據(jù)段寫操作的版本信息,在數(shù)據(jù)恢復(fù)時(shí)查詢并讀取對應(yīng)的版本信息進(jìn)行數(shù)據(jù)恢復(fù)。
[0006]優(yōu)選地,所述備份數(shù)據(jù)的壓縮進(jìn)一步包括:
[0007]在數(shù)據(jù)保護(hù)模式下,所述云平臺業(yè)務(wù)接口不斷從客戶系統(tǒng)接收寫操作流數(shù)據(jù)段,客戶將自身驅(qū)動(dòng)層的所有段寫入請求發(fā)送給業(yè)務(wù)接口;
[0008]把接收到的每一個(gè)請求都切分成若干個(gè)四元組<Client_ID,LA,Timestamp, Seg_Data〉,每個(gè)元組表示對某個(gè)段的一次寫操作;其中Client_ID表示客戶的編號;LA表示目標(biāo)段的邏輯段號;TimeStamp表示寫請求發(fā)生的時(shí)間戳;Seg_Data表示新寫入的段數(shù)據(jù);
[0009]將每個(gè)段的寫操作的Seg_Data傳遞給云平臺的數(shù)據(jù)去重模塊,計(jì)算出Seg_Data_ID即Seg_Data的標(biāo)識符進(jìn)行去重;
[0010]將新段的寫操作傳遞給云平臺的版本索引模塊,記錄相應(yīng)的版本信息,在索引更新粒度上采用定期更新策略,每次索引更新時(shí),讀取當(dāng)前的一級索引,將內(nèi)存cache內(nèi)每個(gè)段的新版本記錄追加到該段的一級索引記錄區(qū)末尾,二級索引是一個(gè)固定長度的結(jié)構(gòu),在新的一級索引生成之后進(jìn)行原地更新,在索引更新開始前,一個(gè)新的內(nèi)存cache會被生成,以容納新的記錄,而已有的cache則在更新操作完成之后被釋放;
[0011]根據(jù)數(shù)據(jù)去重模塊的結(jié)果更新元數(shù)據(jù)信息,對新的Seg_Data建立新的元組并賦初始值,對重復(fù)的Seg_Data則更新其引用計(jì)數(shù);
[0012]將每一個(gè)新段的寫操作信息傳遞給云平臺的磁盤緩存模塊,僅將磁盤緩存內(nèi)不存在的Seg_Data寫入磁盤,同步更新所有Seg_Data在磁盤緩存中的位置和引用計(jì)數(shù)信息;
[0013]利用云平臺中的數(shù)據(jù)歸檔模塊,從去重得到所有的去重結(jié)果批量存儲到云端,同時(shí)更新其云端位置信息。
[0014]優(yōu)選地,所述云平臺包括業(yè)務(wù)接口模塊,客戶通過統(tǒng)一的業(yè)務(wù)接口與云平臺系統(tǒng)進(jìn)行業(yè)務(wù)交互,在進(jìn)行數(shù)據(jù)保護(hù)時(shí),被保護(hù)系統(tǒng)將自身驅(qū)動(dòng)層的所有段寫入請求都拷貝一份發(fā)送給業(yè)務(wù)接口,把接收到的每一個(gè)請求都切分成個(gè)四元組<Client_ID,LA,Timestamp,Seg_Data>,每個(gè)元組表示對某個(gè)段的一次寫操作;其中Client_ID表示客戶的編號;LA表示目標(biāo)段的邏輯段號;TimeStamp表示寫請求發(fā)生的時(shí)間戳;Seg_Data表示新寫入的段數(shù)據(jù)。
[0015]優(yōu)選地,所述云平臺在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),客戶將恢復(fù)請求三元組〈Timestamp,Start_LA,End_LA>發(fā)送給業(yè)務(wù)接口 ;其中Timestamp指明需要恢復(fù)的時(shí)間點(diǎn);Start_LA和End_LA則表示需要進(jìn)行恢復(fù)的邏輯段地址起止范圍;如果客戶需要?jiǎng)h除部分版本數(shù)據(jù),則將一個(gè)刪除請求二元組<Start_Timestamp,End_Timestamp>發(fā)送給業(yè)務(wù)接口,指明其需要?jiǎng)h除的版本時(shí)間戳范圍。
[0016]優(yōu)選地,所述云平臺的版本索引模塊為每個(gè)客戶都維護(hù)獨(dú)立的版本索引,保存該客戶所有段的所有版本信息;版本索引在邏輯上存儲的是從二元組〈LA,Timestamp)到Seg_Data的映射關(guān)系;版本索引由存儲在磁盤上的兩級索引和在內(nèi)存cache組成;磁盤索引定期進(jìn)行更新操作,而內(nèi)存cache則存儲上次磁盤索引更新之后直至當(dāng)前的新增的段版本信息,磁盤索引分為一級索引和二級索引,一級索引由固定長度的二元組順序組成,Tijj, Bi,」分別表示對第i號段的第j次寫入操作的時(shí)間戳和Seg_Data_ID ;二級索引由固定長度的三元組〈化,Ti, 順序組成,其中Ai表示第i號段的版本信息在一級索引中的起始位置,Ti, Bi則表示該段最新版本的時(shí)間戳和Seg_Data_ID ;內(nèi)存cache使用一個(gè)散列表結(jié)構(gòu)來存儲若干對段號和指針,每個(gè)指針指向一個(gè)隊(duì)列,指明上次磁盤索引更新后發(fā)生的對某個(gè)段的新寫入信息,cache內(nèi)的信息被同步寫入到一個(gè)磁盤日志中,以便系統(tǒng)異常重啟之后可以恢復(fù)這些信息。
[0017]優(yōu)選地,所述云平臺的數(shù)據(jù)去重模塊用于對每一個(gè)新的Seg_Data使用hash算法計(jì)算其Seg_Data_ID,通過比對該標(biāo)識符,判斷此Seg_Data是否與已有的Seg_Data重復(fù),進(jìn)而進(jìn)行去重,云平臺采用統(tǒng)一的后端存儲池,其數(shù)據(jù)去重是針對所有客戶的所有段的版本數(shù)據(jù)進(jìn)行的。
[0018]本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
[0019]本發(fā)明的方法支持使用各類云存儲平臺作為后端存儲,通過采用全局?jǐn)?shù)據(jù)去重技術(shù),本發(fā)明具有比傳統(tǒng)數(shù)據(jù)備份系統(tǒng)更好的數(shù)據(jù)壓縮效果和更短的數(shù)據(jù)恢復(fù)時(shí)間;通過采用兩級緩存機(jī)制,進(jìn)一步優(yōu)化了云存儲模式下的數(shù)據(jù)恢復(fù)速度。
【附圖說明】
[0020]圖1是根據(jù)本發(fā)明實(shí)施例的基于云計(jì)算的數(shù)據(jù)備份方法的流程圖。
【具體實(shí)施方式】
[0021]下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實(shí)現(xiàn)本發(fā)明。
[0022]數(shù)據(jù)備份系統(tǒng)能夠備份所有數(shù)據(jù)段的改變,能夠?qū)⒋疟P恢復(fù)到過去任意時(shí)間點(diǎn)的狀態(tài)。然而系統(tǒng)長時(shí)間運(yùn)行將生成大量備份數(shù)據(jù),存儲成本髙昂,因此需要采用數(shù)據(jù)壓縮技術(shù)以減少備份數(shù)據(jù)量。要在云存儲模式下減少備份成本,必須減少備份數(shù)據(jù)量和數(shù)據(jù)請求次數(shù)。而要優(yōu)化恢復(fù)速度,則必須降低云端數(shù)據(jù)讀取量。
[0023]傳統(tǒng)方案不能利用不同段間的數(shù)據(jù)相似性,喪失了一部分壓縮機(jī)會,而且在恢復(fù)過程需要讀取基礎(chǔ)版本進(jìn)行解碼運(yùn)算,在云存儲模式下將造成較大的恢復(fù)延遲。因此本發(fā)明采用的云平臺使用數(shù)據(jù)去重技術(shù)進(jìn)行備份數(shù)據(jù)的壓縮,以取得更高的壓縮率?;謴?fù)過程只需要查詢并讀取對應(yīng)的數(shù)據(jù)版本,不需要額外的數(shù)據(jù)讀取和運(yùn)算,因此在云存儲模式下能夠取得更低的備份成本和更快的恢復(fù)速度。由于不存在數(shù)據(jù)版本間的依賴關(guān)系,本發(fā)明還支持直接刪除任意的數(shù)據(jù)版本而不會影響到其他的數(shù)據(jù)版本。針