背景技術(shù):
數(shù)據(jù)去重復(fù)(deduplication)是用于增加存儲(chǔ)設(shè)備的存儲(chǔ)容量的技術(shù)。通過使用數(shù)據(jù)去重復(fù),唯一數(shù)據(jù)區(qū)塊的冗余拷貝被識(shí)別并從存儲(chǔ)設(shè)備移除。因而,唯一數(shù)據(jù)區(qū)塊的單個(gè)拷貝被存儲(chǔ)在存儲(chǔ)設(shè)備中。
附圖說明
關(guān)于以下附圖描述本申請(qǐng)的一些示例:
圖1是根據(jù)一個(gè)示例的存儲(chǔ)具有沖突指紋(fingerprint)的數(shù)據(jù)區(qū)塊的存儲(chǔ)設(shè)備的框圖;
圖2是根據(jù)一個(gè)示例的存儲(chǔ)具有沖突指紋的數(shù)據(jù)區(qū)塊的存儲(chǔ)設(shè)備的框圖;
圖3是圖示根據(jù)一個(gè)示例的存儲(chǔ)具有沖突指紋的數(shù)據(jù)區(qū)塊的方法的流程圖;以及
圖4是圖示根據(jù)一個(gè)示例的存儲(chǔ)具有沖突指紋的數(shù)據(jù)區(qū)塊的方法的流程圖。
具體實(shí)施方式
如上所述,數(shù)據(jù)去重復(fù)是用于增加存儲(chǔ)設(shè)備的存儲(chǔ)容量的技術(shù)。為了確定是否數(shù)據(jù)區(qū)塊是現(xiàn)有存儲(chǔ)的數(shù)據(jù)區(qū)塊的冗余拷貝,生成數(shù)據(jù)區(qū)塊的指紋。指紋可以是數(shù)據(jù)區(qū)塊的循環(huán)冗余校驗(yàn)(crc)或者數(shù)據(jù)區(qū)塊的散列鍵(hashkey)。當(dāng)所述指紋匹配另一個(gè)指紋時(shí),所述匹配可以指示該數(shù)據(jù)區(qū)塊是冗余拷貝。因而,存儲(chǔ)設(shè)備移除該數(shù)據(jù)區(qū)塊。
然而,所述匹配可能指示指紋沖突,而不是冗余拷貝的指示。當(dāng)具有不同內(nèi)容的兩個(gè)數(shù)據(jù)區(qū)塊生成相同指紋時(shí),指紋沖突發(fā)生。因而,數(shù)據(jù)區(qū)塊的指紋可能是沖突指紋。指紋沖突的可能性取決于指紋大小。指紋大小越大,可能性越低。因而,當(dāng)僅僅依賴于指紋匹配時(shí),數(shù)據(jù)去重復(fù)過程的準(zhǔn)確度降低。
本文所述的示例提供了存儲(chǔ)具有沖突指紋的數(shù)據(jù)區(qū)塊的存儲(chǔ)設(shè)備。例如,存儲(chǔ)設(shè)備可以從源設(shè)備接收第一數(shù)據(jù)區(qū)塊。存儲(chǔ)設(shè)備可以生成第一數(shù)據(jù)區(qū)塊的第一指紋。存儲(chǔ)設(shè)備可以將第一指紋與存儲(chǔ)在存儲(chǔ)設(shè)備中的第二數(shù)據(jù)區(qū)塊的第二指紋相比較。響應(yīng)于確定第一指紋匹配第二指紋,存儲(chǔ)設(shè)備可以基于第一數(shù)據(jù)區(qū)塊以及基于第二數(shù)據(jù)區(qū)塊而從與存儲(chǔ)設(shè)備關(guān)聯(lián)的多個(gè)存儲(chǔ)池中選擇存儲(chǔ)池來存儲(chǔ)第一數(shù)據(jù)區(qū)塊。所述多個(gè)存儲(chǔ)池包括與具有非沖突指紋的第一特定數(shù)據(jù)區(qū)塊關(guān)聯(lián)的第一存儲(chǔ)池以及與具有沖突指紋的第二特定數(shù)據(jù)區(qū)塊關(guān)聯(lián)的第二存儲(chǔ)池。以此方式,本文所述的示例可以增加數(shù)據(jù)去重復(fù)過程的準(zhǔn)確性。
現(xiàn)在參考附圖,圖1是根據(jù)一個(gè)示例的存儲(chǔ)具有沖突指紋的數(shù)據(jù)區(qū)塊的存儲(chǔ)設(shè)備100的框圖。如本文所使用的,沖突指紋可以是從數(shù)據(jù)區(qū)塊生成的指紋,其匹配從不同的數(shù)據(jù)區(qū)塊(即,兩個(gè)數(shù)據(jù)區(qū)塊具有不同的內(nèi)容)生成的另一個(gè)指紋。例如,存儲(chǔ)設(shè)備100可以是在所存儲(chǔ)的數(shù)據(jù)上執(zhí)行數(shù)據(jù)去重復(fù)的存儲(chǔ)系統(tǒng),存儲(chǔ)陣列、硬盤驅(qū)動(dòng)器、固態(tài)驅(qū)動(dòng)器或適于存儲(chǔ)數(shù)據(jù)的任何電子設(shè)備。
存儲(chǔ)設(shè)備100可以包括控制器102、第一存儲(chǔ)池104、第二存儲(chǔ)池106和指紋數(shù)據(jù)庫108??刂破?02可以是例如中央處理單元(cpu)、基于半導(dǎo)體的微處理器,和/或適于檢索和執(zhí)行在存儲(chǔ)設(shè)備100的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(未示出)中存儲(chǔ)的指令的其他硬件設(shè)備??刂破?02可以取出、解碼和執(zhí)行指令以控制將具有沖突指紋的數(shù)據(jù)區(qū)塊存儲(chǔ)到存儲(chǔ)池(諸如第一存儲(chǔ)池104)的過程。作為替換或除了檢索和執(zhí)行指令之外,控制器102還可以包括至少一個(gè)電子電路,其包括用于執(zhí)行指令的功能的電子組件。
第一存儲(chǔ)池104可以包括,例如,一個(gè)或多個(gè)存儲(chǔ)設(shè)備、一個(gè)或多個(gè)邏輯存儲(chǔ)卷等。第一存儲(chǔ)池104可以存儲(chǔ)具有非沖突指紋的數(shù)據(jù)區(qū)塊。如本文所使用的,非沖突指紋可以是沒有存儲(chǔ)在指紋數(shù)據(jù)庫108中的匹配指紋的指紋。第二存儲(chǔ)池106可以類似于第一存儲(chǔ)池104。第二存儲(chǔ)池106可以存儲(chǔ)具有沖突指紋的數(shù)據(jù)區(qū)塊。指紋數(shù)據(jù)庫108可以是存儲(chǔ)數(shù)據(jù)區(qū)塊的指紋的數(shù)據(jù)庫,所述數(shù)據(jù)區(qū)塊被存儲(chǔ)在存儲(chǔ)設(shè)備100中或者與存儲(chǔ)設(shè)備100相關(guān)聯(lián)。
在操作期間,源設(shè)備110可以將數(shù)據(jù)區(qū)塊112傳送到存儲(chǔ)設(shè)備100以供存儲(chǔ)。源設(shè)備110可以是計(jì)算設(shè)備,諸如平板計(jì)算機(jī)、膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、智能電話等。響應(yīng)于接收到數(shù)據(jù)區(qū)塊112,控制器102可以執(zhí)行數(shù)據(jù)去重復(fù)操作來確定數(shù)據(jù)區(qū)塊112如何被存儲(chǔ)。控制器112可以生成數(shù)據(jù)區(qū)塊112的指紋114。控制器102可以將指紋114與存儲(chǔ)在指紋數(shù)據(jù)庫108中的至少一個(gè)指紋相比較。當(dāng)指紋114不匹配指紋數(shù)據(jù)庫108中的任何指紋時(shí),控制器102可以確定指紋114是非沖突指紋。
因而,控制器102可以確定數(shù)據(jù)區(qū)塊112是唯一數(shù)據(jù)區(qū)塊,并且不是已經(jīng)存儲(chǔ)在存儲(chǔ)設(shè)備100中的現(xiàn)有數(shù)據(jù)區(qū)塊的冗余拷貝??刂破?02可以在第一存儲(chǔ)池104中存儲(chǔ)數(shù)據(jù)區(qū)塊112。控制器102還可以將指紋114存儲(chǔ)到指紋數(shù)據(jù)庫108以供與后續(xù)生成的指紋比較。
當(dāng)指紋114匹配指紋數(shù)據(jù)庫108中的特定指紋時(shí),控制器102可以將數(shù)據(jù)區(qū)塊112與來自第一存儲(chǔ)池104和/或第二存儲(chǔ)池106的具有特定指紋的特定數(shù)據(jù)區(qū)塊相比較。例如,控制器102可以經(jīng)由按字節(jié)比較將數(shù)據(jù)區(qū)塊與特定數(shù)據(jù)區(qū)塊相比較。當(dāng)數(shù)據(jù)區(qū)塊112匹配特定數(shù)據(jù)區(qū)塊時(shí),控制器102可以確定數(shù)據(jù)區(qū)塊112是特定數(shù)據(jù)區(qū)塊的冗余拷貝。因而,控制器102可以存儲(chǔ)對(duì)其中存儲(chǔ)特定數(shù)據(jù)區(qū)塊的存儲(chǔ)池中的特定數(shù)據(jù)區(qū)塊的引用或指向其的指針。控制器102還可以丟棄指紋114。
當(dāng)數(shù)據(jù)區(qū)塊112不匹配特定數(shù)據(jù)區(qū)塊時(shí),控制器102可以確定數(shù)據(jù)區(qū)塊112是唯一數(shù)據(jù)區(qū)塊,其當(dāng)前未被存儲(chǔ)在存儲(chǔ)設(shè)備100中??刂破?02可以確定指紋114是沖突指紋??刂破?02可以在第二存儲(chǔ)池106中存儲(chǔ)數(shù)據(jù)區(qū)塊112。在一些示例中,在將數(shù)據(jù)區(qū)塊112與特定數(shù)據(jù)區(qū)塊比較并且將特定指紋與數(shù)據(jù)區(qū)塊112相關(guān)聯(lián)之后,控制器102可以丟棄指紋114。因而,通過利用不同的存儲(chǔ)池,一個(gè)用于具有非沖突指紋的數(shù)據(jù)區(qū)塊,并且一個(gè)用于具有沖突指紋的數(shù)據(jù)區(qū)塊,具有沖突指紋的唯一數(shù)據(jù)區(qū)塊可以被存儲(chǔ)設(shè)備100高效地處理。
在一些示例中,數(shù)據(jù)區(qū)塊可以基于數(shù)據(jù)區(qū)塊的指紋的三級(jí)頁表轉(zhuǎn)換而被存儲(chǔ)到第一存儲(chǔ)池104中的位置。數(shù)據(jù)區(qū)塊可以基于數(shù)據(jù)區(qū)塊的偏移的三級(jí)頁表轉(zhuǎn)換而被存儲(chǔ)到第二存儲(chǔ)池106中的位置。因而,相同數(shù)據(jù)區(qū)塊存儲(chǔ)和檢索機(jī)制可以用于存儲(chǔ)池104和106。
圖2是根據(jù)一個(gè)示例的存儲(chǔ)具有沖突指紋的數(shù)據(jù)區(qū)塊的存儲(chǔ)設(shè)備200的框圖。存儲(chǔ)設(shè)備200可以類似于圖1的存儲(chǔ)設(shè)備100。存儲(chǔ)設(shè)備200可以包括控制器202和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)204。控制器202可以類似于控制器102??刂破?02可以取出、解碼和執(zhí)行指令206-214以控制將具有沖突指紋的數(shù)據(jù)區(qū)塊存儲(chǔ)到存儲(chǔ)池(諸如第一存儲(chǔ)池104)的過程。
計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)204可以是包含或存儲(chǔ)可執(zhí)行指令的任何電子、磁性、光學(xué)或其他物理存儲(chǔ)設(shè)備。因而,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)204可以是例如隨機(jī)存取存儲(chǔ)器(ram)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、光盤等。在一些示例中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)204可以是非瞬時(shí)存儲(chǔ)介質(zhì),其中術(shù)語“非瞬時(shí)”不包含瞬時(shí)傳播信號(hào)。如下詳細(xì)所述,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)204可以被編碼有一系列處理器可執(zhí)行指令206-214,其用于在存儲(chǔ)設(shè)備200中存儲(chǔ)具有沖突指紋的數(shù)據(jù)區(qū)塊。
數(shù)據(jù)區(qū)塊接收指令206可以從源設(shè)備接收數(shù)據(jù)區(qū)塊以供存儲(chǔ),諸如圖1的數(shù)據(jù)區(qū)塊112。指紋生成指令208可以基于數(shù)據(jù)區(qū)塊而生成指紋,諸如指紋114。指紋比較指令210可以將該指紋與存儲(chǔ)在存儲(chǔ)設(shè)備200中的其他指紋相比較。
當(dāng)所述指紋匹配存儲(chǔ)設(shè)備200中的另一個(gè)指紋時(shí),數(shù)據(jù)區(qū)塊比較指令212可以將所述數(shù)據(jù)區(qū)塊與用于生成匹配指紋的另一個(gè)數(shù)據(jù)區(qū)塊相比較。當(dāng)所述數(shù)據(jù)區(qū)塊匹配另一個(gè)數(shù)據(jù)區(qū)塊時(shí),數(shù)據(jù)區(qū)塊存儲(chǔ)指令214可以在第一存儲(chǔ)池中存儲(chǔ)對(duì)另一個(gè)數(shù)據(jù)區(qū)塊的引用或指向其的指針,所述第一存儲(chǔ)池與具有不沖突指紋的數(shù)據(jù)區(qū)塊相關(guān)聯(lián),諸如第一存儲(chǔ)池104。當(dāng)所述數(shù)據(jù)區(qū)塊不匹配另一個(gè)數(shù)據(jù)區(qū)塊時(shí),數(shù)據(jù)區(qū)塊存儲(chǔ)指令214可以在與第一存儲(chǔ)池不同的第二存儲(chǔ)池(諸如第二存儲(chǔ)池106)中存儲(chǔ)所述數(shù)據(jù)區(qū)塊。第二存儲(chǔ)池可以與具有沖突指紋的數(shù)據(jù)區(qū)塊相關(guān)聯(lián)。當(dāng)所述指紋不匹配存儲(chǔ)設(shè)備200中的指紋時(shí),數(shù)據(jù)區(qū)塊存儲(chǔ)指令214可以在第二存儲(chǔ)池中存儲(chǔ)所述數(shù)據(jù)區(qū)塊。
圖3是圖示根據(jù)一個(gè)示例的存儲(chǔ)具有沖突指紋的數(shù)據(jù)區(qū)塊的方法300的流程圖。方法300可以使用圖1的存儲(chǔ)設(shè)備100和/或圖2的存儲(chǔ)設(shè)備200來實(shí)現(xiàn)。方法300包括,在302處,在存儲(chǔ)設(shè)備處從源設(shè)備接收第一數(shù)據(jù)區(qū)塊。例如,參考圖1,存儲(chǔ)設(shè)備100可以從源設(shè)備110接收數(shù)據(jù)區(qū)塊112。
方法300還包括,在304處,生成第一數(shù)據(jù)區(qū)塊的第一指紋。例如,參考圖1,控制器102可以基于數(shù)據(jù)區(qū)塊112而生成指紋114。方法300還包括,在306處,將第一指紋與第二數(shù)據(jù)區(qū)塊的第二指紋相比較。例如,參考圖1,控制器102可以將指紋114與存儲(chǔ)在指紋數(shù)據(jù)庫108中的至少一個(gè)指紋相比較。
方法300還包括,在308處,當(dāng)?shù)谝恢讣y匹配第二指紋時(shí),基于第一數(shù)據(jù)區(qū)塊與第二數(shù)據(jù)區(qū)塊之間的比較而從與存儲(chǔ)設(shè)備關(guān)聯(lián)的多個(gè)存儲(chǔ)池中選擇存儲(chǔ)池以存儲(chǔ)第一數(shù)據(jù)區(qū)塊,其中所述多個(gè)存儲(chǔ)池包括與具有非沖突指紋的第一特定數(shù)據(jù)區(qū)塊關(guān)聯(lián)的第一存儲(chǔ)池以及與具有沖突指紋的第二特定數(shù)據(jù)特定數(shù)據(jù)區(qū)塊關(guān)聯(lián)的第二存儲(chǔ)池。例如,參考圖1,當(dāng)指紋114匹配來自指紋數(shù)據(jù)庫108的指紋時(shí),控制器102可以將數(shù)據(jù)區(qū)塊112與用于生成匹配指紋的數(shù)據(jù)區(qū)塊相比較。當(dāng)數(shù)據(jù)區(qū)塊112匹配所述數(shù)據(jù)區(qū)塊時(shí),控制器102可以在第一存儲(chǔ)池104中存儲(chǔ)數(shù)據(jù)區(qū)塊112。當(dāng)數(shù)據(jù)區(qū)塊112不匹配所述數(shù)據(jù)區(qū)塊時(shí),控制器102可以在第二存儲(chǔ)池106中存儲(chǔ)數(shù)據(jù)區(qū)塊。
方法300還包括,在310處,當(dāng)?shù)谝恢讣y不匹配第二指紋時(shí),在第一存儲(chǔ)池中存儲(chǔ)第一數(shù)據(jù)區(qū)塊。例如,參考圖1,當(dāng)指紋114不匹配指紋數(shù)據(jù)庫108中的任何指紋時(shí),控制器102可以將數(shù)據(jù)區(qū)塊存儲(chǔ)到第一存儲(chǔ)池104。
圖4是圖示根據(jù)一個(gè)示例的存儲(chǔ)具有沖突指紋的數(shù)據(jù)區(qū)塊的方法400的流程圖。方法400可以使用圖1的存儲(chǔ)設(shè)備100和/或圖2的存儲(chǔ)設(shè)備200來實(shí)現(xiàn)。方法400包括,在402處,接收數(shù)據(jù)區(qū)塊。例如,參考圖1,存儲(chǔ)設(shè)備100可以從源設(shè)備110接收數(shù)據(jù)區(qū)塊112。
方法400還包括,在404處,生成指紋。例如,參考圖1,控制器102可以基于數(shù)據(jù)區(qū)塊112而生成指紋114。方法400還包括,在406處,將所述指紋與存儲(chǔ)設(shè)備中的一個(gè)或多個(gè)指紋相比較。例如,參考圖1,控制器102可以將指紋114與存儲(chǔ)在指紋數(shù)據(jù)庫108中的至少一個(gè)指紋相比較。
當(dāng)所述指紋不匹配任何指紋時(shí),方法400還包括將數(shù)據(jù)區(qū)塊存儲(chǔ)到非沖突指紋存儲(chǔ)池。例如,參考圖1,控制器102可以將數(shù)據(jù)區(qū)塊存儲(chǔ)到存儲(chǔ)池104。當(dāng)所述指紋匹配某個(gè)指紋時(shí),方法400還包括,在410處,將數(shù)據(jù)區(qū)塊與用于生成匹配指紋的另一個(gè)數(shù)據(jù)區(qū)塊相比較。例如,參考圖1,控制器102可以將數(shù)據(jù)區(qū)塊112與用于生成匹配指紋的特定數(shù)據(jù)區(qū)塊相比較。
在408處,當(dāng)所述數(shù)據(jù)區(qū)塊匹配另一個(gè)數(shù)據(jù)區(qū)塊時(shí),所述數(shù)據(jù)區(qū)塊被存儲(chǔ)在非沖突指紋存儲(chǔ)池中。在412處,當(dāng)所述數(shù)據(jù)區(qū)塊不匹配另一個(gè)數(shù)據(jù)區(qū)塊時(shí),方法400還包括將所述數(shù)據(jù)區(qū)塊存儲(chǔ)到?jīng)_突指紋存儲(chǔ)池。例如,參考圖1,控制器102可以在第二存儲(chǔ)池106中存儲(chǔ)數(shù)據(jù)區(qū)塊112。
根據(jù)前文,本文公開的示例使得存儲(chǔ)設(shè)備能夠存儲(chǔ)具有沖突指紋的數(shù)據(jù)區(qū)塊。存儲(chǔ)設(shè)備可以將數(shù)據(jù)區(qū)塊的指紋與存儲(chǔ)在存儲(chǔ)設(shè)備中的一個(gè)或多個(gè)指紋相比較。當(dāng)存在匹配指紋時(shí),存儲(chǔ)設(shè)備可以將所述數(shù)據(jù)區(qū)塊與用于生成匹配指紋的另一個(gè)數(shù)據(jù)區(qū)塊相比較。當(dāng)所述數(shù)據(jù)區(qū)塊匹配另一個(gè)數(shù)據(jù)區(qū)塊時(shí),所述數(shù)據(jù)區(qū)塊可以是另一個(gè)數(shù)據(jù)區(qū)塊的冗余拷貝。因而,存儲(chǔ)設(shè)備可以存儲(chǔ)對(duì)另一個(gè)數(shù)據(jù)區(qū)塊的引用或指向其的指針。當(dāng)所述數(shù)據(jù)區(qū)塊不匹配另一個(gè)數(shù)據(jù)區(qū)塊時(shí),所述數(shù)據(jù)區(qū)塊可以是唯一數(shù)據(jù)區(qū)塊。因而,存儲(chǔ)設(shè)備可以將所述數(shù)據(jù)區(qū)塊存儲(chǔ)到與用于存儲(chǔ)另一個(gè)數(shù)據(jù)區(qū)塊的存儲(chǔ)池不同的存儲(chǔ)池。因而,具有沖突指紋的數(shù)據(jù)區(qū)塊不被錯(cuò)誤地識(shí)別為另一個(gè)數(shù)據(jù)區(qū)塊的冗余拷貝,并且存儲(chǔ)設(shè)備中的數(shù)據(jù)去重復(fù)過程的準(zhǔn)確性可以增加。
“包含”、“包括”或“具有”的使用是同義的,并且本文中其變形意為包括性或開放式的,并且不排除附加的未記載元件或方法步驟。