一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法
【專利摘要】本發(fā)明涉及一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法,包括:(1)將位于低速存儲介質(zhì)中的數(shù)據(jù)按照預(yù)設(shè)大小均分地分割成多個數(shù)據(jù)塊;(2)針對每個數(shù)據(jù)塊進行如下操作:i.計算得到該數(shù)據(jù)塊對應(yīng)的hash值;ii.在最高速存儲介質(zhì)中查找是否已存在該hash值,若存在,則刪除該數(shù)據(jù)塊并后保存一個指針,該指針指向已存在的與該數(shù)據(jù)塊內(nèi)容相同的數(shù)據(jù)塊;iii.在高速存儲介質(zhì)中查找是否已存在該hash值,若存在,則刪除該數(shù)據(jù)塊后只保存一個指針,該指針指向已存在的與該數(shù)據(jù)塊內(nèi)容相同的數(shù)據(jù)塊,并將該hash值存入最高速存儲介質(zhì)中。與現(xiàn)有技術(shù)相比,本發(fā)明具使用高速存儲介質(zhì)加快指紋查找速度,從而提升了重刪效率,繼而提高了寫IO的性能。
【專利說明】一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)據(jù)清理方法,尤其是涉及一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法。
【背景技術(shù)】
[0002]過去數(shù)年間,隨著計算機的普及和信息技術(shù)的進步,各行各業(yè)都在經(jīng)歷著數(shù)據(jù)量的爆炸性增長。不論是由于互聯(lián)網(wǎng)、電子郵件的出現(xiàn),還是越來越龐大、需要大量介質(zhì)的應(yīng)用軟件所致,數(shù)據(jù)量現(xiàn)已呈現(xiàn)出了巨大的增長態(tài)勢。數(shù)據(jù)正在日益成為公司的實際資產(chǎn)之一,支撐著公司正常、高效的運轉(zhuǎn)。
[0003]伴隨著數(shù)據(jù)爆炸性的增長,所需要的存儲容量也越來越大,相應(yīng)的,無論是管理成本、還是存儲介質(zhì)成本,都越來越高。而另一方面,在海量的數(shù)據(jù)背后,存在著大量的冗余數(shù)據(jù),導(dǎo)致磁盤利用率太低。為了應(yīng)對這個挑戰(zhàn),在將數(shù)據(jù)寫到存儲介質(zhì)中時,會進行重復(fù)數(shù)據(jù)刪除。
[0004]重復(fù)數(shù)據(jù)刪除技術(shù)解決方案的基本步驟是:分塊、指紋計算、查重、更新。分塊的功能是按照一定的粒度將數(shù)據(jù)流切分為數(shù)據(jù)塊。指紋計算則是指將切分好的數(shù)據(jù)塊進行hash計算,產(chǎn)生唯一的一個標(biāo)識,稱為指紋。用這個指紋去指紋庫中匹配,匹配成功則認(rèn)為該塊是重復(fù)塊,不再將實際數(shù)據(jù)寫入磁盤,而只是保存一個指針指向已存在的數(shù)據(jù)塊,否則就將該數(shù)據(jù)塊及其指紋保存到磁盤中。
[0005]傳統(tǒng)上,指紋庫和數(shù)據(jù)保存在同一介質(zhì)中,即磁盤上,因而每次查找的時候都需要查找磁盤。機械磁盤對于隨機1的讀寫性能都比較差,而由于指紋庫的龐大,指紋的查找過程就變成了隨機10,因此開啟了重刪功能的備份速度非常慢。
[0006]加快指紋查找速度,可以有多種辦法。一是使用更加高端的磁盤作為存儲介質(zhì),如更高的轉(zhuǎn)速及高密度的機械式磁盤以及利用固態(tài)磁盤(SSD)替換機械式。其次是增加系統(tǒng)的內(nèi)存量,通過操作系統(tǒng)自身的磁盤緩沖技術(shù)來加快數(shù)據(jù)的訪問。但是將所有數(shù)據(jù)存儲在這樣的高速介質(zhì)中,固然是一個解決數(shù)據(jù)訪問速度的直接有效的方案。但是在數(shù)據(jù)量的總量很大的情況下,完全采用高端磁盤,其增加的成本將會出現(xiàn)幾倍,甚至是幾十倍的增長。除非對一些關(guān)鍵應(yīng)用,否則這樣的存儲方案其性價比是得不償失的,在預(yù)算有限的情況下,用戶也無法承受這樣的成本壓力。而增加系統(tǒng)的內(nèi)存量,隨著磁盤容量越來越大,所需要的內(nèi)存容量也越來越大,結(jié)果就是內(nèi)存容量無法跟上指紋庫的膨脹速度。
[0007]如果將指紋庫與數(shù)據(jù)分開保存,數(shù)據(jù)仍保存在機械磁盤中,指紋庫保存在高速存儲介質(zhì)中,利用高速存儲介質(zhì)相對機械磁盤無與倫比的讀寫性能,就能明顯提升重刪數(shù)據(jù),最終提升數(shù)據(jù)備份的速度。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法。
[0009]本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn):
[0010]一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法,其特征在于,包括以下步驟
[0011](I)將位于低速存儲介質(zhì)中的數(shù)據(jù)按照預(yù)設(shè)大小均分地分割成多個數(shù)據(jù)塊;
[0012](2)針對每個數(shù)據(jù)塊進行如下操作:
[0013]1.計算得到該數(shù)據(jù)塊對應(yīng)的hash值;
[0014]i1.在最高速存儲介質(zhì)中查找是否已存在該hash值,若存在,則刪除該數(shù)據(jù)塊并后保存一個指針,該指針指向已存在的與該數(shù)據(jù)塊內(nèi)容相同的數(shù)據(jù)塊;若不存在,則進行步驟 iii ;
[0015]ii1.在高速存儲介質(zhì)中查找是否已存在該hash值,若存在,則刪除該數(shù)據(jù)塊后只保存一個指針,該指針指向已存在的與該數(shù)據(jù)塊內(nèi)容相同的數(shù)據(jù)塊,并將該hash值存入最高速存儲介質(zhì)中;若不存在,則將該hash值存入高速存儲介質(zhì)和最高速存儲介質(zhì)中。
[0016]所述步驟2的iii中將hash值存入高速存儲介質(zhì)后,設(shè)定數(shù)量的hash值組合成hash組,并在最高速存儲介質(zhì)中保存一個與每個hash組對應(yīng)的索引表;
[0017]所述步驟2的iii中在高速存儲介質(zhì)中查找是否已存在該hash值的方法具體為:根據(jù)hash值在所述索引表中查找該hash值所在的hash組,并進一步在該hash組中查找該hash值。
[0018]所述hash值按照數(shù)據(jù)塊的邏輯地址進行分組,每個hash組中的hash值對應(yīng)的數(shù)據(jù)塊在邏輯地址上是連續(xù)的。
[0019]所述的步驟2的iii中將該hash值存入最高速存儲介質(zhì)中的方法具體為:將該hash值所在的hash組存入最高速存儲介質(zhì)中。
[0020]所述hash組中hash值數(shù)量由高速存儲介質(zhì)特性以及hash值大小決定。以SSD為例,假定page大小為4K,hash值大小為128字節(jié),則一個hash組中至少包含有32個hash值??梢园嗟膆ash值,但應(yīng)該是page的整數(shù)倍,以適應(yīng)SSD的整條寫的特點。
[0021 ] 所述的最高速存儲介質(zhì)可以為內(nèi)存。
[0022]所述的高速存儲介質(zhì)可以為NVDIMM、NVRAM、SAS SSD或PC1-E SSD。
[0023]所述的低速存儲介質(zhì)可以為機械磁盤。
[0024]與現(xiàn)有技術(shù)相比,本發(fā)明可以達到如下的效果:
[0025]1.使用高速存儲介質(zhì)加快指紋查找速度,從而提升了重刪效率,繼而提高了寫1的性能。同時,未訪問低速磁盤,不影響低速磁盤設(shè)備響應(yīng)其它1請求。
[0026]2.由于重復(fù)數(shù)據(jù)得到刪除,所以磁盤利用率得到提高,不僅降低企業(yè)存儲介質(zhì)成本,還減少了數(shù)據(jù)管理成本。
【專利附圖】
【附圖說明】
[0027]圖1:數(shù)據(jù)塊指紋組織結(jié)構(gòu)圖;
[0028]圖2:指紋查找處理流程圖。
【具體實施方式】
[0029]下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細說明。
[0030]本發(fā)明通過將指紋庫和實際數(shù)據(jù)分離,將全部指紋保存在高速存儲介質(zhì),加速指紋查找過程,提高重刪效率。為了實現(xiàn)上述目的,本發(fā)明的關(guān)鍵技術(shù)包含以下幾個要點:
[0031]1.在主存和低速磁盤之間增加高速存儲介質(zhì),將指紋庫從原來低速磁盤中移出,單獨保存在高速存儲介質(zhì)中。
[0032]2.為適應(yīng)這種模式,引入了新的數(shù)據(jù)組織方式。先將低速磁盤上的數(shù)據(jù)進行切分,可使用任意一種切分方式。每個切分后的數(shù)據(jù)塊,通過hash函數(shù),產(chǎn)生唯一的指紋。一定數(shù)量的指紋組合成一個指紋組。指紋組中指紋數(shù)量由高速存儲介質(zhì)特性以及指紋大小決定。以SSD為例,假定page大小為4K,指紋大小為128字節(jié),則一個指紋組中至少包含有32個指紋。可以包含更多的指紋。但應(yīng)該是page的整數(shù)倍,以適應(yīng)SSD的整條寫的特點。除此之外,一個指紋組中的指紋對應(yīng)的的數(shù)據(jù)塊在邏輯地址上應(yīng)該是連續(xù)的。
[0033]受限于主存大小,高速存儲介質(zhì)中的指紋不可能全部保存到主存中,當(dāng)主存未命中時,就需要訪問高速存儲介質(zhì),每次訪問高速存儲介質(zhì)中的指紋就將其所屬指紋組中的所有指紋都讀入主存中,有效減少訪問高速存儲介質(zhì)的次數(shù)。為了加快訪問高速存儲介質(zhì)的速度,必須在內(nèi)存中對它建立索引方便查找,主存中的hash表就是為此設(shè)計的。新的數(shù)據(jù)組織結(jié)構(gòu)如下圖1所示.
[0034]在本發(fā)明中,將原來保存在低速磁盤中的和數(shù)據(jù)保存在一起的指紋庫移到了高速存儲介質(zhì)中,并設(shè)計了適合于這種情形的數(shù)據(jù)結(jié)構(gòu),因而原來的指紋查找過程不再適用,需要使用新的指紋查找過程替換先前的查找過程。根據(jù)圖2,下面描述一下這個查找過程:
[0035]I)首先在主存中查找,若匹配則該數(shù)據(jù)塊已存在,只需要寫入指向已存在的數(shù)據(jù)塊指針即可,本次寫入完成。
[0036]2)若主存中查找不到,則從高速存儲介質(zhì)中查找。若命中,則說明該數(shù)據(jù)塊是一個重復(fù)塊,只需要寫入指向已存在的數(shù)據(jù)塊的指針即可,本次寫入完成。同時,根據(jù)數(shù)據(jù)局部性原理,該指紋組中的數(shù)據(jù)在隨后可能還會被使用,所以需要將該指紋組從高速存儲介質(zhì)中讀到主存中。
[0037]3)若高速存儲介質(zhì)中也查找不到,則說明該數(shù)據(jù)塊是一個新塊,需要計算出該數(shù)據(jù)塊的指紋,并保存到高速存儲介質(zhì)中。
【權(quán)利要求】
1.一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法,其特征在于,包括以下步驟 (1)將位于低速存儲介質(zhì)中的數(shù)據(jù)按照預(yù)設(shè)大小均分地分割成多個數(shù)據(jù)塊; (2)針對每個數(shù)據(jù)塊進行如下操作: 1.計算得到該數(shù)據(jù)塊對應(yīng)的hash值; ?.在最高速存儲介質(zhì)中查找是否已存在該hash值,若存在,則刪除該數(shù)據(jù)塊并后保存一個指針,該指針指向已存在的與該數(shù)據(jù)塊內(nèi)容相同的數(shù)據(jù)塊;若不存在,則進行步驟iii ; ii1.在高速存儲介質(zhì)中查找是否已存在該hash值,若存在,則刪除該數(shù)據(jù)塊后只保存一個指針,該指針指向已存在的與該數(shù)據(jù)塊內(nèi)容相同的數(shù)據(jù)塊,并將該hash值存入最高速存儲介質(zhì)中;若不存在,則將該hash值存入高速存儲介質(zhì)和最高速存儲介質(zhì)中。
2.根據(jù)權(quán)利要求1所述的一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法,其特征在于,所述步驟2的iii中將hash值存入高速存儲介質(zhì)后,設(shè)定數(shù)量的hash值組合成hash組,并在最高速存儲介質(zhì)中保存一個與每個hash組對應(yīng)的索引表; 所述步驟2的iii中在高速存儲介質(zhì)中查找是否已存在該hash值的方法具體為:根據(jù)hash值在所述索引表中查找該hash值所在的hash組,并進一步在該hash組中查找該hash 值。
3.根據(jù)權(quán)利要求2所述的一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法,其特征在于,所述hash值按照數(shù)據(jù)塊的邏輯地址進行分組,每個hash組中的hash值對應(yīng)的數(shù)據(jù)塊在邏輯地址上是連續(xù)的。
4.根據(jù)權(quán)利要求3所述的一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法,其特征在于,所述的步驟2的iii中將該hash值存入最高速存儲介質(zhì)中的方法具體為:將該hash值所在的hash組存入最高速存儲介質(zhì)中。
5.根據(jù)權(quán)利要求4所述的一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法,其特征在于,所述的每個hash組包含32個hash值。
6.根據(jù)權(quán)利要求1-5中任意所述的一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法,其特征在于,所述的最高速存儲介質(zhì)為內(nèi)存。
7.根據(jù)權(quán)利要求1-5中任意所述的一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法,其特征在于,所述的高速存儲介質(zhì)為NVDI麗、NVRAM、SAS SSD或PC1-E SSD。
8.根據(jù)權(quán)利要求1-5中任意所述的一種基于級聯(lián)式存儲介質(zhì)的冗余數(shù)據(jù)清理方法,其特征在于,所述的低速存儲介質(zhì)為機械磁盤。
【文檔編號】G06F3/06GK104462388SQ201410756525
【公開日】2015年3月25日 申請日期:2014年12月10日 優(yōu)先權(quán)日:2014年12月10日
【發(fā)明者】朱勁松 申請人:上海愛數(shù)軟件有限公司