CN103080908B - 存储*** - Google Patents

存储*** Download PDF

Info

Publication number
CN103080908B
CN103080908B CN201180041773.9A CN201180041773A CN103080908B CN 103080908 B CN103080908 B CN 103080908B CN 201180041773 A CN201180041773 A CN 201180041773A CN 103080908 B CN103080908 B CN 103080908B
Authority
CN
China
Prior art keywords
data
memory device
storage
address date
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201180041773.9A
Other languages
English (en)
Other versions
CN103080908A (zh
Inventor
P·斯特里齐尔克扎克
E·亚当齐克
U·赫尔曼-艾齐克卡
J·萨科维克兹
L·斯鲁萨里齐克
J·罗恩
C·达布尼克基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Patent Wave Private Ltd
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of CN103080908A publication Critical patent/CN103080908A/zh
Application granted granted Critical
Publication of CN103080908B publication Critical patent/CN103080908B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在内容地址存储***中,将存储目标数据或者地址数据关于以时间序列方式划分的每个时区而存储于存储设备中,并且释放该存储设备中的存储区域,该存储区域存储在当前时区之前的以往时区中在存储设备中存储的存储目标数据或者地址数据的一条数据,此条数据未被其它地址数据所指向。

Description

存储***
技术领域
本发明涉及一种存储***,并且具体地涉及一种具有数据去重(deduplication)的存储***。
背景技术
针对企业市场的辅助存储需要同时提供若干特征以获得成功。大容量、高性能和高可靠性形成备份和存档装置所需要的核心功能。由于备份涉及到存储多个版本的相似数据,所以去重是这种***的新关键逻辑特征。利用去重,逻辑存储容量远大于可用物理空间,从而获得大量节省。如果动态(on-the-fly)对备份流执行去重,则可以避免向存储设备中写入去重的块,这对高性能有贡献。另外,由于分布式处理而使得去重所需要的计算得以扩展,所以可以实现更高性能,经过形成对企业客户至关重要的缩短备份窗。
在NPL1中公开的存储***是提供了所有上文提到的特征的商用分布式存储***。简言之,这一***可以视为保持如下块的集合的分布式存储***,这些块具有可变长度并且能够引用其它块。该***使用内容推导的块地址并且提供全局内嵌块去重。在NPL1中公开的存储***构建于DHT(分布式哈希表)上,支持从故障的自恢复,使用擦除码来生成数据的冗余码(奇偶位),并且提供多个用户可选数据弹性级别。
引用列表
专利文献
PTL1:PATTERSON,R.H.Incrementalgarbagecollectionofdatainasecondarystorage.专利,2008年11月。US7451168。
PTL2:PATTERSON,R.H.Probabilisticsummarydatastructurebasedencodingforgarbagecollection。专利,2010年4月。US7707166。
PTL3:TODD,S.J.,KILIAN,M.,TEUGELS,T.,MARIVOET,K.,ANDMATTHYS,F.Methodsandapparatusformanagingdeletionofdata.专利,2010年4月。US7698516。
非专利文献
NPL1:DUBNICKI,C.,GRYZ,L.,HELDT,L.,KACZMARCZYK,M.,KILIAN,W.,STRZELCZAK,P.,SZCZEPKOWSKI,J.,UNGUREANU,C.,ANDWELNICKI,M.,Hydrastor:ascalablesecondarystorage.InFAST′09:Proceedingsofthe7thconferenceonFileandstoragetechnologies(Berkeley,CA,USA,2009),USENIXAssociation,pp.197-210。
NPL2:WILSON,P.R.Uniprocessorgarbagecollectiontechniques.InIWMM′92:ProceedingsoftheInternationalWorkshoponMemoryManagement(London,UK,1992),Springer-Verlag,pp.1-42。
NPL3:ABDULLAHI,S.E.,ANDRINGWOOD,G.A.Garbagecollectingtheinternet:asurveyofdistributedgarbagecollection.ACMComput.Surv.30,3(1998),330-373。
NPL4:DIJKSTRA,E.W.,LAMPORT,L.,MARTIN,A.J.,SCHOLTEN,C.S.,ANDSTEFFENS,E.F.M.On-the-flygarbagecollection:Anexerciseincooperation.Commun.ACM21,11(1978),966-975。
NPL5:EFSTATHOPOULOS,P.,ANDGUO,F.RethinkingDeduplicationScalability.In2ndUSENIXWorkshoponHotTopicsinStorageandFileSystems(Boston,MA,USA,2010年6月)。
NPL6:HAEBERLEN,A.,MISLOVE,A.,ANDDRUSCHEL,P.Glacier:highlydurable,decentralizedstoragedespitemassivecorrelatedfailures.InNSDI′05:Proceedingsofthe2ndconferenceonSymposiumonNetworkedSystemsDesign&Implementation(Berkeley,CA,USA,2005),USENIXAssociation,pp.143-158。
NPL7:ABD-EL-MALEK,M.,II,W.V.C.,CRANOR,C.,GANGER,G.R.,HENDRICKS,J.,KLOSTERMAN,A.J.,MESNIER,M.P.,PRASAD,M.,SALMON,B.,SAMBASIVAN,R.R.,SINNAMOHIDEEN,S.,STRUNK,J.D.,THERESKA,E.,WACHS,M.,ANDWYLIE,J.J.Ursaminor:Versatilecluster-basedstorage.InFAST(2005)。
NPL8:QUINLAN,S.,ANDDORWARD,S.Venti:anewapproachtoarchivalstorage.InFirstUSENIXconferenceonFileandStorageTechnologies(Monterey,CA,2002),USENIXAssociation,pp.89-101。
NPL9:YOU,L.L.,POLLACK,K.T.,ANDLONG,D.D.E.Deepstore:Anarchivalstoragesystemarchitecture.InICDE′05:Proceedingsofthe21stInternationalConferenceonDataEngineering(Washington,DC,USA,2005),IEEEComputerSociety,pp.804-8015。
NPL10:LILLIBRIDGE,M.,ESHGHI,K.,BHAGWAT,D.,EOLALIKAR,V.,TREZIS,G.,ANDCAMBLE,P.Sparseindexing:Largescale,inlinededuplicationusingsamplingandlocality.InFAST(2009),pp.111-123。
NPL11:WEI,J.,JIANG,H.,ZHOU,K.,ANDFENG,D.Mad2:Ascalablehigh-throughputexactdeduplicationapproachfornetworkbackupservices.InProceedingsofthe26thIEEESymposiumonMassiveStorageSystemsandTechnologies(MSST)(2010年5月)。
NPL12:HONG,B.,ANDLONG,D.D.E.Duplicatedataeliminationinasanfilesystem.InProceedingsofthe21stIEEE/12thNASAGoddardConferenceonMassStorageSystemsandTechnologies(MSST(2004),pp.301-314。
NPL13:MEISTER,D.,ANDBRINKMANN,A.dedupv1:ImprovingDeduplicationThroughputusingSolidStateDrives(SSD).InProceedingsofthe26thIEEESymposiumonMassiveStorageSystemsandTechnologies(MSST)(2010年5月)。
NPL14:MEISTER,D.,ANDBRINKMANN,A.dedupv1:Improvingdeduplicationthroughputusingsolidstatedrives(technicalreport).Tech.rep.,2010年4月。
NPL15:BOLOSKY,W.J.,CORBIN,S.,GOEBEL,D.,ANDDOUCEUR,J.R.Singleinstancestorageinwindows2000.InProceedingsofthe4thUSENIXWindowsSystemsSymposium(2000),pp.13-24。
NPL16:ADYA,A.,BOLOSKY,W.,CASTRO,M.,CHAIKEN,R.,CERMAK,G.,DOUCEUR,J.,HOWELL,J.,LORCH,J.,THEIMER,M.,ANDWATTENHOFER,R.Farsite:Federated,available,andreliablestorageforanincompletelytrustedenvironment,2002。
NPL17:CLEMENTS,A.,AHMAD,I.,VILAYANNUR,M.,ANDLI,J.Decentralizeddeduplicationinsanclusterfilesystems.InProceedingsoftheUSENIXAnnualTechnicalConference(2009年6月)。
NPL18:ZHU,B.,LI,K.,ANDPATTERSON,H.Avoidingthediskbottleneckinthedatadomaindeduplicationfilesystem.InFAST′08:Proceedingsofthe6thUSENIXConferenceonFileandStorageTechnologies(Berkeley,CA,USA,2008),USENIXAssociation,pp.1-14。
NPL19:EMCCorp.EMCCentera:contentaddressedstoragesystem,2008年1月。http://www.emc.com/products/family/emccentera-family.htm?-openfolder=platform。
NPL20:GUNAWI,H.S.,AGRAWAL,N.,ARPACI-DUSSEAU,A.C.,ARPACI-DUSSEAU,R.H.,ANDSCHINDLER,J.DeconstructingCommodityStorageClusters.InProceedingsofthe32ndInternationalSymposiumonComputerArchitecture(Madison,WI,2005年6月)。
NPL21:BHAGWAT,D.,ESHGHI,K.,LONG,D.D.E.,ANDLILLIBRIDGE,M.Extremebinning:Scalable,paralleldeduplicationforchunk-basedfilebackup。
发明内容
技术问题
在NPL1中公开的存储***中的删除过程是以与如下传统垃圾收集相似的方式,在该传统垃圾收集中,删除不在被任何人所需要的块并且回收它们的空间。然而去重、分布式存储配置和对故障容许的要求使删除显著复杂化。例如一种在删除运行时停用去重的简单解决方案可能增加空间消耗,这可能不可接受。好得多的方式是允许在所有时间、甚至与删除并行地去重。
这样,本发明的示例目的在于提供一种能够在实现数据去重的同时有效利用存储空间的存储***,这是如上文所述的待解决的问题。
问题的解决方案
根据本发明的一个方面,一种存储***被配置为包括:数据存储控制单元,其将存储目标数据和地址数据存储于存储设备中,所述地址数据是基于在被指向对象中存储的数据内容和存储位置的数据并且指向存储目标数据或者其它地址数据,以及当尝试在存储设备中存储具有的数据内容与已经在存储设备中存储的一条存储目标数据的数据内容相同的另一条存储目标数据时,在存储设备中存储指向已经在存储设备中存储的一条存储目标数据的地址数据以作为另一条存储目标数据;以及数据释放控制单元,其释放存储设备中的存储区域,该存储区域存储在存储设备中存储的存储目标数据或者地址数据的一条数据,此条数据未被其它地址数据所指向,其中该数据存储控制单元将存储目标数据或者地址数据关于以时间序列方式划分的每个时区在而存储在存储设备中,并且该数据释放控制单元释放存储设备中的存储区域,该存储区域存储在当前时区之前的以往时区中在存储设备中存储的存储目标数据或者地址数据的一条数据,此条数据未被其它地址数据所指向。
根据本发明的另一方面,一种计算机可读介质存储程序,该程序包括用于使信息处理器设备实现以下单元的指令:
数据存储控制单元,其将存储目标数据和地址数据存储于存储设备中,该地址数据是基于在被指向对象中存储的数据内容和存储位置的数据并且指向存储目标数据或者其它地址数据,以及当尝试在存储设备中存储具有的数据内容与已经在存储设备中存储的一条存储目标数据的数据内容相同的另一条存储目标数据时,在存储设备中存储指向已经在存储设备中存储的一条存储目标数据的地址数据以作为另一条存储目标数据;以及数据释放控制单元,其释放存储设备中的存储区域,该存储区域存储在存储设备中存储的存储目标数据或者地址数据的一条数据,此条数据未被其它地址数据所指向,其中所述数据存储控制单元将存储目标数据或者地址数据关于以时间序列方式划分的每个时区而存储在存储设备中,并且该数据释放控制单元释放存储设备中的存储区域,该存储区域存储在当前时区之前的以往时区中在存储设备中存储的存储目标数据或者地址数据的一条数据,此条数据未被其它地址数据所指向。
根据本发明的另一方面,一种信息处理方法被配置为包括:将存储目标数据和地址数据存储于存储设备中,该地址数据是基于在被指向对象中存储的数据内容和存储位置的数据并且指向存储目标数据或者其它地址数据,以及当尝试在存储设备中存储具有的数据内容与已经在存储设备中存储的一条存储目标数据的数据内容相同的另一条存储目标数据时,在存储设备中存储指向已经在存储设备中存储的一条存储目标数据的地址数据以作为另一条存储目标数据;释放存储设备中的存储区域,该存储区域存储在存储设备中存储的存储目标数据或者地址数据的一条数据,此条数据未被其它地址数据所指向;执行关于以时间序列方式划分的每个时区在存储设备中对存储目标数据或者地址数据的存储;以及释放存储设备中的存储区域,该存储区域存储在当前时区之前的以往时区中在存储设备中存储的存储目标数据或者地址数据的一条数据,此条数据未被其它地址数据所指向。
本发明的有利效果
由于如上文描述的那样配置了本发明,所以有可能提供一种能够在实现数据去重的同时有效利用存储空间的存储***。
附图说明
[图1]图1示出根据第一示例实施例的时期(epoch)分配规则;
[图2]图2示出根据第一示例实施例的块分类;
[图3]图3(a)和3(b)示出根据第一示例实施例的在删除块时引起的问题;
[图4]图4示出根据第一示例实施例的进展时期的状态;
[图5]图5是示出根据第一示例实施例的用户操作带宽的图形;
[图6]图6是示出根据第一示例实施例的在用户操作在进行中之时的垃圾识别持续时间的测量值的图形;
[图7]图7(a)和7(b)是指示根据第一示例实施例的垃圾回收持续时间和垃圾识别持续时间的测量值的图形;
[图8]图8是示出根据第一示例实施例的当在存储节点中引起问题时的垃圾识别持续时间的测量值的图形;
[图9]图9是示出包括第二示例实施例的存储***的整个***的配置的框图;
[图10]图10是示意地示出第二示例实施例的存储***的配置的框图;
[图11]图11是示出第二示例实施例的存储***的配置的功能框图;
[图12]图12是用于说明图11中公开的存储***中的数据存储过程的方面的说明图;
[图13]图13是用于说明图11中公开的存储***中的数据存储过程的方面的说明图;
[图14]图14是用于说明图11中公开的存储***中的数据取回过程的方面的说明图;
[图15]图15示出根据第二示例实施例的时期改变;
[图16]图16示出根据第二示例实施例的写入数据的状态
[图17]图17示出根据第二示例实施例的待引用的写入数据的数目的示例计算;
[图18]图18示出根据第二示例实施例的待引用的写入数据的数目的示例计算;
[图19]图19示出根据第二示例实施例的删除过程的细节;
[图20]图20图示根据第二示例实施例的在数据删除时的问题及其解决方案;以及
[图21]图21是示出根据补充注释1的存储***的配置的框图。
具体实施方式
<第一示例实施例>
本实施例做出以下贡献。第一,它识别了在分布式去重块存储库中的删除要求。第二,它给出了满足这些要求并且已经在商业***中实施的算法。第三,它讨论了对删除过程评估的结果、示范它的效率并且说明删除对关键用户操作的影响。
本实施例按照如下进行组织。首先,将概述了删除要求。然后将会定义删除的用户可见语义和关联数据模型。然后将描述NPL1中公开的***中删除实现方式所面临的挑战。然后将具体讨论删除算法。另外,将给出对实施的删除过程如何解决早先所识别的要求的描述。最后,将讨论有关工作并将提出结论和将来工作。
(对删除的要求)
在所有***中的删除必须首先让用户有选择地删除数据并且保留用户决定保持的数据。通常,一旦数据被标记用于删除,就立即执行空间回收以保证在存储利用率方面的效率。但是不同于主要存储,辅助存储可以延迟收回不用的空间。立即数据删除并不那么重要,这是因为去重存储更为空间高效得多,并且空间回收对于CAS(内容可寻址存储)***更复杂。
在企业备份***中,需要最小化删除对比如备份、恢复和复制的用户操作的影响。这一功能有望全天候(24×7)可用,并且它的性能即使并非完全不受损也不应当由于删除运行而受损太多。较早版本的存储***表明使运行删除局限于只读时段难以接受,因为它可能造成重排备份窗。另外,在连续备份策略的情况下,这样的约束在实践中是不可能的。
由于运行删除消耗***资源,所以它影响总***性能。减少这一影响是删除实施目标之一。此外,删除必须随整个***扩展。可以预计的是,成比例地改变计算能力和盘容量将使删除对总性能的影响保持于相同水平。
随着***中的机器和盘数目增加,硬件故障概率增加。为了保证***可用性,删除过程必须能够在存在多个盘、节点和网络故障时继续它的操作。另外,由于删除数据的能力对于***的操作是关键的,所以删除过程必须即使在持久数据故障的情况下仍然能够重启和完成;因此,删除的弹性事实上应当高于用户数据的弹性。
另外,最后但相当重要的是,删除不应需要完成大量附加存储。
(用户可见语义)
(数据模型)
在NPL1中公开的存储***的用户可见的基本数据单位是块。除了二进制数据之外,块可以包含指向其它块的指针。根据块内容给推导块地址,如果有指向其它块的指针,则包括这些指针。内容寻址意味着块是不可变的,因为否则它们的地址将改变。在本发明中有两种不同的块类型:常规(regular)块和可搜索块。
可搜索块可以利用其关联搜索关键字来读取,而不是利用读取常规块所需要的隐含内容推导地址。搜索关键字可以是任意字符串并且在可搜索块写入时与二进制数据和指针一起由用户提供。由于仅利用可搜索块的关键字来读取可搜索块,所以***防止利用相同关键字和不同内容写入两个可搜索块。可搜索块并不具有常规地址,并且不能被其它块所指向。
由于在NPL1中公开的存储***支持去重,所以常规块写入所返回的地址可以引用已经存在的块,其被称为用于这一重复写入的基础块。去重针对可搜索块也起作用。
利用这些类型的块和有关操作,用户可以创建块图。由于块不可变,所以这样的图形是非循环性的。为了避免空悬的指针,在并未先写入这样的块的情况下,用户不能根据块内容推导出块地址;因此,仅能以自下至上方式构建块图。
(删除粒度)
该***未提供一种用于去除个别块的方式。取而代之,它允许将自给定可搜索块可到达的所有块标记为不再需要。更具体而言,有两个子类型的可搜索块:留存根和删除根。如果留存根和删除根的可搜索关键字相等,则称它们匹配。留存根将自它可到达的块标记为将要保留的块,而删除根“消除”用于匹配留存根的这一性质。注意使用额外标记来区分可搜索块子类型,因而事实上对关键字唯一性的要求仅适用于留存根。如果在***中无匹配删除根,则称留存根存活。从任何存活留存根可到达的常规块是存活的。如果块未存活,则称它为死掉。
在理论上,有可能给出用于删除单个块的操作,而不是将整个块图标记用于删除。然而,这将使保持对个别块删除的跟踪复杂化,并且最重要的是,这可能由于删除***中的另一现有块所指向的块而引起创建空悬引用。
注意,如果恶意用户知道适当搜索关键字则他能够删除其他用户的块。这一问题通过利用用户专属id对可搜索块的关键字加密而容易地得到解决。
(使用时期在删除与用户之间同步)
在删除运行之时写入具有指针的块产生了目前为止所描述的删除问题。假设用户想要写入常规的新块A。并且通过写入指向A的留存根R来保持这一个块。由于必须向R的内容中***A的***返回地址,所以成功完成写入A必须先于提交R的写入请求。如果删除在这两个块的写入之间运行,则可以删除A,因为根据上文给出的定义是它死掉的。
通过扩充存活块的集合以包括用户可以保持的块和从它们可到达的所有块,这一问题可以得到解决。由于用户可以潜在地保持所有块,所以还附加地约束用户可以记住哪些块。这通过引入用所谓的时期(epoch)构建的虚拟时间来实现。时期是代表发展阶段(generation)的进展(advance)操作的全局计数器。在任何给定的时间点,***出于被称为当前时期的仅一个时期中。
用户获得的每个块地址具有与这一地址关联的时期。***在写入时验证具有关联时期T的地址仅能在时期T和T+1中使用。对于读取,用户仍然可以使用具有更旧时期关联的地址,但是如果块被删除则读取可能失败。
对于给定的块的地址,它的时期可以根据如何获得这一地址而改变。在图1中给出时期分配规则。此处,为了完整性而呈现这一水平的细节,但是在后文也将对此进行描述。
在写入无指针的常规块时,***返回关联有当前时期的块地址。当被写入块包含指针时,随这一写入返回的时期是向这一个块中***的块地址的时期中的最小值(所谓的最小值规则)。可搜索块没有常规地址,因此未分配时期。在写入时返回的时期并不依赖于写入的块的重复状态。
也可以通过读取具有指针的块来获得块地址。通过读取块而获得的指针的时期是相同的。对于具有指针的常规块,此时期等于与读取块的地址关联的时期。对于具有指针的可搜索块,此时期等于当前时期。
回顾树构建过程要求用户保持已写入块的地址以向父块中***它们。然而在时期引入之后,在相继块创建中仅允许被打有当前时期和先前时期时间戳的地址。
在时期从T向T+1进展(进展操作的应用)之后,向所有用户通知它以便丢弃与时期T关联的所有块地址。这里,丢弃指针意味着将他们交付给存活的留存根所指向的树。这需要在时期能够进展至T+2之前完成。在时期T+2中,***在即使单个指针具有关联时期小于T+1的地址时仍然拒绝写入具有指针的块。***也拒绝尝试读取不存活的留存根,以约束用户可以保持的块地址的集合。这样的约束对于正确行为的用户而言是无关的,但是对于递送正确删除过程的***而言为必需。
通过引入和实行上文描述的时期约束,删除能够在用户可以继续向***写入新数据并且读取所有可访问块的同时,识别待去除的不可访问较旧块。
(删除挑战)
(根集合确定)
在典型垃圾收集中,关于通常由运行程序的全局和活跃局部变量组成的根集合来确定对象可访问性。“存活对象”直接属于根集合,并且通过图遍历从根集合可到达。由于在程序运行期内的垃圾收集具有关于程序变量的完全知识,所以根集合的计算很好理解。在比如NPL1中公开的存储***的***中,这则困难得多,因为其根集合不仅包含与全局变量对应的存活留存根,而且包含其地址(这些地址如同编程语言中的局部变量)仍然可以被用户记住的块。如上文指出的那样,如果没有关于记住块地址的权限对用户施加约束,则在NPL1中公开的存储***中所有块将构成根集合。引入时期约束限制了根集合,并且支持在本发明中的删除。因而根集合仅包括(1)存活留存根和(2)适合于写入的用户保持地址,按照时期约束,这些地址仅能具有关联的当前或者先前时期。
(去重影响)
为了避免因删除所引起的增加存储消耗,拒绝在删除期间停用去重的解决方案。因而作为去重的附带结果,为预定删除的块可能复活。保留这样的块是本删除算法中的根本挑战。
(分布)
分布式存储***经常由于节点添加、去重和故障而改变节点配置;并且因而在***内的数据分布也改变。删除算法必须尽管必需数据和元数据的位置变化仍能够对它们定位。
直至现在,已经讨论NPL1中公开的存储***中的块的用户观点。然而删除过程所操作的内部数据组织与用户可见的那些组织迥然不同。
在NPL1中公开的存储***在内部是由超节点组成。每个超节点由它所负责的哈希空间的前缀来标识。超节点的哈希空间不相交并且覆盖整个哈希空间。每个超节点负责如下块的用户写入和读取,这些块具有属于这一超节点的哈希空间的基于内容的哈希。将超节点本身划分成固定数目的对等体。在写入时,对块擦除编码,然后将所得到片段分布到对等体,这些对等体向针对每个对等体而分开的片段容器追加接收的片段。对等体本身通常分布于物理机器之上以提供节点故障弹性。
删除算法必须做出保留或者删除一个块的所有片段的一致决定。
(故障容许)
删除过程必须在尽管有适度数目的节点和盘故障时仍然能够进行。另外,删除应当应对由于在将来某一时时间将重新出现的间歇性网络故障而临时不可用的节点。具体而言,删除算法必须能够区分在先前死掉机器上发现的在逻辑上已删除的块的片段与仍然存活的那些片段。
(物理资源使用)
在NPL1中公开的存储***是持久存储,因此显然在盘上保持片段。具体而言,从父块取回所指向块地址可能需要至少一个盘访问。删除算法必须考虑盘、存储器和网络访问模式,以高效使用这些资源。
(删除算法)
(概述)
在NPL1中公开的存储***使用一种很好理解的引用计数的技术。每个块具有引用计数器,该引用计数器跟踪指向计数器所有者的其它块的数目。然而当写入新块时,未动态变更所指向块的计数器。这样的立即更新将会由于针对可能位于***中任何位置处的每个子块的可能随机I/O而很昂贵。取而代之,在定期运行的后台删除过程中更新引用计数器。
块计数器是持续的并且在存储块片段的所有对等体上被复制。对于每个片断,在删除期间有两个版本的计数器:持续的有效计数器和用来存储删除算法的部分结果的临时计数器。在对等体故障时,可以丢弃临时计数器而无损于持续计数器。
整个删除由定期运行的两个阶段构成:在其中计算新计数器值的垃圾识别。在这一阶段之后是空间回收,在该空间回收期间,可以通过删除在第一部分中识别的垃圾来回收存储空间。这样的划分是可能的,因为如上文指出的那样,在辅助存储***中无需立即回收。另外,允许垃圾识别和空间回收并行进行将由于重复写入所需要的特殊处理而延长了前者的持续时间。在这样的情况下为了将写入识别为重复,***将必须检查块的回收是否尚未在任何对等体上开始,并且这样做将需要在重复写入与物理回收之间的同步。
在以下描述中,删除仅表示垃圾识别阶段。这一阶段的每次运行计算仅仅直至某一时间瞬间写入的块的计数器。每个开始的运行将块划分成三个不相交的类,如图2中所示。第一类包含在上次成功删除开始之前写入的块。将它们称为已完成块。第二类包含更迟、但是在当前删除开始之前写入的块——将它们称为待完成块。最后,在当前删除开始之后写入的块属于第三类,称为新块。
将通过当前删除来处理待完成块,以反映与待完成和已完成块二者的未处理指向关系。这能够造成某一完成或者待完成块的计数器的递增和递减二者。新块在这一删除运行中并未处理,并且它们暂时未影响其它块计数器的值。将在下一删除运行中计算这一影响。具体而言,所有新删除根在这一删除运行中无影响。在下一删除完成之前,简单地保留所有新块,并且将它们的计数器设置成特殊初始值。
下一删除运行将仅处理如下新块,这些新块将变成用于这一运行的待完成块,即计数器更新过程为递增式。
每个删除运行在由每个超节点中的对等体子集同步地执行的子阶段中进行。
首先,在每个超节点中选择删除算法的初始参与者。如果对等体的数据状态足够好,他们才可以参加计算。例如具有指针的所有块必须存在于对等体的当前位置,以便此对等体能够执行删除算法的步骤。所选对等体然后称为良好对等体,并且它们中的每个对等体执行相同任务以识别垃圾块,即在删除计算中具有高冗余性。剩余对等体在删除算法期间是空闲的,并且最终在删除结束之后从后台中的其它对等体接收最终计数器。
接着,读入指向其它块的所有待完成块,分布它们的指针,并且使它们的目标块计数器递增。在递增期间,初始值视为0。
在完成递增之后,需要识别起始块以用于递减。这些包括具有匹配删除根的留存根以及未让它们的计数器递增的常规待完成块(暂时假设无新块指向它们)。将这样的块的计数器改变成0。
来自这样识别的垃圾的所有指针在垃圾指向的块中引起计数器递减。然而递减也可能引起一些其它块计数器降至0。因此,可能再次识别新垃圾,并且重复递减直至未发现新垃圾。
在后文描述的两阶段交付中进行向新计数器的切换。在交付之后,垃圾块不再可读,并且在后台中回收它们占用的空间。
任何对等体故障减少良好对等体的集合。如果在任何超节点内的良好对等体数目降至某一可配置最小值以下,则中止整个删除过程,并且放弃它的部分结果。
如上文概括的删除过程顺利地工作,但是仅如果无新写入则才如此。在有新写入时,存在在下文中处理的主要复杂因素。
(复杂因素)
考虑图3(a)中的情况,在该情况下,恰在删除开始之前已经写入块A,并且恰在这一时间点之后已经写入指向A的留存根R。这里,A肯定未被除了R之外的其它新块所指向;因此被识别过程跳过。因而A被不正确地删除。应当注意,尽管图3(a)示出其中在删除开始之后已经写入指向块A的留存根的情况,但是块A不应删除。
对这一问题的解决方案是利用上文描述的时期约束。回顾不允许用户保持比先前时期更旧的地址。因此,使此时期进展两次并且保证在第一次进展与第二次进展之间写入的块将如图4中所示那样来发送它们的增量就足够了。注意并未从这样的块发送减量,因为将引起去除一些新块和违反无条件地保留新块的基本假设。因此,此时期总是如图4中所示被递增一以由此向下一发展阶段(generation)移位。
第二次进展保证用户丢弃在开始的删除之前所获得的块A的地址,因此不能创建对A的新引用。可以指向A的仅有新块是在第一次进展之前并且在第二次进展之后写入的块。但是这些精确地是从其发送附加增量的块。
去重引起了下一问题,并且该问题在图3(b)图示。考虑在当前删除开始时未被任何其它块所指向的待完成块A。如果用户写入重复块A、然后写入指向A的留存根R,则应当保留二者。然而删除过程将会把A识别为垃圾,因为任何待完成块和旧块均未指向它。于是A的删除是不正确的,并且引起数据损失。
为了解决这一问题,在写入时通过设置所谓的不删除标记来将重复写入的基础块标记为在当前删除期间不可删除。在删除完成时,当块将要被删除(即它的新计算的计数器为0)并且设置有不删除标记时,通过将这样的块的计数器恢复成初始值来保留块。如果删除未在进行中,则重复写入未设置任何标记。
在已经计算所有新计数器值之后,未针对重复写入设置新的不删除标记。继续写入这样的标记将引起在设置与使用它们以将计数器恢复成初始值之间的竞争。取而代之,使用所谓的基础块过滤以避免在只是将要删除写入的基础块时而将写入分辨为重复。只有在基础块的仍然是临时的但是准备好交付的计数器为正或者设置不删除标记时,则才对写入去重。否则,即使新块的潜在基础块已经存在于***中,仍然写入新块。
完成的删除运行可以造成具有的计数器值被设置成初始值为删除块。下一删除运行需要决定是否真正地应当保持这些块。按照需要,用附加递归递增来完成这一点。对于新删除待完成块中的至少一个待完成块所指向的每个未删除块,向被指向块递归地发送增量。
注意,在上次已完成删除运行的情境中,未删除块仅能被其它未删除块或者新块所指向。如果给定的未删除块可由任何新块到达,则这样的未删除块将由上文描述的递归递增过程达到。否则,不可到达未删除块将被这一删除运行识别为垃圾。
(细节)
(删除和时期改变)
删除运行如图4中所示覆盖一个完整时期和下一时期的部分。如上文描述的那样,称为预备时期的第一时期允许用户丢弃具有旧时期的地址。在称为删除标记时期的第二时期中,执行实际删除计算。没有理由在删除运行结束时解除(bump)当前时期。进展操作由***中的分离实体协调,该实体保证只有在所有用户均确认除掉旧地址时才执行下一进展。
(计数器递增)
在时期进展两次并且选择良好对等体之后,基于待完成块的批量递增开始(在图4中描绘增量源)。良好对等体读取具有指针的待完成块中的块地址,并且向负责目的地地址的超节点中的良好对等体传送对(源地址,目的地地址)。目的地良好对等体在消息接收时并未递增目标块计数器。这一点的原因有两重:消息可以通过网络变得重复,因此可以多于一次递增计数器。另外,多次访问随机块的计数器以逐个执行递增将是低效的。取而代之,接收的所有指针被存储到临时本地存储装置,并且随后读取、使这些指针唯一化以及批量应用于临时计数器。
在批量递增之后,***对使其计数器递增的未删除块进行定位并且执行如上文提到的递归递增。
当完成整个递增时,一些常规待完成块(与留存或者删除根相反)可以仍然设置有初始值,这意味着无新指针指向它们。所有这样的块均是用于下文描述的递减算法的附加输入。
(计数器递减)
计数器递减始于初始识别的垃圾根,并且如上文描述的那样递归地进行直至未发现更多新垃圾。单轮的减量分布和实际递减与递增以相同的方式工作,而仅有的不同在于它使计数器减小而不是使其它们增加。
(新计数器交付)
一旦上一轮递减结束,针对每个超节点验证计算的计数器相等性。在任何超节点上的计数器未匹配将指示软件故障。如果发现任何未匹配,则中止删除过程。在成功验证之后,使临时计数器持续,并且***准备好使用它们。良好对等体表决进入恰当交付阶段,在该交付阶段中,***开始使用新计数器。从现在开始,在故障之后重启的每个节点设法完成计数器交付。切换本身很快,因为它仅需替换所有片段容器的元数据。
(不删除标记组织和处置)
如上文描述的那样,在删除期间的重复写入触发在每个良好对等体上的特殊不删除标记的写入。未针对新块设置不删除标记,因为当前删除运行决不删除这样的块。
在递减之后,无论块何时设置有新计数器值零和不删除标记,都会将它的计数器重置成初始值,因此这一个块不会再被视为垃圾。
作为块写入的部分的去重是基本操作,并且它的性能对于整个***的性能是关键的。因此,设置不删除标记必须很高效。这通过在良好对等体存储器中将未删除标记作为位图来实现。这是安全的,因为只要在每个超节点中有足够的良好对等体就进行删除。
(基础块过滤过程)
一旦交付开始,就不再写入不删除标记。取而代之,检查用于在写入期间识别的基础块的每个候选是否它将幸免于当前删除。这通过向所有良好对等体的查询来执行。仅在针对这一个块设置不删除标记或者这一个块的最近计算的、但是仍然临时的计数器为正时,对等体的答复才为肯定。在答复为肯定时,执行去重;否则,写入新块。
当接收所有良好对等体答复时,将最终答复计算为所有收集的答复的逻辑与。这是因为所有良好对等体必须均返回肯定答复以保证将在这一删除运行结束之后将会保留基础块候选。部分答复可能不一致,因为较早发出的不删除标记写入可能失败,从而仅使一些良好对等体上设置有不删除标记。
(将不删除标记应用于计数器)
当检测到不删除标记的不一致时,通过将逻辑与应用于从超节点内的所有良好对等体收集的位并且向所有良好对等体往回分布结果来使它们一致。此后,对于设置有不删除标记并且计算的计数器值等于最终零的每个块,将这一计数器值改变成初始零。
(空间回收概述)
作为垃圾识别的结果,一些块计数器可能降至零。虽然每个这样的块不再可读,但是它仍然占用存储资源。回收那些资源需要重写该块的片段驻留于其中的整个容器,因此这是工作繁重的操作。为了避免不必要的繁重工作,在需要存储资源时,或者在有用于执行回收的空闲周期时,回收存储资源。为了可快回收尽可能多的存储资源,将优先权给予具有最高的待去除片段率的容器。
(删除正确性分析)
将证明上述删除过程正确,即它未去除的从如上文定义的根集合可到达的块。理想地,应当也能够表明垃圾识别去除从根集合不可到达的所有块。然而情况并非如此,因为在任何时间点,用户可以从存储器去除块的地址,因此从当前根集合去除该块。例如,用户可以在垃圾识别在进行中之时写入新的常规块,并且立即忘记这一个块的地址。然而被这样的地址引用的块虽然不可被来自根集合的块到达,但是它不会被去除。因此,将仅证明删除去除大类的块。从可用于证明该主定理的以下引理开始。
(引理5.1)在时期T中结束的删除运行将保留在***时期T-1中写入的留存根可到达的块,这些块的地址带有关联时期T-2。
(证明)如上文描述的那样,增量从在T-1中写入的留存根发送,并且传播到这样的留存根可到达的所有块,特别是具有时期T-2的块。
现在介绍可用于证明主张的一些术语。考虑比如读取、写入和忘记获得地址的用户操作在从第一进展直至删除运行结束的垃圾识别期间执行。这样的操作的数目有限,并且它们以某一顺序执行;向它们分配连续自然数。在已经定义顺序后,令数学式1为用户所记住的、限于有效写入地址的地址集合序列,即假设在时期T中,用户并未保持来自时期T-2和更早时期的地址。此外,还定义由在第一进展之前存活的留存根所构成的集合的并行序列数学式2。集合Ri随着在第一进展之后的每个新写入的根而改变。这里,未考虑在第一进展之后写入的删除根,因为它们未影响这一删除运行。令修改Ui的数学式3操作是常规块写入、任何类型块的读取和忘记保持的地址。修改Ri的操作是留存根写入。每个操作改变这些集合中的仅一个集合。
[数学式1]
{Ui}i∈1..n
[数学式2]
{Ri}i∈1..n
[数学式3]
Si=Ui∪Ri
注意在第i个瞬间,Ui的任何元素均可读。为了证明删除过程的正确性,示出保留从Sn可到达的所有块就足够了。为此,将证明更强命题。
(定理5.2)(正确性性质)在时期T中结束的删除运行将保留集合Si的以下元素:
1.属于Ri的所有留存根,
2.Ui中具有的关联时期等于T-1或者T的所有地址,
3.Ui中具有时期T-2(如被来自Rn的任何留存根所指向)的地址,
4.从(1)、(2)或者(3)可到达的所有块。
(证明)将通过归纳进行证明。
基础:S0可以仅包含来自T-2的存活留存根和地址。删除不会去除从这样的留存根可到达的块,因为它是应用的引用计数的自然性质。来自T-2的地址按照引理5.1满足命题。
归纳步骤:令Si满足命题。作为以下操作之一的结果可以从Si创建Si+1:(1)去除使Si+1很一般地满足命题的被遗忘的地址。(2)添加从属于Ri的留存根所读取的地址。读取的地址满足归纳假设的命题。(3)添加从具有指针的来自Ui的具有时期T-2的块所读取的地址。读取的地址来自时期T-2(参见图1)并且按照引理5.1如果被来自Rn的任何留存根可到达则将被保留。(4)添加从具有指针的来自Ui的具有时期T-1或者T的块读取的地址。读取的地址从Ui可到达,并且具有时期T-1或者T,因此按照归纳假设将被保留。(5)添加通过写入无指针的规则块而获得的地址。获得的地址将来自时期T-1或者T。如果未对块去重,则当前垃圾识别简单地不删除它。否则,设置不删除标记,或者基础块过滤在删除运行结束之后确认块存在。这二者保证当前删除不删除基础块。
(6)添加通过写入具有指针的块而获得的地址,其中***的至少一个地址来自时期T-2。按照图1中陈述的所谓最小值规则,这样的返回地址将与时期T-2关联并且将按照引理5.1被有条件地保留。(7)添加通过写入具有指针的块而获得的地址,其中***的所有地址具有时期T-1或者T。同样,如果未对这样的块去重,则当前删除简单地不去除它。如果这样的写入被分辨为重复,则如在(5)的情况下那样,保留基础块。被指向块来自Ui,因此按照归纳假设保留它们。(8)通过写入在***时期T-1期间的留存根来扩充Ri。保留从这样的留存根可读的块,因为递增过程覆盖了它们。(9)通过写入在***时期T期间的留存根来扩充Ri。这样的留存根仅能具有来自按照归纳假设保留的Ui的、来自T-1和T的***地址。
现在将定义删除去除的块的类。
(定理5.3)(非空性质)删除运行将在删除开始之前写入并且同时满足以下条件的块识别为垃圾:
1.未被在删除开始之前的任何存活留存根可到达,以及
2.未被在第一和第二进展之前写入的任何留存根可到达,以及
3.未用作为用于在这一运行期间的重复消除的基础块。
(证明)根据增量和减量的边界设置,这样的块将让它们的计数器计算为0。如果并未使用这样的块作为用于在删除期间的重复消除的基础块,则0计数器变成有效并且去除这样的块。
(解决删除要求)
删除算法满足上文提到的所有要求。此算法以更早描述的定义好的块存活语义为特征。保留所有“存活块”,删除多数“停用块”。***可以临时保留一些潜在垃圾块,因为删除算法是保守的。然而,仅仅保持这样的块直至下一删除运行,下一删除运行将识别这些块为垃圾。
由于上文描述的时期约束,客户端能够在删除期间向***中进行写入而无中断。不删除标记的轻量级机制在删除运行的同时允许良好的去重有效性和写入性能。
如下文呈现的性能评估示出的那样,删除由于设计决策而引起用户可见总体***性能的很有限下降,这些设计决策比如是:(1)推迟空间回收和引用计数器更新;(2)增量和减量的有效分布以及它们批量应用于临时计数器;(3)从具有最高的待收获空间率的容器开始空间回收;以及(4)保持良好对等体存储器中的不删除标记。
删除算法的可扩展性与整个***的可扩展性相似,因为删除计算分布于超节点之中。删除以与针对用于用户写入和读取的数据位置所执行的方式相似的方式,使用内部DHT来应对***的动态性质。
删除过程对于对等体故障有弹性。由于在对等体之中的计算冗余性,对等体故障很少会终止识别过程。只要对于每个超节点具有充分数目的良好对等体,识别就继续。上文描述的计数器验证给予免于最有害软件故障的保护。
(性能评估)
除指出之处外所有实验均使用由4个存储节点(SN)和2个访问节点(AN)组成的内容可寻址存储***。所有服务器运行RedHatEL5.3Linux,具有2个四芯3GHzCPU和4个GigE卡。每个SN具有24GB的RAM和12个1TBSATA盘,而每个AN具有8GB的RAM和有限本地存储。
利用可压缩33%的平均块大小64KB来执行实验。将数据块写为9个原有片段和提供对3个故障的冗余性的3个冗余片段。如果未另外指定,则在所有实验中均使用向用户操作(读取和写入)给予70%***资源并且向与删除有关任务给予30%的默认资源划分策略。
(读取/写入带宽)
这一实验测量了垃圾识别对用户写入和读取的性能的影响。对于写入,将这一影响测量为写入的数据的去重率的函数。收集了共计15个数据点,3个一组,每组中5个去重率值,其范围从0%至几乎100%,步长25%。每组中的第一测量对在无删除运行时具有给定的去重率的写入带宽进行测量。用相同基本场景收集第二和第三数据点:首先用4TB的非重复数据填充空***,并且执行删除以计算块计数器。接着加载400GB的新数据并且删除400GB的现有数据。这两个数据点之间的不同在于所用的资源划分策略:第二数据点使用向写入给予100%的资源划分策略,而第三数据点使用向删除保留30%的资源的默认资源划分策略。
对于读取,执行三个相似实验,但是测试对一开始加载的数据的一些连续片段的读取,而不是写入数据。使用两个AN,并且在每个实验中写入许多流以保证瓶颈不在客户端侧上。
图5中的结果示出对于高度重复的流写入带宽最显著下降。在这样的情况下,CPU是瓶颈,并且垃圾识别过程需要例如用于写入不删除标记的大量CPU周期。对于更少去重的流,写入性能与设置的资源划分策略匹配。
删除对读取的影响甚至比对写入更小。这是因为在本发明的存储***中的读取过程聚焦于以带宽为代价的少量读取延时,因此读取未完全利用CPU和盘资源。因而,仍然可以适应删除需要而对读取延时无重大影响。
(垃圾识别持续时间)
在执行上文描述的实验之时,还附加地测量了垃圾识别的持续时间。在图6中给出针对利用默认资源划分策略的情况的结果。测量了第二删除运行的垃圾识别的持续时间。
对于删除持续时间,盘是瓶颈。由于非重复写入密集地使用盘,所以删除持续时间在存在这样的写入时需时最长。在读取期间,未使用所有盘,因为要求少量读取延时;因而在读取期间的删除持续时间短。对CPU周期的最高删除需要是在设置用于重复写入的不删除标记时。如上文说明的那样,利用默认资源划分策略,删除获得足够CPU周期,但是这造成更低写入性能。
(垃圾回收)
在测量垃圾回收的持续时间的5个实验中的每个实验中,写入500GB的数据并且删除该数据中的50GB,只是为了完成回收而改变了待重写的数据量。图7(a)示出在垃圾回收持续时间与待重写的数据量之间的几乎线性关系。这是因为垃圾回收的持续时间与如下容器的数目成比例,这些容器保持具有等于零的计数器的块。如上文描述的那样,必须在空间回收期间重写具有这样的块的容器。重写容器是繁重操作,因此如预计的那样,待重写容器越多,空间回收的持续时间就越长。
(删除可扩展性)
已经使用具有1至4个SN的***来执行用于考察删除可扩展性的实验。已经用4TB的非重复数据填充***,该数据中的5%被标记用于去除,并且开始删除。图7(b)示出两节点垃圾识别与单个节点的几乎两倍一样快,添加超出2个的更多节点仍然几乎线性地、但是更少陡峭地减少这一阶段。添加节点减少删除持续时间,因为删除待完成的工作未随更多节点而改变,并且它分布于所有节点之中。
(在节点故障之后的删除性能)
执行了3个实验以测量节点故障如何影响识别持续时间。在每个试验中,在一开始使用4个SN,用2TB的非重复数据填充***,并且将该数据中的5%标记用于去除。在第一实验期间,仅执行垃圾识别。在第二实验期间,关掉SN之一,开始垃圾识别,等待直至选择良好对等体,并且重启已经关掉的SN。在第三实验期间,恰好在开始垃圾识别之前停掉SN之一。在每个实验中,已经测量从选择良好对等体到垃圾识别结束的时段的持续时间。
在图8中示出结果。由于在选择良好对等体之后重启SN之一并且这一节点未参加垃圾识别,所以第二持续时间更多。因此,在仅3个SN而不是4个之间划分在识别期间待完成的工作。第三持续时间比第二持续时间长得多,因为在整个垃圾识别期间,执行为了重建数据而需要的后台任务。注意如果故障出现于识别中间,则过程将设法完成,并且它的持续时间不会比在第三实验中呈现的持续时间更长。
(有关工作)
在本发明中的实施的删除带来与好理解的具有动态数据结构的编程语言的并行垃圾收集(NPL2、3)的一些类似性。然而,有显著不同。一方面,在本发明中的删除由于内容可寻址存储***的去重、可扩展性和故障容许去重而更为复杂;另一方面,删除被简化,因为块图必须非循环,这对于编程语言的垃圾收集不成立。
在本发明中的删除基于推迟的引用计数(NPL2)。备选地,可以已经是使用标记和扫除(NPL4)来实施删除。针对它决定避免在每个删除时遍历所有数据。分组的标记和扫除(NPL5)尝试通过对备份分组并且仅扫除如下那些容器来解决这一问题,这些容器保持来自如下组的对象,这些组具有自从算法的先前运行起删除的一些文件。由于备份数据中的去重率高,所以即使可能有很少数据待回收,但去除一个旧备份仍然可能造成扫除具有共享数据的多个容器;而利用引用计数,情况就并非如此。
在本发明中使用的不删除标记的方式与在三色标记和扫除方案中在读取时使白色对象变灰(NPL2)相似。
在无去重时,在分布式存储***中的删除相对简单,并且可以如同在Glacier(NPL6)中用租赁或者如同在UrsaMinor(NPL7)中用过时版本的简单回收来完成。然而利用去重,删除出于更早说明的原因而变得困难。例如Venti(NPL8)、DeepStore(NPL9)和SpareIndexing(NPL10)尚未实施删除。另一类的***以***性方式在它们的存储单元上实施垃圾收集。MAD2(NPL11)对指纹进行引用计数,但是冻结在物理删除时段期间的所有涉及到的储箱(tanker)。DDE(NPL12)撤消客户端保持的所有数据锁定以释放去引用的块。Dedupv1(NPL13、14)在后台中标记未引用的块为“垃圾收集候选”,但是仅在***空闲时才交付它们的去除。其它工作包括:在SIS(NPL15)中和在FARSITE(NPL16)中使用向后指针(引用列表);在DeDe(NPL17)中在对带外更新的全局哈希索引的部分的独占扫描期间收集未用块。
数据域(PTL1、2、NPL18)提出在具有内嵌去重的集中式***中的垃圾收集过程。使用Bloom滤波器来完成选择用于去除的块,该滤波器造成一些垃圾保留于***中。EMCCentera(PTL3、NPL19、20)提出了内容单元的显式删除,但是未提到如何处置并行删除和去重,ExtremeBinning(NPL21)使它们的去重局限于仓内并且主张这一划垃圾收集,但是未给出细节。
(结论和将来工作)
已经描述用于具有去重的可扩展存储的删除算法。已经在作为商用***的内容可寻址存储***中实施和部署本发明的删除。算法是非***性的,即允许删除随着用户读取和写入而进行。另外,它解决其它关键功能要求,比如高可用性、对用户操作的少量性能影响和对多个盘、节点或者网络故障以及由于***增长所产生的配置改变的弹性。删除对总性能的影响在改变计算能力或者盘容量方面很好地扩展。
通过在旧数据与新写入的数据之间创建边界的时期机制实现连续可用性,因为设置了静默点,并且可以在计数器计算期间执行读取和写入。因此,进行中的备份未受后台中运行的删除过程影响。事实上,时期引入对于定义用于非***性删除过程的清晰语义而言是至关重要的。
性能影响又很小,因为批量执行删除的操作,并且它们分布于整个网络内。重要的是,在主存储器中保持不删除标记,这致使在用户写入时的低标记处置开销。
通过与良好对等体关联的计算的冗余性而实现故障容许。所选对等体冗余地执行关键计算,从而即使它们中的若干崩溃、仍然允许删除过程继续。良好对等体也负责删除过程可扩展性以保证性能根据***大小的可扩展性。通过将删除工作与每个超节点关联来保证删除可扩展性而无任何集中式部件。
虽然删除如今为全功能,但是重要特征仍然可以提高它对于终端用户的价值。由于删除过程是非***性的,所以多数改进涉及到保证进一步性能增进。潜在改进之一是引入用于具有指针的块的分离容器,这可以加速计数器递增阶段。除了提高性能之外,将来工作的其它方向包括通过抽点检查中间删除结果使删除可重新开始。
<第二示例实施例>
将参照图9至图20描述本发明的第二示例实施例。图9是示出整个***的配置的框图。图9是示意地示出存储***的框图,并且图1是示出配置的功能框图。图12至图20是用于说明存储***的操作的说明视图。
这一示例实施例在这里示出了通过连接多个服务器计算机来配置存储***这样的情况。然而本发明的存储***不限于具有多个计算机的配置,并且可以由一个计算机配置。
如图9中所示,本发明的存储***10经由网络N连接到控制备份过程的备份***11。备份***11获取在经由网络N连接的备份目标设备12中存储的备份目标数据(存储目标数据),并且请求存储***10进行存储。因此,存储***10存储被请求存储为备份的备份目标数据。
如图10中所示,这一示例实施例的存储***10运用连接多个服务器计算机这样的配置。具体而言,存储***10被配备有:加速器节点10A,其充当控制存储***10的存储/再现操作的服务器计算机;以及存储节点10B,充当配备有用于存储数据的存储设备的服务器计算机。加速器节点10A的数目和存储节点10B的数目不限于图10中所示的数目,并且可以利用连接更多节点10A和更多节点10B的配置。
另外,这一示例实施例的存储***10是内容地址存储***,该内容地址存储***划分数据,并且使数据冗余、分布数据且存储到多个存储设备中,以及通过根据待存储的数据的内容而设置的唯一内容地址来指定存储数据的存储位置。下文将描述这一内容地址存储***。
假设存储***10是一个***,下文将描述存储***10的配置和功能。换而言之,可以在加速器节点10A或者存储节点10B中包括下文描述的存储***10的配置和功能。存储***10不限于包括加速器节点10A和存储节点10B的配置。存储***10可以具有任何配置,并且例如可以由一个计算机配置。另外,存储***10不限于内容地址存储***。
图11示出存储***10的配置。如该图中所示,存储***10配备有:存储数据的存储设备31以及控制向存储设备31中存储数据和从存储设备31取回数据这样的操作的数据存储控制单元21,以及数据释放控制单元22,该数据释放控制单元释放包含存储设备31中存储但尚未使用的数据的存储空间,以便允许回收存储空间。实际上,数据存储控制单元21和数据释放控制单元22由在多个算术设备(比如图10中所示加速器节点10A的CPU(中央处理单元)和存储节点10B的CPU)中安装的程序来配置。另外,存储设备31由图10中所示加速器节点10A的硬盘和存储节点10B的硬盘来配置。
例如在存储于存储介质(比如CD-ROM)中的状态中,向存储***10提供上文提到的程序。备选地,可以在网络上的另一服务器计算机的存储设备中存储并且经由网络从另一服务器计算机向存储***10提供程序。
下文将描述数据存储控制设备和数据释放控制单元22的配置。首先,将参照图12至14描述数据存储控制单元21存储和取回数据的内容可寻址方法。
首先,如图13中的箭头Y1所示,当数据存储控制单元21接收备份目标数据A的输入时,数据存储控制单元21如图12和13中的箭头Y2所示,将备份目标数据A划分成可变容量(例如平均64KB)或者预定容量(例如64KB)的块数据D。然后,数据存储控制单元21基于这一块数据D的数据内容,计算代表数据内容的唯一哈希值H(内容标识信息)(箭头Y3)。例如,通过使用预设哈希函数,根据块数据D的数据内容来计算哈希值H。在加速器节点10A中执行数据存储控制单元21的此过程。
然后通过使用备份目标数据A的块数据D的哈希值H,数据存储控制单元21检查在存储设备31中是否已经存储块数据D。具体而言,哈希值H与代表已存储块数据D的存储位置的内容地址CA相关并且注册于MFI(主要片段索引)文件中。因此,当在存储之前计算的块数据D的哈希值H存在于MFI文件中的情况下,数据存储控制单元21可以确定已经存储具有相同内容的块数据D(图13中的箭头Y4)。在这一情况下,数据存储控制单元21从MFI文件取回与MFI内的如下哈希值H有关的内容地址CA,该哈希值与在存储之前块数据D的哈希值H一致。然后,数据存储控制单元21将这一内容地址CA(地址数据)存储为需要存储的块数据D的内容地址CA。备选地,数据存储控制单元21可以在树结构中存储另一条地址数据,该另一条地址数据进一步引用内容地址CA,该内容地址引用已经存储的块数据D。因而,通过使用这一内容地址CA来引用的已经存储的数据被用作需要存储的块数据D,并且变得不必存储需要存储的块数据D。
另外,数据存储控制单元21压缩如上文描述的那样确定为尚未存储的块数据D,并且如图13中的箭头Y5所示,将数据划分成具有预定容量的多个片段数据。例如,如图12中的标号D1至D9所示,数据存储控制单元21将数据划分成九条片段数据(划分数据41)。另外,数据存储控制单元21生成冗余数据从而使得即使通过划分而获得的片段数据中的一些片段数据丢失仍然可以恢复原有块数据,并且向通过划分而获得的片段数据41添加冗余数据。例如,如图12中的标号D10至D12所示,数据存储控制单元21添加三个片段数据(冗余数据42)。因此,数据存储控制单元21生成数据集40,该数据集包括由九个划分数据41和三个冗余数据组成的十二个片段数据。数据存储控制单元21的过程由一个存储节点10B执行。
然后数据存储控制单元21分布并且向存储设备31中形成的存储区域中逐个存储组成生成的数据集的片段数据。例如,如图12中所示,在生成十二个片段数据D1至D12的情况下,数据存储控制单元21向十二个存储设备31中形成的数据存储文件F1至F12(数据存储区域)之一中存储片段数据D1至D12之一(参见图13中的箭头Y6)。
另外,数据存储控制单元21生成和管理内容地址CA,该内容地址代表如上文描述的在存储设备31中存储的片段数据D1至D12的存储位置,也就是待由片段数据D1至D12恢复的块数据D的存储位置。具体而言,数据存储控制单元21通过组合基于存储的块数据D的内容而计算的哈希值H的部分(短哈希)(例如哈希值H中的开始8个字节)与代表逻辑存储位置的信息,来生成内容地址CA。然后,数据存储控制单元21向存储***10内的文件***,即向加速器节点10A返回这一内容地址CA(图13中的箭头Y7)。加速器节点10A然后将比如备份目标数据文件名的标识信息与内容地址CA相关,并且在文件***中对他们进行管理。
另外,数据存储控制单元21将块数据D的内容地址CA与块数据D的哈希值H相关,并且相应存储节点10B在MFI文件中对他们进行管理。因此,内容地址CA与指定文件的信息、哈希值H等相关,并且存储到加速器节点10A和存储节点10B的存储设备31中。
另外,数据存储控制单元21执行对取回如上文描述的那样存储的备份目标数据的控制。例如,当存储***10接受到具有基于文件***而指明的具体文件的取回请求(参见图14中的箭头Y11)时,数据存储控制单元21首先指明内容地址CA,该内容地址由短哈希和逻辑位置的信息组成,该短哈希是与涉及取回请求的文件对应的哈希值的部分(参见图14中的箭头Y12)。然后数据存储控制单元21检查内容地址CA是否被注册于MFI文件中(参见图14中的箭头13)。如果未注册内容地址CA,则不存储请求的数据,从而数据存储控制单元21返回错误应答。
另一方面,如果涉及取回请求的内容地址CA被注册,则数据存储控制单元21指定由内容地址CA指明的存储位置,并且取回在指定的存储位置中存储的每个片段数据作为被请求取回的数据(参见图14中的箭头Y14)。这时,如果知道存储相应片段的数据存储文件F1至F12和片段数据之一在数据存储文件中的存储位置,则数据存储控制单元21可以指定其它片段数据的存储位置,因为存储位置是相同的。
然后数据存储控制单元21从响应于取回请求而取回的相应片段数据中恢复块数据D(参见图14中的箭头Y15)。另外,数据存储控制单元21连接多个恢复的块数据D,以恢复成像是文件A的数据组,并且向正在控制取回的加速器节点10A返回(参见图14中的箭头Y16)。
数据存储控制单元21如上文描述的那样在存储设备31中关于以时间序列方式划分的每个时区存储该存储目标数据。具体而言,如图15或者16中所示,每当预定时段已经流逝时,数据存储控制单元21设置指示时区的“时期”以执行新存储目标数据的写入过程。这时,为了区分存储设备31中写入的数据的时期,将块数据与识别时期的信息一起存储。备选地,也有可能通过在写入块数据时与块数据关联地分开存储时期的标识信息来管理时期。
将参照图16描述时期的转变。如果假设当前写入目标时期为“新块时期”,则先前时期是“待完成块时期”,并且在它之前的时期是“已完成块时期”。继而如图15中所示,标号#1所示的当前“新块时期”在下一时区#2中变成的“待完成块时期”,并且当前时区#1中的“待完成块时期”在下一时区#2中变成“已完成块时期”。以这一方式,随着时间进展,时期依次改变。如果在当前“新块时期”中存在将写入的存储目标数据,则要求数据存储控制单元21在“新块时期”内、也就是在时期向下一时期进展之前,完成向存储设备31中写入存储目标数据。
例如,如图16中所示,数据存储控制单元21在“已完成块时期”中存储和保留由“块1”、“块2”和“块3”组成的存储目标数据,这些块从“块6”到“块4”和“块5”而被依次指向。块“留存1”指向这些多条新保留的块数据,该块“留存1”指示它们是留存的块。应当注意例如“块4”、“块5”和“块6”是地址数据,并且图16中的斜线所示“块1”、“块2”和“块3”是实际数据。
然后,在作为下一时期的“待完成块时期”中,如果将构成“块6”的块数据“块3”改变成“块3x”,则在“待完成块时期”中存储新块数据“块3x”(图16中的对角线所示)以及指向它的“块5x”和“块6x”。这意味着在“待完成块时期”中存储由“块1”、“块2”和“块3x”组成的块数据,这些块从“块6x”(而不是“块6”)到“块4”和“块5”而被依次指向。然而,关于“块1”和“块2”,指向已经在存储设备31中存储的块数据。这时,由于新存储将被“块6x”指向的块数据,所以块“留存2”指向“块6x”,该块“留存2”指示块6x被保留。另外,在删除改变成“块6x”的“块6”时,块“删除1”指向它,该块“删除1”指示块6被删除。
另外,当时期向作为下一时期的“新块时期”进展时,以与上文描述的方式相似的方式并且如果构成“块6x”的块数据“块2”改变成“块2y”,则在“新块时期”中存储新块数据“块2y”(图16中的对角线所示)以及指向它的块“块4y”和“块6y”。这意味着在“新块时期”中,存储由“块1”、“块2y”和“块3x”组成的块数据,这些块从“块6y”(而不是“块6x”)到“块4y”和“块5x”而被依次指向。然而关于“块1”,指向已经在存储设备31中存储的块数据。这时,由于新保留“块6y”将指向的块数据,所以块“留存2”指向“块6y”,该块“留存2”指示块6y被保留。另外,在删除改变成“块6y”的“块6x”时,块“删除2”指向它,该块“删除2”指示块6x被删除。
接着,将描述数据释放控制单元22。如图11中所示,数据释放控制单元22包括分别执行以下过程的指针计数单元23和数据释放单元24。
每当“时期”改变时,也就是说,每当时期进展到当前“新块时期”时,指针计数单元23在以往时期中,在存储设备31中写入的多条数据之中,删除未从其它地址数据被指向的多条存储目标数据或者地址数据,并且执行用于释放其中这样的一条数据存储于存储设备中的存储区域的“删除过程”。
具体而言,关于在“待完成块时期”(其是当前“新块时期”的先前时期)期间写入的数据(下文称为块数据),指针计数单元23对“指针数目”进行计数,该“指针数据”指示来自其它地址数据的指针的数目。执行对指针数目的计数,从而使得对于位于被“留存”块指向的根上的块数据,计数是“+1”,并且对于位于被“删除”块指向的根上的块数据,计数是“-1”。例如在图17的情况下,对在“待完成块时期”(其是在当前“新块时期”之前的最后时期)内的每个块数据的指针数目进行计数。然而,由于仅仅已经固定“待完成块时期”内的“留存1”的写入,所以被“留存1”指向的相应块数据“块1”至“块6”的指针数目变成“+1”。然后,当时间已经流逝并且时期如图18的情况下向下一时期进展时,递增或者递减在“待完成块时期”(该待完成块时期是在“新块时期”之前的最后时期)中固定的从“留存1”和“删除1”被指向的每个块数据的指针数目。这样,虚线包围的“块3”、“块5”和“块6”的指针数目变成“0”。由此,由于尚未被任何地址数据所指向的块数据的指针数目变成“0”,所以易于检测这样的块数据。
然后,在“新块时期”中执行的“删除”过程结束时,或者在给定的时间间隔,数据释放单元24从存储设备31删除指针数目为“0”的块数据。这时,数据释放单元24释放存储设备31中的其中存储已删除块数据的存储区域。这意味着数据释放单元24不仅防止读取未被任何地址数据所指向的块数据,而且释放了其中已经存储这样的块数据的存储区域以实现存储区域的回收。可以在任何时间执行数据释放单元24的释放存储区域的过程。
指针计数单元23如图19中所示在包括“同步阶段”、“删除标记阶段”和“交付阶段”的三个阶段中执行删除过程。在“同步阶段”中,完成向存储设备31中写入存储***10中写入的数据。这意味着在最后时期中写入的多条数据之中,如果有处于写入之中的任何数据,则指针计数单元23向存储设备31中写入这样的数据,以完成如图18中所示的树结构。
然后,在“删除标记阶段”中,指针计数单元23执行对已经写入存储设备31中的块数据的“指针数目”进行计数的过程。由此,由于可以在固定块数据的树结构(即,指向关系)之后,对“指针数目”进行计数时,所以可以更可靠地实现释放未被指向的数据。
然而,在“删除标记阶段”中对“指针数目”进行计数期间,存在其中写入如下新数据的情况,该新数据指向计数目标块数据并且将被去重。在该情况下,不能固定被计数的块数据的“指针数目”,从而新写入的数据可以指向可以以后删除的、具有的“指针数目”为0的块数据。例如,如图20中所示,如果在“新块时期”中对“块3”的“指针数目”正在计数时的时间期间生成了指向“块3”的新写入,则虽“块3”被然指向,但是它可能随后被删除。为了防止这样的情形,如果当在“删除标记阶段”中正在对块数据的“指针数目”计数时生成新写入并且该新写入指向以往时期中存储的块数据,则指针技术单元23向这样的块数据设置称为“不删除标记”的标志。称为“不删除标记”的标志是用于从数据释放单元24的释放目标中排除具有此标志的块数据的记号。这样,在图20中所示例子中,尽管“新块时期”的时间将块数据“块3”的“指针数目”设置成“0”,但是由于设置了“不删除标记”,所以既不删除也不释放它。然后在下一时期中,由于对“块3”的指针数目进行重新计数并且将它设置成“1”时,所以不会删除“块3”。
另外,在“交付阶段”中,在***中反映在“删除标记阶段”中进行计数的块数据的“指针数目”。在***中反映的“指针数目”以后由数据释放单元24认出,并由此将删除具有的“指针数目”为“0”的块数据,并且将释放存储区域。
然而,当在“交付阶段”中在***中反映“指针数目”时的时间期间,可能写入指向计数的块数据并且经历去重的新数据。这样,新写入数据可能指向以后将删除的、其中“指针数目”被计数成“0”的块数据。例如,如图20中所示,如果在已经在“新块时期”中对“块3”的“指针数目”计数之后生成指向“块3”的新写入,则虽然“块3”被指向,但是它能够随后被删除。为了防止这样的情形,如果在“交付阶段”中反应块数据的“指针数目”时的时间期间生成了新写入,则指针计数单元23仅允许指向“指针数目”为正值(也就是说,“指针数目”>0)的块数据或者其中设置有上文描述的“不删除标记”的块数据。由此,有可能防止新写入指向以后被删除可能性高的块数据并且执行去重这样的情况。
上文公开的示例实施例的全部或者部分可以描述为以下补充注释。下文将描述本发明的存储***(参见图21)、存储程序的计算机可读介质和信息处理方法的配置的概况。然而本发明不限于下文描述的配置。
<补充注释1>
一种存储***,包括:
数据存储控制单元101,其将存储目标数据和地址数据存储于存储设备110中,所述地址数据是基于在被指向的对象中存储的数据内容和存储位置的数据并且指向所述存储目标数据或者其它地址数据,以及当尝试在所述存储设备110中存储具有的数据内容与已经在存储设备110中存储的一条所述存储目标数据的数据内容相同的另一条存储目标数据时,将指向已经在所述存储设备110中存储的所述一条所述存储目标数据的所述地址数据作为所述另一条存储目标数据而存储在所述存储设备110中;以及
数据释放控制单元102,释放所述存储设备110中的存储区域,所述存储区域存储所述存储设备110中存储的所述存储目标数据或者所述地址数据的一条数据,此条数据未被其它地址数据所指向,其中
所述数据存储控制单元101将所述存储目标数据或者所述地址数据关于以时间序列方式划分的每个时区存储在所述存储设备中,以及
所述数据释放控制单元102释放所述存储设备中的存储区域,所述存储区域在当前时区之前的以往时区中在所述存储设备110中存储的所述存储目标数据或者所述地址数据的一条数据,此条数据未被其它地址数据所指向。
<补充注释2>
根据补充注释1所述的存储***,其中
所述数据释放控制单元对所述存储目标数据或者所述地址数据的来自其它地址数据的指针数目进行计数,并且释放所述存储设备中的存储区域,所述存储区域存储所述存储目标数据或者所述地址数据的一条数据,在此条数据中所述指针数目为“0”。
<补充注释3>
根据补充注释2所述的存储***,其中
所述数据释放控制单元对在所述当前时区之前的上个时区或者更早时区中写入的所述存储目标数据或者所述地址数据的指针数目进行计数。
<补充注释4>
根据补充注释3所述的存储***,其中
所述数据释放控制单元在所述数据存储控制单元完成在所述存储设备中存储在所述上个时区中写入的所述存储目标数据或者所述地址数据之后,对所述指针数目进行计数。
<补充注释5>
根据补充注释2所述的存储***,其中
在其中当所述数据释放控制单元对在以往时区中在所述存储设备中存储的所述存储目标数据或者所述地址数据的所述指针数目进行计数时生成指向所述存储目标数据或者所述地址数据的新写入的情况下,所述数据存储控制单元进行设置以从将由所述数据释放控制单元执行的释放目标中排除在所述以往时区中在所述存储设备中存储的、作为被指向的对象的所述存储目标数据或者所述地址数据。
<补充注释6>
根据补充注释5所述的存储***,其中
在其中在所述数据释放控制单元完成对在以往时区中在所述存储设备中存储的所述存储目标数据或者所述地址数据的指针数目的计数之后生成指向所述存储目标数据或者所述地址数据的新写入的情况下,如果在所述以往时区中在所述存储设备中存储的被指向的对象的所述存储目标数据或者所述地址数据的指针数目具有正值,或者如果从将由所述数据释放控制单元执行的所述释放目标中排除所述存储目标数据或者所述地址数据,则所述数据存储控制单元允许指向与所述新写入对应的所述存储目标数据或者所述地址数据。
<补充注释7>
一种存储程序的计算机可读介质,所述程序包括用于使信息处理器设备实现以下单元的指令:
数据存储控制单元,其将存储目标数据和地址数据存储于存储设备中,所述地址数据是基于在被指向的对象中存储的数据内容和存储位置的数据并且指向所述存储目标数据或者其它地址数据,以及当尝试在所述存储设备中存储具有的数据内容与已经在所述存储设备中存储的一条所述存储目标数据的数据内容相同的另一条存储目标数据时,将指向已经在所述存储设备中存储的所述一条所述存储目标数据的所述地址数据作为所述另一条存储目标数据而存储在所述存储设备中;以及
数据释放控制单元,其释放所述存储设备中的存储区域,所述存储区域存储在所述存储设备中存储的所述存储目标数据或者所述地址数据的一条数据,此条数据未被其它地址数据所指向,其中
所述数据存储控制单元将所述存储目标数据或者所述地址数据关于以时间序列方式划分的每个时区而存储在所述存储设备中,以及
所述数据释放控制单元释放所述存储设备中的存储区域,所述存储区域存储在当前时区之前的以往时区中在所述存储设备中存储的所述存储目标数据或者所述地址数据的一条数据,此条数据未被其它地址数据所指向。
<补充注释8>
根据补充注释7所述的存储所述程序的计算机可读介质,其中:
所述数据释放控制单元对所述存储目标数据或者所述地址数据的来自其它地址数据的指针数目进行计数,并且释放所述存储设备中的存储区域,所述存储区域存储所述存储目标数据或者所述地址数据的一条数据,在此条数据中指针数目为“0”。
<补充注释9>
一种信息处理方法,包括:
将存储目标数据和地址数据存储于存储设备中,所述地址数据是基于在被指向的对象中存储的数据内容和存储位置的数据并且指向所述存储目标数据或者其它地址数据,以及当尝试在所述存储设备中存储具有的数据内容与已经在所述存储设备中存储的一条所述存储目标数据的数据内容相同的另一条存储目标数据时,将指向已经在所述存储设备中存储的所述一条所述存储目标数据的所述地址数据作为所述另一条存储目标数据而存储在所述存储设备中;
释放所述存储设备中的存储区域,所述存储区域存储所述存储设备中存储的所述存储目标数据或者所述地址数据的一条数据,此条数据未被其它地址数据所指向;
关于以时间序列方式划分的每个时区执行在所述存储设备中对所述存储目标数据或者所述地址数据的存储;以及
释放所述存储设备中的存储区域,所述存储区域存储在当前时区之前的以往时区中在所述存储设备中存储的所述存储目标数据或者所述地址数据的一条数据,此条数据未被其它地址数据所指向。
<补充注释10>
根据补充注释9所述的信息处理方法,还包括:
对所述存储目标数据或者所述地址数据的来自其它地址数据的指针数目进行计数,并且释放所述存储设备中的存储区域,所述存储区域存储在所述存储目标数据或者所述地址数据的一条数据,在此条数据中指针数目为“0”。

Claims (8)

1.一种存储***,包括:
数据存储控制单元,其将存储目标数据和地址数据存储于存储设备中,所述地址数据是基于在被指向的存储区域中存储的数据内容和存储位置的数据并且指向所述存储目标数据或者其它地址数据,以及当尝试在所述存储设备中存储具有的数据内容与已经被存储在所述存储设备中的一条所述存储目标数据的数据内容相同的另一条存储目标数据时,将指向已经被存储在所述存储设备中的所述一条所述存储目标数据的所述地址数据作为所述另一条存储目标数据而存储在所述存储设备中;以及
数据释放控制单元,其释放所述存储设备中的存储区域,所述存储区域存储在所述存储设备中存储的所述存储目标数据或者所述地址数据的一条数据,此条数据未被其它地址数据所指向,其中
所述数据存储控制单元将所述存储目标数据或者所述地址数据关于以时间序列方式划分的每个时区而存储在所述存储设备中,以及
所述数据释放控制单元释放所述存储设备中的存储区域,所述存储区域存储在当前时区之前的以往时区中在所述存储设备中存储的所述存储目标数据或者所述地址数据的一条数据,此条数据未被其它地址数据所指向。
2.根据权利要求1所述的存储***,其中
所述数据释放控制单元对所述存储目标数据或者所述地址数据的来自其它地址数据的指针数目进行计数,并且释放所述存储设备中的存储区域,所述存储区域存储所述存储目标数据或者所述地址数据的一条数据,在此条数据中所述指针数目为“0”。
3.根据权利要求2所述的存储***,其中
所述数据释放控制单元对在所述当前时区之前的上个时区或者更早时区中写入的所述存储目标数据或者所述地址数据的指针数目进行计数。
4.根据权利要求3所述的存储***,其中
所述数据释放控制单元在所述数据存储控制单元完成在所述存储设备中存储在所述上个时区中写入的所述存储目标数据或者所述地址数据之后,对所述指针数目进行计数。
5.根据权利要求2所述的存储***,其中
在其中当所述数据释放控制单元对在以往时区中在所述存储设备中存储的所述存储目标数据或者所述地址数据的所述指针数目进行计数时,生成指向所述存储目标数据或者所述地址数据的新写入的情况下,所述数据存储控制单元进行设置,以从将由所述数据释放控制单元执行的释放目标中排除在所述以往时区中在所述存储设备中存储的、作为被指向对象的所述存储目标数据或者所述地址数据。
6.根据权利要求5所述的存储***,其中
在其中在所述数据释放控制单元完成对在以往时区中在所述存储设备中存储的所述存储目标数据或者所述地址数据的所述指针数目的计数之后,生成指向所述存储目标数据或者所述地址数据的新写入的情况下,如果在所述以往时区中在所述存储设备中存储的、作为被指向对象的所述存储目标数据或者所述地址数据的所述指针数目具有正值,或者如果从将由所述数据释放控制单元执行的所述释放目标中排除了所述存储目标数据或者所述地址数据,则所述数据存储控制单元允许指向与所述新写入对应的所述存储目标数据或者所述地址数据。
7.一种信息处理方法,包括:
将存储目标数据和地址数据存储于存储设备中,所述地址数据是基于在被指向的存储区域中存储的数据内容和存储位置的数据并且指向所述存储目标数据或者其它地址数据,以及当尝试在所述存储设备中存储具有的数据内容与已经被存储在所述存储设备中的一条所述存储目标数据的数据内容相同的另一条存储目标数据时,将指向已经被存储在所述存储设备中的所述一条所述存储目标数据的所述地址数据作为所述另一条存储目标数据存储在所述存储设备中;
释放所述存储设备中的存储区域,所述存储区域存储在所述存储设备中存储的所述存储目标数据或者所述地址数据的一条数据,此条数据未被其它地址数据所指向;
关于以时间序列方式划分的每个时区执行在所述存储设备中对所述存储目标数据或者所述地址数据的存储;以及
释放所述存储设备中的存储区域,所述存储区域存储在当前时区之前的以往时区中在所述存储设备中存储的所述存储目标数据或者所述地址数据的一条数据,此条数据未被其它地址数据所指向。
8.根据权利要求7所述的信息处理方法,还包括:
对所述存储目标数据或者所述地址数据的来自其它地址数据的指针数目进行计数,并且释放所述存储设备中的存储区域,所述存储区域存储所述存储目标数据或者所述地址数据的一条数据,在此条数据中所述指针数目为“0”。
CN201180041773.9A 2010-08-31 2011-08-25 存储*** Active CN103080908B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US37874810P 2010-08-31 2010-08-31
US61/378,748 2010-08-31
PCT/JP2011/004712 WO2012029256A1 (en) 2010-08-31 2011-08-25 Storage system

Publications (2)

Publication Number Publication Date
CN103080908A CN103080908A (zh) 2013-05-01
CN103080908B true CN103080908B (zh) 2016-03-16

Family

ID=45772383

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180041773.9A Active CN103080908B (zh) 2010-08-31 2011-08-25 存储***

Country Status (6)

Country Link
US (1) US9110839B2 (zh)
EP (1) EP2612245A4 (zh)
JP (1) JP5382227B2 (zh)
CN (1) CN103080908B (zh)
CA (1) CA2808752C (zh)
WO (1) WO2012029256A1 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012027478A1 (en) 2010-08-24 2012-03-01 Jay Moorthi Method and apparatus for clearing cloud compute demand
JP5561303B2 (ja) * 2012-03-30 2014-07-30 日本電気株式会社 データ複製システム、データ複製方法、及びそのプログラム
US20150227543A1 (en) * 2014-02-11 2015-08-13 Atlantis Computing, Inc. Method and apparatus for replication of files and file systems using a deduplication key space
US9503127B2 (en) * 2014-07-09 2016-11-22 Quantum Corporation Data deduplication with adaptive erasure code redundancy
JP2016170583A (ja) 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US10026070B2 (en) 2015-04-28 2018-07-17 Solano Labs, Inc. Cost optimization of cloud computing resources
US10255287B2 (en) * 2015-07-31 2019-04-09 Hiveio Inc. Method and apparatus for on-disk deduplication metadata for a deduplication file system
JP6163187B2 (ja) * 2015-10-08 2017-07-12 華為技術有限公司Huawei Technologies Co.,Ltd. クラスタシステムデータ処理方法及び装置
US9501364B1 (en) * 2016-03-18 2016-11-22 Storagecraft Technology Corporation Hybrid image backup of a source storage
US10346387B2 (en) * 2016-06-13 2019-07-09 Sap Se Replication of log-structured data
US10318389B2 (en) 2016-07-15 2019-06-11 Quantum Corporation Joint de-duplication-erasure coded distributed storage
US9959049B1 (en) * 2016-09-29 2018-05-01 EMC IP Holding Company LLC Aggregated background processing in a data storage system to improve system resource utilization
US10868719B2 (en) 2017-04-28 2020-12-15 Oracle International Corporation System and method for federated configuration in an application server environment
US11461027B2 (en) * 2017-07-18 2022-10-04 Vmware, Inc. Deduplication-aware load balancing in distributed storage systems
CN108052643B (zh) * 2017-12-22 2021-02-23 北京奇虎科技有限公司 基于LSM Tree结构的数据存储方法、装置及存储引擎
US10949312B2 (en) 2018-09-21 2021-03-16 Netapp, Inc. Logging and update of metadata in a log-structured file system for storage node recovery and restart
US20200272424A1 (en) * 2019-02-21 2020-08-27 Research & Business Foundation Sungkyunkwan University Methods and apparatuses for cacheline conscious extendible hashing
KR20200142698A (ko) * 2019-06-13 2020-12-23 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN111177075B (zh) * 2019-12-26 2022-04-22 浪潮电子信息产业股份有限公司 一种垃圾数据的识别方法、***、电子设备及存储介质
CN113094292B (zh) 2020-01-09 2022-12-02 上海宝存信息科技有限公司 数据存储装置以及非挥发式存储器控制方法
CN113448492B (zh) * 2020-03-27 2022-06-24 上海宝存信息科技有限公司 数据存储***以及非挥发式存储器控制方法
US11416390B2 (en) 2020-09-09 2022-08-16 International Business Machines Corporation Tri-color bitmap array for garbage collection
US20230028678A1 (en) * 2021-07-22 2023-01-26 Vmware, Inc. Determining shared nodes between snapshots using probabilistic data structures

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2063351A2 (en) * 2007-11-20 2009-05-27 Hitachi, Ltd. Methods and apparatus for deduplication in storage system
EP2164005A2 (en) * 2008-09-11 2010-03-17 NEC Laboratories America, Inc. Content addressable storage systems and methods employing searchable blocks
CN101676855A (zh) * 2008-09-11 2010-03-24 美国日本电气实验室公司 可变动的辅助存储***和方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6810398B2 (en) * 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
US7424498B1 (en) 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US7451168B1 (en) 2003-06-30 2008-11-11 Data Domain, Inc. Incremental garbage collection of data in a secondary storage
US7698516B2 (en) 2005-01-12 2010-04-13 Emc Corporation Methods and apparatus for managing deletion of data
US7949824B2 (en) * 2006-04-11 2011-05-24 Emc Corporation Efficient data storage using two level delta resemblance
CN101140542A (zh) * 2007-10-19 2008-03-12 华中科技大学 一种缩短写时拷贝快照写响应时间的方法
US9164941B2 (en) 2007-10-24 2015-10-20 Hitachi, Ltd. Storage system group
JP5275692B2 (ja) * 2007-10-24 2013-08-28 株式会社日立製作所 ストレージシステム群
US8335889B2 (en) * 2008-09-11 2012-12-18 Nec Laboratories America, Inc. Content addressable storage systems and methods employing searchable blocks
JP4838878B2 (ja) * 2009-12-04 2011-12-14 富士通株式会社 データ管理プログラム、データ管理装置、およびデータ管理方法
US8156306B1 (en) * 2009-12-18 2012-04-10 Emc Corporation Systems and methods for using thin provisioning to reclaim space identified by data reduction processes
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2063351A2 (en) * 2007-11-20 2009-05-27 Hitachi, Ltd. Methods and apparatus for deduplication in storage system
EP2164005A2 (en) * 2008-09-11 2010-03-17 NEC Laboratories America, Inc. Content addressable storage systems and methods employing searchable blocks
CN101676855A (zh) * 2008-09-11 2010-03-24 美国日本电气实验室公司 可变动的辅助存储***和方法

Also Published As

Publication number Publication date
US9110839B2 (en) 2015-08-18
EP2612245A4 (en) 2014-04-02
CN103080908A (zh) 2013-05-01
CA2808752C (en) 2016-06-28
WO2012029256A1 (en) 2012-03-08
US20130036278A1 (en) 2013-02-07
CA2808752A1 (en) 2012-03-08
EP2612245A1 (en) 2013-07-10
JP2013514557A (ja) 2013-04-25
JP5382227B2 (ja) 2014-01-08

Similar Documents

Publication Publication Date Title
CN103080908B (zh) 存储***
US9619351B2 (en) Clustered RAID assimilation management
US9952765B2 (en) Transaction log layout for efficient reclamation and recovery
US9779018B2 (en) Technique for quantifying logical space trapped in an extent store
US9836355B2 (en) Reconstruction of dense tree volume metadata state across crash recovery
EP3191957B1 (en) Low-overhead restartable merge operation with efficient crash recovery
US9483349B2 (en) Clustered raid data organization
US9619160B2 (en) NVRAM data organization using self-describing entities for predictable recovery after power-loss
US10049118B2 (en) Consistency checker for global de-duplication clustered file system
US10229009B2 (en) Optimized file system layout for distributed consensus protocol
CN103765393B (zh) 存储***
EP4111324A1 (en) File systems constructed of block objects
US20150193337A1 (en) Nvram caching and logging in a storage system
CN105843551A (zh) 高性能和大容量储存重复删除中的数据完整性和损耗电阻
US9904480B1 (en) Multiplexing streams without changing the number of streams of a deduplicating storage system
CN103890738A (zh) 用于保留克隆分离操作之后的存储对象中的消重的***和方法
Strzelczak et al. Concurrent Deletion in a Distributed {Content-Addressable} Storage System with Global Deduplication
US10229127B1 (en) Method and system for locality based cache flushing for file system namespace in a deduplicating storage system
CN105493080B (zh) 基于上下文感知的重复数据删除的方法和装置
JP2013148938A (ja) 情報処理装置及び情報処理システム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20230621

Address after: 80 Mingdi Miaya Road, Singapore

Patentee after: NEC Asia Pacific Private Ltd.

Address before: Tokyo, Japan

Patentee before: NEC Corp.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240206

Address after: 20 Goryeo Pier, Singapore

Patentee after: Patent Wave Private Ltd.

Country or region after: Singapore

Address before: 80 Mingdi Mia Road, Singapore

Patentee before: NEC Asia Pacific Private Ltd.

Country or region before: Singapore

TR01 Transfer of patent right