存储系统的利记博彩app

文档序号:6361550阅读:259来源:国知局
专利名称:存储系统的利记博彩app
技术领域
本发明涉及一种存储系统,并且具体地涉及一种具有数据去重(deduplication)的存储系统。
背景技术
去重的主要价值显然地在于减少所需存储空间,这转译成提高的可靠性和由于减少的功率消耗和总体更低的设施成本所致的显著操作节省。然而,为了这些节省具体化,需要考虑为了不仅保持备份数据而且保持所有类型的元数据(例如,备份应用元数据、中间级元数据(如文件系统)以及用于定位和去重的恰当后端元数据)而必需的总存储空间。向图片添加元数据不仅对于估计由去重产生的节省是必要的,而且经常改变特定存储系统中的各种去重备选的相关效用。如今,用于将备份数据划分成块组(chunk)以进行去重的标准技术是内容限定的块组化(⑶C)(NPL 16,20) ο它使用Rabin指纹(NPL 22)以选择输入流中的块组边界来产生可变长度的块组。它不维持任何状态,并且它在原有流中存在数据插入和删除时有效,因为在下一块分割器运行时回调未修改的切割点,从而识别未改变的块组以用于去重。另外,为了良好地工作,CDC无需知道备份流边界和它们的排序。这与商业设置的现实相得益彰,其中标准备份应用通常假设“哑”存储后端,这使得该信息向后端的传递不可能。引用列表非专利文献

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,FAST' 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,FAST(2010),pp.239-252。NPL 11:KULKARNI, P.,D0UGLIS,F.,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,First USENIX conference on File and Storage Technologies (蒙特里,CA,2002),USENIX Association,pp.89-101。NPL 22:RABIN, M.,Fingerprinting by random polynomials, Tech.Rep.TR-15-81(1981)0NPL 23:RHEA,S.,COX, R.,和 PESTEREV,A.,Fast,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,FAST' 08 的 Proceedings of the 6thUSENIX Conference on File and Storage Technologies (伯克利,CA,USA,2008),USENIXAssociation,pp.1—14。

发明内容
技术问题虽然CDC产生的块组有可变长度,但是它们的实际大小集中在预期的块组大小值的周围,该预期的块组大小值是CDC算法的参数。当使用CDC时,对于任何给定的备份流序列和特定后端,存在提供最佳去重的最优预期块组值。这一选择依赖于后续流中的数据修改的类型和频率以及在块组表示上施加的元数据开销。由于元数据开销,因此使用小块组并非最优,另外,小块组也往往负面地影响性能。另一方面,较大块组也经常在后续备份中的修改的粒度为细粒度时次优。这些折衷提示选择应当在给定存储系统中良好地起作用的适度的预期块组大小。然而可以经常比这做得更好,因为备份流中的改变粒度即使对于一个备份序列也并不恒定(更不用说跨越多个无关备份序列)。这样,本发明的示例目的是提供一种能够实现更高效数据去重的存储系统。对问题的解决方案根据本发明的一个方面,一种存储系统包括:块(block)数据去重单元,其在存储设备中存储通过将数据流划分成任意大小的块而生成的块数据,基于块数据的数据内容的地址数据指向该块数据,并且当尝试在存储设备中存储具有与已经被存储在存储设备中的块数据的数据内容相同的数据内容的另一条块数据时,将指向已经被存储在存储设备中的块数据的地址数据作为另一条块数据存储在存储设备中,以由此执行块数据的重复存储消除。该存储系统还包括:子块数据去重单元,其在存储设备中存储通过将块数据进一步划分成多条数据而生成的子块数据,基于子块数据的数据内容的一条子地址数据指向多条子块数据中的每一条子块数据,在预定存储设备中存储包括多条子地址数据的子地址数据组,并且当尝试在存储设备中存储具有与已经被存储在存储设备中的子块数据的数据内容相同的数据内容的另一条子块数据时,将指向已经被存储在存储设备中的子块数据的一条子地址数据作为另一条子块数据存储在预定存储设备中,以由此执行子块数据的重复存储消除。根据本发明的另一方面,一种存储程序的计算机可读介质,该程序包括用于使信息处理器设备实现以下单元的指令:块数据去重单元,其在存储设备中存储通过将数据流划分成任意大小的块而生成的块数据,基于块数据的数据内容的地址数据指向该块数据,并且当尝试在存储设备中存储具有与已经被存储在存储设备中的块数据的数据内容相同的数据内容的另一条块数据时,将指向已经被存储在存储设备中的块数据的地址数据作为另一条块数据存储在存储设备中,以由此执行块数据的重复存储消除;以及子块数据去重单元,其在存储设备中存储通过将块数据进一步划分成多条数据而生成的子块数据,基于子块数据的数据内容的一条子地址数据指向多条子块数据中的每一条子块数据,在预定存储设备中存储包括多条子地址数据的子地址数据组,并且当尝试在存储设备中存储具有与已经被存储在存储设备中的子块数据的数据内容相同的数据内容的另一条子块数据时,将指向已经被存储在存储设备中的子块数据的一条子地址数据作为另一条子块数据存储在预定存储设备中,以由此执行子块数据的重复存储消除。根据本发明的另一方面,一种信息处理方法包括:在存储设备中存储通过将数据流划分成任意大小的块而生成的块数据,基于块数据的数据内容的地址数据指向该块数据,并且当尝试在存储设备中存储具有与已经被存储在存储设备中的块数据的数据内容相同的数据内容的另一条块数据时,将指向已经被存储在存储设备中的块数据的地址数据作为另一条块数据存储在存储设备中,由此执行块数据的重复存储消除。该方法还包括:在存储设备中存储通过将块数据进一步划分成多条数据而生成的子块数据,基于子块数据的数据内容的一条子地址数据指向多条子块数据中的每一条子块数据,在预定存储设备中存储包括多条子地址数据的子地址数据组,并且当尝试在存储设备中存储具有与已经被存储在存储设备中的子块数据的数据内容相同的数据内容的另一条子块数据时,将指向已经被存储在存储设备中的子块数据的一条子地址数据作为另一条子块数据存储在预定存储设备中,由此执行子块数据的重复存储消除。本发明的有利效果在如上文描述的那样配置本发明时,有可能提供一种能够实现更高效数据去重的存储系统。


