使用逻辑时间中的冗余的变化跟踪的制作方法

文档序号:11450300阅读:216来源:国知局
使用逻辑时间中的冗余的变化跟踪的制造方法与工艺



背景技术:

计算系统和相关联的网络已经彻底改变了人类工作、娱乐和沟通的方式,其预示着现在什么被称为“信息时代”。因此,在现代,数据管理是重要的领域。数据管理的一个方面是变化跟踪。例如,通常有帮助的是能够区分数据的什么部分在两个时间实例之间已经变化。

作为示例,当备份存储系统时,存储系统的副本被写入到备份站点。下一次备份存储系统时,只备份存储系统的变化的子集,而不是再次复制整个存储系统。因此,为了执行此增量备份,确定存储系统的哪些部分已经变化是先决条件。此外,当将存储系统恢复到特定逻辑时间时(例如如在恢复期间),变化跟踪允许恢复系统确定数据的哪些部分与该特定逻辑时间处的存储系统的状态一致。

本文中所要求保护的主题不限于解决任何缺点或只在诸如上述环境之类的环境中操作的实施例。相反,该背景技术仅被提供用于说明可以实践本文描述的一些实施例的一个示例性技术领域。



技术实现要素:

本文所描述的至少一些实施例涉及跟踪存储系统的单元部分之中的变化。作为示例,单元部分可以是文件系统中的文件,或者基于块的存储系统中的块。对于存储系统的至少一些单元部分中的每一个,逻辑时间标识符与单元部分相关联并且包括在逻辑时间标识符结构内。

当写入到包括存储系统的一个或多个单元部分的特定写入部分时,针对写入部分内的任何变化的单元部分更新逻辑时间标识符。此外,一旦(多个)适当的逻辑时间标识符已经变化,该机制就计算与写入部分的一个或多个部分相关联的一个或多个逻辑时间标识符的组的冗余数据,比如校验和。存储系统的写入部分被写入。此外,与该写入部分相关联的逻辑时间标识符的组的对应的冗余数据被写入到逻辑时间标识符结构。

稍后,对于给定的写入部分,冗余数据被验证与关联于写入部分的一个或多个逻辑时间标识符的组一致还是不一致。如果冗余数据不一致,则当前逻辑时间标识符被分配给逻辑时间标识符中的每一个。因此,不一致的写入部分被视为最近被写入。在增量备份期间,逻辑时间标识符用于确定哪些单元部分已经变化,并且从而确定哪些单元部分需要进行备份。由于针对写入部分的不一致的冗余数据导致针对整个写入部分的逻辑时间标识符接收当前逻辑时间,这引起该写入部分的所有单元部分已被新写入到的备份系统的出现。因此,备份系统引起整个写入部分被备份,即使其单元部分中的一个或多个可能没有变化。尽管这也许可能导致在冗余数据失去一致性的罕见情况下比绝对必要更多的备份数据被传送,但当这样的情况发生时,它防止数据不一致。

本发明内容不旨在标识要求保护的主题的关键特征或必要特征,其也不旨在被用于帮助确定要求保护的主题的范围。

附图说明

为了描述可以获得上述及其它优点和特征的方式,将通过参考附图来呈现各种实施例的更具体的描述。理解这些附图仅仅描绘样本实施例并且因此不被认为是对本发明的范围的限制,所述实施例通过使用附图以附加的特征和细节来描述和解释,在附图中:

图1抽象地图示了一种计算系统,在该计算系统中可以使用本文中所描述的一些实施例;

图2图示了根据本文中所描述的原理的操作的时间线,并且包括准备阶段、操作阶段(包括写入和验证操作)以及备份阶段;

图3图示了用于保持对存储系统的单元部分之中的变化的跟踪的方法;

图4图示了包括数据存储装置和逻辑时间标识符结构的示例存储系统;

图5a至5g图示了依照特定场景的图4的逻辑时间标识符结构的一个实施例的各种阶段,并且其中逻辑时间标识符结构被布置为逻辑时间标识符的线性阵列;

图6a至6f图示了依照特定场景的图4的逻辑时间标识符结构的另一实施例的各种阶段,并且其中逻辑时间标识符结构被布置为树结构;以及

