專利名稱:一種基于重復(fù)數(shù)據(jù)刪除的差量壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)存儲(chǔ)的數(shù)據(jù)壓縮領(lǐng)域,更具體地,涉及一種基于重復(fù)數(shù)據(jù)刪除的數(shù)據(jù)差量壓縮方法。
背景技術(shù):
近年來,隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)的發(fā)展普及,全球的數(shù)據(jù)信息存儲(chǔ)量呈爆炸式增長的趨勢(shì)。雖然存儲(chǔ)設(shè)備的售價(jià)一直在不停的下降,但也遠(yuǎn)遠(yuǎn)趕不上數(shù)據(jù)擴(kuò)張?jiān)鲩L的速度。重復(fù)數(shù)據(jù)刪除(Data Deduplication)作為一種通過大規(guī)模地有效地消除冗余數(shù)據(jù)的技術(shù),成為了近年來存儲(chǔ)系統(tǒng)研究的熱點(diǎn)。簡(jiǎn)單來講,目前新興的重復(fù)數(shù)據(jù)刪除就是一種通過大規(guī)模地有效地消除冗余數(shù)據(jù),從而降低數(shù)據(jù)存儲(chǔ)成本的重要技術(shù)。舉例來說現(xiàn)在某核心部門有200GB的數(shù)據(jù)需要每天備份,那么一年就需要備份73TB,事實(shí)上每天修改的數(shù)據(jù)不到1GB,這樣導(dǎo)致了很多冗余數(shù)據(jù)重復(fù)備份存儲(chǔ)。而傳統(tǒng)的備份存儲(chǔ)技術(shù)不能識(shí)別備份數(shù)據(jù)中 的冗余數(shù)據(jù),因而會(huì)備份大量的重復(fù)數(shù)據(jù),無端浪費(fèi)了網(wǎng)絡(luò)帶寬和存儲(chǔ)空間,降低了數(shù)據(jù)備份和歸檔的存儲(chǔ)效率。隨著備份次數(shù)的增多和備份數(shù)據(jù)量的迅猛增長,存儲(chǔ)系統(tǒng)中的冗余數(shù)據(jù)越來越多,消耗在冗余數(shù)據(jù)上的存儲(chǔ)和管理資源會(huì)成倍增長。而重復(fù)數(shù)據(jù)刪除技術(shù)正好迎合了這一需求,通過有效識(shí)別和消除重復(fù)的冗余的數(shù)據(jù)降低數(shù)據(jù)存儲(chǔ)管理的開銷和提高存儲(chǔ)資源的利用率。但是隨著重復(fù)數(shù)據(jù)刪除技術(shù)的發(fā)展,重復(fù)數(shù)據(jù)刪除技術(shù)也面臨諸多的挑戰(zhàn)。由于傳統(tǒng)的重復(fù)數(shù)據(jù)刪除技術(shù)是基于數(shù)據(jù)塊的指紋來進(jìn)行重復(fù)數(shù)據(jù)判斷,所以這限制了重復(fù)數(shù)據(jù)刪除技術(shù)只能識(shí)別完全重復(fù)的數(shù)據(jù)塊,而不能識(shí)別那些很相似的數(shù)據(jù)塊。比如兩個(gè)數(shù)據(jù)塊Al和A2僅幾個(gè)字節(jié)不同的情況,雖然Al和A2接近完全相似,但是重復(fù)數(shù)據(jù)刪除技術(shù)會(huì)產(chǎn)生截然不同的數(shù)據(jù)指紋從而忽略了對(duì)這些相似數(shù)據(jù)的處理。于是差量(Delta)壓縮技術(shù)就被提出來應(yīng)用在這種場(chǎng)合,差量壓縮是一項(xiàng)高效的數(shù)據(jù)壓縮技術(shù),它能夠根據(jù)引用數(shù)據(jù)塊4對(duì)其相似數(shù)據(jù)塊Ai進(jìn)行高度壓縮。數(shù)據(jù)塊的相似度越高,則壓縮效率越高。如公式所示,把4和Ai輸入Delta算法器,Delta算法器會(huì)輸出一個(gè)差量數(shù)據(jù)Λ ra代表文件Ai的壓縮版本。如需要解壓數(shù)據(jù)Ai,則讀取差量數(shù)據(jù)Λ u和引用數(shù)據(jù)塊\即可以計(jì)算得出數(shù)據(jù)
權(quán)利要求
1.一種基于重復(fù)數(shù)據(jù)刪除的差量壓縮方法,其特征在于,包括以下步驟 (1)對(duì)數(shù)據(jù)流中的文件進(jìn)行分塊,得到多個(gè)數(shù)據(jù)塊; (2)計(jì)算每個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊指紋,用于重復(fù)數(shù)據(jù)查找; (3)對(duì)所有數(shù)據(jù)塊進(jìn)行分組,以建立數(shù)據(jù)塊組及其雙向鏈表,并對(duì)數(shù)據(jù)塊組內(nèi)的每個(gè)數(shù)據(jù)塊進(jìn)行重復(fù)數(shù)據(jù)刪除的指紋查找,以確定是否存在指紋記錄,如果有指紋記錄,則標(biāo)記該數(shù)據(jù)塊為重復(fù)數(shù)據(jù)塊;如果沒有,則標(biāo)記該數(shù)據(jù)塊為非重復(fù)數(shù)據(jù)塊; (4)對(duì)于重復(fù)數(shù)據(jù)刪除處理后的數(shù)據(jù)塊組,利用該數(shù)據(jù)塊組的雙向鏈表中的重復(fù)數(shù)據(jù)信息進(jìn)行基于局部性的相似數(shù)據(jù)查找,具體包括如下子步驟 (4-1)查找數(shù)據(jù)塊組所在的雙向鏈表,設(shè)置計(jì)數(shù)器i=l ; (4-2)判斷雙向鏈表中的第i個(gè)數(shù)據(jù)塊是否為重復(fù)數(shù)據(jù)塊;如果是,則取出該重復(fù)數(shù)據(jù)塊對(duì)應(yīng)的重復(fù)數(shù)據(jù)塊Cd所在數(shù)據(jù)塊組的雙向鏈表,設(shè)置j = i,并轉(zhuǎn)入步驟(4-3);否則設(shè)置i=i+l,并進(jìn)入步驟(4-7);在這里,稱重復(fù)數(shù)據(jù)塊CdS重復(fù)數(shù)據(jù)塊的引用數(shù)據(jù)塊; (4-3)判斷第i-Ι個(gè)數(shù)據(jù)塊是否為空值,或是重復(fù)或相似數(shù)據(jù)塊,如果都不是,則轉(zhuǎn)入步驟(4-4);若是,則進(jìn)入步驟(4-5); (4-4)對(duì)第i-Ι個(gè)數(shù)據(jù)塊讀取重復(fù)數(shù)據(jù)塊Cd所在數(shù)據(jù)塊組的雙向鏈表所對(duì)應(yīng)的數(shù)據(jù)塊,把該數(shù)據(jù)塊作為差量壓縮的引用數(shù)據(jù)塊,對(duì)第i_l個(gè)數(shù)據(jù)塊和引用數(shù)據(jù)塊進(jìn)行差量壓縮并判斷壓縮效率是否小于1/2,如果壓縮效率小于1/2,則認(rèn)為第i-Ι個(gè)數(shù)據(jù)塊不是相似的數(shù)據(jù)塊,并進(jìn)入步驟(4-5);如果壓縮效率大于等于1/2,則標(biāo)記第i-Ι個(gè)數(shù)據(jù)塊和引用數(shù)據(jù)塊是相似的,則設(shè)置i=i_l,并返回步驟(4-3); (4-5)判斷第j+Ι個(gè)數(shù)據(jù)塊是否為空值,或是重復(fù)或者相似數(shù)據(jù)塊,如果都不是,則轉(zhuǎn)入(4-6);若是,則設(shè)置i = j+Ι,并返回(4-7); (4-6)對(duì)第j+Ι個(gè)數(shù)據(jù)塊讀取重復(fù)數(shù)據(jù)塊Cd所在數(shù)據(jù)塊組的雙向鏈表所對(duì)應(yīng)的數(shù)據(jù)塊,把該數(shù)據(jù)塊作為差量壓縮的引用數(shù)據(jù)塊,對(duì)第j+Ι個(gè)數(shù)據(jù)塊和引用數(shù)據(jù)塊進(jìn)行差量壓縮并判斷壓縮效率是否小于1/2,如果壓縮效率小于1/2,則認(rèn)為第j+Ι個(gè)數(shù)據(jù)塊不是相似的數(shù)據(jù)塊,則設(shè)置i = j+Ι,并進(jìn)入步驟(4-7);如果壓縮效率大于等于1/2,則標(biāo)記第j+Ι個(gè)數(shù)據(jù)塊和引用數(shù)據(jù)塊是相似的,則設(shè)置j = j+1,并返回步驟(4-5); (4-7)判斷第i個(gè)數(shù)據(jù)塊是否為雙向鏈表中的最后一個(gè)數(shù)據(jù)塊,如果是,則過程結(jié)束,否則返回步驟(4-2); (5)對(duì)該數(shù)據(jù)塊組進(jìn)行相似判斷補(bǔ)充; (6)重復(fù)執(zhí)行步驟(4)和(5),直到處理完步驟(3)中劃分的所有數(shù)據(jù)塊組為止。
2.根據(jù)權(quán)利要求I所述的差量壓縮方法,其特征在于,步驟(2)中采用SHA-I算法、SHA-256或SHA-512算法計(jì)算每個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊指紋。
3.根據(jù)權(quán)利要求I所述的差量壓縮方法,其特征在于,數(shù)據(jù)塊組的大小為2MB。
4.根據(jù)權(quán)利要求I所述的差量壓縮算法,其特征在于,步驟(4)具體為,對(duì)于重復(fù)數(shù)據(jù)刪除處理后的數(shù)據(jù)塊組,利用該數(shù)據(jù)塊組的雙向鏈表中的重復(fù)數(shù)據(jù)信息進(jìn)行基于局部性的相似數(shù)據(jù)查找;通過查找重復(fù)數(shù)據(jù)塊相鄰的非重復(fù)數(shù)據(jù)塊,將其認(rèn)定為潛在的相似數(shù)據(jù)塊,差量壓縮這些數(shù)據(jù)塊和對(duì)應(yīng)的引用數(shù)據(jù)塊塊,并驗(yàn)證這些數(shù)據(jù)塊和引用數(shù)據(jù)塊真實(shí)相似性。
5.根據(jù)權(quán)利要求I所述的差量壓縮方法,其特征在于,步驟(5)具體為,遍歷該數(shù)據(jù)塊組中的雙向鏈表, 對(duì)于仍然非重復(fù)并非相似的數(shù)據(jù)塊,計(jì)算該數(shù)據(jù)塊的一個(gè)低開銷的超級(jí)指紋,通過查找超級(jí)指紋索引表判斷是否有匹配的超級(jí)指紋,如果有,則讀取出匹配的超級(jí)指紋所指的引用數(shù)據(jù)塊,標(biāo)記當(dāng)前數(shù)據(jù)塊和引用數(shù)據(jù)塊相似,并對(duì)這兩個(gè)相似數(shù)據(jù)塊進(jìn)行差量壓縮;若沒有,則繼續(xù)遍歷雙向鏈表。
全文摘要
本發(fā)明公開了一種基于重復(fù)數(shù)據(jù)刪除的差量壓縮方法,包括以下步驟對(duì)數(shù)據(jù)流中的文件進(jìn)行分塊,得到多個(gè)數(shù)據(jù)塊,計(jì)算每個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊指紋,用于重復(fù)數(shù)據(jù)查找,對(duì)所有數(shù)據(jù)塊進(jìn)行分組,以建立數(shù)據(jù)塊組及其雙向鏈表,并對(duì)數(shù)據(jù)塊組內(nèi)的每個(gè)數(shù)據(jù)塊進(jìn)行重復(fù)數(shù)據(jù)刪除的指紋查找,以確定是否為重復(fù)數(shù)據(jù)塊,對(duì)于重復(fù)數(shù)據(jù)刪除處理后的數(shù)據(jù)塊組,利用該數(shù)據(jù)塊組的雙向鏈表中的重復(fù)數(shù)據(jù)信息進(jìn)行基于局部性的相似數(shù)據(jù)查找,即將那些跟重復(fù)數(shù)據(jù)塊相鄰的非重復(fù)數(shù)據(jù)塊認(rèn)定為潛在的相似數(shù)據(jù)塊并加以差量壓縮驗(yàn)證其相似性,最后對(duì)數(shù)據(jù)塊組進(jìn)行基于相似性的相似性數(shù)據(jù)查找補(bǔ)充。本發(fā)明具有相似數(shù)據(jù)查找快、計(jì)算和索引開銷少、數(shù)據(jù)壓縮效率高的優(yōu)點(diǎn)。
文檔編號(hào)G06F17/30GK102831222SQ201210303650
公開日2012年12月19日 申請(qǐng)日期2012年8月24日 優(yōu)先權(quán)日2012年8月24日
發(fā)明者馮丹, 夏文, 江泓, 田磊, 付忞 申請(qǐng)人:華中科技大學(xué)