專利名稱:基于采樣消除重復(fù)數(shù)據(jù)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明概要地涉及數(shù)據(jù)存儲壓縮,更具體來說,涉及重復(fù)數(shù)據(jù)的 基于采樣的消除(重復(fù)數(shù)據(jù)刪除)。
背景技術(shù):
存儲系統(tǒng)通常包括一個或多個存儲設(shè)備,根據(jù)需要,可將信息輸 入其中并且可從其中獲得信息。存儲系統(tǒng)包括存儲操作系統(tǒng),它通過 其它操作和調(diào)用支持該系統(tǒng)所實現(xiàn)的存儲服務(wù)的存儲操作從而在功 能上組織該系統(tǒng)。存儲系統(tǒng)可按照多種存儲架構(gòu)來實現(xiàn),其中包括但 不限于依附網(wǎng)絡(luò)的存儲環(huán)境、存儲區(qū)域網(wǎng)絡(luò)以及直接與客戶機(jī)或主計 算機(jī)附連的磁盤組件。存儲設(shè)備通常是組織為磁盤陣列的磁盤驅(qū)動 器,其中術(shù)語"磁盤"通常描述獨立的旋轉(zhuǎn)磁介質(zhì)存儲設(shè)備。在本上
下文中,術(shù)語"磁盤"與硬盤驅(qū)動器(HDD)或直接訪問存儲設(shè)備(DASD) 同義。
數(shù)據(jù)存儲是在存檔和一致應(yīng)用環(huán)境中經(jīng)營的許多行業(yè)的中心部 分,例如銀行、國有企業(yè)/承包商和股票經(jīng)紀(jì)。在許多這些環(huán)境中, 需要以不可改變方式、可能長期地存儲所選數(shù)據(jù),例如電子郵件消息、 金融文檔和/或交易記錄。通常執(zhí)行數(shù)據(jù)備份操作以確保在出故障的 情況下保護(hù)和恢復(fù)這類數(shù)據(jù)。但是,備份操作往往在備份存儲資源(如 磁盤)上造成數(shù)據(jù)的重復(fù),從而導(dǎo)致低效地消耗資源上的存儲空間。 一種形式的長期檔案存儲是在電子磁帶介質(zhì)上存儲數(shù)據(jù)。物理磁帶介 質(zhì)的顯著缺點是緩慢的數(shù)據(jù)訪問速率以及用于管理大量物理磁帶的 額外要求。為了應(yīng)付這些顯著的缺點,若干存儲系統(tǒng)供應(yīng)商提供虛擬 磁帶庫(VTL)系統(tǒng),它們使用多個磁盤驅(qū)動器來模擬磁帶存儲設(shè)備。在典型的VTL環(huán)境中,充當(dāng)主存儲的存儲系統(tǒng)執(zhí)行存儲系統(tǒng)的文件系 統(tǒng)(或其它數(shù)據(jù)倉庫(data store))到VTL系統(tǒng)的完全備份操作。多 個完全備份可隨時間而發(fā)生,由此導(dǎo)致低效地消耗VTL系統(tǒng)上的存儲 空間。因此,希望消除例如與VTL系統(tǒng)關(guān)聯(lián)的磁盤的存儲資源上的重 復(fù)數(shù)據(jù),并確保僅存儲數(shù)據(jù)的單一實例,由此實現(xiàn)存儲壓縮。
在Ross Wi 11 iams于1999年11月23日發(fā)表的標(biāo)題為"METHOD FOR PARTITIONING A BLOCK OF DATA INTO BLOCKS AND FOR STORING AND COMMUNICATING SUCH SUBBLOCKS"的美國專利No. 5990810 (以下稱作 ",810專利")中描述了一種用于實現(xiàn)減少數(shù)據(jù)重復(fù)(重復(fù)數(shù)據(jù)刪除) 的技術(shù)。,810專利中所述的方法首先利用滾動哈希函數(shù)生成多個數(shù)據(jù) 子塊。滾動哈希利用產(chǎn)生置于兩個子塊之間的邊界的固定大小的數(shù)據(jù) 窗口。 一旦數(shù)據(jù)塊已經(jīng)分為子塊,計算各子塊的哈希值以形成哈希值 表。然后,哈希表用來確定新的子塊是否與其哈希值先前已經(jīng)存儲在 哈希表中的任何子塊相同。為了執(zhí)行這種確定,新子塊的哈希值被計 算,并且與哈希表中包含的值進(jìn)行比較。如果新子塊的哈希值先前已 經(jīng)存儲在哈希表中,則已存儲的哈希值所識別的子塊被看作與新子塊 相同。在這種情況下,用指向先前存儲的子塊的指針取代新子塊,由 此減少該子塊所需的存儲空間量。,810專利中所述的技術(shù)的一個顯著 缺點在于,它需要執(zhí)行大量計算密集的哈希計算,這會影響實現(xiàn)這種 方法的存儲/VTL系統(tǒng)的整體性能。另一個顯著缺點在于,哈希表隨 著凄t據(jù)集的大小增加而將變得更大,并且不可升級到大數(shù)據(jù)集,例如 千吉字節(jié)(terabyte)或百萬吉字節(jié)(petabyte)的數(shù)據(jù)。
在Ling Zheng等人于2005年4月13日提交的標(biāo)題為"METHOD AND APPARATUS FOR IDENTIFYING AND ELIMINATING DUPLICATE DATA BLOCKS AND SHARING DATA BLOCKS IN A STORAGE SYSTEM"的美國專 利申請序號11/105895中描述了另一種用于消除重復(fù)數(shù)據(jù)的技術(shù)。在 這個專利申請所述的系統(tǒng)中,對于說明性地為4千字節(jié)(KB)大小的固 定大小的塊執(zhí)行所有重復(fù)數(shù)據(jù)刪除操作。在要存儲新的塊時,4 KB塊的哈希被計算,并與包含先前存儲的塊的哈希值的哈希表進(jìn)行比 較。如果新塊的哈希值與先前存儲的塊相同,則存在新的塊與先前存 儲的塊相同的高概率度。在這種情況下,用指向先前存儲塊的指針取 代新子塊,由此降低存儲資源消耗。然而,這個系統(tǒng)的一個顯著缺點 在于,它局限"f固定大小的塊。在操作中,在數(shù)據(jù)集的中間的單個比
特的添加都會引起所有后續(xù)塊的未對準(zhǔn)(misalignment),并且阻止 重復(fù)數(shù)據(jù)刪除,由此導(dǎo)致存儲資源的低效使用。
如Chris Reichenberger的"DELTA STORAGE FOR ARBITRARY NONTEXT FILES" (Proceedings of f力e lrd /"fer/2af/o/ a7 /Tori^^op 0/2 5^/7附re 6b/2/7^/ra〃0/ 鵬/zage7z/e/^, Trondheim, Norway, 1214, 1991年6月,ACM,第144-152頁)中所述的第三種技術(shù)是使用數(shù)據(jù) 的哈希來查找最長的公共數(shù)據(jù)序列。但是,計算和比較數(shù)據(jù)集中的所 有可能的子串的哈希的上述方法沒有采用任何采樣技術(shù)。因此,它對 于大數(shù)據(jù)集將不是可升級的。
發(fā)明內(nèi)容
本發(fā)明通過提供用于消除存儲資源(如^P茲盤)上存儲的重復(fù)數(shù)據(jù) (重復(fù)數(shù)據(jù)刪除)的基于采樣的技術(shù),克服了現(xiàn)有技術(shù)的缺點。根據(jù)本 發(fā)明,在由例如實施本發(fā)明的存儲系統(tǒng)或虛擬磁帶庫(VTL)系統(tǒng)的服
務(wù)器接收到如備份數(shù)據(jù)流的新數(shù)據(jù)集時,識別新數(shù)據(jù)集中的一個或多 個錨(anchor)。本文所使用的"錨"定義為數(shù)據(jù)集中定義關(guān)于可能 的重復(fù)數(shù)據(jù)刪除的關(guān)注區(qū)的點。錨可通過執(zhí)行數(shù)據(jù)集的滾動哈希來定 位。在這些情況下,錨點("錨")位于定義簽名寬度的固定大小區(qū)域 中。還可才艮據(jù)數(shù)據(jù)容器(如文件)中的位置或者例如其它上下文信息 (如凝:據(jù)集中的預(yù)定偏移量)。
對于新數(shù)據(jù)集中已識別的各錨,確定錨是否先前已經(jīng)存儲在錨數(shù) 據(jù)庫(或其它數(shù)據(jù)倉庫)中。如果它尚未存儲在錨數(shù)據(jù)庫中,則將該錨 連同識別它在數(shù)據(jù)集中的位置的信息一起存儲在錨數(shù)據(jù)庫中。但是,在備選實施例中,錨位置可以只是數(shù)據(jù)集中的偏移量。如果已識別的
錨先前存儲在錨數(shù)據(jù)庫中,則服務(wù)器定位模式數(shù)據(jù)庫(pattern database)中的錨,并且從錨點開始向前和向后執(zhí)行新數(shù)據(jù)集與包含 模式數(shù)據(jù)庫中存儲的錨的數(shù)據(jù)集之間逐個比特(或逐個字節(jié))的數(shù)據(jù) 比較。這個數(shù)據(jù)比較的結(jié)果是分別識別從錨點向前和向后的存儲的數(shù) 據(jù)集與新數(shù)據(jù)集之間匹配的數(shù)據(jù)的連續(xù)比特的數(shù)量的前向增量值
(delta value)和后向增量值。在新數(shù)據(jù)集中,用識別錨以及前向 和后向增量值的存儲指示符取代重復(fù)數(shù)據(jù),即錨點周圍的后向增量值 與前向增量值之間的數(shù)據(jù)范圍。
通過參照以下結(jié)合附圖的描述,可以更好地了解本發(fā)明的上述及 其它優(yōu)點,附圖中相同的參考標(biāo)號表示相同或功能相似的元件
圖1是包括根據(jù)本發(fā)明的實施例的虛擬磁帶庫(VTL)系統(tǒng)的示范 存儲系統(tǒng)環(huán)境的示意框圖2是根據(jù)本發(fā)明的實施例的VTL系統(tǒng)的示意框圖3是根據(jù)本發(fā)明的實施例、詳細(xì)說明用于執(zhí)行基于采樣的重復(fù) 數(shù)據(jù)刪除過程的過程步驟的流程圖4是示出根據(jù)本發(fā)明的實施例、錨周圍的后向和前向增量的形 成的圖;以及
圖5是示出根據(jù)本發(fā)明的實施例、用存儲指示符取代重疊數(shù)據(jù)的 框圖。
具體實施例方式
A. 存儲系統(tǒng)環(huán)境
圖1是可有利地與本發(fā)明配合使用的存儲系統(tǒng)環(huán)境100的示意框 圖。存儲系統(tǒng)環(huán)境100包括通過網(wǎng)絡(luò)120與多個客戶機(jī)110互連的存 儲系統(tǒng)125。網(wǎng)絡(luò)120可以說明性地體現(xiàn)為以太網(wǎng)或光纖信道(FC)網(wǎng)
9絡(luò)。還與網(wǎng)絡(luò)120互連的是虛擬磁帶庫(VTL)系統(tǒng)200,它說明性地 實現(xiàn)本發(fā)明的重復(fù)數(shù)據(jù)刪除技術(shù)。在操作上還與VTL系統(tǒng)200連接的 是一個或多個存儲設(shè)備,例如組織成存儲陣列160的磁盤130。
在操作中,存儲系統(tǒng)125服務(wù)于來自客戶機(jī)110的數(shù)據(jù)訪問請求。 每個客戶機(jī)110可以是配置成運行應(yīng)用并按照信息傳送的客戶機(jī)/服 務(wù)器模型與存儲系統(tǒng)125進(jìn)行交互的通用計算機(jī)。也就是說,客戶機(jī) 可請求存儲系統(tǒng)的服務(wù),而該系統(tǒng)可通過經(jīng)由網(wǎng)絡(luò)120交換分組來返 回客戶機(jī)所請求的服務(wù)的結(jié)果。當(dāng)訪問例如文件和目錄的數(shù)據(jù)容器的 形式中的例如數(shù)據(jù)的信息時,客戶機(jī)可在TCP/IP上發(fā)出包括基于文 件的訪問協(xié)議的分組,例如公共因特網(wǎng)文件系統(tǒng)(CIFS)協(xié)議或網(wǎng)絡(luò)文 件系統(tǒng)(NFS)協(xié)議。備選地,當(dāng)訪問例如塊的數(shù)據(jù)容器的形式中的信 息時,客戶機(jī)可發(fā)出包括基于塊的訪問協(xié)議的分組,例如在TCP上封 裝的小型計算機(jī)系統(tǒng)接口 (SCSI)協(xié)議(iSCSI)以及在光纖信道(FCP) 上封裝的SCSI。
當(dāng)存儲系統(tǒng)125的管理員希望執(zhí)行備份操作時,常^U茲帶備份軟 件可與存儲系統(tǒng)125配合使用,以便執(zhí)行到VTL系統(tǒng)200的備份操作。 VTL系統(tǒng)200對于存儲系統(tǒng)125表現(xiàn)為遠(yuǎn)程》茲帶驅(qū)動器;因此,存儲 系統(tǒng)125可使用常失JW茲帶備份軟件來執(zhí)行到VTL系統(tǒng)200的常關(guān)JUt帶 備份操作。通常,各備份搡作引起存儲系統(tǒng)125所存儲的整個文件系 統(tǒng)到VTL系統(tǒng)200的復(fù)制,例如作為"備份"。這種復(fù)制的一個顯著 的結(jié)果在于,VTL系統(tǒng)200可能包括大量重復(fù)數(shù)據(jù),即存儲系統(tǒng)125 的備份的每個之中保持為相同的數(shù)據(jù)和/或不同客戶機(jī)110的備份之 間的冗余數(shù)據(jù)。本發(fā)明說明性地根據(jù)新穎的基于采樣的重復(fù)數(shù)據(jù)刪除 技術(shù)來消除重復(fù)數(shù)據(jù),下面進(jìn)一步進(jìn)行描述。
B. 虛擬磁帶庫系統(tǒng)
圖2是可有利地與本發(fā)明配合使用的VTL系統(tǒng)200的示意框圖。 VTL系統(tǒng)200說明性地是計算機(jī),它提供與例如本地存儲(磁盤)陣列 160的A茲盤130的存儲設(shè)備上的信息組織相關(guān)的存儲服務(wù)。VTL系統(tǒng)200說明性地包括通過系統(tǒng)總線225互連的處理器222、存儲器224、 一個或多個網(wǎng)絡(luò)適配器226以及一個或多個存儲適配器228。各網(wǎng)絡(luò) 適配器226包括通過網(wǎng)絡(luò)120將VTL系統(tǒng)200與存儲系統(tǒng)125連接所 需的機(jī)械的、電氣的和信令的電路。VTL系統(tǒng)200還包括操作系統(tǒng)250, 它與各種模塊(如虛擬磁帶庫(VTL)模塊260 )進(jìn)行交互,下面進(jìn)一 步進(jìn)行描述。操作系統(tǒng)250可在磁盤130上實現(xiàn)邏輯數(shù)據(jù)對象倉庫并 且由例如運行于VTL系統(tǒng)200上的VTL模塊260的應(yīng)用程序所使用。 如本文所述,邏輯數(shù)據(jù)對象倉庫說明性地體現(xiàn)為錨數(shù)據(jù)庫(DB) 270和 模式DB 280。
在說明性實施例中,存儲器224包括由處理器和適配器可尋址的 存儲位置,用于存儲軟件程序代碼,例如操作系統(tǒng)250和VTL模塊 260。處理器和適配器又可包括配置成運行軟件代碼并操縱數(shù)據(jù)結(jié)構(gòu) 的處理元件和/或邏輯電路。本領(lǐng)域的技術(shù)人員清楚地知道,包括各 種計算機(jī)可讀介質(zhì)在內(nèi)的其它處理和存儲部件可用于存儲和運行與 本文所述的發(fā)明技術(shù)有關(guān)的程序指令。
存儲適配器228與運行于VTL系統(tǒng)200上的操作系統(tǒng)250合作, 以在例如錄像帶、光學(xué)、DVD、磁帶、磁泡存儲器、電子隨機(jī)訪問存 儲器、微機(jī)電以及適于存儲包括數(shù)據(jù)和奇偶校驗信息在內(nèi)的信息的任
儲和檢索所請求的信息。但是,如本文說明性地所述,信息優(yōu)選地存 ^f諸在本地存儲陣列160的^F茲盤130 (如HDD和/或DASK )上。存儲適 配器包括輸入/輸出(1/0)接口電路,它通過I/0互連設(shè)置(如常規(guī)高 性能FC串行鏈路拓樸結(jié)構(gòu))與磁盤耦合。
如上所述,操作系統(tǒng)250說明性地在》茲盤130上實現(xiàn)邏輯數(shù)據(jù)對 象倉庫。還應(yīng)當(dāng)注意,在備選實施例中,可利用其它形式的數(shù)據(jù)組織, 包括例如文件系統(tǒng)。因此,利用數(shù)據(jù)對象倉庫的描述應(yīng)當(dāng)僅作為示范。 此外,VT1^莫塊260與#:作系統(tǒng)250合作以實現(xiàn)VTL系統(tǒng)200的虛擬 磁帶庫功能性。VTL模塊260說明性地存儲來自使用數(shù)據(jù)對象倉庫的數(shù)據(jù)。值得注意,VTL模塊260還實現(xiàn)本發(fā)明的重復(fù)數(shù)據(jù)刪除技術(shù)。 C. 基于采樣的重復(fù)數(shù)據(jù)刪除
本發(fā)明提供一種用于消除存儲資源(如》茲盤130)上存儲的重復(fù) 數(shù)據(jù)(重復(fù)數(shù)據(jù)刪除)的基于采樣的技術(shù)。根據(jù)本發(fā)明,在由服務(wù)器、 例如存儲系統(tǒng)125或系統(tǒng)200接收到新數(shù)據(jù)集時,識別新數(shù)據(jù)集中的 一個或多個錨。本文所使用的"錨"定義為數(shù)據(jù)集中定義關(guān)于可能的 重復(fù)數(shù)據(jù)刪除的關(guān)注區(qū)的點。錨可通過執(zhí)行數(shù)據(jù)集的滾動哈希來定 位。在這類情況下,錨點("錨")位于定義簽名寬度的固定大小區(qū)域 中。還可根據(jù)數(shù)據(jù)容器(如文件)中的位置或者其它上下文信息(如 數(shù)據(jù)集中的預(yù)定偏移量)來選擇錨。應(yīng)當(dāng)注意,錨可使用各種技術(shù)來 識別。因此,本文所述的技術(shù)應(yīng)當(dāng)看作只是示范。
對于新數(shù)據(jù)集中已識別的各錨,確定錨是否先前已經(jīng)存儲在錨數(shù) 據(jù)庫270中。如果它尚未存儲在錨數(shù)據(jù)庫中,則將該錨連同識別它在 數(shù)據(jù)集中的位置的信息一起存儲在錨數(shù)據(jù)庫270中。數(shù)據(jù)集說明性地 存儲在模式數(shù)據(jù)庫250中,其中模式數(shù)據(jù)庫250在例如數(shù)據(jù)對象倉庫 之上布置或?qū)崿F(xiàn)。但是,在備選實施例中,錨位置可以只是數(shù)據(jù)集中 的偏移量。如果已識別的錨先前存儲在錨數(shù)據(jù)庫中,則服務(wù)器定位模 式數(shù)據(jù)庫250中的錨,并且從錨點開始向前和向后執(zhí)行新數(shù)據(jù)集與包 含模式數(shù)據(jù)庫250中存儲的錨的數(shù)據(jù)集之間逐個比特的數(shù)據(jù)比較。這 個數(shù)據(jù)比較的結(jié)果是分別識別從錨點向前和向后的存儲的數(shù)據(jù)集與 新數(shù)據(jù)集之間匹配的數(shù)據(jù)的連續(xù)比特的數(shù)量的前向增量值和后向增 量值。在新數(shù)據(jù)集中,用識別錨以及前向和后向增量值的存儲指示符 取代重復(fù)數(shù)據(jù),即錨周圍的后向增量值與前向增量值之間的數(shù)據(jù)范 圍。
圖3是根據(jù)本發(fā)明的說明性實施例、詳細(xì)說明基于采樣的重復(fù)數(shù) 據(jù)刪除過程300的步驟的流程圖。過程300在步驟305開始,并繼續(xù) 進(jìn)行到步驟310,其中由服務(wù)器(如VTL系統(tǒng)200 )接收新數(shù)據(jù)集。 在圖1的說明性環(huán)境100中,所接收的數(shù)據(jù)集可包括從存儲系統(tǒng)125送往VTL系統(tǒng)200的新磁帶4^數(shù)據(jù)流。但是,在備選實施例中,可 在包括例如存儲系統(tǒng)125中存儲的文件的任何計算機(jī)上使用任何數(shù) 據(jù)集。因此,對于作為送往VTL系統(tǒng)200的磁帶備份流的數(shù)據(jù)集的描 述應(yīng)當(dāng)僅作為示范。如上所述,在備選實施例中,任何形式的數(shù)據(jù)集 可在任何計算機(jī)上利用。因此,本發(fā)明的教導(dǎo)可在與以下所述的VTL 系統(tǒng)環(huán)境不同的環(huán)境中利用。
響應(yīng)對新數(shù)據(jù)集的接收,在步驟315, VTL模塊260識別新數(shù)據(jù) 集中的一個或多個錨。根據(jù)本發(fā)明,可通過多種方式來識別錨。 一種 錨識別技術(shù)是在數(shù)據(jù)集中預(yù)定偏移處放置錨。這些偏移量可以是固定 的,或者可基于數(shù)據(jù)集中的數(shù)據(jù)類型。例如,如果數(shù)據(jù)集是磁帶存檔 備份數(shù)據(jù)流,則錨可放置在數(shù)據(jù)流中的各記錄的開頭。另一種用于識 別錨的示范技術(shù)是使用固定大小窗口 ,沿數(shù)據(jù)集執(zhí)行滾動哈希。然后, 當(dāng)哈希值(以常數(shù)為模)等于預(yù)定值時,錨可放置在窗口中。例如,可 利用使用512比特的窗口大小的滾動哈希。當(dāng)以N為模的哈希值等于 0時,錨可放置在窗口的開始。
一旦已經(jīng)識別錨,則在步驟320, VTL模塊260確定已識別的錨 是否位于錨數(shù)據(jù)庫270中。如果已識別的錨沒有存儲在錨數(shù)據(jù)庫中, 則過程300轉(zhuǎn)到步驟325,其中VTL模塊將錨放置在錨數(shù)據(jù)庫中。某 些錨可能不存儲在錨數(shù)據(jù)庫中,例如過于頻繁出現(xiàn)以致于沒用的錨。 VTL;f莫塊可用這些頻繁出現(xiàn)的錨來配置,或者在備選實施例中可跟蹤 頻繁出現(xiàn)的錨以識別不應(yīng)當(dāng)保持在錨數(shù)據(jù)庫中的那些錨。然后,在步 驟330,確定數(shù)據(jù)集中是否有其它錨。如果是,則過程300返回步驟 315,其中VTL模塊260識別數(shù)據(jù)集中的另一個錨。否則,過程300 在步驟335完成。
但是,如果已識別的錨處于錨數(shù)據(jù)庫270中,則VTL模塊260開 始逐個比特(或逐個字節(jié))比較包圍模式數(shù)據(jù)庫280中的錨與所接收 凄史據(jù)集中的錨點的區(qū)域,以識別前向和后向增量值(步驟340)。增量 值識別從錨點開始向前/向后的保留比特的數(shù)量,所述比特在模式數(shù)據(jù)庫280中的與所接收數(shù)據(jù)集中的區(qū)域之間是相同的。例如,如果數(shù) 據(jù)對于錨點前面的1000個比特以及錨點之后的15個比特是相同的, 則后向增量值將設(shè)置成等于15,而前向增量值將設(shè)置成1000。應(yīng)當(dāng) 注意,在—某些情況下,根據(jù)錨的放置,特定增量值可等于0。例如, 如果在滾動哈希所使用的窗口的開始選擇錨點,則在錨點之前沒有比 特可與模式數(shù)據(jù)庫匹配。后向/前向增量值("增量")通常包含滑動 哈希窗口的寬度;但是,這不是本發(fā)明的要求。通過利用錨點以及前 向和后向增量,可識別重復(fù)數(shù)據(jù)的區(qū)域,即范圍從錨點后面的后向增 量(比特數(shù))到錨點前面的前向增量(比特數(shù))的數(shù)據(jù)。根據(jù)本發(fā)明,重 復(fù)數(shù)據(jù)的這個已識別區(qū)域可從存儲設(shè)備消除,由此實現(xiàn)壓縮并提高使 用存儲資源的效率。
然后在步驟345,用存儲指示符取代新數(shù)據(jù)集中的重復(fù)數(shù)據(jù)的已 識別區(qū)域。存儲指示符說明性地識別錨以及前向和后向增量。當(dāng)存儲 指示符具有比被取代的重復(fù)數(shù)據(jù)更小的大小時,則得到數(shù)據(jù)集的壓 縮。因此,根據(jù)實現(xiàn)細(xì)節(jié),在取代重復(fù)數(shù)據(jù)之前可能需要最小大小。 例如,如果存儲指示符需要256比特,除非(前向增量值+后向增量 值)〉256,否則不會發(fā)生壓縮。應(yīng)當(dāng)注意,在備選實施例中,系統(tǒng)可 包括發(fā)生取代之前的最小大小的管理員控制閾值。這種閾值可使管理 員能夠根據(jù)期望的數(shù)據(jù)的性質(zhì)來調(diào)整系統(tǒng)的性能。因此,系統(tǒng)可包括 例如存儲指示符的大小的靜態(tài)閾值以及例如管理員設(shè)置的動態(tài)閾值。 同樣,如果數(shù)據(jù)集中沒有其它錨,則過程在步驟335完成。
在步驟340中,所識別的重復(fù)凄t據(jù)的區(qū)域可具有這個區(qū)域中的其 它錨點。但是,那些錨點不需要由步驟315進(jìn)行處理。待處理的下一 個錨點將在重復(fù)數(shù)據(jù)的已識別區(qū)域之后的新數(shù)據(jù)中。此外,忽略的錨 點可不需要使用錨識別技術(shù)來計算。重復(fù)數(shù)據(jù)區(qū)域中的新錨點集合將 與原始數(shù)據(jù)區(qū)域中的集合相同。性能有益效果在于,當(dāng)處理長的匹配 數(shù)據(jù)流時將必須計算和處理的錨點較少。
另外,如果在將新數(shù)據(jù)寫入存儲服務(wù)器之前能夠識別重復(fù)數(shù)據(jù),則新的重復(fù)數(shù)據(jù)可以根本不需要寫入VTL系統(tǒng)200。其有益效果是減 少的網(wǎng)絡(luò)上的1/0操作。
圖4是環(huán)境400的示意圖,示出先前存儲的數(shù)據(jù)集405與新數(shù)據(jù) 集410之間的后向和前向增量的生成。在先前數(shù)據(jù)集405、即先前由 VTL系統(tǒng)200接收和處理的數(shù)據(jù)集中,已經(jīng)識別三個錨A1、 A2、 A3。 在新數(shù)據(jù)集410、即當(dāng)前所處理的數(shù)據(jù)集中,確定存在單個錨A2。作 為響應(yīng),VTL系統(tǒng)200開始在先前數(shù)據(jù)集405以及新數(shù)據(jù)集410中的 錨A2前面和后面的區(qū)域的逐個比特的數(shù)據(jù)比較。假定各數(shù)據(jù)集上在 前向點420之前以及到后向點415的數(shù)據(jù)匹配。在這種情況下,在新 數(shù)據(jù)集410中用存儲指示符取代點415、 420之間的區(qū)域。
圖5是環(huán)境500的示意圖,示出根據(jù)本發(fā)明的實施例、用存儲指 示符取代數(shù)據(jù)。先前數(shù)據(jù)集405和新數(shù)據(jù)集410均集中于錨A2周圍。 在先前數(shù)據(jù)集405中,錨周圍的區(qū)域包含具有值N、 C、 D、 E(錨點)、 F、 G、 H、 O等的數(shù)據(jù)。類似地,在新數(shù)據(jù)集410中的錨周圍的數(shù)據(jù) 是A、 B、 C、 D、 E(錨點)、F、 G、 H、 I等。根據(jù)說明性實施例, 一旦 識別了錨點,從錨點開始向前和向后進(jìn)行逐個比特比較。確定只有各 數(shù)據(jù)集的錨點前面的數(shù)據(jù)F、 G和H是相同的,即下一個數(shù)據(jù)在先前 數(shù)據(jù)集405中具有值0以及在新數(shù)據(jù)集410中具有值I。類似地,確 定只有各數(shù)據(jù)集的錨點后面的數(shù)據(jù)C和D是相同的。然后,用存儲指 示符505取代新數(shù)據(jù)集410中的數(shù)據(jù)(包括錨E)的這六個區(qū)域(即C 與H之間的區(qū)域)。因此,新數(shù)據(jù)集410修改為由數(shù)據(jù)A、 B、存儲指 示符505、 I、 J、 K、 L、 M等組成的新數(shù)據(jù)集410'。
存儲指示符505說明性地包括錨識別符(ID)字段510、前向增量 字段515和后向增量字段520。錨ID字段510識別與這個存儲指示 符505關(guān)聯(lián)的錨。前向和后向增量字段515、 520識別已被取代的錨 的每側(cè)上的連續(xù)比特的數(shù)量。因此,在這個示例中,前向增量值將識 別數(shù)據(jù)F、 G和H中包含的比特的數(shù)量,而后向增量識別數(shù)據(jù)C和D 中包含的比特的數(shù)量。當(dāng)重構(gòu)原始數(shù)據(jù)(重復(fù)數(shù)據(jù)刪除)時,系統(tǒng)檢索模式數(shù)據(jù)庫中存儲的由存儲指示符所識別的數(shù)據(jù),并將它插入重構(gòu)數(shù) 據(jù)。例如,在識別存在存儲指示符時,系統(tǒng)定位已識別錨,并檢索增 量值所識別的錨點開始向后/向前的數(shù)據(jù)。然后,將那個區(qū)域重新替 代入數(shù)據(jù)集,代替存儲指示符。
在步驟320中,錨數(shù)據(jù)庫270用來識別先前數(shù)據(jù)集405與新數(shù)據(jù) 集410之間的重復(fù)數(shù)據(jù)。對于寫入VTL系統(tǒng)200的新數(shù)據(jù)集410, VTL 能知道新數(shù)據(jù)集410中的重復(fù)凄t據(jù)可能所處的位置。例如,當(dāng)前完全 備份的新數(shù)據(jù)將具有與上一次完全備份的數(shù)據(jù)的大部分重復(fù)的數(shù)據(jù)。 重復(fù)數(shù)據(jù)的區(qū)域還將以相同順序出現(xiàn)在兩個完全備份中。因此,為了 識別重復(fù)數(shù)據(jù),與前一個完全備份對應(yīng)的錨點能順序地加載到存儲器 中,以便與新數(shù)據(jù)集410中的錨進(jìn)行比較。這允許以極小的存儲器需 求極有效地識別重復(fù)數(shù)據(jù)區(qū)域。
在備選實施例中,錨分級結(jié)構(gòu)可由計算機(jī)超錨(super anchor) 生成。超錨說明性地通過根據(jù)多個相鄰錨計算哈希生成。超錨的數(shù)量 將小于錨的數(shù)量,由此提高可識別超錨的速度。如果在超錨上識別到 匹配,則系統(tǒng)識別了跨越多個相鄰錨的重復(fù)數(shù)據(jù)的區(qū)域。
此外,雖然本描述按照存儲重復(fù)數(shù)據(jù)刪除來撰寫,但是,本發(fā)明 的原理可用于提供通信鏈路上的重復(fù)數(shù)據(jù)刪除。在這種備選實施例 中,發(fā)送系統(tǒng)可執(zhí)行上述重復(fù)數(shù)據(jù)刪除技術(shù),以使用于傳送數(shù)據(jù)的帶 寬量為最小。源和目標(biāo)系統(tǒng)將需要進(jìn)行工作,以確保它們共享同步模 式和錨數(shù)據(jù)庫。
以上描述針對本發(fā)明的具體實施例。但是,顯而易見,可對所述 實施例進(jìn)行其它變更和修改,達(dá)到其部分或全部優(yōu)點。例如,明確地 考慮,本發(fā)明的教導(dǎo)能實現(xiàn)為其中包括具有在計算機(jī)中運行的程序指 令的計算機(jī)可讀介質(zhì)的軟件、硬件、固件或者它們的組合。此外,應(yīng) 當(dāng)注意,雖然本描述按照VTL系統(tǒng)撰寫,但是本發(fā)明的教導(dǎo)并不局限 于此。本發(fā)明可用于使用任何數(shù)據(jù)倉庫、包括例如文件系統(tǒng)的任何計 算機(jī)環(huán)境。因此,本描述僅作為示例而不是限制本發(fā)明的范圍。因此,
16所附權(quán)利要求的目的是涵蓋在本發(fā)明實質(zhì)和范圍內(nèi)的所有這類變更 和修改。
權(quán)利要求
1. 一種用于從數(shù)據(jù)集中刪除重復(fù)數(shù)據(jù)的方法,所述方法包括以下步驟識別所述數(shù)據(jù)集中的錨;確定所述已識別的錨是否存在于錨數(shù)據(jù)庫中;響應(yīng)確定所述錨存在于所述錨數(shù)據(jù)庫中,執(zhí)行所述數(shù)據(jù)集與已存儲數(shù)據(jù)集之間的數(shù)據(jù)比較,以識別相對于所述已識別的錨的前向增量值和后向增量值;以及用存儲指示符取代由所述錨、所述前向增量值和所述后向增量值所識別的所述數(shù)據(jù)集的區(qū)域,以形成修改的數(shù)據(jù)集。
2. 如權(quán)利要求1所述的方法,其中,識別所述錨的步驟包括對 所述數(shù)據(jù)集執(zhí)行滾動哈希的步驟。
3. 如權(quán)利要求1所述的方法,其中,識別所述錨的步驟包括在 所述數(shù)據(jù)集中的預(yù)定位置放置所述錨。
4. 如權(quán)利要求1所述的方法,其中,所述已存儲數(shù)據(jù)集存儲在 模式數(shù)據(jù)庫中。
5. 如權(quán)利要求1所述的方法,其中,所述存儲指示符包括錨識 別符、所述前向增量值和所述后向增量值。
6. 如權(quán)利要求1所述的方法,還包括將所述修改的數(shù)據(jù)集存儲 在數(shù)據(jù)對象倉庫中的步驟。
7. 如權(quán)利要求6所述的方法,其中,所述數(shù)據(jù)對象倉庫包括文 件系統(tǒng)。
8. 如權(quán)利要求1所述的方法,還包括查找兩個相似數(shù)據(jù)集之間 的重復(fù)數(shù)據(jù)的步驟。
9. 如權(quán)利要求8所述的方法,其中,所述相似數(shù)據(jù)集包括具有 混合的共同數(shù)據(jù)和唯一數(shù)據(jù)的數(shù)據(jù)集。
10. 如權(quán)利要求8所述的方法,其中,通過將所述新數(shù)據(jù)集的錨點與相似數(shù)據(jù)的錨點進(jìn)行比較,來找到重復(fù)數(shù)據(jù)。
11. 如權(quán)利要求10所述的方法,其中,根據(jù)所述新數(shù)據(jù)集中的錨點的模式來識別相似數(shù)據(jù)的錨點。
12. 如權(quán)利要求l所述的方法,還包括通過對所述數(shù)據(jù)集中的多 個相鄰錨計算哈希來形成錨分級結(jié)構(gòu)的步驟。
13. —種配置成從數(shù)據(jù)集中刪除重復(fù)數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括用于識別所述數(shù)據(jù)集中的錨的部件;用于確定已識別的錨是否存在于錨數(shù)據(jù)庫中的部件;用于響應(yīng)確定所述錨存在于所述錨數(shù)據(jù)庫中,執(zhí)行所述數(shù)據(jù)集與已存儲數(shù)據(jù)集之間的數(shù)據(jù)比較,以識別相對于所述已識別錨的前向增量值和后向增量值的部件;以及用于用存儲指示符取代由所述錨、所述前向增量值和所述后向增量值所識別的所述數(shù)據(jù)集的區(qū)域的部件。
14. 如權(quán)利要求13所述的系統(tǒng),其中,用于識別錨的所述部件 包括用于對所述數(shù)據(jù)集執(zhí)行滾動哈希的部件。
15. 如權(quán)利要求13所述的系統(tǒng),其中,用于識別錨的所述部件 包括用于在所述數(shù)據(jù)集中的預(yù)定位置放置所述錨的部件。
16. 如權(quán)利要求13所述的系統(tǒng),其中,所述已存儲數(shù)據(jù)集存儲 在模式數(shù)據(jù)庫中。
17. 如權(quán)利要求13所述的系統(tǒng),其中,所述存儲指示符包括錨 識別符、所述前向增量值和所述后向增量值。
18. 如權(quán)利要求13所述的系統(tǒng),還包括用于通過對所述數(shù)據(jù)集 中的多個相鄰錨計算哈希來形成錨分級結(jié)構(gòu)的部件。
19. 一種配置成從數(shù)據(jù)集中刪除重復(fù)數(shù)據(jù)的系統(tǒng),所述系統(tǒng)包括存儲系統(tǒng),配置成服務(wù)于所述數(shù)據(jù)集;以及虛擬磁帶庫系統(tǒng),適合于從所述存儲系統(tǒng)接收所述數(shù)據(jù)集,所述虛擬磁帶庫系統(tǒng)適合于識別所述數(shù)據(jù)集中的錨,并且還適合于確定已識別的錨是否存在于錨數(shù)據(jù)庫中。
20. 如權(quán)利要求19所述的系統(tǒng),其中,所述虛擬磁帶庫系統(tǒng)還適合于響應(yīng)確定所述錨存在于所述錨數(shù)據(jù)庫中而執(zhí)行所述數(shù)據(jù)集與已存儲數(shù)據(jù)集之間的數(shù)據(jù)比較,以識別前向增量值和后向增量值。
21. 如權(quán)利要求20所述的系統(tǒng),還包括適合于存儲所述已存儲數(shù)據(jù)集的模式數(shù)據(jù)庫。
22. 如權(quán)利要求20所述的系統(tǒng),其中,所述虛擬磁帶庫系統(tǒng)還適合于用存儲指示符取代由所述錨、所述前向增量值和所述后向增量值所識別的所述數(shù)據(jù)集的區(qū)域,以形成修改的數(shù)據(jù)集。
23. 如權(quán)利要求22所述的系統(tǒng),其中,所述存儲指示符包括錨識別符、所述前向增量值和所述后向增量值。
24. 如權(quán)利要求19所述的系統(tǒng),其中,所述錨通過對所述數(shù)據(jù)集執(zhí)行滾動哈希來識別。
25. 如權(quán)利要求19所述的系統(tǒng),其中,通過在所述數(shù)據(jù)集中的預(yù)定位置放置所述錨來識別所述錨。
26. 如權(quán)利要求19所述的系統(tǒng),其中,所述數(shù)據(jù)集包括備份數(shù)據(jù)流。
27. 如權(quán)利要求19所述的系統(tǒng),其中,所述虛擬磁帶庫系統(tǒng)還適合于通過對所述數(shù)據(jù)集中的多個相鄰錨計算哈希,來形成錨分級結(jié)構(gòu)。
28. —種用于從數(shù)據(jù)集中刪除重復(fù)數(shù)據(jù)的計算機(jī)可讀介質(zhì),所述計算機(jī)可讀介質(zhì)包括用于執(zhí)行以下步驟的程序指令識別所述數(shù)據(jù)集中的錨;確定已識別的錨是否存在于錨數(shù)據(jù)庫中;響應(yīng)確定所述錨存在于所述錨數(shù)據(jù)庫中,執(zhí)行所述數(shù)據(jù)集與已存儲數(shù)據(jù)集之間的數(shù)據(jù)比較,以識別相對于所述已識別的錨的前向增量值和后向增量值;以及用存儲指示符取代由所述錨、所述前向增量值和所述后向增量值 所識別的所述數(shù)據(jù)集的區(qū)域,以形成修改的數(shù)據(jù)集。
全文摘要
提供一種用于消除重復(fù)數(shù)據(jù)的技術(shù)。在接收到新數(shù)據(jù)集時,在所述數(shù)據(jù)集中識別一個或多個錨點。然后,對于所接收數(shù)據(jù)集中的錨點周圍的區(qū)域與模式數(shù)據(jù)庫中存儲的錨點周圍的區(qū)域執(zhí)行逐個比特的數(shù)據(jù)比較,以識別前向/后向增量值。然后用存儲指示符取代所接收數(shù)據(jù)集中由錨點、前向和后向增量值所識別的重復(fù)數(shù)據(jù)。
文檔編號H03M7/00GK101479944SQ200780023662
公開日2009年7月8日 申請日期2007年4月26日 優(yōu)先權(quán)日2006年4月28日
發(fā)明者C·約翰斯頓, D·特林默, L·鄭, R·斯塔格爾, Y·弗蘭策爾 申請人:網(wǎng)絡(luò)裝置公司