智能快照分层的制作方法

文档序号:17600349发布日期:2019-05-07 20:11阅读:172来源:国知局
智能快照分层的制作方法

本公开总体涉及数据处理领域,并且更具体地涉及多计算机数据传输。

组织可以在涉及数据恢复和/或数据保留的策略中指定数据管理策略。对于数据恢复,应用程序或程序会创建备份并在需要时还原备份。存储网络行业协会(snia)将备份定义为“收集存储在(通常是可移动的)非易失性存储介质上的数据,以便在原始数据副本丢失或无法访问时进行恢复;也称为备份副本。”对于数据保留,应用程序或程序会创建存档。snia将存档定义为“存储系统中的数据对象集合,可能带有关联的元数据,其主要目的是长期保存和保留该数据。”尽管创建存档可能涉及附加操作(例如,索引以便于搜索、压缩、加密等)并且备份可以在存档可能不可写的情况下进行,但两者的创建都涉及将数据从源复制到目的地。

这种用于创建备份或存档的复制可以不同方式完成。无论自上次备份以来是否已对其进行修改以创建“完整备份”,都可以复制所有已定义的数据对象集。备份也可以是增量备份。系统可以限制复制到已修改的对象以创建增量备份,可以是累积增量备份,也可以是差异增量备份。snia将差异增量备份定义为“自上次完全备份或增量备份复制以来修改数据对象的备份”。snia将累积增量备份定义为“自上次完全备份复制以来修改所有数据对象的备份”。

数据管理/保护策略可以使用“快照”,其将时间点方面添加到备份。更具体的快照定义是“定义的数据集合的完全可用副本,其包含在单个时刻出现的数据图像。”换句话说,快照可以视为在特定时刻的备份。因此,用于创建备份的不同技术可以包括用于创建快照的不同技术。snia定义进一步阐述了快照是“被认为在那个时间点逻辑上发生,但是实现可以在其他时间执行部分或全部副本(例如,通过数据库日志重放或回滚),只要结果是在那个时间点出现的数据的一致副本即可。实现可能会将时间点副本限制为只读,或者可能允许后续写入副本。”

组织可以使用不同的备份策略。一些备份策略包括“定期完整”备份策略和“永久增量”备份策略。使用定期完整备份策略,备份应用程序会定期创建完整快照(“基线快照”),并在定期创建的完整快照之间创建增量快照。使用永久增量备份策略,备份应用程序会创建一个完整快照的初始快照,然后创建增量快照。

数据管理/保护策略越来越依赖于云服务提供商。云服务提供商维护设备和软件,而不会给客户带来详细信息。云服务提供商为客户提供应用程序编程接口(api)。api提供对云服务提供商资源的访问,而无法查看这些资源。许多数据管理/保护策略使用由云服务提供商(“云存储”)提供的存储来实现分层存储。snia将分层存储定义为“基于价格、性能或其他属性物理分区为多个不同类的存储。可以基于访问活动或其他考虑因素在分层存储实现中的类之间动态地移动数据。”

附图说明

通过参考附图可以更好地理解本公开的实施例。

图1是存储设备基于策略跨存储层迁移无效快照块的概念图。

图2是用于从第一存储层到第二存储层的增量快照到期的示例操作的流程图。

图3是跨层增量快照到期的示例操作的流程图。

图4是用于在实现智能快照分层的存储系统中恢复快照的示例操作的流程图。

图5描绘了具有智能快照分层的示例计算机系统。

具体实施方式

以下描述包括体现本公开的各方面的示例系统、方法、技术和程序流程。然而,应当理解,可以在没有这些具体细节的情况下实践本公开。例如,本公开涉及说明性示例中的数据块。但是,数据单元可以以不同的粒度跨文件/对象共享,或者具有不同的名字对象(例如,数据段、数据范围等)。在其他情况下,没有详细示出公知的指令实例、协议、结构和技术,以免混淆描述。

前言

通过包括一个或多个应用程序的“解决方案”来执行数据策略,这些应用程序在本文中将称为数据管理应用程序。数据管理应用程序可以在安装在设备(虚拟或物理)上的存储操作系统(os)上运行,该设备作为数据源和云存储之间的中介进行操作。有效使用快照的数据管理应用程序有两个阶段:1)随时间创建快照,以及2)恢复/激活快照。

