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

存儲(chǔ)系統(tǒng)的制作方法

文檔序號(hào):6361550閱讀:263來源:國(guó)知局
專利名稱:存儲(chǔ)系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種存儲(chǔ)系統(tǒng),并且具體地涉及一種具有數(shù)據(jù)去重(deduplication)的存儲(chǔ)系統(tǒng)。
背景技術(shù)
去重的主要價(jià)值顯然地在于減少所需存儲(chǔ)空間,這轉(zhuǎn)譯成提高的可靠性和由于減少的功率消耗和總體更低的設(shè)施成本所致的顯著操作節(jié)省。然而,為了這些節(jié)省具體化,需要考慮為了不僅保持備份數(shù)據(jù)而且保持所有類型的元數(shù)據(jù)(例如,備份應(yīng)用元數(shù)據(jù)、中間級(jí)元數(shù)據(jù)(如文件系統(tǒng))以及用于定位和去重的恰當(dāng)后端元數(shù)據(jù))而必需的總存儲(chǔ)空間。向圖片添加元數(shù)據(jù)不僅對(duì)于估計(jì)由去重產(chǎn)生的節(jié)省是必要的,而且經(jīng)常改變特定存儲(chǔ)系統(tǒng)中的各種去重備選的相關(guān)效用。如今,用于將備份數(shù)據(jù)劃分成塊組(chunk)以進(jìn)行去重的標(biāo)準(zhǔn)技術(shù)是內(nèi)容限定的塊組化(⑶C)(NPL 16,20) ο它使用Rabin指紋(NPL 22)以選擇輸入流中的塊組邊界來產(chǎn)生可變長(zhǎng)度的塊組。它不維持任何狀態(tài),并且它在原有流中存在數(shù)據(jù)插入和刪除時(shí)有效,因?yàn)樵谙乱粔K分割器運(yùn)行時(shí)回調(diào)未修改的切割點(diǎn),從而識(shí)別未改變的塊組以用于去重。另外,為了良好地工作,CDC無(wú)需知道備份流邊界和它們的排序。這與商業(yè)設(shè)置的現(xiàn)實(shí)相得益彰,其中標(biāo)準(zhǔn)備份應(yīng)用通常假設(shè)“啞”存儲(chǔ)后端,這使得該信息向后端的傳遞不可能。引用列表非專利文獻(xiàn)

NPL I:NPL 1:EMC Corp.EMC Centera:content addressed storage system,2008 年 I月,http://www.emc.com/products/family/emccentera-family.htm -openfolder =platform。NPL 2:ARONOVICH, L,ASHER, R.,BACHMAT,E.,BITNER,H.,HIRSCH,M.,和 KLEIN,S.T., The design of a similarity based deduplication system.SYSTOR ' 09 的Proceedings of SYSTOR 2009:The Israeli Experimental Systems Conference (紐約,NY,USA,2009),ACM,pp.1-14。NPL 3:BARRET0,JO A.,和 FERREIRA,P.,Efficient file storage usingcontent-based indexing.SOSPr 05 的 Proceedings of the twentieth ACM symposiumon Operating systems principles (紐約,NY,USA,2005),ACM,pp.1-9。NPL 4:BARRET0,JO A.,和 FERREIRA,P.,Efficient locally trackablededuplication in replicated systems.Middleware' 09 的 Proceedings of the ACM/IFIP/USENIX 10th international conference on Middleware (桕林,海德堡,2009),Springer-Verlag, pp.103-122。NPL 5:BHAGWAT, D.,ESHGHI,K.,LONG,D.D.E.,和 LILLIBRIDGE, M.,Extremebinning!Scalable,parallel deduplication for chunk-based file backup0
NPL 6:BHAGWAT, D.,POLLACK, Κ.,LONG,D.D.Ε.,SCHWARZ,Τ.,MILLER, Ε.L,和PARISjJ.-F.,Providing high reliability in a minimum redundancy archival storagesystem.MASCOTS ! 06 的 Proceedings of the 14th IEEE International Symposiumon Modeling,Analysis, and Simulation (Washington, DC,USA,2006),IEEE ComputerSociety, pp.413-421。NPL 7:B0BBARJUNG, D.R., JAGANNATHAN, S.,和 DUBNICKI, C., Improvingduplicate elimination in storage systems, Trahs.Storage 2,4(2006),424-448。NPL 8:C0X,LP.,MURRAY,C.D.,和 N0BLE,B.D.,Pastiche:making backup cheapand easy, OSDI ! 02 的 Proceedings of the 5th symposium on Operating systemsdesign and implementation (紐約,NY,USA,2002),ACM,pp.285-298。NPL 9:DUBNICKI,C.,GRYZ, L.,HELDT, L.,KACZMARCZYK,M.,KILIAN,W.,STRZELCZAK,P.,SZCZEPKOWSKI,J.,UNGUREANU,C.,和 WELNICKI,M.,Hydrastor:a scalablesecondary storage,F(xiàn)AST' 09 的 Proceedings of the 7th conference on File andstorage technologies (伯克利,CA,USA,2009),USENIX Association,pp.197-210。NPL 10:KRUUS, E.,UNGUREANU,C.,和 DUBNICKI,C.,Bimodal content definedchunking for backup streams,F(xiàn)AST(2010),pp.239-252。NPL 11:KULKARNI, P.,D0UGLIS,F(xiàn).,LAVOIE, J.,和 TRACEY,J.M.Redundancyelimination within large collections of files, ATECr 04 的 Proceedings of theannual conference on USENIX Annual Technical Conference (伯克利,CA,USA,2004),USENIX Association,pp.5-5.
NPL 12:LEE,W.,和 PARK,C.,An adaptive chunking method for personaldata backup and sharing,2010 年 2 月,8th USENIX Conference on File and StorageTechnologies(FAST 10) poster session。NPL 13:LILLIBRIDGE, M.,ESHGHI,K.,BHAGWAT, D.,DEOLALIKAR,V.,TREZIS, G.,和CAMBLE,P.Sparse indexing:Large scale,inline deduplication using sampling andlocality, FAST(2009),pp.111-123。NPL 14:MANDAGERE,N.,ZHOU, P.,SMITH,M.A.,和 UTTAMCHANDANI,S.,Demystifying data deduplication,Companion' 08 的 Proceedings of the ACM/IFIP/USENIX Middleware 1 08Conference Companion (紐約,NY, USA,2008),ACM,pp.12-17。NPL 15:MEISTER,D.和 BRINKMANN,A.,Mult1-level comparison of datadeduplication in a backup scenario,SYSTORr 09 的 Proceedings of SYSTOR 2009:TheIsraeli Experimental Systems Conference (紐約,USA,2009),ACM,pp.1-12。NPL 16:MUTHITACHAR0EN, A.,CHEN, B.,和 MAZIRES,D.,A low-bandwidthnetwork file system, Proceedings of the 18th ACMSymposium on Operating SystemsPrinciples (SOSPr 01 (紐約,NY,USA,2001),ACM,pp.174-187。NPL 17:NATH,P.,URGAONKAR,B.,和 SIVASUBRAMANIAM, A.,Evaluating theusefulness of content addressable storage for high-performance data intensiveapplications,HPDCr 08 的Proceedings of the 17th international symposium on Highperformance distributed computing (紐約,NY,USA,2008),ACM,pp.35-44。
NPL 18:PARK,Κ.,IHM, S.,BOWMAN, M.,和 PAI,V.S.,Supporting practicalcontent-addressable caching with czip compression, ATC f 07 中,2007 USENIXAnnual Technical Conference on Proceedings of the USENIX Annual TechnicalConference (伯克利,CA,USA,2007),USENIX Association,pp.1-14。NPL 19:P0LICR0NIADES,C.,和 PRATT,1.,Alternatives for detectingredundancy in storage systems data, ATEC ! 04 的 Proceedings of the annualconference on USENIX Annual Technical Conference (伯克利,CA,USA,2004),USENIXAssociation,pp.6—6。NPL 20:P0RTS,D.R.K.,CLEMENTS,A.T.,和 DEMAINE,E.D.Persifs:a versionedfile system with an efficient representation,SOSP' 05 的 Proceedings of thetwentieth ACM symposium on Operating systems principles (紐約,NY,USA,2005),ACM,pp.1-2。NPL 21:QUINLAN, S.,和 D0RWARD, S.Venti:a new approach to archivalstorage,F(xiàn)irst USENIX conference on File and Storage Technologies (蒙特里,CA,2002),USENIX Association,pp.89-101。NPL 22:RABIN, M.,F(xiàn)ingerprinting by random polynomials, Tech.Rep.TR-15-81(1981)0NPL 23:RHEA,S.,COX, R.,和 PESTEREV,A.,F(xiàn)ast,inexpensivecontent-addressed storage in foundation, Proceedings of the 2008 USENIX AnnualTechnical Conference (伯克利,CA,USA,2008),USENIX Association,pp.143-156。NPL 24:SPRING,N.T.,和WETHERALL,D.,Aprotocol_independent technique foreliminating redundant network traffic,SIGCOMM Comput.Commun.Rev.30,4(2000),87-95。NPL 25:T0LIA, N.,K0ZUCH,M.,SATYANARAYANAN,M.,KARP, B.,BRESS0UD,T.,和 PERRIG, A., Opportunistic use of content addressable storage for distributedfile systems,PROCEEDINGS OF THE 2003 USENIX ANNUAL TECHNICAL CONFERENCE(2003),pp.127-140。NPL 26:WEI, J.,JIANG, H.,ZHOU, K.,和 FENG,D.Mad2:Ascalablehigh-throughput exact deduplication approach for network backup services,Proceedings of the 26th IEEE Symposium on Massive Storage Systems andTechnologies (MSST)(2010 年 5 月) NPL 27:Y0U,L L,POLLACK, K.T.,和 LONG,D.D.E.Deep store:An archivalstorage system architecture.1n ICDEr 05:Proceedings of the 21st InternationalConference on Data Engineering(Washington,DC,USA,2005),IEEE Computer Society,pp.804-8015。NPL 28:ZHU,B.,LI,K.,AND PATTERSON,H.,Avoiding the disk bottleneck inthe data domain deduplication file system,F(xiàn)AST' 08 的 Proceedings of the 6thUSENIX Conference on File and Storage Technologies (伯克利,CA,USA,2008),USENIXAssociation,pp.1—14。

發(fā)明內(nèi)容
技術(shù)問題雖然CDC產(chǎn)生的塊組有可變長(zhǎng)度,但是它們的實(shí)際大小集中在預(yù)期的塊組大小值的周圍,該預(yù)期的塊組大小值是CDC算法的參數(shù)。當(dāng)使用CDC時(shí),對(duì)于任何給定的備份流序列和特定后端,存在提供最佳去重的最優(yōu)預(yù)期塊組值。這一選擇依賴于后續(xù)流中的數(shù)據(jù)修改的類型和頻率以及在塊組表示上施加的元數(shù)據(jù)開銷。由于元數(shù)據(jù)開銷,因此使用小塊組并非最優(yōu),另外,小塊組也往往負(fù)面地影響性能。另一方面,較大塊組也經(jīng)常在后續(xù)備份中的修改的粒度為細(xì)粒度時(shí)次優(yōu)。這些折衷提示選擇應(yīng)當(dāng)在給定存儲(chǔ)系統(tǒng)中良好地起作用的適度的預(yù)期塊組大小。然而可以經(jīng)常比這做得更好,因?yàn)閭浞萘髦械母淖兞6燃词箤?duì)于一個(gè)備份序列也并不恒定(更不用說跨越多個(gè)無(wú)關(guān)備份序列)。這樣,本發(fā)明的示例目的是提供一種能夠?qū)崿F(xiàn)更高效數(shù)據(jù)去重的存儲(chǔ)系統(tǒng)。對(duì)問題的解決方案根據(jù)本發(fā)明的一個(gè)方面,一種存儲(chǔ)系統(tǒng)包括:塊(block)數(shù)據(jù)去重單元,其在存儲(chǔ)設(shè)備中存儲(chǔ)通過將數(shù)據(jù)流劃分成任意大小的塊而生成的塊數(shù)據(jù),基于塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的地址數(shù)據(jù)指向該塊數(shù)據(jù),并且當(dāng)嘗試在存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的塊數(shù)據(jù)的地址數(shù)據(jù)作為另一條塊數(shù)據(jù)存儲(chǔ)在存儲(chǔ)設(shè)備中,以由此執(zhí)行塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。該存儲(chǔ)系統(tǒng)還包括:子塊數(shù)據(jù)去重單元,其在存儲(chǔ)設(shè)備中存儲(chǔ)通過將塊數(shù)據(jù)進(jìn)一步劃分成多條數(shù)據(jù)而生成的子塊數(shù)據(jù),基于子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的一條子地址數(shù)據(jù)指向多條子塊數(shù)據(jù)中的每一條子塊數(shù)據(jù),在預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)包括多條子地址數(shù)據(jù)的子地址數(shù)據(jù)組,并且當(dāng)嘗試在存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條子塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的子塊數(shù)據(jù)的一條子地址數(shù)據(jù)作為另一條子塊數(shù)據(jù)存儲(chǔ)在預(yù)定存儲(chǔ)設(shè)備中,以由此執(zhí)行子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。根據(jù)本發(fā)明的另一方面,一種存儲(chǔ)程序的計(jì)算機(jī)可讀介質(zhì),該程序包括用于使信息處理器設(shè)備實(shí)現(xiàn)以下單元的指令:塊數(shù)據(jù)去重單元,其在存儲(chǔ)設(shè)備中存儲(chǔ)通過將數(shù)據(jù)流劃分成任意大小的塊而生成的塊數(shù)據(jù),基于塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的地址數(shù)據(jù)指向該塊數(shù)據(jù),并且當(dāng)嘗試在存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的塊數(shù)據(jù)的地址數(shù)據(jù)作為另一條塊數(shù)據(jù)存儲(chǔ)在存儲(chǔ)設(shè)備中,以由此執(zhí)行塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除;以及子塊數(shù)據(jù)去重單元,其在存儲(chǔ)設(shè)備中存儲(chǔ)通過將塊數(shù)據(jù)進(jìn)一步劃分成多條數(shù)據(jù)而生成的子塊數(shù)據(jù),基于子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的一條子地址數(shù)據(jù)指向多條子塊數(shù)據(jù)中的每一條子塊數(shù)據(jù),在預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)包括多條子地址數(shù)據(jù)的子地址數(shù)據(jù)組,并且當(dāng)嘗試在存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條子塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的子塊數(shù)據(jù)的一條子地址數(shù)據(jù)作為另一條子塊數(shù)據(jù)存儲(chǔ)在預(yù)定存儲(chǔ)設(shè)備中,以由此執(zhí)行子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。根據(jù)本發(fā)明的另一方面,一種信息處理方法包括:在存儲(chǔ)設(shè)備中存儲(chǔ)通過將數(shù)據(jù)流劃分成任意大小的塊而生成的塊數(shù)據(jù),基于塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的地址數(shù)據(jù)指向該塊數(shù)據(jù),并且當(dāng)嘗試在存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的塊數(shù)據(jù)的地址數(shù)據(jù)作為另一條塊數(shù)據(jù)存儲(chǔ)在存儲(chǔ)設(shè)備中,由此執(zhí)行塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。該方法還包括:在存儲(chǔ)設(shè)備中存儲(chǔ)通過將塊數(shù)據(jù)進(jìn)一步劃分成多條數(shù)據(jù)而生成的子塊數(shù)據(jù),基于子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的一條子地址數(shù)據(jù)指向多條子塊數(shù)據(jù)中的每一條子塊數(shù)據(jù),在預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)包括多條子地址數(shù)據(jù)的子地址數(shù)據(jù)組,并且當(dāng)嘗試在存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條子塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在存儲(chǔ)設(shè)備中的子塊數(shù)據(jù)的一條子地址數(shù)據(jù)作為另一條子塊數(shù)據(jù)存儲(chǔ)在預(yù)定存儲(chǔ)設(shè)備中,由此執(zhí)行子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。本發(fā)明的有利效果在如上文描述的那樣配置本發(fā)明時(shí),有可能提供一種能夠?qū)崿F(xiàn)更高效數(shù)據(jù)去重的存儲(chǔ)系統(tǒng)。


