專利名稱:數(shù)據(jù)去重的制作方法
數(shù)據(jù)去重相關(guān)申請的交叉引用
本申請涉及2010年6月18日提交的、順序號為61/356,368、代理人案號為201000205-1的美國臨時(shí)申請并且要求該美國臨時(shí)申請的優(yōu)先權(quán),該美國臨時(shí)申請的公開 被結(jié)合在此以作參考。
背景技術(shù):
可以使用備份系統(tǒng)來對計(jì)算機(jī)的存儲裝置進(jìn)行備份。這可以在許多天內(nèi)被重復(fù)地進(jìn)行,其中每天取得一個(gè)備份,從而在發(fā)生了一段時(shí)間之后才被發(fā)現(xiàn)的數(shù)據(jù)丟失仍然可以被恢復(fù)。雖然一些備份可能是“完全備份(full )”,其中做出存儲裝置的完整拷貝,但是其他的可能是“增量備份(incremental)”,其僅僅保存自上一次備份以來已被修改的文件/部分。雖然增量備份不是存儲裝置的完整拷貝,但是當(dāng)與上一個(gè)完全備份以及其間的任何增量備份相組合時(shí),它可以被用來復(fù)原在取得該增量備份時(shí)存儲裝置的內(nèi)容。為了減少備份所需的存儲量,備份系統(tǒng)可以對備份進(jìn)行去重(deduplicate)。它可以通過把備份分成被稱作塊的小片Γ4-12ΚΒ)并且僅僅保持每個(gè)獨(dú)有塊的一個(gè)拷貝來做到這一點(diǎn)。通過僅僅保存獨(dú)有塊加上備份配方(recipe)(用于從所述獨(dú)有塊集合重建備份的指令),備份系統(tǒng)可以使用更少數(shù)量級的存儲裝置來存儲任何給定備份集合。當(dāng)要檢索備份以用于復(fù)原計(jì)算機(jī)的存儲裝置時(shí),必須按順序讀取并組裝構(gòu)成該備份的各種獨(dú)有塊。對于許多現(xiàn)代存儲技術(shù)(例如硬盤驅(qū)動(dòng)器)來說,這一過程的速度在很大程度上取決于所述備份的塊如何被碎片化。更確切地說,每當(dāng)讀取過程必須切換到從備份存儲裝置的不同部分讀取時(shí),它可能付出隨機(jī)查找懲罰(對于當(dāng)前驅(qū)動(dòng)器是 10ms)。如果備份的塊所處的位置沒有局部性(例如76、12、34、224、103、876. · ·而不是76、77、78、224、225,226,...),則復(fù)原速度可能相當(dāng)慢?,F(xiàn)有技術(shù)順序地存儲新的獨(dú)有塊。雖然這把來自給定備份的所有新塊放在一起,但是它不把它們放在來自該備份的舊塊旁邊。如果每天取得備份,則每天的新數(shù)據(jù)被定位在一起。遺憾的是,諸如日志文件和草稿文檔之類的許多文件每天改變一點(diǎn)兒,這導(dǎo)致它們的塊分散在備份系統(tǒng)的存儲裝置上。從給定備份的角度來看,在不同備份之間共享塊也可能導(dǎo)致塊被放置在次優(yōu)位置處。因此,許多用戶抱怨從經(jīng)去重的備份中復(fù)原計(jì)算機(jī)的存儲裝置是緩慢且耗時(shí)的過程。
圖I是示出根據(jù)現(xiàn)有技術(shù)的對于數(shù)據(jù)塊放置使用簡單附加算法的系統(tǒng)的框圖。圖2A是示出根據(jù)本發(fā)明的一個(gè)示例實(shí)施例的用于基于塊的去重系統(tǒng)的基于容器的算法的框圖。圖2B是更詳細(xì)地示出根據(jù)本發(fā)明的一些示例實(shí)施例的用于基于容器的去重的存儲介質(zhì)的一個(gè)實(shí)施例的框圖。圖3是根據(jù)本發(fā)明的示例實(shí)施例的基于容器的、基于塊的去重的方法的流程圖。
具體實(shí)施例方式本發(fā)明的實(shí)施例減少了重建存儲在備份系統(tǒng)中的經(jīng)去重的備份所需的時(shí)間。本發(fā)明的實(shí)施例采用基于塊的去重以減少存儲構(gòu)成所存儲的備份的數(shù)據(jù)塊的多于一個(gè)備份拷貝的發(fā)生。所述系統(tǒng)和伴隨的方法高效地利用計(jì)算機(jī)處理和存儲器資源,并且已經(jīng)顯示出顯著地 減少了計(jì)算機(jī)盤讀取頭為了獲取并組裝位于一個(gè)或多個(gè)存儲盤上的備份的所有部分而必須重定位其自身的次數(shù)。雖然本發(fā)明的一個(gè)或多個(gè)實(shí)施例是在被用作備份系統(tǒng)的情境中描述的,但是它可以被用于許多其他用途。更一般來說,它可以被用作可以存儲任意大小的數(shù)據(jù)對象(被稱作項(xiàng)目)的高效存儲系統(tǒng)。由于它們可能非常大,所以項(xiàng)目通常每次一個(gè)比特被流送到本發(fā)明的一個(gè)或多個(gè)實(shí)施例中。為計(jì)算機(jī)生成備份的軟件可以生成一起構(gòu)成該備份的許多虛擬帶鏡像(高達(dá)4GB);每個(gè)虛擬帶鏡像可以是單個(gè)項(xiàng)目。在基于塊的去重中,輸入數(shù)據(jù)流(或者數(shù)據(jù)輸入或項(xiàng)目)被分成數(shù)據(jù)塊。分塊算法被設(shè)計(jì)成使得,當(dāng)足夠大的字節(jié)序列由兩個(gè)數(shù)據(jù)區(qū)共享時(shí),由分解這些區(qū)所產(chǎn)生的一些塊是相同的。當(dāng)正在攝取新項(xiàng)目時(shí),去重系統(tǒng)嘗試識別出在存儲庫(store)中作為所述新項(xiàng)目被劃分成的塊的拷貝的現(xiàn)有塊。如果識別出這樣的塊拷貝,則所述系統(tǒng)可以通過存儲指向該塊的現(xiàn)有拷貝的引用而不是再次存儲該塊來避免去重。無法為之找到現(xiàn)有拷貝的塊被添加到塊存儲庫。由新塊被存儲的方式可能產(chǎn)生塊碎片化。最簡單的方案是把塊存儲區(qū)域認(rèn)為是塊的線性列表;新塊隨后被簡單地附加到所述塊存儲區(qū)域。所述塊存儲區(qū)域又被順序地布置在盤上或存儲系統(tǒng)上,比如用作RAID組的許多盤。這種方法可以被稱作簡單附加數(shù)據(jù)塊放置方案。當(dāng)去重率高時(shí),新數(shù)據(jù)的許多塊已經(jīng)在存儲庫中具有現(xiàn)有拷貝。這些現(xiàn)有塊拷貝潛在地屬于許多較早項(xiàng)目,其每個(gè)較早項(xiàng)目已由存儲庫在不同時(shí)間接收。由于新塊被線性地布置,因此這意味著構(gòu)成新項(xiàng)目的塊可能在盤上離得很遠(yuǎn)。結(jié)果,當(dāng)要檢索所述項(xiàng)目時(shí),(多個(gè))盤讀取頭將被強(qiáng)迫到處移動(dòng)以讀取這些塊,從而導(dǎo)致許多查找操作。由于查找與順序讀取相比非常緩慢,因此這導(dǎo)致非常慢的檢索速度。圖I是示出根據(jù)現(xiàn)有技術(shù)的使用簡單附加數(shù)據(jù)塊放置技術(shù)的系統(tǒng)的框圖。圖I是示例計(jì)算機(jī)系統(tǒng)100的框圖。計(jì)算機(jī)100可以是單節(jié)點(diǎn)計(jì)算機(jī)系統(tǒng)或者多節(jié)點(diǎn)、分布式計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)100包括分塊模塊102,其接收輸入數(shù)據(jù)流105以用于基于塊的去重。分塊模塊102可以被實(shí)施為在一個(gè)或多個(gè)處理器104上可執(zhí)行的機(jī)器可讀指令。所述一個(gè)或多個(gè)處理器104被連接到存儲器103 (例如易失性存儲器)和存儲介質(zhì)110 (例如持久存儲介質(zhì)比如基于盤的存儲介質(zhì)或其他類型的存儲介質(zhì))。存儲介質(zhì)110存儲包含塊引用111的項(xiàng)目配方108以及塊存儲區(qū)域114。出于該實(shí)例的目的,每個(gè)塊引用111指向存儲在塊存儲區(qū)域114中的數(shù)據(jù)塊112。在一些其他實(shí)施中,存儲介質(zhì)110的一些或所有內(nèi)容可以被存儲在與計(jì)算機(jī)系統(tǒng)100分開的系統(tǒng)中。在圖I中僅僅示出一個(gè)項(xiàng)目配方108 ;附加的項(xiàng)目配方108將隨著接收到新項(xiàng)目而被創(chuàng)建并存儲。存儲器103具有快于存儲介質(zhì)110的存取速度,并且可以被用來臨時(shí)地存儲輸入數(shù)據(jù)塊。
分塊模塊102的機(jī)器可讀指令被加載以用于在處理器(比如104)上執(zhí)行。處理器可以包括微處理器、微控制器、處理器模塊或子系統(tǒng)、可編程集成電路、可編程門陣列、或者另一控制或計(jì)算設(shè)備。數(shù)據(jù)和指令被存儲在相應(yīng)的存儲設(shè)備中,所述存儲設(shè)備被實(shí)施為一個(gè)或多個(gè)計(jì)算機(jī)可讀或計(jì)算機(jī)可用存儲介質(zhì)。所述存儲介質(zhì)包括不同形式的存儲器,包括半導(dǎo)體存儲器設(shè)備,比如動(dòng)態(tài)或靜態(tài)隨機(jī)存取存儲器(DRAM或SRAM)、可擦與可編程只讀存儲器(EPR0M)、電可擦與可編程只讀存儲器(EEPROM)和閃速存儲器;磁盤,比如固定盤、軟盤和可移除盤;其他磁介質(zhì),包括磁帶;光學(xué)介質(zhì),比如光盤(CD)或數(shù)字視頻盤(DVD);或者其他類型的存儲設(shè)備。注意,上面所討論的指令可以被提供在一個(gè)計(jì)算機(jī)可讀或計(jì)算機(jī)可用存儲介質(zhì)上,或者可替換地,可以被提供在分布于可能具有多個(gè)節(jié)點(diǎn)的大系統(tǒng)中的多個(gè)計(jì)算機(jī)可讀或計(jì)算機(jī)可用存儲介質(zhì)上?!按鎯橘|(zhì)”意圖是單個(gè)存儲介質(zhì)或多個(gè)存儲介質(zhì)。這樣的一個(gè)或多個(gè)計(jì)算機(jī)可讀或計(jì)算機(jī)可用存儲介質(zhì)被認(rèn)為是物品(或制造品)的一部分。物品或制造品可以指的是任何所制造的單個(gè)部件或多個(gè)部件。在圖I中,計(jì)算機(jī)100接收來自外部源的輸入數(shù)據(jù)流105 (例如備份鏡像),或者輸入數(shù)據(jù)流105可能是由于計(jì)算機(jī)100根據(jù)預(yù)定備份調(diào)度表選擇各種文件以供備份而產(chǎn)生的。此外,計(jì)算機(jī)100可以代表獨(dú)立計(jì)算機(jī)服務(wù)器或者這樣的機(jī)器的群集。處理器104對輸入數(shù)據(jù)流105應(yīng)用來自分塊算法模塊102的分塊算法以把所述數(shù)據(jù)流劃分成數(shù)據(jù)塊。這里,假設(shè)塊存儲區(qū)域114最初是空的,并且輸入數(shù)據(jù)流5被劃分成數(shù)據(jù)塊1、2、3、4、5、6和7,其中除了塊3和6具有相同內(nèi)容之外,每個(gè)塊都是獨(dú)有的。在本發(fā)明的實(shí)施例的情境中,每個(gè)數(shù)據(jù)塊的大小可以處在2與12kB之間,其中平均大小的數(shù)據(jù)塊是近似4kB。在圖I的實(shí)例中,數(shù)據(jù)塊1、2、3、4、5和7但是沒有6 (3的拷貝)被順序地存儲在塊存儲區(qū)域114中,其可以被存儲在一個(gè)或多個(gè)硬盤或其他大容量存儲設(shè)備上。在攝取輸入數(shù)據(jù)流105時(shí)創(chuàng)建項(xiàng)目配方108 ;它包含按順序用于輸入數(shù)據(jù)流105的塊(塊1、2、3、
4、5、6和7)的塊引用。注意,用于塊3和6的塊引用都指向數(shù)據(jù)塊3。作為示例而非限制,每個(gè)數(shù)據(jù)塊(比如在塊存儲區(qū)域114中示出的數(shù)據(jù)塊112)的大小被設(shè)想為處于2與12kB之間,其中平均大小的數(shù)據(jù)塊是近似4kB。然而,實(shí)施例不如此限于該實(shí)例。在圖I的實(shí)例中,數(shù)據(jù)塊1、2、3、4、5和7被順序地存儲在塊存儲區(qū)域114中,其可以被存儲在一個(gè)或多個(gè)硬盤或其他大容量存儲設(shè)備上。應(yīng)當(dāng)注意,輸入數(shù)據(jù)流105可以包括一個(gè)或多個(gè)單獨(dú)的計(jì)算機(jī)文件的部分或完整拷貝。或者它可以包括一系列數(shù)據(jù)庫表行。因此,來自輸入數(shù)據(jù)流105的一組數(shù)據(jù)塊可以是商業(yè)交易記錄的一部分,而輸入數(shù)據(jù)流的另一部分可以是由完全分開的商業(yè)實(shí)體產(chǎn)生的市場營銷文檔的一部分。對于在輸入數(shù)據(jù)流105中傳送的數(shù)據(jù)的類型沒有限制。在對于數(shù)據(jù)塊放置使用簡單附加算法的典型現(xiàn)有技術(shù)中,處理器104應(yīng)用來自分塊模塊102的分塊算法以把輸入流105劃分成一系列數(shù)據(jù)塊;它隨后確定每個(gè)數(shù)據(jù)塊是否已被存儲在塊存儲區(qū)域114中。如果數(shù)據(jù)塊實(shí)際上已經(jīng)被存儲在塊存儲區(qū)域114中,則處理器104丟棄該數(shù)據(jù)塊,把該數(shù)據(jù)塊(比如用于輸入塊6的數(shù)據(jù)塊3)的現(xiàn)有拷貝的地址添加到項(xiàng)目配方108的末尾,并且考慮下一數(shù)據(jù)塊。如果該數(shù)據(jù)塊尚未被存儲在塊存儲區(qū)域114中,則處理器104把該新數(shù)據(jù)塊添加到塊存儲區(qū)域114的末尾,并且把新存儲的數(shù)據(jù)塊的地址添加到項(xiàng)目配方108的末尾。以這種方式,所述簡單附加算法把每個(gè)獨(dú)有數(shù)據(jù)塊附加到塊存儲區(qū)域114,所以按照最初所見的順序存儲數(shù)據(jù)塊??梢杂商幚砥?04考慮附加的新輸入數(shù)據(jù)流105以用于存儲,從而產(chǎn)生新的項(xiàng)目配方108 (每個(gè)輸入數(shù)據(jù)流105/項(xiàng)目一個(gè)配方),并且更多獨(dú)有數(shù)據(jù)塊112被存儲在塊存儲區(qū)域114中。塊存儲區(qū)域114的內(nèi)容可以包括來自數(shù)千項(xiàng)目的獨(dú)有數(shù)據(jù)塊112。如前所述,這可能導(dǎo)致其數(shù)據(jù)塊112與許多先前項(xiàng)目共享的新輸入數(shù)據(jù)流105具有分散在塊存儲區(qū)域114上的它的數(shù)據(jù)塊112,從而導(dǎo)致緩慢的復(fù)原速度。圖2A是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于基于塊的去重的基于容器的算法的功能元件的框圖。發(fā)明人設(shè)想到,數(shù)據(jù)塊容器是布置在大容量存儲盤或其他大容量存儲設(shè)備的小區(qū)域內(nèi)的盤上數(shù)據(jù)結(jié)構(gòu)。在本發(fā)明的一個(gè)實(shí)施例中,數(shù)據(jù)塊容器可以被形象化為文件,所述文件可以在大約一個(gè)查找操作的時(shí)間周期內(nèi)被訪問和讀取。下列術(shù)語說明用于本發(fā)明的一個(gè)或多個(gè)實(shí)施例的構(gòu)建塊。塊容器是用于存儲塊的盤上數(shù)據(jù)結(jié)構(gòu)。形象化塊容器的最容易的方式是把每個(gè)塊 容器認(rèn)為是一個(gè)文件或一對文件。除了塊數(shù)據(jù)之外,塊容器還可以包含關(guān)于塊的其他數(shù)據(jù),比如用于每個(gè)塊的引用計(jì)數(shù)或者塊的散列的列表。在一個(gè)實(shí)施例中,塊數(shù)據(jù)以及額外的元數(shù)據(jù)被包含在單個(gè)文件中。在另一實(shí)施例中,塊數(shù)據(jù)被包含在一個(gè)文件(稱作塊容器數(shù)據(jù)文件)中,以及元數(shù)據(jù)被包含在分開的文件(稱作塊容器索引文件)中。然而,實(shí)施例不限于此。在至少一個(gè)實(shí)施例中,所述容器相對較小,因此從盤中訪問和讀取一個(gè)容器所花費(fèi)的時(shí)間大約是一個(gè)查找操作。容器ID是唯一地識別出容器的小數(shù)據(jù)值,并且可以被用于從盤中檢索該容器。鉤子是已被采樣算法選擇的輸入數(shù)據(jù)塊的散列。在一個(gè)實(shí)施例中,使用采樣模塊的采樣算法對散列(例如每個(gè)項(xiàng)目中的數(shù)據(jù)塊的散列)進(jìn)行采樣。舉例來說,可以對于其前7個(gè)比特是零的所有散列選擇采樣。這些采樣將被稱作鉤子。容器稀疏索引是把鉤子映射到容器(可能是間接地,例如經(jīng)由容器ID)的存儲器內(nèi)索引。容器稀疏索引把鉤子映射到所述鉤子出現(xiàn)在其中的塊容器。注意,容器稀疏索引和塊容器索引文件(雖然都對容器進(jìn)行索引)在其他方面是無關(guān)的數(shù)據(jù)結(jié)構(gòu)。片段是就塊邊界而言的輸入數(shù)據(jù)流的連續(xù)部分(例如塊序列[q,C2, ...,%])。雖然將把本發(fā)明的一個(gè)或多個(gè)實(shí)施例描述為同時(shí)對整個(gè)輸入數(shù)據(jù)流進(jìn)行操作,但是在實(shí)踐中,本發(fā)明的一個(gè)或多個(gè)實(shí)施例常常是通過把輸入數(shù)據(jù)流劃分成片段并且隨后每次對一個(gè)片段進(jìn)行去重來實(shí)踐的。圖2A是其中結(jié)合了一個(gè)或多個(gè)實(shí)施例的示例計(jì)算機(jī)系統(tǒng)200的框圖。與前面一樣,計(jì)算機(jī)系統(tǒng)200可以是單節(jié)點(diǎn)計(jì)算機(jī)系統(tǒng)或者多節(jié)點(diǎn)、分布式計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)200包括分塊模塊202以及容器分配模塊207、采樣模塊215和稀疏索引模塊219 (在下面的一個(gè)或多個(gè)實(shí)施例中進(jìn)一步描述)。分塊模塊202以及容器分配模塊207、米樣模塊215和稀疏索引模塊219可以被實(shí)施為在一個(gè)或多個(gè)處理器204上可執(zhí)行的機(jī)器可讀指令。正如讀者將認(rèn)識到的那樣,上面提到的模塊中的一個(gè)或多個(gè)也可以被實(shí)施為用于執(zhí)行特定任務(wù)或操作的邏輯,比如硬件(服)。所述一個(gè)或多個(gè)處理器204被連接到存儲器203 (例如易失性存儲器)和存儲介質(zhì)210 (例如持久存儲介質(zhì)比如基于盤的存儲介質(zhì)或者其他類型的存儲介質(zhì))。
如圖2B中所示,存儲介質(zhì)210存儲項(xiàng)目配方231_1、231_2、...、231_M,其包含
(如結(jié)合圖I所描述的)塊引用;以及許多塊容器239-1,239-2.....239-N,每個(gè)包括塊容
器索引(分別是241-1、241-2.....241-N)和關(guān)聯(lián)的塊容器數(shù)據(jù)(分別是251-1、251-2.....
251-N)。塊容器索引241-1與用于塊容器數(shù)據(jù)251-1的元數(shù)據(jù)相關(guān)聯(lián)并且包含該元數(shù)據(jù),塊容器索引241-2與用于塊容器數(shù)據(jù)251-2的元數(shù)據(jù)相關(guān)聯(lián)并且包含該元數(shù)據(jù),等等。在一些實(shí)施例中,項(xiàng)目配方231可以使用兩層數(shù)據(jù)結(jié)構(gòu)來存儲,其中頂層文件指向一系列被稱作清單的文件,每個(gè)包含用于所述項(xiàng)目的一部分(例如片段)的配方。出于該實(shí)例的目的,每個(gè)塊容器索引241-1、241_2.....241-N包含散列列表,其
關(guān)聯(lián)的塊容器數(shù)據(jù)中的每個(gè)塊對應(yīng)一個(gè)散列。這允許僅僅使用小得多的塊容器索引來確定哪些塊存在于關(guān)聯(lián)的塊容器數(shù)據(jù)中。如前所述,在一些實(shí)施例中,塊容器數(shù)據(jù)及其關(guān)聯(lián)的塊容器索引被組合在單個(gè)數(shù)據(jù)結(jié)構(gòu)中。這樣的數(shù)據(jù)結(jié)構(gòu)也應(yīng)當(dāng)被稱作塊容器索引,因?yàn)樗苍试S確定該塊容器包含哪些塊。在一些其他實(shí)施中,存儲介質(zhì)110的內(nèi)容的一些或全部可以被存儲在與計(jì)算機(jī)系統(tǒng)100分開的系統(tǒng)中。如圖2B中所示,將隨著從輸入數(shù)據(jù)流205接收到新項(xiàng)目而創(chuàng)建并存儲多個(gè)項(xiàng)目配方231-1、231-2、· . .、231-M。存儲介質(zhì)還可以包含參數(shù)221。在一些其他實(shí)施中,存儲介質(zhì)210的內(nèi)容的一些或全部可以被存儲在與計(jì)算機(jī)系統(tǒng)200分開的系統(tǒng)中。與前面一樣,存儲器203具有快于存儲介質(zhì)210的存取速度,并且可以被用來臨時(shí)地存儲被選擇來存儲輸入數(shù)據(jù)塊的容器。分塊模塊202以及容器分配模塊207、采樣模塊215和稀疏索引模塊219的機(jī)器可讀指令被加載以用于在一個(gè)或多個(gè)處理器(比如圖2A中的204)上執(zhí)行。數(shù)據(jù)和指令被存儲在存儲設(shè)備中,所述存儲設(shè)備被實(shí)施為一個(gè)或多個(gè)計(jì)算機(jī)可讀或計(jì)算機(jī)可用存儲介質(zhì)。所述存儲介質(zhì)包括不同形式的存儲器,包括半導(dǎo)體存儲器設(shè)備,比如動(dòng)態(tài)或靜態(tài)隨機(jī)存取存儲器(DRAM或SRAM)、可擦與可編程只讀存儲器(EPR0M)、電可擦與可編程只讀存儲器(EEPROM)和閃速存儲器;磁盤,比如固定盤、軟盤和可移除盤;其他磁介質(zhì),包括磁帶;光學(xué)介質(zhì),比如光盤(CD)或數(shù)字視頻盤(DVD);或者其他類型的存儲設(shè)備。注意,指令可以被提供在一個(gè)計(jì)算機(jī)可讀或計(jì)算機(jī)可用存儲介質(zhì)上,或者可替換地,可以被提供在分布于可能具有多個(gè)節(jié)點(diǎn)的大系統(tǒng)中的多個(gè)計(jì)算機(jī)可讀或計(jì)算機(jī)可用存儲介質(zhì)上。“存儲介質(zhì)”意圖是單個(gè)存儲介質(zhì)或多個(gè)存儲介質(zhì)。這樣的一個(gè)或多個(gè)計(jì)算機(jī)可讀或計(jì)算機(jī)可用存儲介質(zhì)被認(rèn)為是物品(或制造品)的一部分。物品或制造品可以指的是任何所制造的單個(gè)部件或多個(gè)部件。在圖2A中,計(jì)算機(jī)200接收來自外部源的輸入數(shù)據(jù)流205,或者可能根據(jù)預(yù)定備份調(diào)度表已選擇了輸入數(shù)據(jù)流205以供備份。輸入數(shù)據(jù)流205被劃分成更小的數(shù)據(jù)塊。再次,作為示例而非限制,每個(gè)數(shù)據(jù)塊的大小被設(shè)想為處在2與12kB之間,其中平均大小的數(shù)據(jù)塊是近似4kB。然而,實(shí)施例不如此限于該實(shí)例。所述一個(gè)或多個(gè)處理器204可以應(yīng)用分塊模塊202的分塊算法以把輸入數(shù)據(jù)流205劃分成數(shù)據(jù)塊以用于存儲在塊容器239-1、239-2、. . .、239-N中的一些和/或?qū)⒈粍?chuàng)建的塊容器239中。分析可以由計(jì)算機(jī)200的處理器204執(zhí)行,或者可以在離計(jì)算機(jī)200許多英里的遠(yuǎn)程位置處執(zhí)行。如圖2B的實(shí)施例中所示,塊容器239-1、239-2、. . .、239_N包含從輸入數(shù)據(jù)流205的先前分析過的分割的備份產(chǎn)生的數(shù)據(jù)塊。作為示例而非限制,在塊容器數(shù)據(jù)251-1中存在數(shù)據(jù)塊A1到數(shù)據(jù)塊Aa。在塊容器數(shù)據(jù)251-2中存在數(shù)據(jù)塊B1到數(shù)據(jù)塊Bb。在塊容器數(shù)據(jù)251-N中存在數(shù)據(jù)塊M1到數(shù)據(jù)塊M。。在圖2B中,在每個(gè)塊容器索引中還可以包括附加的數(shù)據(jù),比如位于關(guān)聯(lián)的塊容器數(shù)據(jù)內(nèi)的數(shù)據(jù)塊的散列的列表、用于每個(gè)數(shù)據(jù)塊的起始地址的偏移等等。在接收到輸入數(shù)據(jù)205時(shí),由應(yīng)用分塊技術(shù)的分塊模塊202劃分輸入數(shù)據(jù)。在Athicha Muthitacharoen等人的“A Low-Bandwidth Network File System^CProceedingsof the 18th (ACM) Symposium on Operating Systems Principles, pp. 174-187,2001 年)和美國專利No. 7,269,689中描述了分塊技術(shù)的實(shí)例。對于由對輸入數(shù)據(jù)流205分塊而產(chǎn)生的每個(gè)數(shù)據(jù)塊,處理器204或者可能是遠(yuǎn)離計(jì)算機(jī)200的處理器或其他計(jì)算資源可以執(zhí)行數(shù)學(xué)函數(shù)以對于每個(gè)數(shù)據(jù)塊產(chǎn)生散列。在本發(fā)明的一些實(shí)施例中,處理器204執(zhí)行散列函數(shù),比如MD5、SHA-I、乘法散列、旋轉(zhuǎn)散列、或者其他合適方法。然而,實(shí)施例不限于此。
·
圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的計(jì)算機(jī)的基于塊的去重的方法的流程圖。圖3中描述的方法可以被實(shí)施在計(jì)算機(jī)和/或備份系統(tǒng)上,比如圖2A和2B中示出的系統(tǒng)。所述系統(tǒng)可以是單節(jié)點(diǎn)計(jì)算機(jī)系統(tǒng)或者多節(jié)點(diǎn)、分布式計(jì)算機(jī)系統(tǒng)。這樣的系統(tǒng)可以包括處理器資源和存儲器資源(例如易失性存儲器和/或非易失性存儲器)以用于執(zhí)行存儲在非瞬時(shí)計(jì)算機(jī)可讀介質(zhì)中的指令。在這里所描述的動(dòng)作可以由存儲在存儲器資源中并由處理器資源執(zhí)行的計(jì)算機(jī)可執(zhí)行指令來執(zhí)行。另外,還可以使用具有邏輯的形式的硬件來實(shí)施動(dòng)作,所述硬件包括一個(gè)或多個(gè)專用集成電路(ASIC)。在圖3的步驟310中,所述方法包括接收散列集合,其中所述散列集合中的每個(gè)散列是從輸入數(shù)據(jù)塊集合中的數(shù)據(jù)塊導(dǎo)出的。正如讀者將認(rèn)識到的那樣,在至少一個(gè)實(shí)施例中,傳入數(shù)據(jù)流被分割成傳入數(shù)據(jù)塊集合。如果被使用在這樣的實(shí)施例中的話,傳入數(shù)據(jù)流可以使用駐留在不同機(jī)器上的分塊模塊進(jìn)行分割并且從外部源接收,或者可以是從該機(jī)器內(nèi)部的源(例如從根據(jù)預(yù)定調(diào)度表針對備份選擇的所存儲的計(jì)算機(jī)程序的文件備份操作)接收的傳入數(shù)據(jù)流。分析由所述分割成數(shù)據(jù)塊的過程(稱作分塊)產(chǎn)生的數(shù)據(jù)塊,以確定可以被用來把每個(gè)數(shù)據(jù)塊與其他數(shù)據(jù)塊進(jìn)行區(qū)分的散列。該分析產(chǎn)生散列集合,其每個(gè)散列是從通過對輸入數(shù)據(jù)流進(jìn)行分塊而產(chǎn)生的輸入數(shù)據(jù)塊集合中的數(shù)據(jù)塊導(dǎo)出的。所述散列集合由計(jì)算機(jī)系統(tǒng)200的采樣模塊接收。如果所述分塊是在不同的機(jī)器上進(jìn)行的,則這可能需要通過網(wǎng)絡(luò)傳送所述散列集合。如框320中所示,所述方法包括對所述散列集合進(jìn)行采樣以形成采樣散列集合,例如根據(jù)采樣算法對散列進(jìn)行采樣以產(chǎn)生第一散列集合。作為示例而非限制,只選擇前五個(gè)比特等于00000的那些散列以用于進(jìn)一步處理。在本發(fā)明的其他實(shí)施例中,可以根據(jù)任何其他標(biāo)準(zhǔn)對散列進(jìn)行采樣。因此,也可以對其中前五個(gè)比特等于11111、010101或者任何其他組合的散列進(jìn)行采樣。此外,雖然對于該實(shí)例已經(jīng)選擇了五個(gè)比特,但是可以使用根據(jù)更少數(shù)目的比特(例如3個(gè))或更大數(shù)目的比特(例如7個(gè))的值的采樣。如框330中所示,所述方法包括通過使用索引(例如稀疏索引206)識別出保存具有處于所述采樣散列集合中的散列的數(shù)據(jù)塊的數(shù)據(jù)塊容器。換句話說,識別出被布置在存儲介質(zhì)設(shè)備上的保存具有包含在所述采樣散列集合中的散列的數(shù)據(jù)塊的數(shù)據(jù)塊容器。在一些情況下,無法識別出所有這樣的容器。在一個(gè)實(shí)施例中,可以通過在稀疏索引206中依次查找所述采樣散列集合中的每個(gè)來識別出容器;這產(chǎn)生已知包含具有處在所述采樣散列集合中的散列的至少一個(gè)數(shù)據(jù)塊的容器的容器ID的列表。在框340中,所述方法包括把所識別出的數(shù)據(jù)塊容器中的至少一個(gè)的索引加載到存儲器中。在一個(gè)實(shí)施例中,在步驟330中識別出的所有數(shù)據(jù)塊容器的塊容器索引被加載到存儲器中。在其他實(shí)施例中,在步驟330中識別出的數(shù)據(jù)塊容器的塊容器索引中的僅僅一些被加載到存儲器中。要加載哪些數(shù)據(jù)塊容器索引可以取決于已知每個(gè)數(shù)據(jù)塊容器包含其散列處于所述采樣散列集合中的多少數(shù)據(jù)塊。作為示例而非限制,(圖2B的)數(shù)據(jù)塊容器251-1可能包括具有包含在所述采樣散列集合中的散列的10個(gè)數(shù)據(jù)塊。另外,數(shù)據(jù)塊容器251-2可能包括具有包含在所述采樣散列集合中的散列的8個(gè)數(shù)據(jù)塊。最后,數(shù)據(jù)塊容器251-N可能包括具有包含在所述采樣散列集合中的散列的2個(gè)數(shù)據(jù)塊,以及其他數(shù)據(jù)塊容器可能不包含具有處在所述采樣散列集合中的散列的數(shù)據(jù)塊。因此,在“加載最佳的2個(gè)容器”策略下,只有數(shù)據(jù)塊容器索引241-1和241-2可能被選擇以用于加載。然而,也可以加載更大數(shù)目的數(shù)據(jù)塊容器索引(例如5個(gè))或者更小數(shù)目的數(shù)據(jù)塊容器索引(例如I個(gè)或更少)以供進(jìn)一步分析。選擇要加載哪些所識別出的數(shù)據(jù)塊容器的索引的許多其他方法是可能的。如框350中所示,所述方法包括確定輸入數(shù)據(jù)塊集合中的哪些散列對應(yīng)于存儲在與所加載的索引相對應(yīng)的數(shù)據(jù)塊容器中的數(shù)據(jù)塊。在一個(gè)實(shí)施例中,這是通過測試每個(gè)輸入數(shù)據(jù)塊的散列以查看它是否被包含在任何一個(gè)所加載的數(shù)據(jù)塊容器索引241中來實(shí)現(xiàn)的。如果輸入數(shù)據(jù)塊D具有散列H并且發(fā)現(xiàn)所加載的數(shù)據(jù)塊容器索引241-1包含散列H,則知道塊容器數(shù)據(jù)251-1 (不一定被加載)包含輸入數(shù)據(jù)塊D的拷貝。如框360中所示,所述方法包括至少部分地基于確定輸入數(shù)據(jù)塊集合中的哪些散列對應(yīng)于存儲在與所加載的索引相對應(yīng)的數(shù)據(jù)塊容器中的數(shù)據(jù)塊,決定應(yīng)當(dāng)存儲輸入數(shù)據(jù)塊集合中的哪些數(shù)據(jù)塊。在一個(gè)實(shí)施例中,決定存儲為之確定其散列不對應(yīng)于被存儲在與所加載的索引相對應(yīng)的數(shù)據(jù)塊容器中的一個(gè)的數(shù)據(jù)塊的任何輸入數(shù)據(jù)塊。這對應(yīng)于存儲在其索引被加載的數(shù)據(jù)塊容器中不存在其已知拷貝的數(shù)據(jù)塊。如框370中所示,所述方法包括把已決定要被存儲的輸入數(shù)據(jù)塊集合中的塊存儲在一個(gè)或多個(gè)數(shù)據(jù)塊容器中。在一個(gè)實(shí)施例中,這可以通過對于數(shù)據(jù)塊放置使用簡單附加算法來實(shí)現(xiàn)。在一個(gè)或多個(gè)實(shí)施例中,所述方法還包括把輸入數(shù)據(jù)流的一部分分割成輸入數(shù)據(jù)塊集合;以及在所述接收步驟之前對于輸入數(shù)據(jù)塊集合中的每個(gè)數(shù)據(jù)塊確定散列以形成所述散列集合。然而,實(shí)施例不限于此。在一個(gè)或多個(gè)可替換實(shí)施例中,所述方法包括請求已決定要被存儲的輸入數(shù)據(jù)塊;以及接收已決定要被存儲的輸入數(shù)據(jù)塊。在至少一個(gè)實(shí)施例中,所述稀疏索引把數(shù)據(jù)塊的散列映射到數(shù)據(jù)塊容器集合。正如讀者將認(rèn)識到的那樣,在一個(gè)或多個(gè)實(shí)施例中,稀疏索引206僅僅對于已被采樣的散列記錄信息。在一個(gè)或多個(gè)實(shí)施例中,對所述散列集合進(jìn)行采樣以形成采樣散列集合320在至少一個(gè)實(shí)施例中包括選擇平均少于四分之一的散列。在一個(gè)或多個(gè)實(shí)施例中,決定應(yīng)當(dāng)存儲輸入數(shù)據(jù)塊集合中的哪些數(shù)據(jù)塊360包括如果確定對應(yīng)于輸入數(shù)據(jù)塊的散列未被包括在所加載的索引中,則決定應(yīng)當(dāng)存儲該輸入數(shù)據(jù)塊。自然地,這包括如果確定輸入數(shù)據(jù)塊的散列被包含在所加載的索引中,則決定
10不應(yīng)當(dāng)存儲該輸入數(shù)據(jù)塊。在一個(gè)或多個(gè)實(shí)施例中,決定應(yīng)當(dāng)存儲輸入數(shù)據(jù)塊集合中的哪些數(shù)據(jù)塊還包括使用容器封頂(capping)來確定將在其中存儲所述輸入數(shù)據(jù)塊集合的第一數(shù)據(jù)塊容器集合,正如上面在共同待審的、共同轉(zhuǎn)讓的美國申請?zhí)?2/759,174中所描述的那樣,其具有共同的發(fā)明人并且在2010年4月13日提交(其被全文結(jié)合在此以作參考);以及決定存儲不具有已被存儲在第一數(shù)據(jù)塊容器集合中的拷貝的輸入數(shù)據(jù)塊360。第一數(shù)據(jù)塊容器集合可以僅僅包含其索引已被加載的數(shù)據(jù)塊容器以及當(dāng)前打開的/新的數(shù)據(jù)塊容器。同樣,正如讀者將認(rèn)識到的那樣,在一個(gè)或多個(gè)實(shí)施例中,存儲輸入數(shù)據(jù)塊集合中的數(shù)據(jù)塊370可以包括使用基于局部性的分配算法來把將被存儲的輸入數(shù)據(jù)塊分配給數(shù)據(jù)塊容器,正如在2007年10月25日提交的、共同轉(zhuǎn)讓的、共同待審的PCT申請?zhí)朥S2007/022585中所描述的那樣;以及把將要存儲的輸入數(shù)據(jù)塊存儲在所分配的數(shù)據(jù)塊容器中?;诰植啃缘姆峙渌惴▏L試把新塊(即已在步驟360中決定存儲的塊)分配給現(xiàn)有 的塊容器,這至少部分地基于包含處于其附近的舊塊的塊容器。舉例來說,如果新塊Z在輸入數(shù)據(jù)流205中緊跟在舊塊A1之后,則基于局部性的分配算法可以嘗試把塊Z放置在與已知將把A1包含在其中的相同塊容器(即容器239-1)中。如果容器239-1是滿的或者沒有用于塊Z的空間,則這樣的放置可能是不可能的?;诰植啃缘姆峙渌惴梢园丫嚯x考慮進(jìn)去;例如在流...B3 X Y Z V A1...中,所述算法可以嘗試把Z放置在容器239-2之前的容器239-1中,這是因?yàn)閬碜匀萜?39-1的舊塊A1比來自容器239-2的舊塊B3更靠近塊Z。上面描述的本發(fā)明的一個(gè)或多個(gè)實(shí)施例可以包括至少三個(gè)部分基于容器的去重(對于本公開是新穎的),容器封頂(它的實(shí)例在共同待審的、共同轉(zhuǎn)讓的美國申請?zhí)?2/759,174中被描述,該美國申請與本申請具有共同的發(fā)明人并且于2010年4月13日提交),以及基于局部性的塊分配(它的實(shí)例在2007年10月25日提交的、共同待審的、共同轉(zhuǎn)讓的PCT申請?zhí)朥S2007/022585中被描述)。上面的詳述、實(shí)例和數(shù)據(jù)提供了對本公開的方法和應(yīng)用以及系統(tǒng)和方法的使用的描述。由于可以在不背離本公開的系統(tǒng)和方法的精神和范圍的情況下做出許多實(shí)例,因此本說明書僅僅闡述了許多可能的實(shí)施例配置和實(shí)施中的一些。雖然在這里已經(jīng)示出和描述了特定實(shí)例,但是本領(lǐng)域普通技術(shù)人員將認(rèn)識到,可以用被計(jì)算來實(shí)現(xiàn)相同結(jié)果的布置來替代所示出的特定實(shí)例。本公開意圖覆蓋本公開的一個(gè)或多個(gè)實(shí)例的適配或變型。應(yīng)當(dāng)理解,上面的描述已經(jīng)以說明性的方式而非限制性的方式被做出。對于本領(lǐng)域技術(shù)人員而言,一回顧上面的描述,上面的實(shí)例與未在這里具體描述的其他實(shí)例的組合將是顯而易見的。本公開的一個(gè)或多個(gè)實(shí)例的范圍包括在其中使用上面的結(jié)構(gòu)和方法的其他應(yīng)用。因此,應(yīng)當(dāng)參照所附權(quán)利要求書連同這樣的權(quán)利要求書被賦予的等同物的完整范圍來確定本公開的一個(gè)或多個(gè)實(shí)例的范圍。已經(jīng)參照附圖詳細(xì)地描述了用于協(xié)作信息服務(wù)的系統(tǒng)和方法的各種實(shí)例,其中相同的附圖標(biāo)記代表貫穿幾個(gè)視圖的相同的部分和組件。對各種實(shí)例的提及并不限制用于顯示廣告的系統(tǒng)和方法的范圍,其僅由附于此的權(quán)利要求書的范圍來限制。另外,在本說明書中所闡述的任何實(shí)例不意圖是限制性的,而僅僅闡述所要求保護(hù)的用于協(xié)作信息服務(wù)的系統(tǒng)和方法的許多可能實(shí)例中的一些。CN 102934097 A
書
明
說
9/9頁在整個(gè)說明書和權(quán)利要求書中,下面識別出的含義不一定限制術(shù)語,而僅僅提供所述術(shù)語的說明性實(shí)例。“一”、“一個(gè)”和“所述”的含義包括復(fù)數(shù)引用,并且“在...中”的含義包括“在...中”和“在...上”。如在這里所使用的短語“在一個(gè)實(shí)施例中”不一定指代相同的實(shí)施例,盡管它可能指代相同的實(shí)施例。
在前述的詳細(xì)描述中,出于簡化本公開的目的,一些特征在單個(gè)實(shí)施例中被集合在一起。這一公開方法不應(yīng)當(dāng)被解釋為反映出本公開的所公開實(shí)例必須比在每個(gè)權(quán)利要求中明確記載的使用更多特征的意圖。而是,正如后面的權(quán)利要求書所反映出的那樣,本發(fā)明的主題在于少于單個(gè)公開實(shí)施例的所有特征。因此,后面的權(quán)利要求書由此被結(jié)合到詳細(xì)描述中,其中每個(gè)權(quán)利要求獨(dú)立作為分開的實(shí)施例。
1權(quán)利要求
1.一種用于數(shù)據(jù)去重的方法,包括 接收散列集合310/206,其中所述散列集合中的每個(gè)散列是從輸入數(shù)據(jù)塊集合205中的數(shù)據(jù)塊251導(dǎo)出的; 對所述散列集合進(jìn)行采樣320/215以形成采樣散列集合241 ; 使用索引330/241識別出保存具有處在所述采樣散列集合241中的散列的數(shù)據(jù)塊的數(shù)據(jù)塊容器251 ; 把所識別出的數(shù)據(jù)塊容器中的至少一個(gè)的索引加載340到存儲器210中; 確定350所述輸入數(shù)據(jù)塊集合205的哪些散列對應(yīng)于存儲在與所加載的索引241相對應(yīng)的數(shù)據(jù)塊容器251中的數(shù)據(jù)塊; 至少部分地基于確定所述輸入數(shù)據(jù)塊集合205的哪些散列241對應(yīng)于存儲在與所加載的索引241相對應(yīng)的數(shù)據(jù)塊容器251中的數(shù)據(jù)塊,決定應(yīng)當(dāng)存儲360所述輸入數(shù)據(jù)塊集合中的哪些數(shù)據(jù)塊;以及 把已決定要被存儲的所述輸入數(shù)據(jù)塊集合205中的塊存儲370在一個(gè)或多個(gè)數(shù)據(jù)塊容器251中。
2.根據(jù)權(quán)利要求I所述的方法,還包括 把輸入數(shù)據(jù)流的一部分分割202/207/215成所述輸入數(shù)據(jù)塊集合;以及在所述接收步驟之前對于所述輸入數(shù)據(jù)塊集合中的每個(gè)數(shù)據(jù)塊確定散列以形成所述散列集合219/206。
3.根據(jù)權(quán)利要求I所述的方法,還包括 請求已決定要被存儲的輸入數(shù)據(jù)塊207 ;以及 接收已決定要被存儲的輸入數(shù)據(jù)塊210。
4.根據(jù)權(quán)利要求I所述的方法,其中,所述索引僅僅對于已被采樣的散列215/219/241把數(shù)據(jù)塊的散列映射到數(shù)據(jù)塊容器集合239的記錄信息。
5.根據(jù)權(quán)利要求I所述的方法,其中,形成采樣散列集合的所述散列集合還包括選擇平均少于四分之一的散列219。
6.根據(jù)權(quán)利要求I所述的方法,其中,決定應(yīng)當(dāng)存儲所述輸入數(shù)據(jù)塊集合中的哪些數(shù)據(jù)塊還包括如果確定對應(yīng)于輸入數(shù)據(jù)塊的散列未被包括在所加載的索引241中,則決定應(yīng)當(dāng)存儲該輸入數(shù)據(jù)塊。
7.根據(jù)權(quán)利要求6所述的方法,其中,決定360應(yīng)當(dāng)存儲所述輸入數(shù)據(jù)塊集合205中的哪些數(shù)據(jù)塊的步驟還包括如果確定輸入數(shù)據(jù)塊的散列被包含在所加載的索引241中,則決定不應(yīng)當(dāng)存儲該輸入數(shù)據(jù)塊。
8.根據(jù)權(quán)利要求6所述的方法,其中,決定應(yīng)當(dāng)存儲所述輸入數(shù)據(jù)塊集合中的哪些數(shù)據(jù)塊還包括 使用容器封頂239來確定將把所述輸入數(shù)據(jù)塊集合存儲在其中的第一數(shù)據(jù)塊容器集合251 ;以及 決定存儲210不具有已被存儲在第一數(shù)據(jù)塊容器集合251中的拷貝的輸入數(shù)據(jù)塊。
9.根據(jù)權(quán)利要求I所述的方法,其中,存儲所述輸入數(shù)據(jù)塊集合中的數(shù)據(jù)塊包括 使用基于局部性的分配算法221把將被存儲的輸入數(shù)據(jù)塊分配給數(shù)據(jù)塊容器251 ;以及把將要存儲的輸入數(shù)據(jù)塊210存儲在所分配的數(shù)據(jù)塊容器251中。
10.一種用于執(zhí)行數(shù)據(jù)去重的系統(tǒng)200,包括 采樣模塊215,其形成對應(yīng)于從數(shù)據(jù)流205的數(shù)據(jù)塊采樣的散列的采樣散列集合; 一個(gè)或多個(gè)塊容器索引241,其識別出保存具有處在所述采樣散列集合中的散列的數(shù)據(jù)塊的數(shù)據(jù)塊容器251 ; 用于把所識別出的數(shù)據(jù)塊容器215中的至少一個(gè)的索引207加載到存儲器203中的邏輯; 用于確定所述輸入數(shù)據(jù)塊集合的哪些散列對應(yīng)于存儲在與所加載的索引241相對應(yīng)的數(shù)據(jù)塊容器251中的數(shù)據(jù)塊的邏輯239 ;以及 用于至少部分地基于確定所述輸入數(shù)據(jù)塊集合的哪些散列對應(yīng)于存儲在與所加載的索引241相對應(yīng)的數(shù)據(jù)塊容器251中的數(shù)據(jù)塊來決定應(yīng)當(dāng)存儲所述輸入數(shù)據(jù)塊集合中的哪些數(shù)據(jù)塊的邏輯221/231/239。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),還包括用于把已決定要被存儲的輸入數(shù)據(jù)塊集合中的數(shù)據(jù)塊存儲在一個(gè)或多個(gè)數(shù)據(jù)塊容器251中的邏輯207。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),還包括用于對被存儲在布置于存儲介質(zhì)210上的數(shù)據(jù)塊容器251中的數(shù)據(jù)塊的散列215進(jìn)行采樣的邏輯。
13.根據(jù)權(quán)利要求10所述的系統(tǒng),還包括用于決定應(yīng)當(dāng)存儲所述輸入數(shù)據(jù)塊集合中的哪些數(shù)據(jù)塊的邏輯239,所述邏輯還基于 容器封頂信息251以確定將把所述輸入數(shù)據(jù)塊集合存儲在其中的第一數(shù)據(jù)塊容器集合;以及 基于確定輸入數(shù)據(jù)塊不具有已被存儲在第一數(shù)據(jù)塊容器集合251中的拷貝而存儲207/204輸入數(shù)據(jù)塊。
14.根據(jù)權(quán)利要求10所述的系統(tǒng),還包括用于存儲所述輸入數(shù)據(jù)塊集合中的數(shù)據(jù)塊的邏輯,所述邏輯是基于 基于局部性的分配信息221/239,其把將被存儲的輸入數(shù)據(jù)塊分配給數(shù)據(jù)塊容器251 ;以及 把將要存儲的輸入數(shù)據(jù)塊存儲207/204在所分配的數(shù)據(jù)塊容器251中。
15.一種具有在其上存儲的計(jì)算機(jī)可執(zhí)行指令的非瞬時(shí)計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令由處理器執(zhí)行以 對散列集合進(jìn)行采樣320/215以形成采樣散列集合241,其中所述散列集合中的每個(gè)散列是從輸入數(shù)據(jù)塊集合205中的數(shù)據(jù)塊251導(dǎo)出的; 使用索引330/241識別出保存具有處在所述采樣散列集合241中的散列的數(shù)據(jù)塊的數(shù)據(jù)塊容器251 ; 把所識別出的數(shù)據(jù)塊容器中的至少一個(gè)的索引加載340到存儲器210中; 確定350所述輸入數(shù)據(jù)塊集合205的哪些散列對應(yīng)于存儲在與所加載的索引241相對應(yīng)的數(shù)據(jù)塊容器251中的數(shù)據(jù)塊;以及 至少部分地基于確定所述輸入數(shù)據(jù)塊集合205的哪些散列241對應(yīng)于存儲在與所加載的索引241相對應(yīng)的數(shù)據(jù)塊容器251中的數(shù)據(jù)塊,決定應(yīng)當(dāng)存儲360所述輸入數(shù)據(jù)塊集合中的哪些數(shù)據(jù)塊。
全文摘要
一種用于數(shù)據(jù)去重的方法包括接收從輸入數(shù)據(jù)塊集合中的數(shù)據(jù)塊導(dǎo)出的散列集合310。所述方法包括對所述散列集合進(jìn)行采樣320,使用索引識別出保存具有處在所述采樣散列集合中的散列的數(shù)據(jù)塊的數(shù)據(jù)塊容器330,以及加載所識別出的數(shù)據(jù)塊容器中的至少一個(gè)的索引340。所述方法包括確定哪些散列對應(yīng)于存儲在與所加載的索引相對應(yīng)的數(shù)據(jù)塊容器中的數(shù)據(jù)塊350,以及至少部分地基于所述確定來決定應(yīng)當(dāng)存儲所述輸入數(shù)據(jù)塊集合中的哪些數(shù)據(jù)塊。
文檔編號G06F13/14GK102934097SQ201080067520
公開日2013年2月13日 申請日期2010年10月8日 優(yōu)先權(quán)日2010年6月18日
發(fā)明者K.埃什希, M.D.利利布里奇, D.M.富金德 申請人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)