数据管理应用程序通过将数据从数据源(其可以是主存储器或辅助存储器(例如,备份服务器))复制到存储目的地来创建快照。该存储目的地可以是数据源与私有云存储或公共云存储(即,由云服务提供商托管和/或管理的存储)之间的存储设备。“存储设备”指的是物理或虚拟的计算机,其提供对数据的访问和/或管理数据而无需应用程序上下文。管理数据可以包括保护数据、删除重复数据、管理快照、实施服务级别协议等。从数据源的角度来看,存储设备是快照的目的地,但作为初始存储点或缓存,最终存储在云存储中的快照。可以从存储设备直接管理的存储设备快速恢复尚未从存储设备迁移的快照。存储设备还可以有效地响应至少元数据相关的请求,因为存储设备维护快照的元数据,包括缓存和迁移的快照。

数据策略可以定义规则和/或条件以将在一个存储层中到期的快照迁移到另一个存储层。通常,第一存储层将用存储类实现,该存储类至少允许相对于其他存储层的最快恢复。例如,第一存储层可以用本地存储设备实现。每个连续的存储层可以用云存储类来实现,这些类具有增加的持久性和增加的检索延迟。此外,存储成本随着每个连续的存储类而降低,同时访问成本增加。在这种情况下,包含大量更新的基线快照或快照的迁移在多个方面成本很高:消耗网络带宽将数据块传输到新的存储层,并且可能需要检索许多块以恢复不同的快照。

概述

智能快照分层有助于快照的有效管理和快照的有效恢复。对于智能快照分层,存储设备可以限制跨层迁移到快照的无效数据块而不是整个快照。根据策略,存储设备可以识别要迁移到另一个存储层的快照,然后确定哪些数据块由紧接着的快照无效。这将限制对无效数据块的网络带宽消耗并将有效数据块保持在更快的访问存储层,因为更新的快照更有可能被恢复。

示例说明

图1是存储设备基于策略跨存储层迁移无效快照块的概念图。数据源将数据集的快照发送到存储设备101。图1中的垂直虚线标记了存储设备101的概念边界。

存储设备101随时间接收数据集的一系列快照。对于该图示,存储设备101根据简单的递增数值方案识别快照。图1描绘了存储设备101接收数据集的快照1-5。存储设备101维护快照的元数据。该元数据至少包括指示已经接收的快照的元数据、每个快照的有效数据范围、与有效数据范围对应的数据块的名称以及数据的源标识符(例如,索引节点(inode)号、文件或目录名、源系统中的数据块的偏移量等)。在存储设备101处接收数据块之前分配数据块的名称。虽然不同的实现可以不同地组织元数据,但是该示例示出了指示在键值存储113中排列的快照之间的有效数据范围的元数据。存储113中的每个条目的密钥基于快照标识符,包含由条目表示的数据块的文件的索引节点号,由条目表示的数据块的长度以及数据块的名称。索引节点号是源文件系统的索引节点号,而不是存储设备101处的索引节点号。

每个数据块名称唯一地标识定义的数据集(例如,文件系统实例、卷等)内的数据块。数据管理应用程序或存储os命名数据块,并在备份到存储设备或通过存储设备时将这些名称传递给存储设备。对定义的数据集执行删除重复数据的请求者(例如,数据管理应用程序或存储os)生成可以跨文件共享和/或在文件内重复的数据块的标识符或名称。这些数据块的命名可以符合包含信息的方案,以便生成的名称至少暗示命令。例如,请求者可以基于数据块指纹(例如,散列值)和数据块创建的时间来生成名称,并且将指纹和创建时间的组合(例如,级联)指定为数据块的名称。作为另一示例,请求者可以生成具有针对每个唯一数据块的单调增加的标识符的名称。

