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

文档序号:9929604阅读:来源:国知局
除文件243的条项之后容器210在引用列表500中具有3个粗等级条项。引 用列表500中由文件243引用的段对象的条项仍保留在列表中。由于引用列表500仅对粗等 级条项进行更新,当删除一个文件时不会删除细等级条项。在粗等级上更新引用列表的优 点是它可W加速更新列表的进程,因为存在更少的条项要处理。在引用列表500的情况中, 当删除文件243时仅有一个粗等级条项被删除。另外,可能只有4个条项(粗等级条项)需要 进行处理W便确定是否删除的文件引用了容器。如果引用列表500已经在细等级上进行了 更新,对于文件243所指向的段对象的每一个,就已经删除了6个额外条项。另外,如果引用 列表500已经在细等级上进行了更新,所有的细等级条项就得到处理。在存储大量容器和段 对象的大规模基于去重复的存储系统中,仅更新运个或运些引用列表的粗等级条项可能在 很大程度上减少在删除一个文件或一组文件之后执行的更新和处理操作的数量。
[0055] 在粗等级上更新引用列表存在一个缺点。如果容器内的段对象的一些不被任何文 件所使用,引用列表可能不会显示运一点。运可能产生消耗存储空间的未使用段对象,否则 运些存储空间可W得到释放并重新使用。为了减少未使用段对象的存储,当一个特定容器 的粗等级条项的数量降到一个阔值W下时,该容器的引用列表条项可W在细等级上进行更 新。当只存在特定容器的少量粗等级条项时,段对象更有可能进行回收,因此切换到细等级 更新可W比仅仅利用粗等级更新更快地促进资源回收。另外,当存在少量特定容器的粗等 级条项时,相比于如果存在大量粗等级条项,切换到细等级更新可能只是稍微增加了更新 列表的的处理负担。
[0056] 在引用列表切换到用于具体容器的细等级更新后,新的文件可W添加到备份存储 系统,运些新文件引用了在该特定容器存储的引用段对象。如果引用该容器的文件数量超 过阔值,引用列表可W切换回该容器的粗等级更新。引用列表从细到粗等级更新切换回和 切换去的次数可W与特定容器的粗等级条项的数量在两个方向上跨越阔值的次数一样多。
[0057] 现在参见图8,图中示出了已经从存储系统中删除文件242之后的容器210的引用 列表500(表和链表格式)。在删除文件242之后,容器210的粗等级条项的数量是2个。因此, 引用列表500可W切换到更新粗和细等级条项,因为条项的数量已经降至阔值3W下。在其 他实施例中,引用列表可W具有不同的阔值,并且引用列表可W在不同数量的粗等级条项 上从粗等级更新向细等级更新切换。
[0058] 在图8中,可W从引用列表500中删除用于文件242的容器210的粗等级条项。另外, 段对象(或细等级)条项也可W进行更新。可W从列表中删除用于文件242的所有细等级条 项。另外,因为用于文件243的粗等级条项不再存在,可W在优先操作中删除该条项,可W从 列表中删除文件243的所有细条项。当删除了文件243时,如图7中所示,引用列表500处于粗 等级更新模式,并且仅从列表中删除文件243的粗等级条项。在所有引用列表500切换到细 等级更新之后,可能需要更新细等级条项W匹配容器210的粗等级条项。运允许列表精确地 反映有多少文件引用了每个段对象。如图8中所示,在从引用列表500删除与文件242和243 相关联的所有细等级条项之后,段对象238和239不会由任意文件引用。因此,可W删除运两 个段对象,并且运些对象所占据的存储空间可W重新使用。可W立即删除运些段对象,或者 可W对它们做删除标记并随后在设及其他未使用段对象的批操作中进行删除。在进一步的 实施例中,标记和回收段对象的其他方法是可能的并且可W设想。
[0059] 当将多个文件添加到备份存储系统时,可W将运些文件分块为与已经存储的段对 象相同的数据段。可W更新用于存储运些相同段对象的容器的引用列表。在一个实施例中, 如果粗等级条项的数量低于阔值,那么只更新粗引用列表。一旦删除了文件并且粗等级引 用列表达到阔值,那么可W进行重建细引用列表。W此方式,当需要时只需对细等级引用列 表采取动作。如果粗引用列表容器很少达到阔值,就完全不存在细引用更新开销。在一个替 代实施例中,当将多个文件添加到容器中时,可W同时在细和粗等级上更新引用列表,即使 是粗等级条项的数量低于阔值。在运种实施例中,新存储的文件所引用的段对象可W存储 在正在引用列表的粗等级上进行处理的容器中。对于在粗等级上进行处理的容器,当将一 个新文件添加到备份存储系统中时,用于运些容器的段对象条项仍然可W进行更新。
[0060] 在一些实施例中,容器可W将其所有粗等级条项从引用列表中删除,无需更新细 等级条项。运可W在容器的引用列表只包含粗等级条项时发生。运还可W在容器的引用列 表包含粗和细等级条项并且阔值为零时发生。或者运可W在同时删除一组文件并且在一个 操作中删除容器的所有粗等级条项时发生。当为特定容器删除所有粗等级条项时,该容器 的段对象可W进行回收或标记为准备进行回收,无需对引用列表的细等级条项进行更新或 处理。运种做法可W通过回收段对象所使用的资源而节省处理时间和开销,不必处理引用 列表的细等级条项。
[0061] 现在转至图9,图中示出了用于容器210的"面向备份的"引用列表800。该容器引用 列表是面向备份的,因为每个容器具有备份列表,运些备份引用了容器中的至少一个对象。 因此,相比于图5-7中的引用列表500,引用列表800包含与备份事务250相关联的条项。如同 前述示例,图中示出了表和链表格式。如图帥所示,备份事务250包含文件241-244。在删除 文件243和242之前,图9中的引用列表800对应于图6的引用列表500。根据备份事务而非根 据每个单独的文件通过跟踪容器210和段对象231-239,已经减少了引用列表800中的条项 数量。减小引用列表800的大小可W降低存储列表所需要的存储空间,并且当将多个备份事 务添加到存储系统或从其删除时可W减少需要处理列表中条项的处理时间。在一个实施例 中,引用列表800可W包含引用了容器或段对象的备份事务的每个示例的一个条项。在另一 个实施例中,去重复服务器150(图2)可W将多个备份事务组织为一组备份事务,并且引用 列表800可W包含引用容器或段对象的一组备份事务的每个示例的条项。在进一步的实施 例中,文件和备份事务的其他分组可用于确定引用列表800如何记录条项。正如可W认识到 的是,尽管描述了包括多个文件的备份事务,还可W使用其他可识别的文件分组方法。
[0062] 另外,引用列表的粗等级条项可W对应于多于一个的容器。例如,在一个实施例 中,多个容器可W集合在一起。该多个容器可W存储来自一个备份事务的数据。或者,可W 选择该多个容器并基于其他因素而集合在一起。引用列表可W组织为粗等级条项对应于多 个容器而不是一个单一容器。W此方式组织引用列表可W产生具有更少条项的较小引用列 表,并且在文件或备份事务添加到系统或从其删除时可W产生更快的更新处理。
[0063] 现在转至图10,图中示出了一种用于维护面向备份的引用列表的方法的实施例。 为了进行讨论,本实施例中的步骤W顺序次序示出。应当注意的是,在W下描述的方法的各 种实施例中,可W按照不同于所示的次序同时执行所描述的要素的一个或多个,或者可W 完全忽略。也可W按照所期望的那样执行其他附加要素。
[0064] 图10的方法开始于模块905,然后可W在模块910检测存储操作。由于本图例总体 上讨论备份操作,存储操作可W执行新的备份或删除先前的备份。在条件模块915,如果确 定该操作是删除备份,那么它可W确定容器引用列表的哪个容器包括被删除的备份的识别 (模块925)。然后,可W删除容器的引用列表中删除的备份的条项(930)。
[0065] 如果检测的操作是新的备份(条件模块915),那么对于添加的每个文件可W在存 储器中捜索一个匹配的段对象(模块940),该段对象与从添加的文件分块的一个数据段相 同。如果存在一个匹配段对象(条件模块945),那么可W定位该匹配段对象(模块955)。如果 不存在匹配的段对象(条件模块945),那么新段对象(对应于所添加文件的数据段)可W存 储在容器中并且一个文件条项可W添加到容器的引用列表(模块
...
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1