[圖1]圖1是用于解釋根據(jù)第一示例性實(shí)施例的新塊發(fā)射的一個(gè)方面的說明示圖;[圖2]圖2是用于解釋根據(jù)第一示例性實(shí)施例存儲(chǔ)數(shù)據(jù)流的一個(gè)方面的說明示圖;[圖3]圖3是示出將根據(jù)第一示例性實(shí)施例測(cè)試的數(shù)據(jù)集的表格;[圖4]圖4示出圖表,這些圖表圖示根據(jù)第一示例性實(shí)施例中執(zhí)行的測(cè)試的隨著平均塊大小變化的僅數(shù)據(jù)DER ;[圖5]圖5示出圖表,這些圖表圖示根據(jù)第一示例性實(shí)施例中執(zhí)行的測(cè)試的隨著平均塊大小變化的實(shí)際DER ;[圖6]圖6示出圖表,這些圖表圖示根據(jù)第一示例性實(shí)施例中執(zhí)行的測(cè)試的實(shí)際DER和為了讀取最后備份所需要的盤操作的數(shù)目;[圖7]圖7是示出根據(jù)第一示例性實(shí)施例中執(zhí)行的測(cè)試的平均塊大小的表格;[圖8]圖8是示出根據(jù)第一示例性實(shí)施例中執(zhí)行的測(cè)試的平均塊組大小的表格;[圖9]圖9示出圖表,這些圖表圖示根據(jù)第一示例性實(shí)施例中執(zhí)行的測(cè)試、實(shí)際DER與各種參數(shù)之間的關(guān)系;[圖10]圖10是示出包括第二示例性實(shí)施例的存儲(chǔ)系統(tǒng)的整個(gè)系統(tǒng)的配置的框圖;[圖11]圖11是示意性地示出第二示例性實(shí)施例的存儲(chǔ)系統(tǒng)的配置的框圖;[圖12]圖12是示出第二示例性實(shí)施例的存儲(chǔ)系統(tǒng)的配置的功能框圖;[圖13]圖13是用于解釋圖12中公開的存儲(chǔ)系統(tǒng)中的數(shù)據(jù)存儲(chǔ)過程的一個(gè)方面的說明示圖;[圖14]圖14是用于解釋圖12中公開的存儲(chǔ)系統(tǒng)中的數(shù)據(jù)存儲(chǔ)過程的一個(gè)方面的說明示圖;[圖15]圖15是用于解釋圖12中公開的存儲(chǔ)系統(tǒng)中的數(shù)據(jù)取回過程的一個(gè)方面的說明示圖;[圖16]圖16是用于解釋圖12中公開的存儲(chǔ)系統(tǒng)中的數(shù)據(jù)存儲(chǔ)過程的一個(gè)方面的說明示圖;[圖17]圖17是用于解釋圖12中公開的存儲(chǔ)系統(tǒng)中的數(shù)據(jù)存儲(chǔ)過程的一個(gè)方面的說明示圖;[圖18]圖18是用于解釋圖12中公開的存儲(chǔ)系統(tǒng)中的數(shù)據(jù)存儲(chǔ)過程的一個(gè)方面的說明示圖;[圖19]圖19是示出根據(jù)補(bǔ)充注釋I的存儲(chǔ)系統(tǒng)的配置的框圖。
具體實(shí)施例方式<第一不例性實(shí)施例>在本實(shí)施例中,提供了一種用于在存儲(chǔ)系統(tǒng)中實(shí)現(xiàn)更高效的去重的更佳方法。也就是說,在多個(gè)備份中,具有在長(zhǎng)時(shí)間段內(nèi)不改變的長(zhǎng)數(shù)據(jù)伸展,對(duì)于這些長(zhǎng)數(shù)據(jù)伸展來說大的塊組(chunk)大小更佳,這些長(zhǎng)數(shù)據(jù)伸展中散布有改變區(qū)域,優(yōu)選更小的塊組大小。這樣,在本發(fā)明中,描述了一種被稱為錨(anchor)驅(qū)動(dòng)的子塊組去重的新算法。新算法在兩級(jí)(大塊組和它們的子塊組)上進(jìn)行去重。通過使用子塊組到容器塊組轉(zhuǎn)譯(translation)的有限的去重上下文來完成對(duì)小塊組去重。從后端讀取并且在寫入備份數(shù)據(jù)的過程中動(dòng)態(tài)更新該上下文。該上下文很小并且可以被保持在主存儲(chǔ)器中。新方式無(wú)需關(guān)于備份流的后端知識(shí)并且支持跨所有流的小塊組去重。同時(shí),上下文保持對(duì)小塊組有效去重所需要的多數(shù)子塊組轉(zhuǎn)譯。在本發(fā)明中,通過用備份軌跡(trace)集合對(duì)新算法仿真并且將結(jié)果與用備選的先前描述的算法實(shí)現(xiàn)的數(shù)目進(jìn)行比較來驗(yàn)證本發(fā)明的權(quán)利要求。在下文中,提供本實(shí)施例如下。首先,將具體描述新去重算法。然后,將提供其基于實(shí)際備份軌跡集合所驅(qū)動(dòng)的仿真的評(píng)估。然后,討論有關(guān)工作并且最后將給出結(jié)論和將來工作。(算法)(系統(tǒng)模型)在NPL 9中描述的HYDRAstor之后對(duì)本發(fā)明的存儲(chǔ)系統(tǒng)建模,該HYDRAstor由前端和后端構(gòu)成,該前端由導(dǎo)出文件系統(tǒng)抽象化的接入節(jié)點(diǎn)(AN)構(gòu)建,并且該后端被構(gòu)建為保持可變大小的、內(nèi)容可尋址塊的多節(jié)點(diǎn)塊存儲(chǔ)庫(kù)。在本發(fā)明中,在數(shù)據(jù)塊組與塊之間進(jìn)行區(qū)分。塊組通常是連續(xù)的一條用戶數(shù)據(jù)流,該用戶數(shù)據(jù)流具有塊分割器限定的邊界以最大化去重機(jī)會(huì)。塊是后端存儲(chǔ)的基本單位。塊包含一條用戶數(shù)據(jù)和關(guān)聯(lián)后端級(jí)的塊元數(shù)據(jù),該用戶數(shù)據(jù)即該塊的塊組。然而,塊組也可以包含指向其它塊的指針。指針被表示為哈希地址并且有助于構(gòu)建保持文件系統(tǒng)結(jié)構(gòu)的樹。系統(tǒng)可以由若干備份服務(wù)器來訪問,這些備份服務(wù)器用標(biāo)準(zhǔn)備份應(yīng)用來寫入和恢復(fù)備份,這些備份應(yīng)用對(duì)存儲(chǔ)系統(tǒng)的特殊能力(諸如去重)一無(wú)所知。為了討論這一算法,不必假設(shè)可調(diào)節(jié)分布式存儲(chǔ)系統(tǒng),諸如上文描述的存儲(chǔ)系統(tǒng)。然而,這樣的系統(tǒng)比集中式存儲(chǔ)系統(tǒng)更可能用于以廣泛變化的去重模式來存儲(chǔ)備份,因此存在不使用一個(gè)預(yù)期的塊組大小用于所有存儲(chǔ)的數(shù)據(jù)的更強(qiáng)動(dòng)機(jī)。應(yīng)當(dāng)注意,在本發(fā)明中將在存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)可以是任何類型的數(shù)據(jù)而不限于備份數(shù)據(jù)。在基本系統(tǒng)中,在接入節(jié)點(diǎn)上使用CDC算法將備份流切割成塊組并且將其作為塊寫入塊存儲(chǔ)庫(kù)。如果發(fā)現(xiàn)寫入的塊組并非重復(fù)(duplicate),則壓縮和擦除編碼(erasure-coded)這樣的新塊組以求彈性并且在不同塊存儲(chǔ)庫(kù)服務(wù)器上存儲(chǔ)所獲得的塊片段。應(yīng)當(dāng)注意,在本發(fā)明中,不必需劃分、壓縮或者擦除編碼數(shù)據(jù)。系統(tǒng)支持利用每個(gè)塊的參考計(jì)數(shù)實(shí)施的按需數(shù)據(jù)刪除。刪除以兩個(gè)階段進(jìn)行:重新計(jì)算塊計(jì)數(shù)器的垃圾標(biāo)識(shí);以及去除背景中具有計(jì)數(shù)器值零的塊的空間回收。必須在設(shè)計(jì)去重算法時(shí)考慮與刪除的交互。在這樣的系統(tǒng)中,存在應(yīng)當(dāng)在去重算法評(píng)估中包括的若干類型的元數(shù)據(jù):最低級(jí)的是如下塊元數(shù)據(jù),該塊元數(shù)據(jù)包括該塊的內(nèi)容推導(dǎo)地址。下一級(jí)元數(shù)據(jù)包含屬于該塊的指針。還存在與文件系統(tǒng)結(jié)構(gòu)關(guān)聯(lián)的更高級(jí)元數(shù)據(jù),例如inode表格。丟失具有指針的一個(gè)塊可能使多個(gè)文件或者甚至文件系統(tǒng)失去能力(NPL 6),這樣也可能使這樣的塊去重。因此,在多個(gè)副本中保持所有系統(tǒng)元數(shù)據(jù)以及具有指針的塊。對(duì)于用戶數(shù)據(jù),系統(tǒng)支持多個(gè)擦除編碼彈性級(jí),其中的多數(shù)具有低得多的開銷和彈性。默認(rèn)級(jí)引入33%開銷并且允許從3個(gè)節(jié)點(diǎn)和盤故障中幸存。(具有多個(gè)塊組大小的去重)對(duì)具有多個(gè)塊組大小的去重的兩個(gè)先前嘗試直接驅(qū)動(dòng)本發(fā)明。雙模方式(NPL 10)使用小和大的兩個(gè)塊組大小。默認(rèn)地,用大的塊組大小將新數(shù)據(jù)塊組化。此外,在重復(fù)塊組與非重復(fù)塊組之間的每個(gè)轉(zhuǎn)變時(shí),將新數(shù)據(jù)的一個(gè)或者幾個(gè)更鄰近的大塊組進(jìn)一步塊組化成更小塊組,并且向后端中插入這些小塊組。這一算法無(wú)需任何小塊組的附加數(shù)據(jù)庫(kù);取而代之,它使用對(duì)后端的存在查詢以在決定將實(shí)際發(fā)射哪些塊組之前驗(yàn)證大塊組的重復(fù)狀態(tài)。用于每個(gè)數(shù)據(jù)集的fingerdiff算法(NPL 7)維持在最新備份中遇到的、但是未必發(fā)射的所有小塊組的數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)是對(duì)由后端保持的發(fā)射的塊組元數(shù)據(jù)的附加。fingerdiff在小塊組級(jí)檢測(cè)重復(fù)并且盡可能多地接合它們(以用于所有新數(shù)據(jù)的小塊組的最大可能數(shù)目為限制)。這兩種方式提供了改善的空間。雙模方式“遺忘”被去重的大塊組中的小塊組,這在改變區(qū)域邊界上尤為重要。fingerdiff需要迄今為止在最新備份中看到的所有小塊組的大型數(shù)據(jù)庫(kù),即使對(duì)于不經(jīng)常改變的數(shù)據(jù)而言其沒有用處。該數(shù)據(jù)庫(kù)也可能不適配于主存儲(chǔ)器從而嚴(yán)重地影響性能。另外,fingerdiff假設(shè)存儲(chǔ)系統(tǒng)能夠識(shí)別備份流之間的關(guān)系,如更早說明的那樣,如今經(jīng)常情況并非如此。最后,fingerdiff不會(huì)跨無(wú)關(guān)備份流地在小塊組級(jí)上檢測(cè)重復(fù)。(對(duì)子塊組去重)本發(fā)明的被稱為錨驅(qū)動(dòng)子塊組去重的新算法解決了上文描述的先前方式的缺點(diǎn)。概括而言,對(duì)子塊組去重看起來如下。用相對(duì)大的預(yù)期塊組大小(例如64KB)完成基本去重以保證良好性能并且保持每個(gè)SN上的本地?cái)?shù)據(jù)的大小可管理。當(dāng)發(fā)現(xiàn)大塊組并非重復(fù)時(shí),嘗試對(duì)它的子塊組去重。通過用更低的預(yù)期塊大小運(yùn)行CDC算法在給定的塊組內(nèi)限定它們。例如,在預(yù)期塊組大小為64KB時(shí)預(yù)期子塊組大小可以為8KB,從而在I個(gè)塊組內(nèi)產(chǎn)生平均8個(gè)子塊組。具有界定的子塊組的塊的元數(shù)據(jù)比在每個(gè)子塊組被存儲(chǔ)為單獨(dú)塊時(shí)小得多,因?yàn)樽訅K組共享許多塊元數(shù)據(jù)。此外,包含從子塊組到容器塊組的轉(zhuǎn)譯的新元數(shù)據(jù)無(wú)需具有與塊元數(shù)據(jù)一樣高的彈性。用與用戶數(shù)據(jù)相等的彈性保持這些轉(zhuǎn)譯就足夠了。如果丟失了這些轉(zhuǎn)譯,則最壞情況將是降低的去重有效性,但是是在很有限的規(guī)模上,因?yàn)橛脩魯?shù)據(jù)彈性的級(jí)別確信地不應(yīng)導(dǎo)致可能的嚴(yán)重故障。假設(shè)當(dāng)寫入備份流時(shí)可以在接入節(jié)點(diǎn)上創(chuàng)建相關(guān)子塊組到容器塊組轉(zhuǎn)譯的集合。將此稱作集合子塊組去重上下文并且下文具體對(duì)其進(jìn)行討論。對(duì)于新的非重復(fù)塊組的每個(gè)子塊組,在該接入節(jié)點(diǎn)本地的子塊組去重上下文中尋找相關(guān)轉(zhuǎn)譯。如果發(fā)現(xiàn)這樣的轉(zhuǎn)譯,則向塊存儲(chǔ)庫(kù)發(fā)出一個(gè)或者多個(gè)去重查詢以驗(yàn)證容器塊組仍然存在于此并且包含請(qǐng)求的子塊組。需要這一步驟,因?yàn)檗D(zhuǎn)譯可能陳舊并且垃圾收集可能去除未使用的子塊組。僅當(dāng)待去重的數(shù)據(jù)存在于塊存儲(chǔ)庫(kù)中的情況下,才用從這一轉(zhuǎn)譯生成的地址對(duì)子塊組去重。如圖1中所示,接合和發(fā)射在這一過程中未被去重的子塊組作為一個(gè)大塊。在這樣的情況下,向上下文添加個(gè)別子塊組轉(zhuǎn)譯。這意味著當(dāng)發(fā)射新塊時(shí),接合和發(fā)射相互接近的非重復(fù)新子塊組(狀態(tài):N)作為一個(gè)塊,該塊具有指向子塊組pi和p2的兩個(gè)指針。應(yīng)當(dāng)注意狀態(tài):N指示非重復(fù)子塊組。下文將描述這一點(diǎn)。(子塊組去重上下文)當(dāng)以子塊組對(duì)備份流去重時(shí),無(wú)需訪問所有先前生成的子塊組。取而代之,訪問該備份的先前版本中的如下子塊組就足夠了:這些子塊組在備份流中與備份流中被寫入的當(dāng)前位置“接近”。使用這一結(jié)論,在AN上構(gòu)造子塊組去重上下文作為本地高速緩存器,該高速緩存器保持用于這樣的子塊組的子塊組到容器塊組轉(zhuǎn)譯。在寫入備份流時(shí)借助所謂的錨的幫助動(dòng)態(tài)地(on-the-fly)構(gòu)建去重上下文。錨是特殊類型的塊并且如圖2中所示具有與它在概念上關(guān)聯(lián)的3個(gè)項(xiàng):(I)錨塊組序列,該序列是在寫入的備份流中相鄰的大塊組的短序列(I至3) ;(2)覆蓋寫入的備份流的大量連續(xù)部分的錨窗,這種窗的大小通常為數(shù)百M(fèi)B,并且整個(gè)備份流由不相交的錨窗覆蓋;以及(3)包含子塊組到容器塊組轉(zhuǎn)譯的錨包(anchor pack),其包括錨窗中的非重復(fù)子塊組。當(dāng)寫入用于所有遇到的塊組和它們的子塊組的備份數(shù)據(jù)時(shí)創(chuàng)建這些轉(zhuǎn)譯。錨序列由備份流中的固定數(shù)目的塊組構(gòu)成,在下文針對(duì)這些塊組定義的特殊哈希(hash)具有某一預(yù)定義數(shù)目的、等于O的尾比特。該特殊哈希是用于一個(gè)塊組錨序列的規(guī)則塊組哈希;并且將該哈希定義為用于多塊組錨的每個(gè)序列塊組的各個(gè)哈希中的哈希。注意,用必須為O的該特殊哈希中的比特?cái)?shù)目來控制錨的頻率;比特越少,錨就越頻繁。應(yīng)當(dāng)注意,錨序列不限于由如上文描述的塊組組成并且可以由具有其它特征的塊組構(gòu)成。錨窗通常在備份流中適當(dāng)?shù)匚挥谂c該窗關(guān)聯(lián)的錨塊組序列的前面,以便具有足夠時(shí)間以在對(duì)需要轉(zhuǎn)譯的數(shù)據(jù)寫入和塊組化之前獲取所必需的轉(zhuǎn)譯。由于錨可能在新備份流中消失,所以每個(gè)錨包含如下指針,這些指針不僅如圖2中的實(shí)線箭頭所示指向它的窗轉(zhuǎn)譯而且如圖2中的虛線箭頭所示指向用于幾個(gè)后續(xù)窗的錨包。在寫入備份時(shí),除了用于當(dāng)前備份的錨生成之外,算法還對(duì)先前創(chuàng)建的錨的檢測(cè)進(jìn)行校驗(yàn)。在檢測(cè)到時(shí),向構(gòu)建去重上下文的本地高速緩存器中讀入該錨所指向的所有包。同時(shí),計(jì)算并且最終發(fā)射錨的新值從而替換舊值。然而,不必向本地高速緩存器中讀入所有錨包。
與在如上文描述的fingerdiff中不同,去重是全局的而并非每個(gè)流,由于在塊存儲(chǔ)庫(kù)中全局地存儲(chǔ)錨,因此有可能識(shí)別備份流中來自不同備份服務(wù)器或者不同客戶端的相似部分(例如,在工作站備份的情況下為操作系統(tǒng)文件)。當(dāng)在舊備份中存在的錨序列和關(guān)聯(lián)錨窗尚未隨著新備份改變時(shí),新錨與舊錨相同并且將對(duì)新錨去重。如果錨窗中的數(shù)據(jù)已經(jīng)改變、但是未修改錨塊,則新錨將重寫舊錨并且將回收舊錨。此外,還需要對(duì)所有錨的定期掃略過程(例如,一周一次)以去除自從上次掃略起尚未用于任何去重的錨。在存儲(chǔ)開銷方面,所有錨包一起占用可與fingerdiff的每個(gè)備份數(shù)據(jù)庫(kù)相比較的空間。大的差異在于錨包很小并且可以被組合以構(gòu)建適配于主存儲(chǔ)器的去重上下文,而用于大型備份的fingerdiff數(shù)據(jù)庫(kù)很大并且不會(huì)適配于此。此外,對(duì)于fingerdiff,還需要知道備份流和流邊界之間的關(guān)系,而基于錨的方式無(wú)需這一知識(shí)。與雙模比較,新方式允許更廣泛搜尋重復(fù)數(shù)據(jù)。不同于雙模,新算法使用先前在非重復(fù)和重復(fù)塊組二者中遇到的子塊組來校驗(yàn)去重,因?yàn)樽訅K組轉(zhuǎn)譯上下文包含所有這些轉(zhuǎn)譯。雙模僅校驗(yàn)與寫入的流中的至少一個(gè)重復(fù)塊組相鄰的非重復(fù)塊組的子塊組。(細(xì)節(jié)和微調(diào))在基本系統(tǒng)中,壓縮和擦除編碼整個(gè)塊組。對(duì)子塊組去重,需要能夠讀取個(gè)別子塊組。這可以通過讀取整個(gè)容器塊并且提取所需子塊組來實(shí)現(xiàn)。然而,這并非很高效,因此提出了壓縮和擦除編碼個(gè)別子塊組。作為結(jié)果,新“片段”包含給定的塊組的所有子塊組的片段。擴(kuò)展塊元數(shù)據(jù)以記憶塊組片段中的所有子塊組片段的偏移。在備份移除之后,可能發(fā)生一些子塊組無(wú)效并且也需要被移除,而其它子塊組有效并且需要被保存。出于這一原因,需要改變垃圾收集算法以允許標(biāo)識(shí)無(wú)效塊組和回收它們的空間。為了有助于在空間回收之后對(duì)塊組內(nèi)的子塊組定位,需要在每個(gè)塊元數(shù)據(jù)內(nèi)保持如下比特矢量,該比特矢量指示原有子塊組中的哪些子塊組仍然存在。另外,每個(gè)子塊組需要獲得小的參考計(jì)數(shù)器(少數(shù)比特)以允許子塊組回收。這樣的計(jì)數(shù)器可以很小,因?yàn)樵诤币姷那闆r下它會(huì)溢出,在回收整個(gè)塊之前將不回收這樣的子塊組。為了實(shí)現(xiàn)基于子塊組的去重,用子塊組選擇器來擴(kuò)展地址格式。有可能的是,存在多種子塊組選擇器形式。一種形式僅為子塊組順序編號(hào)。例如,在I個(gè)塊組內(nèi)平均有8個(gè)子塊組時(shí),4比特?cái)U(kuò)展地址足夠用于允許對(duì)整個(gè)塊組和上至15個(gè)個(gè)體子塊組尋址。一個(gè)可能的微調(diào)是在不能對(duì)大塊組去重、但是可以對(duì)多個(gè)相鄰子塊組去重時(shí)完成的相鄰子塊組接合。這可以僅基于轉(zhuǎn)譯來確定而無(wú)需對(duì)后端的附加查詢。在這樣的情況下,生成指向子塊組范圍的僅一個(gè)指針。為了允許這一點(diǎn),將子塊組選擇器改變成包含兩個(gè)子塊組編號(hào)的子塊組范圍選擇器——在上例中,將用I個(gè)字節(jié)而不是4個(gè)比特來擴(kuò)展地址。(評(píng)估)這里使用下文描述的三個(gè)數(shù)據(jù)集相對(duì)于CDC和雙模來評(píng)估本發(fā)明中提出的子塊組算法(進(jìn)一步被稱為子塊組)。由于對(duì)實(shí)際備份數(shù)據(jù)的直接操作將需要太久時(shí)間,所以使用NPL 10中介紹的特殊塊組化工具以生成壓縮的備份軌跡。該工具丟棄所有潛在切割點(diǎn)和在它們之間的數(shù)據(jù)塊組的哈希。這樣的預(yù)處理大量減少測(cè)試數(shù)據(jù)的大小和評(píng)估時(shí)間。平均而言,可以在少于20分鐘內(nèi)處理與ITB實(shí)際數(shù)據(jù)對(duì)應(yīng)的約60GB軌跡。
對(duì)于給定的數(shù)據(jù)集和給定的算法,定義DER(重復(fù)消除比)為系統(tǒng)中存儲(chǔ)的所有數(shù)據(jù)的總大小除以所需總盤空間??梢杂?jì)算不包括或者包括元數(shù)據(jù)的DER。將前者稱為僅數(shù)據(jù)(data-only)DER而后者稱為實(shí)際DER。僅數(shù)據(jù)DER既簡(jiǎn)單又被良好地定義,并且不同于實(shí)際DER,它不依賴于實(shí)際存儲(chǔ)系統(tǒng)特性。另一方面,在實(shí)際DER計(jì)算中,考慮可能影響實(shí)際系統(tǒng)所需存儲(chǔ)的所有因素。這包括數(shù)據(jù)冗余水平、壓縮比和所有種類的元數(shù)據(jù)所需要的空間。實(shí)際DER的值強(qiáng)烈依賴于實(shí)際系統(tǒng)模型。后文描述本發(fā)明的模型的元數(shù)據(jù)開銷。(測(cè)試數(shù)據(jù))實(shí)驗(yàn)基于圖3中描述的3個(gè)數(shù)據(jù)集。維基(Wiki)數(shù)據(jù)集由英語(yǔ)維基百科的5個(gè)官方XML快照構(gòu)成。文件僅包含普通頁(yè)面的最新版本。不包括改變歷史、特殊頁(yè)面、圖像等。很稀少地、平均每月一次地創(chuàng)建快照。由于在備份之間的長(zhǎng)時(shí)段、低備份數(shù)目和維基數(shù)據(jù)的特性(精細(xì)、頻繁改變),所以對(duì)這一數(shù)據(jù)集測(cè)量的去重比很低。實(shí)際DER根據(jù)所選算法從1.06 變到 1.52。下一數(shù)據(jù)集,neclab,代表典型的備份數(shù)據(jù)。這是與NPL 10中使用的數(shù)據(jù)集相同的數(shù)據(jù)集。它由用戶目錄的14個(gè)完全的每周Netware備份構(gòu)成。對(duì)這一數(shù)據(jù)集測(cè)量的實(shí)際DER從3.16到3.76變化。最后的數(shù)據(jù)集,郵件,由52個(gè)咨詢者在9LiveData的郵箱的32個(gè)每日快照構(gòu)成。這是很特殊的數(shù)據(jù)集。典型用戶郵箱每天改變不多,因此對(duì)這一數(shù)據(jù)集測(cè)量的去重應(yīng)當(dāng)很高(接近備份的數(shù)目)。然而,存儲(chǔ)用戶的郵箱的單個(gè)快照作為通常包含數(shù)以千計(jì)的很小文件,每個(gè)文件一個(gè)消息,的tar存檔。這些文件在tar存檔中的順序依賴于tar和文件系統(tǒng)內(nèi)部構(gòu)造并且隨時(shí)間略微改變。如果預(yù)期的塊組大小跨越多個(gè)文件,則它們的順序的即使略微置換也可能不利地影響許多重復(fù)消除算法。另外,改變數(shù)據(jù)順序可能潛在地造成很高數(shù)據(jù)片段化。對(duì)這一數(shù)據(jù)集測(cè)量的實(shí)際DER從13.08到18.37變化。通過串接所有3個(gè)數(shù)據(jù)集來構(gòu)建作為整體進(jìn)一步引用的人工數(shù)據(jù)集。用于這一數(shù)據(jù)集的實(shí)際DER從4.35到5.19變化。(測(cè)試的策略)已經(jīng)在許多可能配置中測(cè)試所有算法。利用被設(shè)置成從4KB到256KB的2的所有冪的預(yù)期塊組大小來測(cè)試第一算法CDC。如預(yù)期的那樣,CDC生成具有聚在預(yù)期塊組大小周圍的大小的塊組。對(duì)于上文描述的雙模,已經(jīng)使用具有從8KB到256KB變化的預(yù)期塊組大小和總是小8倍的預(yù)期小塊組大小的大塊組。在本發(fā)明中提出的基于錨的去重被配置有被設(shè)置成從8KB到256KB的2的所有冪的預(yù)期塊組大小和總是小8倍的預(yù)期小塊組大小。將錨長(zhǎng)度設(shè)置成I個(gè)塊組。將錨級(jí)設(shè)置成10,即在錨之間的平均距離為21° = 1024個(gè)塊組(或者8192個(gè)小塊組)。將高速緩存器大小設(shè)置成0.5mln個(gè)條目(能夠存儲(chǔ)來自約64個(gè)包的轉(zhuǎn)譯)、并且將預(yù)取(prefetch)設(shè)置成16個(gè)包(對(duì)應(yīng)于IGB實(shí)際數(shù)據(jù)流)。這樣的配置提供在由算法實(shí)現(xiàn)的DER與為了運(yùn)行它而需要的資源之間的合理平衡。標(biāo)記為理想高速緩存器的算法與子塊組相似地工作,但是它將所有遇到的轉(zhuǎn)譯直接放入在這一情況下不受限制的高速緩存器中而不是使用基于錨的機(jī)制。這樣的算法不實(shí)際,但是它的去重是用于子塊組方式的上界。(使用僅數(shù)據(jù)DER的比較)圖4呈現(xiàn)根據(jù)平均塊大小變化的僅數(shù)據(jù)DER。這用于所有3個(gè)數(shù)據(jù)集并且用于所有算法。每個(gè)圖表代表不同數(shù)據(jù)集,每個(gè)曲線-不同算法,并且每個(gè)點(diǎn)-不同配置(不同預(yù)期塊組大小)。在這樣呈現(xiàn)的背后的想法在于所需重復(fù)消除算法應(yīng)當(dāng)不僅實(shí)現(xiàn)高DER而且維持高平均塊大小,這是將元數(shù)據(jù)開銷和性能開銷保持于可接受水平上所必需的。將平均塊大小定義為系統(tǒng)中存儲(chǔ)的所有唯一塊的總大小除以這樣的塊的數(shù)目(即使單個(gè)塊出現(xiàn)于許多備份流中,但是仍然將它計(jì)數(shù)為一)。這是與后文具體描述的平均塊組大小不同的統(tǒng)計(jì)量。自然地,如果不包括元數(shù)據(jù),則使用更小塊大小造成更佳去重。在幾乎所有情況下,僅數(shù)據(jù)DER在平均塊大小的對(duì)數(shù)下接近線性。無(wú)論數(shù)據(jù)集如何,在本發(fā)明中提出的算法都比CDC和雙模表現(xiàn)更佳。在維持大的平均塊大小時(shí),它在(細(xì)微得多的)子塊組級(jí)上執(zhí)行去重從而造成更高DER。在理想高速緩存算法的情況下,這是清楚可見的。CDC用X個(gè)KB塊組實(shí)現(xiàn)的去重幾乎等于理想高速緩存算法用X個(gè)KB子塊組實(shí)現(xiàn)的去重。無(wú)論理想高速緩存算法所用的預(yù)期塊組大小如何,都滿足這樣的關(guān)系,僅預(yù)期子塊組大小有影響。然而,理想高速緩存算法需要維持所有子塊組的大型索引,這需要大量資源并且不可容易地實(shí)施。在本發(fā)明中提出的算法實(shí)現(xiàn)的DER主要依賴于用于預(yù)取轉(zhuǎn)譯的基于錨的機(jī)制的性能。錨工作越好,去重就越高。如可見的那樣,基于錨的子塊組去重很接近理想高速緩存算法,從而證明用于預(yù)取轉(zhuǎn)譯的基于錨的機(jī)制合理好地工作。將高速緩存命中率定義為基于錨的機(jī)制發(fā)現(xiàn)的重復(fù)子塊組數(shù)目除以理想高速緩存算法發(fā)現(xiàn)的重復(fù)子塊組的數(shù)目。實(shí)際上,在基本配置(64KB塊組和8KB子塊組)中,高速緩存命中率很高(對(duì)于維基數(shù)據(jù)集為81%,對(duì)于neclab為87%,并且對(duì)于郵件為99% )。如預(yù)期的那樣,雙模對(duì)neclab數(shù)據(jù)比⑶C表現(xiàn)更佳。這是NPLlO中所用的數(shù)據(jù)集,并且結(jié)果與它們的結(jié)果一致。令人驚訝的是,對(duì)其它數(shù)據(jù)集,雙模實(shí)現(xiàn)的DER比CDC實(shí)現(xiàn)的DER略差。這可能在隨機(jī)地方有許多小改變的情況下發(fā)生。大塊組僅在它是重復(fù)塊組的鄰居的情況下才被重新塊組化成小塊組。如果塊在一個(gè)備份中被塊組化并且在下一備份流中不改變,則必須每次將這樣的塊重新塊組化以免失去一些去重機(jī)會(huì)。這樣的情形在neclab軌跡中不經(jīng)常發(fā)生,但是在維基和郵件中非常經(jīng)常發(fā)生從而造成雙模的略差性能。(使用實(shí)際DER的比較)圖片在包括所有種類的元數(shù)據(jù)時(shí)看起來顯著不同。在上文描述的系統(tǒng)模型中,將每個(gè)塊存儲(chǔ)為用擦除編碼創(chuàng)建的12個(gè)片段。對(duì)于多數(shù)數(shù)據(jù),9個(gè)是原有片段而3個(gè)是冗余片段,然而在12個(gè)副本中保持具有指針的塊。全局地估計(jì)壓縮水平為塊大小的對(duì)數(shù)的線性函數(shù)(對(duì)于64KB塊約為0.77并且對(duì)于8KB塊約為0.80)。存儲(chǔ)的每個(gè)塊具有與它關(guān)聯(lián)的124個(gè)字節(jié)的元數(shù)據(jù)。為了提供高性能和抗故障的彈性,在12個(gè)副本中存儲(chǔ)所有元數(shù)據(jù),這造成每個(gè)塊的1344個(gè)字節(jié)的元數(shù)據(jù)開銷。在實(shí)際系統(tǒng)中,也可以對(duì)具有指針的塊去重從而造成更少元數(shù)據(jù)開銷(尤其對(duì)于小塊),但是在模型中僅模擬最壞情況的場(chǎng)景,其中未對(duì)具有指針的塊去重。因此,必須有用于在任何備份流中出現(xiàn)的每個(gè)塊組的指針(無(wú)論這一塊組是否為重復(fù)),并且也在12個(gè)副本中存儲(chǔ)所有指針。
子塊組算法需要用于存儲(chǔ)轉(zhuǎn)譯包的額外空間。單個(gè)轉(zhuǎn)譯包含子塊組的SHA-1 (20字節(jié)長(zhǎng))、索引和整個(gè)塊組的SHA-1。由于通常在幾個(gè)轉(zhuǎn)譯之間共享整個(gè)塊組的SHA-1,所以單個(gè)轉(zhuǎn)譯應(yīng)當(dāng)適配到32個(gè)字節(jié)中??梢杂玫蛷椥源鎯?chǔ)轉(zhuǎn)譯包一在數(shù)據(jù)丟失的情況下,DER將略微下降至整個(gè)塊組⑶C的水平,但是系統(tǒng)將保持完全功能。因此,在實(shí)驗(yàn)中已經(jīng)假設(shè)錨包的彈性與用戶數(shù)據(jù)的彈性相同。圖5呈現(xiàn)根據(jù)系統(tǒng)中存儲(chǔ)的平均塊大小變化的實(shí)際DER。當(dāng)在DER計(jì)算中包括所有種類的元數(shù)據(jù)時(shí),降低塊大小造成更佳去重僅直至某點(diǎn),在該點(diǎn)之后,為了存儲(chǔ)元數(shù)據(jù)而需要的額外空間超過更佳去重所獲得的空間。對(duì)于每個(gè)數(shù)據(jù)集并且對(duì)于每個(gè)算法,存在某一最優(yōu)塊大小,造成最高可能實(shí)際DER0利用給定的算法(并且不降低元數(shù)據(jù)開銷,這通常不是容易的任務(wù)),不能獲得更佳DER0當(dāng)然,最優(yōu)塊大小強(qiáng)烈依賴于所選數(shù)據(jù)集而變化。將不同預(yù)期塊組大小用于各種數(shù)據(jù)集需要額外手動(dòng)配置并且可能打破全局去重一不能在用不同塊組化策略塊組化的兩個(gè)流之間發(fā)現(xiàn)重復(fù)。對(duì)于⑶C,最優(yōu)預(yù)期塊組大小對(duì)于維基來說等于8KB (DER = 1.20),對(duì)于neclab來說等于16KB(DER = 3.18)并且對(duì)于郵件來說等于32KB(DER = 14.89)。等于16KB的平均塊組大小聽起來是用于所有這些數(shù)據(jù)集的合理全局選擇。對(duì)于人工總數(shù)據(jù)集,它得到DER=4.39。雙模對(duì)neclab數(shù)據(jù)集表現(xiàn)良好——對(duì)于32KB大塊組和4KB小塊組來說它得到DER = 3.38(比⑶C提高6% )。然而,它對(duì)維基(在32KB大塊組時(shí)DER = 1.07)和郵件(在64KB大塊組時(shí)DER = 13.14)表現(xiàn)相當(dāng)差。等于32KB的預(yù)期大塊組大小對(duì)總數(shù)據(jù)集是最佳選擇(DER = 4.35)。在本發(fā)明中提出的子塊組算法實(shí)現(xiàn)的性能顯著更高。對(duì)于維基數(shù)據(jù)集,最優(yōu)平均塊大小為16KB從而造成DER= 1.25,這比最優(yōu)⑶C提高25 %。對(duì)于neclab數(shù)據(jù)集,最優(yōu)平均塊大小為32KB從而造成DER= 3.67,這比⑶C提高15%。也對(duì)于郵件數(shù)據(jù)集,最優(yōu)子塊組算法使用64KB塊并且給出DER = 18.45,這比最優(yōu)⑶C提高24%。對(duì)于總數(shù)據(jù)集,子塊組算法用等于64KB的預(yù)期塊大小表現(xiàn)最佳(DER = 5.06,比⑶C提高15% )。隨著塊組大小變得很小,子塊組算法的性能變得更差并且接近⑶C或者在郵件軌跡上甚至在⑶C以下。這是因?yàn)閷?duì)于小塊組(例如8KB)而言,子塊組很小(例如1KB),這導(dǎo)致很短平均塊大小并且造成太多元數(shù)據(jù)。(讀取性能)對(duì)備份數(shù)據(jù)去重可能導(dǎo)致不再存儲(chǔ)為連續(xù)流的備份,但是取而代之,它們由散布于系統(tǒng)的許多小數(shù)據(jù)塊組構(gòu)成。這樣的片段化造成在讀取期間需要的更多盤操作(搜尋)。高度地可縮放存儲(chǔ)系統(tǒng)通常具有大量資源,并且尤其是如果同時(shí)讀取僅一個(gè)或者僅少數(shù)流,則更多盤搜尋通常不會(huì)負(fù)面地影響性能。另一方面,當(dāng)設(shè)計(jì)去重算法時(shí),應(yīng)當(dāng)評(píng)估它對(duì)數(shù)據(jù)片段化的影響。數(shù)據(jù)片段化是主要脫離本發(fā)明的范圍的廣泛主題,但是這里呈現(xiàn)基本評(píng)估的結(jié)果以示出在本發(fā)明中提出的算法未造成比備選解決方案更差的片段化。為了評(píng)估盤讀取性能,已經(jīng)簡(jiǎn)化了存儲(chǔ)系統(tǒng)的模型,其中假設(shè)在放置于單個(gè)物理盤上的單個(gè)連續(xù)文件中存儲(chǔ)所有塊。在文件的末尾寫入所有新(未重復(fù))塊而簡(jiǎn)單地略過重復(fù)塊。在這一模型中,未考慮存儲(chǔ)任何元數(shù)據(jù)。在本發(fā)明中,以如下方式對(duì)讀取進(jìn)行仿真。按照在備份流中出現(xiàn)的順序逐個(gè)請(qǐng)求塊。當(dāng)從盤獲取塊時(shí),擴(kuò)展讀取操作以便還讀取多個(gè)后繼塊。預(yù)期的單個(gè)讀取大小為256KB。適配在該限制內(nèi)的所有塊被加載在讀取高速緩存器中,并且當(dāng)且僅當(dāng)下一塊的一半適配在該限制內(nèi)時(shí),加載該下一塊(這一有點(diǎn)奇特的條件可以避免對(duì)預(yù)取的塊數(shù)目四舍五入的問題)。高速緩存器的大小限于1GB。如果塊已經(jīng)存在于高速緩存器中,則無(wú)需額外IO操作。使用為了讀取最后(最多片段化的)備份而必需的IO操作總數(shù)作為片段化測(cè)量結(jié)果。在子塊組算法的情況下,模型略微不同。遵循相同策略,但是對(duì)子塊組操作而不是使用大塊,因?yàn)橄到y(tǒng)由于塊表示中的修改而能夠讀取個(gè)別子塊組。為了比較所有算法,對(duì)于它們中的每個(gè)算法,已經(jīng)在實(shí)際DER方面選擇了最佳設(shè)置(對(duì)于子塊組來說為64KB大塊組和8KB小塊組,對(duì)于雙模來說為32KB和4KB塊組,并且對(duì)于CDC來說為16KB塊組)。圖6呈現(xiàn)關(guān)于每個(gè)算法的實(shí)際DER比對(duì)為了讀取最后(最多片段化的)備份而必需的盤操作的數(shù)目。結(jié)果強(qiáng)烈依賴于數(shù)據(jù)集。對(duì)于neclab,子塊組算法造成最低片段化和最高實(shí)際DER,這是最佳情況。這是好消息,因?yàn)檫@一軌跡應(yīng)當(dāng)反映典型備份數(shù)據(jù)。一般而言,應(yīng)當(dāng)在去重與片段化之間存在權(quán)衡。更佳去重應(yīng)當(dāng)造成更多片段化,但是如可見的那樣存在例外。對(duì)于郵件和維基軌跡,子塊組算法片段化總是在其它兩個(gè)算法的片段化之間,但是實(shí)際DER總是最高。對(duì)于這些軌跡,付出片段化以換取提高的去重。可能潛在地影響讀取性能的另一因素是如下平均塊組大小,該平均塊組大小被定義為系統(tǒng)中存儲(chǔ)的所有數(shù)據(jù)流的總大小除以指針的總數(shù)。在平均塊組大小計(jì)算中,與在平均塊計(jì)算中不同,對(duì)重復(fù)計(jì)數(shù)若干次。更短平均塊組意味著對(duì)于相同數(shù)據(jù)量必須存儲(chǔ)和處理更多指針。圖7和圖8示出分別用于每個(gè)算法的最佳實(shí)例以及還用于具有64KB大塊組的雙模的平均塊大小和平均塊組大小。這一實(shí)例示出雙模的有效性,因?yàn)?4KB大塊組雙模造成比最佳雙模僅略微更低的去重比、但是交付明顯更大平均塊和塊組大小。然而,提供最佳去重比的子塊組實(shí)例即使與具有64KB塊組的雙模比較仍然在幾乎所有情況下生成更大平均塊和塊組。子塊組算法嘗試默認(rèn)發(fā)射大塊組并且生成包含比大塊組更少的數(shù)據(jù)的塊,這僅在已經(jīng)對(duì)這樣的塊組的剩余部分去重之后發(fā)生。雙模與子塊組算法共享第一優(yōu)點(diǎn)、但是不共享第二優(yōu)點(diǎn),因?yàn)殡p模在改變的邊界投機(jī)性地發(fā)射小塊,這抱有它們將在以后用于去重的希望。然而,這樣的預(yù)期節(jié)省有時(shí)未得以實(shí)現(xiàn)。作為結(jié)果,子塊組算法與⑶C和雙模生成的平均塊比較生成大得多的平均塊。此外,由于指向子塊組的指針,而在子塊組算法的情況下、在平均塊大小與平均塊組大小之間存在比其它兩個(gè)算法大得多的差值。(配置調(diào)整)這里,示出如何通過改變來自(上文針對(duì)64KB預(yù)期塊組大小描述的)子塊組算法的基本配置的單個(gè)參數(shù)來影響實(shí)際DER。為了簡(jiǎn)化繪圖,僅呈現(xiàn)用于總數(shù)據(jù)集的結(jié)果。通常,用于個(gè)別數(shù)據(jù)集的結(jié)果不顯著不同。在圖9的實(shí)際DER與各種參數(shù)之間的關(guān)系中示出結(jié)果。調(diào)節(jié)的第一參數(shù)是錨長(zhǎng)度——形成錨的連續(xù)塊組的數(shù)目。令人驚訝的是,可以針對(duì)從單個(gè)塊組創(chuàng)建的錨實(shí)現(xiàn)最佳結(jié)果,因?yàn)閷?shí)際DER隨著所用塊組的數(shù)目的對(duì)數(shù)線性地下降。更短錨更可能在后續(xù)預(yù)取(包)備份中表現(xiàn)為不變,這是下載適當(dāng)轉(zhuǎn)譯包所必需的。下一參數(shù)是錨級(jí)。等于η的錨級(jí)意味著在錨之間的預(yù)期距離等于2η個(gè)塊組。在改變錨級(jí)時(shí),也已經(jīng)調(diào)整待預(yù)取的包的數(shù)目以總是預(yù)取與IGB實(shí)際數(shù)據(jù)對(duì)應(yīng)的轉(zhuǎn)譯。設(shè)置更頻繁的錨造成更佳去重,但是,由于每個(gè)錨生成讀取和寫入操作,所以太頻繁的錨可能降低性能。決定使用等于10的錨級(jí)從而造成對(duì)于64ΚΒ塊來說錨之間的預(yù)期距離等于64ΜΒ。也已經(jīng)修改待預(yù)取的包的數(shù)目。一般而言,增加預(yù)取的長(zhǎng)度造成更佳去重。轉(zhuǎn)譯高速緩存器刪減引起最高值的驟降。這一高速緩存器作為隊(duì)列來工作,并且由于大的預(yù)取大小而在使用之前從高速緩存器驅(qū)逐所需轉(zhuǎn)譯。增加高速緩存器大小將在這樣的情況下有幫助。已經(jīng)用更大高速緩存器做實(shí)驗(yàn),但是結(jié)果并非顯著更佳,并且保持IGB預(yù)取作為合理折衷。最后,已經(jīng)用其它預(yù)期子塊組大小做實(shí)驗(yàn),但是實(shí)驗(yàn)尚未示出任何顯著提高。除了配置調(diào)節(jié)之外,也已經(jīng)測(cè)試對(duì)算法的少數(shù)修改。第一修改是接合剩余塊(由未重復(fù)子塊組組成的塊)。與發(fā)射每個(gè)塊組的單個(gè)剩余塊不同,可以結(jié)合它們中的幾個(gè)并且發(fā)射單個(gè)塊。這樣的修改幾乎不影響DER,剩余塊很罕見并且很不可能重復(fù),但是允許維持高的平均塊大小。另一修改是限制單個(gè)塊組以內(nèi)的子塊組的數(shù)目。利用默認(rèn)塊分割器配置,子塊組的最大數(shù)目為24,而它們的預(yù)期數(shù)目為8。如果系統(tǒng)需要恒定大小的元數(shù)據(jù)記錄,則這可能導(dǎo)致空間浪費(fèi)一無(wú)論每個(gè)子塊組是否存在都需要為它保留約3Β。然而,可以接合在某一限制以上的所有子塊組。實(shí)驗(yàn)示出將子塊組的數(shù)目限于12僅略微地影響去重(對(duì)總數(shù)據(jù)集,僅數(shù)據(jù)DER從6.01下降至5.95),而限于16完全不影響它(僅數(shù)據(jù)DER下降少于0.01)。(有關(guān)工作)除了已經(jīng)討論的fingerdiff和雙模塊組化之外,還存在許多與去重(一般的)和塊組化(具體的)有關(guān)的文章。極端分級(jí)(extreme binning) (NPL 5)是用于使用單個(gè)大小的塊組化在相似文件中發(fā)現(xiàn)重復(fù)的高效可縮放技術(shù)。然而,它需要知道整個(gè)文件內(nèi)容以用于計(jì)算有代表性的塊組、并因此不能直接應(yīng)用于流式數(shù)據(jù)。稀疏索引(NPL 13)與極端分級(jí)相似,通過將進(jìn)入塊組拆分成分段來應(yīng)用于流數(shù)據(jù)并且比對(duì)所選片段塊組執(zhí)行去重。它不運(yùn)用任何用于使用不同塊組級(jí)的更細(xì)微粒度的重復(fù)檢測(cè)的技術(shù)。自適應(yīng)塊組化方法(NPL12)是在CDC與固定大小的塊組化之間切換以便在移動(dòng)設(shè)備上最小化必需處理能力的有趣的想法。EMC Centera(NPL I)是證明內(nèi)容可尋址性可以用于重復(fù)消除的最先產(chǎn)品之一。然而,由于對(duì)整個(gè)文件計(jì)算內(nèi)容地址,所以Centera不能執(zhí)行子文件去重。Venti (NPL 21)是將CAS及早用于存檔文件系統(tǒng)中的重復(fù)消除。它使用固定大小的塊,因此它不能對(duì)移位的內(nèi)容去重。MAD2 (NPL 26)、HYDRAstor (NPL 9)和 DDFS (NPL 28)是使用 CDC 塊組化和內(nèi)容可尋址存儲(chǔ)的實(shí)施系統(tǒng)的示例。Foundation (NPL 23)使用內(nèi)容可尋址存儲(chǔ)以對(duì)夜間快照中的整個(gè)硬盤的版本有效存儲(chǔ)和去重。REBL(NPL 11)將使用內(nèi)容定義的塊組化的重復(fù)消除與增量編碼和壓縮組合以用于獲得最佳可能壓縮比。Pastiche (NPL 8)將內(nèi)容定義的塊組化、內(nèi)容地址和基于內(nèi)容的加密用于對(duì)等網(wǎng)絡(luò)中的客戶端系統(tǒng)的安全備份,而通過刪除共享塊組并且存儲(chǔ)每個(gè)塊組的僅一個(gè)副本來限制存儲(chǔ)開銷。CZIP (NPL 18)是將塊組化和CAS用于例如內(nèi)容分發(fā)服務(wù)器、文件傳送或者web高速緩存中的一般使用的通用壓縮文件格式。在NPL 24中呈現(xiàn)的網(wǎng)絡(luò)業(yè)務(wù)冗余消除方案使用有代表性的Rabin指紋集合以發(fā)現(xiàn)網(wǎng)絡(luò)通信中的可能重復(fù)內(nèi)容區(qū)域,這帶來與在本工作中描述的錨的一些類似。LBFS(NPL 16)是將內(nèi)容定義的塊組化和內(nèi)容驗(yàn)證應(yīng)用于網(wǎng)絡(luò)文件系統(tǒng)以便限制網(wǎng)絡(luò)鏈路上的帶寬使用的示例。它將Rabin指紋化用于將文件分裂成塊組并且將所得Rabin哈希用于發(fā)現(xiàn)可能重復(fù),而在塊組具有完全相同的內(nèi)容的情況下將SHA-1用于最終驗(yàn)證。CASPER(NPL 25)是在CAS數(shù)據(jù)可用的情況下將CAS機(jī)會(huì)性地用于加速通過低速鏈路的文件系統(tǒng)訪問的示例。RedFS分布式文件系統(tǒng)(NPL 4)將用于文件組的本地去重與基于已知為復(fù)制品的組矢量發(fā)現(xiàn)相似文件組組合以最小化在分布式復(fù)制品之間傳送的數(shù)據(jù)。在NPL 2中描述的ProtecTier系統(tǒng)運(yùn)用有代表性的Rabin指紋以使用相似性匹配而不是內(nèi)容地址對(duì)大數(shù)據(jù)塊執(zhí)行去重,這允許它存儲(chǔ)用于去重目的的小得多的索引。已經(jīng)在部分內(nèi)容共享文件系統(tǒng)的實(shí)現(xiàn)方式中建議接合內(nèi)容指針的想法(NPL 3)。它使用基于相似性檢測(cè)的離線去重并且允許僅對(duì)共享文件部分塊組化和去重以便最小化塊組元數(shù)據(jù)開銷。NPL 15和NPL 19包含對(duì)使用⑶C和其它技術(shù)對(duì)現(xiàn)實(shí)數(shù)據(jù)的可能去重增益的分析。NPL 14包含對(duì)各種去重技術(shù)的正面和反面的全面比較并且討論在去重比、元數(shù)據(jù)開銷和重建時(shí)間之間的權(quán)衡。DeepStore (NPL 27)比較CAS和增量壓縮在重復(fù)消除中的效率并且討論去重的數(shù)據(jù)的可靠性。在NPL 6中還分析了存儲(chǔ)更少數(shù)據(jù)塊組作為去重結(jié)果的可靠性。NPL 17討論塊組大小對(duì)發(fā)現(xiàn)在不同數(shù)據(jù)類型之間的共性的效果、元數(shù)據(jù)開銷對(duì)空間節(jié)省的影響以及由于在CAS存儲(chǔ)中存儲(chǔ)塊組僅一次而引起的彈性喪失。(結(jié)論和未來工作)在本發(fā)明中,提出了動(dòng)態(tài)預(yù)取的有限大小的子塊組去重上下文驅(qū)動(dòng)的子塊組去重算法。這一上下文提供在子塊組級(jí)的有效去重所需要的轉(zhuǎn)譯中的多數(shù)轉(zhuǎn)譯。另外,可以將上下文輸入轉(zhuǎn)譯存儲(chǔ)為并非特別重要的元數(shù)據(jù),即具有低彈性開銷的元數(shù)據(jù)。新算法還通過在可能時(shí)使用整個(gè)塊組并且在屬于相同塊組的子塊組之中共享多數(shù)元數(shù)據(jù)來減少有效元數(shù)據(jù)開銷。作為結(jié)果,對(duì)于具有顯著元數(shù)據(jù)開銷的系統(tǒng),子塊組算法與其它方式、諸如傳統(tǒng)CDC和雙模比較產(chǎn)生優(yōu)異的實(shí)際DER,同時(shí)提供顯著更大的平均塊和塊組大小。同時(shí),對(duì)于標(biāo)準(zhǔn)備份軌跡,新算法造成更少片段化。對(duì)于其它數(shù)據(jù)流,片段化可以更高,但是這是改善去重的代價(jià)。對(duì)于將來的工作,計(jì)劃使用更多備份軌跡來評(píng)估新算法并且具體研究如何解決片段化問題而不顯著減少去重比。<第二示例性實(shí)施例>將參照?qǐng)D10至圖18描述本發(fā)明的第二示例性實(shí)施例。圖10是示出整個(gè)系統(tǒng)的配置的框圖。圖11是示意性地示出存儲(chǔ)系統(tǒng)的框圖,并且圖12是示出配置的功能框圖。圖13至圖18是用于解釋存儲(chǔ)系統(tǒng)的操作的說明視圖。這一示例性實(shí)施例這里示出通過連接多個(gè)服務(wù)器計(jì)算機(jī)來配置存儲(chǔ)系統(tǒng)的情況。然而,本發(fā)明的存儲(chǔ)系統(tǒng)不限于具有多個(gè)計(jì)算機(jī)的配置并且可以由一個(gè)計(jì)算機(jī)來配置。如圖10中所示,本發(fā)明的存儲(chǔ)系統(tǒng)10經(jīng)由網(wǎng)絡(luò)N連接到控制備份過程的備份系統(tǒng)11。備份系統(tǒng)11獲取在經(jīng)由網(wǎng)絡(luò)N連接的備份目標(biāo)設(shè)備12中存儲(chǔ)的備份目標(biāo)數(shù)據(jù)(存儲(chǔ)目標(biāo)數(shù)據(jù))并且請(qǐng)求存儲(chǔ)系統(tǒng)10來進(jìn)行存儲(chǔ)。因此,存儲(chǔ)系統(tǒng)10存儲(chǔ)被請(qǐng)求存儲(chǔ)為備份的備份目標(biāo)數(shù)據(jù)。應(yīng)當(dāng)注意,存儲(chǔ)系統(tǒng)10不限于存儲(chǔ)備份目標(biāo)數(shù)據(jù)并且可以存儲(chǔ)任何類型的數(shù)據(jù)。如圖11中所示,這一示例性實(shí)施例的存儲(chǔ)系統(tǒng)10采用其中連接多個(gè)服務(wù)器計(jì)算機(jī)的配置。具體而言,存儲(chǔ)系統(tǒng)10被配備有:加速器節(jié)點(diǎn)10A,充當(dāng)控制存儲(chǔ)系統(tǒng)10的存儲(chǔ)/再現(xiàn)操作的服務(wù)器計(jì)算機(jī);以及存儲(chǔ)節(jié)點(diǎn)10B,充當(dāng)配備有存儲(chǔ)數(shù)據(jù)的存儲(chǔ)設(shè)備的服務(wù)器計(jì)算機(jī)。加速器節(jié)點(diǎn)IOA的數(shù)目和存儲(chǔ)節(jié)點(diǎn)IOB的數(shù)目不限于圖11中所示的數(shù)目,并且可以采用其中連接更多節(jié)點(diǎn)IOA和更多節(jié)點(diǎn)IOB的配置。另外,這一示例性實(shí)施例的存儲(chǔ)系統(tǒng)10是內(nèi)容地址存儲(chǔ)系統(tǒng),該內(nèi)容地址存儲(chǔ)系統(tǒng)劃分?jǐn)?shù)據(jù)并且使數(shù)據(jù)冗余、分發(fā)數(shù)據(jù)并且將其存儲(chǔ)到多個(gè)存儲(chǔ)設(shè)備中,并且通過根據(jù)待存儲(chǔ)的數(shù)據(jù)的內(nèi)容而設(shè)置的唯一內(nèi)容地址來指定存儲(chǔ)數(shù)據(jù)的存儲(chǔ)位置。下文將描述這一內(nèi)容地址存儲(chǔ)系統(tǒng)。假設(shè)存儲(chǔ)系統(tǒng)10是一個(gè)系統(tǒng),下文將描述存儲(chǔ)系統(tǒng)10的配置和功能。換而言之,可以在加速器節(jié)點(diǎn)IOA或者存儲(chǔ)節(jié)點(diǎn)IOB中包括下文描述的存儲(chǔ)系統(tǒng)10的配置和功能。存儲(chǔ)系統(tǒng)10不限于如圖11中所示的包括加速器節(jié)點(diǎn)IOA和存儲(chǔ)節(jié)點(diǎn)IOB的配置。存儲(chǔ)系統(tǒng)10可以具有任何配置并且例如可以由一個(gè)計(jì)算機(jī)配置。另外,存儲(chǔ)系統(tǒng)10不限于內(nèi)容地址存儲(chǔ)系統(tǒng)。圖12示出存儲(chǔ)系統(tǒng)10的配置。如該圖中所示,存儲(chǔ)系統(tǒng)10被配備有存儲(chǔ)數(shù)據(jù)的存儲(chǔ)設(shè)備31和32以及控制向存儲(chǔ)設(shè)備31和32中存儲(chǔ)數(shù)據(jù)和從存儲(chǔ)設(shè)備31和32取回?cái)?shù)據(jù)的操作的控制設(shè)備20??刂圃O(shè)備20被配備有:塊數(shù)據(jù)處理單元21,其以塊數(shù)據(jù)為單位執(zhí)行流數(shù)據(jù)的存儲(chǔ)和再現(xiàn),該流數(shù)據(jù)是存儲(chǔ)目標(biāo)數(shù)據(jù);以及子塊數(shù)據(jù)處理單元22,其以通過將塊數(shù)據(jù)進(jìn)一步劃分成多條數(shù)據(jù)而生成的子塊數(shù)據(jù)為單位執(zhí)行存儲(chǔ)和再現(xiàn)。另外,作為存儲(chǔ)設(shè)備31和32,存儲(chǔ)系統(tǒng)10被配備有存儲(chǔ)塊數(shù)據(jù)和子塊數(shù)據(jù)的輔存儲(chǔ)設(shè)備31 (諸如硬盤驅(qū)動(dòng))以及存儲(chǔ)下文描述的子地址數(shù)據(jù)的主存儲(chǔ)設(shè)備32。應(yīng)當(dāng)注意,雖然在這一示例中根據(jù)待存儲(chǔ)的數(shù)據(jù)類型使用不同存儲(chǔ)設(shè)備作為存儲(chǔ)目的地,但是它們可以是任何種類的存儲(chǔ)設(shè)備或者可以是相同存儲(chǔ)設(shè)備。實(shí)際上,塊數(shù)據(jù)處理單元21和子塊數(shù)據(jù)處理單元22由在多個(gè)算術(shù)設(shè)備,諸如圖11中所示的加速器節(jié)點(diǎn)IOA的CPU(中央處理單元)和存儲(chǔ)節(jié)點(diǎn)IOB的CPU中安裝的程序來構(gòu)造。另外,輔存儲(chǔ)設(shè)備31主要由圖11中所示的存儲(chǔ)節(jié)點(diǎn)IOB的輔存儲(chǔ)設(shè)備來構(gòu)造,并且主存儲(chǔ)設(shè)備32主要由圖11中所示的加速器節(jié)點(diǎn)IOA的主存儲(chǔ)設(shè)備和存儲(chǔ)節(jié)點(diǎn)IOB的主存儲(chǔ)設(shè)備來構(gòu)造。例如,在存儲(chǔ)于存儲(chǔ)介質(zhì),諸如CD-ROM中的狀態(tài)中向存儲(chǔ)系統(tǒng)10提供上文提到的程序。備選地,可以在網(wǎng)絡(luò)上的另一服務(wù)器計(jì)算機(jī)的存儲(chǔ)設(shè)備中存儲(chǔ)該程序并且經(jīng)由網(wǎng)絡(luò)從另一服務(wù)器計(jì)算機(jī)向存儲(chǔ)系統(tǒng)10提供該程序。
下文將具體描述塊數(shù)據(jù)處理單元21和子塊數(shù)據(jù)處理單元22的配置。首先,將參照?qǐng)D13至圖15描述塊數(shù)據(jù)處理單元21 (塊數(shù)據(jù)去重單元)以塊數(shù)據(jù)為單位存儲(chǔ)和取回流數(shù)據(jù)的內(nèi)容尋址方法。首先,當(dāng)塊數(shù)據(jù)處理單元21如圖14中的箭頭Yl所示接收備份目標(biāo)數(shù)據(jù)A的輸入(其為流數(shù)據(jù))時(shí),塊數(shù)據(jù)處理單元21如圖13和圖14中的箭頭Y2所示將備份目標(biāo)數(shù)據(jù)A劃分成可變?nèi)萘?例如,平均64KB)或者預(yù)定容量(例如,64KB)的塊數(shù)據(jù)D。然后,基于這一塊數(shù)據(jù)D的數(shù)據(jù)內(nèi)容,塊數(shù)據(jù)處理單元21計(jì)算代表數(shù)據(jù)內(nèi)容的唯一哈希值H(內(nèi)容標(biāo)識(shí)信息)(箭頭Y3)。例如,通過使用預(yù)設(shè)哈希函數(shù)根據(jù)塊數(shù)據(jù)D的數(shù)據(jù)內(nèi)容來計(jì)算哈希值H。在加速器節(jié)點(diǎn)IOA中執(zhí)行塊數(shù)據(jù)處理單元21的過程。然后,通過使用備份目標(biāo)數(shù)據(jù)A的塊數(shù)據(jù)D的哈希值H,塊數(shù)據(jù)處理單元21校驗(yàn)是否已經(jīng)在存儲(chǔ)設(shè)備31中存儲(chǔ)了塊數(shù)據(jù)D。具體而言,哈希值H和如下內(nèi)容地址CA相關(guān)并且被登記于MFI (主片段索引)文件中,該內(nèi)容地址代表已經(jīng)被存儲(chǔ)的塊數(shù)據(jù)D的存儲(chǔ)位置。因此,在塊數(shù)據(jù)D的在存儲(chǔ)之前計(jì)算的哈希值H存在于MFI文件中的情況下,塊數(shù)據(jù)處理單元21可以確定已經(jīng)存儲(chǔ)了具有相同內(nèi)容的塊數(shù)據(jù)D (圖14中的箭頭Y4)。在這一情況下,塊數(shù)據(jù)處理單元21從MFI文件獲取與MFI內(nèi)的如下哈希值H有關(guān)的內(nèi)容地址CA,該哈希值與塊數(shù)據(jù)D在存儲(chǔ)之前的哈希值H —致。然后,塊數(shù)據(jù)處理單元21存儲(chǔ)這一內(nèi)容地址CA(地址數(shù)據(jù))作為需要存儲(chǔ)的塊數(shù)據(jù)D的內(nèi)容地址CA。備選地,塊數(shù)據(jù)處理單元21可以在樹結(jié)構(gòu)中存儲(chǔ)另一條地址數(shù)據(jù),該地址數(shù)據(jù)進(jìn)一步引用內(nèi)容地址CA,該內(nèi)容地址引用已經(jīng)被存儲(chǔ)的塊數(shù)據(jù)D。因而,通過使用這一內(nèi)容地址CA來引用的已經(jīng)存儲(chǔ)的數(shù)據(jù)用作需要被存儲(chǔ)的塊數(shù)據(jù)D,并且變得不必存儲(chǔ)需要被存儲(chǔ)的塊數(shù)據(jù)D。另外,塊數(shù)據(jù)處理單元21壓縮如上文描述的那樣確定為尚未存儲(chǔ)的塊數(shù)據(jù)D并且如圖14中的箭頭Y5所示將數(shù)據(jù)劃分成具有預(yù)定容量的多條片段數(shù)據(jù)。例如,如圖13中的附圖標(biāo)記D I至D9所示,塊數(shù)據(jù)處理單元21將數(shù)據(jù)劃分成九條片段數(shù)據(jù)(劃分?jǐn)?shù)據(jù)41)。另外,塊數(shù)據(jù)處理單元21生成冗余數(shù)據(jù)從而即使丟失了通過劃分而獲得的一些片段數(shù)據(jù),并且向通過劃分而獲得的片段數(shù)據(jù)41添加冗余數(shù)據(jù),仍然可以恢復(fù)原有塊數(shù)據(jù)。例如,如圖13中的附圖標(biāo)記DlO至D12所示,塊數(shù)據(jù)處理單元21添加三個(gè)片段數(shù)據(jù)(冗余數(shù)據(jù)42)。因此,塊數(shù)據(jù)處理單元21生成數(shù)據(jù)集40,該數(shù)據(jù)集包括由九個(gè)劃分?jǐn)?shù)據(jù)41和三個(gè)冗余數(shù)據(jù)組成的十二個(gè)片段數(shù)據(jù)。塊數(shù)據(jù)處理單元21的過程由一個(gè)存儲(chǔ)節(jié)點(diǎn)IOB執(zhí)行。然后,塊數(shù)據(jù)處理單元21分發(fā)并且向存儲(chǔ)設(shè)備31中形成的存儲(chǔ)區(qū)域中逐個(gè)存儲(chǔ)組成生成的數(shù)據(jù)集的片段數(shù)據(jù)。例如,如圖13中所示,在生成十二個(gè)片段數(shù)據(jù)Dl至D12的情況下,塊數(shù)據(jù)處理單元21向十二個(gè)存儲(chǔ)設(shè)備31中形成的數(shù)據(jù)存儲(chǔ)文件Fl至F12(數(shù)據(jù)存儲(chǔ)區(qū)域)之一中存儲(chǔ)片段數(shù)據(jù)Dl至D12之一(參見圖14中的箭頭Y6)。另外,塊數(shù)據(jù)處理單元21生成和管理內(nèi)容地址CA,該內(nèi)容地址代表如上文描述的在存儲(chǔ)設(shè)備31中存儲(chǔ)的片段數(shù)據(jù)Dl至D12的存儲(chǔ)位置,也就是將由片段數(shù)據(jù)Dl至D12恢復(fù)的塊數(shù)據(jù)D的存儲(chǔ)位置。具體而言,塊數(shù)據(jù)處理單元21通過組合基于存儲(chǔ)的塊數(shù)據(jù)D的內(nèi)容而計(jì)算的哈希值H的部分(短哈希)(例如,哈希值H中的開始8個(gè)字節(jié))與代表邏輯存儲(chǔ)位置的信息來生成內(nèi)容地址CA。然后,塊數(shù)據(jù)處理單元21向存儲(chǔ)系統(tǒng)10內(nèi)的文件系統(tǒng)、即加速器節(jié)點(diǎn)IOA返回該內(nèi)容地址CA(圖14中的箭頭Y7)。加速器節(jié)點(diǎn)IOA然后將標(biāo)識(shí)信息,諸如備份目標(biāo)數(shù)據(jù)的文件名與內(nèi)容地址CA相關(guān)并且在文件系統(tǒng)中管理它們。
另外,塊數(shù)據(jù)處理單元21將塊數(shù)據(jù)D的內(nèi)容地址CA與塊數(shù)據(jù)D的哈希值H相關(guān),并且相應(yīng)的存儲(chǔ)節(jié)點(diǎn)IOB在MFI文件中管理它們。因此,內(nèi)容地址CA與指定文件的信息、哈希值H等相關(guān)并且被存儲(chǔ)到加速器節(jié)點(diǎn)IOA和存儲(chǔ)節(jié)點(diǎn)IOB的存儲(chǔ)設(shè)備31中。另外,塊數(shù)據(jù)處理單元21執(zhí)行對(duì)取回如上文描述的那樣存儲(chǔ)的備份目標(biāo)數(shù)據(jù)的控制。例如,當(dāng)存儲(chǔ)系統(tǒng)10接受具有基于文件系統(tǒng)而指明的特定文件的取回請(qǐng)求(參見圖15中的箭頭Yll)時(shí),塊數(shù)據(jù)處理單元21首先指明由如下短哈希和邏輯位置的信息組成的內(nèi)容地址CA,該短哈希作為與涉及取回請(qǐng)求的文件對(duì)應(yīng)的哈希值的一部分(參見圖15中的箭頭Y12)。然后,塊數(shù)據(jù)處理單元21校驗(yàn)內(nèi)容地址CA是否被登記于MFI文件中(參見圖15中的箭頭13)。如果未登記內(nèi)容地址CA,則不存儲(chǔ)請(qǐng)求的數(shù)據(jù),從而塊數(shù)據(jù)處理單元21返回錯(cuò)誤響應(yīng)。另一方面,如果涉及取回請(qǐng)求的內(nèi)容地址CA被登記,則塊數(shù)據(jù)處理單元21指定由內(nèi)容地址CA指明的存儲(chǔ)位置并且取回在指定的存儲(chǔ)位置中存儲(chǔ)的每個(gè)片段數(shù)據(jù)作為被請(qǐng)求取回的數(shù)據(jù)(參見圖15中的箭頭Y14)。這時(shí),如果知道存儲(chǔ)相應(yīng)片段的數(shù)據(jù)存儲(chǔ)文件Fl至F12和片段數(shù)據(jù)之一在數(shù)據(jù)存儲(chǔ)文件中的存儲(chǔ)位置,則塊數(shù)據(jù)處理單元21可以指定其它片段數(shù)據(jù)的存儲(chǔ)位置,因?yàn)榇鎯?chǔ)位置相同。然后,塊數(shù)據(jù)處理單元21從響應(yīng)于取回請(qǐng)求而取回的相應(yīng)片段數(shù)據(jù)恢復(fù)塊數(shù)據(jù)D(參見圖15中的箭頭Y15)。另外,塊數(shù)據(jù)處理單元21連接多個(gè)恢復(fù)的塊數(shù)據(jù)D以恢復(fù)成數(shù)據(jù)組、諸如文件A并且向控制取回的加速器節(jié)點(diǎn)IOA返回(參見圖15中的箭頭Y16)。接下來,將參照?qǐng)D16至圖18描述子塊數(shù)據(jù)處理單元22 (子塊數(shù)據(jù)去重單元)。應(yīng)當(dāng)注意下文也將描述與上文描述的塊數(shù)據(jù)處理單元21的關(guān)系。首先,如圖16中所示,當(dāng)存儲(chǔ)備份流——該備份流是備份目標(biāo)數(shù)據(jù)——時(shí),塊數(shù)據(jù)處理單元21如上文描述的那樣將備份流劃分成多條塊數(shù)據(jù)B并且在執(zhí)行重復(fù)存儲(chǔ)消除時(shí)執(zhí)行向存儲(chǔ)設(shè)備31中的存儲(chǔ)過程。此外,子塊數(shù)據(jù)處理單元22執(zhí)行以下過程。首先,子塊數(shù)據(jù)處理單元22計(jì)算由作為備份流的一部分的預(yù)定條數(shù)的數(shù)據(jù)構(gòu)成的塊數(shù)據(jù)B集合的特征值,并且如果特征值滿足預(yù)設(shè)條件,則子塊數(shù)據(jù)處理單元22設(shè)置該數(shù)據(jù)集作為“錨序列”。例如,如圖16中的具有斜線的部分所示,子塊數(shù)據(jù)處理單元22計(jì)算三條塊數(shù)據(jù)B的哈希值作為特征值,并且如果特征值滿足設(shè)置的條件,使得后三位數(shù)的比特例如是“0”,則例如子塊數(shù)據(jù)處理單元22設(shè)置這三條數(shù)據(jù)作為“錨序列”。然后,如圖16中所示,子塊數(shù)據(jù)處理單元22生成“錨序列”指向的“錨”,并且每個(gè)“錨”存儲(chǔ)指向稱為“錨包”的數(shù)據(jù)存儲(chǔ)區(qū)域的指針。這樣,當(dāng)檢測(cè)到具有滿足設(shè)置的條件的特征值的“錨序列”時(shí),相互關(guān)聯(lián)地存儲(chǔ)特征值和“錨包”。然后,當(dāng)子塊數(shù)據(jù)處理單元22如上文描述的那樣檢測(cè)到“錨序列”時(shí),子塊數(shù)據(jù)處理單元22進(jìn)一步將相鄰塊數(shù)據(jù)B——也就是在檢測(cè)到的錨序列所屬的錨窗內(nèi)的塊數(shù)據(jù)B——?jiǎng)澐殖啥鄺l以生成多條子塊數(shù)據(jù)SB。例如,如果塊數(shù)據(jù)B的數(shù)據(jù)容量是64KB,則子塊數(shù)據(jù)處理單元22將塊數(shù)據(jù)B劃分成多條子塊數(shù)據(jù)SB (例如,它是平均8KB大小的8條數(shù)據(jù))。另外,子塊數(shù)據(jù)處理單元22計(jì)算哈希值作為基于每一條子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的值并且關(guān)聯(lián)哈希值與指向每一條子塊數(shù)據(jù)的指針。然后,子塊數(shù)據(jù)處理單元22在存儲(chǔ)設(shè)備31中存儲(chǔ)子塊數(shù)據(jù)并且也在與檢測(cè)到的“錨序列”關(guān)聯(lián)的“錨包”中依次存儲(chǔ)在哈希值與指向子塊數(shù)據(jù)的指針之間的關(guān)聯(lián)。在這一示例中,將在錨包中存儲(chǔ)的在指向子塊數(shù)據(jù)的指針與哈希值之間的關(guān)聯(lián)用作代表子塊數(shù)據(jù)的存儲(chǔ)目的地的子地址數(shù)據(jù)。然而,子塊數(shù)據(jù)的哈希值本身可以用作指向子塊數(shù)據(jù)的地址數(shù)據(jù)。應(yīng)當(dāng)注意,在主存儲(chǔ)設(shè)備32中存儲(chǔ)“錨包”。子塊數(shù)據(jù)處理單元22如上文描述的那樣檢測(cè)“錨序列”并且如果“錨序列”的特征值已經(jīng)存在于主存儲(chǔ)設(shè)備32中,則取回與特征值關(guān)聯(lián)的并且已經(jīng)存儲(chǔ)于主存儲(chǔ)設(shè)備32中的“錨包”以執(zhí)行重復(fù)存儲(chǔ)消除過程。具體而言,子塊數(shù)據(jù)處理單元22比較通過劃分備份流的塊數(shù)據(jù)而生成的子塊數(shù)據(jù)的哈希值(子地址數(shù)據(jù))與取回的“錨包”中的子地址數(shù)據(jù),并且如果存在相同值,則確定已經(jīng)在存儲(chǔ)設(shè)備31中存儲(chǔ)了子塊地址,從而它被重復(fù)。因而,子塊數(shù)據(jù)處理單元22將子地址數(shù)據(jù)作為它所指向的備份流的子塊數(shù)據(jù)存儲(chǔ)在“錨包”中以消除重復(fù)存儲(chǔ)。另一方面,如果在取回的“錨包”中未發(fā)現(xiàn)通過劃分備份流的塊數(shù)據(jù)而生成的子塊數(shù)據(jù)的哈希值(子地址數(shù)據(jù)),則子塊數(shù)據(jù)處理單元22在存儲(chǔ)設(shè)備31中重新存儲(chǔ)子塊數(shù)據(jù),并且將子塊數(shù)據(jù)的哈希值作為指向子塊數(shù)據(jù)的子地址數(shù)據(jù)存儲(chǔ)在“錨包”中。應(yīng)當(dāng)注意,通過將塊數(shù)據(jù)劃分成子塊數(shù)據(jù)而執(zhí)行的重復(fù)存儲(chǔ)消除可以僅應(yīng)用于塊數(shù)據(jù)處理單元21未去重的塊數(shù)據(jù)。這里,將參照?qǐng)D17和圖18描述對(duì)子塊數(shù)據(jù)執(zhí)行的重復(fù)存儲(chǔ)消除過程的具體示例。首先,假設(shè)在尚未存儲(chǔ)任何數(shù)據(jù)的狀態(tài)中在存儲(chǔ)系統(tǒng)10中存儲(chǔ)“備份流I”。這時(shí),在存儲(chǔ)設(shè)備31中存儲(chǔ)多條塊數(shù)據(jù),并且也存儲(chǔ)基于相應(yīng)多條塊數(shù)據(jù)的哈希值、指向多條塊數(shù)據(jù)的多條地址數(shù)據(jù)。同時(shí),計(jì)算預(yù)定條數(shù)的塊數(shù)據(jù)的特征值,并且當(dāng)檢測(cè)到其中特征值滿足設(shè)置的條件的“錨序列”時(shí),在主存儲(chǔ)設(shè)備32中生成與之關(guān)聯(lián)的“錨包”。然后,將與“錨序列”相鄰的塊數(shù)據(jù)劃分成多條子塊數(shù)據(jù)并且存儲(chǔ)于輔存儲(chǔ)設(shè)備31中。另外,計(jì)算并且將相應(yīng)多條子塊數(shù)據(jù)的哈希值作為指向相應(yīng)多條子塊數(shù)據(jù)的子地址數(shù)據(jù)依次存儲(chǔ)在“錨包”中。然后,假設(shè)在存儲(chǔ)設(shè)備10中存儲(chǔ)“備份流2”作為“備份流I”的更新,首先將“備份流2”依次劃分成塊數(shù)據(jù),以數(shù)據(jù)塊為單位對(duì)這些塊數(shù)據(jù)執(zhí)行重復(fù)存儲(chǔ)消除過程。在這一示例中,假設(shè)僅更新附圖標(biāo)記BI'指示的塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容。在該情況下,由于在存儲(chǔ)設(shè)備31中未存儲(chǔ)塊數(shù)據(jù)BI',所以不執(zhí)行以塊數(shù)據(jù)為單位的重復(fù)存儲(chǔ)消除。然而,在本發(fā)明中,以子塊數(shù)據(jù)為單位對(duì)塊數(shù)據(jù)BI'執(zhí)行重復(fù)存儲(chǔ)消除。如上文描述的那樣,在以塊數(shù)據(jù)為單位處理“備份流”2時(shí),計(jì)算預(yù)定條數(shù)的塊數(shù)據(jù)的特征值,檢測(cè)其中特征值滿足設(shè)置的條件的“錨序列”,并且校驗(yàn)特征值是否已知,也就是說,已經(jīng)在主存儲(chǔ)設(shè)備32中存儲(chǔ)了特征值。如果已經(jīng)存儲(chǔ)了檢測(cè)到的“錨序列”的特征值,則取回主存儲(chǔ)設(shè)備32中的與特征值關(guān)聯(lián)的“錨包”。這意味著在這一示例中取回關(guān)于“備份流I”存儲(chǔ)的如下“錨包”,在該錨包中存儲(chǔ)了作為子地址數(shù)據(jù)的、通過劃分塊數(shù)據(jù)B I而生成的子塊數(shù)據(jù)的哈希值。另外,當(dāng)如上文描述的那樣檢測(cè)“備份流2”的“錨序列”時(shí),將與檢測(cè)到的“錨序列”相鄰的塊數(shù)據(jù)劃分成多條子塊數(shù)據(jù),并且計(jì)算它們的哈希值。具體而言,如上文描述的那樣對(duì)不以塊數(shù)據(jù)為單位對(duì)其執(zhí)行重復(fù)存儲(chǔ)消除的塊數(shù)據(jù)BI'執(zhí)行這一過程。然后,比較子塊數(shù)據(jù)BI'的計(jì)算的哈希值與取回的“錨包”中的子地址數(shù)據(jù)以校驗(yàn)是否存在相同值。如果有相同值,則在已經(jīng)在存儲(chǔ)設(shè)備中存儲(chǔ)了對(duì)應(yīng)的子塊數(shù)據(jù)時(shí),指向“錨包”中的子地址數(shù)據(jù)作為待存儲(chǔ)的子塊數(shù)據(jù)。另一方面,如果無(wú)相同值,則在存儲(chǔ)設(shè)備31中新存儲(chǔ)對(duì)應(yīng)子塊數(shù)據(jù),并且在“錨包”中包括哈希值作為指向存儲(chǔ)的子塊數(shù)據(jù)的子地址數(shù)據(jù)。
例如,如圖18中所示,如果在未以塊數(shù)據(jù)為單位對(duì)其執(zhí)行重復(fù)存儲(chǔ)消除的塊數(shù)據(jù)BI'之中,已經(jīng)以子塊數(shù)據(jù)為單位存儲(chǔ)了它的一些子塊數(shù)據(jù)SB條(附圖標(biāo)記D)而未存儲(chǔ)陰影所示的一些子塊數(shù)據(jù)SB條(A,B,C,D)(附圖標(biāo)記N),則在接合狀態(tài)中存儲(chǔ)這些子塊數(shù)據(jù)條(A,B, C,D)。由此,可以減少指向這些子塊數(shù)據(jù)條的元數(shù)據(jù)。如上文描述的那樣,如果未以塊數(shù)據(jù)為單位而是以子塊數(shù)據(jù)為單位執(zhí)行重復(fù)存儲(chǔ)消除,則與存儲(chǔ)整個(gè)塊數(shù)據(jù)BI'的情況比較可以提高重復(fù)存儲(chǔ)消除的效率。另外,在其中存儲(chǔ)和取回速度比輔存儲(chǔ)設(shè)備31的存儲(chǔ)和取回速度更高的主存儲(chǔ)設(shè)備32中存儲(chǔ)“錨包”中的用于校驗(yàn)是否已經(jīng)存儲(chǔ)了子塊數(shù)據(jù)的子地址數(shù)據(jù)。這樣,有可能加速以子塊為單位的重復(fù)存儲(chǔ)消除過程。然而,可以在輔存儲(chǔ)設(shè)備31中或者在任何存儲(chǔ)設(shè)備中存儲(chǔ)“錨包”。另外,可以在預(yù)定時(shí)間(例如,定期地)暫時(shí)刪除“錨包”。由此,可以消除指向已經(jīng)不再使用的子塊數(shù)據(jù)的子地址數(shù)據(jù),由此有可能防止主存儲(chǔ)設(shè)備32的存儲(chǔ)容量膨脹。在本實(shí)施例中,生成與“錨序列”對(duì)應(yīng)的“錨”指向的多個(gè)“錨包”。例如,如圖16中所示,如果依次檢測(cè)與附圖標(biāo)記A和B對(duì)應(yīng)的“錨序列”,則不僅通過指向?qū)?yīng)“錨包”(參見實(shí)線箭頭)來關(guān)聯(lián)而且通過指向與將依次檢測(cè)的、附圖標(biāo)記B所示的“錨”對(duì)應(yīng)的另一“錨包”(虛線箭頭)來關(guān)聯(lián)附圖標(biāo)記A所示的“錨”。由此,由于有可能容易訪問與檢測(cè)到的“錨序列”的位置接近的子塊數(shù)據(jù)的“錨包”,所以可以更容易發(fā)現(xiàn)重復(fù)數(shù)據(jù)。<補(bǔ)充注釋>可以描述上文公開的示例性實(shí)施例的全部或者一部分作為以下補(bǔ)充注釋。下文將描述存儲(chǔ)系統(tǒng)(參見圖19)的配置、存儲(chǔ)程序的計(jì)算機(jī)可讀介質(zhì)和信息處理方法的概況。然而,本發(fā)明不限于下文描述的配置。<補(bǔ)充注釋1>一種存儲(chǔ)系統(tǒng)100,包括:塊數(shù)據(jù)去重單元101,其在存儲(chǔ)設(shè)備中存儲(chǔ)通過將數(shù)據(jù)流劃分成任意大小的塊而生成的塊數(shù)據(jù),基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的地址數(shù)據(jù)指向所述塊數(shù)據(jù),并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條塊數(shù)據(jù)時(shí),在所述存儲(chǔ)設(shè)備中存儲(chǔ)指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述地址數(shù)據(jù)作為所述另一條塊數(shù)據(jù),以由此執(zhí)行所述塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除;以及子塊數(shù)據(jù)去重單元102,在所述存儲(chǔ)設(shè)備中存儲(chǔ)通過將所述塊數(shù)據(jù)進(jìn)一步劃分成多條數(shù)據(jù)而生成的子塊數(shù)據(jù),基于所述子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的一條子地址數(shù)據(jù)指向所述多條子塊數(shù)據(jù)中的每一條子塊數(shù)據(jù),在預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)包括多條子地址數(shù)據(jù)的子地址數(shù)據(jù)組,并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條子塊數(shù)據(jù)時(shí),在所述預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述一條子地址數(shù)據(jù)作為所述另一條子塊數(shù)據(jù),以由此執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除?!囱a(bǔ)充注釋2>根據(jù)補(bǔ)充注釋I所述的存儲(chǔ)系統(tǒng),其中:所述子塊數(shù)據(jù)去重單元對(duì)通過劃分所述塊數(shù)據(jù)去重單元未對(duì)其執(zhí)行重復(fù)存儲(chǔ)消除的所述另一塊數(shù)據(jù)而生成的所述多條子塊數(shù)據(jù)執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。
〈補(bǔ)充注釋3>根據(jù)補(bǔ)充注釋I所述的存儲(chǔ)系統(tǒng),其中:如果基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容從所述數(shù)據(jù)流中的至少一條塊數(shù)據(jù)檢測(cè)到的特征值滿足設(shè)置的條件,則所述子塊數(shù)據(jù)去重單元在所述預(yù)定存儲(chǔ)設(shè)備中與滿足所述設(shè)置的條件的所述特征值關(guān)聯(lián)地存儲(chǔ)指向通過劃分與從其檢測(cè)到滿足所述設(shè)置的條件的所述特征值的所述塊數(shù)據(jù)相鄰的另一條塊數(shù)據(jù)而生成的多條子塊數(shù)據(jù)的所述子地址數(shù)據(jù)組?!囱a(bǔ)充注釋4>根據(jù)補(bǔ)充注釋3所述的存儲(chǔ)系統(tǒng),其中:如果已經(jīng)在所述預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)了從所述數(shù)據(jù)流中的所述一條塊數(shù)據(jù)檢測(cè)到的所述特征值,則所述子塊數(shù)據(jù)去重單元將已經(jīng)與所述特征值關(guān)聯(lián)地存儲(chǔ)的所述子地址數(shù)據(jù)組與指向構(gòu)成與從其檢測(cè)到所述特征值的所述塊數(shù)據(jù)相鄰的另一塊數(shù)據(jù)的多條子塊數(shù)據(jù)的子地址數(shù)據(jù)組進(jìn)行比較,以由此執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。<補(bǔ)充注釋5>根據(jù)補(bǔ)充注釋4所述的存儲(chǔ)系統(tǒng),其中:如果作為在所述子地址數(shù)據(jù)組之間的比較的結(jié)果而未在所述存儲(chǔ)設(shè)備中存儲(chǔ)多條所述子塊數(shù)據(jù),則所述子塊數(shù)據(jù)去重單元通過組合所述多條子塊數(shù)據(jù)來存儲(chǔ)它們。<補(bǔ)充注釋6>根據(jù)補(bǔ)充注釋3所述的存儲(chǔ)系統(tǒng),其中:所述子塊數(shù)據(jù)去重單元在所述預(yù)定存儲(chǔ)設(shè)備中與多個(gè)子地址數(shù)據(jù)組關(guān)聯(lián)地存儲(chǔ)滿足所述設(shè)置的條件的所述特征值。<補(bǔ)充注釋7>根據(jù)補(bǔ)充注釋2所述的存儲(chǔ)系統(tǒng),其中:所述子塊數(shù)據(jù)去重單元在其中讀取和寫入速度比存儲(chǔ)所述塊數(shù)據(jù)和所述子塊數(shù)據(jù)的所述存儲(chǔ)設(shè)備的讀取和寫入速度更高的所述預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)與滿足所述設(shè)置的條件的所述特征值關(guān)聯(lián)的所述子地址數(shù)據(jù)組。<補(bǔ)充注釋8>一種存儲(chǔ)程序的計(jì)算機(jī)可讀介質(zhì),所述程序包括用于使信息處理器設(shè)備實(shí)現(xiàn)以下單元的指令:塊數(shù)據(jù)去重單元,其在存儲(chǔ)設(shè)備中存儲(chǔ)通過將數(shù)據(jù)流劃分成任意大小的塊而生成的塊數(shù)據(jù),基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的地址數(shù)據(jù)指向所述塊數(shù)據(jù),并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述地址數(shù)據(jù)作為所述另一條塊數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)設(shè)備中,以由此執(zhí)行所述塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除;以及子塊數(shù)據(jù)去重單元,在所述存儲(chǔ)設(shè)備中存儲(chǔ)通過將所述塊數(shù)據(jù)進(jìn)一步劃分成多條數(shù)據(jù)而生成的子塊數(shù)據(jù),基于所述子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的一條子地址數(shù)據(jù)指向所述多條子塊數(shù)據(jù)中的每一條子塊數(shù)據(jù),在預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)包括多條子地址數(shù)據(jù)的子地址數(shù)據(jù)組,并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條子塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述一條子地址數(shù)據(jù)作為所述另一條子塊數(shù)據(jù)存儲(chǔ)在所述預(yù)定存儲(chǔ)設(shè)備中,以由此執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。<補(bǔ)充注釋9>根據(jù)補(bǔ)充注釋8所述的存儲(chǔ)程序的計(jì)算機(jī)可讀介質(zhì),其中:所述子塊數(shù)據(jù)去重單元對(duì)通過劃分所述塊數(shù)據(jù)去重單元未對(duì)其執(zhí)行重復(fù)存儲(chǔ)消除的所述另一塊數(shù)據(jù)而生成的所述多條子塊數(shù)據(jù)執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。<補(bǔ)充注釋10>根據(jù)補(bǔ)充注釋8所述的存儲(chǔ)程序的計(jì)算機(jī)可讀介質(zhì),其中:如果基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容從所述數(shù)據(jù)流中的至少一條塊數(shù)據(jù)檢測(cè)到的特征值滿足設(shè)置的條件,則所述子塊數(shù)據(jù)去重單元在所述預(yù)定存儲(chǔ)設(shè)備中與滿足所述設(shè)置的條件的所述特征值關(guān)聯(lián)地存儲(chǔ)指向通過劃分與從其檢測(cè)到滿足所述設(shè)置的條件的所述特征值的所述塊數(shù)據(jù)相鄰的另一條塊數(shù)據(jù)而生成的多條子塊數(shù)據(jù)的所述子地址數(shù)據(jù)組?!囱a(bǔ)充注釋11>—種信息處理方法,包括:在存儲(chǔ)設(shè)備中存儲(chǔ)通過將數(shù)據(jù)流劃分成任意大小的塊而生成的塊數(shù)據(jù),基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的地址數(shù)據(jù)指向所述塊數(shù)據(jù),并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述地址數(shù)據(jù)作為所述另一條塊數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)設(shè)備中,以由此執(zhí)行所述塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除;以及在所述存儲(chǔ)設(shè)備中存儲(chǔ)通過將所述塊數(shù)據(jù)進(jìn)一步劃分成多條數(shù)據(jù)而生成的子塊數(shù)據(jù),基于所述子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的一條子地址數(shù)據(jù)指向多條子塊數(shù)據(jù)中的每一條子塊數(shù)據(jù),在預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)包括多條子地址數(shù)據(jù)的子地址數(shù)據(jù)組,并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條子塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述一條子地址數(shù)據(jù)作為所述另一條子塊數(shù)據(jù)存儲(chǔ)在所述預(yù)定存儲(chǔ)設(shè)備中,以由此執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。<補(bǔ)充注釋12>根據(jù)補(bǔ)充注釋11所述的信息處理方法,還包括:對(duì)通過劃分未對(duì)其執(zhí)行重復(fù)存儲(chǔ)消除的所述另一塊數(shù)據(jù)而生成的所述多條子塊數(shù)據(jù)執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。<補(bǔ)充注釋13>根據(jù)補(bǔ)充注釋12所述的信息處理方法,還包括:如果基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容而從所述數(shù)據(jù)流中的至少一條塊數(shù)據(jù)檢測(cè)到的特征值滿足設(shè)置的條件,則在所述預(yù)定存儲(chǔ)設(shè)備中與滿足所述設(shè)置的條件的所述特征值關(guān)聯(lián)地存儲(chǔ)指向通過劃分與從其檢測(cè)到滿足所述設(shè)置的條件的所述特征值的所述塊數(shù)據(jù)相鄰的另一條塊數(shù)據(jù)而生成的多條子塊數(shù)據(jù)的所述子地址數(shù)據(jù)組。
權(quán)利要求
1.一種存儲(chǔ)系統(tǒng),包括: 塊數(shù)據(jù)去重單元,所述塊數(shù)據(jù)去重單元在存儲(chǔ)設(shè)備中存儲(chǔ)通過將數(shù)據(jù)流劃分成任意大小的塊而生成的塊數(shù)據(jù),所述塊數(shù)據(jù)由基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的地址數(shù)據(jù)來指向,并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條塊數(shù)據(jù)時(shí),在所述存儲(chǔ)設(shè)備中存儲(chǔ)指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述地址數(shù)據(jù)作為所述另一條塊數(shù)據(jù),以由此執(zhí)行所述塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除;以及 子塊數(shù)據(jù)去重單元,所述子塊數(shù)據(jù)去重單元在所述存儲(chǔ)設(shè)備中存儲(chǔ)通過將所述塊數(shù)據(jù)進(jìn)一步劃分成多條數(shù)據(jù)而生成的子塊數(shù)據(jù),所述多條子塊數(shù)據(jù)中的每一條子塊數(shù)據(jù)由基于所述子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的一條子地址數(shù)據(jù)來指向,在預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)包括多條子地址數(shù)據(jù)的子地址數(shù)據(jù)組,并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條子塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述一條子地址數(shù)據(jù)作為所述另一條子塊數(shù)據(jù)存儲(chǔ)在所述預(yù)定存儲(chǔ)設(shè)備中,以由此執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。
2.根據(jù)權(quán)利要求1所述的存儲(chǔ)系統(tǒng),其中: 所述子塊數(shù)據(jù)去重單元對(duì)通過劃分所述塊數(shù)據(jù)去重單元未對(duì)其執(zhí)行重復(fù)存儲(chǔ)消除的另一塊數(shù)據(jù)而生成的所述多條子塊數(shù)據(jù)執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。
3.根據(jù)權(quán)利要求1所述的存儲(chǔ)系統(tǒng),其中: 如果基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容而從所述數(shù)據(jù)流中的至少一條塊數(shù)據(jù)檢測(cè)到的特征值滿足設(shè)置的條件,則所述子塊數(shù)據(jù)去重單元在所述預(yù)定存儲(chǔ)設(shè)備中與滿足所述設(shè)置的條件的所述特征值相關(guān)聯(lián)地存儲(chǔ)所述子地址數(shù)據(jù)組,所述子地址數(shù)據(jù)組指向通過劃分與從其檢測(cè)到滿足所述設(shè)置的條件的所述特征值的所述塊數(shù)據(jù)相鄰的另一條塊數(shù)據(jù)而生成的多條子塊數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的存儲(chǔ)系統(tǒng),其中: 如果從所述數(shù)據(jù)流中的所述一條塊數(shù)據(jù)檢測(cè)到的所述特征值已經(jīng)被存儲(chǔ)在所述預(yù)定存儲(chǔ)設(shè)備中,則所述子塊數(shù)據(jù)去重單元將已經(jīng)與所述特征值相關(guān)聯(lián)地存儲(chǔ)的所述子地址數(shù)據(jù)組與指向構(gòu)成與從其檢測(cè)到所述特征值的所述塊數(shù)據(jù)相鄰的另一塊數(shù)據(jù)的多條子塊數(shù)據(jù)的子地址數(shù)據(jù)組進(jìn)行比較,以由此執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。
5.根據(jù)權(quán)利要求4所述的存儲(chǔ)系統(tǒng),其中: 如果作為在所述子地址數(shù)據(jù)組之間的比較的結(jié)果而未在所述存儲(chǔ)設(shè)備中存儲(chǔ)多條所述子塊數(shù)據(jù),則所述子塊數(shù)據(jù)去重單元通過組合所述多條子塊數(shù)據(jù)來存儲(chǔ)它們。
6.根據(jù)權(quán)利要求3所述的存儲(chǔ)系統(tǒng),其中: 所述子塊數(shù)據(jù)去重單元在所述預(yù)定存儲(chǔ)設(shè)備中與多個(gè)子地址數(shù)據(jù)組相關(guān)聯(lián)地存儲(chǔ)滿足所述設(shè)置的條件的所述特征值。
7.根據(jù)權(quán)利要求2所述的存儲(chǔ)系統(tǒng),其中: 所述子塊數(shù)據(jù)去重單元在所述預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)與滿足所述設(shè)置的條件的所述特征值相關(guān)聯(lián)的所述子地址數(shù)據(jù)組,其中所述預(yù)定存儲(chǔ)設(shè)備的讀取和寫入速度比存儲(chǔ)所述塊數(shù)據(jù)和所述子塊數(shù)據(jù)的所述存儲(chǔ)設(shè)備的讀取和寫入速度更高。
8.一種存儲(chǔ)程序的計(jì)算機(jī)可讀介質(zhì),所述程序包括指令,用于使信息處理器設(shè)備實(shí)現(xiàn): 塊數(shù)據(jù)去重單元,所述塊數(shù)據(jù)去重單元在存儲(chǔ)設(shè)備中存儲(chǔ)通過將數(shù)據(jù)流劃分成任意大小的塊而生成的塊數(shù)據(jù),所述塊數(shù)據(jù)由基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的地址數(shù)據(jù)來指向,并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條塊數(shù)據(jù)時(shí),在所述存儲(chǔ)設(shè)備中存儲(chǔ)指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述地址數(shù)據(jù)作為所述另一條塊數(shù)據(jù),以由此執(zhí)行所述塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除;以及 子塊數(shù)據(jù)去重單元,所述子塊數(shù)據(jù)去重單元在所述存儲(chǔ)設(shè)備中存儲(chǔ)通過將所述塊數(shù)據(jù)進(jìn)一步劃分成多條數(shù)據(jù)而生成的子塊數(shù)據(jù),所述多條子塊數(shù)據(jù)中的每一條子塊數(shù)據(jù)由基于所述子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的一條子地址數(shù)據(jù)來指向,在預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)包括多條子地址數(shù)據(jù)的子地址數(shù)據(jù)組,并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條子塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述一條子地址數(shù)據(jù)作為所述另一條子塊數(shù)據(jù)存儲(chǔ)在所述預(yù)定存儲(chǔ)設(shè)備中,以由此執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。
9.根據(jù)權(quán)利要求8所述的存儲(chǔ)所述程序的計(jì)算機(jī)可讀介質(zhì),其中: 所述子塊數(shù)據(jù)去重單 元對(duì)通過劃分所述塊數(shù)據(jù)去重單元未對(duì)其執(zhí)行重復(fù)存儲(chǔ)消除的所述另一塊數(shù)據(jù)而生成的所述多條子塊數(shù)據(jù)執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。
10.根據(jù)權(quán)利要求8所述的存儲(chǔ)所述程序的計(jì)算機(jī)可讀介質(zhì),其中: 如果基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容而從所述數(shù)據(jù)流中的至少一條塊數(shù)據(jù)檢測(cè)到的特征值滿足設(shè)置的條件,則所述子塊數(shù)據(jù)去重單元在所述預(yù)定存儲(chǔ)設(shè)備中與滿足所述設(shè)置的條件的所述特征值相關(guān)聯(lián)地存儲(chǔ)所述子地址數(shù)據(jù)組,所述子地址數(shù)據(jù)組指向通過劃分與從其檢測(cè)到滿足所述設(shè)置的條件的所述特征值的所述塊數(shù)據(jù)相鄰的另一條塊數(shù)據(jù)而生成的多條子塊數(shù)據(jù)。
11.一種信息處理方法,包括: 在存儲(chǔ)設(shè)備中存儲(chǔ)通過將數(shù)據(jù)流劃分成任意大小的塊而生成的塊數(shù)據(jù),所述塊數(shù)據(jù)由基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的地址數(shù)據(jù)來指向,并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條塊數(shù)據(jù)時(shí),在所述存儲(chǔ)設(shè)備中存儲(chǔ)指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述塊數(shù)據(jù)的所述地址數(shù)據(jù)作為所述另一條塊數(shù)據(jù),以由此執(zhí)行所述塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除;以及 在所述存儲(chǔ)設(shè)備中存儲(chǔ)通過將所述塊數(shù)據(jù)進(jìn)一步劃分成多條數(shù)據(jù)而生成的子塊數(shù)據(jù),所述多條子塊數(shù)據(jù)中的每一條子塊數(shù)據(jù)由基于所述子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的一條子地址數(shù)據(jù)來指向,在預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)包括多條子地址數(shù)據(jù)的子地址數(shù)據(jù)組,并且當(dāng)嘗試在所述存儲(chǔ)設(shè)備中存儲(chǔ)具有與已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)內(nèi)容的另一條子塊數(shù)據(jù)時(shí),將指向已經(jīng)被存儲(chǔ)在所述存儲(chǔ)設(shè)備中的所述子塊數(shù)據(jù)的所述一條子地址數(shù)據(jù)作為所述另一條子塊數(shù)據(jù)存儲(chǔ)在所述預(yù)定存儲(chǔ)設(shè)備中,以由此執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。
12.根據(jù)權(quán)利要求11所述的信息處理方法,還包括: 對(duì)通過劃分未對(duì)其執(zhí)行重復(fù)存儲(chǔ)消除的所述另一塊數(shù)據(jù)而生成的所述多條子塊數(shù)據(jù)執(zhí)行所述子塊數(shù)據(jù)的重復(fù)存儲(chǔ)消除。
13.根據(jù)權(quán)利要求12所述的信息處理方法,還包括: 如果基于所述塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容而從所述數(shù)據(jù)流中的至少一條塊數(shù)據(jù)檢測(cè)到的特征值滿足設(shè)置的條件,則在所述預(yù)定存儲(chǔ)設(shè)備中與滿足所述設(shè)置的條件的所述特征值相關(guān)聯(lián)地存儲(chǔ)所述子地址數(shù)據(jù)組,所述子地址數(shù)據(jù)組指向通過劃分與從其檢測(cè)到滿足所述設(shè)置的條件的所述特征值的所述塊 數(shù)據(jù)相鄰的另一條塊數(shù)據(jù)而生成的多條子塊數(shù)據(jù)。
全文摘要
以通過將數(shù)據(jù)流劃分成任意大小的塊而生成的塊數(shù)據(jù)為單位執(zhí)行重復(fù)存儲(chǔ)消除。另外,通過將塊數(shù)據(jù)進(jìn)一步劃分成多條數(shù)據(jù)來生成子塊數(shù)據(jù),并且在預(yù)定存儲(chǔ)設(shè)備中存儲(chǔ)基于多條子塊數(shù)據(jù)中的每一條子塊數(shù)據(jù)的數(shù)據(jù)內(nèi)容的子地址數(shù)據(jù)。這樣,也基于子地址數(shù)據(jù)以子塊數(shù)據(jù)為單位執(zhí)行重復(fù)存儲(chǔ)消除。
文檔編號(hào)G06F12/00GK103098035SQ20118004180
公開日2013年5月8日 申請(qǐng)日期2011年8月25日 優(yōu)先權(quán)日2010年8月31日
發(fā)明者B·羅曼斯基, L·赫爾特, W·基利恩, K·利霍塔, C·達(dá)布尼克基 申請(qǐng)人:日本電氣株式會(huì)社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1