该示例还示出了指示存储设备101上的命名数据块的位置的数据映射元数据(“数据映射”)。在图1中,示出了数据映射,因为它基于触发策略评估的快照的接收而改变。图1将这三个不同的数据映射实例描绘为对应于快照3的接收的数据映射115a、对应于快照4的接收的数据映射115b以及对应于快照5的数据映射115c。数据映射115a-115c指示存储设备101上的文件内的命名数据块的位置。尽管实施例可以不同地存储和排列数据块,但是该示例图假设存储设备101将每个快照的数据块写入对应于快照的数据文件,除非数据块已经在另一个快照的另一个数据文件中。因此,数据映射115a中的sp1:0和sp1:256分别表示数据块a可以在存储设备101上标识为sp1的数据文件中的偏移量0处找到,以及该数据块b可以在该数据文件sp1中的偏移256处找到。在该示出的实现中,当迁移到不同的存储层时,从数据映射中移除数据块名称。缺少数据块名称使得存储设备101查询与所定义的数据集(例如,帐户信息)相关联的云存储服务以确定命名数据块的位置。存储设备101可以调用由云存储提供商定义的功能(例如,应用程序编程接口(api)功能),以在云存储中列出数据块或在数据块名称上查询以确定数据块名称是否在云存储中。尽管可以在存储设备101处维护其他元数据以用于快照,但是有效数据范围元数据和数据映射足以描述智能快照分层的示例。

如前所述,图1描绘了存储设备101接收一系列5个快照:快照103(快照1)、快照105(快照2)、快照107(快照3)、快照109(快照4)和快照111(快照5)。每个快照由矩形内的矩形表示。矩形内的该矩形对应于具有数据集的元数据和数据集的数据的快照-概念上表示数据集元数据的外部矩形和表示数据集的数据块的聚合的内部矩形。策略102将要在存储层1中保留的最新快照的最大或阈值数量定义为3。因此,存储设备101将存储层1限制为3个快照。基于快照103的接收,存储设备101更新存储113以指示快照103的内容。快照103至少包括由索引节点号97和98标识的文件的命名数据块a、b和f。存储设备101更新键值存储113以指示这些文件的数据范围。命名数据块a对应于源偏移0且长度为256字节的文件(索引节点97)的第一数据范围。命名数据块b对应于源偏移256并且长度为128字节的文件(索引节点97)的另一数据范围。命名数据块f对应于源偏移0和128字节长度的文件(索引节点98)的第一数据范围。基于快照105(快照2)的接收,存储设备101用命名数据块g的条目更新键值存储113。快照105从源偏移0开始指示索引节点98中的数据范围,其长度为512字节,其对应于数据块g。该数据块g在与快照2相对应的时间内覆盖数据块f/使数据块f无效。基于快照107(快照3)的接收,存储设备101将更多条目添加到用于索引节点97的键值存储113。在快照3中,数据块m覆盖数据块a的一部分,并且数据块n覆盖数据块a和数据块b的剩余部分。对于相同的索引节点,数据块m对应于源偏移0处的索引节点97,长度为200字节,而数据块n对应于源偏移200,长度为256字节。在接收到快照3之后,数据映射115a指示快照1-3的数据块的位置。数据块位置是:a在偏移0处的快照1(“sp1”)的数据文件中;b在偏移256处的sp1中;f在偏移512处的sp1中;g位于偏移0处的快照2(“sp2”)的数据文件中;m位于偏移0处的快照3(“sp3”)的数据文件中;并且n在偏移200处的sp3中。尽管该示例涉及将数据块组织成用于每个快照的数据文件的存储设备,但是实施例不限于此。实施例可以将命名数据块组织成一个或多个文件,将命名数据块写入与存储介质类型相对应的存储介质的各个位置,具有逻辑块寻址,没有文件系统层次结构等。

在接收快照109(快照4)的情况下,存储设备101确定将超过由策略102定义的3个快照的阈值。为了符合策略102,存储设备101选择存储层1中的最旧快照以逐出或迁移到不同的存储层。在这种情况下,最早的快照是快照1。存储设备101将快照1迁移到存储层2117,其在云存储中实现。存储设备101可以默认选择存储层2(例如,相对于层1的下一个更高层),或者策略102可以将层2指定为迁移目标。但是,快照1的迁移不需要迁移所有组成数据块。存储设备101确定由快照2无效的快照1的数据块,其是数据块f。然后,存储设备101将数据块f迁移(即,存储)到存储层2117。存储设备101从数据映射中移除数据块f的条目以生成数据映射115b。这隐含地表明数据块f已经迁移到存储层1。

在接收快照111(快照5)的情况下,存储设备101确定要从存储层1迁移另一个快照以符合策略102。存储设备101将快照2识别为存储层1中最旧的快照。快照111包括使快照109(快照4)的数据块p无效的数据块r,但是该数据块用于仍然在层1的快照保留窗口内的快照(即,在3个最近的快照内)。存储设备101确定由快照3无效的快照1和2的数据块。在这种情况下,快照1的数据块b无效,因为相应的数据范围被快照3中的数据块n覆盖。尽管在快照3中对应于数据块a的快照1中的数据范围被数据块m和数据块n的一部分覆盖,但数据块a也出现在快照4中。因此,存储设备101确定数据块a未被无效。然后,存储设备101将数据块b迁移到存储层2117,并从数据映射中移除数据块b的相应条目以生成数据映射115c。这隐含地表明数据块b已经从存储层1迁移出来。

