去重复数据系统中垃圾收集的系统和方法

文档序号:6352025阅读:202来源:国知局
专利名称:去重复数据系统中垃圾收集的系统和方法
去重复数据系统中垃圾收集的系统和方法
背景技术
去重复数据系统经常能够通过识别冗余数据模式来减少需要存储文件的空间量。例如,去重复数据系统可以通过将文件分为数据段并只存储唯一的数据段来减少需要存储类似文件的空间量。在该实例中,每个去重复文件可以简单地包括组成该文件的一个数据段列表。尽管常规的去重复数据系统可以减少需要存储文件的空间,但该常规系统所使用的管理去重复数据的机制可能提供不需要的限制。例如,由于不止一个文件可能引用任意给定的数据段,当删除一个文件时,不能简单地全部移除组成该文件的数据段。为了安全地删除数据段,去重复数据系统必须在引用的和未引用的数据段之间进行区分。不幸的是,在一些情况中,最近添加的引用数据段可能临时呈现为未引用并且可能因此被不恰当地删除掉。例如,当去重复数据系统接收到一个新文件时,去重复数据系统·可能首先接收组成该文件的数据段,再接收文件本身(例如,去重复数据系统可能要求数据段在该文件可以引用它们之前就存在)。如果去重复数据系统的垃圾收集子系统在观察该新文件本身之前检查新数据段,那么去重复数据系统可以删除该新数据段。在一些情况中,常规的去重复数据系统可以将一个临时指示器附加到所有最近添加的数据段上以确保数据段不被过早地移除。不幸的是,该解决方案受到很多缺点的限制。例如,向所有最近添加的数据段添加临时指示器(接着当添加相应的文件时再移除指示器)可能强加了较大的性能开销。而且,该解决方案可与垃圾收集子系统的一些实施方式不兼容(例如标记一扫描方法或引用一计数方法)。因此,本披露认为需要一些系统和方法以有效地在去重复数据系统中执行垃圾收集处理。发明概述如以下更详细描述的,本披露总体上涉及提高去重复数据系统中的垃圾收集操作的系统和方法,其方式是最小化最近添加的数据段(例如段对象)的次数,这些数据段是通过锁定在垃圾收集处理过程中添加到一个去重复数据系统的段对象而被错误删除的。在一个实例中,在此描述的不同系统中的一个或多个可以通过以下方式完成该任务1)识别一个去重复数据系统,2)识别在该去重复数据系统的垃圾收集处理过程中添加到该去重复数据系统的至少一个段对象,3)锁定段对象以防止垃圾收集处理移除该段对象,然后4)在垃圾收集处理之后解锁该段对象。在此描述的系统可以采用各种途径并在各种环境中识别在一个垃圾收集处理过程中添加到该去重复数据系统的一个段对象。在一个实例中,在此描述的系统可以在该重复数据系统中创建一个段对象时识别该段对象。另外或可替代地,这些系统可以通过识别该去重复数据系统中的一个段对象的新引用来识别该段对象。在一个实例中,在此描述的系统可以通过在该垃圾收集处理开始时监控该去重复数据系统的新数据段来识别该段对象。在此实例中,这些系统可以在该垃圾收集处理完成时终止监控该去重复数据系统。在一些实例中,在此描述的系统可以通过添加段对象的引用至一个锁定的段对象图来锁定段对象。在这些实例中,在此描述的系统基本上可以在垃圾收集处理完成后通过清除锁定的段对象图,删除锁定的段对象图,和/或从锁定的段对象图移除段对象的引用来解锁段对象。在一些实例中,本文描述的系统还可以1)识别在垃圾收集处理之前添加到该去重复数据系统的一个附加段对象,2)作为垃圾收集处理的一部分确定该附加段对象在该去重复数据系统中未被引用,然后3)基于该确定,移除该附加段对象。这些系统还可以1)识别在添加附加段对象之后添加到该去重复数据系统的一个附加段对象,2)确定该数据对象引用该附加段对象,然后3)恢复该附加段对象的另一个拷贝。在一些实例中,在此描述的系统还可以1)识别在该垃圾收集处理过程中添加到该去重复数据系统的至少一个数据对象,2)锁定该数据对象以防止该垃圾收集处理移除该数据对象,然后3)在垃圾收集处理之后解锁该数据对象。如以下更详细解释的,通过锁定在垃圾收集处理过程中添加的段对象,在此描述 的系统和方法可以防止不希望的段对象删除,这些段对象相应的数据对象已经添加到一个去重复数据系统中。此外,这些系统和方法可以恢复在那些边界情况下产生的不希望的删除操作,在这些情况中删除段对象是因为1)段对象是在垃圾收集处理开始之前就添加到去重复数据系统的,以及2)对应的数据对象直到垃圾收集处理已经开始之后才添加。因此,在此描述的系统和方法可以在很多情况下有效地防止在垃圾收集处理过程中不希望的删除操作,并且可能在相对较少的边界情况下执行更为经济的不希望的删除操作的恢复操作。来自上述任一个实施方案的多种特征可以根据在此说明的通用原理彼此相互结合使用。通过阅读以下的详细说明连同附图和权利要求,将会更加全面地理解这些以及其他的实施方案、特征和优点。附图简要说明附图展示了多个示例性实施方案并且是本说明书的一部分。这些附图与以下的说明共同展现并解释了本披露的不同原理。图I是一种在去重复数据系统中进行垃圾收集的示例性系统的方框图。图2是一种在去重复数据系统中进行垃圾收集的示例性系统的方框图。图3是一种在去重复数据系统中进行垃圾收集的示例性方法的流程图。图4是一种在去重复数据系统中进行垃圾收集的示例性系统的示例性时间轴的示意图。图5是一种在去重复数据系统中进行垃圾收集的示例性系统的方框图。图6是一种在去重复数据系统中进行垃圾收集的示例性方法的流程图。图7是一种在去重复数据系统中进行垃圾收集的示例性方法的流程图。图8是一个示例性计算系统的方框图,该计算系统能够实施在此说明和/或展示的这些实施方案中的一个或多个。图9是一种示例性计算网络的框图,该计算网络能够实施在此说明和/或展示的这些实施方案中的一个或多个。贯穿这些附图,相同的参考字符以及描述表示相似的但并不一定完全相同的要素。虽然在此说明的这些示例性实施方案可容许进行不同的修改以及多种替代形式,在此仍在附图中以举例的方式示出多个具体的实施方案并且对其进行了详细的说明。然而,在此说明的多个示例性实施方案无意限制于所披露的这些具体形式。相反,本披露涵盖了落入所附权利要求范围内的所有修改形式、等效形式、以及替代方案。示例性实施方案的详细说明如以下更为详细说明的,本披露总体上涉及在去重复数据系统中进行垃圾收集的多种系统及方法。在一个实例中,如以下更详细描述的,在此描述的各种系统可以通过以下方式完成此任务1)识别一个去重复数据系统,2)识别在该去重复数据系统的垃圾收集处理过程中添加到该去重复数据系统的至少一个段对象,3)锁定段对象以防止垃圾收集处理移除该段对象,然后4)在垃圾收集处理之后解锁该段对象。以下将参考