图7抽象地图示了可以在存储系统内操作以准备、操作和备份该存储系统的各种处理组件。

具体实施方式

本文中所描述的至少一些实施例涉及跟踪存储系统的单元部分之中的变化。作为示例,单元部分可以是文件系统中的文件,或者基于块的存储系统中的块。对于存储系统的至少一些单元部分中的每一个单元部分,逻辑时间标识符与单元部分相关联并且被包括在逻辑时间标识符结构内。

当写入到包括存储系统的一个或多个单元部分的特定写入部分时,针对写入部分内的任何变化的单元部分更新逻辑时间标识符。而且,一旦(多个)适当的逻辑时间标识符已经变化,该机制就计算与写入部分的一个或多个部分相关联的一个或多个逻辑时间标识符的组的冗余数据,比如校验和。存储系统的写入部分被写入。此外,与该写入部分相关联的逻辑时间标识符的组的对应的冗余数据被写入到逻辑时间标识符结构。

稍后,对于给定的写入部分,冗余数据被验证与关联于该写入部分的一个或多个逻辑时间标识符的组一致还是不一致。如果冗余数据不一致,则当前逻辑时间标识符被分配给逻辑时间标识符中的每一个。因此,不一致的写入部分被视为最近被写入。在增量备份期间,逻辑时间标识符用于确定哪些单元部分已经变化,并且从而确定哪些单元部分需要备份。由于针对写入部分的不一致的冗余数据导致针对整个写入部分的逻辑时间标识符接收当前逻辑时间,这引起该写入部分的所有单元部分已被新写入到的备份系统的出现。因此,备份系统引起整个写入部分被备份,即使单元部分中的一个或多个可能没有变化。尽管这也许可能导致在冗余数据失去一致性的罕见情况下比绝对必要的更多的备份数据被传送,但当这样的情况发生时,它防止数据不一致。

将关于图1描述计算系统的一些介绍性讨论。然后,将关于随后的附图呈现本文描述的实施例的结构和操作。

计算系统现在越来越多地采用多种多样的形式。计算系统可以例如是手持设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统、数据中心,或者甚至是传统上不被认为是计算系统的设备,比如可穿戴设备(例如眼镜)。在本说明书和权利要求书中,术语“计算系统”广义地定义为包括含有下述的任何设备或系统(或其组合):至少一个物理的和有形的处理器、以及能够在其上具有可由处理器执行的计算机可执行指令的物理的和有形的存储器。存储器可以采取任何形式,并且可以取决于计算系统的性质和形式。计算系统可以分布于网络环境中,并且可以包括多个组成的计算系统。

如图1中所图示的,在其最基本的配置中,计算系统100典型包括至少一个硬件处理单元102和存储器104。存储器104可以是物理系统存储器,其可以是易失性的、非易失性的或者这二者的某种组合。术语“存储器”也可以在本文中用于指代诸如物理存储介质之类的非易失性大容量存储装置。如果计算系统是分布式的,则所述处理、存储器和/或存储能力也可以是分布式的。如在本文中所使用的,术语“可执行模块”或“可执行组件”可以指可以在计算系统上执行的软件对象、例程或方法。本文中描述的不同的组件、模块、引擎和服务可以被实现为在计算系统上执行的对象或进程(例如,实现为单独的线程)。

在下面的描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这样的动作在软件中实现,则响应于已执行的计算机可执行指令,(执行该动作的相关联的计算系统的)一个或多个处理器指导计算系统的操作。例如,这样的计算机可执行指令可以体现在形成计算机程序产品的一个或多个计算机可读介质上。这样的操作的一个示例涉及数据的操纵。计算机可执行指令(和所操纵的数据)可以存储在计算系统100的存储器104中。计算系统100还可以包含通信信道108,该通信信道108允许计算系统100通过例如网络110与其它计算系统通信。