从图1中可以明显看出智能快照分层的示例说明中带宽消耗的减少。例如,从层1到期的快照1的有效块(用散列描绘)尚未从存储层1迁移出来。这避免了消耗用于传输这些有效数据块的网络带宽和用于处理通信的计算资源。如果存储设备101接收到恢复请求,则快照1的有效数据块仍然在存储层1中可用,其提供比存储层2更快的访问。恢复将更有效,因为散列表示的有效数据块可以从第1层比第2层更快地提供,并且不消耗资源以从不同的存储层获得那些有效数据块。

图2是用于从第一存储层到第二存储层的增量快照到期的示例操作的流程图。数据管理应用程序(例如,用于云存储备份的一个或多个应用程序)基于从源接收快照来确定是否迁移无效数据块。这至少包括选择从第一存储层到期的快照,确定到期快照的无效数据块,以及更新元数据。

在框201处,数据管理应用程序检测到存储层1中的快照i的接收。数据管理应用程序可能托管在管理实现存储层1的存储阵列的存储设备上。

在框203处,数据管理应用程序基于快照i更新数据集元数据。这包括更新指示快照i的数据范围的快照数据块元数据。更新数据集元数据还包括更新数据映射。数据管理应用程序维护指示数据块位置的数据映射。数据管理应用程序为尚未在数据映射中表示的快照数据块添加条目。

在框205处,数据管理应用程序确定层1中未过期的多个快照是否超出定义的阈值,或者是否落在层1的快照保留窗口之外。由于快照的有效数据块可以保留在存储层1中,尽管策略指示快照从层1到期,但是将快照部分迁移为过期、驱逐或迁移快照可能不准确,除非所有数据块都无效。相反,快照的部分迁移可以称为来自层的快照的“增量过期”或“增量迁移”。由于快照可以从存储层递增到期,因此数据管理应用程序可以维持仍存在于存储层1或未过期的快照数量的计数器。收到快照后,数据管理应用程序会递增计数器。当计数器超过定义的阈值时,数据管理应用程序在识别出最旧快照的任何无效数据块之后递减计数器。如果通过接收快照i超过阈值,则控制流程进入框207。否则,流程结束。

在框207处,数据管理应用程序识别不具有从层1中递增过期的最旧快照。该识别的快照将称为快照m。如果阈值或保留窗口大小定义为x,则m=i-x,假设快照标识符反映快照的顺序。

在框211处,数据管理应用程序识别由后续快照(快照m+1)无效的快照m的数据块。数据管理应用程序读取快照元数据以确定由快照m+1中的数据范围覆盖或在快照m+1中删除的快照m的数据范围。每个快照的删除指示也传送到数据管理应用程序。然后,数据管理应用程序识别与覆盖或删除的数据范围相对应的数据块,并将这些数据块确定为无效的数据块。在增量到期中,增量过期快照的先前有效数据块可能稍后变为无效。因此,可以将增量过期快照的有效数据块视为卷入后续快照,就像在逻辑上创建合成基线一样。因此,快照m的数据块可能已经是快照m-1的一部分,但现在在逻辑上视为卷入快照m。

在框210处,数据管理应用程序确定被快照m+1识别为无效的任何数据块是否在从快照i到快照m+2的任何快照内。如果在存储设备上维持的快照中再次引用数据块,则不应迁移该数据块。数据管理应用程序可以遍历比快照m+1更新的快照的快照元数据,并与标识为无效的数据块列表进行比较。识别为由快照m+1无效的数据块列表中移除被更新近的快照引用的被快照m+1识别为无效的每个数据块。

在框212处,数据管理应用程序将快照m的无效数据块迁移到存储层2。假设存储层2用云存储服务实现,数据管理应用程序调用由云存储服务定义的远程过程调用或api函数以将无效的数据块存储到存储层2中。数据管理应用程序将这些无效的数据块存储到具有与数据块名称对应的对象名称的存储层2中。作为示例,数据管理应用程序至少部分地将数据块名称编码为对象名称或从数据块名称导出对象名称。这允许数据管理应用程序基于数据块名称查询存储层2。然后,数据管理应用程序从存储层1中移除无效的数据块(例如,释放空间、删除块或标记要删除的块)。

