專利名稱:一種相同數(shù)據(jù)塊的自適應(yīng)識(shí)別方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)中相同數(shù)據(jù)塊的比較識(shí)別方法,特別是一種基于哈希函數(shù)的相同數(shù)據(jù)塊的自適應(yīng)識(shí)別方法
背景技術(shù):
用Hash (哈希)函數(shù)識(shí)別相同的數(shù)據(jù)塊是一種常見的技術(shù),被普遍應(yīng)用于信息系統(tǒng)的各個(gè)領(lǐng)域,比如通常運(yùn)用于服務(wù)器磁盤存儲(chǔ)的去冗系統(tǒng)(Deduplication System)會(huì)通過Hash磁盤塊內(nèi)容的方式,來找到相同內(nèi)容的冗余磁盤數(shù)據(jù)塊,并進(jìn)行消除,從而達(dá)到提 高磁盤存儲(chǔ)效率的效果。一般來說,Hash函數(shù)會(huì)將數(shù)據(jù)塊的內(nèi)容映射到一個(gè)整型值上,然后通過整型值的比較,可以加速尋找相同的數(shù)據(jù)塊的過程。已有的用以此用途的基于哈希的方法,一般都會(huì)將數(shù)據(jù)塊的全部內(nèi)容或者固定部分的內(nèi)容作為算法的輸入,不會(huì)自動(dòng)根據(jù)所運(yùn)算的數(shù)據(jù)集合的特征做算法的輸入內(nèi)容數(shù)量的自動(dòng)選取,因此在很多場合沒有辦法將算法的性能達(dá)到最優(yōu)化。舉例說明,假設(shè)一個(gè)數(shù)據(jù)集合有若干個(gè)數(shù)據(jù)塊,而這些數(shù)據(jù)塊的內(nèi)容彼此差異很大任意兩個(gè)數(shù)據(jù)塊,在相同位置上,沒有一對(duì)字節(jié)是相同的,那么,實(shí)際上,只需要Hash這個(gè)兩個(gè)數(shù)據(jù)塊當(dāng)中的相同位置的任意兩個(gè)字節(jié)即可,如果Hash它們的全部內(nèi)容則會(huì)浪費(fèi)時(shí)間。
發(fā)明內(nèi)容
發(fā)明目的本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種相同數(shù)據(jù)塊的自適應(yīng)識(shí)別方法,提高系統(tǒng)在識(shí)別相同數(shù)據(jù)塊時(shí)候的速度和效率。為了解決上述技術(shù)問題,本發(fā)明公開了一種相同數(shù)據(jù)塊的自適應(yīng)識(shí)別方法,包括以下步驟步驟I,初始化用以哈希值查找的數(shù)據(jù)結(jié)構(gòu)HStruct (可以是數(shù)組、哈希表或者查找樹中的任意一種),初始化采樣比率值HS,HS ^ 100%,分別初始化掃描計(jì)數(shù)器I,成功計(jì)數(shù)器S和沖撞計(jì)數(shù)器F為0 (定義第一個(gè)掃描周期的開始),并選定一個(gè)大小固定的數(shù)據(jù)塊DATA,數(shù)據(jù)塊DATA的為SIZE字節(jié);步驟2,從數(shù)據(jù)塊DATA中采樣出一定字節(jié)數(shù)的數(shù)據(jù),采樣字節(jié)數(shù)為HSXSIZE個(gè);步驟3,對(duì)所采樣出的數(shù)據(jù)進(jìn)行混雜操作,混雜操作為任意二元整形運(yùn)算任意組合而成,得出一個(gè)整型值大小的哈希值H ;步驟4,在查找數(shù)據(jù)結(jié)構(gòu)HStruct中查找哈希值H,如果找到另一個(gè)數(shù)據(jù)塊DTMP的哈希值值與哈希值H相等,則返回?cái)?shù)據(jù)塊DTMP,進(jìn)行步驟5,否則將數(shù)據(jù)塊DATA以哈希值H為鍵值,插入查找數(shù)據(jù)結(jié)構(gòu)HStruct,并轉(zhuǎn)至步驟12 ;數(shù)據(jù)塊DATA與數(shù)據(jù)塊DTMP位于同一存儲(chǔ)空間中,分別代表任意兩個(gè)數(shù)據(jù)塊,DATA和DTMP只是對(duì)數(shù)據(jù)塊命名的形式區(qū)分,并不指向數(shù)據(jù)塊的具體內(nèi)容。步驟5,比較數(shù)據(jù)塊DATA與數(shù)據(jù)塊DTMP的內(nèi)容,如果兩者內(nèi)容完全相同,則進(jìn)行步驟6,否則進(jìn)行步驟7;步驟6,記錄一次成功的相同數(shù)據(jù)塊識(shí)別操作(即成功計(jì)數(shù)器的值S=S+1),并將二元組〈數(shù)據(jù)塊DATA,數(shù)據(jù)塊DTMP>作為結(jié)果輸出,跳至步驟8 ;步驟7,記錄一次哈希沖撞的操作(即沖撞計(jì)數(shù)器的值F=F+1 ),進(jìn)行步驟8 ;步驟8,掃描計(jì)數(shù)器I加1,如果I小于設(shè)定閾值N(N —般大于3,小于整個(gè)數(shù)據(jù)塊集合數(shù)量的一半),轉(zhuǎn)至步驟12,否則進(jìn)行步驟9 ;步驟9,計(jì)算掃描計(jì)數(shù)器從0增長到N這整個(gè)過程中的哈希沖撞率C=F/(F+S)并計(jì)算判別函數(shù)J(C,HS),如果判別結(jié)果大于0,則增大采樣比率值,如果結(jié)果小于0,則減少采樣比率值,否則采樣比率值不變;假設(shè)定義B為此次掃描周期中,由于采樣比率HS小于100%,而比采樣全部數(shù)據(jù)塊內(nèi)容所節(jié)省的時(shí)間即B=TX (I-C) X (I-HS) XN,其中T為HS=100%時(shí),步驟3所需要時(shí)間。定義W為此次掃描周期中由于哈希沖撞而浪費(fèi)的時(shí)間,即W=MXCXN,其中M是一次比較數(shù)據(jù)塊所需要的時(shí)間,則判別函數(shù)J(C, HS)是使得B-W逐漸趨向近似極大值的判定函數(shù)。其一個(gè)典型的形式可以為
權(quán)利要求
1.一種相同數(shù)據(jù)塊的自適應(yīng)識(shí)別方法,其特征在于,包括以下步驟 步驟1,初始化用以哈希值查找的數(shù)據(jù)結(jié)構(gòu)HStruct,初始化采樣比率值HS,O ^ HS ^ 100%,分別初始化掃描計(jì)數(shù)器的值I,成功計(jì)數(shù)器的值S和沖撞計(jì)數(shù)器的值F為0,并選定一個(gè)大小固定的數(shù)據(jù)塊DATA,數(shù)據(jù)塊DATA的為SIZE字節(jié); 步驟2,從數(shù)據(jù)塊DATA中采樣出一定字節(jié)數(shù)的數(shù)據(jù),采樣字節(jié)數(shù)為HSXSIZE個(gè); 步驟3,對(duì)所采樣出的數(shù)據(jù)進(jìn)行混雜操作,得出一個(gè)整型值大小的哈希值H ; 步驟4,在查找數(shù)據(jù)結(jié)構(gòu)HStruct中查找哈希值H,如果找到另一個(gè)數(shù)據(jù)塊DTMP的哈希值與哈希值H相等,則返回?cái)?shù)據(jù)塊DTMP,進(jìn)行步驟5,否則將數(shù)據(jù)塊DATA以哈希值H為鍵值,插入查找數(shù)據(jù)結(jié)構(gòu)HStruct,并轉(zhuǎn)至步驟12 ; 步驟5,比較數(shù)據(jù)塊DATA與數(shù)據(jù)塊DTMP的內(nèi)容,如果兩者內(nèi)容完全相同,則進(jìn)行 步驟6,否則進(jìn)行步驟7 ; 步驟6,記錄一次成功的相同數(shù)據(jù)塊識(shí)別操作,即令成功計(jì)數(shù)器的值S=S+1,并將二元組〈數(shù)據(jù)塊DATA,數(shù)據(jù)塊DTMP>作為結(jié)果輸出,跳至步驟8 ; 步驟7,記錄一次哈希沖撞的操作,即沖撞計(jì)數(shù)器的值F=F+1,進(jìn)行步驟8 ; 步驟8,掃描計(jì)數(shù)器的值I加1,如果I小于設(shè)定閾值N,轉(zhuǎn)至步驟12,否則進(jìn)行步驟9 ;步驟9,計(jì)算掃描計(jì)數(shù)器從(TN范圍時(shí)間內(nèi)的哈希沖撞率C=F/ (F+S)并計(jì)算判別函數(shù)J(C,HS),其中,HS為當(dāng)前的采樣比率,如果判別結(jié)果大于0,則增大采樣比率值,如果結(jié)果小于0,則減少采樣比率值,否則采樣比率值不變; 步驟10,如果上步驟中采樣比率值發(fā)生改變,令變化后的采樣比率值為HSnew,根據(jù)采樣比率值HSnew對(duì)查找數(shù)據(jù)結(jié)構(gòu)HStruct中已有數(shù)據(jù)塊進(jìn)行混雜操作,得到更新后的哈希值,混雜操作的采樣字節(jié)數(shù)為IHS-HSnew I X SIZE個(gè); 步驟11,掃描計(jì)數(shù)器的值I,成功計(jì)數(shù)器的值S和沖撞計(jì)數(shù)器的值F分別置0,并標(biāo)記為本掃描周期的結(jié)束和下一個(gè)掃描周期的開始; 步驟12,選擇下一個(gè)數(shù)據(jù)塊作為數(shù)據(jù)塊DATA,返回步驟2,直到所有數(shù)據(jù)塊遍歷結(jié)束。
2.根據(jù)權(quán)利要求I所述的一種相同數(shù)據(jù)塊的自適應(yīng)識(shí)別方法,其特征在于,所述查找數(shù)據(jù)結(jié)構(gòu)Hstruct為數(shù)組、哈希表或者查找樹中的任意一種。
3.根據(jù)權(quán)利要求I所述的一種相同數(shù)據(jù)塊的自適應(yīng)識(shí)別方法,其特征在于,所述混雜操作為任意二元整形運(yùn)算任意組合而成。
4.根據(jù)權(quán)利要求I所述的一種相同數(shù)據(jù)塊的自適應(yīng)識(shí)別方法,其特征在于,所述判別函數(shù)J(C,HS)是使得B-W逐漸趨向近似極大值的判定函數(shù),其中,W為一次掃描周期中由于哈希沖撞而浪費(fèi)的時(shí)間,W=MXCXN,其中M是一次比較數(shù)據(jù)塊所需要的時(shí)間; B為一次掃描周期中,采用當(dāng)前的采樣比率值HS比采用100%的采樣比率所節(jié)省的時(shí)間B=TX (I-C) X (I-HS) XN,其中T為假設(shè)HS=100%時(shí)步驟3所需要的時(shí)間。
全文摘要
本發(fā)明提出了一種相同數(shù)據(jù)塊的自適應(yīng)識(shí)別方法,包括初始采樣比率值,數(shù)據(jù)塊字節(jié),數(shù)據(jù)塊內(nèi)容,采樣數(shù)據(jù)塊中的內(nèi)容,并對(duì)其進(jìn)行混雜操作,得出其哈希值。根據(jù)哈希值,進(jìn)行哈希表或者查找樹的查詢操作,找出有相同的哈希值的數(shù)據(jù)塊,然后進(jìn)行全內(nèi)容比較,進(jìn)一步確認(rèn)相同性。如果最終確認(rèn)兩者其實(shí)不相同,那么這兩個(gè)數(shù)據(jù)塊構(gòu)成一次哈希沖撞。每一個(gè)時(shí)間段統(tǒng)計(jì)這段時(shí)間以內(nèi)的哈希沖撞率,并根據(jù)此沖撞率自適應(yīng)調(diào)整采樣值HS。由于采樣率越低,哈希計(jì)算越快,本發(fā)明夠在一批數(shù)據(jù)集上自適應(yīng)到達(dá)一個(gè)最優(yōu)化的采樣值,進(jìn)而到達(dá)一個(gè)最快的相同數(shù)據(jù)識(shí)別速度。本發(fā)明提出的算法可以大幅度提升去冗系統(tǒng)在尋找冗余數(shù)據(jù)時(shí)候的效率。
文檔編號(hào)G06F17/30GK102722557SQ201210171858
公開日2012年10月10日 申請(qǐng)日期2012年5月29日 優(yōu)先權(quán)日2012年5月29日
發(fā)明者夏耐 申請(qǐng)人:南京大學(xué)