[图1]图1是用于解释根据第一示例性实施例的新块发射的一个方面的说明示图;[图2]图2是用于解释根据第一示例性实施例存储数据流的一个方面的说明示图;[图3]图3是示出将根据第一示例性实施例测试的数据集的表格;[图4]图4示出图表,这些图表图示根据第一示例性实施例中执行的测试的随着平均块大小变化的仅数据DER ;[图5]图5示出图表,这些图表图示根据第一示例性实施例中执行的测试的随着平均块大小变化的实际DER ;[图6]图6示出图表,这些图表图示根据第一示例性实施例中执行的测试的实际DER和为了读取最后备份所需要的盘操作的数目;[图7]图7是示出根据第一示例性实施例中执行的测试的平均块大小的表格;[图8]图8是示出根据第一示例性实施例中执行的测试的平均块组大小的表格;[图9]图9示出图表,这些图表图示根据第一示例性实施例中执行的测试、实际DER与各种参数之间的关系;[图10]图10是示出包括第二示例性实施例的存储系统的整个系统的配置的框图;[图11]图11是示意性地示出第二示例性实施例的存储系统的配置的框图;[图12]图12是示出第二示例性实施例的存储系统的配置的功能框图;[图13]图13是用于解释图12中公开的存储系统中的数据存储过程的一个方面的说明示图;[图14]图14是用于解释图12中公开的存储系统中的数据存储过程的一个方面的说明示图;[图15]图15是用于解释图12中公开的存储系统中的数据取回过程的一个方面的说明示图;[图16]图16是用于解释图12中公开的存储系统中的数据存储过程的一个方面的说明示图;[图17]图17是用于解释图12中公开的存储系统中的数据存储过程的一个方面的说明示图;[图18]图18是用于解释图12中公开的存储系统中的数据存储过程的一个方面的说明示图;[图19]图19是示出根据补充注释I的存储系统的配置的框图。
具体实施例方式<第一不例性实施例>在本实施例中,提供了一种用于在存储系统中实现更高效的去重的更佳方法。也就是说,在多个备份中,具有在长时间段内不改变的长数据伸展,对于这些长数据伸展来说大的块组(chunk)大小更佳,这些长数据伸展中散布有改变区域,优选更小的块组大小。这样,在本发明中,描述了一种被称为锚(anchor)驱动的子块组去重的新算法。新算法在两级(大块组和它们的子块组)上进行去重。通过使用子块组到容器块组转译(translation)的有限的去重上下文来完成对小块组去重。从后端读取并且在写入备份数据的过程中动态更新该上下文。该上下文很小并且可以被保持在主存储器中。新方式无需关于备份流的后端知识并且支持跨所有流的小块组去重。同时,上下文保持对小块组有效去重所需要的多数子块组转译。在本发明中,通过用备份轨迹(trace)集合对新算法仿真并且将结果与用备选的先前描述的算法实现的数目进行比较来验证本发明的权利要求。在下文中,提供本实施例如下。首先,将具体描述新去重算法。然后,将提供其基于实际备份轨迹集合所驱动的仿真的评估。然后,讨论有关工作并且最后将给出结论和将来工作。(算法)(系统模型)在NPL 9中描述的HYDRAstor之后对本发明的存储系统建模,该HYDRAstor由前端和后端构成,该前端由导出文件系统抽象化的接入节点(AN)构建,并且该后端被构建为保持可变大小的、内容可寻址块的多节点块存储库。在本发明中,在数据块组与块之间进行区分。块组通常是连续的一条用户数据流,该用户数据流具有块分割器限定的边界以最大化去重机会。块是后端存储的基本单位。块包含一条用户数据和关联后端级的块元数据,该用户数据即该块的块组。然而,块组也可以包含指向其它块的指针。指针被表示为哈希地址并且有助于构建保持文件系统结构的树。系统可以由若干备份服务器来访问,这些备份服务器用标准备份应用来写入和恢复备份,这些备份应用对存储系统的特殊能力(诸如去重)一无所知。为了讨论这一算法,不必假设可调节分布式存储系统,诸如上文描述的存储系统。然而,这样的系统比集中式存储系统更可能用于以广泛变化的去重模式来存储备份,因此存在不使用一个预期的块组大小用于所有存储的数据的更强动机。应当注意,在本发明中将在存储系统中存储的数据可以是任何类型的数据而不限于备份数据。在基本系统中,在接入节点上使用CDC算法将备份流切割成块组并且将其作为块写入块存储库。如果发现写入的块组并非重复(duplicate),则压缩和擦除编码(erasure-coded)这样的新块组以求弹性并且在不同块存储库服务器上存储所获得的块片段。应当注意,在本发明中,不必需划分、压缩或者擦除编码数据。系统支持利用每个块的参考计数实施的按需数据删除。删除以两个阶段进行:重新计算块计数器的垃圾标识;以及去除背景中具有计数器值零的块的空间回收。必须在设计去重算法时考虑与删除的交互。在这样的系统中,存在应当在去重算法评估中包括的若干类型的元数据:最低级的是如下块元数据,该块元数据包括该块的内容推导地址。下一级元数据包含属于该块的指针。还存在与文件系统结构关联的更高级元数据,例如inode表格。丢失具有指针的一个块可能使多个文件或者甚至文件系统失去能力(NPL 6),这样也可能使这样的块去重。因此,在多个副本中保持所有系统元数据以及具有指针的块。对于用户数据,系统支持多个擦除编码弹性级,其中的多数具有低得多的开销和弹性。默认级引入33%开销并且允许从3个节点和盘故障中幸存。(具有多个块组大小的去重)对具有多个块组大小的去重的两个先前尝试直接驱动本发明。双模方式(NPL 10)使用小和大的两个块组大小。默认地,用大的块组大小将新数据块组化。此外,在重复块组与非重复块组之间的每个转变时,将新数据的一个或者几个更邻近的大块组进一步块组化成更小块组,并且向后端中插入这些小块组。这一算法无需任何小块组的附加数据库;取而代之,它使用对后端的存在查询以在决定将实际发射哪些块组之前验证大块组的重复状态。用于每个数据集的fingerdiff算法(NPL 7)维持在最新备份中遇到的、但是未必发射的所有小块组的数据库。该数据库是对由后端保持的发射的块组元数据的附加。fingerdiff在小块组级检测重复并且尽可能多地接合它们(以用于所有新数据的小块组的最大可能数目为限制)。这两种方式提供了改善的空间。双模方式“遗忘”被去重的大块组中的小块组,这在改变区域边界上尤为重要。fingerdiff需要迄今为止在最新备份中看到的所有小块组的大型数据库,即使对于不经常改变的数据而言其没有用处。该数据库也可能不适配于主存储器从而严重地影响性能。另外,fingerdiff假设存储系统能够识别备份流之间的关系,如更早说明的那样,如今经常情况并非如此。最后,fingerdiff不会跨无关备份流地在小块组级上检测重复。(对子块组去重)本发明的被称为锚驱动子块组去重的新算法解决了上文描述的先前方式的缺点。概括而言,对子块组去重看起来如下。用相对大的预期块组大小(例如64KB)完成基本去重以保证良好性能并且保持每个SN上的本地数据的大小可管理。当发现大块组并非重复时,尝试对它的子块组去重。通过用更低的预期块大小运行CDC算法在给定的块组内限定它们。例如,在预期块组大小为64KB时预期子块组大小可以为8KB,从而在I个块组内产生平均8个子块组。具有界定的子块组的块的元数据比在每个子块组被存储为单独块时小得多,因为子块组共享许多块元数据。此外,包含从子块组到容器块组的转译的新元数据无需具有与块元数据一样高的弹性。用与用户数据相等的弹性保持这些转译就足够了。如果丢失了这些转译,则最坏情况将是降低的去重有效性,但是是在很有限的规模上,因为用户数据弹性的级别确信地不应导致可能的严重故障。假设当写入备份流时可以在接入节点上创建相关子块组到容器块组转译的集合。将此称作集合子块组去重上下文并且下文具体对其进行讨论。对于新的非重复块组的每个子块组,在该接入节点本地的子块组去重上下文中寻找相关转译。如果发现这样的转译,则向块存储库发出一个或者多个去重查询以验证容器块组仍然存在于此并且包含请求的子块组。需要这一步骤,因为转译可能陈旧并且垃圾收集可能去除未使用的子块组。仅当待去重的数据存在于块存储库中的情况下,才用从这一转译生成的地址对子块组去重。如图1中所示,接合和发射在这一过程中未被去重的子块组作为一个大块。在这样的情况下,向上下文添加个别子块组转译。这意味着当发射新块时,接合和发射相互接近的非重复新子块组(状态:N)作为一个块,该块具有指向子块组pi和p2的两个指针。应当注意状态:N指示非重复子块组。下文将描述这一点。(子块组去重上下文)当以子块组对备份流去重时,无需访问所有先前生成的子块组。取而代之,访问该备份的先前版本中的如下子块组就足够了:这些子块组在备份流中与备份流中被写入的当前位置“接近”。使用这一结论,在AN上构造子块组去重上下文作为本地高速缓存器,该高速缓存器保持用于这样的子块组的子块组到容器块组转译。在写入备份流时借助所谓的锚的帮助动态地(on-the-fly)构建去重上下文。锚是特殊类型的块并且如图2中所示具有与它在概念上关联的3个项:(I)锚块组序列,该序列是在写入的备份流中相邻的大块组的短序列(I至3) ;(2)覆盖写入的备份流的大量连续部分的锚窗,这种窗的大小通常为数百MB,并且整个备份流由不相交的锚窗覆盖;以及(3)包含子块组到容器块组转译的锚包(anchor pack),其包括锚窗中的非重复子块组。当写入用于所有遇到的块组和它们的子块组的备份数据时创建这些转译。锚序列由备份流中的固定数目的块组构成,在下文针对这些块组定义的特殊哈希(hash)具有某一预定义数目的、等于O的尾比特。该特殊哈希是用于一个块组锚序列的规则块组哈希;并且将该哈希定义为用于多块组锚的每个序列块组的各个哈希中的哈希。注意,用必须为O的该特殊哈希中的比特数目来控制锚的频率;比特越少,锚就越频繁。应当注意,锚序列不限于由如上文描述的块组组成并且可以由具有其它特征的块组构成。锚窗通常在备份流中适当地位于与该窗关联的锚块组序列的前面,以便具有足够时间以在对需要转译的数据写入和块组化之前获取所必需的转译。由于锚可能在新备份流中消失,所以每个锚包含如下指针,这些指针不仅如图2中的实线箭头所示指向它的窗转译而且如图2中的虚线箭头所示指向用于几个后续窗的锚包。在写入备份时,除了用于当前备份的锚生成之外,算法还对先前创建的锚的检测进行校验。在检测到时,向构建去重上下文的本地高速缓存器中读入该锚所指向的所有包。同时,计算并且最终发射锚的新值从而替换旧值。然而,不必向本地高速缓存器中读入所有锚包。
与在如上文描述的fingerdiff中不同,去重是全局的而并非每个流,由于在块存储库中全局地存储锚,因此有可能识别备份流中来自不同备份服务器或者不同客户端的相似部分(例如,在工作站备份的情况下为操作系统文件)。当在旧备份中存在的锚序列和关联锚窗尚未随着新备份改变时,新锚与旧锚相同并且将对新锚去重。如果锚窗中的数据已经改变、但是未修改锚块,则新锚将重写旧锚并且将回收旧锚。此外,还需要对所有锚的定期扫略过程(例如,一周一次)以去除自从上次扫略起尚未用于任何去重的锚。在存储开销方面,所有锚包一起占用可与fingerdiff的每个备份数据库相比较的空间。大的差异在于锚包很小并且可以被组合以构建适配于主存储器的去重上下文,而用于大型备份的fingerdiff数据库很大并且不会适配于此。此外,对于fingerdiff,还需要知道备份流和流边界之间的关系,而基于锚的方式无需这一知识。与双模比较,新方式允许更广泛搜寻重复数据。不同于双模,新算法使用先前在非重复和重复块组二者中遇到的子块组来校验去重,因为子块组转译上下文包含所有这些转译。双模仅校验与写入的流中的至少一个重复块组相邻的非重复块组的子块组。(细节和微调)在基本系统中,压缩和擦除编码整个块组。对子块组去重,需要能够读取个别子块组。这可以通过读取整个容器块并且提取所需子块组来实现。然而,这并非很高效,因此提出了压缩和擦除编码个别子块组。作为结果,新“片段”包含给定的块组的所有子块组的片段。扩展块元数据以记忆块组片段中的所有子块组片段的偏移。在备份移除之后,可能发生一些子块组无效并且也需要被移除,而其它子块组有效并且需要被保存。出于这一原因,需要改变垃圾收集算法以允许标识无效块组和回收它们的空间。为了有助于在空间回收之后对块组内的子块组定位,需要在每个块元数据内保持如下比特矢量,该比特矢量指示原有子块组中的哪些子块组仍然存在。另外,每个子块组需要获得小的参考计数器(少数比特)以允许子块组回收。这样的计数器可以很小,因为在罕见的情况下它会溢出,在回收整个块之前将不回收这样的子块组。为了实现基于子块组的去重,用子块组选择器来扩展地址格式。有可能的是,存在多种子块组选择器形式。一种形式仅为子块组顺序编号。例如,在I个块组内平均有8个子块组时,4比特扩展地址足够用于允许对整个块组和上至15个个体子块组寻址。一个可能的微调是在不能对大块组去重、但是可以对多个相邻子块组去重时完成的相邻子块组接合。这可以仅基于转译来确定而无需对后端的附加查询。在这样的情况下,生成指向子块组范围的仅一个指针。为了允许这一点,将子块组选择器改变成包含两个子块组编号的子块组范围选择器——在上例中,将用I个字节而不是4个比特来扩展地址。(评估)这里使用下文描述的三个数据集相对于CDC和双模来评估本发明中提出的子块组算法(进一步被称为子块组)。由于对实际备份数据的直接操作将需要太久时间,所以使用NPL 10中介绍的特殊块组化工具以生成压缩的备份轨迹。该工具丢弃所有潜在切割点和在它们之间的数据块组的哈希。这样的预处理大量减少测试数据的大小和评估时间。平均而言,可以在少于20分钟内处理与ITB实际数据对应的约60GB轨迹。
对于给定的数据集和给定的算法,定义DER(重复消除比)为系统中存储的所有数据的总大小除以所需总盘空间。可以计算不包括或者包括元数据的DER。将前者称为仅数据(data-only)DER而后者称为实际DER。仅数据DER既简单又被良好地定义,并且不同于实际DER,它不依赖于实际存储系统特性。另一方面,在实际DER计算中,考虑可能影响实际系统所需存储的所有因素。这包括数据冗余水平、压缩比和所有种类的元数据所需要的空间。实际DER的值强烈依赖于实际系统模型。后文描述本发明的模型的元数据开销。(测试数据)实验基于图3中描述的3个数据集。维基(Wiki)数据集由英语维基百科的5个官方XML快照构成。文件仅包含普通页面的最新版本。不包括改变历史、特殊页面、图像等。很稀少地、平均每月一次地创建快照。由于在备份之间的长时段、低备份数目和维基数据的特性(精细、频繁改变),所以对这一数据集测量的去重比很低。实际DER根据所选算法从1.06 变到 1.52。下一数据集,neclab,代表典型的备份数据。这是与NPL 10中使用的数据集相同的数据集。它由用户目录的14个完全的每周Netware备份构成。对这一数据集测量的实际DER从3.16到3.76变化。最后的数据集,邮件,由52个咨询者在9LiveData的邮箱的32个每日快照构成。这是很特殊的数据集。典型用户邮箱每天改变不多,因此对这一数据集测量的去重应当很高(接近备份的数目)。然而,存储用户的邮箱的单个快照作为通常包含数以千计的很小文件,每个文件一个消息,的tar存档。这些文件在tar存档中的顺序依赖于tar和文件系统内部构造并且随时间略微改变。如果预期的块组大小跨越多个文件,则它们的顺序的即使略微置换也可能不利地影响许多重复消除算法。另外,改变数据顺序可能潜在地造成很高数据片段化。对这一数据集测量的实际DER从13.08到18.37变化。通过串接所有3个数据集来构建作为整体进一步引用的人工数据集。用于这一数据集的实际DER从4.35到5.19变化。(测试的策略)已经在许多可能配置中测试所有算法。利用被设置成从4KB到256KB的2的所有幂的预期块组大小来测试第一算法CDC。如预期的那样,CDC生成具有聚在预期块组大小周围的大小的块组。对于上文描述的双模,已经使用具有从8KB到256KB变化的预期块组大小和总是小8倍的预期小块组大小的大块组。在本发明中提出的基于锚的去重被配置有被设置成从8KB到256KB的2的所有幂的预期块组大小和总是小8倍的预期小块组大小。将锚长度设置成I个块组。将锚级设置成10,即在锚之间的平均距离为21° = 1024个块组(或者8192个小块组)。将高速缓存器大小设置成0.5mln个条目(能够存储来自约64个包的转译)、并且将预取(prefetch)设置成16个包(对应于IGB实际数据流)。这样的配置提供在由算法实现的DER与为了运行它而需要的资源之间的合理平衡。标记为理想高速缓存器的算法与子块组相似地工作,但是它将所有遇到的转译直接放入在这一情况下不受限制的高速缓存器中而不是使用基于锚的机制。这样的算法不实际,但是它的去重是用于子块组方式的上界。(使用仅数据DER的比较)图4呈现根据平均块大小变化的仅数据DER。这用于所有3个数据集并且用于所有算法。每个图表代表不同数据集,每个曲线-不同算法,并且每个点-不同配置(不同预期块组大小)。在这样呈现的背后的想法在于所需重复消除算法应当不仅实现高DER而且维持高平均块大小,这是将元数据开销和性能开销保持于可接受水平上所必需的。将平均块大小定义为系统中存储的所有唯一块的总大小除以这样的块的数目(即使单个块出现于许多备份流中,但是仍然将它计数为一)。这是与后文具体描述的平均块组大小不同的统计量。自然地,如果不包括元数据,则使用更小块大小造成更佳去重。在几乎所有情况下,仅数据DER在平均块大小的对数下接近线性。无论数据集如何,在本发明中提出的算法都比CDC和双模表现更佳。在维持大的平均块大小时,它在(细微得多的)子块组级上执行去重从而造成更高DER。在理想高速缓存算法的情况下,这是清楚可见的。CDC用X个KB块组实现的去重几乎等于理想高速缓存算法用X个KB子块组实现的去重。无论理想高速缓存算法所用的预期块组大小如何,都满足这样的关系,仅预期子块组大小有影响。然而,理想高速缓存算法需要维持所有子块组的大型索引,这需要大量资源并且不可容易地实施。在本发明中提出的算法实现的DER主要依赖于用于预取转译的基于锚的机制的性能。锚工作越好,去重就越高。如可见的那样,基于锚的子块组去重很接近理想高速缓存算法,从而证明用于预取转译的基于锚的机制合理好地工作。将高速缓存命中率定义为基于锚的机制发现的重复子块组数目除以理想高速缓存算法发现的重复子块组的数目。实际上,在基本配置(64KB块组和8KB子块组)中,高速缓存命中率很高(对于维基数据集为81%,对于neclab为87%,并且对于邮件为99% )。如预期的那样,双模对neclab数据比⑶C表现更佳。这是NPLlO中所用的数据集,并且结果与它们的结果一致。令人惊讶的是,对其它数据集,双模实现的DER比CDC实现的DER略差。这可能在随机地方有许多小改变的情况下发生。大块组仅在它是重复块组的邻居的情况下才被重新块组化成小块组。如果块在一个备份中被块组化并且在下一备份流中不改变,则必须每次将这样的块重新块组化以免失去一些去重机会。这样的情形在neclab轨迹中不经常发生,但是在维基和邮件中非常经常发生从而造成双模的略差性能。(使用实际DER的比较)图片在包括所有种类的元数据时看起来显著不同。在上文描述的系统模型中,将每个块存储为用擦除编码创建的12个片段。对于多数数据,9个是原有片段而3个是冗余片段,然而在12个副本中保持具有指针的块。全局地估计压缩水平为块大小的对数的线性函数(对于64KB块约为0.77并且对于8KB块约为0.80)。存储的每个块具有与它关联的124个字节的元数据。为了提供高性能和抗故障的弹性,在12个副本中存储所有元数据,这造成每个块的1344个字节的元数据开销。在实际系统中,也可以对具有指针的块去重从而造成更少元数据开销(尤其对于小块),但是在模型中仅模拟最坏情况的场景,其中未对具有指针的块去重。因此,必须有用于在任何备份流中出现的每个块组的指针(无论这一块组是否为重复),并且也在12个副本中存储所有指针。
子块组算法需要用于存储转译包的额外空间。单个转译包含子块组的SHA-1 (20字节长)、索引和整个块组的SHA-1。由于通常在几个转译之间共享整个块组的SHA-1,所以单个转译应当适配到32个字节中。可以用低弹性存储转译包一在数据丢失的情况下,DER将略微下降至整个块组⑶C的水平,但是系统将保持完全功能。因此,在实验中已经假设锚包的弹性与用户数据的弹性相同。图5呈现根据系统中存储的平均块大小变化的实际DER。当在DER计算中包括所有种类的元数据时,降低块大小造成更佳去重仅直至某点,在该点之后,为了存储元数据而需要的额外空间超过更佳去重所获得的空间。对于每个数据集并且对于每个算法,存在某一最优块大小,造成最高可能实际DER0利用给定的算法(并且不降低元数据开销,这通常不是容易的任务),不能获得更佳DER0当然,最优块大小强烈依赖于所选数据集而变化。将不同预期块组大小用于各种数据集需要额外手动配置并且可能打破全局去重一不能在用不同块组化策略块组化的两个流之间发现重复。对于⑶C,最优预期块组大小对于维基来说等于8KB (DER = 1.20),对于neclab来说等于16KB(DER = 3.18)并且对于邮件来说等于32KB(DER = 14.89)。等于16KB的平均块组大小听起来是用于所有这些数据集的合理全局选择。对于人工总数据集,它得到DER=4.39。双模对neclab数据集表现良好——对于32KB大块组和4KB小块组来说它得到DER = 3.38(比⑶C提高6% )。然而,它对维基(在32KB大块组时DER = 1.07)和邮件(在64KB大块组时DER = 13.14)表现相当差。等于32KB的预期大块组大小对总数据集是最佳选择(DER = 4.35)。在本发明中提出的子块组算法实现的性能显著更高。对于维基数据集,最优平均块大小为16KB从而造成DER= 1.25,这比最优⑶C提高25 %。对于neclab数据集,最优平均块大小为32KB从而造成DER= 3.67,这比⑶C提高15%。也对于邮件数据集,最优子块组算法使用64KB块并且给出DER = 18.45,这比最优⑶C提高24%。对于总数据集,子块组算法用等于64KB的预期块大小表现最佳(DER = 5.06,比⑶C提高15% )。随着块组大小变得很小,子块组算法的性能变得更差并且接近⑶C或者在邮件轨迹上甚至在⑶C以下。这是因为对于小块组(例如8KB)而言,子块组很小(例如1KB),这导致很短平均块大小并且造成太多元数据。(读取性能)对备份数据去重可能导致不再存储为连续流的备份,但是取而代之,它们由散布于系统的许多小数据块组构成。这样的片段化造成在读取期间需要的更多盘操作(搜寻)。高度地可缩放存储系统通常具有大量资源,并且尤其是如果同时读取仅一个或者仅少数流,则更多盘搜寻通常不会负面地影响性能。另一方面,当设计去重算法时,应当评估它对数据片段化的影响。数据片段化是主要脱离本发明的范围的广泛主题,但是这里呈现基本评估的结果以示出在本发明中提出的算法未造成比备选解决方案更差的片段化。为了评估盘读取性能,已经简化了存储系统的模型,其中假设在放置于单个物理盘上的单个连续文件中存储所有块。在文件的末尾写入所有新(未重复)块而简单地略过重复块。在这一模型中,未考虑存储任何元数据。在本发明中,以如下方式对读取进行仿真。按照在备份流中出现的顺序逐个请求块。当从盘获取块时,扩展读取操作以便还读取多个后继块。预期的单个读取大小为256KB。适配在该限制内的所有块被加载在读取高速缓存器中,并且当且仅当下一块的一半适配在该限制内时,加载该下一块(这一有点奇特的条件可以避免对预取的块数目四舍五入的问题)。高速缓存器的大小限于1GB。如果块已经存在于高速缓存器中,则无需额外IO操作。使用为了读取最后(最多片段化的)备份而必需的IO操作总数作为片段化测量结果。在子块组算法的情况下,模型略微不同。遵循相同策略,但是对子块组操作而不是使用大块,因为系统由于块表示中的修改而能够读取个别子块组。为了比较所有算法,对于它们中的每个算法,已经在实际DER方面选择了最佳设置(对于子块组来说为64KB大块组和8KB小块组,对于双模来说为32KB和4KB块组,并且对于CDC来说为16KB块组)。图6呈现关于每个算法的实际DER比对为了读取最后(最多片段化的)备份而必需的盘操作的数目。结果强烈依赖于数据集。对于neclab,子块组算法造成最低片段化和最高实际DER,这是最佳情况。这是好消息,因为这一轨迹应当反映典型备份数据。一般而言,应当在去重与片段化之间存在权衡。更佳去重应当造成更多片段化,但是如可见的那样存在例外。对于邮件和维基轨迹,子块组算法片段化总是在其它两个算法的片段化之间,但是实际DER总是最高。对于这些轨迹,付出片段化以换取提高的去重。可能潜在地影响读取性能的另一因素是如下平均块组大小,该平均块组大小被定义为系统中存储的所有数据流的总大小除以指针的总数。在平均块组大小计算中,与在平均块计算中不同,对重复计数若干次。更短平均块组意味着对于相同数据量必须存储和处理更多指针。图7和图8示出分别用于每个算法的最佳实例以及还用于具有64KB大块组的双模的平均块大小和平均块组大小。这一实例示出双模的有效性,因为64KB大块组双模造成比最佳双模仅略微更低的去重比、但是交付明显更大平均块和块组大小。然而,提供最佳去重比的子块组实例即使与具有64KB块组的双模比较仍然在几乎所有情况下生成更大平均块和块组。子块组算法尝试默认发射大块组并且生成包含比大块组更少的数据的块,这仅在已经对这样的块组的剩余部分去重之后发生。双模与子块组算法共享第一优点、但是不共享第二优点,因为双模在改变的边界投机性地发射小块,这抱有它们将在以后用于去重的希望。然而,这样的预期节省有时未得以实现。作为结果,子块组算法与⑶C和双模生成的平均块比较生成大得多的平均块。此外,由于指向子块组的指针,而在子块组算法的情况下、在平均块大小与平均块组大小之间存在比其它两个算法大得多的差值。(配置调整)这里,示出如何通过改变来自(上文针对64KB预期块组大小描述的)子块组算法的基本配置的单个参数来影响实际DER。为了简化绘图,仅呈现用于总数据集的结果。通常,用于个别数据集的结果不显著不同。在图9的实际DER与各种参数之间的关系中示出结果。调节的第一参数是锚长度——形成锚的连续块组的数目。令人惊讶的是,可以针对从单个块组创建的锚实现最佳结果,因为实际DER随着所用块组的数目的对数线性地下降。更短锚更可能在后续预取(包)备份中表现为不变,这是下载适当转译包所必需的。下一参数是锚级。等于η的锚级意味着在锚之间的预期距离等于2η个块组。在改变锚级时,也已经调整待预取的包的数目以总是预取与IGB实际数据对应的转译。设置更频繁的锚造成更佳去重,但是,由于每个锚生成读取和写入操作,所以太频繁的锚可能降低性能。决定使用等于10的锚级从而造成对于64ΚΒ块来说锚之间的预期距离等于64ΜΒ。也已经修改待预取的包的数目。一般而言,增加预取的长度造成更佳去重。转译高速缓存器删减引起最高值的骤降。这一高速缓存器作为队列来工作,并且由于大的预取大小而在使用之前从高速缓存器驱逐所需转译。增加高速缓存器大小将在这样的情况下有帮助。已经用更大高速缓存器做实验,但是结果并非显著更佳,并且保持IGB预取作为合理折衷。最后,已经用其它预期子块组大小做实验,但是实验尚未示出任何显著提高。除了配置调节之外,也已经测试对算法的少数修改。第一修改是接合剩余块(由未重复子块组组成的块)。与发射每个块组的单个剩余块不同,可以结合它们中的几个并且发射单个块。这样的修改几乎不影响DER,剩余块很罕见并且很不可能重复,但是允许维持高的平均块大小。另一修改是限制单个块组以内的子块组的数目。利用默认块分割器配置,子块组的最大数目为24,而它们的预期数目为8。如果系统需要恒定大小的元数据记录,则这可能导致空间浪费一无论每个子块组是否存在都需要为它保留约3Β。然而,可以接合在某一限制以上的所有子块组。实验示出将子块组的数目限于12仅略微地影响去重(对总数据集,仅数据DER从6.01下降至5.95),而限于16完全不影响它(仅数据DER下降少于0.01)。(有关工作)除了已经讨论的fingerdiff和双模块组化之外,还存在许多与去重(一般的)和块组化(具体的)有关的文章。极端分级(extreme binning) (NPL 5)是用于使用单个大小的块组化在相似文件中发现重复的高效可缩放技术。然而,它需要知道整个文件内容以用于计算有代表性的块组、并因此不能直接应用于流式数据。稀疏索引(NPL 13)与极端分级相似,通过将进入块组拆分成分段来应用于流数据并且比对所选片段块组执行去重。它不运用任何用于使用不同块组级的更细微粒度的重复检测的技术。自适应块组化方法(NPL12)是在CDC与固定大小的块组化之间切换以便在移动设备上最小化必需处理能力的有趣的想法。EMC Centera(NPL I)是证明内容可寻址性可以用于重复消除的最先产品之一。然而,由于对整个文件计算内容地址,所以Centera不能执行子文件去重。Venti (NPL 21)是将CAS及早用于存档文件系统中的重复消除。它使用固定大小的块,因此它不能对移位的内容去重。MAD2 (NPL 26)、HYDRAstor (NPL 9)和 DDFS (NPL 28)是使用 CDC 块组化和内容可寻址存储的实施系统的示例。Foundation (NPL 23)使用内容可寻址存储以对夜间快照中的整个硬盘的版本有效存储和去重。REBL(NPL 11)将使用内容定义的块组化的重复消除与增量编码和压缩组合以用于获得最佳可能压缩比。Pastiche (NPL 8)将内容定义的块组化、内容地址和基于内容的加密用于对等网络中的客户端系统的安全备份,而通过删除共享块组并且存储每个块组的仅一个副本来限制存储开销。CZIP (NPL 18)是将块组化和CAS用于例如内容分发服务器、文件传送或者web高速缓存中的一般使用的通用压缩文件格式。在NPL 24中呈现的网络业务冗余消除方案使用有代表性的Rabin指纹集合以发现网络通信中的可能重复内容区域,这带来与在本工作中描述的锚的一些类似。LBFS(NPL 16)是将内容定义的块组化和内容验证应用于网络文件系统以便限制网络链路上的带宽使用的示例。它将Rabin指纹化用于将文件分裂成块组并且将所得Rabin哈希用于发现可能重复,而在块组具有完全相同的内容的情况下将SHA-1用于最终验证。CASPER(NPL 25)是在CAS数据可用的情况下将CAS机会性地用于加速通过低速链路的文件系统访问的示例。RedFS分布式文件系统(NPL 4)将用于文件组的本地去重与基于已知为复制品的组矢量发现相似文件组组合以最小化在分布式复制品之间传送的数据。在NPL 2中描述的ProtecTier系统运用有代表性的Rabin指纹以使用相似性匹配而不是内容地址对大数据块执行去重,这允许它存储用于去重目的的小得多的索引。已经在部分内容共享文件系统的实现方式中建议接合内容指针的想法(NPL 3)。它使用基于相似性检测的离线去重并且允许仅对共享文件部分块组化和去重以便最小化块组元数据开销。NPL 15和NPL 19包含对使用⑶C和其它技术对现实数据的可能去重增益的分析。NPL 14包含对各种去重技术的正面和反面的全面比较并且讨论在去重比、元数据开销和重建时间之间的权衡。DeepStore (NPL 27)比较CAS和增量压缩在重复消除中的效率并且讨论去重的数据的可靠性。在NPL 6中还分析了存储更少数据块组作为去重结果的可靠性。NPL 17讨论块组大小对发现在不同数据类型之间的共性的效果、元数据开销对空间节省的影响以及由于在CAS存储中存储块组仅一次而引起的弹性丧失。(结论和未来工作)在本发明中,提出了动态预取的有限大小的子块组去重上下文驱动的子块组去重算法。这一上下文提供在子块组级的有效去重所需要的转译中的多数转译。另外,可以将上下文输入转译存储为并非特别重要的元数据,即具有低弹性开销的元数据。新算法还通过在可能时使用整个块组并且在属于相同块组的子块组之中共享多数元数据来减少有效元数据开销。作为结果,对于具有显著元数据开销的系统,子块组算法与其它方式、诸如传统CDC和双模比较产生优异的实际DER,同时提供显著更大的平均块和块组大小。同时,对于标准备份轨迹,新算法造成更少片段化。对于其它数据流,片段化可以更高,但是这是改善去重的代价。对于将来的工作,计划使用更多备份轨迹来评估新算法并且具体研究如何解决片段化问题而不显著减少去重比。<第二示例性实施例>将参照图10至图18描述本发明的第二示例性实施例。图10是示出整个系统的配置的框图。图11是示意性地示出存储系统的框图,并且图12是示出配置的功能框图。图13至图18是用于解释存储系统的操作的说明视图。这一示例性实施例这里示出通过连接多个服务器计算机来配置存储系统的情况。然而,本发明的存储系统不限于具有多个计算机的配置并且可以由一个计算机来配置。如图10中所示,本发明的存储系统10经由网络N连接到控制备份过程的备份系统11。备份系统11获取在经由网络N连接的备份目标设备12中存储的备份目标数据(存储目标数据)并且请求存储系统10来进行存储。因此,存储系统10存储被请求存储为备份的备份目标数据。应当注意,存储系统10不限于存储备份目标数据并且可以存储任何类型的数据。如图11中所示,这一示例性实施例的存储系统10采用其中连接多个服务器计算机的配置。具体而言,存储系统10被配备有:加速器节点10A,充当控制存储系统10的存储/再现操作的服务器计算机;以及存储节点10B,充当配备有存储数据的存储设备的服务器计算机。加速器节点IOA的数目和存储节点IOB的数目不限于图11中所示的数目,并且可以采用其中连接更多节点IOA和更多节点IOB的配置。另外,这一示例性实施例的存储系统10是内容地址存储系统,该内容地址存储系统划分数据并且使数据冗余、分发数据并且将其存储到多个存储设备中,并且通过根据待存储的数据的内容而设置的唯一内容地址来指定存储数据的存储位置。下文将描述这一内容地址存储系统。假设存储系统10是一个系统,下文将描述存储系统10的配置和功能。换而言之,可以在加速器节点IOA或者存储节点IOB中包括下文描述的存储系统10的配置和功能。存储系统10不限于如图11中所示的包括加速器节点IOA和存储节点IOB的配置。存储系统10可以具有任何配置并且例如可以由一个计算机配置。另外,存储系统10不限于内容地址存储系统。图12示出存储系统10的配置。如该图中所示,存储系统10被配备有存储数据的存储设备31和32以及控制向存储设备31和32中存储数据和从存储设备31和32取回数据的操作的控制设备20。控制设备20被配备有:块数据处理单元21,其以块数据为单位执行流数据的存储和再现,该流数据是存储目标数据;以及子块数据处理单元22,其以通过将块数据进一步划分成多条数据而生成的子块数据为单位执行存储和再现。另外,作为存储设备31和32,存储系统10被配备有存储块数据和子块数据的辅存储设备31 (诸如硬盘驱动)以及存储下文描述的子地址数据的主存储设备32。应当注意,虽然在这一示例中根据待存储的数据类型使用不同存储设备作为存储目的地,但是它们可以是任何种类的存储设备或者可以是相同存储设备。实际上,块数据处理单元21和子块数据处理单元22由在多个算术设备,诸如图11中所示的加速器节点IOA的CPU(中央处理单元)和存储节点IOB的CPU中安装的程序来构造。另外,辅存储设备31主要由图11中所示的存储节点IOB的辅存储设备来构造,并且主存储设备32主要由图11中所示的加速器节点IOA的主存储设备和存储节点IOB的主存储设备来构造。例如,在存储于存储介质,诸如CD-ROM中的状态中向存储系统10提供上文提到的程序。备选地,可以在网络上的另一服务器计算机的存储设备中存储该程序并且经由网络从另一服务器计算机向存储系统10提供该程序。
下文将具体描述块数据处理单元21和子块数据处理单元22的配置。首先,将参照图13至图15描述块数据处理单元21 (块数据去重单元)以块数据为单位存储和取回流数据的内容寻址方法。首先,当块数据处理单元21如图14中的箭头Yl所示接收备份目标数据A的输入(其为流数据)时,块数据处理单元21如图13和图14中的箭头Y2所示将备份目标数据A划分成可变容量(例如,平均64KB)或者预定容量(例如,64KB)的块数据D。然后,基于这一块数据D的数据内容,块数据处理单元21计算代表数据内容的唯一哈希值H(内容标识信息)(箭头Y3)。例如,通过使用预设哈希函数根据块数据D的数据内容来计算哈希值H。在加速器节点IOA中执行块数据处理单元21的过程。然后,通过使用备份目标数据A的块数据D的哈希值H,块数据处理单元21校验是否已经在存储设备31中存储了块数据D。具体而言,哈希值H和如下内容地址CA相关并且被登记于MFI (主片段索引)文件中,该内容地址代表已经被存储的块数据D的存储位置。因此,在块数据D的在存储之前计算的哈希值H存在于MFI文件中的情况下,块数据处理单元21可以确定已经存储了具有相同内容的块数据D (图14中的箭头Y4)。在这一情况下,块数据处理单元21从MFI文件获取与MFI内的如下哈希值H有关的内容地址CA,该哈希值与块数据D在存储之前的哈希值H —致。然后,块数据处理单元21存储这一内容地址CA(地址数据)作为需要存储的块数据D的内容地址CA。备选地,块数据处理单元21可以在树结构中存储另一条地址数据,该地址数据进一步引用内容地址CA,该内容地址引用已经被存储的块数据D。因而,通过使用这一内容地址CA来引用的已经存储的数据用作需要被存储的块数据D,并且变得不必存储需要被存储的块数据D。另外,块数据处理单元21压缩如上文描述的那样确定为尚未存储的块数据D并且如图14中的箭头Y5所示将数据划分成具有预定容量的多条片段数据。例如,如图13中的附图标记D I至D9所示,块数据处理单元21将数据划分成九条片段数据(划分数据41)。另外,块数据处理单元21生成冗余数据从而即使丢失了通过划分而获得的一些片段数据,并且向通过划分而获得的片段数据41添加冗余数据,仍然可以恢复原有块数据。例如,如图13中的附图标记DlO至D12所示,块数据处理单元21添加三个片段数据(冗余数据42)。因此,块数据处理单元21生成数据集40,该数据集包括由九个划分数据41和三个冗余数据组成的十二个片段数据。块数据处理单元21的过程由一个存储节点IOB执行。然后,块数据处理单元21分发并且向存储设备31中形成的存储区域中逐个存储组成生成的数据集的片段数据。例如,如图13中所示,在生成十二个片段数据Dl至D12的情况下,块数据处理单元21向十二个存储设备31中形成的数据存储文件Fl至F12(数据存储区域)之一中存储片段数据Dl至D12之一(参见图14中的箭头Y6)。另外,块数据处理单元21生成和管理内容地址CA,该内容地址代表如上文描述的在存储设备31中存储的片段数据Dl至D12的存储位置,也就是将由片段数据Dl至D12恢复的块数据D的存储位置。具体而言,块数据处理单元21通过组合基于存储的块数据D的内容而计算的哈希值H的部分(短哈希)(例如,哈希值H中的开始8个字节)与代表逻辑存储位置的信息来生成内容地址CA。然后,块数据处理单元21向存储系统10内的文件系统、即加速器节点IOA返回该内容地址CA(图14中的箭头Y7)。加速器节点IOA然后将标识信息,诸如备份目标数据的文件名与内容地址CA相关并且在文件系统中管理它们。
另外,块数据处理单元21将块数据D的内容地址CA与块数据D的哈希值H相关,并且相应的存储节点IOB在MFI文件中管理它们。因此,内容地址CA与指定文件的信息、哈希值H等相关并且被存储到加速器节点IOA和存储节点IOB的存储设备31中。另外,块数据处理单元21执行对取回如上文描述的那样存储的备份目标数据的控制。例如,当存储系统10接受具有基于文件系统而指明的特定文件的取回请求(参见图15中的箭头Yll)时,块数据处理单元21首先指明由如下短哈希和逻辑位置的信息组成的内容地址CA,该短哈希作为与涉及取回请求的文件对应的哈希值的一部分(参见图15中的箭头Y12)。然后,块数据处理单元21校验内容地址CA是否被登记于MFI文件中(参见图15中的箭头13)。如果未登记内容地址CA,则不存储请求的数据,从而块数据处理单元21返回错误响应。另一方面,如果涉及取回请求的内容地址CA被登记,则块数据处理单元21指定由内容地址CA指明的存储位置并且取回在指定的存储位置中存储的每个片段数据作为被请求取回的数据(参见图15中的箭头Y14)。这时,如果知道存储相应片段的数据存储文件Fl至F12和片段数据之一在数据存储文件中的存储位置,则块数据处理单元21可以指定其它片段数据的存储位置,因为存储位置相同。然后,块数据处理单元21从响应于取回请求而取回的相应片段数据恢复块数据D(参见图15中的箭头Y15)。另外,块数据处理单元21连接多个恢复的块数据D以恢复成数据组、诸如文件A并且向控制取回的加速器节点IOA返回(参见图15中的箭头Y16)。接下来,将参照图16至图18描述子块数据处理单元22 (子块数据去重单元)。应当注意下文也将描述与上文描述的块数据处理单元21的关系。首先,如图16中所示,当存储备份流——该备份流是备份目标数据——时,块数据处理单元21如上文描述的那样将备份流划分成多条块数据B并且在执行重复存储消除时执行向存储设备31中的存储过程。此外,子块数据处理单元22执行以下过程。首先,子块数据处理单元22计算由作为备份流的一部分的预定条数的数据构成的块数据B集合的特征值,并且如果特征值满足预设条件,则子块数据处理单元22设置该数据集作为“锚序列”。例如,如图16中的具有斜线的部分所示,子块数据处理单元22计算三条块数据B的哈希值作为特征值,并且如果特征值满足设置的条件,使得后三位数的比特例如是“0”,则例如子块数据处理单元22设置这三条数据作为“锚序列”。然后,如图16中所示,子块数据处理单元22生成“锚序列”指向的“锚”,并且每个“锚”存储指向称为“锚包”的数据存储区域的指针。这样,当检测到具有满足设置的条件的特征值的“锚序列”时,相互关联地存储特征值和“锚包”。然后,当子块数据处理单元22如上文描述的那样检测到“锚序列”时,子块数据处理单元22进一步将相邻块数据B——也就是在检测到的锚序列所属的锚窗内的块数据B——划分成多条以生成多条子块数据SB。例如,如果块数据B的数据容量是64KB,则子块数据处理单元22将块数据B划分成多条子块数据SB (例如,它是平均8KB大小的8条数据)。另外,子块数据处理单元22计算哈希值作为基于每一条子块数据的数据内容的值并且关联哈希值与指向每一条子块数据的指针。然后,子块数据处理单元22在存储设备31中存储子块数据并且也在与检测到的“锚序列”关联的“锚包”中依次存储在哈希值与指向子块数据的指针之间的关联。在这一示例中,将在锚包中存储的在指向子块数据的指针与哈希值之间的关联用作代表子块数据的存储目的地的子地址数据。然而,子块数据的哈希值本身可以用作指向子块数据的地址数据。应当注意,在主存储设备32中存储“锚包”。子块数据处理单元22如上文描述的那样检测“锚序列”并且如果“锚序列”的特征值已经存在于主存储设备32中,则取回与特征值关联的并且已经存储于主存储设备32中的“锚包”以执行重复存储消除过程。具体而言,子块数据处理单元22比较通过划分备份流的块数据而生成的子块数据的哈希值(子地址数据)与取回的“锚包”中的子地址数据,并且如果存在相同值,则确定已经在存储设备31中存储了子块地址,从而它被重复。因而,子块数据处理单元22将子地址数据作为它所指向的备份流的子块数据存储在“锚包”中以消除重复存储。另一方面,如果在取回的“锚包”中未发现通过划分备份流的块数据而生成的子块数据的哈希值(子地址数据),则子块数据处理单元22在存储设备31中重新存储子块数据,并且将子块数据的哈希值作为指向子块数据的子地址数据存储在“锚包”中。应当注意,通过将块数据划分成子块数据而执行的重复存储消除可以仅应用于块数据处理单元21未去重的块数据。这里,将参照图17和图18描述对子块数据执行的重复存储消除过程的具体示例。首先,假设在尚未存储任何数据的状态中在存储系统10中存储“备份流I”。这时,在存储设备31中存储多条块数据,并且也存储基于相应多条块数据的哈希值、指向多条块数据的多条地址数据。同时,计算预定条数的块数据的特征值,并且当检测到其中特征值满足设置的条件的“锚序列”时,在主存储设备32中生成与之关联的“锚包”。然后,将与“锚序列”相邻的块数据划分成多条子块数据并且存储于辅存储设备31中。另外,计算并且将相应多条子块数据的哈希值作为指向相应多条子块数据的子地址数据依次存储在“锚包”中。然后,假设在存储设备10中存储“备份流2”作为“备份流I”的更新,首先将“备份流2”依次划分成块数据,以数据块为单位对这些块数据执行重复存储消除过程。在这一示例中,假设仅更新附图标记BI'指示的块数据的数据内容。在该情况下,由于在存储设备31中未存储块数据BI',所以不执行以块数据为单位的重复存储消除。然而,在本发明中,以子块数据为单位对块数据BI'执行重复存储消除。如上文描述的那样,在以块数据为单位处理“备份流”2时,计算预定条数的块数据的特征值,检测其中特征值满足设置的条件的“锚序列”,并且校验特征值是否已知,也就是说,已经在主存储设备32中存储了特征值。如果已经存储了检测到的“锚序列”的特征值,则取回主存储设备32中的与特征值关联的“锚包”。这意味着在这一示例中取回关于“备份流I”存储的如下“锚包”,在该锚包中存储了作为子地址数据的、通过划分块数据B I而生成的子块数据的哈希值。另外,当如上文描述的那样检测“备份流2”的“锚序列”时,将与检测到的“锚序列”相邻的块数据划分成多条子块数据,并且计算它们的哈希值。具体而言,如上文描述的那样对不以块数据为单位对其执行重复存储消除的块数据BI'执行这一过程。然后,比较子块数据BI'的计算的哈希值与取回的“锚包”中的子地址数据以校验是否存在相同值。如果有相同值,则在已经在存储设备中存储了对应的子块数据时,指向“锚包”中的子地址数据作为待存储的子块数据。另一方面,如果无相同值,则在存储设备31中新存储对应子块数据,并且在“锚包”中包括哈希值作为指向存储的子块数据的子地址数据。
例如,如图18中所示,如果在未以块数据为单位对其执行重复存储消除的块数据BI'之中,已经以子块数据为单位存储了它的一些子块数据SB条(附图标记D)而未存储阴影所示的一些子块数据SB条(A,B,C,D)(附图标记N),则在接合状态中存储这些子块数据条(A,B, C,D)。由此,可以减少指向这些子块数据条的元数据。如上文描述的那样,如果未以块数据为单位而是以子块数据为单位执行重复存储消除,则与存储整个块数据BI'的情况比较可以提高重复存储消除的效率。另外,在其中存储和取回速度比辅存储设备31的存储和取回速度更高的主存储设备32中存储“锚包”中的用于校验是否已经存储了子块数据的子地址数据。这样,有可能加速以子块为单位的重复存储消除过程。然而,可以在辅存储设备31中或者在任何存储设备中存储“锚包”。另外,可以在预定时间(例如,定期地)暂时删除“锚包”。由此,可以消除指向已经不再使用的子块数据的子地址数据,由此有可能防止主存储设备32的存储容量膨胀。在本实施例中,生成与“锚序列”对应的“锚”指向的多个“锚包”。例如,如图16中所示,如果依次检测与附图标记A和B对应的“锚序列”,则不仅通过指向对应“锚包”(参见实线箭头)来关联而且通过指向与将依次检测的、附图标记B所示的“锚”对应的另一“锚包”(虚线箭头)来关联附图标记A所示的“锚”。由此,由于有可能容易访问与检测到的“锚序列”的位置接近的子块数据的“锚包”,所以可以更容易发现重复数据。<补充注释>可以描述上文公开的示例性实施例的全部或者一部分作为以下补充注释。下文将描述存储系统(参见图19)的配置、存储程序的计算机可读介质和信息处理方法的概况。然而,本发明不限于下文描述的配置。<补充注释1>一种存储系统100,包括:块数据去重单元101,其在存储设备中存储通过将数据流划分成任意大小的块而生成的块数据,基于所述块数据的数据内容的地址数据指向所述块数据,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述块数据的所述数据内容相同的数据内容的另一条块数据时,在所述存储设备中存储指向已经被存储在所述存储设备中的所述块数据的所述地址数据作为所述另一条块数据,以由此执行所述块数据的重复存储消除;以及子块数据去重单元102,在所述存储设备中存储通过将所述块数据进一步划分成多条数据而生成的子块数据,基于所述子块数据的数据内容的一条子地址数据指向所述多条子块数据中的每一条子块数据,在预定存储设备中存储包括多条子地址数据的子地址数据组,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述子块数据的所述数据内容相同的数据内容的另一条子块数据时,在所述预定存储设备中存储指向已经被存储在所述存储设备中的所述子块数据的所述一条子地址数据作为所述另一条子块数据,以由此执行所述子块数据的重复存储消除。〈补充注释2>根据补充注释I所述的存储系统,其中:所述子块数据去重单元对通过划分所述块数据去重单元未对其执行重复存储消除的所述另一块数据而生成的所述多条子块数据执行所述子块数据的重复存储消除。
〈补充注释3>根据补充注释I所述的存储系统,其中:如果基于所述块数据的数据内容从所述数据流中的至少一条块数据检测到的特征值满足设置的条件,则所述子块数据去重单元在所述预定存储设备中与满足所述设置的条件的所述特征值关联地存储指向通过划分与从其检测到满足所述设置的条件的所述特征值的所述块数据相邻的另一条块数据而生成的多条子块数据的所述子地址数据组。〈补充注释4>根据补充注释3所述的存储系统,其中:如果已经在所述预定存储设备中存储了从所述数据流中的所述一条块数据检测到的所述特征值,则所述子块数据去重单元将已经与所述特征值关联地存储的所述子地址数据组与指向构成与从其检测到所述特征值的所述块数据相邻的另一块数据的多条子块数据的子地址数据组进行比较,以由此执行所述子块数据的重复存储消除。<补充注释5>根据补充注释4所述的存储系统,其中:如果作为在所述子地址数据组之间的比较的结果而未在所述存储设备中存储多条所述子块数据,则所述子块数据去重单元通过组合所述多条子块数据来存储它们。<补充注释6>根据补充注释3所述的存储系统,其中:所述子块数据去重单元在所述预定存储设备中与多个子地址数据组关联地存储满足所述设置的条件的所述特征值。<补充注释7>根据补充注释2所述的存储系统,其中:所述子块数据去重单元在其中读取和写入速度比存储所述块数据和所述子块数据的所述存储设备的读取和写入速度更高的所述预定存储设备中存储与满足所述设置的条件的所述特征值关联的所述子地址数据组。<补充注释8>一种存储程序的计算机可读介质,所述程序包括用于使信息处理器设备实现以下单元的指令:块数据去重单元,其在存储设备中存储通过将数据流划分成任意大小的块而生成的块数据,基于所述块数据的数据内容的地址数据指向所述块数据,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述块数据的所述数据内容相同的数据内容的另一条块数据时,将指向已经被存储在所述存储设备中的所述块数据的所述地址数据作为所述另一条块数据存储在所述存储设备中,以由此执行所述块数据的重复存储消除;以及子块数据去重单元,在所述存储设备中存储通过将所述块数据进一步划分成多条数据而生成的子块数据,基于所述子块数据的数据内容的一条子地址数据指向所述多条子块数据中的每一条子块数据,在预定存储设备中存储包括多条子地址数据的子地址数据组,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述子块数据的所述数据内容相同的数据内容的另一条子块数据时,将指向已经被存储在所述存储设备中的所述子块数据的所述一条子地址数据作为所述另一条子块数据存储在所述预定存储设备中,以由此执行所述子块数据的重复存储消除。<补充注释9>根据补充注释8所述的存储程序的计算机可读介质,其中:所述子块数据去重单元对通过划分所述块数据去重单元未对其执行重复存储消除的所述另一块数据而生成的所述多条子块数据执行所述子块数据的重复存储消除。<补充注释10>根据补充注释8所述的存储程序的计算机可读介质,其中:如果基于所述块数据的数据内容从所述数据流中的至少一条块数据检测到的特征值满足设置的条件,则所述子块数据去重单元在所述预定存储设备中与满足所述设置的条件的所述特征值关联地存储指向通过划分与从其检测到满足所述设置的条件的所述特征值的所述块数据相邻的另一条块数据而生成的多条子块数据的所述子地址数据组。〈补充注释11>—种信息处理方法,包括:在存储设备中存储通过将数据流划分成任意大小的块而生成的块数据,基于所述块数据的数据内容的地址数据指向所述块数据,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述块数据的所述数据内容相同的数据内容的另一条块数据时,将指向已经被存储在所述存储设备中的所述块数据的所述地址数据作为所述另一条块数据存储在所述存储设备中,以由此执行所述块数据的重复存储消除;以及在所述存储设备中存储通过将所述块数据进一步划分成多条数据而生成的子块数据,基于所述子块数据的数据内容的一条子地址数据指向多条子块数据中的每一条子块数据,在预定存储设备中存储包括多条子地址数据的子地址数据组,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述子块数据的所述数据内容相同的数据内容的另一条子块数据时,将指向已经被存储在所述存储设备中的所述子块数据的所述一条子地址数据作为所述另一条子块数据存储在所述预定存储设备中,以由此执行所述子块数据的重复存储消除。<补充注释12>根据补充注释11所述的信息处理方法,还包括:对通过划分未对其执行重复存储消除的所述另一块数据而生成的所述多条子块数据执行所述子块数据的重复存储消除。<补充注释13>根据补充注释12所述的信息处理方法,还包括:如果基于所述块数据的数据内容而从所述数据流中的至少一条块数据检测到的特征值满足设置的条件,则在所述预定存储设备中与满足所述设置的条件的所述特征值关联地存储指向通过划分与从其检测到满足所述设置的条件的所述特征值的所述块数据相邻的另一条块数据而生成的多条子块数据的所述子地址数据组。
权利要求
1.一种存储系统,包括: 块数据去重单元,所述块数据去重单元在存储设备中存储通过将数据流划分成任意大小的块而生成的块数据,所述块数据由基于所述块数据的数据内容的地址数据来指向,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述块数据的所述数据内容相同的数据内容的另一条块数据时,在所述存储设备中存储指向已经被存储在所述存储设备中的所述块数据的所述地址数据作为所述另一条块数据,以由此执行所述块数据的重复存储消除;以及 子块数据去重单元,所述子块数据去重单元在所述存储设备中存储通过将所述块数据进一步划分成多条数据而生成的子块数据,所述多条子块数据中的每一条子块数据由基于所述子块数据的数据内容的一条子地址数据来指向,在预定存储设备中存储包括多条子地址数据的子地址数据组,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述子块数据的所述数据内容相同的数据内容的另一条子块数据时,将指向已经被存储在所述存储设备中的所述子块数据的所述一条子地址数据作为所述另一条子块数据存储在所述预定存储设备中,以由此执行所述子块数据的重复存储消除。
2.根据权利要求1所述的存储系统,其中: 所述子块数据去重单元对通过划分所述块数据去重单元未对其执行重复存储消除的另一块数据而生成的所述多条子块数据执行所述子块数据的重复存储消除。
3.根据权利要求1所述的存储系统,其中: 如果基于所述块数据的数据内容而从所述数据流中的至少一条块数据检测到的特征值满足设置的条件,则所述子块数据去重单元在所述预定存储设备中与满足所述设置的条件的所述特征值相关联地存储所述子地址数据组,所述子地址数据组指向通过划分与从其检测到满足所述设置的条件的所述特征值的所述块数据相邻的另一条块数据而生成的多条子块数据。
4.根据权利要求3所述的存储系统,其中: 如果从所述数据流中的所述一条块数据检测到的所述特征值已经被存储在所述预定存储设备中,则所述子块数据去重单元将已经与所述特征值相关联地存储的所述子地址数据组与指向构成与从其检测到所述特征值的所述块数据相邻的另一块数据的多条子块数据的子地址数据组进行比较,以由此执行所述子块数据的重复存储消除。
5.根据权利要求4所述的存储系统,其中: 如果作为在所述子地址数据组之间的比较的结果而未在所述存储设备中存储多条所述子块数据,则所述子块数据去重单元通过组合所述多条子块数据来存储它们。
6.根据权利要求3所述的存储系统,其中: 所述子块数据去重单元在所述预定存储设备中与多个子地址数据组相关联地存储满足所述设置的条件的所述特征值。
7.根据权利要求2所述的存储系统,其中: 所述子块数据去重单元在所述预定存储设备中存储与满足所述设置的条件的所述特征值相关联的所述子地址数据组,其中所述预定存储设备的读取和写入速度比存储所述块数据和所述子块数据的所述存储设备的读取和写入速度更高。
8.一种存储程序的计算机可读介质,所述程序包括指令,用于使信息处理器设备实现: 块数据去重单元,所述块数据去重单元在存储设备中存储通过将数据流划分成任意大小的块而生成的块数据,所述块数据由基于所述块数据的数据内容的地址数据来指向,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述块数据的所述数据内容相同的数据内容的另一条块数据时,在所述存储设备中存储指向已经被存储在所述存储设备中的所述块数据的所述地址数据作为所述另一条块数据,以由此执行所述块数据的重复存储消除;以及 子块数据去重单元,所述子块数据去重单元在所述存储设备中存储通过将所述块数据进一步划分成多条数据而生成的子块数据,所述多条子块数据中的每一条子块数据由基于所述子块数据的数据内容的一条子地址数据来指向,在预定存储设备中存储包括多条子地址数据的子地址数据组,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述子块数据的所述数据内容相同的数据内容的另一条子块数据时,将指向已经被存储在所述存储设备中的所述子块数据的所述一条子地址数据作为所述另一条子块数据存储在所述预定存储设备中,以由此执行所述子块数据的重复存储消除。
9.根据权利要求8所述的存储所述程序的计算机可读介质,其中: 所述子块数据去重单 元对通过划分所述块数据去重单元未对其执行重复存储消除的所述另一块数据而生成的所述多条子块数据执行所述子块数据的重复存储消除。
10.根据权利要求8所述的存储所述程序的计算机可读介质,其中: 如果基于所述块数据的数据内容而从所述数据流中的至少一条块数据检测到的特征值满足设置的条件,则所述子块数据去重单元在所述预定存储设备中与满足所述设置的条件的所述特征值相关联地存储所述子地址数据组,所述子地址数据组指向通过划分与从其检测到满足所述设置的条件的所述特征值的所述块数据相邻的另一条块数据而生成的多条子块数据。
11.一种信息处理方法,包括: 在存储设备中存储通过将数据流划分成任意大小的块而生成的块数据,所述块数据由基于所述块数据的数据内容的地址数据来指向,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述块数据的所述数据内容相同的数据内容的另一条块数据时,在所述存储设备中存储指向已经被存储在所述存储设备中的所述块数据的所述地址数据作为所述另一条块数据,以由此执行所述块数据的重复存储消除;以及 在所述存储设备中存储通过将所述块数据进一步划分成多条数据而生成的子块数据,所述多条子块数据中的每一条子块数据由基于所述子块数据的数据内容的一条子地址数据来指向,在预定存储设备中存储包括多条子地址数据的子地址数据组,并且当尝试在所述存储设备中存储具有与已经被存储在所述存储设备中的所述子块数据的所述数据内容相同的数据内容的另一条子块数据时,将指向已经被存储在所述存储设备中的所述子块数据的所述一条子地址数据作为所述另一条子块数据存储在所述预定存储设备中,以由此执行所述子块数据的重复存储消除。
12.根据权利要求11所述的信息处理方法,还包括: 对通过划分未对其执行重复存储消除的所述另一块数据而生成的所述多条子块数据执行所述子块数据的重复存储消除。
13.根据权利要求12所述的信息处理方法,还包括: 如果基于所述块数据的数据内容而从所述数据流中的至少一条块数据检测到的特征值满足设置的条件,则在所述预定存储设备中与满足所述设置的条件的所述特征值相关联地存储所述子地址数据组,所述子地址数据组指向通过划分与从其检测到满足所述设置的条件的所述特征值的所述块 数据相邻的另一条块数据而生成的多条子块数据。
全文摘要
以通过将数据流划分成任意大小的块而生成的块数据为单位执行重复存储消除。另外,通过将块数据进一步划分成多条数据来生成子块数据,并且在预定存储设备中存储基于多条子块数据中的每一条子块数据的数据内容的子地址数据。这样,也基于子地址数据以子块数据为单位执行重复存储消除。
文档编号G06F12/00GK103098035SQ20118004180
公开日2013年5月8日 申请日期2011年8月25日 优先权日2010年8月31日
发明者B·罗曼斯基, L·赫尔特, W·基利恩, K·利霍塔, C·达布尼克基 申请人:日本电气株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1