在框217处,数据管理应用程序根据无效数据块的迁移更新数据映射。数据管理应用程序可以从数据映射中移除表示迁移数据块的条目,如参考图1所描述的,或者可以维护其他元数据以指示从存储层1迁移的数据块的位置。例如,数据管理应用程序可以维护指示驻留在存储层2中的数据块的元数据,而不是由于数据映射中缺少条目而依赖于隐式指示。数据管理应用程序可以为迁移的数据块维护单独的结构,或者为迁移的数据块更新数据映射条目以识别适当的存储层。

图3是跨层增量快照到期的示例操作的流程图。该流程图具有与图2类似的操作,但是通过包含针对数据集的多于2个分层的存储并且扫描可能仍然部分驻留在层1中的多个先前快照来扩展图2的流程图。图3的描述涉及执行示例操作以与图2一致的数据管理应用程序。

在框301处,数据管理应用程序检测数据集的存储层1中的快照i的接收。检测可以是通过消息传递,存储事件的检测等。数据管理应用程序可能托管在管理实现存储层1的存储阵列的存储设备上。

在框303处,数据管理应用程序基于快照i更新数据集元数据。这包括更新指示快照i的数据范围的快照数据块元数据。更新数据集元数据还包括更新数据映射。数据管理应用程序为尚未在数据映射中表示的快照数据块添加条目。

在框304处,数据管理应用程序从存储层1开始为数据集配置的每个存储层开始操作。例如,可以为数据集定义策略,该数据集指定如何跨4层存储迁移数据集的数据。数据管理应用程序将根据策略的规则/条件评估每个存储层,因为从第1层到第2层的迁移可以触发额外的下游迁移(例如,将数据块从第2层迁移到第3层)。该描述涉及评估为所选层的当前层。

在框305处,数据管理应用程序确定是否满足所选层的快照迁移标准。如前所述,这可以是针对由数据管理应用程序为每个层维护的计数器评估的定义阈值。该标准可以实现为保存窗口。例如,可以为每个存储层定义z的快照保留窗口大小。如果存在快照i-z,则对于基于保留窗口的标准满足标准。如果对于所选存储层满足标准,则控制流程进入框307。否则,流程继续到框321。

在框307处,数据管理应用程序识别不再位于所选存储层的保留窗口内的快照。该识别的快照将称为快照m=i-z。

在框308处,数据管理应用程序开始从快照m到实际基线或合成基线快照的每个快照(快照n)的操作。数据管理应用程序可以维护标识合成基线的其他元数据。永久实现增量快照的数据管理应用程序可以默认为最早的快照作为基线快照。数据管理应用程序执行这些操作以确定保存窗口之外的快照的数据块被快照m+1无效。这可以视为逻辑上将较旧快照的有效数据块汇总到快照m+1中。

在框310处,数据管理应用程序确定快照m+1是否使快照n的任何数据块无效。数据管理应用程序读取快照元数据,以确定快照m+1中数据范围覆盖或快照m+1中删除的快照n的数据范围。然后,数据管理应用程序识别与覆盖或删除的数据范围相对应的数据块,并将这些数据块确定为无效的数据块。可以配置数据管理应用程序以实现不同程度的增量过期。

在框311处,数据管理应用程序确定被快照m+1识别为无效的任何数据块是否在从快照i到快照m+2的任何快照内。如果在存储设备上维护的快照中再次引用数据块,则不应迁移该数据块。数据管理应用程序可以遍历比快照m+1更新的快照的快照元数据,并与标识为无效的数据块列表进行比较。识别为由快照m+1无效的数据块列表中移除被更新近的快照引用的被快照m+1识别为无效的每个数据块。

在框312处,数据管理应用程序将快照n的无效数据块迁移到由控制策略指定的存储层。数据管理应用程序很可能将无效的数据块迁移到下一级存储层。但是,可以使用其他因素来定义策略,以影响哪个存储层是目的地。

在框317处,数据管理应用程序根据无效数据块的迁移更新数据映射。数据管理应用程序可以从数据映射中移除表示如前所述的迁移数据块的条目,或者可以维护其他元数据以指示从所选存储层1迁移出的数据块的位置。