图1、2以及5提供在去重复数据系统中进行垃圾收集的多种示例性系统的详细描述。还将结合图3、4、6以及7提供相应的计算机实施的方法的详细说明。另外,将结合图8和9相应地提供一种示例性计算系统和网络体系结构的详细说明,它们能够实施在此说明的这些实施方案中的一个或多个。 图I是一种在去重复数据系统中进行垃圾收集的示例性系统100的方框图。如此图所示,示例性系统100可以包括用于执行一项或多项任务的一个或多个模块102。例如,如以下更详细解释的,示例性系统100可以包括一个识别模块104,该模块被编程以便识别在去重复数据系统的垃圾收集处理过程中添加到去重复数据系统的至少一个段对象。示例性系统100还可以包括一个锁定模块106,该模块被编程以锁定段对象,从而防止垃圾收集处理移除该段对象。另外,如以下更详细描述的,示例性系统100可以包括一个解锁模块108,该模块被编程以便在完成垃圾收集处理后解锁该段对象。尽管被展示为多个分离的元素,图I中的模块102中的一个或多个可以代表一个单一模块或应用程序中的多个部分。在某些实施方案中,图I中模块102的一个或多个可以代表一个或多个软件应用程序或程序,这些软件应用程序或程序在由计算装置执行时可以使该计算装置执行一项或多项任务。例如,如以下更为详细解释的,模块102中的一个或多个可以代表在一个或多个计算装置上存储并被配置为在其上运行的多个软件模块,如图2所示的这些装置(例如,计算系统202)、图8中的计算系统810、和/或图9中的示例性网络体系结构900的多个部分。图I中模块102的一个或多个还可以代表被配置用于执行一项或多项任务的一个或多个专用计算机的全部或多个部分。如图I所示,示例性系统100还可以包括去重复数据系统120。去重复数据系统120可以代表一个单一存储系统或计算装置或者多个存储系统或多个计算装置的多个部分。例如,去重复数据系统120可以代表图2中计算系统202、图8中计算系统的一部分、和/或图9中示例性网络体系结构900的多个部分。可替代地,图I中的去重复数据系统120可以代表能够由计算装置访问的一个或多个物理上分离的装置,例如图8中的计算系统810和/或图9中示例性网络体系结构900的多个部分。图I中的示例性系统100可以采用各种方式进行部署。例如,示例性系统100的所有或一部分可以代表图2所示的示例性系统200的多个部分。如图2所示,系统200可以包括具有去重复数据系统120的一个计算系统202。在一个实施方案中,如以下更详细描述的,图I的模块102可以对计算系统202进行编程以便1)识别一个去重复数据系统,2)识别在该去重复数据系统的垃圾收集处理过程中添加到该去重复数据系统的至少一个段对象,3)锁定段对象以防止垃圾收集处理移除该段对象,然后4)在垃圾收集处理之后解锁该段对象。计算系统202通常代表能够读取计算机可执行指令的任意类型或形式的计算装置。计算系统202的实例包括(但不限于)膝上型计算机、桌上型计算机、服务器、蜂窝电话、个人数字助理(PDA)、多媒体播放器、嵌入式系统、以上各项中的一项或多项的组合、图8中示例性计算系统810、或任意其他适当的计算装置。图3是一种在去重复数据系统中进行垃圾收集的示例性计算机实现方法300的流程图。图3中所示的步骤可以由任何适当的计算机可执行代码和/或计算系统来执行。在一些实施方案中,图3所示的步骤可以由图I中系统100和/或图2中系统200的组件中的一个或多个来执行。如图3所示,在步骤302在此描述的系统的一个或多个可以识别去重复数据系统。例如,在步骤302识别模块104可以作为图2的计算系统202的一部分来识别去重复数据 系统120。本文所用的短语“去重复数据系统”通常指代仅通过存储数据(例如,一个段对象)的一个单一实例从而有可能多次引用每一个数据实例来减少冗余数据的存储系统。去重复数据系统的实例可以包括SYMANTEC的NETBACKUP PUREDISK0如以下更详细描述的,数据的一个单一实例可以由该去重复数据系统中的一个单一数据对象(例如文件)或多个数据对象来引用。识别模块104可以采用任意适合的方式来执行步骤302。在一个实例中,识别模块104可以通过读取与去重复数据系统相关联的配置文件来识别去重复数据系统。另外或可替代地,识别模块104可以通过识别(例如拦截、接收或恢复)向去重复数据系统添加新的段对象的尝试来识别去重复数据系统。在一些环境中,识别模块104可以是去重复数据系统的一个延伸部分和/或一个组件,并且可以仅通过它所执行的环境来隐含地识别去重复系统。在步骤304,在此描述的系统的一个或多个可以识别在去重复数据系统的垃圾收集处理过程中添加到去重复数据系统的至少一个段对象。例如,在步骤304识别模块104可以作为图2的计算系统202的一部分来识别在去重复数据系统120的垃圾收集处理过程中添加到去重复数据系统120的至少一个段对象。图4展示了被添加到去重复数据系统数据对象410、420、以及430的一个示例性时间轴400 (这些数据对象前面是它们各自的段对象)。在该实例中,识别模块104可以识别在垃圾收集处理过程450中添加到去重复数据系统的段对象432。如本文所用,术语“段对象”可以指代数据段、数据块、或用于数据去重复的任意其他适合的数据单元。同样,术语“数据对象”可以指代任意对象(例如文件),该对象可以包括和/或指代一个或多个段对象。如本文所用,术语“垃圾收集处理”可以指代通过从去重复数据系统中移除和/或帮助移除未引用的数据段来删除未引用的数据段和/或恢复存储空间的处理的任意部分。在一些实例中,“垃圾收集处理”可以包括标记一扫描处理和/或引用一计数处理的多个部分。识别模块104可以在各种情况下执行步骤304。例如,识别模块104可以通过识别去重复数据系统内的段对象的创建来识别段对象(例如被添加、拷贝和/或上传到去重复数据系统的数据对象所引用的段对象)。识别模块104可以采用任意适合的方式识别段对象的创建。例如,识别模块104可以从识别段对象创建的去重复数据系统中接收通信。另外或可替代地,识别模块104可以包括一个过滤驱动器的一部分,可以通过该过滤驱动器创建段对象的指令。在另一个情况中,识别模块104可以通过识别对去重复数据系统中的段对象的新引用来识 别段对象。例如,段对象最初可以由一个单一数据对象来引用。然后识别模块104可以通过一个附加数据对象来识别对段对象的新引用。如果该初始引用随后被移除(例如,最初引用段对象的单一数据对象被删除了),并且如果垃圾收集处理观察到该初始引用在未注意到该新引用时被移除(例如,因为在附加数据对象引用段对象之间垃圾收集处理分析了该附加数据对象),那么如以下更详细描述的,在此描述的系统可以通过识别段对象之后锁定段对象来防止段对象被错误地删除。返回到步骤304,识别模块104可以采用任意适合的形式识别垃圾收集处理过程中添加的段对象。例如,识别模块104可以通过一旦垃圾收集处理开始时就监控去重复数据系统的新数据段来识别段对象。如前所提及,“垃圾收集处理”可以包括用于移除已解除引用的数据段的处理的任意部分。因此,识别模块104可以在不同时刻开始监控。例如,识别模块104可以在去重复数据系统加载一个垃圾收集后台程序时开始监控。另外或可替代地,识别模块104可以直接在标记一扫描处理的标记阶段之前开始监控。在一些实施方案中,一旦完成了垃圾收集处理,识别模块104还可以终止监控去重复数据系统的新数据段。例如,一旦垃圾收集后台程序结束时,识别模块104可以终止监控新数据段。另外或可替代地,在标记一扫描处理的扫描阶段之后,识别模块104可以直接终止监控。在一些实例中,当进行垃圾收集处理时,识别模块104可以缩小监控的范围。例如,如果将垃圾收集处理配置用于逐个区域地扫描未引用的段对象,识别模块104可以监控只添加到仍被扫描的那些区域上的新数据段。返回到图3,在步骤306,在此描述的系统的一个或多个可以锁定段对象以防止垃圾收集处理移除该段对象。例如,在步骤306,锁定模块106可以作为图2中计算系统202的一部分来锁定在去重复数据系统120的垃圾收集处理过程中添加到去重复数据系统120的段对象。在另一个实例中,锁定模块106可以锁定图4中的段对象432以防止垃圾收集处理450移除段对象432。锁定模块106可以采用任意适合的方式执行步骤306。例如,锁定模块106可以通过改变段对象的权限来锁定段对象,这样垃圾收集处理就不能删除段对象。另外或可替代地,锁定模块106可以包括过滤驱动器的一部分并且可以拦截移除段对象的任意企图。在一些实例中,锁定模块106可以指令垃圾收集处理忽略段对象。在一些实例中,锁定模块106可以通过向锁定的段对象图添加段对象的引用来锁定段对象。锁定的段对象图可以包括用于识别锁定的段对象的任意适合的数据结构。例如,锁定的段对象图可以包括位图。以图5为例,示例性系统500可以包括一个锁定的段对象图506。在此实例中,锁定模块106可以写到锁定的段对象图506上以添加段对象的引用。如以下更为详细讨论的,示例性系统500还可以包括垃圾收集模块510,该模块可以参考锁定的段对象图506,以便识别可以从去重复数据系统120删除的明显未引用的段对象。通过锁定段对象,锁定模块106可以在段对象明显未引用时防止垃圾收集处理误删除段对象,因为引用段对象的数据对象在段对象之后被添加到的去重复数据系统上。以图4为例,数据对象430可以引用段对象432、434和436。在此实例中,当向去重复数据系统添加数据对象时,段对象432、434和436可以位于数据对象430之前,这样当数据对象430添加到去重复系统时,数据对象430可以包括段对象432、434和436的正确引用。当段对象432、434和436添加到去重复数据系统时,锁定模块106可以锁定它们每一个。因此,如果垃圾收集处理450检查那些负责数据对象430的段对象中的任意一个时,垃圾收集处理450可以保持这些段对象完整,尽管没有观察到数据对象430引用了这些段对象。返回到图3,在步骤308,在此描述的系统的一个或多个可以在垃圾收集处理之后对段对象进行解锁。例如,在步骤308,解锁模块108可以作为图2中计算系统202的一部分 对去重复数据系统120的垃圾收集处理过程中添加到去重复数据系统120的段对象进行解锁。在另一个实例中,解锁模块108可以在垃圾收集处理450之后(例如在正常状态440 (b)过程中)解锁图4中的段对象432。如上所述,锁定模块106可以采用各种途径锁定段对象。因此,解锁模块108也可以采用各种途径解锁段对象。例如,解锁模块108可以通过改变段对象的权限来解锁段对象,这样垃圾收集处理可以删除段对象(例如,在下一次垃圾收集处理运行时)。另外或可替代地,锁定模块106可以包括过滤驱动器的一部分,该过滤驱动器被设计用于拦截移除段对象的任意企图,并且解锁模块108可以卸载锁定模块106。在一些实施方案中,解锁模块108可以清除和/或逆转锁定模块106发送到垃圾收集处理的任意指令。如前所述,在一些实例中,锁定模块106可以通过向锁定的段对象图添加段对象的引用来锁定段对象。解锁模块108因此可以通过作用于锁定的段对象图来解锁段对象。例如,解锁模块108可以清除锁定的段对象图。在此实例中,锁定的段对象图可以是空的,直到下一次垃圾收集处理启动时。在另一个实例中,解锁模块108可以删除锁定的段对象图。例如,解锁模块108删除包括锁定的段对象图的文件和/或释放用于锁定的段对象图的内存。在此实例中,当垃圾收集处理下一次启动时,锁定模块106随后可以再次创建锁定的段对象图。另外或可替代地,解锁模块108可以从锁定的段对象图中移除段对象的引用。例如,解锁模块108可以清除对应于段对象的位图中的位。以图5为例,解锁模块108可以清除、删除和/或修改锁定的段对象图506,以便解锁段对象。一旦完成了步骤308,图3的示例性方法300可以结束。图6是一种在去重复数据系统中进行垃圾收集的示例性计算机实施方法600的流程图。图6中所示的步骤可以由任何适当的计算机可执行代码和/或计算系统来执行。在一些实施方案中,图6中所示的步骤可以通过图I中系统100、图2中系统200和/或图5中系统500的多个组件的一个或多个来执行。如图6所示,在步骤602,在此描述的系统的一个或多个可以识别垃圾收集处理之前添加到去重复数据系统的附加段对象。例如,在步骤602,垃圾收集模块510可以作为图5中系统500的一部分识别垃圾收集处理之前添加到去重复数据系统120的附加段对象。垃圾收集模块510可以采用任意适合的方式执行步骤602。例如,垃圾收集模块510可以识别标记一扫描处理的扫描操作过程中的附加段对象。另外或可替代地,垃圾收集模块510可以识别附加段对象,同时评估段对象的引用次数。例如,如图4所示,垃圾收集模块510可以识别在垃圾收集处理450之前的正常状态440 (a)中的段对象412。
返回到图6,在步骤604,在此描述的系统的一个或多个作为垃圾收集处理的一部分可以确定附加段对象在去重复数据系统中未被引用。例如,在步骤604,垃圾收集模块510可以作为图5中系统500的一部分来确定附加段对象在去重复数据系统120中未被引用。垃圾收集模块510可以确定未采用任何适合的方式引用附加数据段。例如,垃圾收集模块510可以确定附加数据段在标记一扫描操作中未被标记。另外或可替代地,垃圾收集模块510可以确定附加数据段的引用次数为零。在一些实例中,垃圾收集模块510可以观察到当引用附加数据段时附加数据段并未列出任何数据对象。以图4为例,段对象412可以证明在正常状态440(a)中数据对象没用被引用,因为数据对象410 (例如,引用段对象412的唯一数据对象)也许没有添加到去重复数据系统,直到垃圾收集处理450已经进行。因此,垃圾收集模块510可以确定段对象412在去重复数据系统中未被引用,即便对数据对象410 (它引用段对象412)的添加仍待定。`
返回图6,在步骤606,在此描述的系统的一个或多个可以从去重复数据系统中移除附加段对象。例如,在步骤606,垃圾收集模块510可以作为图5中系统500的一部分从去重复数据系统120中移除附加段对象。作为另外一个实例,垃圾收集模块510可以从去重复数据系统中移除图4中的段对象412。垃圾收集模块510可以采用任意适合的方式执行步骤606。例如,垃圾收集模块510可以从存储装置中删除附加段对象。返回参考图4,在一些实例中,垃圾收集模块510可以从去重复数据系统中提前移除段对象412和/或414 (例如,如果垃圾收集处理450在删除段对象412和/或414之前不能识别数据对象410)。然而,如以下更为详细描述的,在一些实例中在此描述的系统随后可以恢复这些提前移除的段对象412和/或414。当完成步骤606时,图6中的示例性方法600可以结束。图7是一种在去重复数据系统中进行垃圾收集的示例性计算机实施方法700的流程图。图7中所示的步骤可以由任何适当的计算机可执行代码和/或计算系统来执行。在一些实施方案中,图6中所示的步骤可以通过图I中系统100、图2中系统200和/或图5中系统500的组件中的一个或多个来执行。如图7所示,在步骤702,在此描述的系统的一个或多个可以识别在添加了附加数据对象之后添加到去重复数据系统的数据对象。例如,在步骤702,恢复模块512可以作为图5中系统500的一部分识别添加了附加段对象之后添加到去重复数据系统120的数据对象。以图4为例,恢复模块512可以识别数据对象410。恢复模块512可以采用任意适合的方式执行步骤702。例如,恢复模块512可以包括过滤驱动器的一部分,该驱动器观测数据对象添加到去重复数据系统。另外或可替代地,恢复模块512可以通过从识别数据对象的去重复数据系统接收信息来识别数据对象。在步骤704在此描述的系统的一个或多个可以确定数据对象引用了附件段对象。例如,在步骤704,恢复模块512可以作为图5中系统500的一部分来确定数据对象引用了从去重复数据系统移除的附加段对象。以图4为例,恢复模块512可以确定数据对象410引用了段对象412 (和/或例如段对象414)。恢复模块512可以采用任意适合的方式执行步骤704。例如,恢复模块512可以通过从识别附加段对象(它由数据对象引用)的去重复数据系统接收信息来确定数据对象引用了附加段对象。另外或可替代地,恢复模块512可以通过试图验证数据对象是完整的并且通过发现已经从去重复数据系统移除了附加段对象来确定数据对象引用了附加段对象。在步骤706,在此描述的系统的一个或多个可以恢复附加段对象的另一个拷贝。例如,在步骤706,恢复模块512可以作为图5中系统500的一部分恢复从去重复数据系统120移除的附加段对象的另一个拷贝。以图4为例,恢复模块512可以恢复段对象412(和/或例如段对象414)的另一个拷贝。恢复模块512可以采用任意适合的方式执行步骤706。例如,恢复模块512可以从备份中恢复附加段对象的另一个拷贝。另外或可替代地,恢复模块512可以向一个进程发送一条错误消息,该进程试图将数据对象添加到去重复数据系统(例如,从而导致该进程另一次试图发送数据对象和/或数据对象引用的段对象)。在一些实例中,恢复模块512可以恢复和/或删除附加段对象(例如,从删除堆阵)。一旦完成了步骤706,图7的示例性方法700可以结束。 在一些实施方案中,在此描述的系统和方法还可以锁定垃圾收集处理过程中添加到去重复数据系统的数据对象。例如,在此描述的系统和方法可以1)识别垃圾收集处理过程中添加到去重复数据系统的至少一个数据对象,2)锁定该数据对象以防止垃圾收集处理移除该数据对象,然后3)在垃圾收集处理之后解锁该数据对象。因为去重复数据系统中数据对象可以由多个数据对象集(例如多个备份)来引用,在垃圾收集处理过程中锁定数据对象可以防止误删除数据对象。例如,一个第一备份可以在垃圾收集处理过程中引用数据对象,一个第二备份可以在垃圾收集处理过程中解除数据对象的引用,并且垃圾收集处理可以负责数据对象的引用解除,无需负责数据对象的引用。在此描述的系统和方法可以采用任意适合的方式执行上述步骤。例如,在此描述的系统和方法可以利用先前描述的与识别、锁定和解锁数据段有关的任意适合方法来执行上述步骤。例如,识别模块104可以通过以下方式识别垃圾收集操作过程中添加到去重复数据系统的数据对象1)识别去重复数据系统中的数据对象的创建,和/或2)识别去重复数据系统中的数据对象的新引用(例如通过一个备份)。在一些实例中,可以对识别模块104进行编程,以便通过在垃圾收集处理开始时监控去重复数据系统的新数据对象来识别数据对象。还可以对识别模块104进行编程,以便在垃圾收集处理完成时终止监控去重复数据系统的新数据对象。识别模块104可以采用任意适合的方式(包括先前描述的与识别段对象有关的技术)执行这些任务中的任意一个。锁定模块106可以被编程以便通过向锁定的数据对象图添加数据对象的引用来锁定数据对象。在一些实例中,锁定的数据对象图可以包括锁定的段对象图的至少一部分(例如,锁定模块106可以对数据对象和段对象使用一个图)。锁定模块106可以采用任意适合的方式执行该任务,包括先前描述的与锁定段对象有关的技术。解锁模块108可以被编程以便在垃圾收集处理之后通过以下方式解锁数据对象I)清除锁定的数据对象图,2)删除锁定的数据对象图,和/或3)从锁定的数据对象图移除数据对象的引用。解锁模块108可以采用任意合适的方式执行这些任务中的任意一个,包括先前描述的与解锁段对象有关的技术。
如上所述,通过锁定垃圾收集处理过程中添加的段对象(例如,像图4中的段对象432,434和436),在此描述的系统和方法可以防止不希望地删除段对象,这些段对象对应的数据对象(例如,像图4中的数据对象430)已经添加到去重复数据系统中。此外,这些系统和方法可以恢复在那些边界情况下产生的不希望的删除操作,在这些情况中删除段对象(例如,像图4中的段对象412和414)是因为I)段对象是在垃圾收集处理开始之前就添加到去重复数据系统的,以及2)对应的数据对象(例如,像图4中的数据对象410)直到垃圾收集处理已经开始之后才添加。因此,在此描述的系统和方法可以在很多情况下有效地防止在垃圾收集处理过程中不希望的删除操作,并且可能在相对较少的边界情况下执行更为经济的不希望的删除操作的恢复操作。在此描述的不同系统可以采用各种途径进行部署。例如,图I中示例性系统100的全部或一部分可以表示云计算或基于网络的环境的多个部分。云计算环境可以通过互联网提供不同的服务和应用程序。这些基于云的服务(例如,软件即服务、平台即服务、基础设施即服务等等)可以通过网络浏览器或其他的远程接口进行访问。在此所述的不同功能可以通过远程桌面环境或任何其他的基于云的计算环境来提供。图8是一个示例性计算系统810的框图,该系统能够实施在此说明和/或展示的·实施方案中的一个或多个。计算系统810广义上代表能够执行计算机可读指令的任何单处理器或多处理器的计算装置或系统。计算系统810的实例包括但不限于工作站、膝上型计算机、客户侧终端、服务器、分布式计算系统、手持装置、或任何其他计算系统或装置。在其最基本的配置中,计算系统810可以包括至少一个处理器814以及一个系统内存816。处理器814总体上代表能够处理数据或解释并执行多个指令的任何类型或形式的处理单元。在某些实施方案中,处理器814可以从一个软件应用程序或模块中接收指令。这些指令可以使处理器814执行在此所说明和/或展示的示例性实施方案中的一个或多个的功能。例如,处理器814可以单独地或与其他元件相结合来执行和/或作为一种手段来执行在此披露的识别、监控、终止、添加、清除、删除、移除、确定、和/或恢复步骤中的一个或多个。处理器814还可以执行和/或作为一种手段来执行在此说明和/或展示的任何其他步骤、方法、或过程。系统内存816总体上代表能够存储数据和/或其他计算机可读指令的任何类型或形式的易失性或非易失性存储装置或媒质。系统内存816的实例包括(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、闪存、或任何其他适当的存储装置。尽管未作要求,在某些实施方案中计算系统810可以既包括一个易失性内存单元(例如像系统内存816)又包括一个非易失性存储装置(例如像以下详细说明的主存储装置832)。在一个实例中,图I模块102中的一个或多个可以载入到系统内存816中。在某些实施方案中,除了处理器814和系统内存816外,示例性计算系统810还可以包括一个或多个组件或元件。例如,如图8所示,计算系统810可以包括内存控制器818、输入/输出(I/O)控制器820、以及通信接口 822,它们中的每一个可以通过通信基础设施812相互连接。通信基础设施812总体上代表能够帮助在计算装置的一个或多个组件之间的通信的任意类型或形式的基础设施。通信基础设施812的实例包括但不限于通信总线(例如ISA、PCI、PCIe、或类似总线)和网络。内存控制器818总体上代表在计算系统810的一个或多个组件之间操作内存或数据或者控制通信的任意类型或形式的装置。例如,在某些实施方案中,内存控制器818可以通过通信基础设施812控制处理器814、系统内存816以及I/O控制器820之间的通信。在某些实施方案中,内存控制器818可以独立地或与其他元件相结合地执行和/或作为一种手段执行在此描述和/或展示的多个步骤或特征中的一个或多个,例如识别、监控、终止、添加、清除、删除、移除、确定、和/或恢复。I/O控制器820总体上代表能够协调和/或控制计算装置的输入和输出功能的任何类型或形式的模块。例如,在某些实施方案中,I/o控制器820可以控制或协助计算系统810的一个或多个元件之间的数据传输,例如处理器814、系统内存816、通信接口 822、显示适配器826、输入接口 830以及存储器接口 834。例如,I/O控制器820可以独立地或结合其他元件执行和/或作为一种手段执行在此描述的识别、监控、终止、添加、清除、删除、移除、确定、和/或恢复步骤中的一个或多个。I/O控制器820还可用于执行和/或作为一种手段用于执行本披露中提出的其他步骤和特征。
通信接口 822广义地代表能够协助示例性计算系统810与一个或多个附加装置之间进行通信的任何类型或形式的通信装置或适配器。例如,在某些实施方案中,通信接口822可以协助计算系统810与包括多个附加计算系统的私有或公共网络之间的通信。通信接口 822的实例包括但不限于有线网络接口(例如网络接口卡)、无线网络接口(例如无线网络接口卡)、调制解调器、以及任何其他适当的接口。在至少一个实施方案中,通信接口 822可通过到网络(如互联网)的直接链接来提供到一台远程服务器的直接连接。通信接口 822还可以间接地提供这种连接,例如通过局域网(如以太网)、个人局域网、电话或缆线网、蜂窝电话连接、卫星数据连接、或任何其他适当的连接。在某些实施方案中,通信接口 822还可以代表主机适配器,该主机适配器被配置为用于通过外部总线或通信信道协助计算系统810与一个或多个附加网络或存储装置之间的通信。主机适配器的实例包括但不限于SCSI主机适配器、USB主机适配器、IEEE 1394主机适配器、SATA和eSATA主机适配器、ATA和PATA主机适配器、光纤通道接口适配器、以太网适配器等。通信接口 822还可以允许计算系统810参与分布式计算或远程计算。例如,通信接口 822可以从远程装置接收指令或向其发送指令用于执行。在某些实施方案中,通信接口 822可以独立地或与其他元件相结合地执行和/或作为一种手段执行在此披露的识别、监控、终止、添加、清除、删除、移除、确定、和/或恢复步骤中的一个或多个。通信接口822还可以用于执行和/或作为一种手段用于执行本披露中提出的其他步骤和特征。如图8所示,计算系统810还可以包括通过显示适配器826连接至通信基础设施812的至少一个显示装置824。显示装置824总体上代表能够可视地呈现显示适配器826所转发的信息的任意类型或形式的装置。相似地,显示适配器826总体上代表任意类型或形式的装置,这些装置被配置用于从通信基础设施812 (或从本领域已知的帧缓冲器)转发图形、文本以及其他数据以便显示在显示装置824上。如图8所示,示例性计算系统810还可以包括通过输入接口 830连接至通信基础设施812的至少一个输入装置828。输入装置828总体上代表能够向示例性计算系统810提供计算机或人员生成的输入的任意类型或形式的输入装置。输入装置828的实例包括但不限于键盘、指向装置、语音识别装置或任意其他输入装置。在至少一个实施方案中,输入装置828可以独立地或结合其他元件执行和/或作为一种手段执行在此披露的识别、监控、终止、添加、清除、删除、移除、确定、和/或恢复步骤中的一个或多个。输入装置828还可以用于执行和/或作为一种手段来执行本披露中提出的其他步骤和特征。如图8所示,示例性计算系统810还可以包括通过存储接口 834连接至通信基础设施812的一个主存储装置832和一个备份存储装置833。存储装置832和833总体上代表能够存储数据和/或其他计算机可读指令的任意类型或形式的存储装置或媒质。例如,存储装置832与833可以是磁盘驱动器(例如,所谓的硬盘驱动器)、软盘驱动器、磁带驱动器、光盘驱动器、闪存驱动器、或者类似装置。存储接口 834总体上代表用于在存储装置832和833以及计算系统810的其他组件之间传输数据的任意类型或形式的接口或装置。在一个实例中,图I的去重复数据系统120可以存储在主存储装置832中。在某些实施方案中,存储装置832和833可以被配置为用于读取自和/或写入到一个可移动存储单元,该可移动存储单元被配置用于存储计算机软件、数据、或其他计算机可读信息。适合的可移动存储单元的实例包括但不限于软盘、磁带、光盘、闪存装置如等等。存储装置832和833还可以包括其他类似的结构或装置,以允许计算机软件、数据或其他计算机可读指令加载到计算系统810中。例如,存储装置832和833可以被配置用于读或写 软件、数据或其他计算机可读信息。存储装置832和833还可以作为计算系统810的一部分或可以是通过其他接口系统访问的一个独立装置。在某些实施方案中,存储装置832和833可以用于例如独立地或结合其他元件执行和/或作为一种手段执行在此披露的识别、监控、终止、添加、清除、删除、移除、确定、和/或恢复步骤中的一个或多个。存储装置832和833还可以用于执行和/或作为一种手段用于执行本披露提出的其他步骤和特征。很多其他装置或子系统可以连接至计算系统810上。相反地,图8中所示的所有组件和装置无需为了实施在此描述和/或展示的实施方案而存在。以上提到的这些装置和子系统还能够以不同于图8中所示的方式进行相互连接。计算系统810还可以使用任何数目的软件、固件、和/或硬件的配置。例如,在此披露的示例性实施方案中的一个或多个可以被编码为一种计算机可读媒质上的计算机程序(还称为计算机软件、软件应用程序、计算机可读指令、或计算机控制逻辑)。短语“计算机可读媒质”总体上是指能够存储或携带计算机可读指令的任何形式的装置、载体、或媒质。计算机可读媒质的实例包括但不限于传输型媒质,如载波,以及物理媒质,如磁性存储媒质(例如,硬盘驱动器和软盘驱动器)、光存储媒质(例如,CD-ROM或DVD-ROM)、电子存储媒质(例如,固态驱动器和闪存媒质)、以及其他分布式系统。包含计算机程序的计算机可读媒质可以载入到计算系统810中。存储在计算机可读媒质上的所有或部分计算机程序然后可以存储在系统内存816和/或存储装置832和833的不同部分上。当由处理器814执行时,载入到计算系统810中的计算机程序可以使处理器814执行和/或作为一种手段执行在此描述和/或展示的示例性实施方案中的一个或多个的功能。另外地或可替代地,在此所说明和/或展示的示例性实施方案中的一个或多个可以在固件和/或硬件中实施。例如,计算系统810可被配置用作一种专用集成电路(ASIC),该专用集成电路被适配为用于实施在此所披露的这些示例性实施方案中的一个或多个。图9是示例性网络体系结构900的方框图,其中客户端系统910、920和930以及服务器940和945可以连接至网络950。客户端系统910、920和930总体上代表任意类型或形式的计算装置或系统,例如图8中的示例性计算系统810。在一个实例中,客户系统910可以包括图I的系统100。类似地,服务器940和945总体上代表被配置为用于提供不同的数据库服务和/或运行某种软件应用程序的计算装置或系统,例如应用程序服务器或数据库服务器。网络950总体上代表任何电信或计算机网络,例如,它包括内部网、广域网(WAN)、局域网(LAN)、个人区域网(PAN)、或互联网。如图9所示,一个或多个存储装置960(1)-(N)可以直接附接至服务器940。类似地,一个或多个存储装置970 (I)-(N)可以直接附接至服务器945。存储装置960 (I) - (N)和存储装置970 (I)-(N)总体上代表能够存储数据和/或其他计算机可读指令的任意类型或形式的存储装置或媒质。在某些实施方案中,存储装置960 (I)-(N)和存储装置 970 (I)-(N)可代表被配置为用于使用不同协议(例如NFS、SMB、或CIFS)来与服务器940和945进行通信的网络附联存储(NAS )装置。服务器940和945还可以连接至存储区域网络(SAN)结构980。SAN结构980总体上代表能够协助多个存储装置之间的通信的任意类型或形式的计算机网络或架构。SAN结构980可以协助服务器940和945与多个存储装置990 (I)-(N)和/或一个智能存储器阵列995之间的通信。SAN结构980还可以通过网络950和服务器940和945协助客户端系统910、920和930与存储装置990 (I)-(N)和/或智能存储器阵列995之间的通信,其方式为装置990 (I)-(N)和阵列995对客户端系统910、920和930呈现为本地附接的装置。与存储装置960 (I)-(N)和存储装置970 (I)-(N) —样,存储装置990 (I) - (N)和智能存储阵列995总体上代表能够存储数据和/或其他计算机可读指令的任意类型或形式的存储装置或媒质。在某些实施方案中,参考图8的示例性计算系统810,通信接口(例如,图8中的通信接口 822)可用于在每一个客户端系统910、920和930以及网络950之间提供连接性。客户端系统910、920和930能够利用例如网络浏览器或其他客户端软件来访问服务器940或945上的信息。这种软件可以允许客户端系统910、920和930访问由服务器940、服务器945、存储装置960 (I) - (N)、存储装置970 (I) - (N)、存储装置990 (I) - (N)或智能存储器阵列995托管的数据。尽管图9描绘了使用网络(例如互联网)交换数据,但在此描述和/或展示的实施方案不限于互联网或任意具体的基于网络的环境。在至少一个实施方案中,在此披露的示例性实施方案中的一个或多个的全部或一部分可被编码为一种计算机程序并且加载到服务器940、服务器945、存储装置960 (I) - (N)、存储装置970 (I) - (N)、存储装置990 (I) - (N)、智能存储阵列995、或其任意组合中并由其执行。在此披露的多个示例性实施方案的一个或多个的全部或一部分还可以被编码为计算机程序,存储在服务器940中,由服务器945运行,并在网络950上分发给客户端系统910、920和930。因此,网络体系架构900可以独立地或与其他元件相结合地执行和/或作为一种手段执行在此披露的识别、监控、终止、添加、清除、删除、移除、确定、和/或恢复步骤中的一个或多个。网络体系结构900还可以用于执行和/或作为一种手段来执行本披露中提出的其他步骤和特征。如以上所述,计算系统810和/或网络体系结构900的一个或者多个组件可以单独地或与其他元件相结合地执行和/或作为一种手段来执行一种用于在去重复数据系统中进行垃圾收集的示例性方法的一个或多个步骤。虽然以上披露使用了多个具体的框图、流程图、以及实例阐明了不同的实施方案,在此说明和/或展示的每个框图部件、流程图步骤、操作、和/或部件都可以单独地和/或共同地使用一个大范围的硬件、软件、或者固件(或者它们的任何组合)配置来实施。另外,在其他部件之中所包括的任何部件的披露都应该看作本质上是示例性的,因为可以实施许多其他的架构来达到同样的功能。在此说明和/或展示的进程的参数以及步骤的顺序仅仅是以举例的方式给出并且可以按希望来更改。例如,虽然在此展示和/或说明的这些步骤可以按照一个具体的顺序来示出或讨论,但这些步骤并非必须按照所展示或者所讨论的顺序来执行。在此说明和/或展示的不同的示例性方法还可以省略在此说明或展示的一个或者多个步骤或者还可以包括除所披露的那些之外的额外步骤。
虽然不同的实施方案在此已经在全功能性计算系统的背景下进行了说明和/或展示,这些示例性实施方案中的一个或者多个能够以多种形式作为一个程序产品来分发,而无论实际用于进行该分发的计算机可读媒质的具体形式如何。在此披露的这些实施方案还可以通过使用执行一些特定任务的软件模块来实施。这些软件模块可以包括脚本、成批文件、或者其他可执行文件,它们可以存储在一种计算机可读的存储媒质上或者在一种计算系统中。在一些实施方案中,这些软件模块可以将一个计算系统配置用于实施在此披露的一个或者多个示例性的实施方案。另外,在此所述的这些模块中的一个或多个可以将数据、物理装置、和/或物理装置的表示从一种形式转换到另一种形式。例如,在此描述的多个模块的一个或多个可以将计算系统转换为用于去重复数据系统的垃圾收集的高效系统。已经提供了以上说明用于使本领域的其他普通技术人员能够最好地使用在此披露的这些示例性实施方案的不同方面。该示例性说明并非旨在是穷尽性的或者被限制在所披露的任何准确的形式上。许多修改与变更都是可能的而不背离本披露的精神与范围。应该认为在此披露的这些实施方案在所有方面都是展示性的而非限制性的。应该参照所附权利要求及其等效物来确定本披露的范围。除非另外说明,如在本说明书与权利要求中所使用的,术语“一种”或“一个”将被解释为“至少一个”的意思。此外,为便于使用,如在本说明书以及权利要求中所使用的文字“包含”和“具有”是可以互换的并且具有与文字“包括”相同的含义。
权利要求
1.一种在去重复数据系统中进行垃圾收集的计算机实施的方法,该方法的至少一部分由包括至少一个处理器的计算装置来执行的,该方法包括 识别一个去重复数据系统; 识别在该去重复数据系统的垃圾收集处理过程中添加到该去重复数据系统的至少一个段对象; 锁定该段对象以防止该垃圾收集处理移除该段对象; 在该垃圾收集处理之后解锁该段对象。
2.如权利要求I所述的计算机实施方法,其中锁定该段对象包括向一个锁定的段对象图添加该段对象的一个引用。
3.如权利要求2所述的计算机实施方法,其中在该垃圾收集处理之后解锁该段对象包括以下操作的至少一个 清除该锁定的段对象图; 删除该锁定的段对象图; 从该锁定的段对象图移除该段对象的引用。
4.如权利要求I所述的计算机实施方法,其中识别添加到该去重复数据系统的段对象包括以下操作中的至少一个 识别该去重复数据系统中的该段对象的创建; 识别该去重复数据系统中的该段对象的一个新引用。
5.如权利要求I所述的计算机实施方法,进一步包括 识别在垃圾收集处理之前添加到该去重复数据系统的一个附加段对象; 作为该垃圾收集处理的一部分,确定该附加段对象在该去重复数据系统中未被引用; 基于该确定移除该附加段对象。
6.如权利要求5所述的计算机实施方法,进一步包括 识别添加该附加段对象之后添加到该去重复数据系统的一个数据对象; 确定该数据对象引用该附加段对象; 恢复该附加段对象的另一个拷贝。
7.如权利要求I所述的计算机实施方法,其中识别该垃圾收集处理过程中添加到该去重复数据系统的段对象包括当该垃圾收集处理开始时监控该去重复数据系统的新数据段。
8.如权利要求7所述的计算机实施方法,进一步包括当该垃圾收集处理完成时终止监控该去重复数据系统的新数据段。
9.如权利要求I所述的计算机实施方法,进一步包括 识别该垃圾收集处理过程中添加到该去重复数据系统的至少一个数据对象; 锁定该数据对象以防止该垃圾收集处理移除该数据对象; 在垃圾收集处理之后解锁该数据对象。
10.一种在去重复数据系统中进行垃圾收集的系统,该系统包括 一个识别模块,该模块被编程用于 识别一个去重复数据系统; 识别该去重复数据系统的一个垃圾收集处理过程中添加到该去重复数据系统的至少一个段对象;一个锁定模块,该模块被编程来锁定该段对象以防止该垃圾收集处理移除该段对象; 一个解锁模块,该模块被编程以便在垃圾收集处理之后解锁该段对象; 至少一个处理器,该处理器被配置用于执行该识别模块、保存模块、供应模块以及删除模块。
11.如权利要求10所述的系统,其中该锁定模块被编程以通过向一个锁定的段对象图添加该段对象的一个弓I用来锁定该段对象。
12.如权利要求11所述的系统,其中该锁定模块被编程以便在垃圾收集处理之后通过以下操作中的至少一个来解锁该段对象 清除该锁定的段对象图; 删除该锁定的段对象图; 从该锁定的段对象图移除该段对象的引用。
13.如权利要求10所述的系统,其中该识别模块被编程用于通过以下操作中的至少一个来识别添加到该去重复数据系统的段对象 识别该去重复数据系统中的该段对象的创建; 识别该去重复数据系统中的该段对象的一个新引用。
14.如权利要求10所述的系统,进一步包括一个垃圾收集模块,该模块被编程用于 识别在垃圾收集处理之前添加到该去重复数据系统的一个附加段对象; 作为该垃圾收集处理的一部分,确定该附加段对象在该去重复数据系统中未被引用; 基于该确定,移除该附加段对象。
15.如权利要求14所述的系统,进一步包括一个恢复模块,该模块被编程用于 识别在添加该附加段对象之后添加到该去重复数据系统的一个数据对象; 确定该数据对象引用该附加段对象; 恢复该附加段对象的另一个拷贝。
16.如权利要求10所述的系统,其中该识别模块被编程用于通过在该垃圾回收处理开始时监控该去重复数据系统的新数据段来识别在垃圾收集处理过程中添加到该去重复数据系统的段对象。
17.如权利要求16所述的系统,其中该识别模块进一步被编程用于在该垃圾收集处理完成时终止监控该去重复数据系统的新数据段。
18.如权利要求10所述的系统,其中 该识别模块被进一步编程用于识别该垃圾收集处理过程中添加到该去重复数据系统的至少一个数据对象; 该锁定模块被进一步编程用于锁定该数据对象以防止该垃圾收集处理移除该数据对象; 该解锁模块被进一步编程用于在该垃圾收集处理之后解锁该数据对象。
19.一种计算机可读存储媒质,包括一个或多个计算机可执行指令,当由计算装置的至少一个处理器执行时,这些指令使得该计算装置 识别一个去重复数据系统; 识别在该去重复数据系统的垃圾收集处理过程中添加到该去重复数据系统的至少一个段对象;锁定该段对象以防止该垃圾收集处理移除该段对象; 在该垃圾收集处理之后解锁该段对象。
20.如权利要求19所述的计算机可读存储媒质,其中锁定该段对象包括向一个锁定的段对象图添加该段对象的一个引用。
全文摘要
一种在去重复数据系统中进行垃圾收集的计算机实施的方法可以包括1)识别一个去重复数据系统,2)识别在该去重复数据系统的垃圾收集处理过程中添加到该去重复数据系统的至少一个段对象,3)锁定段对象以防止垃圾收集处理移除该段对象,然后4)在垃圾收集处理之后解锁该段对象。该方法可以允许更小可能地错误移除有用的段对象。该方法还可以验证该垃圾收集处理过程中的数据对象并恢复错误移除的段对象。在此还披露了不同的其他的方法、系统、以及计算机可读媒质。
文档编号G06F17/30GK102918487SQ201080064815
公开日2013年2月6日 申请日期2010年12月28日 优先权日2010年3月11日
发明者F·郭 申请人:赛门铁克公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1