基于指紋的數(shù)據(jù)重復(fù)刪除的制作方法
【專利摘要】在計(jì)算環(huán)境中備份的存儲(chǔ)對(duì)象常常是包括許多個(gè)別存儲(chǔ)對(duì)象的合成存儲(chǔ)對(duì)象。計(jì)算環(huán)境的計(jì)算設(shè)備通過(guò)對(duì)數(shù)據(jù)范圍確定哈希值把存儲(chǔ)對(duì)象分成數(shù)據(jù)塊。當(dāng)?shù)竭_(dá)存儲(chǔ)對(duì)象的結(jié)束時(shí),計(jì)算設(shè)備創(chuàng)建人工塊邊界。當(dāng)為存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束創(chuàng)建人工塊邊界時(shí),計(jì)算設(shè)備存儲(chǔ)用于該人工塊邊界的偽指紋。如果哈希值匹配指紋或偽指紋,則計(jì)算設(shè)備確定該數(shù)據(jù)范圍對(duì)應(yīng)于塊并且計(jì)算設(shè)備定義塊邊界。人工塊邊界的偽指紋允許在合成文件中識(shí)別人工塊邊界?;谠趥沃讣y列表上所存儲(chǔ)的偽指紋,在重復(fù)刪除過(guò)程中冗余數(shù)據(jù)被更高效地消除。
【專利說(shuō)明】基于指紋的數(shù)據(jù)重復(fù)刪除
【技術(shù)領(lǐng)域】
[0001]本發(fā)明一般而言涉及數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)存儲(chǔ)系統(tǒng)中的檢索操作,并且更具體地說(shuō),涉及為了基于指紋的重復(fù)刪除的優(yōu)化而識(shí)別塊邊界。
【背景技術(shù)】
[0002]數(shù)據(jù)重復(fù)刪除消除冗余數(shù)據(jù),以提高存儲(chǔ)利用率并減少經(jīng)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)量。重復(fù)刪除減少所需的存儲(chǔ)容量和網(wǎng)絡(luò)帶寬,這是因?yàn)橐粋€(gè)獨(dú)特的數(shù)據(jù)單元只有一個(gè)拷貝被存儲(chǔ)和/或發(fā)送?;诒P的存儲(chǔ)系統(tǒng),諸如存儲(chǔ)管理服務(wù)器和卷帶庫(kù)(VTL),可以通過(guò)避免這種數(shù)據(jù)的冗余傳送和/或存儲(chǔ)來(lái)實(shí)現(xiàn)檢測(cè)冗余數(shù)據(jù)并減少重復(fù)的重復(fù)刪除技術(shù)。
【發(fā)明內(nèi)容】
[0003]所描述的是計(jì)算環(huán)境中用于為基于指紋的重復(fù)刪除的優(yōu)化而識(shí)別塊邊界的一個(gè)發(fā)明的實(shí)施例。在計(jì)算環(huán)境中備份的存儲(chǔ)對(duì)象常常是包括許多個(gè)別存儲(chǔ)對(duì)象的合成存儲(chǔ)對(duì)象。計(jì)算環(huán)境的計(jì)算設(shè)備通過(guò)對(duì)數(shù)據(jù)范圍確定哈希值來(lái)把存儲(chǔ)對(duì)象分成數(shù)據(jù)塊。當(dāng)?shù)竭_(dá)存儲(chǔ)對(duì)象的結(jié)束時(shí),計(jì)算設(shè)備創(chuàng)建人工塊邊界。當(dāng)為存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束創(chuàng)建人工塊邊界時(shí),計(jì)算設(shè)備存儲(chǔ)用于該人工塊邊界的偽指紋。如果哈希值匹配指紋或偽指紋,則計(jì)算設(shè)備確定該數(shù)據(jù)范圍對(duì)應(yīng)于塊并且計(jì)算設(shè)備定義塊邊界。人工塊邊界的偽指紋允許在合成文件中識(shí)別人工塊邊界。因而,基于在偽指紋列表上所存儲(chǔ)的偽指紋,計(jì)算環(huán)境在重復(fù)刪除過(guò)程中更高效地消除冗余數(shù)據(jù)。
[0004]例如,用于刪除存儲(chǔ)對(duì)象的重復(fù)的計(jì)算機(jī)實(shí)現(xiàn)的方法的一個(gè)實(shí)施例包括為存儲(chǔ)對(duì)象的數(shù)據(jù)窗口確定塊識(shí)別哈希值并且確定該塊識(shí)別哈希值是否匹配指紋或存儲(chǔ)的偽指紋。另外,該方法確定該數(shù)據(jù)窗口是否是該存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束。如果確定該數(shù)據(jù)窗口是該存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束,該方法定義該存儲(chǔ)對(duì)象中對(duì)應(yīng)于該數(shù)據(jù)窗口的塊的塊邊界,并且存儲(chǔ)該塊的塊邊界。
[0005]該方法還確定關(guān)于存儲(chǔ)對(duì)象的該塊的塊唯一性哈希并且在用于存儲(chǔ)對(duì)象的該塊的重復(fù)刪除索引中存儲(chǔ)該塊唯一性哈希信息。該方法通過(guò)確定該塊識(shí)別哈希值是否滿足預(yù)定的數(shù)學(xué)性質(zhì)來(lái)確定該塊識(shí)別哈希值是否匹配已知的指紋。
[0006]在一種實(shí)施例中,存儲(chǔ)對(duì)象的該塊的偽指紋作為偽指紋存儲(chǔ)在偽指紋列表上。另夕卜,在一種實(shí)施例中,確定塊識(shí)別哈希值是否匹配偽指紋的方法包括確定塊識(shí)別哈希值是否存儲(chǔ)在偽指紋列表上。
[0007]該方法可以通過(guò)計(jì)算存儲(chǔ)對(duì)象的數(shù)據(jù)窗口的滾動(dòng)哈希值來(lái)確定存儲(chǔ)對(duì)象的數(shù)據(jù)窗口的塊識(shí)別哈希值。在一種實(shí)施例中,滾動(dòng)哈??梢允荎arp-Rabin滾動(dòng)哈希。
[0008]該方法還包括當(dāng)確定該塊識(shí)別哈希值匹配指紋時(shí),定義存儲(chǔ)對(duì)象中對(duì)應(yīng)于數(shù)據(jù)窗口的塊,并且存儲(chǔ)該塊的塊邊界。最后,該方法包括,當(dāng)確定該數(shù)據(jù)窗口不是存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束時(shí),確定另一數(shù)據(jù)窗口的塊識(shí)別哈希值。該方法確定所確定的另一塊的塊識(shí)別哈希值是否匹配指紋或存儲(chǔ)的偽指紋。[0009]在包括其中包含計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的計(jì)算機(jī)程序產(chǎn)品的一個(gè)實(shí)施例中,程序代碼執(zhí)行以執(zhí)行操作,其中操作包括為存儲(chǔ)對(duì)象的數(shù)據(jù)窗口確定塊識(shí)別哈希值并且確定該塊識(shí)別哈希值是否匹配指紋或存儲(chǔ)的偽指紋。該操作還包括,如果確定存儲(chǔ)對(duì)象的數(shù)據(jù)窗口的塊識(shí)別哈希值不匹配指紋或存儲(chǔ)的偽指紋,則確定該數(shù)據(jù)窗口是否是存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束。如果確定該數(shù)據(jù)窗口是存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束,該操作還定義存儲(chǔ)對(duì)象中對(duì)應(yīng)于該數(shù)據(jù)窗口的塊的塊邊界,并且存儲(chǔ)該塊的塊邊界。
[0010]在計(jì)算環(huán)境的計(jì)算設(shè)備的另一種實(shí)施例中,該設(shè)備包括耦合到處理器的存儲(chǔ)器。存儲(chǔ)器包括由處理器實(shí)現(xiàn)的指令,以便為存儲(chǔ)對(duì)象的數(shù)據(jù)窗口確定塊識(shí)別哈希值并且確定該塊識(shí)別哈希值是否匹配指紋或存儲(chǔ)的偽指紋。如果確定存儲(chǔ)對(duì)象的數(shù)據(jù)窗口的塊識(shí)別哈希值既不匹配指紋又不匹配所存儲(chǔ)的偽指紋,則處理器確定該數(shù)據(jù)窗口是否是存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束。如果確定該數(shù)據(jù)窗口是存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束,處理器還定義存儲(chǔ)對(duì)象中對(duì)應(yīng)于該數(shù)據(jù)窗口的塊的塊邊界,并且存儲(chǔ)該塊的塊邊界。
【專利附圖】
【附圖說(shuō)明】
[0011]僅僅是作為例子,現(xiàn)在將參考附圖描述本發(fā)明的實(shí)施例,其中:
[0012]圖1說(shuō)明了根據(jù)本發(fā)明一個(gè)實(shí)施例、執(zhí)行數(shù)據(jù)操作的計(jì)算環(huán)境;
[0013]圖2說(shuō)明了根據(jù)本發(fā)明一個(gè)實(shí)施例的重復(fù)刪除索引條目;
[0014]圖3說(shuō)明了根據(jù)本發(fā)明一個(gè)實(shí)施例的偽指紋列表?xiàng)l目;
[0015]圖4是說(shuō)明根據(jù)本發(fā)明一個(gè)實(shí)施例、定義存儲(chǔ)對(duì)象的塊邊界的流程圖;
[0016]圖5是說(shuō)明根據(jù)本發(fā)明一個(gè)實(shí)施例、定義存儲(chǔ)對(duì)象的塊邊界的圖;
[0017]圖6是說(shuō)明根據(jù)本發(fā)明一個(gè)實(shí)施例的計(jì)算環(huán)境的執(zhí)行的圖;及
[0018]圖7說(shuō)明了可以根據(jù)某些實(shí)施例使用的計(jì)算系統(tǒng)。
[0019]根據(jù)一種或多種實(shí)施例,在不同的圖中用相同標(biāo)號(hào)引用的本發(fā)明的特征、元素和方面代表相同的、等效的或者相似的特征、元素或方面。
【具體實(shí)施方式】
[0020]所描述的是計(jì)算環(huán)境中用于為基于指紋的重復(fù)刪除的優(yōu)化而識(shí)別塊邊界的一個(gè)發(fā)明的實(shí)施例。在計(jì)算環(huán)境中備份的存儲(chǔ)對(duì)象常常是包括許多個(gè)別存儲(chǔ)對(duì)象的合成存儲(chǔ)對(duì)象。計(jì)算環(huán)境的計(jì)算設(shè)備通過(guò)對(duì)數(shù)據(jù)范圍確定哈希值來(lái)把存儲(chǔ)對(duì)象分成數(shù)據(jù)塊。當(dāng)?shù)竭_(dá)存儲(chǔ)對(duì)象的結(jié)束時(shí),計(jì)算設(shè)備創(chuàng)建人工塊邊界。當(dāng)為存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束創(chuàng)建人工塊邊界時(shí),計(jì)算設(shè)備存儲(chǔ)用于該人工塊邊界的偽指紋。如果哈希值匹配指紋或偽指紋,則計(jì)算設(shè)備確定該數(shù)據(jù)范圍對(duì)應(yīng)于塊并且計(jì)算設(shè)備定義塊邊界。人工塊邊界的偽指紋允許合成文件中人工塊邊界的識(shí)別。因而,基于在偽指紋列表上所存儲(chǔ)的偽指紋,計(jì)算環(huán)境在重復(fù)刪除過(guò)程中更高效地消除冗余數(shù)據(jù)。
[0021]但是,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)很顯然,本發(fā)明的實(shí)施例也可以在沒(méi)有這些具體細(xì)節(jié)中的一些或全部的情況下實(shí)踐。在其它情況下,眾所周知的過(guò)程操作沒(méi)有詳細(xì)描述,以防止模糊本文所述本發(fā)明的實(shí)施例。
[0022]數(shù)據(jù)重復(fù)刪除是一種用于消除冗余數(shù)據(jù)以提高存儲(chǔ)利用率并減少經(jīng)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)量的數(shù)據(jù)壓縮技術(shù)。重復(fù)刪除減少所需的存儲(chǔ)容量和網(wǎng)絡(luò)帶寬,因?yàn)橐粋€(gè)獨(dú)特?cái)?shù)據(jù)單元,也稱為塊,只有一個(gè)拷貝被存儲(chǔ)和/或發(fā)送。執(zhí)行重復(fù)刪除的計(jì)算環(huán)境通過(guò)把存儲(chǔ)對(duì)象分成一系列塊來(lái)操作,其中每個(gè)塊由塊邊界定義。邊界,或者說(shuō)塊邊界,指數(shù)據(jù)中定義塊的終點(diǎn)的位置。兩個(gè)相繼的邊界定義對(duì)應(yīng)塊的兩個(gè)終點(diǎn)。在一種實(shí)施例中,存儲(chǔ)對(duì)象可以利用哈希函數(shù)(諸如滾動(dòng)哈希)分成塊。這個(gè)初始哈希值識(shí)別塊的邊界,而不確定塊的唯一性。初始哈希在本文中被稱為塊識(shí)別哈希,并且塊的塊識(shí)別哈希值在本文中可以被稱為指紋。在一種實(shí)施例中,塊識(shí)別哈希可以是諸如Karp-Rabin哈希(也稱為Karp-Rabin指紋)的滾動(dòng)哈希,但是,可以使用任何分塊算法。
[0023]計(jì)算環(huán)境確定是否已經(jīng)存儲(chǔ)了任何塊。通過(guò)對(duì)每個(gè)塊利用輔助哈希函數(shù),諸如MD5(消息摘要算法5)或SHA-U安全哈希算法I),以產(chǎn)生用于塊的輔助哈希值(也稱為摘要),然后比較這些輔助哈希值與塊的已經(jīng)在系統(tǒng)上存儲(chǔ)的哈希值,可以檢測(cè)冗余的塊。輔助哈希確定塊的唯一性并且在本文中可以被稱為塊唯一性哈希,以便與塊識(shí)別哈希區(qū)分。用于所存儲(chǔ)的塊的哈希值可以在諸如重復(fù)刪除索引的索引中維護(hù)。塊可以通過(guò)哈希值和塊尺寸唯一地識(shí)別。所考慮的塊的哈希值在重復(fù)刪除索引中查找。如果對(duì)該哈希值和尺寸找到一個(gè)條目,則識(shí)別出冗余的塊,并且集合或?qū)ο笾械脑搲K可以用指向儲(chǔ)存器中所維護(hù)的匹配塊的指針代替。因而,計(jì)算環(huán)境只存儲(chǔ)非冗余的塊。
[0024]對(duì)緩沖區(qū)數(shù)組中的數(shù)據(jù)滑動(dòng)窗口,例如48個(gè)字節(jié),執(zhí)行確定塊邊界的塊識(shí)別哈希。計(jì)算環(huán)境確定對(duì)該數(shù)據(jù)窗口確定的哈希值是否匹配指紋。在一種實(shí)施例中,通過(guò)確定哈希值是否滿足用于確定塊邊界的預(yù)定數(shù)學(xué)性質(zhì),計(jì)算設(shè)備確定該哈希值是否匹配指紋。如果所確定的塊識(shí)別哈希值不匹配預(yù)定的數(shù)學(xué)性質(zhì),則數(shù)組中最舊的字節(jié)被最新的字節(jié)代替并且再次確定哈希值。如果所確定的哈希值匹配預(yù)定的數(shù)學(xué)性質(zhì),則為該塊定義塊邊界。但是,當(dāng)計(jì)算環(huán)境到達(dá)存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束并且所確定的哈希值不匹配預(yù)定的數(shù)學(xué)性質(zhì)時(shí),計(jì)算環(huán)境創(chuàng)建人工塊邊界。術(shù)語(yǔ)“人工塊邊界”將在本文中用于描述以非普通方式,諸如在指紋不匹配預(yù)定數(shù)學(xué)性質(zhì)時(shí),創(chuàng)建的塊邊界。
[0025]通常,客戶端將具有帶多個(gè)個(gè)別文件的合成文件或存儲(chǔ)對(duì)象。例如,考慮來(lái)自用戶A的電子郵件,該郵件包括用戶A的文本、作為pdf附帶的用戶A的演示文稿,以及來(lái)自用戶B的關(guān)于該演示文稿的轉(zhuǎn)發(fā)的文本注解。雖然用戶A的文本可以是新生成的數(shù)據(jù),但用戶A的演示文稿和來(lái)自用戶B的關(guān)于該演示文稿的文本注解可能之前已經(jīng)存儲(chǔ)在客戶端并且在服務(wù)器處備份。每個(gè)個(gè)別的存儲(chǔ)對(duì)象都具有數(shù)據(jù)結(jié)束。如果單獨(dú)地進(jìn)行重復(fù)刪除,則計(jì)算環(huán)境將在用戶A的文本的數(shù)據(jù)結(jié)束創(chuàng)建一個(gè)人工塊結(jié)束,在演示文稿的數(shù)據(jù)結(jié)束創(chuàng)建另一人工塊結(jié)束,并且在來(lái)自用戶B的注解的數(shù)據(jù)結(jié)束創(chuàng)建另一人工塊結(jié)束。相反,如果整個(gè)電子郵件(例如,用戶A的文本、演示文稿和用戶B的注解)作為單個(gè)存儲(chǔ)對(duì)象進(jìn)行重復(fù)刪除,則計(jì)算系統(tǒng)將在塊識(shí)別哈希值匹配指紋的時(shí)候,而不是在個(gè)別文件中創(chuàng)建人工塊邊界的位置處,創(chuàng)建塊。由于在對(duì)合成存儲(chǔ)對(duì)象進(jìn)行重復(fù)刪除時(shí)所創(chuàng)建的塊邊界不匹配在對(duì)個(gè)別存儲(chǔ)對(duì)象進(jìn)行重復(fù)刪除時(shí)所創(chuàng)建的塊邊界,因此不是所有冗余的數(shù)據(jù)塊都能通過(guò)塊唯一性哈希函數(shù)來(lái)識(shí)別。因而,當(dāng)采用前面的重復(fù)刪除方法時(shí),冗余數(shù)據(jù)的消除沒(méi)有被完全優(yōu)化。
[0026]根據(jù)一種實(shí)施例,圖1是說(shuō)明執(zhí)行數(shù)據(jù)操作的計(jì)算環(huán)境I的圖,其中的數(shù)據(jù)操作諸如讀操作、寫操作和諸如重復(fù)刪除的備份操作。計(jì)算環(huán)境I包括諸如服務(wù)器4和至少一個(gè)客戶端2的計(jì)算系統(tǒng)。重復(fù)刪除可以在客戶端2、服務(wù)器4處或者在連接到服務(wù)器4的重復(fù)刪除設(shè)備(未示出)上執(zhí)行。服務(wù)器4和客戶端2經(jīng)連接24彼此通信。雖然圖1中只示出了單個(gè)客戶端,但是本領(lǐng)域普通技術(shù)人員將理解,多于一個(gè)客戶端2可以連接到服務(wù)器4。
[0027]在一種實(shí)施例中,客戶端2和服務(wù)器4可以包括獨(dú)立的計(jì)算機(jī)系統(tǒng)并且連接24可以包括網(wǎng)絡(luò),諸如局域網(wǎng)(LAN)、存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)、廣域網(wǎng)(WAN),等等。在另一些實(shí)施例中,客戶端2和服務(wù)器4的部件可以在單個(gè)計(jì)算機(jī)系統(tǒng)平臺(tái)上實(shí)現(xiàn),并且連接24可以包括經(jīng)總線或者經(jīng)存儲(chǔ)器的通信。在一種實(shí)施例中,例如,服務(wù)器4可以是文件服務(wù)器、IBM Tivoli?存儲(chǔ)管理器(TSM)服務(wù)器、web應(yīng)用服務(wù)器、或者網(wǎng)絡(luò)附接存儲(chǔ)(NAS)。服務(wù)器4還可以是存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)網(wǎng)絡(luò)的一部分。服務(wù)器4可以包括能夠執(zhí)行程序代碼的處理器(未不出)。
[0028]每個(gè)客戶端2可以包括本地客戶端儲(chǔ)存器8。在實(shí)踐當(dāng)中,客戶端儲(chǔ)存器8可以是磁盤驅(qū)動(dòng)器或者固態(tài)存儲(chǔ)設(shè)備,諸如閃存存儲(chǔ)器??蛻舳?維護(hù)存儲(chǔ)對(duì)象和關(guān)于存儲(chǔ)對(duì)象的信息。術(shù)語(yǔ)“存儲(chǔ)對(duì)象”在本文中用于廣義地描述數(shù)據(jù),不管它是文件還是對(duì)象。存儲(chǔ)對(duì)象在本文中表示為存儲(chǔ)對(duì)象A、B、…、Z,并且為了簡(jiǎn)化,可以一般性地表示為存儲(chǔ)對(duì)象Z??蛻舳?包括在客戶端2處生成并維護(hù)存儲(chǔ)對(duì)象的操作系統(tǒng)12。存儲(chǔ)對(duì)象可以本地存儲(chǔ)在客戶端儲(chǔ)存器8 中??蛻舳?在客戶端存儲(chǔ)器10中維護(hù)諸如元數(shù)據(jù)的存儲(chǔ)對(duì)象信息。在其中重復(fù)刪除在客戶端2處執(zhí)行的實(shí)施例中(即,源端重復(fù)刪除),信息可以包括存儲(chǔ)對(duì)象的塊的有序列表。存儲(chǔ)對(duì)象的塊在本文中表示為塊An、Bn、…、Zn,其中η > 1,,并且為了簡(jiǎn)化,可以更一般性地表示為Ζη。還有,在其中重復(fù)刪除在客戶端2處執(zhí)行的實(shí)施例中,客戶端備份管理器14經(jīng)連接24傳送存儲(chǔ)對(duì)象的非冗余塊,以便備份到服務(wù)器4中的服務(wù)器備份管理器16。在其中重復(fù)刪除在服務(wù)器4處執(zhí)行的實(shí)施例中(即,目標(biāo)端重復(fù)刪除),客戶端備份管理器14經(jīng)連接24傳送存儲(chǔ)對(duì)象,以便備份到服務(wù)器4中的服務(wù)器備份管理器16。
[0029]服務(wù)器備份管理器16維護(hù)重復(fù)刪除索引20,以便在儲(chǔ)存器6中只存儲(chǔ)塊的一個(gè)拷貝,但是一個(gè)塊可以包括在多個(gè)存儲(chǔ)對(duì)象中。服務(wù)器備份管理器16還維護(hù)存儲(chǔ)對(duì)象的塊的塊識(shí)別哈希值的偽指紋列表26,其中塊識(shí)別哈希值在重復(fù)刪除中用作該塊的標(biāo)識(shí)符。
[0030]服務(wù)器4還可以包括服務(wù)器存儲(chǔ)器22。服務(wù)器存儲(chǔ)器22可以維護(hù)塊信息,該塊信息指示存儲(chǔ)對(duì)象的每個(gè)塊被備份在系統(tǒng)儲(chǔ)存器6處的塊位置。系統(tǒng)儲(chǔ)存器6可以包括在本領(lǐng)域中已知的一種或多種存儲(chǔ)設(shè)備上實(shí)現(xiàn)的存儲(chǔ)介質(zhì),諸如互連的硬盤驅(qū)動(dòng)器(例如,配置為DASD、RAID、JBOD等)、固態(tài)存儲(chǔ)設(shè)備(例如,EEPROM(電可擦除可編程只讀存儲(chǔ)器)、閃存存儲(chǔ)器、閃存盤、儲(chǔ)存器級(jí)存儲(chǔ)器(SCM))、電子存儲(chǔ)器、磁帶介質(zhì)、磁帶盒,等等。
[0031]連接24可以包括任何數(shù)量的交換機(jī)、路由器,以及在計(jì)算環(huán)境I的計(jì)算系統(tǒng)之間提供數(shù)據(jù)傳輸服務(wù)的其它專用網(wǎng)絡(luò)計(jì)算設(shè)備。因此,服務(wù)器4可以雙向地向客戶端2并從其傳送數(shù)據(jù)。具體而言,通過(guò)經(jīng)連接24交換數(shù)據(jù)包,客戶端2可以請(qǐng)求服務(wù)器4的服務(wù)。客戶端2可以利用基于文件的訪問(wèn)協(xié)議或者基于塊的訪問(wèn)協(xié)議發(fā)出數(shù)據(jù)包。這些協(xié)議是常見的并且包括通用互聯(lián)網(wǎng)文件系統(tǒng)(CIFS)協(xié)議、網(wǎng)絡(luò)文件系統(tǒng)(NFS)協(xié)議、傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議(TCP/IP)、在TCP上封裝的小型計(jì)算機(jī)系統(tǒng)接口(SCSI)協(xié)議(iSCSI)和在光纖通道上封裝的SCSI (FCP)。應(yīng)當(dāng)認(rèn)識(shí)到,以這種方式,任何計(jì)算系統(tǒng)都可以與計(jì)算環(huán)境I的任何其它計(jì)算系統(tǒng)通信。
[0032]客戶端14和服務(wù)器16備份管理器可以包括存儲(chǔ)器中的由處理器執(zhí)行的軟件程序。在一個(gè)備選實(shí)施例中,程序的某個(gè)部分或者全部可以在諸如像專用集成電路(ASIC)的專用集成電路、擴(kuò)展卡等硬件部件中實(shí)現(xiàn)。
[0033]重復(fù)刪除可以在客戶端、服務(wù)器處或者在連接到服務(wù)器的重復(fù)刪除設(shè)備上執(zhí)行。雖然客戶端14和服務(wù)器16備份管理器示為獨(dú)立的部件,但是在備選實(shí)現(xiàn)中,由客戶端14和服務(wù)器16備份管理器執(zhí)行的功能可以在單個(gè)計(jì)算機(jī)系統(tǒng)中的單個(gè)程序部件中或者在多于兩個(gè)計(jì)算機(jī)設(shè)備中的多于兩個(gè)程序部件中實(shí)現(xiàn)。還有,雖然以下實(shí)施例描述了在目標(biāo)(例如,服務(wù)器4)執(zhí)行的重復(fù)刪除,但是,如本領(lǐng)域普通技術(shù)人員理解的,本發(fā)明也可以在其中在源(例如,客戶端2)或者在一個(gè)設(shè)備處執(zhí)行重復(fù)刪除的實(shí)施例中實(shí)現(xiàn)。
[0034]應(yīng)當(dāng)認(rèn)識(shí)到,計(jì)算系統(tǒng)可以是能夠處理數(shù)據(jù)的任何設(shè)備,諸如服務(wù)器、大型機(jī)、個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)或者包括智能電話等的移動(dòng)設(shè)備。計(jì)算系統(tǒng)可以包括由操作系統(tǒng)管理的附加的部件,諸如至少一個(gè)處理器、存儲(chǔ)器、網(wǎng)絡(luò)適配器及天線。
[0035]另外,計(jì)算設(shè)備可以包括用戶接口,諸如允許用戶輸入的鍵盤、觸摸屏或者定點(diǎn)設(shè)備。最后,計(jì)算設(shè)備可以包括顯示圖形用戶界面(GUI)或者基于文本的界面(諸如命令行接口(CLI))的用戶可視屏幕。
[0036]存在管理計(jì)算系統(tǒng)部件的許多通用或?qū)S貌僮飨到y(tǒng),諸如Lunix,或者其它Unix類型的操作系統(tǒng)以及Microsoft Windows類型的操作系統(tǒng)。操作系統(tǒng)可以利用“文件系統(tǒng)”組織數(shù)據(jù),其中文件系統(tǒng)是文件的數(shù)據(jù)存儲(chǔ)庫(kù)。
[0037]如以上所討論,客戶端2在客戶端存儲(chǔ)器10中維護(hù)存儲(chǔ)對(duì)象信息,諸如元數(shù)據(jù)。類似地,服務(wù)器4在服務(wù)器存儲(chǔ)器22中維護(hù)存儲(chǔ)對(duì)象信息,諸如元數(shù)據(jù)。存儲(chǔ)對(duì)象信息包括存儲(chǔ)對(duì)象的標(biāo)識(shí)符和指派給存儲(chǔ)對(duì)象的一個(gè)或多個(gè)數(shù)據(jù)塊。在一種實(shí)施例中,塊可以具有可變的長(zhǎng)度,即,具有相同或不同的長(zhǎng)度。存儲(chǔ)對(duì)象信息可以維護(hù)塊的有序列表,從而指示塊在存儲(chǔ)對(duì)象中出現(xiàn)的次序。對(duì)于每個(gè)塊,所述信息維護(hù)塊的塊唯一性哈希值和塊的長(zhǎng)度。以這種方式,所述信息提供關(guān)于集合中所包括的塊的元數(shù)據(jù),諸如哈希值和長(zhǎng)度,但不提供實(shí)際的數(shù)據(jù)。塊的塊唯一性哈希值可以通過(guò)處理塊以生成用于該塊的獨(dú)特的值來(lái)確定。例如,在一種實(shí)施例中,哈希值可以包括密碼哈希,諸如MD5 (消息摘要算法5)或SHA-1 (安全哈希算法I),其計(jì)算存儲(chǔ)對(duì)象中的每個(gè)塊的密碼哈希。
[0038]圖2說(shuō)明了由服務(wù)器備份管理器16為系統(tǒng)儲(chǔ)存器6中所存儲(chǔ)的每個(gè)塊Zn維護(hù)的重復(fù)刪除索引條目60的一個(gè)實(shí)施例。索引條目60包括儲(chǔ)存器6中塊的塊標(biāo)識(shí)符(塊ID (Zn)) 62,從由塊標(biāo)識(shí)符表示的塊Zn計(jì)算的哈希值64,H(Zn),以及塊的長(zhǎng)度66,L(Zn)。當(dāng)服務(wù)器備份管理器16確定是否在系統(tǒng)儲(chǔ)存器6處存儲(chǔ)塊Zn的完整拷貝時(shí),服務(wù)器備份管理器16可以確定重復(fù)刪除索引20中的一個(gè)條目60是否具有匹配當(dāng)前塊Zn的哈希值H(Zn)的哈希值64,H(Zn)和長(zhǎng)度66,L(Zn)。
[0039]圖3說(shuō)明了由服務(wù)器備份管理器16為每個(gè)塊Zn維護(hù)的偽指紋列表?xiàng)l目80的一個(gè)實(shí)施例,其中每個(gè)塊Zn被創(chuàng)建為具有人工塊邊界。列表?xiàng)l目80包括系統(tǒng)儲(chǔ)存器6中的塊Zn的塊識(shí)別哈希值82,F(xiàn)(Zn)。當(dāng)服務(wù)器備份管理器16為了重復(fù)刪除而確定塊Zn的塊邊界時(shí),服務(wù)器備份管理器16確定偽指紋列表中的一個(gè)條目80是否匹配存儲(chǔ)對(duì)象Z的數(shù)據(jù)窗口的塊識(shí)別哈希值F(Zn)。
[0040]將參考圖4描述本發(fā)明的一個(gè)實(shí)施例。圖4是說(shuō)明根據(jù)本發(fā)明一個(gè)實(shí)施例、定義存儲(chǔ)對(duì)象的塊邊界的步驟的流程圖。
[0041]在客戶端2生成新的或改變的存儲(chǔ)對(duì)象后,客戶端2把該存儲(chǔ)對(duì)象Z發(fā)送到用于在系統(tǒng)儲(chǔ)存器6上備份該存儲(chǔ)對(duì)象的服務(wù)器備份管理器。在步驟402中,服務(wù)器備份管理器16開始處理存儲(chǔ)對(duì)象Z,用于在系統(tǒng)儲(chǔ)存器6處備份。在步驟404中,服務(wù)器備份管理器16確定存儲(chǔ)對(duì)象Z的數(shù)據(jù)窗口的塊識(shí)別哈希值F(Zn)。在一種實(shí)施例中,服務(wù)器備份管理器16通過(guò)計(jì)算確定塊識(shí)別哈希值F (Zn)。但是,本領(lǐng)域普通技術(shù)人員將理解,服務(wù)器備份管理器16可以通過(guò)其它方法確定塊識(shí)別哈希值,諸如從計(jì)算環(huán)境I的另一計(jì)算設(shè)備獲得。數(shù)據(jù)窗口的塊識(shí)別哈希值F(Zn)充當(dāng)指紋來(lái)確定塊Zn的邊界。在一種實(shí)施例中,塊識(shí)別哈希是諸如Karp-Rabin哈希的滾動(dòng)哈希。但是,任何分塊算法都可以用來(lái)確定塊的邊界。
[0042]在步驟406中,服務(wù)器備份管理器16確定塊識(shí)別哈希值F(Zn)是否匹配指紋。在一種實(shí)施例中,通過(guò)確定塊識(shí)別哈希值F (Zn)是否滿足預(yù)定的數(shù)學(xué)性質(zhì),服務(wù)器備份管理器16確定塊識(shí)別哈希值F(Zn)是否匹配指紋。在一種實(shí)施例中,預(yù)定的數(shù)學(xué)性質(zhì)可以是塊識(shí)別哈希值F(Zn)被1000除盡。作為替代,預(yù)定的數(shù)學(xué)性質(zhì)可以是塊識(shí)別哈希值F(Zn)是奇數(shù)或者偶數(shù)或者質(zhì)數(shù),等等。如本領(lǐng)域普通技術(shù)人員將理解的,任何預(yù)定的數(shù)學(xué)性質(zhì)都可以用來(lái)適合計(jì)算環(huán)境I的需求。數(shù)學(xué)性質(zhì)可以是用戶、信息技術(shù)(IT)管理員或者其他管理員預(yù)先確定的,或者作為替代,它可以由制造商預(yù)先確定。
[0043]如果在步驟406中確定塊識(shí)別哈希值F(Zn)匹配指紋,則該數(shù)據(jù)窗口對(duì)應(yīng)于塊邊界并且過(guò)程進(jìn)入步驟408。在一種實(shí)施例中,該數(shù)據(jù)窗口的最后一個(gè)字節(jié)對(duì)應(yīng)于塊Zn的最后一個(gè)字節(jié),并且塊邊界被放在該數(shù)據(jù)窗口最后一個(gè)字節(jié)的結(jié)束處。但是,應(yīng)當(dāng)理解,任何對(duì)應(yīng)性都可以用來(lái)定義塊Zn的邊界。另外,在一種實(shí)施例中,雖然塊的終點(diǎn)塊邊界是在數(shù)據(jù)窗口的最后一個(gè)字節(jié)的結(jié)束處定義的,但是起點(diǎn)邊界是前一塊的終點(diǎn)塊邊界。在步驟408中,服務(wù)器備份管理器16存儲(chǔ)該存儲(chǔ)對(duì)象塊邊界。在一種實(shí)施例中,塊邊界存儲(chǔ)在服務(wù)器存儲(chǔ)器22中。在步驟410中,服務(wù)器備份管理器16確定為其確定了塊識(shí)別哈希值F(Zn)的數(shù)據(jù)窗口是否是存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束。如果確定該數(shù)據(jù)窗口是數(shù)據(jù)結(jié)束,則過(guò)程在步驟412結(jié)束。但是,如果在步驟410中確定該數(shù)據(jù)窗口不是數(shù)據(jù)結(jié)束,則過(guò)程返回步驟404。在步驟404中,數(shù)據(jù)窗口中最舊的字節(jié)被新字節(jié)代替并且再次計(jì)算塊識(shí)別哈希值F (Zn)。
[0044]返回步驟406,如果確定塊識(shí)別哈希值F (Zn)不匹配指紋,則過(guò)程進(jìn)入步驟414。在步驟414中,服務(wù)器備份管理器16比較該塊識(shí)別哈希值F (Zn)與存儲(chǔ)在偽指紋列表26中的哈希值。在步驟416中,服務(wù)器備份管理器16確定在步驟404中確定的塊識(shí)別哈希值F (Zn)是否匹配偽指紋列表26中所存儲(chǔ)的任何一個(gè)哈希值或偽指紋。如果在步驟416中確定在步驟404中確定的塊識(shí)別哈希值F(Zn)匹配偽指紋列表26上存儲(chǔ)的偽指紋,則過(guò)程進(jìn)入步驟408,在那里服務(wù)器備份管理器16存儲(chǔ)該存儲(chǔ)對(duì)象塊邊界。如以上所討論的,在一種實(shí)施例中,塊邊界對(duì)應(yīng)于數(shù)據(jù)窗口的結(jié)束。存儲(chǔ)對(duì)象塊邊界存儲(chǔ)在服務(wù)器存儲(chǔ)器22中。但是,如果確定在步驟404中確定的塊識(shí)別哈希值F(Zn)不匹配偽指紋列表26上存儲(chǔ)的偽指紋,則過(guò)程進(jìn)入步驟418。
[0045]在步驟418中,服務(wù)器備份管理器16確定為其確定了塊識(shí)別哈希值F(Zn)的數(shù)據(jù)窗口是否是存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束。如果在步驟418中確定數(shù)據(jù)窗口不是數(shù)據(jù)結(jié)束,則過(guò)程返回到步驟404。在步驟404中,數(shù)據(jù)窗口中最舊的字節(jié)被新字節(jié)代替并且再次確定塊識(shí)別哈希值F(Zn)。但是,如果確定數(shù)據(jù)窗口是數(shù)據(jù)結(jié)束,則過(guò)程進(jìn)入步驟420,在那里所確定的塊識(shí)別哈希值F(Zn)作為偽指紋存儲(chǔ)在偽指紋列表26中。在步驟422中,服務(wù)器備份管理器16存儲(chǔ)與為其確定了塊識(shí)別哈希值F(Zn)的數(shù)據(jù)窗口對(duì)應(yīng)的存儲(chǔ)對(duì)象塊邊界。該過(guò)程在步驟424結(jié)束。
[0046]本領(lǐng)域普通技術(shù)人員將理解,一旦定義了存儲(chǔ)對(duì)象的塊,正常的重復(fù)刪除處理就可以發(fā)生。例如,塊唯一性哈??梢员淮_定,以確定如上所述由塊邊界定義的塊是否是冗余的塊。
[0047]因此,圖4中所描述的過(guò)程流使得計(jì)算環(huán)境能夠構(gòu)建偽指紋列表,以確保利用人工塊邊界創(chuàng)建的塊隨后被識(shí)別并有效地進(jìn)行重復(fù)刪除。
[0048]圖5說(shuō)明了根據(jù)本發(fā)明一個(gè)實(shí)施例、定義三個(gè)存儲(chǔ)對(duì)象的塊邊界的一個(gè)實(shí)施例。在圖5所示的實(shí)施例中,存儲(chǔ)對(duì)象是文件。文件A510和文件B530,是沒(méi)有附加的嵌入文件的個(gè)別文件。文件C550是包括文件A510、文件B530、新創(chuàng)建的數(shù)據(jù)、接著是文件A510以及附加的新創(chuàng)建數(shù)據(jù)的合成文件。在所述實(shí)施例中,服務(wù)器備份管理器16通過(guò)計(jì)算確定塊識(shí)別哈希值F(Zn)。但是,本領(lǐng)域普通技術(shù)人員將理解,服務(wù)器備份管理器16可以通過(guò)如上所述的其它方法確定塊識(shí)別哈希值。為了討論的簡(jiǎn)化,在以下描述中,每個(gè)數(shù)據(jù)窗口將對(duì)應(yīng)于一個(gè)塊。但是,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)理解,存在其中指紋和偽指紋不匹配計(jì)算出的塊識(shí)別哈希值F(Zn)的情況。在這些情況下,如果數(shù)據(jù)窗口不是數(shù)據(jù)結(jié)束,則數(shù)組中最舊的字節(jié)用最新的字節(jié)代替并且對(duì)第二數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值。
[0049]根據(jù)這種實(shí)施例,文件A由客戶端2創(chuàng)建并發(fā)送到用于管理在系統(tǒng)儲(chǔ)存器6中備份文件A的服務(wù)器備份管理器16。服務(wù)器備份管理器處理文件A,以確定塊邊界(步驟402)。服務(wù)器備份管理器16對(duì)文件A的第一數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(A1)(步驟404)。服務(wù)器備份管理器16確定塊識(shí)別哈希值F (A1)匹配指紋(步驟406)并且創(chuàng)建塊邊界511并存儲(chǔ)該塊邊界511 (步驟408)。服務(wù)器備份管理器16確定該文件還有更多數(shù)據(jù)要處理并且數(shù)據(jù)窗口中最舊的字節(jié)被新字節(jié)代替并且對(duì)第二數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(A2)。過(guò)程自身重復(fù),從而創(chuàng)建并存儲(chǔ)塊邊界512和513。最后,當(dāng)用于哈希計(jì)算的數(shù)據(jù)窗口接近文件A的數(shù)據(jù)結(jié)束并且計(jì)算出的塊識(shí)別哈希值F (A4)(步驟404)不匹配指紋(步驟406)時(shí),服務(wù)器備份管理器16比較塊識(shí)別哈希值F (A4)與偽指紋列表26上存儲(chǔ)的偽指紋。當(dāng)服務(wù)器備份管理器16確定塊識(shí)別哈希值F(A4)不匹配偽指紋并且該數(shù)據(jù)窗口是文件A的數(shù)據(jù)結(jié)束時(shí),計(jì)算出的塊識(shí)別哈希值F(A4)作為偽指紋存儲(chǔ)在偽指紋列表26中(步驟420)并且存儲(chǔ)用于文件A的人工塊邊界520 (步驟422)。
[0050]對(duì)文件B進(jìn)行重復(fù)刪除的分塊過(guò)程與對(duì)文件A進(jìn)行分塊的過(guò)程相似。文件B由客戶端2創(chuàng)建并且發(fā)送到用于管理在系統(tǒng)儲(chǔ)存器6中備份文件B的服務(wù)器備份管理器16。服務(wù)器備份管理器處理文件B,以確定塊邊界(步驟402)。服務(wù)器備份管理器16對(duì)文件B的第一數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(B1)(步驟404)。服務(wù)器備份管理器16確定塊識(shí)別哈希值F(B1)匹配指紋(步驟406)并且創(chuàng)建塊邊界531并存儲(chǔ)該塊邊界531 (步驟408)。服務(wù)器備份管理器16確定該文件還有更多數(shù)據(jù)要處理(步驟410)并且數(shù)據(jù)窗口中最舊的字節(jié)被新字節(jié)代替并且對(duì)第二數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(B2)(步驟404)。過(guò)程自身重復(fù),從而創(chuàng)建并存儲(chǔ)塊邊界532。最后,當(dāng)用于哈希計(jì)算的數(shù)據(jù)窗口接近文件B的數(shù)據(jù)結(jié)束并且計(jì)算出的塊識(shí)別哈希值F (B3)(步驟404)不匹配指紋(步驟406)時(shí),服務(wù)器備份管理器16比較塊識(shí)別哈希值F(B3)與偽指紋列表26上存儲(chǔ)的偽指紋。當(dāng)服務(wù)器備份管理器16確定塊識(shí)別哈希值F(B3)不匹配偽指紋并且該數(shù)據(jù)窗口是文件B的數(shù)據(jù)結(jié)束時(shí),計(jì)算出的塊識(shí)別哈希值F(B3)作為偽指紋存儲(chǔ)在偽指紋列表26中(步驟420)并且存儲(chǔ)用于文件B的人工塊邊界540 (步驟422)。
[0051]如上所述,文件C550是一個(gè)合成文件。如圖5中所示,合成文件C包括文件A510、文件B530、新創(chuàng)建的數(shù)據(jù)560、接著是文件A510以及附加的新創(chuàng)建數(shù)據(jù)570。根據(jù)以上所討論的實(shí)施例步驟,文件A和文件B已經(jīng)進(jìn)行了重復(fù)刪除并且任意邊界520和540的偽指紋82已經(jīng)確定并存儲(chǔ)在偽指紋列表26中。另外,重復(fù)刪除索引20已經(jīng)存儲(chǔ)了文件A和文件B的每一個(gè)塊的塊標(biāo)識(shí)符62、哈希值64以及塊長(zhǎng)度66 (例如,Al、A2、A3、A4、B1、B2、B3)。由于任意邊界520和540的偽指紋82已經(jīng)存儲(chǔ),因此嵌在合成文件C中的任意塊邊界在文件C的重復(fù)刪除過(guò)程中也被識(shí)別為塊邊界。因此,關(guān)于任何任意塊計(jì)算的塊唯一性哈希值將匹配存儲(chǔ)在重復(fù)刪除索引20中的哈希值H(Zn),并且冗余的塊將被檢測(cè)到并且不被不必要地存儲(chǔ)。
[0052]根據(jù)圖4中說(shuō)明的操作描述對(duì)文件C進(jìn)行重復(fù)刪除的過(guò)程。文件C由客戶端2創(chuàng)建并且發(fā)送到用于管理在系統(tǒng)儲(chǔ)存器6中備份文件C的服務(wù)器備份管理器16。服務(wù)器備份管理器開始處理文件C,以確定塊邊界(步驟402)。服務(wù)器備份管理器16對(duì)文件C中對(duì)應(yīng)于文件A的第一數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(A1)(步驟404)。服務(wù)器備份管理器16確定塊識(shí)別哈希值F(A1)匹配指紋(步驟406)并且創(chuàng)建塊邊界511并存儲(chǔ)該塊邊界511 (步驟408)。服務(wù)器備份管理器16確定該文件還有更多數(shù)據(jù)要處理并且數(shù)據(jù)窗口中最舊的字節(jié)被新字節(jié)代替并且對(duì)第二數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(A2)。過(guò)程自身重復(fù),從而創(chuàng)建并存儲(chǔ)塊邊界512和513。當(dāng)用于哈希計(jì)算的數(shù)據(jù)窗口接近與文件A對(duì)應(yīng)的數(shù)據(jù)結(jié)束時(shí),計(jì)算出的塊識(shí)別哈希值F (A4)(步驟404)不匹配指紋(步驟406)。于是,服務(wù)器備份管理器16比較塊識(shí)別哈希值F(A4)與偽指紋列表26上存儲(chǔ)的偽指紋(步驟416)。當(dāng)服務(wù)器備份管理器16確定塊識(shí)別哈希值F(A4)匹配偽指紋列表上的偽指紋F(A4)時(shí),服務(wù)器備份管理器16存儲(chǔ)與該數(shù)據(jù)窗口對(duì)應(yīng)的塊邊界520 (步驟408)。
[0053]服務(wù)器備份管理器16確定文件C還有更多數(shù)據(jù)要處理(步驟410)并且數(shù)據(jù)窗口中最舊的字節(jié)被新字節(jié)代替并且再次計(jì)算塊識(shí)別哈希值。服務(wù)器備份管理器16對(duì)與文件B的第一部分對(duì)應(yīng)的數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(B1)(步驟404)。服務(wù)器備份管理器16確定塊識(shí)別哈希值F(B1)匹配指紋(步驟406)并且創(chuàng)建塊邊界531并存儲(chǔ)該塊邊界531 (步驟408)。服務(wù)器備份管理器16確定該文件還有更多數(shù)據(jù)要處理并且數(shù)據(jù)窗口中最舊的字節(jié)被新字節(jié)代替并且對(duì)新的數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(B2)。過(guò)程自身重復(fù),從而創(chuàng)建并存儲(chǔ)塊邊界532。當(dāng)用于哈希計(jì)算的數(shù)據(jù)窗口接近與文件B對(duì)應(yīng)的數(shù)據(jù)結(jié)束時(shí),計(jì)算出的塊識(shí)別哈希值F (B3)(步驟404)不匹配指紋(步驟406)。于是,服務(wù)器備份管理器16比較塊識(shí)別哈希值F(B3)與偽指紋列表26上存儲(chǔ)的偽指紋(步驟416)。當(dāng)服務(wù)器備份管理器16確定塊識(shí)別哈希值F (B3)匹配偽指紋列表26上所存儲(chǔ)的偽指紋時(shí),服務(wù)器備份管理器16存儲(chǔ)與該數(shù)據(jù)窗口對(duì)應(yīng)的塊邊界540 (步驟408)。
[0054]再一次,服務(wù)器備份管理器16確定文件C還有更多數(shù)據(jù)要處理(步驟410)并且數(shù)據(jù)窗口中最舊的字節(jié)被新字節(jié)代替并且計(jì)算新數(shù)據(jù)窗口的塊識(shí)別哈希值。服務(wù)器備份管理器16對(duì)文件C中對(duì)應(yīng)于新創(chuàng)建的獨(dú)特?cái)?shù)據(jù)的下一個(gè)數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(C1)(步驟404)。服務(wù)器備份管理器16確定塊識(shí)別哈希值F(C1)匹配指紋(步驟406)并且創(chuàng)建塊邊界551并存儲(chǔ)該塊邊界551 (步驟408)。服務(wù)器備份管理器16確定該文件還有更多數(shù)據(jù)要處理并且數(shù)據(jù)窗口中最舊的字節(jié)被新字節(jié)代替并且對(duì)新的數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(C2)。過(guò)程自身重復(fù),從而創(chuàng)建并存儲(chǔ)塊邊界552、553、554。
[0055]服務(wù)器備份管理器16確定文件C還有更多數(shù)據(jù)要處理(步驟410)并且數(shù)據(jù)窗口中最舊的字節(jié)被新字節(jié)代替并且對(duì)新窗口計(jì)算塊識(shí)別哈希值。服務(wù)器備份管理器16對(duì)與文件A的第一部分對(duì)應(yīng)的數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(A1)(步驟404)。以與以上所討論相同的方式,服務(wù)器備份管理器16確定塊識(shí)別哈希值F(A1)匹配指紋(步驟406)并且創(chuàng)建塊邊界511、512、513并且存儲(chǔ)這些塊邊界(步驟408)。類似地,如以上所討論的,服務(wù)器備份管理器16確定塊識(shí)別哈希值F (A4)匹配偽指紋列表上的偽指紋F (A4)并且存儲(chǔ)該塊邊界(步驟408)。
[0056]再一次,服務(wù)器備份管理器16確定文件C還有更多數(shù)據(jù)要處理(步驟410)并且數(shù)據(jù)窗口中最舊的字節(jié)被新字節(jié)代替并且對(duì)新數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值。服務(wù)器備份管理器16對(duì)與新創(chuàng)建的獨(dú)特?cái)?shù)據(jù)對(duì)應(yīng)的下一個(gè)數(shù)據(jù)窗口計(jì)算塊識(shí)別哈希值F(C5)(步驟404)。服務(wù)器備份管理器16確定塊識(shí)別哈希值F (C5)匹配指紋(步驟406)并且創(chuàng)建塊邊界555并存儲(chǔ)該塊邊界555 (步驟408)。最后,當(dāng)用于哈希計(jì)算的數(shù)據(jù)窗口接近文件C的數(shù)據(jù)結(jié)束并且計(jì)算出的塊識(shí)別哈希值F(C6)(步驟404)不匹配指紋(步驟406)時(shí),服務(wù)器備份管理器16比較塊識(shí)別哈希值F (C6)與偽指紋列表26上存儲(chǔ)的偽指紋。當(dāng)服務(wù)器備份管理器16確定塊識(shí)別哈希值F(C6)不匹配偽指紋并且該數(shù)據(jù)窗口是文件C的數(shù)據(jù)結(jié)束時(shí),計(jì)算出的塊識(shí)別哈希值F(C6)作為偽指紋存儲(chǔ)在偽指紋列表26中(步驟420)并且存儲(chǔ)用于文件C的人工塊邊界580 (步驟422)。
[0057]圖6是說(shuō)明根據(jù)本發(fā)明一種實(shí)施例、在重復(fù)刪除過(guò)程中計(jì)算環(huán)境I的執(zhí)行的圖。將關(guān)于其中客戶端2創(chuàng)建存儲(chǔ)對(duì)象Z的實(shí)施例來(lái)描述圖6,其中存儲(chǔ)對(duì)象Z具有對(duì)應(yīng)于還未在系統(tǒng)儲(chǔ)存器6中備份的塊Zn的數(shù)據(jù)結(jié)束。另外,將關(guān)于其中在服務(wù)器4執(zhí)行重復(fù)刪除的實(shí)施例來(lái)描述圖6。但是 ,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)理解,本文的描述也將適用于本發(fā)明的其它實(shí)施例。例如,在其中在客戶端側(cè)執(zhí)行重復(fù)刪除的實(shí)施例中,本文所述的過(guò)程將在客戶端上執(zhí)行。
[0058]參考圖6,計(jì)算環(huán)境I包括通過(guò)網(wǎng)絡(luò)24連接到服務(wù)器4的至少一個(gè)客戶端2,服務(wù)器4用于備份在客戶端儲(chǔ)存器8中所存儲(chǔ)的存儲(chǔ)對(duì)象。例如,在客戶端2生成新的或改變的存儲(chǔ)對(duì)象之后,客戶端儲(chǔ)存器8在一個(gè)或多個(gè)磁盤上對(duì)存儲(chǔ)對(duì)象Z進(jìn)行存儲(chǔ)。服務(wù)器4連接到可以包括如上所述的一個(gè)或多個(gè)存儲(chǔ)設(shè)備的存儲(chǔ)系統(tǒng)6。客戶端2把存儲(chǔ)對(duì)象Z發(fā)送(610)到用于在系統(tǒng)儲(chǔ)存器6上備份存儲(chǔ)對(duì)象Z的服務(wù)器備份管理器16。
[0059]在本發(fā)明一個(gè)實(shí)施例的例子中,計(jì)算環(huán)境I能夠?yàn)榇鎯?chǔ)對(duì)象的數(shù)據(jù)窗口確定塊識(shí)別哈希值并且確定該塊識(shí)別哈希值是否匹配指紋或者偽指紋列表26上所存儲(chǔ)的偽指紋。當(dāng)確定存儲(chǔ)對(duì)象的該數(shù)據(jù)窗口是存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束并且塊識(shí)別哈希值不匹配指紋或存儲(chǔ)的偽指紋時(shí),計(jì)算環(huán)境I定義存儲(chǔ)設(shè)備的一塊的塊邊界。計(jì)算環(huán)境I把該塊識(shí)別哈希值存儲(chǔ)為存儲(chǔ)對(duì)象的該塊的偽指紋。因此,計(jì)算環(huán)境I能夠識(shí)別人工塊邊界并且基于作為偽指紋存儲(chǔ)在偽指紋列表26上的塊識(shí)別哈希值在重復(fù)刪除過(guò)程中更高效地消除冗余數(shù)據(jù)。
[0060]服務(wù)器備份管理器16確定存儲(chǔ)對(duì)象Z的數(shù)據(jù)窗口的塊識(shí)別哈希值F (Zn)。服務(wù)器備份管理器16確定所確定的塊識(shí)別哈希值F(Zn)是否匹配指紋。在這個(gè)例子中,該數(shù)據(jù)窗口對(duì)應(yīng)于數(shù)據(jù)結(jié)束,并且因此計(jì)算出的哈希值不匹配指紋。服務(wù)器備份管理器16確定塊識(shí)別哈希值F(Zn)是否匹配偽指紋列表26上所存儲(chǔ)的偽指紋(620)。在這個(gè)例子中,塊Zn還沒(méi)有進(jìn)行重復(fù)刪除并且塊識(shí)別哈希值F(Zn)還沒(méi)有存儲(chǔ)在偽指紋列表26中。因此,服務(wù)器備份管理器16確定塊識(shí)別哈希值F(Zn)不匹配偽指紋。
[0061]在確定對(duì)應(yīng)于存儲(chǔ)對(duì)象Z的數(shù)據(jù)結(jié)束的數(shù)據(jù)窗口不匹配指紋或偽指紋后,服務(wù)器備份管理器16把塊識(shí)別哈希值F (Zn)存儲(chǔ)在偽指紋列表26中出30)。此外,服務(wù)器備份管理器16把用于塊Zn的存儲(chǔ)對(duì)象塊邊界存儲(chǔ)在服務(wù)器存儲(chǔ)器22中(640)。服務(wù)器備份管理器16確定塊的塊唯一性哈希值H(Zn)并且在重復(fù)刪除索引20中創(chuàng)建重復(fù)刪除索引條目(650),該條目包括塊身份信息62塊ID (F (Zn))、哈希值64H (Zn)以及塊的長(zhǎng)度66L (Zn)。服務(wù)器備份管理器還把塊Zn發(fā)送到系統(tǒng)儲(chǔ)存器6以用于備份(660)。
[0062]應(yīng)當(dāng)認(rèn)識(shí)到,這種操作可以體現(xiàn)為實(shí)現(xiàn)為算法的方法,該算法具有由計(jì)算系統(tǒng)實(shí)現(xiàn)的軟件模塊。另外,所述方法可以體現(xiàn)為任何計(jì)算機(jī)可讀介質(zhì)上的軟件、體現(xiàn)為專用固件、或者體現(xiàn)為軟件和固件的結(jié)合,等等。
[0063]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
[0064]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅 外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0065]計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括——但不限于——電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0066]計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無(wú)線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0067]可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任意組合來(lái)編寫用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如Java、Smalltalk、C++等,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言一諸如“C”語(yǔ)言或類似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。
[0068]以上參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些計(jì)算機(jī)程序指令在通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。
[0069]這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,這些指令使得計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,從而,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的指令的制造品(article of manufacture)。
[0070]這些計(jì)算機(jī)程序指令還可以加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或者其它設(shè)備上,使得一系列操作步驟在計(jì)算機(jī)、其它可編程裝置或者其它設(shè)備上執(zhí)行,從而產(chǎn)生一種計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,使得在所述計(jì)算機(jī)或者其它可編程裝置上執(zhí)行的指令提供用于實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的過(guò)程。
[0071]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
[0072]作為例子,術(shù)語(yǔ)“邏輯”可以包括軟件、硬件、固件,和/或軟件和硬件和組合。
[0073]圖7說(shuō)明了根據(jù)某些實(shí)施例可以使用的計(jì)算系統(tǒng)700??蛻舳?和/或服務(wù)器4可以實(shí)現(xiàn)計(jì)算系統(tǒng)700。計(jì)算系統(tǒng)700適于存儲(chǔ)和/或執(zhí)行程序代碼并且包括直接地或通過(guò)系統(tǒng)總線(未示出)間接地耦合到存儲(chǔ)器元件704的至少一個(gè)處理器702。存儲(chǔ)器元件704可以包括在程序代碼的實(shí)際執(zhí)行過(guò)程中采用的本地存儲(chǔ)器、大容量?jī)?chǔ)存器和高速緩存存儲(chǔ)器,其中高速緩存存儲(chǔ)器提供至少一些程序代碼的臨時(shí)存儲(chǔ),以便減少在執(zhí)行過(guò)程中必須從大容量?jī)?chǔ)存器檢索代碼的次數(shù)。存儲(chǔ)器元件704包括操作系統(tǒng)和一個(gè)或多個(gè)計(jì)算機(jī)程序(未示出)。
[0074]輸入/輸出(I/O)設(shè)備712、714(包括但不限于鍵盤、顯示器、定點(diǎn)設(shè)備等)可以直接地或者通過(guò)中間I/o控制器710耦合到系統(tǒng)。
[0075]網(wǎng)絡(luò)適配器708也可以耦合到系統(tǒng),以便使數(shù)據(jù)處理系統(tǒng)能夠通過(guò)中間的專用或公共網(wǎng)絡(luò)變得耦合到其它數(shù)據(jù)處理系統(tǒng)或者遠(yuǎn)端打印機(jī)或存儲(chǔ)設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅僅是當(dāng)前可以獲得的網(wǎng)絡(luò)適配器708的幾種類型。
[0076]計(jì)算系統(tǒng)700可以耦合到儲(chǔ)存器716 (例如,非易失性存儲(chǔ)區(qū)域,諸如磁盤驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器、帶驅(qū)動(dòng)器、固態(tài)存儲(chǔ)設(shè)備等)。儲(chǔ)存器716可以包括內(nèi)部存儲(chǔ)設(shè)備或附連的或可以經(jīng)網(wǎng)絡(luò)訪問(wèn)的儲(chǔ)存器。儲(chǔ)存器716中的計(jì)算機(jī)程序可以以本領(lǐng)域中已知的方式加載到存儲(chǔ)器元件704中并且被處理器702執(zhí)行。
[0077]計(jì)算機(jī)系統(tǒng)700可以包括比所說(shuō)明的少的部件、本文未說(shuō)明的附加部件,或者所說(shuō)明的和附加部件的某種組合。計(jì)算系統(tǒng)700可以包括本領(lǐng)域中已知的任何計(jì)算設(shè)備,諸如大型機(jī)、服務(wù)器、個(gè)人計(jì)算機(jī)、工作站、膝上型計(jì)算機(jī)、手持式計(jì)算機(jī)、電話設(shè)備、網(wǎng)絡(luò)設(shè)備、虛擬化設(shè)備、存儲(chǔ)控制器、例如個(gè)人數(shù)字助理(PDA)或移動(dòng)電話的移動(dòng)設(shè)備,等等。
[0078]前面對(duì)本發(fā)明實(shí)施例的描述是為了說(shuō)明和描述的目的而給出的。它不是詳盡的或者要把本發(fā)明限定到所公開的精確形式。鑒于以上示教,許多修改與變化都是可能的。實(shí)施例的范圍不是要由該具體描述而是由所附權(quán)利要求來(lái)限定。以上說(shuō)明書、例子和數(shù)據(jù)提供了對(duì)實(shí)施例的組成分的制造和使用的完整描述。在不背離如下文所附權(quán)利要求或者任何后續(xù)提交的權(quán)利要求及其等價(jià)物中所定義的本發(fā)明范圍的情況下,可以產(chǎn)生許多實(shí)施例。
【權(quán)利要求】
1.一種用于為了數(shù)據(jù)重復(fù)刪除而處理存儲(chǔ)對(duì)象的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括: 為所述存儲(chǔ)對(duì)象的數(shù)據(jù)窗口確定塊識(shí)別哈希值; 確定所述數(shù)據(jù)窗口的所述塊識(shí)別哈希值是否匹配指紋或存儲(chǔ)的偽指紋; 當(dāng)確定所述數(shù)據(jù)窗口的所述塊識(shí)別哈希值不匹配所述指紋或所述存儲(chǔ)的偽指紋時(shí),確定所述數(shù)據(jù)窗口是否是所述存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束; 當(dāng)確定所述數(shù)據(jù)窗口是所述存儲(chǔ)對(duì)象的所述對(duì)象結(jié)束時(shí),定義所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述數(shù)據(jù)窗口的塊的塊邊界并且存儲(chǔ)所述塊的塊邊界;及 當(dāng)確定所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口是所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)結(jié)束時(shí),存儲(chǔ)所確定的塊識(shí)別哈希值為所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述數(shù)據(jù)窗口的所述塊的偽指紋。
2.如權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,還包括確定關(guān)于所述存儲(chǔ)對(duì)象的所述塊的塊唯一性哈希并且在用于所述存儲(chǔ)對(duì)象的所述塊的重復(fù)刪除索引中存儲(chǔ)塊唯一性哈希信息。
3.如權(quán)利要求1或權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中所述確定所述塊識(shí)別哈希值是否匹配已知的指紋包括確定所述塊識(shí)別哈希值是否滿足預(yù)定的數(shù)學(xué)性質(zhì)。
4.如前面任何一項(xiàng)權(quán)利要求所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中存儲(chǔ)所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的所述塊的所述偽指紋包括在偽指紋列表中存儲(chǔ)所述偽指紋。
5.如權(quán)利要求4所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中確定所述塊識(shí)別哈希值是否匹配偽指紋包括確定所述塊識(shí)別哈希值是否存儲(chǔ)在所述偽指紋列表上。
6.如前面任何一項(xiàng)權(quán)利要求所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中確定所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的所述塊識(shí)別哈希值包括計(jì)算所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的滾動(dòng)哈希值。
7.如權(quán)利要求6所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中計(jì)算所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的所述滾動(dòng)哈希值包括計(jì)算所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的Karp-Rabin滾動(dòng)哈希。
8.如前面任何一項(xiàng)權(quán)利要求所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,還包括當(dāng)確定所述塊識(shí)別哈希值匹配所述指紋時(shí),定義所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述數(shù)據(jù)窗口的塊并且存儲(chǔ)所述塊的塊邊界。
9.如前面任何一項(xiàng)權(quán)利要求所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,還包括:當(dāng)確定所述數(shù)據(jù)窗口不是所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)結(jié)束時(shí),確定另一數(shù)據(jù)窗口的塊識(shí)別哈希值,并且確定所述另一數(shù)據(jù)窗口的所確定的塊識(shí)別哈希值是否匹配所述指紋或所述存儲(chǔ)的偽指紋。
10.一種用于為了數(shù)據(jù)重復(fù)刪除而處理存儲(chǔ)對(duì)象的計(jì)算設(shè)備,包括: 處理器和耦合到所述處理器的存儲(chǔ)器; 所述存儲(chǔ)器包括具有代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述代碼在被所述處理器執(zhí)行時(shí)執(zhí)行操作,其中所述操作包括: 為所述存儲(chǔ)對(duì)象的數(shù)據(jù)窗口確定塊識(shí)別哈希值; 確定所述數(shù)據(jù)窗口的所述塊識(shí)別哈希值是否匹配指紋或存儲(chǔ)的偽指紋; 當(dāng)確定所述數(shù)據(jù)窗口的所述塊識(shí)別哈希值不匹配所述指紋或所述存儲(chǔ)的偽指紋時(shí),確定所述數(shù)據(jù)窗口是否是所述存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束; 當(dāng)確定所述數(shù)據(jù)窗口是所述存儲(chǔ)對(duì)象的所述對(duì)象結(jié)束時(shí),定義所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述數(shù)據(jù)窗口的塊的塊邊界并且存儲(chǔ)所述塊的塊邊界;及當(dāng)確定所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口是所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)結(jié)束時(shí),存儲(chǔ)所確定的塊識(shí)別哈希值為所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述數(shù)據(jù)窗口的所述塊的偽指紋在所述存儲(chǔ)器中。
11.如權(quán)利要求10所述的計(jì)算設(shè)備,其中所述操作還包括: 確定關(guān)于所述存儲(chǔ)對(duì)象的所述塊的塊唯一性哈希并且在用于所述存儲(chǔ)對(duì)象的所述塊的重復(fù)刪除索引中存儲(chǔ)塊唯一性哈希信息。
12.如權(quán)利要求10或權(quán)利要求11所述的計(jì)算設(shè)備,其中確定所述塊識(shí)別哈希值是否匹配已知的指紋包括確定所述塊識(shí)別哈希值是否滿足預(yù)定的數(shù)學(xué)性質(zhì)。
13.如權(quán)利要求10至12中任何一項(xiàng)所述的計(jì)算設(shè)備,其中存儲(chǔ)所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的所述塊的所述偽指紋包括在偽指紋列表中存儲(chǔ)所述偽指紋。
14.如權(quán)利要求13所述的計(jì)算設(shè)備,其中確定所述塊識(shí)別哈希值是否匹配偽指紋包括確定所述塊識(shí)別哈希值是否存儲(chǔ)在所述偽指紋列表上。
15.如權(quán)利要求10至14中任何一項(xiàng)所述的計(jì)算設(shè)備,其中確定所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的所述塊識(shí)別哈希值包括計(jì)算所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的滾動(dòng)哈希值。
16.如權(quán)利要求15所述的計(jì)算設(shè)備,其中計(jì)算所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的所述滾動(dòng)哈希值包括計(jì)算所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的Karp-Rabin滾動(dòng)哈希。
17.如權(quán)利要求10至16中任何一項(xiàng)所述的計(jì)算設(shè)備,其中所述操作還包括: 當(dāng)確定所述塊識(shí)別哈希值匹配所述指紋時(shí),定義所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述數(shù)據(jù)窗口的塊并且存儲(chǔ)所述塊的塊邊界。
18.如權(quán)利要求10至17中任何一項(xiàng)所述的計(jì)算設(shè)備,其中所述操作還包括: 當(dāng)確定所述數(shù)據(jù)窗口不是所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)結(jié)束時(shí),確定另一數(shù)據(jù)窗口的塊識(shí)別哈希值,并且確定所述另一數(shù)據(jù)窗口的所確定的塊識(shí)別哈希值是否匹配所述指紋或所述存儲(chǔ)的偽指紋。
19.一種用于為了數(shù)據(jù)重復(fù)刪除而處理存儲(chǔ)對(duì)象的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括其中包含了計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述程序代碼在被處理器執(zhí)行時(shí)執(zhí)行操作,所述操作包括: 為所述存儲(chǔ)對(duì)象的數(shù)據(jù)窗口確定塊識(shí)別哈希值; 確定所述數(shù)據(jù)窗口的所述塊識(shí)別哈希值是否匹配指紋或存儲(chǔ)的偽指紋; 當(dāng)確定所述數(shù)據(jù)窗口的所述塊識(shí)別哈希值不匹配所述指紋或所述存儲(chǔ)的偽指紋時(shí),確定所述數(shù)據(jù)窗口是否是所述存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)束; 當(dāng)確定所述數(shù)據(jù)窗口是所述存儲(chǔ)對(duì)象的所述對(duì)象結(jié)束時(shí),定義所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述數(shù)據(jù)窗口的塊的塊邊界并且存儲(chǔ)所述塊的塊邊界;及 當(dāng)確定所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口是所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)結(jié)束時(shí),存儲(chǔ)所確定的塊識(shí)別哈希值為所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述數(shù)據(jù)窗口的所述塊的偽指紋在所述存儲(chǔ)器中。
20.如權(quán)利要求19所述的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 確定關(guān)于所述存儲(chǔ)對(duì)象的所述塊的塊唯一性哈希并且在用于所述存儲(chǔ)對(duì)象的所述塊的重復(fù)刪除索引中存儲(chǔ)塊唯一性哈希信息。
21.如權(quán)利要求19或權(quán)利要求20所述的計(jì)算機(jī)程序產(chǎn)品,其中確定所述塊識(shí)別哈希值是否匹配已知的指紋包括確定所述塊識(shí)別哈希值是否滿足預(yù)定的數(shù)學(xué)性質(zhì)。
22.如權(quán)利要求19至21中任何一項(xiàng)所述的計(jì)算機(jī)程序產(chǎn)品,其中存儲(chǔ)所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的所述塊的所述偽指紋包括在偽指紋列表中存儲(chǔ)所述偽指紋。
23.如權(quán)利要求22所述的計(jì)算機(jī)程序產(chǎn)品,其中確定所述塊識(shí)別哈希值是否匹配偽指紋包括確定所述塊識(shí)別哈希值是否存儲(chǔ)在所述偽指紋列表上。
24.如項(xiàng)權(quán)利要求19至23中任何一項(xiàng)所述的計(jì)算機(jī)程序產(chǎn)品,其中確定所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的所述塊識(shí)別哈希值包括計(jì)算所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的滾動(dòng)哈希值。
25.如權(quán)利要求24所述的計(jì)算機(jī)程序產(chǎn)品,其中計(jì)算所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的所述滾動(dòng)哈希值包括計(jì)算所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)窗口的Karp-Rabin滾動(dòng)哈希。
26.如項(xiàng)權(quán)利要求19至25中任何一項(xiàng)所述的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 當(dāng)確定所述塊識(shí)別哈希值匹配所述指紋時(shí),定義所述存儲(chǔ)對(duì)象中對(duì)應(yīng)于所述數(shù)據(jù)窗口 的塊并且存儲(chǔ)所述塊的塊邊界。
27.如項(xiàng)權(quán)利要求19至26中任何一項(xiàng)所述的計(jì)算機(jī)程序產(chǎn)品,其中所述操作還包括: 當(dāng)確定所述數(shù)據(jù)窗口不是所述存儲(chǔ)對(duì)象的所述數(shù)據(jù)結(jié)束時(shí),確定另一數(shù)據(jù)窗口的塊識(shí)別哈希值,并且確定所述另一數(shù)據(jù)窗口的所確定的塊識(shí)別哈希值是否匹配所述指紋或所述存儲(chǔ)的偽指紋。
【文檔編號(hào)】G06F12/02GK103959256SQ201280058333
【公開日】2014年7月30日 申請(qǐng)日期:2012年11月15日 優(yōu)先權(quán)日:2011年11月28日
【發(fā)明者】M·亞庫(kù)謝夫, M·A·史密斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司