在框319处,数据管理应用程序确定快照n是基线快照还是合成基线快照。如果是,则控制流程进入框321。如果不是,则控制返回到框308。

在框321处,数据管理应用程序确定是否存在用于数据集的附加存储层。如果为数据集配置了另一个存储层,则控制流程进入框304。否则,该过程结束。

图4是用于在实现智能快照分层的存储系统中恢复快照的示例操作的流程图。通过智能快照分层逐步过期快照,数据管理应用程序可以在较低存储层获取数据块,以便根据由策略指定的快照过期时间进行快照恢复。

在框401处,数据管理应用程序检测到恢复快照i的请求的接收。数据管理应用程序从存储os的实例或在数据管理应用程序之外的另一机器(物理或虚拟)上运行的另一数据管理应用程序(例如,备份应用程序)接收请求。尽管请求者可以是恢复的目标,但是恢复请求可以指示除请求者之外的恢复目标,例如通过网络地址或设备名称。

在框403处,数据管理应用程序根据快照i确定文件的有效数据范围。数据管理应用程序还确定对应于有效数据范围的命名数据块。由于数据集经过重复数据删除,因此可以跨文件共享数据块并在文件中重复。为了确定有效数据范围,数据管理应用程序搜索快照元数据以确定哪些数据范围未被覆盖。数据管理应用程序开始从快照i搜索快照元数据回到基线快照(实际或合成)。作为确定有效性的一部分,可以基于与更多当前快照的数据范围的重叠来忽略、截断或拆分来自较旧快照的数据范围。数据管理应用程序可以生成与所确定的有效数据范围相对应的数据块名称的列表。

在框405处,数据管理应用程序开始对已确定的每个有效数据范围的操作。对于每个有效数据范围,数据管理应用程序执行操作以获得命名数据块并传送有效数据范围和数据块(如果尚未传送)。该描述将当前迭代的有效数据范围称为所选数据范围。

在框407处,数据管理应用程序确定对应于所选数据范围的数据块是否已经传送到恢复目标。数据管理应用程序可以在恢复期间以不同的粒度在多个点处传送相应数据块的有效数据范围和标识。例如,对于每个n个文件等,数据管理应用程序可以为每个正在恢复的目录传递有效数据范围和数据块名称的映射。除了映射之外,数据管理应用程序还将数据块本身发送或传送到恢复目标,除非已经发送。初始发送后,恢复目标可以使用本地存储中可用的数据块。数据管理应用程序跟踪传送到恢复目标的数据块。如果识别为对应于有效数据范围的数据块已经传送到恢复目标,则控制流程进入框415。如果还没有,则控制流程进入框409。

在框409处,数据管理应用程序确定对应于有效数据范围的所识别的数据块是否在存储层1中可用。假设存储层1是具有最低访问等待时间的层,则数据管理应用程序确定是否可以在该最低访问等待时间层中获得数据块。如果它在层1中可用,则控制流程进入框413。如果数据块在层1中不可用并且已迁移到不同的存储层,则控制流程进入框411。

在框411处,数据管理应用程序确定哪个(更高级别)存储层托管所标识的数据块并从该存储层获得所标识的数据块。数据管理应用程序可以确定与恢复请求中指示的数据集相关联的帐户。该帐户将标识为该帐户配置的其他存储层和/或标识指示为该数据集配置的存储层的策略。利用帐户信息,数据管理应用程序可以查询存储服务以确定所识别的数据块是否可用。数据管理应用程序可以使用由存储服务定义的廉价函数调用来获得每个存储层内的数据集的数据块标识符的列表,或者可以在存储层上迭代直到找到所识别的数据块。数据管理应用程序还可以使用函数调用,该函数调用请求具有在云存储服务中实现的对应于所识别的数据块名称的存储层中的对象标识符或对象密钥的对象的元数据。例如,数据管理应用程序可以将请求传送给存储服务,该存储服务为名为“a”的数据块指定对象名称“object_a”。存储服务不是返回对象本身,而是返回object_a的元数据或指示缺少此类对象的代码。如果未找到,则数据管理应用程序可以将相同的请求发送到下一个存储层,该存储层可以用不同的容器名称来标识。实施例可以维护标识哪个存储层主机哪个数据块的元数据。在这种情况下,数据管理应用程序可以对该元数据执行查找,该元数据将数据块名称映射到存储层并相应地检索数据块。在获得识别的数据块之后,控制流程进入框413。