本文中描述的实施例可以包括或利用专用或通用计算系统,该专用或通用计算系统包括计算机硬件,诸如例如一个或多个处理器和系统存储器,如在下面更详细地讨论的。本文描述的实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理的和其它的计算机可读介质。这样的计算机可读介质可以是可以被通用或专用计算系统访问的任何可用的介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。因此,以示例而非限制的方式,本发明的实施例可以包括至少两种截然不同的计算机可读介质:存储介质和传输介质。

计算机可读存储介质包括ram、rom、eeprom、cd-rom或其它光盘存储装置,磁盘存储装置或其它磁性存储设备,或可以用于存储计算机可执行指令或数据结构形式的期望的程序代码构件并且可由通用或专用计算系统访问的任何其它物理的和有形的存储介质。

“网络”被定义为允许实现在计算系统和/或模块和/或其它电子设备之间输送电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬布线、无线、或者硬布线或无线的组合)被传送或提供到计算系统时,计算系统将该连接正确地视为传输介质。传输介质可以包括网络和/或数据链路,其可以用于承载计算机可执行指令或数据结构形式的期望的程序代码构件并且可以由通用或专用计算系统访问。上述的组合也应包括在计算机可读介质的范围内。

此外,在到达各种计算系统组件时,计算机可执行指令或数据结构形式的程序代码构件可以从传输介质自动地传送到存储介质(或者反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以在网络接口模块(例如“nic”)内的ram中缓冲,并且然后最终传送到计算系统处的计算系统ram和/或较不易失的存储介质。因此,应当理解,存储介质可以被包括在也(或者甚至主要地)利用传输介质的计算系统组件中。

计算机可执行指令包括例如指令和数据,该指令和数据当在处理器处被执行时引起通用计算系统、专用计算系统或专用处理设备执行某功能或功能的组。计算机可执行指令可以是例如在由处理器直接执行之前经历某种转变(例如编译)的二进制数或甚至指令,比如中间格式指令(诸如汇编语言),或者甚至是源代码。尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,在所附权利要求中限定的主题不一定限于上述所描述的特征或动作。相反,所描述的特征和动作被公开为实现权利要求的示例形式。

本领域技术人员将领会,本发明可以在具有许多类型的计算系统配置的网络计算环境中实践,该计算系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程的消费电子产品、网络pc、小型计算机、大型计算机、移动电话、pda、寻呼机、路由器、交换机、数据中心、可穿戴设备(例如眼镜)等。本发明还可以在分布式系统环境中实现,在该分布式系统环境中,通过网络(由硬布线数据链路、由无线数据链路,或者由硬布线和无线数据链路的组合)链接的本地和远程计算系统两者都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。

图2图示了根据本文中所描述原理的操作的时间线200。首先是准备阶段210,在准备阶段中计算系统通过设置逻辑时间标识符结构来为保持对存储系统中的变化进行跟踪的操作做准备。第二是操作阶段220,在操作阶段中计算系统从事正常操作并且因此到存储系统执行写入操作221并且等同写入到逻辑时间标识符结构,并且然后稍后根据本文中所描述的原理使用逻辑时间标识符结构来验证222写入操作的一致性。最后,存在潜在备份阶段230,其中逻辑时间标识符结构用于将存储系统备份到一致状态。

更具体地,图3图示了用于保持跟踪存储系统的部分之中的变化的方法300的流程图。在准备阶段210中,逻辑时间标识符与逻辑时间标识符结构中的每个单元部分相关联(动作310)。图4图示包括逻辑时间标识符结构的示例存储系统400。将在返回到图3的方法300的流程图之前描述图4的示例。

作为示例,图4图示包括数据存储装置400a和逻辑时间标识符结构400b的示例存储系统400。数据存储装置400a包括单元部分401a至409a。在一个实施例中,存储系统400a是文件系统,其中每个单元部分401a至409a是文件。然而,存储系统400a也可以是基于块的系统,其中每个单元部分401a至409a是块。当然,在典型的存储系统中可能存在更多的单元部分,但是为了清楚起见,图4的示例保持简单。

存储系统400a还包括写入部分411a至413a。根据本文中描述的最宽的方面,写入部分可以包括一个或多个单元部分,并且表示单元部分可以如何被写入到存储系统中。例如,如果存储系统400a是文件系统,则典型地一次写入一个文件。因此,写入部分可以各自仅包含一个单元部分(即一个文件)。然而,如果存储系统400a是基于块的存储系统,则典型地块被一次写入一页,一页包含多个块。在所图示的示例中,写入部分411a至413a中的每一个被表示为各自包含三个单元部分。这再次是为了简单和清楚地描述该示例的目的。在典型的存储系统中,可能存在数百万或数十亿个单元部分和写入部分,并且每个写入部分可能潜在地包含不同数量的单元部分。

逻辑时间标识符结构400b包括与单元部分401a至409a中的每一个分别关联的逻辑时间标识符401b至409b。图5a至5g图示了逻辑时间标识符结构400b的渐进状态,因为状态将在下文描述的特定示例中。在图5a至5g的示例中,逻辑时间标识符结构包括条目的线性阵列,每个条目是用于存储系统的相关联的单元部分的逻辑时间标识符。图6a至6f图示了逻辑时间标识符结构400b的渐进状态,其中使用树结构来跟踪冗余数据。图5a至5d分别对应于图6a至6d。图5e和5f对应于图6e。图5f和5g分别对应于图6e和6f。因此,图5a至5g以及图6a至6f的示例将在下文描述场景时被频繁地参考。

在图5a至5g和图6a至6f的特定示例中,逻辑时间标识符是序列号,并且逻辑时间由序列号表示,其在每次逻辑时间前进时增加1。例如,在图5a的状态500a中以及在图6a的状态600a中,逻辑时间标识符401b至409b各自被归零。在一些情况下,逻辑时间标识符可能与实际时间相关联,使得可以输入实际时间,并且可以检索对应的逻辑时间标识符。

再次参考图4,用于写入部分411a至413a中的每一个的逻辑时间标识符的组分别具有相关联的冗余数据411b至413b。冗余数据411b至413b可以用于分别确认对应的写入部分411a至413a内的逻辑时间标识符的正确性。例如,写入部分411a与单元部分401a至403a相关联;并且单元部分401a至403a具有相关联的逻辑时间标识符401b至403b。因此,冗余数据411b表示可用于验证逻辑时间标识符401b至403b的精度的冗余数据(例如校验和)。再者,写入部分412a与单元部分404a至406a相关联;并且单元部分404a至406a具有相关联的逻辑时间标识符404b至406b。因此,冗余数据412b表示可用于验证逻辑时间标识符404b至406b的精度的冗余数据(例如校验和)。最后,写入部分413a与单元部分407a至409a相关联;并且单元部分407a至409a具有相关联的逻辑时间标识符407b至409b。因此,冗余数据413b表示可用于验证逻辑时间标识符407b至409b的精度的冗余数据(例如校验和)。

在逻辑时间标识符401a至409a在图5a中被归零的情况下,冗余数据411b、411b和411c各自表示三个零的冗余数据。在所图示的图5a至5g的命名法中数字序列的冗余数据通过使该数字序列用锯齿状下划线图示来符号化。例如,在图5a中,冗余数据411b被表示为具有值

图6a至6f图示了依照与关于图5a至5g描述的相同特定场景的图4的逻辑时间标识符结构的另一实施例的各个阶段。然而,在此第二实施例中,逻辑时间标识符结构可以采用树结构的形式。

在这个树结构中,如果写入部分不具有相关联的逻辑时间标识符的组,则逻辑时间标识符被假定为由树中的根节点表示的默认值。如果针对写入部分的逻辑时间标识符结构的组中的任何一个不同于在根节点处表示的默认值,则该逻辑时间标识符结构的组将具有它自己的子节点。如果逻辑时间标识符的组对于给定的写入部分是相同的,则该子节点将简单地保持该值。如果逻辑时间标识符的组中的每一个对于写入部分并不相同,则子节点将包含针对逻辑时间标识符系列的冗余数据。

例如,参考图6a的示例,所有逻辑时间标识符都是默认值零。因此,由于逻辑时间标识符401b至409b的值各自为0,所以只存在表示值0的单个根节点610。

移动到阶段220的写入操作221,当写入到包括存储系统的(多个)单元部分的特定写入部分时,系统针对已经变化的写入部分的(多个)单元部分中的任何一个更新逻辑时间标识符(动作320),并且计算与(多个)逻辑时间标识符相关联的冗余数据(例如校验和)(动作321),该(多个)逻辑时间标识符与写入部分的(多个)单元部分相关联。系统写入该写入部分(动作322)并且还写入相关联的冗余数据(动作323)。在一些实施例中,冗余数据随着逻辑时间标识符的更新(动作320)被并行地写入(动作323)。因此,如果稍后发现冗余数据与逻辑时间标识符不一致(动作324),则有可能已经发生电源故障,并且逻辑时间标识符可能被视为是损坏的。这就是为什么逻辑时间标识符在这种情况下被以由应用使用数据测量的当前逻辑时间标记。

例如,参考图5b的状态500b,假设对单元部分402a和403a进行写入,并且逻辑时间已经前进到时间1。因此,针对写入部分411a的对应的单元部分401a至403a的逻辑时间标识符401b至403b从000变化为011(动作320)。然后冗余数据411b被重新计算(动作321)为。然后,系统将新的写入部分411a写入到单元部分401a至403a(动作322),并且还写入现在具有值的新的冗余数据411b(动作323)。参考图6b的状态600b,由于写入部分411a不再由根节点610精确地表示,所以创建叶节点611,其包含针对逻辑时间标识符401b至403b的冗余数据(例如校验和)。

接下来,参考图5c的状态500c,假设对单元部分403a和404a进行写入,并且逻辑时间已经前进到时间2。因此,针对写入部分411a的对应的单元部分401a至403a的逻辑时间标识符401b至403b从011变化为012(动作320)。此外,针对写入部分412b的对应的单元部分404a至406a的逻辑时间标识符404b至406b从000变化为200(也是动作320)。然后,冗余数据411b被重新计算(动作321)为。另外,然后,冗余数据412b被重新计算(也是动作321)为。然后,系统将新的写入部分411a写入到单元部分401a至403a(动作322),将新的写入部分412a写入单元部分404a至406a(也是动作322),新的冗余数据411b现在具有值(动作323),并且新的冗余数据412b现在具有值(也是动作323)。参考图6c的状态600c,由于写入部分412a不再由根节点610精确地表示,所以创建叶节点612,其包含针对逻辑时间标识符404b至404b的冗余数据(例如校验和)。此外,叶节点611已经以与冗余数据411b相同的方式改变。

接下来,参考图5d的状态500d,假设对单元部分405a和406a进行写入,并且逻辑时间已经前进到时间3。因此,针对写入部分412a的对应的单元部分404a至406a的逻辑时间标识符404b至406b从200变化为233(动作320)。然后,冗余数据412b被重新计算(动作321)为。然后,系统将新的写入部分412a写入到单元部分404a至406a(动作322),并且还写入现在具有值的新的冗余数据412b(动作323)。类似地,参考图6d的状态600d,叶节点612的值也相应地变化。

往回参考图2,在操作阶段220期间,可以偶尔执行验证操作222。该验证操作222可以响应于某些事件执行,并且/或者可以周期性地执行。作为示例,验证操作222可以在检测到在系统中发生电力循环之后执行。

在验证操作222期间,可以在写入操作221之后验证冗余数据与一个或多个逻辑时间标识符的组不一致(动作324)。如果冗余数据不一致,则针对对应的写入部分中的所有单元部分,关于当前逻辑时间3执行写入操作221。

例如,参考图5e的状态500e,假设在仍处于逻辑时间3时,冗余数据412b现在具有(由“***”表示的)损坏值(动作324),该损坏值不再与关联于对应的写入部分412a的单元部分404a至406a的逻辑时间标识符404b至406b的值233一致。在这种情况下,如在图5f的状态中所表示的,写入部分412a的对应的单元部分404a至406a的逻辑时间标识符404b至406b各自以当前逻辑时间标识符3重写(动作325)。然后,新的冗余数据412b被计算为(动作321),并且冗余数据被写入(动作323)。参考图6e的状态600e,由于对应于叶节点611的写入部分的逻辑时间标识符404b至406b现在全部相同(逻辑时间3),所以叶节点612可以可选地变换为具有简单值3。可替代地,叶节点612可能已具有冗余值

换句话说,如果冗余数据(例如校验和)不正确,则整个相关联的写入部分被视为好像其具有最新序列号。下次更新写入部分时,当前的逻辑时间被显式存储用于该写入部分的每个逻辑时间标识符。这意味着如果所述页以某种方式变得损坏,当用户请求从时间t(其小于当前时间)变化的集合时,用户将看到由逻辑时间标识符结构的这部分所表示的一切已经变化,即使此写入部分的仅一些或者甚至没有单元部分变化。这比假设没有变化安全得多(因为不知道什么变化)。

接下来,参考图5g的状态500g,假设对单元部分406a和407a进行写入,并且逻辑时间已经前进到时间4。因此,写入部分412a的对应的单元部分404a至406a的逻辑时间标识符404b至406b从333变化到334(动作320)。此外,写入部分413a的对应的单元部分407a至409a的逻辑时间标识符407b至409b从000变化为400(也是动作320)。然后,冗余数据412b被重新计算(动作321)为。此外,然后,冗余数据413b被重新计算(也是动作321)为。然后,系统将新的写入部分412a写入到单元部分404a至406a(动作322),将新的写入部分413a写入到单元部分407a至409a(也是动作322),新的冗余数据412b现在具有值(动作323),并且新的冗余数据413b现在具有值(也是动作323)。参考图6f的状态600f,由于写入部分413a不再由根节点610精确地表示,所以创建叶节点613,其包含针对逻辑时间标识符407b至409b的冗余数据(例如校验和)。此外,由于叶节点612中的值(3)不再表示写入部分412a的所有的逻辑时间标识符,叶节点612被修改为包括冗余数据

再次参考图4,现在假设存储系统400需要被备份。例如,在图2中,时间线200从正常操作阶段220进行到备份阶段230。备份系统使用逻辑时间标识符来确定什么单元部分已经变化。例如,参考图5g和6f,如果最后的备份是在逻辑时间0之后但在逻辑时间1之前进行,则单元部分402a至407a将被备份,因为它们相应的逻辑时间标识符402b至407b各自是逻辑时间1或之后。如果最后的备份在逻辑时间1之后但在逻辑时间2之前进行,则单元部分403a至407a将被备份,因为它们相应的逻辑时间标识符403b至407b各自是逻辑时间2或之后。如果最后的备份是在逻辑时间2之后但在逻辑时间3之前进行,则单元部分404a至407a将被备份,因为它们相应的逻辑时间标识符404b至407b各自是逻辑时间3或之后。如果最后的备份是在逻辑时间3之后但在逻辑时间4之前进行,则单元部分406a和407a将被备份,因为它们相应的逻辑时间标识符406b和407b各自是逻辑时间4或之后。

由于写入部分的不一致的冗余数据导致整个写入部分的逻辑时间标识符接收当前逻辑时间,这引起该写入部分的所有单元部分已被新写入到的备份系统的出现。因此,备份系统引起整个写入部分被备份,即使一个或多个单元部分可能没有变化。尽管这也许可能导致在冗余数据失去一致性的罕见情况下比绝对必要更多的备份数据被传送,但当这样的情况发生时它保护实际数据的一致性。

图7抽象地图示了架构700,该架构700包括可以在存储系统内操作以准备、操作和备份存储系统的各种处理组件。特别地,准备组件710可以被结构化且被配置成执行上述用于准备阶段210的操作,写入组件721可以被结构化且被配置成执行写入操作221,验证组件722可以被结构化且被配置成执行验证操作222,并且备份组件730可以被结构化且被配置成执行上述用于备份阶段230的操作。

因此,本文中描述的原理提供了用于保持跟踪存储系统的任意版本之间的变化的高效机制。本发明可以以其它具体形式体现,而不脱离本发明的精神或基本特性。所描述的实施例将在所有方面都被认为仅是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是前面的描述来指示。进入权利要求的等同物的含义和范围内的所有变化将被包含在其范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1