基于去重复存储系统中用于可扩展引用管理的系统和方法_3

文档序号:9929604阅读:来源:国知局
有引用段对象的文件的 相关列表。引用列表270的很多可能实施例是有可能的。例如,在一个实施例中文件的链表 可W与每个段对象标识符相关联。B-树结构或其他方式可W用于存储和维护列表270。很多 运类实施例是可能的并且是可设想的。在一个实施例中,如果删除了一个文件,可W遍历段 对象标识符231-239W便移除那些识别已删除文件的条项/实体。如可W认识到的是,有必 要遍历很多条项W完全更新运个或运些数据结构270。一般而言,与运种删除相关的总开销 相对较高。在W下讨论中,描述了一种替代方法。
[0043] 现在转至图4,在方框280中示出了包含段对象231-239的容器210。一般而言,存储 在系统内的所有段对象在逻辑上可W存储在容器中。在所示的单一示例中,容器210包括6 个段对象。然而,可W对容器进行配置W包括任意数量的段对象一-几百、几千或更多。因 此,容器的数量是段对象数量的一小部分。除了 W上所述,在方框290中示出了容器210(图 2)的容器引用列表170的两个实施例。第一实施例示为链表,而第二实施例示为表。
[0044] 容器引用列表识别引用容器内的一个段对象的每个文件。容器引用列表170的第 一实施例描绘为与文件241-244相关的容器引用210,运些文件中的每一个引用在该容器中 存储的至少一个段对象。如同前文讨论的段对象引用列表,任意适合的数据结构都可用于 维护容器引用列表。在所示的第一实施例中,描绘了链表型结构,其中容器标识符210具有 文件标识符链表,运些标识符引用容器210内的段对象。如前所述,可W采用B-树、双向链表 W及其他数据结构。具有头"容器"和"文件"的容器引用列表170包括用于容器210的粗等级 条项。容器引用列表170仅是为了示例的目的而呈现;可W根据本文所述的方法和机制采用 其他实现容器引用列表的方式。还需要注意的是,本文描述的引用列表可W作为一个或多 个列表或结构来维护。如果维护多个列表,给定的列表可能与特定的数据集、特定类型的数 据、数据的用户、特定备份等相关联。
[0045] 除了链型结构外,可W采用更多面向数组类型的结构。例如,在一个实施例中可W 采用动态可分配n-维数组。在图4的示例中,所示的2-维数组用于容器210,每个条项用于每 个文件241-244。W此方式,在每个文件的引用列表170中存在一个粗等级条项,该文件引用 在容器210中存储的段对象的至少一个。4个文件241-244应用容器210中存储的引用段对 象。因此,在应用列表中存在容器210的4个粗等级条项一一一个条项用于引用该容器内存 储的段对象的每一个文件。
[0046] 如上所提及,上文描述的容器引用列表在存储系统中具有段对象引用列表的条项 的一小部分。因为采用运种容器引用存储列表,现在描述具有更少开销的维护引用列表的 一种方法。图5展示了一种用于维护"面向文件"的容器引用列表的方法的概览的一个实施 例。容器列表据称是面向文件的,因为每个容器具有引用该容器中至少一个对象的文件的 列表。如前文讨论的,遍历和维护段对象引用列表可能需要相对较多的开销。特别是当删除 文件时,段对象引用列表的遍历和更新是相对耗时的。作为运种方法的替代,W下方法描绘 了一种途径,在运种途径中常常忽略段对象引用。W此方式,减少了与维护运种列表相关的 开销。
[0047] 图5的方法开始于检测文件操作(模块510)。如果该操作不是文件删除操作(决定 模块515),那么可W将文件分块并进行捜索W匹配已经在系统内存储的对象(模块 540)一一运就是在去重复存储系统中的情况。如果存在一个已经存储的匹配段对象(决定 模块545),文件的识别被添加到包括该匹配段对象的容器的容器引用列表(模块565),并且 如果有该文件的剩余数据段要处理(决定模块570),可W重复该过程。另一方面,如果不存 在已经存储的匹配段对象(决定模块545),那么可W将数据存储在系统中作为新的段对象, 并且更新容器应用列表W包括用于容器(包括新的段对象)的文件的标识(模块550)。
[0048] 如果结果表明检测到的文件操作是文件删除操作(决定模块515),那么就从容器 引用列表中删除文件的标识(模块530)。应当注意的是,在一个实施例中此时不更新或维护 段对象引用列表。相反,只更新容器引用列表W反映检测到的文件。由于在系统中容器远少 于段对象,并且容器引用列表包括段对象引用列表的条项的一小部分,与更新容器引用列 表相关联的开销远少于段对象列表的开销。在W下讨论中,将展示很多示例,运些示例示出 了容器和段对象引用列表的维护。为了便于说明,示例将展示排序格式的列表和条项。然 而,如上文所提及,实际的实施例可W是链结构、树结构或其他方式。另外,尽管运种讨论可 W将粗和细条项描绘为单一列表的一部分,但应当理解的是实际上可W存在多个维护的列 表。
[0049] 现在参见图6,图中示出了具有粗和细等级条项的用于容器210(图2)的引用列表 500。如图4中所示,同时示出了表和链表格式。引用列表500包括用于容器210的粗等级条 项,该容器可W位于备份存储160中(图2),并且包括用于容器210内存储的段对象的细等级 条项。在另一个实施例中,引用列表500可W包含用于在备份存储160中存储的多个容器的 条项。在又一个实施例中,引用列表500可W包含在备份存储160中存储的所有容器的条项。 在再一个实施例中,去重复服务器150(图2)可W维护在备份存储160中存储的每个容器的 独立引用列表。
[0050] 在每个文件的引用列表500中存在粗等级条项,该文件引用了存储在容器210中的 段对象的至少一个。4个文件241-244(图3)引用了在容器210中存储的段对象,因此在引用 列表中存在4个用于容器210的条项,一个条项用于指向在容器内存储的段对象的文件的每 一个。用于容器210的运些条项是引用列表500的粗等级条项。用于段对象的每一个的条项 是引用列表500的细等级条项。每个段对象可W包含引用它的每个文件的细等级条项。如果 段对象可用于在检索或恢复操作过程中重新创建一个文件,该文件可W引用此段对象,或 者W其他方式构成组成该文件的数据的一部分。
[0051] 在引用列表500中段对象231包含用于4个文件(241-244)的4个细等级条项,运些 文件指向该段对象。另外,在该列表中段对象232包含用于文件243和244的2个文件等级条 项,段对象233包含用于文件242和244的2个细等级条项,段对象234包含用于文件241-244 的4个细等级条项,段对象235包含用于文件241和243的2个细等级条项,段对象236包含用 于文件241和242的2个细等级条项,段对象237包含用于文件241-243的3个细等级条项,段 对象238包含用于文件242和243的2个细等级条项,而段对象239包含用于文件242的1个细 等级条项。
[0052] 如图6中所示,细等级条项可W紧接在引用列表500中的粗等级条项之后。在一个 实施例中,如果引用列表500包含不止一个容器的条项,那么第一容器的粗和细等级条项可 W集合在一起,接着是第二容器的粗和细等级条项,W此类推是容器的其余粗和细等级条 项。在另一个实施例中,所有容器的粗等级条项可W集合在一起,接着是所有容器的所有细 等级条项。将粗和细等级条项集合在一起并组织引用列表500的其他方法是可能的并且是 可W设想的。
[0053] 现在转至图7,图中示出了从存储系统中删除了文件243后已经更新该列表之后的 容器210的引用列表500。另外,图中同时示出了表和链表格式。如图7中所描述,引用列表只 对粗等级条项进行更新。运种引用列表的阔值可W是任意所需的数值,例如3。因此,当指向 容器210的文件的数量低于3时,引用列表可W切换更新粗和细等级条项。在另一个实施例 中,阔值可W采用不同的值。在又一个实施例中,服务器150(来自图1)可W至少部分地基于 备份存储160(来自图1)中当前使用的存储空间的百分比来确定阔值。在又一个实施例中, 服务器可W至少部分地基于引用列表中的条项的大小或数量来确定阔值。可W使用任意所 需的条件来设定或确定阔值。
[0054] 在已经删
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1