在框413处,数据管理应用程序向恢复目标传送有效数据范围的信息。数据管理应用程序传送确定的有效数据范围、数据块名称和获得的数据块。实施例可以以不同的粒度聚合有效数据范围信息的传送(例如,传送子目录内的所有文件的有效数据范围而不是每个有效数据范围)。在传送有效数据范围信息之后,数据管理应用程序在框417处确定是否存在用于恢复的另一有效数据范围。

如果已识别的数据块已经发送到恢复目标(407),则数据管理应用程序在框415处将有效数据范围和数据块名称传送给恢复目标。如前所述,数据管理应用程序可以放弃冗余地发送数据块,因为数据块已经发送到恢复目标。控制从框415流到417。对于某些数据范围,数据范围的有效部分将小于快照元数据中数据范围引用的整个命名数据块。映射仍将传送到恢复目标,恢复目标将确定要使用的命名数据块的部分。这允许恢复目标在多个有效数据范围和/或文件中使用命名数据块,尽管命名数据块的不同部分对于不同范围/或文件有效。

变体

以上示例说明基于覆盖的对应数据范围确定要无效的数据块。这样可以将数据块保留在较低的存储层中,以便在部分覆盖时更有效地进行恢复。然而,实施例不限于要求完全覆盖数据块以迁移数据块。可以将数据管理应用程序配置为表征部分覆盖为无效的数据块。尽管将部分覆盖的数据块视为被覆盖可能会导致更多数据块迁移到更高层,而不是将失效限制为完全覆盖和删除数据块,但它仍然可以提高整个快照迁移的效率。

示例性图示建议基于在存储设备处接收每个快照来评估迁移标准。然而,实施例不限于此。可以将数据管理应用程序配置为在指定的时间段之后或在收到x快照之后评估迁移标准。这可以在具有其他迁移标准的系统中使用。例如,当已经恢复n个快照并且存储设备的可用存储容量低于阈值时,可以迁移保存窗口之外的快照数据块的迁移。存储设备和/或数据管理应用程序将根据为数据集定义的策略迁移数据块。此外,实施例可以利用除了定义的阈值之外的技术并维持计数器来触发迁移评估。实施例可以确定是否从到期窗口内的最旧快照跨存储设备的快照元数据中指示的其他快照确定有效范围。存储设备可以在保留窗口内选择最旧的快照,然后根据所选快照开始确定有效数据范围,而不是维护计数器。

示例通常指的是“数据管理应用程序”。数据管理应用程序是一个名字对象,用于指代智能快照分层功能的实现。由于可以将许多标签用于执行所描述的功能的程序代码,因此使用该名字对象。此外,程序代码的模块化可以根据平台、编程语言、开发人员偏好等而变化。

提供流程图以帮助理解说明,并且不用于限制权利要求的范围。流程图描绘了可以在权利要求的范围内变化的示例操作。可以执行附加操作;可以执行的操作更少;操作可以并行执行;并且可以以不同的顺序执行操作。例如,实施例不一定迁移无效数据块,因为每个都被识别(图3的312)。实施例可以跟踪结构中的无效数据块,然后一次迁移多个无效数据块,并相应地更新数据映射。还不需要实施例来确定潜在无效的数据块是否在更近的快照(例如,图2的框210和图3的框311)中再现。如果未对数据集执行重复数据删除,则可能无法共享数据块,从而消除了跨越具有相同名称的快照的数据块的可能性。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由程序代码实现。程序代码可以提供给通用计算机、专用计算机或其他可编程机器或设备的处理器。

如将理解的,本公开的方面可体现为存储在一个或多个机器可读介质中的系统、方法或程序代码/指令。因此,方面可以采取硬件、软件(包括固件、常驻软件、微代码等)的形式,或者软件和硬件方面的组合,这些方面在本文中通常都可以称为“电路”、“模块”或“系统”。作为示例说明中的单个模块/单元呈现的功能可以根据平台(操作系统和/或硬件)、应用生态系统、接口、程序员偏好、编程语言、管理员偏好等中的任何一个来不同地组织。

