使用主要部分依存列表来维持文件系统中一致点的系统和方法

xiaoxiao2020-7-22  5

【专利下载】Tel:18215660330

使用主要部分依存列表来维持文件系统中一致点的系统和方法
【专利摘要】根据一个实施方式,接收获得储存在存储系统的文件系统中数据的一致点的请求,该存储系统具有多个存储单元。响应于所述请求,从储存在所述存储单元的第一存储单元中的第一主要部分分段中检索主要部分依存列表,其中所述主要部分依存列表包括标识储存在所述存储单元的第二存储单元中的至少第二主要部分分段的信息。所述第一主要部分分段和所述第二主要部分分段共同形成表示所述文件系统的一致视图的主要部分。查明在所述主要部分依存列表中列出的所述主要部分分段中的每个主要部分分段以试图确定所述数据的一致点。
【专利说明】使用主要部分依存列表来维持文件系统中一致点的系统和方法
[0001]相关申请
[0002]本申请与共同在审的2011年3月31日提交的、名称为“维持文件系统中一致点的系统和方法”的美国专利申请N0.13/077,795相关,并与共同在审的2011年3月31日提交的、名称为“校验文件系统中一致点的系统和方法”的美国专利申请N0.13/077,784相关,这些申请的全部以引用的方式结合于此。
【技术领域】
[0003]本发明的实施方式大体上涉及存储系统的文件系统。更具体地,本发明的实施方式及使用主要部分(prime)依存列表(dependency list)维持文件系统的一致点(consistent point)。
【背景技术】
[0004]由日益增加的数据增长和新的类似基于磁盘的备份的工作量的出现的驱动,具有对涉及和建立大的文件系统的强烈要求。扩展文件系统容量是一个难题,尤其是对于去复制(de-duplicated)的系统,这是因为他们的大容量内存和中央处理单元(CPU)的处理需求。为了解决扩展的问题,文件系统被划分为多个部分的分区体系结构已经被提出。分区文件系统引起了呈现数据的一致视图的问题。
[0005]在构成文件系统的传统记录中使用的方法包含通过冲洗所有脏数据(dirty data)并接着附加专用令牌(token)以标记记录报头来周期性地牵涉检查点(check-pointing)的文件系统。专用令牌于此指的是主要部分分段或重要部分(prime)。主要部分分段标记了文件系统的一致视图(consistent view)。在系统崩溃或重启的情况下,文件系统可以被恢复为由主要部分分段标记的状态。“一致性点”为给出数据的有效视图的文件系统状态。可能具有一致性的多种定义;在本申请的全文中,被称作“引用一致性”,这里的“引用一致性”意为文件系统根(root)不应具有悬空引用(dangling reference)。也就是,通过根所指向的任何数据或元数据应当是可用的。
[0006]在多分区的文件系统的情况下,一种可能的方式是将主要部分分段写入所有分区以标记穿过该分区的一致视图。然而,该方式可能在分区不对称时不是合适的。例如,如果一些分区是只读的或在那时是不可用的,那么主要部分分段不可能被写入那些分区并不可能从那些分区中读取。此外,每次在新的主要部分分段被写入时,可能花费更长的时间来将此类主要部分分段写入每个存储单元,并且需要更多的存储空间随着时间将主要部分分段存储在每个存储单元中。并且,在存储系统启动时,存储在每个存储单元中的每个主要部分分段必须被校验。结果是,每个存储单元不得不被上电并被初始化,这会消耗相对长的时间。
【专利附图】

