亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

使用索引劃分和協(xié)調(diào)來進(jìn)行數(shù)據(jù)去重復(fù)的制作方法

文檔序號(hào):6443571閱讀:149來源:國(guó)知局
專利名稱:使用索引劃分和協(xié)調(diào)來進(jìn)行數(shù)據(jù)去重復(fù)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及使用索引劃分和協(xié)調(diào)進(jìn)行數(shù)據(jù)去重復(fù)。
背景技術(shù)
數(shù)據(jù)去重復(fù)(有時(shí)也稱為數(shù)據(jù)優(yōu)化)指的是減少需要被存儲(chǔ)在磁盤上或通過網(wǎng)絡(luò)進(jìn)行傳送的數(shù)據(jù)的物理字節(jié)量,而不會(huì)損害原始數(shù)據(jù)的保真性和完整性,即字節(jié)上的減少是無損的并且原始數(shù)據(jù)可被完全恢復(fù)。通過減少存儲(chǔ)和/或傳送數(shù)據(jù)所需的資源,數(shù)據(jù)去重復(fù)因此導(dǎo)致(用于存儲(chǔ)和網(wǎng)絡(luò)傳輸?shù)?硬件成本以及數(shù)據(jù)管理成本(例如,備份)的節(jié)約。隨著數(shù)字存儲(chǔ)的數(shù)據(jù)的數(shù)量增長(zhǎng),這些成本節(jié)約變得重要。數(shù)據(jù)去重復(fù)通常使用用于消除持久存儲(chǔ)的文件內(nèi)部及其之間的冗余性的技術(shù)的組合。一種技術(shù)用于標(biāo)識(shí)一個(gè)或多個(gè)文件中的數(shù)據(jù)的相同區(qū)域,并在物理上只存儲(chǔ)一個(gè)唯一區(qū)域(塊),而與文件相關(guān)聯(lián)地維持對(duì)該塊的指針。另一技術(shù)是例如通過存儲(chǔ)經(jīng)壓縮的塊來將數(shù)據(jù)去重復(fù)與壓縮混合。為了標(biāo)識(shí)這些塊,存儲(chǔ)這些塊的服務(wù)器維持在該系統(tǒng)中這些塊的散列的散列索引服務(wù)。散列不具有位置性(locality),S卩,同一個(gè)文件中的各塊的塊散列是不相關(guān)的,對(duì)于給定塊的內(nèi)容的任何編輯創(chuàng)建非常不同的(不相關(guān)的)散列值。因此,傳統(tǒng)的數(shù)據(jù)庫(kù)技術(shù), 諸如B樹索引,導(dǎo)致索引服務(wù)較差的性能。在存儲(chǔ)器中維持整個(gè)索引提供較好的性能,但是耗費(fèi)太多資源。服務(wù)器存儲(chǔ)器資源為其他服務(wù)器應(yīng)用(如,在主數(shù)據(jù)去重復(fù)情形中)所需要,且用于高速緩存。之前的面向備份的數(shù)據(jù)去重復(fù)優(yōu)化依靠前瞻高速緩存(look-ahead cache)來減少在服務(wù)器上訪問該索引所使用的資源量。然而,數(shù)據(jù)去重復(fù)不再受限于數(shù)據(jù)備份的情形, 且發(fā)展為像其他存儲(chǔ)器設(shè)備那樣被用作被訪問的主數(shù)據(jù)存儲(chǔ)器群集。僅使用前瞻高速緩存來減少資源使用并不是適當(dāng)?shù)慕鉀Q方案。

發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡(jiǎn)化形式介紹將在以下的具體實(shí)施方式
中進(jìn)一步描述的一些代表性概念。本發(fā)明內(nèi)容不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在以限制所要求保護(hù)的主題的范圍的任何方式來使用。簡(jiǎn)言之,此處所描述的主題的各方面涉及去重復(fù)技術(shù),通過該去重復(fù)技術(shù)將散列索引服務(wù)的索引劃分為各個(gè)子空間索引,以使得一次將少于散列索引服務(wù)的所索引的數(shù)據(jù)集的整個(gè)范圍加載到存儲(chǔ)器中,從而節(jié)省可用存儲(chǔ)器。當(dāng)要被去重復(fù)的數(shù)據(jù)被接收并分塊(chunk),并且有可能還被壓縮時(shí),子空間索引確定對(duì)該塊計(jì)算的散列值是否與主存儲(chǔ)器(例如,RAM)高速緩存中的條目的散列值相匹配。如果是,則返回可用于定位現(xiàn)有塊的信息,否則該塊作為新塊存儲(chǔ)在塊存儲(chǔ)中,并且對(duì)應(yīng)于該散列值的條目與對(duì)該塊的引用相關(guān)聯(lián)地被添加到該子空間索引。在一方面,可基于一個(gè)或多個(gè)準(zhǔn)則來將散列索引服務(wù)劃分成多個(gè)子空間索引,該準(zhǔn)則可與要被去重復(fù)的數(shù)據(jù)如何劃分相對(duì)應(yīng)。示例分割/劃分準(zhǔn)則包括數(shù)據(jù)的文件類型、 數(shù)據(jù)類型、位置、創(chuàng)建該數(shù)據(jù)的應(yīng)用、文件使用模式數(shù)據(jù)、文件訪問模式數(shù)據(jù)、文件所有者、 文件用戶類型、名字空間、文件內(nèi)容、文件元數(shù)據(jù)、學(xué)習(xí)到的準(zhǔn)則或自適應(yīng)準(zhǔn)則、或可被推斷為該文件的特征的任何其他類型的信息、以及這些的任何組合。在另一方面,可將一個(gè)子空間周期性地(或偶爾地)與一個(gè)或多個(gè)其他子空間進(jìn)行協(xié)調(diào)以從是經(jīng)協(xié)調(diào)的子空間的子空間中消除任何重復(fù)條目,并相應(yīng)地刪除其相關(guān)聯(lián)的 (重復(fù)的)塊。這種重復(fù)的數(shù)據(jù)塊可能跨越子空間出現(xiàn),因?yàn)楦髯涌臻g可能是被分開地去重復(fù)的,直到并且及至協(xié)調(diào)點(diǎn)。作為協(xié)調(diào)的一部分,對(duì)與重復(fù)條目相關(guān)聯(lián)的塊的每個(gè)引用被更新以引用剩余的塊??梢杂酶鞣N方式來緊湊化(compacted)和/或用新的數(shù)據(jù)蓋寫經(jīng)協(xié)調(diào)的子空間和從中刪除過塊的塊存儲(chǔ)。該子空間和要協(xié)調(diào)的一個(gè)或多個(gè)其他子空間可基于類似子空間類型、類似子空間簽名、和/或基于該子空間是未經(jīng)協(xié)調(diào)的子空間以及其他子空間已在之前與彼此協(xié)調(diào)過來選擇。簽名包括子空間散列的緊湊表示,并且可以用多種方式來計(jì)算/確定,例如,基于最小散列計(jì)算、布隆過濾器(bloom filter)、最小散列和布隆過濾器組合等等。結(jié)合附圖閱讀以下具體實(shí)施方式
,本發(fā)明的其他優(yōu)點(diǎn)會(huì)變得顯而易見。