可以利用一个或多个机器可读介质的任何组合。机器可读介质可以是机器可读信号介质或机器可读存储介质。机器可读存储介质可以是,例如但不限于,系统、装置或设备,其采用电、磁、光、电磁、红外或半导体技术中的任何一个或其组合来存储程序代码。机器可读存储介质的更具体示例(非详尽列表)将包括以下内容:便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、便携式光盘只读存储器(cd-rom)、光学存储设备、磁存储设备或前述的任何合适的组合。在本文件的上下文中,机器可读存储介质可以是任何有形介质,其可以包含或存储程序以供指令执行系统、装置或设备使用或与其结合使用。机器可读存储介质不是机器可读信号介质。

机器可读信号介质可包括传播的数据信号,其中机器可读程序代码包含在其中,例如,在基带中或作为载波的一部分。这种传播信号可以采用多种形式中的任何一种,包括但不限于电磁、光或其任何合适的组合。机器可读信号介质可以是任何机器可读介质,其不是机器可读存储介质并且可以通信、传播或传输程序以供指令执行系统、装置或设备使用或与其结合使用。

可以使用任何适当的介质来传输在机器可读介质上体现的程序代码,包括但不限于无线、有线、光纤电缆、rf等,或者前述的任何合适的组合。

用于执行本公开的各方面的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,包括面向对象的编程语言,例如编程语言,c++等;一种动态编程语言,如python;脚本语言,如perl编程语言或powershell脚本语言;和传统的过程编程语言,例如“c”编程语言或类似的编程语言。程序代码可以完全在独立机器上执行,可以跨多个机器以分布式方式执行,并且可以在一台机器上执行,同时在另一台机器上提供结果和/或接受输入。

程序代码/指令还可以存储在机器可读介质中,该机器可读介质可以指导机器以特定方式运行,使得存储在机器可读介质中的指令产生包括实现在流程图和/或框图块中指定的功能/动作的指令的制品。

图5描绘了具有智能快照分层的示例计算机系统。该计算机系统包括处理器501(可能包括多个处理器、多个核、多个节点和/或实现多线程等)。计算机系统包括存储器507。存储器507可以是系统存储器(例如,高速缓存、sram、dram、零电容器ram、双晶体管ram、edram、edoram、ddrram、eeprom、nram、rram、sonos、pram等中的一个或多个)或上述任何一个或多个已经描述的机器可读介质的可能实现。计算机系统还包括总线503(例如,pci、isa、pci-express、总线、总线、nubus等)和网络接口505(例如,光纤通道接口、以太网接口、互联网小型计算机系统接口、sonet接口、无线接口等)。该系统还包括具有智能快照分层的快照管理器511。快照管理器511递增地迁移在到期窗口之外老化的快照的数据块。快照管理器511通过限制迁移到无效数据块来递增地迁移快照。快照管理器511最初可以存储快照并且稍后从存储阵列或存储库515(例如,磁盘阵列、闪存存储库、混合存储器等)检索数据块。可以在硬件中和/或在处理器501上部分地(或完全地)实现先前描述的功能中的任何一个。例如,功能可以用专用集成电路实现,在处理器501中实现的逻辑中,在外围设备或卡上的协处理器等中实现。此外,实现可以包括图5中未示出的更少或额外的组件(例如,视频卡、音频卡、附加网络接口、外围设备等)。处理器501和网络接口505耦合到总线503。尽管示出为耦合到总线503,但是存储器507可以耦合到处理器501。

尽管参考各种实现和开发描述了本公开的各方面,但是应该理解,这些方面是说明性的,并且权利要求的范围不限于它们。通常,如本文所述的用于智能快照分层的技术可以利用与任何硬件系统或硬件系统一致的设施来实现。可以进行许多变化、修改、添加和改进。

可以为本文描述的部件、操作或结构提供多个实例作为单个实例。最后,各种部件、操作和数据存储之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中示出了特定操作。设想了其他功能分配,并且可以落入本公开的范围内。通常,在示例配置中作为单独部件呈现的结构和功能可以实现为组合结构或部件。类似地,作为单个部件呈现的结构和功能可以实现为单独的部件。这些和其他变化、修改、添加和改进可以落入本公开的范围内。

在列表之前使用连词“和”的短语“至少一个”的使用不应被视为排他性列表,并且不应解释为具有来自每个类别的一个项目的类别列表,除非另有说明。只有一个列出的项目、列出的项目中的多个、列表中的一个或多个项目以及未列出的另一个项目,可以违背列举“a、b和c中的至少一个”的条款。

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