【附图说明】[0007]本发明的实施方式通过示例的方式示出并不限于附图的图示,在附图中相同的引用指示相似的元件。
[0008]图1是示出了根据本发明的一个实施方式的存储系统的方框图。
[0009]图2是示出了根据本发明的一个实施方式的分段存储引擎的方框图。
[0010]图3A和图3B是示出了根据本发明的一个实施方式的存储系统中主要部分分段写入地图(write-map)的使用的方框图。
[0011]图4是示出了根据本发明的一个实施方式的维持文件系统的一致点的方法的流程图。
[0012]图5是示出了根据本发明的另一实施方式的维持文件系统的一致点的方法的流程图。
[0013]图6A至图6C是示出了根据本发明的一个实施方式的维持存储系统的一致点的系统的框图。
[0014]图7是示出了根据本发明的一个实施方式的使用主要部分依存列表维持文件系统的一致点的方法的流程图。
[0015]图8是示出了根据本发明的另一实施方式的使用主要部分依存列表维持文件系统的一致点的方法的流程图。
[0016]图9是示出了根据本发明的另一实施方式的存储系统的分段存储引擎的框图。
[0017]图10是示出了根据本发明的一个实施方式的校验存储系统的可安装的主要部分分段的机制的框图。
[0018]图11是示出了根据本发明的一个实施方式的校验存储系统的主要部分分段的方法的流程图。
[0019]图12是示出了根据本发明的另一实施方式的校验存储系统的主要部分分段的方法的流程图。
[0020]图13是示出了可以与本发明的实施方式一起使用的数据存储系统的示例的框图。
[0021]图14是可以与本发明的一个实施方式一起使用的数据处理系统的框图。
【具体实施方式】
[0022]以下将参照所讨论的细节描述本发明的各种实施方式和方面,并且附图将示出各种实施方式。以下说明和附图为本发明的阐述并且不被解释为限制本发明。描述了许多特定细节是为了提供对本发明各种实施方式的全面理解。然而,在某些实例中,为了提供本发明实施方式的简要论述,已知的或惯用的细节并未进行描述。
[0023]在说明书中引用“一个实施方式”或“实施方式”意指结合实施方式描述的特定特性、结构或特点可以包括在本发明的至少一个实施方式中。在说明书的各个位置出现的短语“在一个实施方式中”并不是均涉及相同的实施方式。
[0024]根据一些实施方式,新的主要部分分段可以不必被写入每个存储单元中。并且,新的主要部分分段可以被写入所影响的存储单元中的一些存储单元。例如,在具有源存储单元(active storage unit)、目标存储单元和一个或多个密封的归档存储单元的去复制存储系统中,新的主要部分分段可以被写入源存储单元和/或目标存储单元,这是在不是必须将新的主要部分分段写入剩余的归档存储单元的情况下的。在一个实施方式中,主要部分分段写入地图(PSWM)被维持以包含指示下一个主要部分分段被写入存储系统的哪个存储单元的信息。也就是,作为将新的主要部分分段写入每个存储单元的替代,新的主要部分分段仅被写入至PSWM中指定的一个或多个存储单元。
[0025]在正常操作期间,外部的用户数据(如,新的用户数据)通常被写入源存储单元。在数据从源存储单元(如,第一存储单元)被迁移(如,归档)到目标存储单元(如,第二存储单元)的数据迁移过程期间,数据被写入源存储单元和目标存储单元中。为了捕获源存储单元(如,第一文件分区)与目标存储单元(如,第二文件分区)之间的数据的内部依存,相关联的主要部分分段必须被写入源存储单元和目标存储单元二者中。根据一个实施方式,在开始数据迁移之前,PSWM被修改以包括标识至少源存储单元和目标存储单元的存储单元标识符(ID),以使得相应的主要部分分段被写入源存储单元和目标存储单元二者。在数据迁移之后,PSWM再次被修改以仅包括源存储单元的存储单元ID,以使得随后的主要部分分段将被写入源存储单元。
[0026]此外,根据一个实施方式,主要部分由一个或多个主要部分分段表示,每个主要部分分段被存储在存储系统的存储单元中的一个存储单元中。主要部分分段中的每个主要部分分段由主要部分分段ID进行标识,该主要部分分段ID在相应的存储单元中唯一地标识主要部分分段。在一个实施方式中,每当新的主要部分产生时,主要部分分段ID由连续增加的序列号表示。整个文件系统的主要部分可以由一个或多个主要部分分段进行解释,该一个或多个主要部分在他们之间具有依存关系。在一个实施方式中,主要部分依存列表被维持在至少一个存储单元(如,源存储单元)中,其中主要部分依存列表包括标识一起共同表示相应的主要部分的一个或多个主要部分分段的信息(如,主要部分分段ID)。主要部分依存列表进一步包括标识与主要部分分段相关联的存储单元的存储单元ID。结果,不同于传统的多节点存储系统,主要部分分段并非一直需要从每个存储单元被读取。并且,一个存储单元能够轻松地处理主要部分依存列表以识别所有必要的主要部分分段以确定可安装的主要部分,这可以被反过来用于建立文件系统的一致点。可安装的主要部分分段表示最近文件系统一致点。
[0027]此外,根据一个实施方式,最近已知的已校验的可安装主要部分被缓存在存储系统的存储单元中的至少一个存储单元(如,源存储单元)中。随后,在存在需要校验最近的主要部分是否为可安装的情况下,最近的主要部分的依存列表与最后校验的主要部分的依存列表相比较。仅以前还未校验的主要部分分段需要校验。也就是,如果最近主要部分的依存列表中的主要部分分段存在于最后校验的主要部分的依存列表中,那么该主要部分分段不需要被校验。仅那些不存在于最后校验的主要部分的依存列表中的主要部分分段需要被校验。结果,校验过程可以以较快的方式被执行并且未包括的存储单元可以不被上电。
[0028]图1是示出了根据本发明一个实施方式的存储系统的方框图。参照图1,系统100包括但不限于一个或多个客户端系统101-102,客户端系统通过网络103通信耦合至存储系统104。客户端101-102可以为任何类型的客户端,诸如服务器、个人计算机(如,台式机、笔记本电脑和手写板)、“瘦”客户端、个人数字助理(PDA)、Web使能应用、游戏设备、媒体播放器或移动电话(如,智能电话)等。网络103可以为任何类型的有线和/或无线的网络,诸如局域网(LAN)、诸如互联网的广域网(WAN)、企业内联网、城域网(MAN)、存储区域网(SAN)、总线,或者他们的组合。
[0029]存储系统104可以包括任何类型的服务器或服务器集群。例如,存储系统104可以为出于任意的各种不同目的的存储服务器,诸如用于为多个用户提供对共享数据和/或备份任务关键数据(mission critical data)的访问。存储系统104例如可以为文件服务器(如,用于提供NAS能力的设备)、基于块的存储服务器(如,用于提供SAN能力)、统一的存储设备(如,结合NAS和SAN能力的设备)、近线存储设备、直接连接存储(DAS)设备、磁带备份设备,或基本上任何其他类型的数据存储设备。存储系统104可以具有分布式体系结构,或者所有组件可以一体化在单个单元中。存储系统104可以被实施为归档和/或备份系统
的一部分,诸如可从马萨诸塞州霍普金顿的EMCk公司获得的去复制存储系统。
[0030]在一个实施方式中,存储系统104交际性地包括但不限于系统接口 106、分段存储引擎107、及一个或多个存储单元108-109。存储系统104的文件系统可以被分区成多个文件系统分区,其中每个文件系统分区可以被存储在存储单元108-109中的一者中。存储单元108-109可以经由连接体120在本地(单个节点操作环境)或远程(如,多节点操作环境)实施,连接体120可以为总线或网络。在一个实施方式中,在其他存储单元起到目标存储单元的作用以周期性地根据归档策略或方案归档来自源存储单元的数据的时候,存储单元108-109中的一者起到源存储的作用以接收并储存外部或新的用户数据。存储单元108-109例如可以为常见的磁盘、诸如基于⑶-ROM或DVD的存储的光盘、磁带存储、磁光(MO)存储媒体、固态盘、基于闪存的设备,或任何其他类型的适于储存大量数据的非易失性存储设备。存储单元108-109还可以为此类设备的结合。在磁盘存储媒体的情况下,存储单元108-109可以组织成一卷或多卷廉价磁盘冗余阵列(RAID)。
[0031]响应于数据文件将被储存在存储单元108-109中,分段存储引擎107被配置为根据各种分段策略或规则将数据文件分段成多个分段。分段存储引擎107在之前分段未被储存在存储单元中的情况下仅将分段储存在存储单元中。在之前分段已经被储存的情况下,元数据将使用之前储存的分段来储存能够重建文件的信息。如此,数据文件的分段以去复制的方式被储存在存储单元108-109的每个存储单元内或跨越存储单元108-109中的至少一些存储单元。此外,元数据110-111被添加至存储单元108-109中的至少一些存储单元,以使得文件可以独立于另一存储单元而被访问。储存在存储单元中的数据可以以压缩形式(如,无损压缩:Huffman编码、Lempel-Ziv Welch编码;差分编码:对分段加差值的引用;子分段:子分段列表或对子分段的引用,等等)被储存。在一个实施方式中,不同的存储单元可以使用不同的压缩(如,主要的或源存储单元不同于其他存储单元,一个存储单元不同于另一存储单兀,等)。
[0032]每个存储单元的元数据包括足够的信息以提供对其包含的文件的访问。在源存储单元失败时,包含在另一存储单元中的元数据可以被用于恢复源存储单元。在一个存储单元为不可用(如,存储单元已经失败,或正在升级,等)时,系统维持直至提供对未存储在失败的存储单元中的任何文件的访问。在文件被删除时,与系统中的文件相关联的元数据被更新以反映出文件已经被删除。
[0033]在一个实施方式中,元数据信息包括文件名称、存储与文件名称相关联的分段的存储单元、使用分段重构用于文件的信息、以及任何其他合适的元数据信息。在一个实施方式中,元数据的副本被储存在存储单元中,以用于储存在存储单元的文件,以使得储存在存储单元上的文件可以仅使用储存在存储单元上的信息而被访问。在一个实施方式中,在主要的元数据丢失、崩溃、损坏等的情况下元数据信息的主要部分集合可以通过使用与存储系统相关联的其他存储单元的信息而被重构。可以使用存储在主要的存储单元或其他存储单元(如,复制品存储单元)上的元数据信息来重构用于存储单元的元数据。元数据信息进一步包括索引信息(如,用于存储单元中的分段的位置信息)。在一个实施方式中,元数据包括主要部分分段信息,该主要部分分段信息可以用于在文件系统失败的情况下提供文件系统的一致点和/或重构文件系统。
[0034]在一个实施方式中,如图1所示的存储系统可以被用作存储层次(storagehierarchy)中的一个存储层(a tier of storage),该存储层次包括其它存储层。在该层次中的一个或多个存储层可以利用不同种类的存储设备和/或可以针对诸如随机更新性能的不同特征而被优化以。基于数据管理策略,文件周期性地在层次之间移动,以获得符合文件的当前存储需求的成本效益。例如,文件可以首先被储存在为读取和写入提供高性能的存储层中。随着文件成熟,文件可以根据本发明被移动至存储层中。在各种实施方式中,层包括不同的存储技术(如,磁带、硬盘、基于半导体的内存、光驱动,等)、不同的位置(如,本地计算机存储、本地网络存储、远程网络存储、分布式存储、云存储、归档存储、保管库(vault)存储,等),或者任何其他用于分层的数据存储系统的合适的存储。
[0035]回顾图1,为了维持存储系统104的文件系统的一致点,主要部分分段必须被维持在存储系统104中。在其他事情中,主要部分包含对文件系统根的引用,该文件系统根被用于带来文件系统并接入存储在其中的文件。常用的系统通常将最新的主要部分分段储存到存储单元108-109中的每个存储单元,这是耗费时间的并且需要更多的存储空间。在一个实施方式中,分段存储引擎107维持PSWM105,该PSWM105具有标识下一个主要部分分段即将作为元数据110-111的一部分被写入存储单元108-109中哪个存储单元的信息。也就是,作为将新的主要部分分段写入每个存储单元的替代,新的主要部分分段仅被写入至PSWM105中指定的一个或多个存储单元。
[0036]此外,根据一个实施方式,主要部分依存列表(未示出)被维持在存储单元中的至少一个存储单元中(如,源存储单元的主要部分分段),其中主要部分依存列表包括标识一个或多个主要部分分段的信息(如,主要部分分段ID),该一个或多个主要部分分段一起共同表示相应的可安装的主要部分。并且,根据一个实施方式,已经被校验的最近已知可安装的主要部分被缓存在存储系统的存储单元的至少一个存储单元(如,源存储单元)中。随后,在具有校验最近的主要部分是否为可安装的需求时,最近的主要部分依存列表中的主要部分分段与最后校验的主要部分依存列表的主要部分分段对比。仅之前还未被校验的主要部分分段需要校验。
[0037]图2是示出了根据本发明一个实施方式的分段存储引擎的方框图。应当注意的是,仅出于示出的目的,对于来自于之前的附图或说明的具有相同或相似功能的某些组件的某些参考数字也可能保持相同。参照图2,在一个实施方式中,分段存储引擎107包括接口 202、分段器204、复制消除器206、文件系统控制208、名称空间210和存储单元接口 212。分段存储引擎107经由接口 202和名称空间210接收一个或多个数据项。在操作的系统中,名称空间的示例为目录。目录中的每个名称唯一地标识一个文件或子目录,但是一个文件可以多次具有相同名称。一个或多个数据项或文件由分段器204和文件系统控制208进行处理。分段器204基于各种规则或考虑将一个或多个数据项分解(break)成分段。例如,一个或多个数据项可以通过使用基于内容的技术(如,在函数等于一个值或在该值为最小值、最大值、或相对于针对数据项所计算的其他函数值的其他值时,函数在数据项的各种位置处被计算)、基于非内容的技术(如,基于数据项属性,例如,字节长度、标题、创建日期)或者任何其他合适的技术来标识分段边界而被分解成分段。在一个实施方式中,分段被限制为每个数据项的分段的最小和/或最大长度、最小或最大数量、或者任何其他合适的限制。
[0038]在一个实施方式中,文件系统控制208处理信息以指示与数据项相关联的一个或多个分段。在一些实施方式中,指纹列表被用于指示与数据项相关联的一个或多个分段。文件系统控制208将分段相关信息传递至索引(未示出)。该索引被用于经由存储单元接口212来定位存储单元中储存的分段。复制消除器206,标识最新接收的分段是否已经被储存在一个或多个存储单元中。在分段已经被储存在一个或多个存储单元中的情况下,对之前储存的分段的引用被储存,而不是储存最新接收的分段。
[0039]接口 202被配置为接收检索数据项的请求。接口 202通过名称空间210与文件系统控制208进行通信以标识经由存储单元接口 212储存在存储单元中的合适的分段。文件控制系统208与索引(未示出)进行通信以定位经由存储单元接口 212储存在存储单元中的合适的分段。合适的分段被用于建立请求的数据项。响应于该请求,经由接口 202提供该数据项。在一个实施方式中,文件系统控制208利用基于内容的标识符(如,指纹)树以将文件与数据分段和他们在一个或多个存储单元中的位置相关联。在与给定文件或数据项相关联的分段发生改变的情况下,基于内容的标识符将发生改变,并且该改变将有效地从与文件名称(或目录结构)相关联的树的底部延伸(ripple)至顶部,这是因为合适的基于内容的标识符易于使用树结构而被标识。
[0040]根据一个实施方式,分段存储引擎107包括归档器214,该归档器214被配置为将数据从源存储单元归档至目标存储单元,并被配置成通过将合适的主要部分分段储存至诸如存储单元108-109的存储单元来维持用于文件系统208的一致点。在一个实施方式中,在不是必须将相同的主要部分分段写入剩余的存储单元的情况下,PSWM216被用于指示下一个主要部分分段待被写入存储单元108-109的哪一个或多个存储单元,这消耗了更多的时间并需要更多的存储空间。PSWM216可以被实施为图1的PSWM105的一部分。在正常操作期间,PSWM216包含指向源存储单元的引用,因为用户数据通常被写入源存储单元。随后的主要部分分段将仅被写入源存储单元。在数据从源存储单元迁移至目标存储单元期间,PSWM216包含指向源存储单元和目标存储单元二者的引用,因为储存在源存储单元和目标存储单元二者中的数据具有依存关系。随后的主要部分分段将被写入源存储单元和目标存储单元二者。应当注意的是如图1至图2所示的组件中的一些组件或所有组件可以以软件、硬件或二者的组合的形式来实施。
[0041]图3A和图3B是示出了根据本发明一个实施方式的存储系统中主要部分分段写入地图的使用的方框图。例如,系统300可以被实施为图1的存储系统104的一部分。参照图3A至图3B,存储单元301-303可以表示图1的存储单元108-109的至少一部分。存储单元310-303可以在网络上以单个计算节点或多个计算节点的形式实施。存储单元301-303中的每个存储单元由存储单元ID进行标识,存储单元ID唯一地标识了相应的存储单元。存储单元310-303中的每个存储单元进一步包含了元数据,该元数据包括足够的独立地存储于此的信息访问数据。
[0042]在一个实施方式中,存储单元301-303中的每个存储单元可以储存表示文件系统的一部分或分区的数据,该文件系统已经被划分成多个分区,其中文件系统分区共同地表示存储系统300的单个逻辑文件系统(还被称作文件系统分区的集合或文件系统集合)。储存在文件系统分区的每个文件系统分区中的元数据包括足够的信息使得分区为能够自身可识别并且为可配置,从而每个文件系统分区可以在对整个文件系统集合的剩余部分的操作不具有重大影响的情况下而被单独地启动或移除。
[0043]根据一个实施方式,文件系统集合的每个FS分区包含元数据,该元数据具有使相应的分区能够单独地可标识及配置的足够的信息。一些信息特定于FS分区,以及信息的一部分从属于整个FS集合。在一个实施方式中,储存在源分区和归档分区中的FS集合特定信息可以是不同的,而FS分区特定信息可以是相同或类似的。
[0044]在一个实施方式中,特定于FS分区的FS分区元数据包括但不限于以下中至少一些:分区的唯一名称、分区的版本、分区的访问状态、相关联的容器设置ID、分区通用唯一标识符(UUID)、发起方UUID、非易失随机存取存储器(NVRAM) ID、分区执行状态及分区密封状态。
[0045]FS分区的访问状态可以为ENABLED (激活)、DISABLED (失能)或PROBLEM (问题)中的一者。容器设置ID包括相关FS分区内的容器设置的名称,其中容器设置持有FS分区的所有数据。FS分区的分区UUID唯一地标识了相应的FS分区。发起方UUID唯一地表示了该分区的发起方并能够出于复制的目的而被使用。NVRAM ID被用于标识相关联的NVRAM区域以用于相应的分区。分区运行状态包含指示分区的运行状态的信息。分区运行状态可以为以下状态中的一个状态:初始化、恢复NVRAM、准备好(如,已经被安装)、开启、正在核对(如,离线工具正在访问分区)、已核对(如,离线工具已经完成分区访问)、未安装的和被毁坏的。分区密封状态指示相应的分区是否已经被密封。如果分区已经被密封,那么没有进一步的写入访问能够在分区上执行。
[0046]在一个实施方式中,以上维持在每个归档分区中的信息能够被用于唯一地独立确定每个归档分区。如果分区是健康的,那么文件系统能够促使分区在线。如果文件系统确定分区是不健康的,那么能够标记并保持该分区离线和/或将分区置为问题状态。如此,只要源分区是健康的,文件系统可以维持在线。一个或多个归档分区可能被损坏,但是文件系统维持可用。
[0047]此外,每个FS分区进一步包括一些与整个文件系统集合相关的元数据。在一个实施方式中,此类元数据包括但不限于集合分区类型(如,源、目标或归档)和集合ID,该集合ID唯一地标识了集合,相应的分区为该集合的成员。进一步地,每个归档FS分区中的元数据还包括具有版本号、序列号、和校验和的值的报头以及分区表。分区表包括标识了相关联的分区为其成员的文件系统集合的集合ID、集合中分区的数量、文件系统集合中所有归档分区的UUID、以及表示文件系统集合的一致点的主要部分或主要部分分段。
[0048]在一个实施方式中,以上保持在源分区中的信息有助于识别集合(文件系统)的所有不同分区。文件系统使用该信息来发现所有分区并试图促使它们在线。然而,如果源分区崩溃了,那么集合信息是不可用的并且文件系统不能立即促使在线。该集合信息接着必须通过探测系统上可用的一些或所有归档分区以被收集。归档分区将其自身标识为集合的一部分并且来自归档分区的该信息可以被用于重建源分区的集合信息。
[0049]在单个节点存储配置中,根据一个实施方式,在不是必须分配额外内存的情况下,通过将文件系统分区换入和换出内存区域,文件系统分区可以共享存储系统中系统内存的内存区域。进一步地,文件系统可以根据数据文件的访问模式被划分。例如,数据文件可以基于数据文件的时间属性(如,最后修改的时间属性)而被分组成特定的文件系统分区,以使得具有类似访问模式的数据文件被储存在相同的文件系统分区中。结果,资源利用的效率可能大大被改善。
[0050]在一个实施方式中,储存在存储单元310-302的每个存储单元中的元数据包括足够的信息以构建至少相应的文件系统分区的一致点。一个或多个文件系统分区的元数据可以被用于共同表示整个文件系统的一致点。
[0051]根据一个实施方式,周期性地,在所有数据已经被注入(flush)到存储单元之后,主要部分分段被写入存储单元以标记文件系统的一致点或视图。在文件系统发生故障或重启时,最后的主要部分分段可以被用于还原文件系统的最后的状态。在一个实施方式中,每个主要部分分段通过唯一地标识相应主要部分分段的主要部分分段ID而被标识。主要部分分段ID可以在每次新的主要部分分段被写入时以递增的顺序被确定。主要部分分段ID可以由在主要部分分段产生时的序列号来表示。
[0052]回顾图3A,根据一个实施方式,系统300表示归档的存储系统。在正常操作期间,外部的或新的用户数据被写入第一源存储单元(如,源存储单元),在该示例中,为存储单元301。周期性地,储存在源存储单元中的数据被迁移至第二存储单元,在该示例中,为存储单元302,其还被称作目标存储单元。在目标存储单元已经被填充达到预定阈值时,该目标存储单元被密封。在密封之后,存储单元变为只读。另一空的存储单元接着可以被分配并被指定为新的目标存储单元以进一步归档来自源存储单元的数据。
[0053]数据迁移可以根据各种数据迁移策略而被执行。根据一些实施方式,文件被储存成一个或多个分段,其中分段在存储系统中被去复制(如,仅一个副本被储存以及被用于/可以被用于重构多于一个的文件)(如,跨越系统一个存储单元的去复制)。分段被储存在主要存储单元或源存储单元(如,存储单元301)中并且周期性地(如,每周)基于转移协议(如,存储单元超过容量限制、每小时分段的数量、在不活动时,等),或在存储单元为满的或满足一个或多个条件(如,为80%满、为低于20%活动、在最后一小时中已经没有访问)时,属于基于迁移策略(如,在预定时间周期没有被修改或冯文的某文件类型的文件即将被迁移,等)而标识的文件的分段被转移至目标存储单元(如,存储单元302)。
[0054]在目标存储单元被充满时,元数据(如,主要部分集合304)被转移至目标存储单元以使得目标存储单元具有访问第二存储单元(如,主要部分集合305-306)中的文件的所有必要信息。元数据使系统能够重构储存在系统(如,在整个系统中、在存储单元中,等)中的文件和/或将储存在系统中的文件与他们的文件名称相关联。这还允许系统掉电或降低存储单元的功率以用于能量节约或者使存储单元离线以升级存储单元,或者使系统能够容错因此在任何给定存储单元失败的情况下系统可以运行。系统可以通过递增地增加存储单元而被扩展。可以使用提供易于使用接口的单个名称空间来访问文件。在仅一个去复制引擎被用于多个存储单元时硬件可以有效地被使用。
[0055]在一个实施方式中,文件通过独立于该文件被储存在其中的存储单元的名称而被标识。在待存储文件被接收时,名称也被接收以与文件相关联。在读取文件的请求被接收时,名称也被接收。系统查找与系统中文件相关联的元数据以识别与接收到名称相关联的文件。然后查找与所识别文件相关联的元数据以确定所识别文件被储存的存储单元。在一个实施方式中,与系统中的文件相关联的元数据可以被维持在主要存储单元或源存储单元中。可替换地,元数据可以被维持在每个存储单元中,其中与元数据相关联的文件被储存在所述存储单元中。此外,元数据可以以分布式和/或冗余的方式在许多存储单元上被维持(如,用于容错)。并且,元数据可以被维持在分隔的存储单元或存储单元中,或者任何其他合适的存储位置。
[0056]在一些实施方式中,如果源存储单元失败,那么系统使用包含在其他附加存储单元(如,之前的源存储单元)中的元数据以对仍在系统中的文件提供访问。在一个实施方式中,在存储单元为不可用(如,存储单元已经失败、正在升级,等)时,系统保持直至向未储存在失败的存储单元中的任何文件提供访问。
[0057]回顾图3A和图3B,根据一个实施方式,系统300维持PSWM216以包含指示下一个主要部分即将写入存储单元301-303中的哪个存储单元的信息。在该示例中,在正常操作期间,在外部用户数据正在被写入存储单元301时,PSWM216包含标识存储单元301的存储单元ID。在周期性核对文件系统的指向操作(pointing operation)期间,数据(如,脏数据)被注入存储单元301并且新的主要部分分段304仅被写入存储单元301,因为PSWM216仅包含存储单元301的存储单元ID。
[0058]在数据迁移期间,如图3B所示,储存在存储单元301中的数据被迁移至存储单元302。根据一个实施方式,PSWM216被修改为或者被扩展为包括存储单元301-302 二者的存储单元ID。如此,新的主要部分被写入存储单元301-302 二者以作为主要部分分段304-305。在数据迁移之后,PSWM216被再次修改为或再次缩小为仅包含与存储单元301相关联的存储单元ID,以使得随后的主要部分即将被写入存储单元301。
[0059]例如,在数据迁移之前,PSWM216仅指向存储单元301。假定在某些时候,具有主要序列IDlO的主要部分被写入存储单元301,作为主要部分分段#10。在这个时候,文件系统的一致点可以基于储存在存储单元301中的主要部分分段#10被查明(ascertain)。在数据迁移期间,PSWM216被修改以包括存储单元301-302 二者的存储单元ID。在数据迁移结束时,具有主要部分序列IDll的主要部分被写入存储单元301-302 二者。在这个时候,文件系统的一致点可以基于储存在存储单元301-302 二者中的主要部分分段#11被查明。在数据迁移结束之后,PSWM216被修改以仅包含存储单元301的存储单元ID。随后,在新的主要部分即将被写入时,新的主要部分基于PSWM216而被写入存储单元301以作为主要部分分段#12。在这个时候,文件系统的一致点可以基于分别储存在存储单元301-302中的主要部分分段#12和主要部分分段#11而被查明。为了校验最近的主要部分分段是否为可安装的,系统需要校验存储单元301是否包含主要部分分段#12以及存储单元302是否包含主要部分分段#11。因为存储单元303是不相关的,所以不需要访问存储单元303。
[0060]在常见的多节点系统中,为了标记文件系统的一致点,此类主要部分分段将被写入存储单元301-303的所有存储单元中。为了校验文件系统的一致点,元数据和相关联的内容在每个存储单元中必须被校验。这个过程可能花费很长的时间。此外,这个方法可以不在归档系统上工作。如上所述,诸如存储单元303的一些存储单元被配置为只读存储单元并且它们可能会掉电或不可用的。通过使用PSWM216,新的主要部分分段仅被写入一个或多个由PSWM216标识的存储单元,而不是必须将主要部分分段写入所有存储单元。
[0061]图4是示出了根据本发明一个实施方式的维持文件系统的一致点的方法的流程图。例如,方法400可以由图1-图2的分段存储引擎107执行。参照图4,在框401处,PSWM被维持具有指示下一个主要部分分段即将被写入存储系统的哪些去复制单元的信息。在块402处,响应于对写入新的主要部分分段的请求,一个或多个存储单元基于PSWM而被标识。在块403处,新的主要部分分段被写入所标识的一个或多个存储单元,而不须将相同的主要部分分段写入剩余的存储单元。
[0062]图5是示出了根据本发明另一实施方式的维持文件系统的一致点的方法的流程图。方法500可以由图1-图2的分段存储引擎107执行。参照图5,在块501处,接收从去复制存储系统的源存储单元至目标存储单元的数据迁移的请求。在块502处,响应于该请求,PSWM被修改以引用至少源存储单元和目标存储单元。在块503处,执行从源存储单元至目标存储单元的数据迁移,包括基于PSWM将更新的主要部分分段写入源存储单元和目标存储单元二者。在块504处,响应于指示数据迁移结束的信号,PSWM被修改以移除目标存储单元,这使得随后的主要部分分段将仅被写入源存储单元。
[0063]如上所述,主要部分可以由多个主要部分分段来表示,该多个主要部分分段间具有依存关系。例如,在数据迁移期间,储存在源存储单元中的数据可以与储存在目标存储单元中的数据具有依存关系。如此,在数据迁移结束时,主要部分分段基于PSWM被写入源存储单元和目标存储单元二者。在数据迁移之后,随后的主要部分分段将仅被写入源存储单元。为了标识构成最近的主要部分的所有主要部分分段,这样的依存关系必须被维持。根据一个实施方式,主要部分依存列表被维持在主要部分分段的至少一个主要部分分段中,诸如源存储单元的最近的主要部分分段。主要部分依存列表包括标识储存在其他存储单元中的其他主要部分分段的信息,该其他主要部分分段与储存在源存储单元中的主要部分分段具有依存关系。
[0064]图6A至图6C是示出了根据本发明一个实施方式的维持存储系统的一致点的系统的框图。例如,系统600可以被实施为图1的存储系统104的一部分。参照图6A至图6C,除了维持PSWM216,系统进一步维持与储存在源存储单元301中的主要部分分段相关联的主要部分依存列表。主要部分依存列表包括相互依赖以形成可安装的主要部分的一个或多个主要部分分段的列表。主要部分依存列表中列出的主要部分分段共同表示可安装的主要部分。
[0065]在如图6A所述的正常操作期间,外部用户数据仅被写入源存储单元301而且PSWM216仅包含与存储单元301相关联的存储单元ID。假设其他两个存储单元302和303为空。此时,储存在源存储单元301上的主要部分分段602不具有对任何存储单元302和303的依存。因而,与主要部分分段602相关联的依存列表601仅包含一个条目(entry),该条目具有标识源存储单元301的存储单元ID和标识主要部分分段602的主要部分ID。在该示例中,依存列表601指示了最近的主要部分包括储存在源存储单元(如,存储单元301)中的主要部分分段#10。此时,主要部分分段602可以被用于产生文件系统的一致点。
[0066]随后,在如图6B所示的第一数据迁移期间,数据从源存储单元301被迁移至目标存储单元302。如上所述,在数据迁移开始之前,PSWM216被修改以包括标识源存储单元301和目标存储单元302的存储单元ID,以便指示下一个主要部分分段即将被写入存储单元301-302 二者。在该示例中,假定下一个主要部分分段具有ID#11,其分别被写入存储单元301-302 二者以作为主要部分集合612-613。为了捕获储存在存储单元301-302中的数据之间的关系,主要部分依存列表611被维持在主要部分分段612内以指示最近的主要部分分段由储存在存储单元301中的主要部分分段612和储存在存储单元302中的主要部分分段613表示。在该示例中,主要部分依存列表611包括两个条目:I)标识源存储单元301的第一存储单元ID和标识主要部分分段612的第一主要部分分段ID ;以及2)标识目标存储单元302的第二存储单元ID和标识主要部分分段613的第二主要部分分段ID。在该示例中,来自主要部分的主要部分分段612-613都具有序列号#11。此时,主要部分分段612-613可以被用于产生文件系统的一致点。也就是,只要主要部分分段612可以被校验以在存储单元301中被呈现并且主要部分分段613可以被校验以在存储单元302中被呈现,那么,由主要部分分段612-613表示的主要部分可以被认为是可安装的主要部分,用于产生文件系统的一致点的目的。
[0067]在如图6C所述的数据迁移之后,如上所述,PSWM216被修改以仅引用源存储单元301,以使得随后的主要部分分段将仅被写入源存储单元301。在该示例中,假定在数据迁移之后,具有ID#12的新的主要部分基于PSWM216的信息被写入源存储单元301以作为主要部分分段622,而未将相同的主要部分分段写入存储单元302-303。此外,主要部分分段622的主要部分依存列表621被更新以包括指向分别储存在存储单元301-302中的主要部分分段622和613 二者的引用。在该示例中,主要部分依存列表621包括两个条目:1)标识源存储单元301的第一存储单元ID和标识主要部分分段622的主要部分分段ID ;以及2)标识目标存储单元302的第二存储单元ID和标识主要部分分段613的主要部分分段ID。此时,主要部分分段622和613可以被用于产生文件系统的一致点。也就是,只要主要部分分段622可以被校验以在存储单元301中被呈现而且主要部分分段613可以被校验以在存储单元302中被呈现,那么由主要部分分段622和613表示的主要部分可以被认为是可安装的,以用于产生文件系统的一致点的目的。
[0068]因此,如上所述,新的主要部分分段被写入由PSWM216指示的任何一个存储单元或多个存储单元。在数据迁移过程期间,PSWM216被修改以指定下一个主要部分分段即将写入的源存储单元和目标存储单元二者。此外,产生了描述主要部分分段与储存在源存储单元和目标存储单元中的数据之间的依存关系的主要部分依存列表。也就是,主要部分可以基于储存在多个存储单元中的多个主要部分分段而被查明,而不必一直将相同的主要部分分段写入所有存储单元。如此,文件系统的一致点可以以更有效的方式被查明且需要更小的存储空间。
[0069]图7是示出了根据本发明一个实施方式的使用主要部分依存列表维持文件系统的一致点的方法的流程图。例如,方法700可以由如图6A至图6C所示的系统600执行。参照图7,在块701处,接收将新的主要部分分段写入存储单元的请求,其中新的主要部分分段由唯一的ID (如,序列号)标识。在块702处,响应于该请求,PSWM被访问以标识一个或多个存储单元,新的主要部分分段应当被写入该一个或多个存储单元。在块703处,产生主要部分依存列表以包括唯一标识符和与PSWM中标识的存储单元相关联的存储单元ID。在块704处,对于剩余的存储单元,他们的主要部分分段号从最后的可安装的主要部分的依存列表被复制。在块705处,具有于此包括的主要部分依存列表的新的主要部分分段被写入所标识的存储单元以作为主要部分集合。如此,文件系统的一致点可以基于跨越多个存储单元的多个主要部分集合而被查明,而不必将相同的主要部分分段写入所有存储单元。
[0070]图8是示出了根据本发明另一实施方式的使用主要部分依存列表维持文件系统的一致点的方法的流程图。方法700可以由如图6A至图6C所示的系统600执行。参照图8,在块801处,接收获得存储系统的文件系统的一致点的请求。在块802处,响应于该请求,储存在存储单元的源存储单元中的最近的主要部分分段被访问以检索主要部分依存列表,其中主要部分依存列表表示跨越多个存储单元的主要部分分段。在块803处,列出在主要部分依存列表中的每个主要部分分段在相关联的存储单元中被校验以验证可安装的主要部分。可安装的主要部分被用于产生文件系统的一致点。
[0071]图9是示出了根据本发明另一实施方式的存储系统的分段存储引擎的框图。例如,分段存储引擎900可以被实施为图1的分段存储引擎107的一部分。参照图9,与图2的分段存储引擎107类似,分段存储引擎900包括接口 202、分段器204、复制消除器206、文件系统208、索引210、存储单元接口 212、归档器214以及具有与如上所述一致或类似的功能的 PSWM216。
[0072]在一个实施方式中,分段存储引擎900进一步包括用于缓存最后校验的主要部分分段218的副本的缓存。最后校验的主要部分分段218可以被缓存在诸如硬盘的持续性存储位置,并且该主要部分分段218在存储系统的启动期间被载入存储系统的系统存储器。在新的主要部分分段已经被成功校验时,最后校验的主要部分分段218相应地被更新。在一个实施方式中,缓存的经校验的主要部分分段218基本上表示最后知晓的校验的主要部分分段(如,最近的可安装的主要部分分段)的主要部分依存列表。缓存的经校验的主要部分分段218被用于改进另一主要部分分段的校验效率。
[0073]如上所述,为了校验主要部分,主要部分的依存列表中的一个或多个主要部分分段中的每个主要部分分段必须在其相应的存储单元中被校验。根据一个实施方式,如果当前主要部分的依存列表中的主要部分分段在缓存的经校验的主要部分218的依存列表中被列出,那么特定的主要部分分段不需要为了当前的主要部分而被再次校验。如此,校验过程可以以更有效的方式被执行。
[0074]图10是示出了根据本发明一个实施方式的校验存储系统的可安装的主要部分的机制的框图。系统100可以被实施为如图9所示的系统900的一部分。参照图10,假定最后的主要部分由主要部分依存列表1001表示,该主要部分依存列表1001包括分别对主要部分集合#11 (如,储存在存储单元301中的主要部分集合1002)和主要部分集合#9 (如,储存在存储单元302中的主要部分集合1003)的引用。在接收到对校验可安装的主要部分分段的请求时,例如,在存储系统的启动期间,根据一个实施方式,主要部分依存列表1001中的每个条目与缓存的最后校验的主要部分分段218中的每个条目相比较。在最后校验的主要部分分段218中列出的主要部分依存列表1001中的条目的主要部分集合需要被校验。换句话说就是,跳过了与最后校验的主要部分分段218中的主要部分集合匹配的主要部分依存列表1001中条目的主要部分集合的校验,因为之前已经校验过了。
[0075]在该示例中,主要部分依存列表1001包括两个条目:1)单元301的存储单元ID和主要部分分段1002的ID#11 ;以及2)单元302的存储单元ID和主要部分分段1003的ID#9。最后校验的主要部分包括两个条目:1)单元301的存储单元ID和主要部分分段1004的ID#10 ;以及2)单元302的存储单元ID和主要部分分段1003的ID#9。在校验过程期间,主要部分依存列表1001中的每个条目与最后校验的主要部分218中的每个条目进行比较,其中最后校验的主要部分218中的每个条目本质上是最后知晓的可安装的主要部分的主要部分依存列表。在该示例中,将列表1001和218 二者的第二条目(如,〈302,9>)相匹配。如此,第二条目的相应的主要部分分段不需要被校验;仅列表1001的第一条目(如,〈301,11>)的主要部分分段需要被校验。如此,校验过程的效率被大大改进。在校验过程已经执行成功之后,最后校验的主要部分218相应地被更新。在该示例中,最后校验的主要部分218将包括条目<301, 11>和〈302,9>。
[0076]图11是示出了根据本发明一个实施方式的校验存储系统的主要部分分段的方法的流程图。方法1100可以由图10的系统1000执行。参照图11,在块1101处,响应于对校验表示存储系统的文件系统的一致点的主要部分分段的请求,第一主要部分集合(如,储存在源存储单元中的主要部分集合)的每个主要部分集合被检查以确定相应的主要部分集合是否之前已经被校验。在块1102处,仅之前没有被校验的一个或多个主要部分集合将被校验,不必对之前已经被校验的主要部分集合进行校验。一旦新的主要部分分段被校验,该新的主要部分分段就可以被用于构建文件系统的一致点。
[0077]图12是示出了根据本发明另一实施方式的校验存储系统的可安装的主要部分的方法的流程图。方法1200可以由图10的系统1000执行。参照图12,在块1201处,记录了第一可安装的主要部分,其中该主要部分包括共同表示该主要部分的多个主要部分分段。随后,在块1202处,接收用于校验第二主要部分是否为可安装的请求。在块1203处,对于在第二主要部分的依存列表中的每个主要部分分段,通过搜索或匹配第一主要部分的依存列表中的主要部分分段来确定主要部分分段是否之前已经被校验。如果主要部分分段之前没有被校验(如,未在第一主要部分分段中找到),则在块1204处,主要部分分段在相关联的存储单元中被校验;否则,跳过主要部分分段的校验。以上过程可以反复地执行以用于第二主要部分的依存列表中的每个主要部分分段。
[0078]图13是示出了可以与本发明的实施方式一起使用的数据存储系统的示例的框图。例如,系统1300可以被实施为如图1所不的存储系统的一部分。在该不例中,系统1300为去复制的数据存储系统。参照图13,系统1300包括但不限于文件服务接口 1301、内容存储管理器1302、具有分段指纹1304的分段储存管理器1303、及用于管理储存在一个或多个磁盘1306的容器中的分段的容器管理器1405。
[0079]根据一个实施方式,系统1300以内容依赖方式将数据对象(如,文件)分解为可变长度分段并针对每个分段计算指纹。系统1300使用指纹来标识复制分段并作为用于引用分段的分段描述符的一部分。分段描述符按分段指纹的顺序来表示文件。在写操作期间,系统1300标识复制分段并尽量仅储存任何特定分段的一个副本。在储存新的分段之前,系统1300可以使用各种压缩算法(诸如,改进型Ziv-Lempel算法)来压缩分段。在一个实施方式中,系统1300支持在公共文件服务接口 1301上被分层的多个访问协议。支持的协议包括网络文件系统(NFS)、公共互联网文件系统(CIFS)和虚拟磁带库接口(VTL),等。系统1300包括用于管理系统的管理接口。管理接口可以为文件服务接口 1301的一部分。
[0080]在数据流进入系统1300时,数据流从标准接口中的一者穿过进入通用文件服务层,该通用文件服务层管理名称空间和文件元数据。文件服务层将写入请求转达至内容储存管理器1302,该内容储存管理器1302管理文件内的数据内容。内容储存管理器1302将数据流分解成多个分段,使用分段储存管理器1303来执行去复制,并保持对文件的引用的追踪(如,在逻辑数据对象和物理数据对象之间进行映射)。分段储存管理器1303进行去复制的实际工作。该分段储存管理器1303将去复制的(唯一的)分段打包成相对大的单元,使用改进的压缩算法(诸如Ziv-Lempel算法)将这些单元压缩以进一步压缩数据,并接着将压缩的结果写入由容器管理器1305管理的容器中。
[0081]为了从系统1300读取数据流,客户端通过标准接口中的一者和文件服务层1301来驱动读取操作。内容储存管理器1302使用对去复制分段的引用来将需要的数据流传递至客户端。分段储存管理器1303预取、解压缩、读取并缓存来自容器管理器1305的数据分段。根据一个实施方式,内容储存管理器1302实施字节范围的写入和读取以用于去复制数据对象,其中对象为客户端数据字节的线性序列并具有固有的且客户端可设定的属性或元数据。对象可以为常规文件、整卷或磁带盒的备份映像。
[0082]为了将字节范围写入对象中,内容储存管理器1302执行多个操作。首先,将字节范围以内容依赖方式进行锚定划分成可变长度分段。然后分段指纹计算诸如SHA-1散列(hash)的散列并根据该散列产生分段描述符。每个分段描述符包含至少指纹和大小的每个分段信息。进一步地,分段映射建立记录对象字节范围和分段描述符之间的映射的分段树。目标是使用对去复制分段的引用来表示数据对象。为了读取对象中的字节范围,内容储存管理器1302遍历由以上分段映射操作创建的分段树以获得有关分段的分段描述符。内容储存管理器1302从分段储存(未示出)提取分段并将请求的字节范围返回客户端。
[0083]分段储存管理器1303本质上管理由分段的分段描述符1304作为键码的分段的数据库。为了支持写入,分段储存管理器1303接收具有其分段描述符的分段并将其储存起来。为了支持读取,分段储存管理器1303提取由其分段描述符指定的分段。为了写数据分段,分段储存执行多个操作。首先,分段过滤操作确定分段是否为复制品。这对于去复制分段是关键操作并且可能触发磁盘1/0,因而其开销可能大大影响吞吐性能。进一步地,容器打包操作将待储存的分段添加至容器,该容器为系统中的存储单元。打包操作还使用诸如改进的Ziv-Lempel算法的改进的压缩算法来压缩分段数据。在全部打包时,容器被添加至容器管理器1305。最后,在容器已经被添加至容器管理器1305之后,分段索引操作将更新分段索引,该分段索引将分段描述符映射至持有分段的容器。为了读取数据分段,分段储存管理器1303执行默写操作。首先,分段查找寻找储存请求的分段的容器。该操作可能触发磁盘I/O以查询磁盘上的索引,因而是吞吐敏感的。容器检索通过调用容器管理器1305读取指示的容器的相关部分。容器解包操作解压缩容器的检索的部分并返回请求的数据分段。
[0084]容器管理器1305向分段储存1303提供存储容器记录概念(abstraction),而不是块概念。容器包括具有用于储存的分段的分段描述符的元数据部分。这些分段描述符在那些新的容器被添加而老容器删除的情况中是不可变的,但是一旦写入,容器不能被修改。在分段储存管理器1303添加容器时,容器管理器1305返回容器ID,该容器ID在系统的生命期间是唯一的。容器管理器1305负责分配、解分配、读取、写入和可靠储存容器。容器管理器1305支持元数据部分或数据部分的一部分的读取,但是容器管理器1305仅支持整个容器的添加。如果容器不满但需要被写入磁盘,那么容器被塞满以达到其全部大小。容器管理器1305被建立在标准块储存1306的顶端。诸如软件RAID-6、连续数据清理、容器校验及端对端数据核对的先进技术被应用以确保数据的高度完整性和可靠性。
[0085]容器概念提供了多项优势:1)固定的容器大小使得容器易于进行容器分配和解分配;2)大粒度(granularity)的容器写入实现高的磁盘吞吐的利用;以及3)合理选用的容器大小允许有效的完全条带RAID写入,这使得有效的软件RAID能够在存储层实施。根据一个实施方式,诸如文件服务接口的系统1300的某些组件包括逻辑,使用以上所述的技术该逻辑被配置为检查接收到的特定请求是否可能危害(compromise)不可变的数据对象的完整并被配置为从授权代理请求必要的认可以用于此类请求。其他配置也可以存在。
[0086]图14是可以与本发明的一个实施方式一起使用的数据处理系统的框图。例如,系统1400可以被用作如图1所示的客户端或服务器计算机。应当注意的是尽管图14示出了计算机系统的各种组件,并不是打算表示相互连接组件的任何特定结构或方式;因为这些细节对本发明来说并不是密切相关的。还应当理解的是具有较少组件或可能更多组件的网络计算机、手持式计算机、手机和其他数据处理系统也可以与本发明一起使用。例如,图14的计算机系统可以为苹果公司的Macintosh计算机或IBM兼容PC。
[0087]如图14所示,处于数据处理系统形式的计算机系统1400包括耦合至处理器1403和R0M1407、易失性RAM1405及非易失性存储器1406的总线或连接体1402。处理器1403可以包括多个处理器和/或核心逻辑(core logic),该多个处理器和/或核心逻辑构成系统的中央处理单元(CPU),并因而控制系统的整个操作。根据某些实施方式,处理器1403通过执行储存在内存1405-1407的任何内存中的软件(例如应用程序或操作的系统等)来完成这个操作。处理器1403可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、特定用途集成电路(ASIC)、可编程逻辑设备(PLD)等,或者这些设备的组合。
[0088]例如处理器1403 (可以为Intel处理器或PowerPC处理器)被耦合至如图14的示例所示的缓存内存1404。总线1402将各种组件相互连接在一起并且还将这些组件1403和1405-1407与显示控制器和显示设备1408以及输入/输出(1/0)设备1410相互连接,该输入/输出(1/0)设备1410可以为鼠标、键盘、调制解调器、网络接口、打印机和其他现有技术已知的设备。
[0089]通常,输入/输出设备1410通过输入/输出控制器1409被f禹合至系统。易失性RAM1405通常被实施为动态RAM (DRAM),该动态RAM需要持续供电以为了更新或维持存储器中的数据。非易失性存储器1406通常为磁硬盘、磁光驱动、光驱动、DVD RAM、闪存或即使在电力从系统移除之后还维持数据的其他类型的存储器系统。通常,非易失性存储器还为随机存取存储器,虽然这是不需要的。
[0090]虽然图14显示了非易失性存储器为直接耦合至数据处理系统中剩余的组件的本地设备,但是应当理解的是本发明可以利用远离系统的非易失性存储器,诸如通过诸如调制解调器或以太网接口的网络接口耦合至数据处理系统的网络存储设备。本领域技术人员熟知,总线1402可以包括通过各种桥、控制器和/或适配器相互连接的一个或多个总线。在一个实施方式中,1/0控制器1409包括USB (通用串行总线)适配器以用于控制USB外围设备。可替换地,1/0控制器1409可以包括IEEE-1394适配器,还被称为火线(FireWire)适配器,以用于控制火线设备。还可以包括其他组件。
[0091]之前详细描述的一些部分已经依据对计算机存储器内数据比特操作的算法和符号表示而被呈现出来。这些算法描述和表示是由数据处理领域的技术人员使用的方式以以最有效地将他们的工作的实质传递给本领域技术人员。算法在这里一般被构想为引起需要结果的自我一致的序列的操作。这些操作是物理量需要的物理操纵。
[0092]但是,应当接受的是,所有这些和类似的术语是与合适的物理量相关联的并且仅仅是应用至这些量的便利的标签。除非特别的描述,否则显然如上所述,应当理解通过利用诸如权利要求所述的术语的描述、论述,涉及计算机系统或类似的电子计算的设备的行为和处理,其是对如计算机系统的寄存器和存储器内的被表示为物理(电子)量的数据进行操纵并将其变换为计算机系统存储器或寄存器或其他信息存储、传输或显示设备内被类似表示为物理量的其他数据。
[0093]本发明的实施方式还涉及用于执行于此操作的设备。该计算机程序被储存在非暂时性计算机可读介质中。机器可读介质包括以机器(如,计算机)可读的形式储存信息的任何机制。例如,机器可读(如,计算机可读)介质包括机器(如,计算机)可读存储介质(如,只读存储器(“ROM”)、随机访问存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备)。
[0094]在先前的附图中描述的过程或方法可以由处理逻辑执行,该处理逻辑包括硬件(如,电路、专用逻辑,等)、软件(如,体现在非暂时性计算机可读介质),或者二者的结合。虽然依据一些时序操作以上描述了处理过程或方法,应当理解的是所描述的一些操作可以以不同的顺序执行。并且,一些操作可以并行地而不是连续地执行。
[0095]本发明的实施方式并未参照任何特定的编程语言进行描述。应当理解的是各种编程语言可以被用于实施于此所述的本发明实施方式的教示。
[0096]在前述描述中,本发明实施方式已经参照特定的示例性实施方式进行描述。显然,在不背离权所附利要求所述的本发明更广泛的思想和范围的情况下可以进行各种修改。相应地,说明书和附图被视为说明性的而不是限制性的。
【权利要求】
1.一种用于维持文件系统的一致点的计算机实施的方法,该方法包括: 接收确定数据的一致点的请求,所述数据储存在具有多个存储单元的存储系统的文件系统中; 响应于所述请求,从储存在所述存储单元的第一存储单元中的第一主要部分分段中检索主要部分依存列表,所述主要部分依存列表包括标识储存在所述存储单元的第二存储单元中的至少第二主要部分分段的信息,其中所述第一主要部分分段和所述第二主要部分分段共同形成表示所述文件系统的一致视图的主要部分;以及 查明在所述主要部分依存列表中列出的所述主要部分分段中的每个主要部分分段以试图确定所述数据的一致点。
2.根据权利要求1所述的方法,其中所述第一主要部分分段和所述第二主要部分分段分别由第一主要部分分段标识符(ID)和第二主要部分分段ID来标识,并且其中所述第一主要部分分段ID和所述第二主要部分分段ID表示不同版本的所述主要部分。
3.根据权利要求2所述的方法,其中所述主要部分依存列表包括第一条目和第二条目,其中所述第一条目包括与标识所述第一存储单元的第一存储单元ID相关联的所述第一主要部分分段ID,以及其中所述第二条目包括与标识所述第二存储单元的第二存储单元ID相关联的所述第二主要部分分段ID。
4.根据权利要求2所述的方法,其中所述第一主要部分分段ID和所述第二主要部分分段ID基于所述第一主要部分分段和所述第二主要部分分段被写入的序列顺序而被确定。
5.根据权利要求1所述的方法,其中查明所述主要部分分段中的每个主要部分分段包括:· 在所述主要部分分段各自的存储单元中校验在所述主要部分依存列表中列出的所述主要部分分段中的每个主要部分分段;以及 如果所述主要部分分段中的每个主要部分分段已经被校验,则将由在所述主要部分依存列表中列出的所述主要部分分段表示的主要部分标识为可安装的主要部分。
6.根据权利要求5所述的方法,其中所述可安装的主要部分能够被用于构建所述文件系统中数据的一致点。
7.根据权利要求1所述的方法,进一步包括: 接收将第二主要部分写入所述第一存储单元和所述第二存储单元的第二请求,所述第二主要部分由第三主要部分分段ID标识; 响应于所述第二请求,产生第二主要部分依存列表,该第二主要部分依存列表包括与所述第一存储单元和所述第二存储单元相关联的所述第三主要部分分段ID ;以及 将第三主要部分分段写入至少所述第一存储单元,其中所述第三主要部分分段包括所述第二主要部分依存列表。
8.根据权利要求7所述的方法,其中所述第二主要部分依存列表包括第一条目和第二条目,其中所述第一条目包括所述第三主要部分分段ID和标识所述第一存储单元的第一存储单元ID,以及其中所述第二条目包括所述第三主要部分分段ID和标识所述第二存储单元的第二存储单元ID。
9.一种在其中存储有指令的计算机可读存储介质,其中在所述指令被计算机执行时,使所述计算机执行用于维持文件系统的一致点的方法,该方法包括:接收确定数据的一致点的请求,所述数据储存在具有多个存储单元的存储系统的文件系统中; 响应于所述请求,从储存在所述存储单元的第一存储单元中的第一主要部分分段中检索主要部分依存列表,所述主要部分依存列表包括标识储存在所述存储单元的第二存储单元中的至少第二主要部分分段的信息,其中所述第一主要部分集合和所述第二主要部分集合共同形成表示所述文件系统的一致视图的主要部分;以及 查明在所述主要部分依存列表中列出的所述主要部分分段中的每个主要部分分段以试图确定所述数据的一致点。
10.根据权利要求9所述的计算机可读存储介质,其中所述第一主要部分分段和所述第二主要部分分段分别由第一主要部分分段标识符(ID)和第二主要部分分段ID来标识,并且其中所述第一主要部分分段ID和所述第二主要部分分段ID表示不同版本的所述主要部分。
11.根据权利要求10所述的计算机可读存储介质,其中所述主要部分依存列表包括第一条目和第二条目,其中所述第一条目包括与标识所述第一存储单元的第一存储单元ID相关联的所述第一主要部分分段ID,以及其中所述第二条目包括与标识所述第二存储单元的第二存储单元ID相关联的所述第二主要部分分段ID。
12.根据权利要求10所述的计算机可读存储介质,其中所述第一主要部分分段ID和所述第二主要部分分段ID基于所述第一主要部分分段和所述第二主要部分分段被写入的序列顺序而被确定。
13.根据权利要求9所述的计算机可读存储介质,其中查明所述主要部分分段中的每个主要部分分段包括: 在所述主要部分分段各自的存储单元中校验在所述主要部分依存列表中列出的所述主要部分分段中的每个主要部分分段;以及 如果所述主要部分分段中的每个主要部分分段已经被校验,则将由在所述主要部分依存列表中列出的所述主要部分分段表示的主要部分标识为可安装的主要部分。
14.根据权利要求13所述的计算机可读存储介质,其中所述可安装的主要部分能够被用于构建所述文件系统中数据的一致点。
15.根据权利要求9所述的计算机可读存储介质,其中所述方法进一步包括: 接收将第二主要部分写入所述第一存储单元和所述第二存储单元的第二请求,所述第二主要部分由第三主要部分分段ID标识; 响应于所述第二请求,产生第二主要部分依存列表,该第二主要部分依存列表包括与所述第一存储单元和所述第二存储单元相关联的所述第三主要部分分段ID ;以及 将第三主要部分分段写入至少所述第一存储单元,其中所述第三主要部分分段包括所述第二主要部分依存列表。
16.根据权利要求15所述的计算机可读存储介质,其中所述第二主要部分依存列表包括第一条目和第二条目,其中所述第一条目包括所述第三主要部分分段ID和标识所述第一存储单元的第一存储单元ID,以及其中所述第二条目包括所述第三主要部分分段ID和标识所述第二存储单元的第二存储单元ID。
17.一种存储系统,包括:多个存储单元;以及 归档器,被耦合至所述存储单元,所述归档器被配置为 响应于获得储存在文件系统中数据的一致点的请求,从储存在所述存储单元的第一存储单元中的第一主要部分分段中检索主要部分依存列表,所述主要部分依存列表包括标识储存在所述存储单元的第二存储单元中的至少第二主要部分分段的信息,其中所述第一主要部分分段和所述第二主要部分分段共同形成表示所述文件系统的一致视图的主要部分,以及 查明在所述主要部分依存列表中列出的所述主要部分分段中的每个主要部分分段以试图确定所述数据的一致点。
18.根据权利要求17所述的方法,其中所述第一主要部分分段和所述第二主要部分分段分别由第一主要部分分段标识符(ID)和第二主要部分分段ID来标识,并且其中所述第一主要部分分段ID和所述第二主要部分分段ID表示不同版本的所述主要部分。
19.根据权利要求18所述的方法,其中所述主要部分依存列表包括第一条目和第二条目,其中所述第一条目包括与标识所述第一存储单元的第一存储单元ID相关联的所述第一主要部分分段ID,以及其中所述第二条目包括与标识所述第二存储单元的第二存储单元ID相关联的所述第二主要部分分段ID。
20.根据权利要求17所述的方法,其中在查明所述主要部分分段中的每个主要部分分段期间,所述归档器被配置为 在所述主要部分分段各自的存储单元中校验在所述主要部分依存列表中列出的所述主要部分分段中的每个主要部分分段,以及 如果所述主要部分分段中的每`个主要部分分段已经被校验,则将由在所述主要部分依存列表中列出的所述主要部分分段表示的主要部分标识为可安装的主要部分。
21.根据权利要求17所述的方法,其中所述归档器进一步被配置为 接收将第二主要部分写入所述第一存储单元和所述第二存储单元的第二请求,所述第二主要部分由第三主要部分分段ID标识, 响应于所述第二请求,产生第二主要部分依存列表,该第二主要部分依存列表包括与所述第一存储单元和所述第二存储单元相关联的所述第三主要部分分段ID,以及 将第三主要部分分段写入至少所述第一存储单元,其中所述第三主要部分分段包括所述第二主要部分依存列表。
【文档编号】G06F7/00GK103547992SQ201280024354
【公开日】2014年1月29日 申请日期:2012年3月7日 优先权日:2011年3月31日
【发明者】S·麦卓, W·W·苏 申请人:伊姆西公司

最新回复(0)