專利名稱::存儲(chǔ)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種存儲(chǔ)系統(tǒng),并且特別地,涉及一種具有重復(fù)存儲(chǔ)消除功能的存儲(chǔ)系統(tǒng)。
背景技術(shù):
:在過去數(shù)年,數(shù)據(jù)去重(deduplication)已經(jīng)變成存儲(chǔ)系統(tǒng)領(lǐng)域中的最廣泛研究的主題之一。它實(shí)現(xiàn)顯著節(jié)省,因?yàn)樗璧拇鎯?chǔ)空間可以減少高達(dá)20倍數(shù),對(duì)于備份用途而言尤其如此。除了容量?jī)?yōu)化之外,去重還可以優(yōu)化寫帶寬。如果系統(tǒng)提供(在寫數(shù)據(jù)期間執(zhí)行的)內(nèi)嵌(in-line)去重并且通過僅比較其哈希來驗(yàn)證組塊的相等,則重復(fù)塊的數(shù)據(jù)無需被存儲(chǔ)在盤上或是甚至通過網(wǎng)絡(luò)傳輸。然而,提供一種用于標(biāo)識(shí)重復(fù)的有效方式卻并非易事??紤]具有可靠的內(nèi)嵌去重的示例單節(jié)點(diǎn)基于盤的存儲(chǔ)系統(tǒng)。假設(shè)具有12個(gè)ITB盤的2u存儲(chǔ)節(jié)點(diǎn),用于每個(gè)節(jié)點(diǎn)共計(jì)12TB盤空間。通過比較組塊的內(nèi)容的哈希而在組塊級(jí)完成去重。相關(guān)工作表明8kB的組塊大小是一個(gè)合理的選擇。為了提供具有該組塊大小的去重,需要一個(gè)用于15億個(gè)條目的詞典。僅僅是保持用于它們的哈希便將消耗對(duì)于SHA-1而言是30GB或者對(duì)于SHA-256而言是50GB,并且不會(huì)適應(yīng)合理大小的RAM。目前的系統(tǒng)將詞典實(shí)現(xiàn)為駐盤(disk-resident)哈希表。然而,數(shù)據(jù)組塊的哈希是均與分布的,并且在訪問它們時(shí)沒有局部性。這使得直接高速緩存是低效的,并且導(dǎo)致查找期間從盤的隨機(jī)讀取。NPLI和2建議兩個(gè)優(yōu)化技術(shù)的組合。1.為了在查找不存在于系統(tǒng)中的組塊期間避免盤訪問,在存儲(chǔ)器中的布隆過濾器中概括所有哈希。這加速了否定回答。2.預(yù)取假設(shè)寫入重復(fù)的順序?qū)⑴c寫入原有組塊的順序相同。哈希被附加地保持在反映其初始寫入順序的特殊文件中。這加速了肯定答復(fù),但是只有在該順序被保留的情況下才會(huì)如此。引用列表非專利文獻(xiàn)非專利文獻(xiàn)I:ZHU,B.,LI,K.,ANDPATTERSON,H.Avoidingthediskbottleneckinthedatadomaindeduplicationfilesystem.1nFAST'08:Proceedingsofthe6thUSENIXConferenceonFileandStorageTechnologies(Berkeley,CA,USA,2008),USENIXAssociation,pp.1-14.非專利文獻(xiàn)2:RHEA,S.,COX,R.,ANDPESTEREV,A.Fast,inexpensivecontent-addressedstorageinfoundation.1nProceedingsofthe2008USENIXAnnualTechnicalConference(Berkeley,CA,USA,2008),USENIXAssociation,pp.143-156.非專利文獻(xiàn)3:DEBNATH,B.,SENGUPTA,S.,ANDLI,J.Chunkstash!Speedingupinlinestoragededuplicationusingflashmemory.1n2010USENIXAnnualTechnicalConference(June2010).非專利文獻(xiàn)4:MEISTER,D.,ANDBRINKMANN,A.dedupvlJmprovingDeduplicationThroughputusingSolidStateDrives(SSD).1nProceedingsofthe26thIEEESymposiumonMassiveStorageSystemsandTechnologies(MSST)(May2010).非專利文獻(xiàn)5;QUINLAN,S.,ANDD0RWARD,S.Venti:anewapproachtoarchivalstorage.1nFirstUSENIXconferenceonFileandStorageTechnologies(Monterey,CA,2002),USENIXAssociation,pp.89-101.非專利文獻(xiàn)6:WEI,J.,JIANG,H.,ZHOU,K.,ANDFENG,D.Mad2:Ascalablehigh-throughputexactdeduplicationapproachfornetworkbackupservices.1nProceedingsofthe26thIEEESymposiumonMassiveStorageSystemsandTechnologies(MSST)(May2010).非專利文獻(xiàn)7:LILLIBRIDGE,M.,ESHGHI,K.,BHAGWAT,D.,DEOLALIKAR,V.,TREZIS,G.,ANDCAMBLE,P.Sparseindexing:Largescale,inlinededuplicationusingsamplingandlocality.1nFAST(2009),pp.111-123.非專利文獻(xiàn)8:BHAGWAT,D.,ESHGHI,K.,LONG,D.D.E.,ANDLILLIBRIDGE,M.Extremebinning:Scalable,paralleldeduplicationforchunk-basedfilebackup.非專利文獻(xiàn)9:MINGYANG,T.,F(xiàn)ENG,D.,YINGNIU,Z.,ANDPINGWAN,Y.Scalablehighperformancede-duplicationbackupviahashjoin.JournalofZhejiangUniversity-ScienceC11,5(2010),315-327.非專利文獻(xiàn)10:YANG,T.,JIANGY,H.,F(xiàn)ENGZ,D.,ANDNIU,Z.Debar:Ascalablehigh-performancede-duplicationstoragesystemforbackupandarchiving.Tech.rep.,UniversityofNebraska—Lincoln,2009.非專利文獻(xiàn)11:CLEMENTS,A.,AHMAD,1.,VILAYANNUR,M.,ANDLI,J.Decentralizeddeduplicationinsanclusterfilesystems.1nProceedingsoftheUSENIXAnnualTechnicalConference(June2009).非專利文獻(xiàn)12:G0KHALE,S.,AGRAWAL,N.,Ν00ΝΑΝ,S.,ANDUNGUREANU,C.KVZoneandtheSearchforaWrite-OptimizedKey-ValueStore.1nUSENIX2ndWorkshoponHotTopicsinStorageandFileSystems(HotStoragef10)(Boston,MA,June2010).非專利文獻(xiàn)13:YIN,S.,PUCHERAL,P.,ANDMENG,X.PbfilterJndexingflash-residentdatathroughpartitionedsummaries.ResearchReportRR—6548,INRIA,2008.非專利文獻(xiàn)14:YIN,S.,PUCHERAL,P.,ANDMENG,X.Pbfilter!indexingflash-residentdatathroughpartitionedsummaries.1nCIKM(2008),pp.1333-1334.非專利文獻(xiàn)15:CHANG,F.,DEAN,J.,GHEMAWAT,S.,HSIEH,W.C.,WALLACH,D.A.,BURROWS,M.,CHANDRA,T.,F(xiàn)IKES,A.,ANDGRUBER.R.E.Bigtable:Adistributedstoragesystemforstructureddata.1nOSDIf06:7thUSENIXSymposiumonOperatingSystemsDesignandImplementation(Berkeley,CA,USA,2006),USENIXAssociation,pp.205-218.非專利文獻(xiàn)16LEE,S.-ff.,ANDMOON,B.Designofflash-baseddbmsaninpageloggingapproach.1nSIGMODConference(2007),pp.55-66.
發(fā)明內(nèi)容技術(shù)問題這些技術(shù)可以允許實(shí)現(xiàn)合理帶寬,但是它們具有若干弊端。布隆過濾器和預(yù)取二者需要附加存儲(chǔ)器,它的大小顯著(下文具體討論存儲(chǔ)器消耗)。查找操作的延時(shí)不穩(wěn)定某些操作使用RAM來處理,而其它操作需要盤訪問。具有若干毫秒延時(shí)的讀盤對(duì)于一些使用(例如主儲(chǔ)存器)而言可能是不夠的。如果重復(fù)不是按照與原寫入相同的順序被寫入的,則預(yù)取停止有效工作,并且吞吐量降低若干量級(jí)。所提到弊端中的最后一個(gè)往往是最嚴(yán)重的。根據(jù)NPL2,寫入重復(fù)的順序?qū)π阅芫哂芯薮笥绊憽H绻貜?fù)是按照與原有寫入相同的順序,則基礎(chǔ)系統(tǒng)實(shí)現(xiàn)22MB/S,但是如果重復(fù)未按順序,則性能僅為6KB/s。問題是在現(xiàn)實(shí)備份使用中面對(duì)亂序去重的概率。每個(gè)后續(xù)備份改變數(shù)據(jù)的某個(gè)部分。雖然預(yù)計(jì)在兩個(gè)后續(xù)備份之間的差異較小,但是在第一備份與最后備份之間的差異可能很大。隨著每個(gè)下一備份,去重的排序?qū)⑼嘶⑶覍⒆罱K導(dǎo)致未按順序的重復(fù)。在該領(lǐng)域中尚未發(fā)現(xiàn)任何研究,但是預(yù)計(jì)它發(fā)生于數(shù)十個(gè)備份之后。該問題不僅隨著相同數(shù)據(jù)的備份數(shù)目而且隨著可以跨越多個(gè)備份集作為重復(fù)而發(fā)現(xiàn)的備份集的數(shù)目而增加。由許多小文件構(gòu)成的備份還可能加劇該問題,因?yàn)榭赡芤圆煌樞驅(qū)懭胛募?。由此,本發(fā)明的示例目的是提供一種存儲(chǔ)系統(tǒng),該存儲(chǔ)系統(tǒng)能夠?qū)崿F(xiàn)穩(wěn)定的延時(shí),同時(shí)抑制存儲(chǔ)器大小的增加,并且實(shí)現(xiàn)針對(duì)不同順序?qū)懭氲母咝ブ?,這是上文描述的有待解決的問題。問題解決方案根據(jù)本發(fā)明的一個(gè)方面,一種存儲(chǔ)系統(tǒng)包括第一輔助存儲(chǔ)設(shè)備,用于對(duì)存儲(chǔ)目標(biāo)數(shù)據(jù)進(jìn)行存儲(chǔ);第二輔助存儲(chǔ)設(shè)備,具有比第一輔助存儲(chǔ)設(shè)備的數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/寫速度;主存儲(chǔ)設(shè)備,具有比第一輔助存儲(chǔ)設(shè)備和第二輔助存儲(chǔ)設(shè)備的數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/寫速度;數(shù)據(jù)管理單元,將存儲(chǔ)目標(biāo)數(shù)據(jù)存儲(chǔ)在第一輔助存儲(chǔ)設(shè)備中,使用基于存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的特征數(shù)據(jù)來管理存儲(chǔ)目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,并且從基于特征數(shù)據(jù)的數(shù)據(jù)內(nèi)容的索引數(shù)據(jù)參考特征數(shù)據(jù);以及重復(fù)確定單元,使用基于新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的特征數(shù)據(jù)和基于特征數(shù)據(jù)的數(shù)據(jù)內(nèi)容的索引數(shù)據(jù)以確定與新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)相同的存儲(chǔ)目標(biāo)數(shù)據(jù)是否已被存儲(chǔ)在第一輔助存儲(chǔ)設(shè)備中。數(shù)據(jù)管理系統(tǒng)通過參考存儲(chǔ)在第一輔助存儲(chǔ)設(shè)備中的存儲(chǔ)目標(biāo)數(shù)據(jù)的特征數(shù)據(jù)而將基于特征數(shù)據(jù)的索引數(shù)據(jù)存儲(chǔ)和保持在主存儲(chǔ)設(shè)備中,并且如果保持和存儲(chǔ)在主存儲(chǔ)設(shè)備中的索引數(shù)據(jù)達(dá)到預(yù)設(shè)量則在第二輔助存儲(chǔ)設(shè)備中存儲(chǔ)和保持存儲(chǔ)和保持在主存儲(chǔ)設(shè)備中的索引數(shù)據(jù),并且從主存儲(chǔ)設(shè)備刪除在被存儲(chǔ)和保持在第二輔助存儲(chǔ)設(shè)備中的索引數(shù)據(jù)。根據(jù)本發(fā)明的另一方面,一種存儲(chǔ)程序的計(jì)算機(jī)可讀介質(zhì),該程序包括用于使信息處理設(shè)備實(shí)現(xiàn)如下各項(xiàng)的指令,該信息處理設(shè)備包括第一輔助存儲(chǔ)設(shè)備,用于對(duì)存儲(chǔ)目標(biāo)數(shù)據(jù)進(jìn)行存儲(chǔ);第二輔助存儲(chǔ)設(shè)備,具有比第一輔助存儲(chǔ)設(shè)備的數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/寫速度;以及主存儲(chǔ)設(shè)備,具有比第一輔助存儲(chǔ)設(shè)備和第二輔助存儲(chǔ)設(shè)備的數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/寫速度:數(shù)據(jù)管理單元,將存儲(chǔ)目標(biāo)數(shù)據(jù)存儲(chǔ)在第一輔助存儲(chǔ)設(shè)備中,使用基于存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的特征數(shù)據(jù)來管理存儲(chǔ)目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,并且從基于特征數(shù)據(jù)的數(shù)據(jù)內(nèi)容的索引數(shù)據(jù)參考特征數(shù)據(jù);以及重復(fù)確定單元,使用基于新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的特征數(shù)據(jù)和基于特征數(shù)據(jù)的數(shù)據(jù)內(nèi)容的索引數(shù)據(jù),來確定與新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)相同的存儲(chǔ)目標(biāo)數(shù)據(jù)是否已被存儲(chǔ)在第一輔助存儲(chǔ)設(shè)備中。數(shù)據(jù)管理系統(tǒng)通過參考存儲(chǔ)在第一輔助存儲(chǔ)設(shè)備中的存儲(chǔ)目標(biāo)數(shù)據(jù)的特征數(shù)據(jù)而將基于特征數(shù)據(jù)的索引數(shù)據(jù)存儲(chǔ)和保持在主存儲(chǔ)設(shè)備中,并且如果存儲(chǔ)和保持在主存儲(chǔ)設(shè)備中的索引數(shù)據(jù)達(dá)到預(yù)設(shè)量,則將存儲(chǔ)和保持在主存儲(chǔ)設(shè)備中的索引數(shù)據(jù)存儲(chǔ)和保持在第二輔助存儲(chǔ)設(shè)備中,并且從主存儲(chǔ)設(shè)備刪除存儲(chǔ)和保持在第二輔助存儲(chǔ)設(shè)備中的索引數(shù)據(jù)。根據(jù)本發(fā)明的另一方面,在存儲(chǔ)系統(tǒng)中的一種數(shù)據(jù)管理方法,該存儲(chǔ)系統(tǒng)包括:第一輔助存儲(chǔ)設(shè)備,用于對(duì)存儲(chǔ)目標(biāo)數(shù)據(jù)進(jìn)行存儲(chǔ);第二輔助存儲(chǔ)設(shè)備,具有比第一輔助存儲(chǔ)設(shè)備的數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/寫速度;以及主存儲(chǔ)設(shè)備,具有比第一輔助存儲(chǔ)設(shè)備和第二輔助存儲(chǔ)設(shè)備的數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/寫速度,該數(shù)據(jù)管理方法包括:將存儲(chǔ)目標(biāo)數(shù)據(jù)存儲(chǔ)在第一輔助存儲(chǔ)設(shè)備中,使用基于存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的特征數(shù)據(jù)來管理存儲(chǔ)目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,并且通過從基于特征數(shù)據(jù)的數(shù)據(jù)內(nèi)容的索引數(shù)據(jù)參考特征數(shù)據(jù)來管理存儲(chǔ)目標(biāo)數(shù)據(jù);并且使用基于新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的特征數(shù)據(jù)和基于特征數(shù)據(jù)的數(shù)據(jù)內(nèi)容的索引數(shù)據(jù),來確定與新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)相同的存儲(chǔ)目標(biāo)數(shù)據(jù)是否已被存儲(chǔ)在第一輔助存儲(chǔ)設(shè)備中。管理存儲(chǔ)目標(biāo)數(shù)據(jù)包括:通過參考存儲(chǔ)在第一輔助存儲(chǔ)設(shè)備中的存儲(chǔ)目標(biāo)數(shù)據(jù)的特征數(shù)據(jù)而將基于特征數(shù)據(jù)的索引數(shù)據(jù)存儲(chǔ)和保持在主存儲(chǔ)設(shè)備中,并且如果存儲(chǔ)和保持在主存儲(chǔ)設(shè)備中的索引數(shù)據(jù)達(dá)到預(yù)設(shè)量,則將存儲(chǔ)和保持在主存儲(chǔ)設(shè)備中的索引數(shù)據(jù)存儲(chǔ)和保持在第二輔助存儲(chǔ)設(shè)備中,并且從主存儲(chǔ)設(shè)備刪除存儲(chǔ)和保持在第二輔助存儲(chǔ)設(shè)備中的索引數(shù)據(jù)。本發(fā)明的有益效果由于如上文描述的那樣配置本發(fā)明,所以本發(fā)明能夠提供一種存儲(chǔ)系統(tǒng),其能夠?qū)崿F(xiàn)穩(wěn)定的延時(shí)同時(shí)抑制存儲(chǔ)器大小的增加,而且還實(shí)現(xiàn)針對(duì)不同順序?qū)懭氲母咝ブ?。[圖1]圖1示出了第一示例實(shí)施例中的SSD的性能測(cè)試的結(jié)果;[圖2]圖2示出了第一示例實(shí)施例中的獲取組塊的方面;[圖3]圖3示出了第一示例實(shí)施例中的固態(tài)去重索引;[圖4]圖4是示出了第一示例實(shí)施例中的作為λ的函數(shù)的掃掠的寫高速緩存大小、相對(duì)價(jià)格以及SSD利用率;[圖5]圖5示出了第一示例實(shí)施例中的3級(jí)寫高速緩存組織;[圖6]圖6是示出了第一示例實(shí)施例中的不同寫高速緩存組織的比較的表;[圖7]圖7是示出了根據(jù)第一示例實(shí)施例中執(zhí)行的測(cè)試的寫入性能的圖表;[圖8]圖8是示出了根據(jù)第一示例系統(tǒng)中執(zhí)行的測(cè)試的寫入期間的盤利用率的圖表;[圖9]圖9示出了如下圖表,這些圖表指示根據(jù)第一示例實(shí)施例中執(zhí)行的測(cè)試的LRU流預(yù)取的有效性;[圖10]圖10是示出了根據(jù)第一示例實(shí)施例的不同解決方案的成本的表;[圖11]圖11示出了在第一示例實(shí)施例的方法與根據(jù)NPL的方法之間的比較結(jié)果的表;[圖12]圖12是示出了整個(gè)系統(tǒng)的配置的框圖,該系統(tǒng)包括第二示例實(shí)施例的存儲(chǔ)系統(tǒng);[圖13]圖13是示意地示出了第二示例實(shí)施例的存儲(chǔ)系統(tǒng)的配置的框圖;[圖14]圖14是示出了第二示例實(shí)施例的存儲(chǔ)系統(tǒng)的配置的功能框圖;[圖15]圖15是用于說明視圖14中公開的存儲(chǔ)系統(tǒng)中的數(shù)據(jù)存儲(chǔ)過程的方面的說明視圖;[圖16]圖16是用于說明視圖14中公開的存儲(chǔ)系統(tǒng)中的數(shù)據(jù)存儲(chǔ)過程的方面的說明視圖;[圖17]圖17是用于說明視圖14中公開的存儲(chǔ)系統(tǒng)中的數(shù)據(jù)獲取過程的方面的說明視圖;[圖18]圖18示出了第二示例實(shí)施例中的存儲(chǔ)數(shù)據(jù)的方面;[圖19]圖19示出了第二示例實(shí)施例中的存儲(chǔ)索引數(shù)據(jù)的方面;以及[圖20]圖20是示出了根據(jù)補(bǔ)充注釋I的存儲(chǔ)系統(tǒng)的配置的框圖。具體實(shí)施例方式〈第一示例實(shí)施例〉在本發(fā)明中給出呈現(xiàn)固態(tài)去重索引(SSDI),它是一種用于查找去重的、被設(shè)計(jì)為置于基于閃存的SSD上的結(jié)構(gòu)。在本發(fā)明中的解決方案沒有先前解決方案的弊端——即使在亂序去重期間它仍然是有效的、具有穩(wěn)定的查找操作低延時(shí),并且不會(huì)消耗大量RAM。然而,與提出用于去重查找的另一基于SSD的結(jié)構(gòu)的近來工作不同,在本發(fā)明的設(shè)計(jì)中,還考慮了SSD的有限擦除和寫入持久度,并且量化了解決方案所需要的RAM。本說明書組織如下。首先將討論對(duì)基于閃存的SSD的讀/寫操作的效率。然后將描述封閉哈希方案,并且將給出將其置于SSD上所產(chǎn)生的問題。然后將給出SSDI,它是一種滿足性能要求的詞典結(jié)構(gòu)。然后將評(píng)估提出的解決方案的性能并且對(duì)其與備選方式進(jìn)行比較。繼而將給出相關(guān)工作,最終將提供結(jié)論。(SSD特性)為了使得將重復(fù)標(biāo)識(shí)結(jié)構(gòu)放置于SSD上成為可能,需要找到一種SSD設(shè)備,其可以每秒服務(wù)于足夠數(shù)目的少量隨機(jī)讀取。SSD設(shè)備的其它特征對(duì)于本發(fā)明而言不是如此重要。例如,本發(fā)明不需要功率故障抵御,因?yàn)轭A(yù)計(jì)結(jié)構(gòu)可以基于數(shù)據(jù)盤上保持的信息而被重建。此外,設(shè)備應(yīng)當(dāng)相當(dāng)廉價(jià),以降低本發(fā)明的系統(tǒng)所使用的硬件的價(jià)格。將給出在80GBIntelX25-MSATASSD上和在ITBHitachiUltra-start7200RPMSATAHDD上運(yùn)行的性能測(cè)試的結(jié)果。在測(cè)試之前,已經(jīng)用隨機(jī)數(shù)據(jù)填充SSD設(shè)備(SSD的狀態(tài)有時(shí)對(duì)它的性能具有影響、例如盒外設(shè)備上的寫帶寬可以比在填充設(shè)備之后高得多)。使用直接IO和本機(jī)命令排隊(duì)在Linux上運(yùn)行測(cè)試;關(guān)閉SSD設(shè)備上的寫高速緩存。結(jié)果在圖1中給出。隨機(jī)讀和隨機(jī)寫的特性對(duì)于HDD而言是相似的,而在SSD上,隨機(jī)寫比隨機(jī)讀要慢得多。SSD比盤(即對(duì)于更小塊而言)更快達(dá)到最大帶寬。少量SSD讀以很高的IOPS速率實(shí)現(xiàn)良好帶寬。在另一方面,少量SSD寫特別不高效。SSD寫帶寬隨著最多為擦除塊大小(64KB)的請(qǐng)求大小而增長(zhǎng)。如果它們具有與擦除塊的大小相等或者更大的大小,則隨機(jī)寫實(shí)現(xiàn)最佳帶寬。之所以會(huì)這樣是因?yàn)?為了寫入少量請(qǐng)求,閃存事務(wù)層(FTL)通常需要擦除并且再次寫入整個(gè)擦除塊(少量順序?qū)懣梢杂稍O(shè)備的寫高速緩存加以緩沖)。較為廉價(jià)的設(shè)備中的FTL通常在擦除塊級(jí)工作,否則FTL將消耗SSD的太多內(nèi)部RAM用于保持轉(zhuǎn)譯。一般而言,SSD處理的少量隨機(jī)讀取的數(shù)目高;然而為了實(shí)現(xiàn)合理寫帶寬,需要在更大塊中發(fā)出SSD寫。(封閉哈希)哈希表是用于去重詞典的一個(gè)顯然的選擇。數(shù)據(jù)組塊由其哈希標(biāo)識(shí),因此數(shù)據(jù)組塊的哈希將是哈希表中的鍵。在每個(gè)哈希表的條目中,保持用于一個(gè)組塊的元數(shù)據(jù)記錄。由于對(duì)于每個(gè)組塊,需要至少保持它的哈希(例如SHA-1具有20字節(jié),SHA-256具有32字節(jié))和它在盤上的局部化,所以每個(gè)元數(shù)據(jù)記錄將消耗很少字節(jié)。從封閉哈希方案開始討論本發(fā)明的結(jié)構(gòu),稍后表明它為什么不能直接用于重復(fù)的基于閃存的詞典。在封閉哈希中,存在哈希函數(shù)將鍵變換為保存條目的表中的索引。為了高效操作,哈希表需要條目的特定部分是空閑的。由于在本發(fā)明中使用的元數(shù)據(jù)記錄很大,所以在表中直接按照值來存儲(chǔ)記錄將是低效的。為了避免該點(diǎn),本發(fā)明使用兩個(gè)表哈希表和元數(shù)據(jù)表(見圖2)。哈希函數(shù)對(duì)鍵確定哈希表中的索引,使用線性探測(cè)來解決沖突。在哈希表中,僅保持指向元數(shù)據(jù)表的索引。在查找期間,通過從元數(shù)據(jù)表讀取鍵并且將其與期望鍵進(jìn)行比較來校驗(yàn)來自哈希表的條目。從具有哈希函數(shù)給出的索引的條目開始,逐個(gè)檢查條目直至找到匹配的元數(shù)據(jù)記錄,或者直至在哈希表中存在空條目??疾鞂⑸鲜鼋Y(jié)構(gòu)放置于基于閃存的固態(tài)驅(qū)動(dòng)器上的效率。根據(jù)上文描述的觀察,少量隨機(jī)讀取是高效的。僅有的顧慮是在查找期間需要校驗(yàn)哈希表和元數(shù)據(jù)表二者。從哈希表讀取是高效的,因?yàn)閷⒑蜻x分組在一起并且單個(gè)讀取請(qǐng)求足夠了。然而,不能在一個(gè)請(qǐng)求中讀取候選的元數(shù)據(jù)記錄,因?yàn)樗鼈冸S機(jī)放置于整個(gè)元數(shù)據(jù)表內(nèi)。對(duì)于每個(gè)候選,必須發(fā)出用于從元數(shù)據(jù)表獲得它的鍵的附加讀取請(qǐng)求。為了校驗(yàn)給定的鍵是否存在而需要的讀取數(shù)目將隨著哈希表的負(fù)荷因子增長(zhǎng)而增加。例如對(duì)于圖2所示情況將在查找組塊I(Chunk1)期間需要從元數(shù)據(jù)表的兩個(gè)讀取。插入新條目引起另一更為嚴(yán)重的問題。哈希的分布是均勻的,因此在插入期間沒有空間局部性。用于隨機(jī)寫的IOPS數(shù)目沒有使得在每個(gè)插入時(shí)更新SSD結(jié)構(gòu)成為可能。少量隨機(jī)寫入是高成本的,它們的帶寬差并且可能造成更快損耗,因?yàn)椴脸臄?shù)據(jù)量比實(shí)際修改和寫入的數(shù)據(jù)大得多。問題主要與哈希表有關(guān),因?yàn)樵獢?shù)據(jù)表可能由批量寫來更新。在本發(fā)明中,需要以寫入請(qǐng)求的大小更大、優(yōu)選地等于擦除塊的大小這樣的方式組織結(jié)構(gòu)。(固態(tài)去重索引)這里將描述固態(tài)去重索引,它是滿足去重性能要求的基于閃存的結(jié)構(gòu)。該結(jié)構(gòu)克服在上文段落的結(jié)尾提到的問題。本發(fā)明引入額外過濾以防止從元數(shù)據(jù)表的不必要讀取。每個(gè)哈希表?xiàng)l目將不僅保持指向元數(shù)據(jù)表的索引而且保持過濾器,該過濾器是來自該元數(shù)據(jù)的鍵中的部分。僅在過濾器位與來自查找的鍵的對(duì)應(yīng)位相匹配的情況下,才會(huì)執(zhí)行從元數(shù)據(jù)表的讀取。對(duì)于圖3所示情形在查找塊I(組塊D期間,除非f(鍵J=f(鍵2)則才會(huì)讀取用于鍵2的元數(shù)據(jù)記錄。注意,這樣的過濾有效降低讀取具有錯(cuò)誤鍵的元數(shù)據(jù)記錄的概率。即使為過濾器省出每個(gè)條目中的僅十位,讀取具有錯(cuò)誤鍵的元數(shù)據(jù)記錄的概率仍然為O.1/1024。為了通過擴(kuò)大哈希表來實(shí)現(xiàn)相同減少率,它將必須要大許多倍。閃存架構(gòu)使哈希表就地更新是不可能的。只有大塊的寫入產(chǎn)生令人滿意的帶寬。因此需要在批量模式中完成哈希表的更新。為了實(shí)現(xiàn)該點(diǎn),本發(fā)明引入RAM中保持的寫高速緩存。在更新期間,新的鍵僅被插入這樣的高速緩存中。組織寫高速緩存為哈希映射以允許高效鍵查找。在搜尋鍵之時(shí),除了校驗(yàn)哈希表之外還需要校驗(yàn)寫高速緩存。在圖3中,將從寫高速緩存獲得用于鍵4的元數(shù)據(jù)記錄的索引。注意,由于整個(gè)寫高速緩存保持于存儲(chǔ)器中,所以附加校驗(yàn)對(duì)性能具有可忽略不計(jì)的影響。當(dāng)高速緩存全負(fù)荷時(shí),執(zhí)行掃掠操作一通過應(yīng)用所有高速緩存的修改來重寫哈希表從而在該過程中清除寫高速緩存。為了使掃掠實(shí)施更簡(jiǎn)單,在本發(fā)明中將哈希表劃分成固定大小的不相交區(qū)域。大小應(yīng)當(dāng)小到足以使得有可能向存儲(chǔ)器中讀取整個(gè)區(qū)域。相應(yīng)地劃分寫高速緩存,因而每個(gè)區(qū)域在RAM中具有它自己的可以獨(dú)立掃掠的獨(dú)立高速緩存。還需要修改元數(shù)據(jù)表的組織以防止原位更新。為此,首先將描述基于盤的去重存儲(chǔ)系統(tǒng)中的數(shù)據(jù)組織。所有研究的系統(tǒng)引入用于數(shù)據(jù)組塊的容器的抽象化。提出的用于這樣的容器的名稱在不同系統(tǒng)中變化它們稱為場(chǎng)地(arena)、兆字塊、容器和同步運(yùn)行組成容器(SCC)。雖然數(shù)據(jù)在容器中的具體組織在每個(gè)系統(tǒng)中不同,但是容器旨在于保持于盤上的分離文件中。以如下方式執(zhí)行對(duì)容器的操作,該方式用于在訪問容器文件時(shí)保證依序讀/與,這允許盤的聞效使用。僅開放少數(shù)容器用于追加,新寫入針對(duì)它們,因此向容器的新寫入是依序的(與日志結(jié)構(gòu)化文件系統(tǒng)相似)。如果組塊以它們?cè)缺粚懭氲南嗤樞騺碜x取,則從容器的讀取也是依序的。修改或者同步由系統(tǒng)保持的組塊的操作立刻更新整個(gè)容器(例如標(biāo)記組塊為停用、收回由停用組塊占用的空間)。本發(fā)明的設(shè)計(jì)遵循容器方式。本發(fā)明將保持用于每個(gè)容器的分離元數(shù)據(jù)文件而不是一個(gè)全局元數(shù)據(jù)表。例如在圖3中有三個(gè)容器(A,B,C),它們中的每個(gè)容器具有一個(gè)對(duì)應(yīng)元數(shù)據(jù)文件。元數(shù)據(jù)由與元數(shù)據(jù)表相同的記錄(組塊的鍵和組塊在容器中的局部化)構(gòu)成。每個(gè)元數(shù)據(jù)記錄與它的容器的修改一起更新。(僅RAM的寫高速緩存的限制)現(xiàn)代MLCNAND閃存的寫入持久度通常允許5k_10k的編程-擦除循環(huán)。在多年內(nèi)測(cè)量系統(tǒng)壽命時(shí),保證針對(duì)哈希表掃掠而執(zhí)行的寫入不會(huì)引起閃存設(shè)備的磨損完,這需要RAM中的大量寫高速緩存。以下等式呈現(xiàn)在寫高速緩存的大小、SSD將在其之后變得不可用的時(shí)間和掃掠消耗的SSD的讀/寫帶寬之間的依存性。[數(shù)學(xué)式I]權(quán)利要求1.一種存儲(chǔ)系統(tǒng),包括:第一輔助存儲(chǔ)設(shè)備,用于對(duì)存儲(chǔ)目標(biāo)數(shù)據(jù)進(jìn)行存儲(chǔ);第二輔助存儲(chǔ)設(shè)備,具有比所述第一輔助存儲(chǔ)設(shè)備的數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/與速度;主存儲(chǔ)設(shè)備,具有比所述第一輔助存儲(chǔ)設(shè)備和所述第二輔助存儲(chǔ)設(shè)備的所述數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/寫速度;數(shù)據(jù)管理單元,將存儲(chǔ)目標(biāo)數(shù)據(jù)存儲(chǔ)在所述第一輔助存儲(chǔ)設(shè)備中,使用基于所述存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的特征數(shù)據(jù)來管理所述存儲(chǔ)目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,并且從基于所述特征數(shù)據(jù)的數(shù)據(jù)內(nèi)容的索引數(shù)據(jù)參考所述特征數(shù)據(jù);以及重復(fù)確定單元,使用基于新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的所述特征數(shù)據(jù)以及基于所述特征數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容的所述索引數(shù)據(jù),來確定與所述新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)相同的存儲(chǔ)目標(biāo)數(shù)據(jù)是否已被存儲(chǔ)在所述第一輔助存儲(chǔ)設(shè)備中,其中所述數(shù)據(jù)管理單元通過參考存儲(chǔ)在所述第一輔助存儲(chǔ)設(shè)備中的所述存儲(chǔ)目標(biāo)數(shù)據(jù)的所述特征數(shù)據(jù)而將基于所述特征數(shù)據(jù)的所述索引數(shù)據(jù)存儲(chǔ)和保持在所述主存儲(chǔ)設(shè)備中,并且如果存儲(chǔ)和保持在所述主存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)達(dá)到預(yù)設(shè)量,則將存儲(chǔ)和保持在所述主存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中,并且從所述主存儲(chǔ)設(shè)備刪除被存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的存儲(chǔ)系統(tǒng),其中:如果存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)達(dá)到所述預(yù)設(shè)量,所述數(shù)據(jù)管理單元對(duì)存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)的多個(gè)單元進(jìn)行合并,將合并后的所述數(shù)據(jù)再次存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中,并且從所述第二輔助存儲(chǔ)設(shè)備刪除合并前的所述索引數(shù)據(jù)。3.根據(jù)權(quán)利要求2所述的存儲(chǔ)系統(tǒng),其中所述數(shù)據(jù)管理單元對(duì)存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)的所述多個(gè)單元與存儲(chǔ)和保持在所述主存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)進(jìn)行合并,并且將合并后的所述數(shù)據(jù)再次存儲(chǔ)在所述第二輔助存儲(chǔ)設(shè)備中,并且從所述第二輔助存儲(chǔ)設(shè)備和所述主存儲(chǔ)設(shè)備刪除合并前的所述索引數(shù)據(jù)。4.根據(jù)權(quán)利要求2所述的存儲(chǔ)系統(tǒng),其中所述數(shù)據(jù)管理單元將基于所述索引數(shù)據(jù)的數(shù)據(jù)內(nèi)容的元素?cái)?shù)據(jù)存儲(chǔ)在所述主存儲(chǔ)設(shè)備中,所述元素?cái)?shù)據(jù)用于確定是否存在被存儲(chǔ)在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)。5.根據(jù)權(quán)利要求4所述的存儲(chǔ)系統(tǒng),其中當(dāng)所述數(shù)據(jù)管理單元對(duì)存儲(chǔ)在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)的所述單元進(jìn)行合并并且將合并后的所述數(shù)據(jù)再次存儲(chǔ)在所述第二輔助存儲(chǔ)設(shè)備中時(shí),所述數(shù)據(jù)管理單元釋放存儲(chǔ)在所述主存儲(chǔ)設(shè)備中的所述索弓I數(shù)據(jù)的所述元素?cái)?shù)據(jù)。6.根據(jù)權(quán)利要求1所述的存儲(chǔ)系統(tǒng),其中所述第一輔助存儲(chǔ)設(shè)備是硬盤驅(qū)動(dòng)器,并且所述第二輔助存儲(chǔ)設(shè)備是固態(tài)驅(qū)動(dòng)器(SSD)。7.一種存儲(chǔ)程序的計(jì)算機(jī)可讀介質(zhì),所述程序包括用于使信息處理設(shè)備實(shí)現(xiàn)以下各項(xiàng)的指令,所述信息處理設(shè)備包括:第一輔助存儲(chǔ)設(shè)備,用于對(duì)存儲(chǔ)目標(biāo)數(shù)據(jù)進(jìn)行存儲(chǔ);第二輔助存儲(chǔ)設(shè)備,具有比所述第一輔助存儲(chǔ)設(shè)備的數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/寫速度;以及主存儲(chǔ)設(shè)備,具有比所述第一輔助存儲(chǔ)設(shè)備和所述第二輔助存儲(chǔ)設(shè)備的所述數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/寫速度:數(shù)據(jù)管理單元,將存儲(chǔ)目標(biāo)數(shù)據(jù)存儲(chǔ)在所述第一輔助存儲(chǔ)設(shè)備中,使用基于所述存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的特征數(shù)據(jù)來管理所述存儲(chǔ)目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,并且從基于所述特征數(shù)據(jù)的數(shù)據(jù)內(nèi)容的索引數(shù)據(jù)參考所述特征數(shù)據(jù);以及重復(fù)確定單元,使用基于新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的所述特征數(shù)據(jù)以及基于所述特征數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容的所述索引數(shù)據(jù),來確定與所述新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)相同的存儲(chǔ)目標(biāo)數(shù)據(jù)是否已被存儲(chǔ)在所述第一輔助存儲(chǔ)設(shè)備中,其中所述數(shù)據(jù)管理單元通過參考存儲(chǔ)在所述第一輔助存儲(chǔ)設(shè)備中的所述存儲(chǔ)目標(biāo)數(shù)據(jù)的所述特征數(shù)據(jù)而將基于所述特征數(shù)據(jù)的所述索引數(shù)據(jù)存儲(chǔ)和保持在所述主存儲(chǔ)設(shè)備中,并且如果存儲(chǔ)和保持在所述主存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)達(dá)到預(yù)設(shè)量,則將存儲(chǔ)和保持在所述主存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中,并且從所述主存儲(chǔ)設(shè)備刪除被存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)。8.根據(jù)權(quán)利要求7所述的存儲(chǔ)所述程序的計(jì)算機(jī)可讀介質(zhì),其中:如果存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)達(dá)到所述預(yù)設(shè)量,所述數(shù)據(jù)管理單元對(duì)存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)的多個(gè)單元進(jìn)行合并,將合并后的所述數(shù)據(jù)再次存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中,并且從所述第二輔助存儲(chǔ)設(shè)備刪除合并前的所述索引數(shù)據(jù)。9.一種存儲(chǔ)系統(tǒng)中的數(shù)據(jù)管理方法,所述存儲(chǔ)系統(tǒng)包括:第一輔助存儲(chǔ)設(shè)備,用于對(duì)存儲(chǔ)目標(biāo)數(shù)據(jù)進(jìn)行存儲(chǔ);第二輔助存儲(chǔ)設(shè)備,具有比所述第一輔助存儲(chǔ)設(shè)備的數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/寫速度;以及主存儲(chǔ)設(shè)備,具有比所述第一輔助存儲(chǔ)設(shè)備和所述第二輔助存儲(chǔ)設(shè)備的所述數(shù)據(jù)讀/寫速度更高的數(shù)據(jù)讀/寫速度,所述方法包括:將存儲(chǔ)目標(biāo)數(shù)據(jù)存儲(chǔ)在所述第一輔助存儲(chǔ)設(shè)備中,使用基于所述存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的特征數(shù)據(jù)來管理所述存儲(chǔ)目標(biāo)數(shù)據(jù)的存儲(chǔ)位置,并且通過從基于所述特征數(shù)據(jù)的數(shù)據(jù)內(nèi)容的索引數(shù)據(jù)參考所述特征數(shù)據(jù)來管理所述存儲(chǔ)目標(biāo)數(shù)據(jù);以及使用基于新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)的數(shù)據(jù)內(nèi)容的所述特征數(shù)據(jù)以及基于所述特征數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容的所述索引數(shù)據(jù),來確定與所述新近將被存儲(chǔ)的存儲(chǔ)目標(biāo)數(shù)據(jù)相同的存儲(chǔ)目標(biāo)數(shù)據(jù)是否已被存儲(chǔ)在所述第一輔助存儲(chǔ)設(shè)備中,其中所述管理所述存儲(chǔ)目標(biāo)數(shù)據(jù)包括:通過參考存儲(chǔ)在所述第一輔助存儲(chǔ)設(shè)備中的所述存儲(chǔ)目標(biāo)數(shù)據(jù)的所述特征數(shù)據(jù)而將基于所述特征數(shù)據(jù)的所述索引數(shù)據(jù)存儲(chǔ)和保持在所述主存儲(chǔ)設(shè)備中,以及如果存儲(chǔ)和保持在所述主存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)達(dá)到預(yù)設(shè)量,則將存儲(chǔ)和保持在所述主存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中,并且從所述主存儲(chǔ)設(shè)備刪除被存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)。10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)管理方法,其中所述管理存儲(chǔ)目標(biāo)數(shù)據(jù)包括:如果存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)達(dá)到所述預(yù)設(shè)量,則對(duì)存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中的所述索引數(shù)據(jù)的多個(gè)單元進(jìn)行合并,將合并后的所述數(shù)據(jù)再次存儲(chǔ)和保持在所述第二輔助存儲(chǔ)設(shè)備中,并且從所述第二輔助存儲(chǔ)設(shè)備刪除合并前的所述索引數(shù)據(jù)。全文摘要存儲(chǔ)系統(tǒng)包括第一輔助存儲(chǔ)設(shè)備、第二輔助存儲(chǔ)設(shè)備和主存儲(chǔ)系統(tǒng)并且還包括數(shù)據(jù)管理單元,其通過參考存儲(chǔ)在第一輔助存儲(chǔ)設(shè)備中的存儲(chǔ)目標(biāo)數(shù)據(jù)的特征數(shù)據(jù)而將基于特征數(shù)據(jù)的索引數(shù)據(jù)存儲(chǔ)和保持在主存儲(chǔ)設(shè)備中。并且如果存儲(chǔ)和保持在主存儲(chǔ)設(shè)備中的索引數(shù)據(jù)達(dá)到預(yù)設(shè)量,則將存儲(chǔ)和保持在主存儲(chǔ)設(shè)備中的索引數(shù)據(jù)存儲(chǔ)和保持在第二輔助存儲(chǔ)設(shè)備中,并且從主存儲(chǔ)設(shè)備刪除被存儲(chǔ)和保持在第二輔助存儲(chǔ)設(shè)備中的索引數(shù)據(jù)。文檔編號(hào)G06F3/06GK103080910SQ20118004250公開日2013年5月1日申請(qǐng)日期2011年8月25日優(yōu)先權(quán)日2010年9月9日發(fā)明者J·薩克澤普科維斯基,M·韋爾尼克基,C·達(dá)布尼克基申請(qǐng)人:日本電氣株式會(huì)社