作為示例而非限制,在附圖中示出了本發(fā)明,附圖中相同的附圖標(biāo)記指示相同或相似的元素,附圖中圖I是表示被配置為用于使用基于子空間的散列索引服務(wù)進(jìn)行去重復(fù)的數(shù)據(jù)存儲(chǔ)服務(wù)的示例組件的框圖。圖2-4是示出在數(shù)據(jù)去重復(fù)中使用的子空間和塊存儲(chǔ)之間的關(guān)系的表示。圖5是表示用于數(shù)據(jù)去重復(fù)的示例步驟的流程圖,其中少于整個(gè)索引的被高速緩存,從而便于基于子空間的去重復(fù)。圖6是表示用于協(xié)調(diào)兩個(gè)子空間以定位與塊存儲(chǔ)中的等同塊相對(duì)應(yīng)的等同條目的示例步驟的流程圖。圖7是表示其中可實(shí)現(xiàn)此處描述的各種實(shí)施例的示例性非限制聯(lián)網(wǎng)環(huán)境的框圖。圖8是表示其中可實(shí)現(xiàn)此處所描述各種實(shí)施例的一個(gè)或多個(gè)方面的示例性非限制計(jì)算系統(tǒng)或操作環(huán)境的框圖。
具體實(shí)施例方式此處描述的技術(shù)的各方面一般涉及一種通過將全局散列索引劃分為多個(gè)子空間而操作的去重復(fù)系統(tǒng)。所述子空間中的每一個(gè)可被存儲(chǔ)在輔助存儲(chǔ)設(shè)備中,例如,在硬盤上。取決于當(dāng)前正在使用的數(shù)據(jù)集,子空間或子空間的一部分可被活動(dòng)地加載到存儲(chǔ)器中, 例如,基于當(dāng)前系統(tǒng)工作負(fù)載、資源可用性、以及哪個(gè)子空間是索引數(shù)據(jù)塊所需要的。當(dāng)一子空間填滿時(shí),該子空間可以變?yōu)榭梢杂糜诙ㄎ粔K(例如,作為高速緩存)的只讀子空間, 而新的活動(dòng)子空間被創(chuàng)建以處理新的塊。注意,所密封的子空間經(jīng)常是相同大小的,但不必然如此。此外,不同子空間可被協(xié)調(diào)以增加去重復(fù)的質(zhì)量(例如,其相應(yīng)數(shù)據(jù)塊的更高去重復(fù)率),并由此增加數(shù)據(jù)存儲(chǔ)服務(wù)器的可縮放性。為此目的,考慮被選擇來進(jìn)行協(xié)調(diào)的兩個(gè)子空間,其中一個(gè)子空間作為源,一個(gè)子空間作為目的地。將一個(gè)子空間的散列與另一子空間的散列進(jìn)行對(duì)比以尋找等同的塊,其中從一個(gè)塊存儲(chǔ)移除任何等同的塊、從相應(yīng)的子空間之一中可能地移除條目、并將對(duì)已移除的塊的引用更新為指向剩余的塊。注意,重復(fù)該系統(tǒng)中所有子空間之間的協(xié)調(diào)操作將最終檢測(cè)到該系統(tǒng)中的所有的重復(fù),因此最大化從數(shù)據(jù)去重復(fù)獲得的節(jié)省。在一個(gè)方面中,為了預(yù)測(cè)哪些子空間可彼此良好地協(xié)調(diào),協(xié)調(diào)過程計(jì)算每個(gè)子空間中的索引的簽名。該簽名可被數(shù)據(jù)存儲(chǔ)服務(wù)器用來標(biāo)識(shí)哪些子空間被選擇以進(jìn)行協(xié)調(diào)。 例如,此子空間選擇過程可首先處理在協(xié)調(diào)時(shí)最可能給出最多空間節(jié)省的子空間。因?yàn)樽涌臻g簽名可能非常緊湊,所以在非高峰時(shí)間,該數(shù)據(jù)存儲(chǔ)服務(wù)器可以能夠承受加載所有子空間的簽名,以使得它能夠最優(yōu)地標(biāo)識(shí)哪些子空間是好的去重復(fù)候選。每個(gè)子空間可被分開優(yōu)化,其中“熱”的子空間(其中內(nèi)容被修改或規(guī)則讀取)針對(duì)性能進(jìn)行優(yōu)化,而“冷”的子空間(其中內(nèi)容包括較舊的快照或不頻繁訪問的內(nèi)容)針對(duì)數(shù)據(jù)去重復(fù)質(zhì)量進(jìn)行優(yōu)化。 子空間可以在非高峰時(shí)間被協(xié)調(diào)以改善數(shù)據(jù)去重復(fù)性能和/或質(zhì)量。應(yīng)當(dāng)理解的是,此處的任何示例均是非限制的。因此,本發(fā)明不限制于在此描述的任何具體的實(shí)施例、方面、概念、結(jié)構(gòu)、功能或示例。相反,此處所描述的實(shí)施例、方面、概念、 結(jié)構(gòu)、功能或示例中的任一個(gè)都是非限制性的,并且本發(fā)明一般能夠以在數(shù)據(jù)處理、數(shù)據(jù)索引和數(shù)據(jù)去重復(fù)方面提供好處和優(yōu)點(diǎn)的各種方式來使用。圖I示出知曉內(nèi)容(content-aware)的數(shù)據(jù)去重復(fù)數(shù)據(jù)存儲(chǔ)系統(tǒng)的示例組件,諸如在數(shù)據(jù)/文件存儲(chǔ)服務(wù)102中實(shí)現(xiàn)。服務(wù)102接收數(shù)據(jù)104 (文件、團(tuán)塊等),且去重復(fù)邏輯106處理數(shù)據(jù)以進(jìn)行去重復(fù)。為此目的,去重復(fù)邏輯106向分塊模塊108提供數(shù)據(jù)104, 分塊模塊108將該內(nèi)容處理為塊,諸如根據(jù)文件的結(jié)構(gòu)(例如,將媒體文件劃分為媒體首部和媒體主體)、或通過使用基于在滑動(dòng)窗上重復(fù)計(jì)算的快速散列技術(shù)(這樣的快速散列函數(shù)包括CRC和Rabin函數(shù)族)來對(duì)文件內(nèi)容分塊的算法,其中塊是在散列函數(shù)和當(dāng)前塊的大小/內(nèi)容滿足某些試探法(heuristic)時(shí)選擇的。在散列函數(shù)滿足某一條件的位置處以取決于數(shù)據(jù)的方式來一般地確定塊邊界。接下來的描述是關(guān)于一個(gè)塊110的,但是可以理解的是數(shù)據(jù)一般被劃分為多個(gè)塊。去重復(fù)邏輯106將塊110傳給求散列機(jī)制112,求散列機(jī)制112計(jì)算塊的散列(被稱為塊散列114)。強(qiáng)散列函數(shù),如密碼安全的SHA-256或SHA-512散列函數(shù)等(其確保了極低的散列間沖突的可能性)可被用作唯一地標(biāo)識(shí)塊110的塊散列114。注意,使用這樣的安全散列,消除了散列沖突的可能性,例如,散列沖突可能比在當(dāng)前可用的最可靠的硬件的情況下的硬件誤差可能小約30個(gè)數(shù)量級(jí)。將塊散列114提供給散列索引服務(wù)116 (其包括或耦合至協(xié)調(diào)機(jī)制117)。如果在散列索引服務(wù)116中找到了塊散列114( S卩,已經(jīng)存在),塊110的復(fù)制副本被認(rèn)為已經(jīng)被存在塊存儲(chǔ)118中,而無需再存儲(chǔ)當(dāng)前的塊。相反,對(duì)這個(gè)塊的任何引用可僅引用之前的、現(xiàn)有的塊。如果在散列索引服務(wù)116中沒有找到塊散列114,塊110被存入塊存儲(chǔ)118中,且塊散列114被存入散列索引服務(wù)116。可以容易地理解,給定隨著時(shí)間的充足的數(shù)據(jù),通過引用塊而不是維持同一數(shù)據(jù)塊的很多分開的實(shí)例可節(jié)省大量存儲(chǔ)。塊還經(jīng)常被壓縮,從而保存甚至更多存儲(chǔ);注意,可在壓縮之前對(duì)未經(jīng)壓縮的塊計(jì)算散列,和/或可在壓縮之后計(jì)算散列。此處描述的技術(shù)涉及散列索引服務(wù)116的架構(gòu)和算法,尤其涉及基于子空間的散列索引服務(wù),以及子空間協(xié)調(diào)的概念。一般而言,子空間是整個(gè)系統(tǒng)的全局索引的較小的一部分,并大體與要被去重復(fù)為多個(gè)數(shù)據(jù)集的可用數(shù)據(jù)的初始劃分(分割)相對(duì)應(yīng)。該劃分是被普通計(jì)劃的以使得與任何子空間相對(duì)應(yīng)的數(shù)據(jù)可能良好地與該子空間的其他數(shù)據(jù)去重復(fù)(許多塊將匹配)。因此該全局?jǐn)?shù)據(jù)塊的散列分為子空間索引,例如,每個(gè)相應(yīng)的數(shù)據(jù)劃分一個(gè)子空間索引。可基于實(shí)際上任何的準(zhǔn)則將該數(shù)據(jù)/散列劃分為子空間,諸如文件類型(例如,通過擴(kuò)展名)、數(shù)據(jù)類型(例如,圖像、文本文檔等)、位置(例如,機(jī)器、卷)、創(chuàng)建該文件的應(yīng)用、文件使用/ 訪問模式(如最后修改時(shí)間等)、用戶ID(文件所有者)、用戶類型、名字空間(例如,磁盤卷)、內(nèi)容和/或元數(shù)據(jù)(例如,以群集類似文件)、文件分類信息(通過人工或自動(dòng)方法提供的)、學(xué)習(xí)到的/自適應(yīng)的準(zhǔn)則(例如,從對(duì)此系統(tǒng)或另一系統(tǒng)上先前去重復(fù)的數(shù)據(jù)的分析的外部反饋)、或可被推斷或確定為對(duì)該文件的特征的任何其他信息類型。注意,上述劃分的一些或全部的任何組合可被使用,例如,在上一個(gè)月修改的具有相同文件類型的數(shù)據(jù)。通過示例,若假定相關(guān)數(shù)據(jù)經(jīng)常在同一時(shí)間幀附近出現(xiàn)在該存儲(chǔ)系統(tǒng)中,則使用文件的最后修改或最后訪問時(shí)間作為準(zhǔn)則來將文件名字空間劃分為索引子空間可能是有用的劃分方案。例如,考慮作為附件發(fā)送到一百個(gè)用戶的文件,這些文件中的八十個(gè)文件將該文件保存到它們自己的相應(yīng)的文檔儲(chǔ)存庫(kù)。該系統(tǒng)可將該名字空間劃分成時(shí)間范圍并將每個(gè)時(shí)間范圍作為子空間來對(duì)待。作為另一示例,通過文件類型來劃分基于如下假設(shè)不同的類型或類型組有更大的幾率在其自身間具有重復(fù)的塊。例如,基于文本的格式(例如,.〖1〖、.11111、.1^1111等)可與彼此良好地去重復(fù),但是不能與用zip格式維持的文件良好地去重復(fù)。因此,系統(tǒng)(例如,管理員)可以定義有關(guān)的文件組,諸如{all text formats}、{0ffice2007, zip}等等, 并將屬于一組的文件作為一子空間來對(duì)待。通過將數(shù)據(jù)劃分以使得相應(yīng)的散列索引是子空間,子空間索引能夠被存儲(chǔ)在輔助設(shè)備(如硬盤)中,而某種形式的活動(dòng)子空間索引被加載到快速存儲(chǔ)器(例如,RAM)中以作為高效(在線)散列索引服務(wù)來執(zhí)行。例如,可在將一組數(shù)據(jù)的文件/團(tuán)塊(blob)發(fā)送到服務(wù)102之前,可以通過其劃分(及相應(yīng)的子空間)對(duì)數(shù)據(jù)進(jìn)行分組,以使得只在組改變時(shí)活動(dòng)索引才改變。此外,在開始優(yōu)化會(huì)話之前,可使用各種方法來選擇要加載哪些子空間 (將該子空間與將要被去重復(fù)的文件相關(guān),例如,基于插入時(shí)間),以在后續(xù)去重復(fù)過程期間最大化節(jié)省。數(shù)據(jù)的劃分和子空間索引降低了去重復(fù)比率(即,減少了去重復(fù)空間節(jié)省),因?yàn)榈韧膲K可被不同索引子空間索引并因此存儲(chǔ)在多個(gè)位置。此外,因?yàn)樽涌臻g很小(因?yàn)槟軌蛲ㄟ^可配置參數(shù)來控制其大小),所以系統(tǒng)能夠確保對(duì)于去重復(fù)過程的整個(gè)持續(xù)時(shí)間所加載的子空間將適合于主存儲(chǔ)(RAM)。如同下面描述的,不同子空間可被協(xié)調(diào)(例如, 當(dāng)在CPU、存儲(chǔ)器和I/O負(fù)載方面服務(wù)器的負(fù)載很低時(shí)在離線操作中),以使得存在于兩個(gè) (或更多)子空間中的任何等同塊的僅一個(gè)副本需要被維持,而其他副本被丟棄。盡管在一些環(huán)境中每個(gè)子空間可以能夠與每個(gè)其他子空間相協(xié)調(diào),然而在其他環(huán)境中存在太多子空間而不能用這種方式來協(xié)調(diào)所有子空間。如同下面描述的,每個(gè)索引子空間可由簽名標(biāo)識(shí), 其中使用簽名相似度(例如,矢量距離)/匹配來選擇那些簽名看上去具有重大去重復(fù)幾率并因此將很可能與彼此良好協(xié)調(diào)的子空間來進(jìn)行協(xié)調(diào)。圖2示出了被配置成用于子空間劃分的散列索引服務(wù)116的示例架構(gòu)設(shè)計(jì)。如同上面描述的,數(shù)據(jù)/文件存儲(chǔ)服務(wù)102包括塊存儲(chǔ)118和散列索引服務(wù)116,其中塊存儲(chǔ)118 維持塊數(shù)據(jù),該塊數(shù)據(jù)是一個(gè)或多個(gè)文件中的數(shù)據(jù)的區(qū)域。塊存儲(chǔ)118可包含兩個(gè)或更多個(gè)組件存儲(chǔ),例如S1, S2,……,Sn,其中每個(gè)存儲(chǔ)Si包括由一組塊ID cia, cij2,……,Cijk 標(biāo)識(shí)的一組塊,如圖3中所示。塊ID Cijj標(biāo)識(shí)塊j在存儲(chǔ)Sj中的位置,并且可以與指向它所屬的文件的可任選向后引用鏈接相關(guān)聯(lián)。散列索引服務(wù)116包括子空間索引P1, P2,……,Pm,其中每個(gè)子空間P」包括一組散列hjyhp,……,hw以及相關(guān)聯(lián)的塊ID cja, cJj2,……,Cjil,如在圖2和圖4中大體表示的。注意,每個(gè)塊ID對(duì)應(yīng)于一塊存儲(chǔ)位置,如圖2中的虛線箭頭所表示的(盡管為了簡(jiǎn)明只示出了一個(gè)這樣的箭頭)。如同下面描述的,為了去重復(fù)優(yōu)化的目的,每個(gè)子空間Pj 還可以用簽名Sigj來標(biāo)識(shí)。子空間Pj還可包括多個(gè)其他的經(jīng)二次采樣的(sub-sampled) 表示,如同下面描述的。在系統(tǒng)中有可能在塊存儲(chǔ)和索引子空間之間建立對(duì)應(yīng)關(guān)系,例如,每個(gè)塊存儲(chǔ)Si 對(duì)應(yīng)于一個(gè)且僅一個(gè)索引子空間Pp然而,絕對(duì)的對(duì)應(yīng)關(guān)系不是必須的。還有可能允許索引子空間P」指向多個(gè)塊存儲(chǔ)中的塊(即,使塊ID屬于多個(gè)塊存儲(chǔ))。還有可能塊存儲(chǔ)Sj中的塊被多個(gè)子空間索引。然而,如果塊存儲(chǔ)駐留在具有低隨機(jī)訪問性能(例如,與SSD相比) 的硬盤驅(qū)動(dòng)器或其他設(shè)備上,并且期望良好的讀取性能的話,則可能期望限制索引子空間 Pj所指向的塊存儲(chǔ)的數(shù)量。如果數(shù)據(jù)/文件存儲(chǔ)設(shè)備102包括多個(gè)機(jī)器,則可向每個(gè)機(jī)器分配多個(gè)塊存儲(chǔ)和多個(gè)索引子空間??墒褂盟饕?wù)——如通過具有故障轉(zhuǎn)移支持的集中式索引服務(wù)實(shí)現(xiàn)的 (例如,經(jīng)由Windows Server 2008中的群集服務(wù)),或通過分散式索引服務(wù)實(shí)現(xiàn)的—— 來將特定塊存儲(chǔ)Si或特定索引子空間P」分配給一機(jī)器。通過摘要的方式并且提供一些更多的細(xì)節(jié),圖5是表示當(dāng)新文件被寫入被配置成用于子空間劃分的文件存儲(chǔ)服務(wù)102中時(shí)發(fā)生的步驟的流程圖。在步驟502,向該文件分配塊存儲(chǔ)和索引子空間以使得新塊(如果有任何新塊)及其散列索引可被存放。步驟504表示使用知曉內(nèi)容的分塊模塊來將文件分割為各個(gè)塊(盡快也可能整個(gè)文件是單個(gè)塊)。在步驟506,經(jīng)由安全散列服務(wù)(例如,SHA-256)來計(jì)算塊散列。注意,在計(jì)算塊散列之前,一個(gè)選項(xiàng)是壓縮該塊(如果適當(dāng))。如經(jīng)由步驟508和510所表示的,對(duì)照散列索引服務(wù)的一個(gè)或多個(gè)當(dāng)前高速緩存來檢查該塊散列,該散列索引服務(wù)包括用于添加任何新散列的當(dāng)前子空間,以及當(dāng)存儲(chǔ)器允許時(shí)可能的其他(例如,只讀)子空間。如果在步驟510該塊散列存在于該散列索引服務(wù)的當(dāng)前高速緩存中,在步驟512返回先前塊的相關(guān)聯(lián)塊ID。否則,在步驟514返回空值, 從而指示在該散列索引服務(wù)的當(dāng)前高速緩存中沒有找到該塊散列。注意,經(jīng)由子空間索引(以及如在前面提到的題為“Adaptive Index for Data Deduplication(用于數(shù)據(jù)去重復(fù)的自適應(yīng)索引)”的專利申請(qǐng)中大體描述的可能的其他因素),可以只將整個(gè)散列索引的一部分通過該散列索引服務(wù)保持在存儲(chǔ)器高速緩存中,即,該散列索引服務(wù)可選擇性地高速緩存系統(tǒng)中的子空間的散列的一部分。因此,有可能塊散列的確存在于該散列索引服務(wù)的輔助存儲(chǔ)中,但是通過檢查當(dāng)前高速緩存不會(huì)立即找到。 該散列索引服務(wù)的塊散列訪問(步驟508)觸發(fā)散列索引服務(wù)中的這種前瞻高速緩存的高速緩存管理。取決于散列命中模式,該散列索引服務(wù)取決于可用存儲(chǔ)器資源來智能地管理當(dāng)前高速緩存。最近最少使用的子空間的散列不被高速緩存,從而留下存儲(chǔ)器來高速緩存更活動(dòng)地使用的子空間。此外,較不頻繁使用的子空間中的訪問可被二次采樣(如在前面提到的題為“Adaptive Index for Data Deduplication(用于數(shù)據(jù)去重復(fù)的自適應(yīng)索引)” 的專利申請(qǐng)中大體描述的),以減少存儲(chǔ)器消耗。注意,除了正在其中添加新散列的當(dāng)前子空間之外,該散列索引服務(wù)中的其他子空間可以是只讀的,在該事件中高速緩存替換策略是用于只讀高速緩存的,只讀高速緩存的實(shí)現(xiàn)和管理是相對(duì)直接的。進(jìn)一步注意,高速緩存管理可使用與該子空間相關(guān)聯(lián)的簽名。步驟516表示可任選地壓縮該塊,例如經(jīng)由LZW算法或其變型;(注意,塊壓縮可反而在步驟506之前進(jìn)行)。對(duì)于不同類型的數(shù)據(jù),該壓縮可以不同。進(jìn)一步注意,不是所有數(shù)據(jù)都良好地壓縮,并且因此可以對(duì)某些類型的數(shù)據(jù)不執(zhí)行步驟516,或者可以完全不執(zhí)行步驟516。如步驟518所表示的,當(dāng)散列索引服務(wù)返回空(步驟514)時(shí),該塊被存放到該塊存儲(chǔ),而返回指示該存儲(chǔ)中的塊的位置(偏移量)的塊ID。在步驟520,該塊的散列和塊ID 被存放在該散列索引服務(wù)的當(dāng)前子空間中。注意,在此過程中,在該塊被認(rèn)為已被成功寫入之前,只有在步驟518處的塊存儲(chǔ)寫入操作需要被持久存儲(chǔ)??梢杂脩卸璺绞綄K散列和塊ID對(duì)寫入(步驟520)到該散列索引服務(wù)的當(dāng)前子空間。在該子空間的寫入操作失敗的事件中(例如,由于電源故障等),該散列索引服務(wù)可掃描該塊存儲(chǔ)并重構(gòu)該塊散列和塊ID 對(duì)以重建該散列索引服務(wù)的索引子空間的未寫入部分。步驟522和523返回到步驟506以為任何剩余塊重復(fù)該過程。當(dāng)整個(gè)文件的所有塊已經(jīng)被持久存儲(chǔ)在塊存儲(chǔ)中時(shí),或已被用塊ID發(fā)現(xiàn)是重復(fù)副本時(shí),則在步驟524返回整個(gè)文件的所述組塊ID。這些被用于形成該文件的流映射,以允許經(jīng)由塊ID在需要時(shí)從該塊存儲(chǔ)訪問該文件數(shù)據(jù)。在此階段的一種替代實(shí)現(xiàn)是反而返回整個(gè)文件的各塊的塊散列,以及當(dāng)前子空間。該替代方案使用流映射中的散列來標(biāo)識(shí)這些塊。該替代實(shí)現(xiàn)具有優(yōu)點(diǎn)和缺點(diǎn),如此處所述。更具體而言,存在基于子空間的散列索引服務(wù)的替代實(shí)現(xiàn),其中塊、塊id、散列和引用計(jì)數(shù)有不同的實(shí)現(xiàn)選擇。如此處大體描述的,在數(shù)據(jù)去重復(fù)中,塊是數(shù)據(jù)去重復(fù)的基本單元,而去重復(fù)是通過找到具有相同散列值的塊并且只存儲(chǔ)該塊的一個(gè)副本來實(shí)現(xiàn)的。在一種簡(jiǎn)單實(shí)現(xiàn)中,塊不重疊。也如此處所描述的,每個(gè)塊被用塊ID標(biāo)識(shí),塊ID是文件存儲(chǔ)服務(wù)中用于定位該塊的引用。因?yàn)槊總€(gè)塊被存儲(chǔ)在塊存儲(chǔ)中,該塊ID是數(shù)字對(duì)(k,off),該數(shù)字對(duì)將該塊標(biāo)識(shí)為被存儲(chǔ)在塊存儲(chǔ)Sk中、在偏移量off處。每個(gè)塊被其散列唯一標(biāo)識(shí),該散列一般是通過對(duì)經(jīng)壓縮的塊流應(yīng)用散列函數(shù)來計(jì)算的;(在被稱為分層分塊的概念中, 父塊的散列還可通過對(duì)其子塊的散列值直接應(yīng)用散列來計(jì)算)。文件存儲(chǔ)服務(wù)中的文件由合成它的塊標(biāo)識(shí)。這可以采取塊ID或散列的形式。因此,該文件可被描述為
文件={塊ID1,塊 ID2,......,塊 IDJ或文件={散列i,散列2,......,散列J這兩種方案分別被稱為塊ID描述方案和散列描述方案。上面已經(jīng)大體描述了塊 ID描述方案,因此下面描述散列描述方案。在散列描述方案中,文件描述符包含相對(duì)引用,即該塊的散列。咨詢第二表,在此例中是散列索引服務(wù)中的< hash, chunk_id, ref_count > ( <散列,塊_id,引用_計(jì)數(shù) >)映射表,來獲得該塊的位置。這在文件訪問期間增加了一個(gè)附加的間接層,并可能降低文件訪問期間的讀取訪問性能。然而,優(yōu)點(diǎn)在于可以更快地執(zhí)行去重復(fù)操作(以及垃圾收集操作)。在散列描述方案中,不需要維持另一塊ID表。子空間直接對(duì)應(yīng)于塊存儲(chǔ)。因?yàn)閿?shù)據(jù)/文件存儲(chǔ)服務(wù)中的散列的數(shù)量可能很大,而該方案假定不是所有散列可被加載到主系統(tǒng)存儲(chǔ)器中,該文件描述符可進(jìn)一步記錄存放該散列或稍后去重復(fù)其中的散列的子空間。通過子空間信息,文件存儲(chǔ)服務(wù)被給出它需要咨詢哪個(gè)子空間來取回相關(guān)塊的chunk_ id(塊_id)的提示。因此,一個(gè)文件標(biāo)識(shí)符采用如下形式文件={散列丨,散列2,......,散列m,P1,......,PJ其中P1,......,Pk表示所述子空間的索引。當(dāng)訪問該文件時(shí),執(zhí)行查找操作,例
如,在散列索引服務(wù)中查找散列i,散列2,......,散列m來取回相關(guān)chunk_id (塊_id)信
肩、O注意,因?yàn)槊總€(gè)散列對(duì)應(yīng)于唯一塊,所以當(dāng)查找某個(gè)散列^時(shí),如果找到與散列i相同但是在不同子空間中的散列P則可使用散列^的對(duì)應(yīng)的塊ID來取回散列i。(對(duì)應(yīng)于散列j和散列i的兩個(gè)塊是可去重復(fù)(deduplicable)的,諸如稍后在如下所述的協(xié)調(diào)期間。)。如果在散列索引服務(wù)的當(dāng)前高速緩存中沒有找到對(duì)應(yīng)的散列,則將子空間的散列
P1,......,Pk加載到當(dāng)前高速緩存中。如果存儲(chǔ)器被耗盡,則移除最近最少使用的子空間
的散列以提供更多的存儲(chǔ)器。數(shù)據(jù)去重復(fù)的操作是直接的。當(dāng)對(duì)照源子空間P」將目的地子空間Pi去重復(fù)時(shí),源子空間P」的散列被加載到存儲(chǔ)器中。那么,對(duì)照源子空間P」的散列檢查目的地子空間Pi的每個(gè)散列。只要找到重復(fù)時(shí),就移除它在目的地子空間中的散列。塊存儲(chǔ)S」上的相關(guān)聯(lián)塊存儲(chǔ)垃圾收集操作也能夠以直接的方式執(zhí)行,如下I.加載與塊存儲(chǔ)Sj相關(guān)聯(lián)的子空間P1,……,Pk的散列。將源塊存儲(chǔ)Sj的流復(fù)制到新目的地塊存儲(chǔ)Sk ;在子空間P1,……,Pk中找到其散列的塊被完全復(fù)制。在子空間 P1,……,Pk中沒有找到其散列的任何塊不被復(fù)制。2.在新目的地塊存儲(chǔ)Sk中用塊ID更新子空間P1,……,Pko3.然后可刪除源塊存儲(chǔ)S」。因?yàn)樵谏⒘忻枋龇桨钢袥]有向后引用鏈接,所以去重復(fù)優(yōu)化和垃圾收集操作兩者都是直接的。轉(zhuǎn)到子空間協(xié)調(diào)(其通常在系統(tǒng)具有相對(duì)低的工作負(fù)載以及可用的系統(tǒng)資源時(shí)的非高峰時(shí)間期間進(jìn)行),可執(zhí)行子空間協(xié)調(diào)操作以找到并移除各子空間之間重復(fù)的條目,并因此移除重復(fù)的塊。注意,如果檢測(cè)到顯著的用戶和/或系統(tǒng)活動(dòng),則可中斷協(xié)調(diào)操作。 在中斷的情況下,散列索引服務(wù)將使用所述子空間中的一個(gè),例如,如果子空間A和B在被協(xié)調(diào)時(shí)使用子空間A。存在各種執(zhí)行協(xié)調(diào)的方式,包括將每個(gè)子空間與每個(gè)其他子空間進(jìn)行協(xié)調(diào)。注意, 可在同一時(shí)間將一子空間與多個(gè)子空間進(jìn)行協(xié)調(diào),例如,當(dāng)存儲(chǔ)器空間允許時(shí)。此外,注意不需要在同一時(shí)間,或者甚至在同一會(huì)話中,加載所有子空間,例如,可將子空間X對(duì)照子空間A、B和C進(jìn)行協(xié)調(diào),然后稍后對(duì)照例如子空間D和E進(jìn)行協(xié)調(diào)。協(xié)調(diào)子空間的另一種方式是將新子空間與已經(jīng)彼此進(jìn)行過協(xié)調(diào)的其他子空間進(jìn)行協(xié)調(diào)。例如,如果一次一個(gè)地將子空間添加到去重復(fù)系統(tǒng),則可對(duì)照其他子空間(例如, 它們同樣在每個(gè)被添加時(shí)一次一個(gè)地被協(xié)調(diào)過,并且不需要彼此再次協(xié)調(diào))來協(xié)調(diào)所添加的子空間等等。另一種方式是按照子空間的類型(例如,與該劃分相對(duì)應(yīng)的)。例如,可基于具有相同文件類型或數(shù)據(jù)類型的那些來定義子空間的組。協(xié)調(diào)可限于同一組中的子空間,例如, 因?yàn)橛锌赡苡糜谖谋緮?shù)據(jù)的一組子空間中的各子空間能與彼此良好協(xié)調(diào),但是不太可能這些子空間與用于索引圖像數(shù)據(jù)的子空間良好協(xié)調(diào)。圖6是示出一個(gè)子空間與一個(gè)或多個(gè)其他子空間的協(xié)調(diào)的示例步驟的流程圖。步驟602表示將該一個(gè)或多個(gè)其他子空間加載到存儲(chǔ)器中作為索引;注意,索引在存儲(chǔ)器消耗方面可能是昂貴的,而掃描散列是便宜的因?yàn)樗褂庙樞蜃x取I/O來掃描,并因此索引較小組的子空間并掃描較大的組是有利的。步驟604開始掃描子空間以進(jìn)行協(xié)調(diào),例如,一次一個(gè)地順序選擇散列,并在該索引中查找匹配的散列(步驟606)。如果沒有找到任何匹配散列(步驟609),則選擇下一散列且該過程重復(fù)(步驟614)指導(dǎo)此子空間已被協(xié)調(diào)。如果在步驟608找到了匹配的散列,則步驟610將該子空間散列條目以及該塊標(biāo)記為刪除。步驟612更新引用要被更新到新去重復(fù)的塊的塊的任何文件或其他實(shí)體的指針;注意,維持塊和引用該塊的文件的數(shù)據(jù)庫(kù),從而可以找到并更新這些文件。當(dāng)沒有文件或其他實(shí)體引用該塊時(shí),可以安全地刪除該子空間散列條目和塊,例如,如下面關(guān)于步驟 616處的緊湊化所描述的。如同上面描述的,該過程經(jīng)由步驟614重復(fù),直到已對(duì)照所加載的索引(一個(gè)或多個(gè)子空間的條目)協(xié)調(diào)了該子空間。此時(shí),可執(zhí)行如步驟616所表示的緊湊化,盡管緊湊化可在稍后的時(shí)間進(jìn)行,例如,在垃圾收集類型的操作中。緊湊化可通過將經(jīng)協(xié)調(diào)的子空間的剩余索引條目(即,沒有被標(biāo)記為刪除/消除的那些)復(fù)制到新子空間來進(jìn)行。一種替代方案是將這些索引條目從該子空間的末尾移動(dòng)到該子空間中存在的“洞”中,即,蓋寫被標(biāo)記為刪除的那些條目??梢灶愃频厥箟K存儲(chǔ)緊湊化。緊湊化帶來更小的子空間(以及一個(gè)或多個(gè)更小的塊存儲(chǔ)),這是被允許的。可以重新打開該子空間以添加新的條目,而不是使用較小的子空間(或塊存儲(chǔ));為了效率,可以跟蹤新條目開始處的點(diǎn),以便協(xié)調(diào)可從該點(diǎn)開始,因?yàn)樵趨f(xié)調(diào)期間已經(jīng)發(fā)現(xiàn)前面的條目不匹配。可類似地重新打開較小的塊存儲(chǔ)以添加新的塊。在另一替代方案中,可使用位圖來跟蹤新條目可被添加到子空間的何處,或新塊被添加到塊存儲(chǔ)的何處,而不是移動(dòng)條目或塊。
容易理解,可對(duì)照一組一個(gè)或多個(gè)較老的子空間來協(xié)調(diào)新的子空間(新-到-舊協(xié)調(diào)),然而,舊-到-新協(xié)調(diào)也是可行的,但是這樣做一般涉及更多的數(shù)據(jù)移動(dòng)。更具體而言,在協(xié)調(diào)過程期間,與被去重復(fù)的子空間相關(guān)聯(lián)的文件將招致更高的訪問成本,因?yàn)閷?duì)該文件的訪問時(shí)更碎片化的。該散列索引服務(wù)可基于內(nèi)容的訪問模式來選擇要對(duì)哪個(gè)子空間進(jìn)行去重復(fù)以改善訪問性能,例如,以便常用文件不太碎片化。該散列索引服務(wù)還可調(diào)整 (coordinate)協(xié)調(diào)以在去重復(fù)保留和碎片量之間做出平衡。例如,考慮彼此類似的兩個(gè)子空間A和B,并且觀察到子空間B比子空間A更頻繁地被訪問(讀取或更新),或者子空間B包含子空間A的內(nèi)容的更新的版本,從而子空間A 更可被認(rèn)為是子空間B的版本歷史并預(yù)計(jì)將被較不頻繁地訪問。散列索引服務(wù)可選擇對(duì)照子空間B對(duì)子空間A進(jìn)行去重復(fù),以便被更頻繁地訪問的子空間B保持更好的訪問性能。在一個(gè)替代實(shí)施例中,可限制去重復(fù)的鏈條以控制文件訪問的成本。通過去重復(fù)優(yōu)化,可通過計(jì)算去重復(fù)圖中的分支的數(shù)量來評(píng)估訪問文件所需的I/O操作的數(shù)量。例如, 如果對(duì)照子空間B和C對(duì)子空間A進(jìn)行去重復(fù),并且還對(duì)照子空間D對(duì)子空間B進(jìn)行去重復(fù),則在去重復(fù)圖中有三個(gè)分支,而對(duì)與子空間A相關(guān)聯(lián)的文件的I/O訪問的數(shù)量是4(= 3+1)。為了將對(duì)文件的訪問的I/O的數(shù)量限制為不超過K,則該協(xié)調(diào)樹不能具有超過K-I條分支。如果該去重復(fù)系統(tǒng)正存儲(chǔ)周期性備份數(shù)據(jù),例如,用于第O天的Btl、用于第I天的 B1、用于第2天的B2等等,則為了確保合理高效地執(zhí)行最新近備份的恢復(fù)(例如,以帶來不超過K個(gè)訪問),則去重復(fù)優(yōu)化和協(xié)調(diào)操作可被執(zhí)行如下首先,將第O天的完整備份存儲(chǔ)到當(dāng)執(zhí)行第I天的備份BI時(shí),將其對(duì)照Bci進(jìn)行去重復(fù)。當(dāng)執(zhí)行第2天的備份B2時(shí), 將其對(duì)照Btl和B1進(jìn)行去重復(fù),等等。在第K天,執(zhí)行Bk的完整備份,然后應(yīng)用協(xié)調(diào)操作以針對(duì)Bk的備份對(duì)Btl的備份進(jìn)行去重復(fù)。針對(duì)Bk對(duì)第K+1天的備份Βκ+1進(jìn)行去重復(fù),而針對(duì) Bk和Βκ+1對(duì)第K+2天的備份進(jìn)行去重復(fù)。在第2K天,執(zhí)行B2k的完整備份,然后應(yīng)用協(xié)調(diào)操作以針對(duì)B2k的備份對(duì)Bk的備份進(jìn)行去重復(fù)。在許多環(huán)境中,存在太多子空間/不充足資源而不能彼此協(xié)調(diào)所有的子空間。在這種情形下,散列索引服務(wù)的選擇機(jī)制被用來選擇要協(xié)調(diào)哪些子空間。如同此處描述的,在散列索引服務(wù)中,文件存儲(chǔ)服務(wù)的散列被分為子空間以允許該散列索引服務(wù)縮放,并且可對(duì)每個(gè)子空間計(jì)算一個(gè)或多個(gè)簽名以便該子空間可被緊湊地表示。該子空間的簽名被加載到散列索引服務(wù)中(舉例來說,以確定哪個(gè)子空間要被該散列索引服務(wù)的高速緩存管理單元加載/卸載、以及以什么采樣速率進(jìn)行),以及哪兩個(gè)子空間要在進(jìn)一步的數(shù)據(jù)去重復(fù)中被協(xié)調(diào)。為此目的,一般而言,在協(xié)調(diào)操作期間,散列索引服務(wù)檢查該系統(tǒng)中該索引子空間的簽名(或其他表示性數(shù)據(jù)),并基于該簽名來計(jì)算任何兩個(gè)子空間之間的相似性以確定這兩個(gè)子空間之間的潛在的去重復(fù)節(jié)省。因?yàn)樵撟涌臻g簽名被非常緊湊地表示,所以尋找要去重復(fù)的子空間的操作可以非??斓乇粓?zhí)行。子空間的簽名可采用各種形式。令子空間Pj包括一組散列hy,比,2,……,hy。 子空間匕的多個(gè)樣本簽名是I.最小散列及其變型(例如,具有靠近特定常數(shù)的散列值);例如,最大散列是一個(gè)這樣的變型。
Sigi(Pj) = min{hj, 1, hj,2, ......, hj, 1}2. k_最小散列(k-min hash)或其變型。Sig2(Pj) = {hj, 1, hj,2, ......,hj, 1}間的一組 k_ 最小散列值。也可使用可從完整散列值組中產(chǎn)生一組k個(gè)確定性散列值的其他算法,如,簽名可以是最接近常數(shù)H的k個(gè)散列值。3.布隆過濾器該簽名是由完整的散列值組{hj,l,hj,2,……,hj,1}形成的布隆過濾器。4. k-最小散列+布隆過濾器該簽名是由在2中獲得的k_最小散列值形成的布隆過濾器。5. b-位 minwise 散列(如 P. Li 和 A. C. Konig 的 “b_ 位 Minwise 散列 ”, WWW2010 中所描述的那樣)。該簽名是由完整的散列值組{hj, 1, hj,2, ......, hj, 1}形成的b_位minwise散列。6. k-最小散列+b_位minwise散列。這個(gè)簽名由在2中獲得的k個(gè)最小散列值上的b位minwise散列所形成。對(duì)于每一個(gè)簽名計(jì)算方法,定義了相似性度量R(Pi,Pj),代表兩個(gè)子空間是如何 類似(即,可去重復(fù)的)。在一種實(shí)現(xiàn)中,相似性度量R(Pi,Pj)采用從0到1的值;相似性 度量越大,就越可能在子空間Pi和Pj之間存在顯著的去重復(fù)幾率的。每個(gè)簽名的相似性度 量可以是1.最小散列R(Pi,Pj) = 1,如果兩個(gè)子空間的最小散列是相等的,R(Pi,Pj) = 0,其他情況。2. K-最小散列R(Pi,Pj) = q/k,如果在子空間Pi,Pj之間存在q個(gè)相等(共同的)最小散列。3.布隆過濾器和/或k_最小散列+布隆過濾器
權(quán)利要求
1.一種計(jì)算環(huán)境中的至少部分地在至少一個(gè)處理器上執(zhí)行的方法,包括將子空間索引(P1-Pm)從輔助介質(zhì)加載到主存儲(chǔ)器高速緩存中,所述子空間索引包括少于散列索引服務(wù)(116)的所有索引條目;以及使用所述子空間索引來對(duì)數(shù)據(jù)進(jìn)行去重復(fù),包括將所述數(shù)據(jù)分塊(504)為一個(gè)或多個(gè)塊,并且對(duì)于每個(gè)塊,確定(510)為所述塊計(jì)算的散列值是否與所述主存儲(chǔ)器高速緩存中的條目的散列值相匹配,并且如果不匹配,則存儲(chǔ)(518)所述塊并與對(duì)所述塊的引用相關(guān)聯(lián)地將對(duì)應(yīng)于所述散列值的條目添加(518)到所述子空間索引中,而如果匹配,則返回 (512)能夠用于定位現(xiàn)有的塊的信息。
2.如權(quán)利要求I所述的方法,其特征在于,還包括將另一子空間索引的至少一部分加載到所述主存儲(chǔ)器高速緩存中,或者基于一個(gè)或多個(gè)準(zhǔn)則將所述散列索引服務(wù)劃分為多個(gè)子空間索引,或者基于將要被去重復(fù)的數(shù)據(jù)的一個(gè)或多個(gè)準(zhǔn)則將所述數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)集,以及將所述散列索引服務(wù)劃分為與所述多個(gè)數(shù)據(jù)集相對(duì)應(yīng)的多個(gè)子空間索引,或者以下各項(xiàng)的任何組合將另一子空間索引的至少一部分加載到所述主存儲(chǔ)器高速緩存中,或者基于一個(gè)或多個(gè)準(zhǔn)則將所述散列索引服務(wù)劃分為多個(gè)子空間索引,或者基于將要被去重復(fù)的數(shù)據(jù)的一個(gè)或多個(gè)準(zhǔn)則將所述數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)集,以及將所述散列索引服務(wù)劃分為與所述多個(gè)數(shù)據(jù)集相對(duì)應(yīng)的多個(gè)子空間索引。
3.如權(quán)利要求I所述的方法,其特征在于,返回能夠用于定位現(xiàn)有的塊的信息包括返回包括對(duì)與所述條目相關(guān)聯(lián)的塊的引用的塊標(biāo)識(shí)符,或返回所述散列值以及所述子空間的標(biāo)識(shí)符。
4.如權(quán)利要求I所述的方法,其特征在于,還包括將所述子空間與另一子空間進(jìn)行協(xié)調(diào),或?qū)⒘硪蛔涌臻g與所述子空間進(jìn)行協(xié)調(diào),其中協(xié)調(diào)從至少一個(gè)子空間移除至少一個(gè)重復(fù)的數(shù)據(jù)塊。
5.如權(quán)利要求4所述的方法,其特征在于,還包括基于表示所述子空間的至少一個(gè)簽名以及表示其他子空間的至少一個(gè)簽名之間的相似度來選擇要協(xié)調(diào)的其他子空間。
6.一種計(jì)算環(huán)境中的系統(tǒng),包括耦合于數(shù)據(jù)存儲(chǔ)服務(wù)(102)的散列索引服務(wù)(116), 所述散列索引服務(wù)被配置成確定為要去重復(fù)的數(shù)據(jù)的塊(110)計(jì)算的散列值(114)是否與主存儲(chǔ)器高速緩存中的現(xiàn)有散列值相匹配,所述主存儲(chǔ)器高速緩存包括子空間索引(P1-Pm) 并且不包括所述散列索引服務(wù)的所有索引條目,并且如果匹配,則返回能夠用于定位現(xiàn)有的塊的信息,而如果不匹配,則通知所述數(shù)據(jù)存儲(chǔ)服務(wù)存儲(chǔ)所述塊,且所述散列索引服務(wù)還被配置成與能夠用于定位所添加的塊的信息相關(guān)聯(lián)地將對(duì)應(yīng)于所述散列值的條目添加到所述子空間索引中。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,還包括將所述子空間與另一子空間相協(xié)調(diào)的協(xié)調(diào)機(jī)制,包括通過檢測(cè)所述子空間中的任何重復(fù)的條目,以及對(duì)于所檢測(cè)到的每個(gè)重復(fù)的條目,采取動(dòng)作以消除所述重復(fù)的條目中的一個(gè),更新對(duì)與該重復(fù)的條目相關(guān)聯(lián)的塊的任一個(gè)或多個(gè)引用,以及移除與該重復(fù)的條目相關(guān)聯(lián)的塊。
8.具有計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),當(dāng)執(zhí)行所述計(jì)算機(jī)可執(zhí)行指令時(shí)執(zhí)行各個(gè)步驟,所述步驟包括將子空間與一個(gè)或多個(gè)其他子空間進(jìn)行協(xié)調(diào),包括(a)選擇(604)所述子空間中的散列值;(b)確定(608)所述散列值是否與所述一個(gè)或多個(gè)其他子空間中的散列值相匹配,并且如果不匹配,則前進(jìn)到步驟(d);(c)消除(610)所述子空間中的重復(fù)的散列值;以及(d)返回(614)到步驟(a)以處理多個(gè)不同的散列值。
9.如權(quán)利要求8所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,具有進(jìn)一步的計(jì)算機(jī)可執(zhí)行指令,包括基于以下內(nèi)容來選擇所述子空間和所述一個(gè)或多個(gè)其他子空間類似的子空間類型、類似的子空間簽名,或者所述子空間是未經(jīng)協(xié)調(diào)的子空間且所述一個(gè)或多個(gè)其他子空間包括多個(gè)先前彼此協(xié)調(diào)過的子空間,或以下各項(xiàng)的任何組合類似的子空間類型、類似的子空間簽名、或者所述子空間是未經(jīng)協(xié)調(diào)的子空間且所述一個(gè)或多個(gè)子空間包括多個(gè)先前彼此協(xié)調(diào)過的子空間。
10.如權(quán)利要求8所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,消除所述子空間中的所述條目包括不將所述條目復(fù)制到新的子空間,或通過將包含所述散列值的條目標(biāo)記為消除而使所述子空間緊湊化,以及通過在協(xié)調(diào)后僅將未標(biāo)記的條目復(fù)制到新的子空間而消除所述條目,或用未標(biāo)記的條目蓋寫被標(biāo)記為消除的條目。
全文摘要
本發(fā)明涉及使用索引劃分和協(xié)調(diào)來進(jìn)行數(shù)據(jù)去重復(fù)。所公開的主題涉及將散列索引服務(wù)的索引劃分為子空間索引的數(shù)據(jù)去重復(fù)技術(shù),其中少于整個(gè)散列索引服務(wù)的索引被高速緩存以節(jié)省存儲(chǔ)器。該子空間索引被訪問以確定數(shù)據(jù)塊是否已經(jīng)存在或需要被索引和存儲(chǔ)??苫谂c要索引的數(shù)據(jù)相關(guān)聯(lián)的準(zhǔn)則(諸如文件類型、數(shù)據(jù)類型、最后使用時(shí)間等)將該索引分成各個(gè)子空間。還描述了子空間協(xié)調(diào),其中檢測(cè)子空間中的重復(fù)條目以從該去重復(fù)系統(tǒng)中移除條目和塊。子空間協(xié)調(diào)可在非高峰時(shí)間、當(dāng)更多系統(tǒng)資源可用時(shí)執(zhí)行,而如果需要資源則可中斷協(xié)調(diào)。要協(xié)調(diào)的子空間可以基于相似度,包括簽名的相似度,每個(gè)簽名緊湊地表示該子空間的散列。
文檔編號(hào)G06F17/30GK102591946SQ20111044528
公開日2012年7月18日 申請(qǐng)日期2011年12月27日 優(yōu)先權(quán)日2010年12月28日
發(fā)明者J·R·本頓, J·李, P·A·奧爾泰安, R·N·德塞, R·卡拉赫, S·森古普塔 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1