CN110073344A - 利用合成基线快照和逐出状态刷新来减少稳定数据逐出 - Google Patents
利用合成基线快照和逐出状态刷新来减少稳定数据逐出 Download PDFInfo
- Publication number
- CN110073344A CN110073344A CN201780076519.XA CN201780076519A CN110073344A CN 110073344 A CN110073344 A CN 110073344A CN 201780076519 A CN201780076519 A CN 201780076519A CN 110073344 A CN110073344 A CN 110073344A
- Authority
- CN
- China
- Prior art keywords
- snapshot
- data
- metadata
- manager
- record
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
利用永久增量快照配置和典型的高速缓存策略(例如,最近最少使用的),存储部件可以逐出较旧的快照的稳定数据块,可能是快照基线的未改变的数据块。如果稳定数据块已经被逐出,则恢复最新快照将遭受下载稳定块以用于恢复最新快照的时间损失。创建合成基线快照和刷新稳定数据块的逐出数据可以避免逐出稳定数据块,并且降低违反恢复时间目标的风险。
Description
背景技术
本公开一般涉及数据处理领域,并且更具体地涉及数据库和文件管理或者数据结构。
组织可以在涉及数据恢复和/或数据保留的(多个)策略中指定数据管理策略。对于数据恢复,应用或者程序创建备份,并且在需要时恢复备份。存储网络行业协会(SNIA)将备份定义为“被存储在(通常是可移除的)非易失性存储介质上以用于在数据的原始副本丢失或者变得无法访问的情况下进行恢复目的的数据集合;也被称为备份副本”。对于数据保留,应用或者程序创建存档。SNIA将存档定义为“存储系统中可能具有相关联的元数据的数据对象集合,该存储系统的主要目的是该数据的长期保存和保留”。虽然创建存档可以涉及附加操作(例如,进行索引以促进搜索、压缩、加密等)并且备份可以是可写的而存档可能不是可写的,但是对两者的创建都涉及将数据从源复制到目的地。
可以不同地完成用以创建备份或者存档的这种复制。定义的数据对象集合中的所有数据对象都可以被复制,不管自上次备份以来其是否已经被修改以创建“完全备份”。备份还可以是增量的。系统可以将复制限于经修改的对象以创建增量备份,其是累积增量备份或者差异增量备份。SNIA将差异增量备份定义为“自上次完全备份或者增量备份以来被修改的数据对象被复制的备份”。SNIA将累积增量备份定义为“自上次完全备份以来被修改的所有数据对象都被复制的备份”。
数据管理/保护策略可以使用“快照”,该“快照”向备份添加时间方面的点。快照的更具体的定义是“定义数据集合的完全可用副本,该完全可用副本包括当数据在单个时间时刻出现时数据的图像”。换言之,快照可以被认为是在特定时间时刻的备份。因此,用于创建备份的不同技术可以包括用于创建快照的不同技术。SNIA定义进一步阐述了快照“被认为已经在该时间点逻辑地发生”,但是实施方式可以在其它时间执行部分或者全部副本(例如,经由数据库日志重放或者回滚),只要结果是当数据在该时间点出现时数据的一致副本。实施方式可以将时间点副本限制为只读,或者可以允许对副本的后续写入。
组织可以使用不同的备份策略。一些备份策略包括“定期完全”备份策略和“永久增量”备份策略。利用定期完全备份策略,备份应用定期创建完整快照(“基线快照”),并且在定期创建的完整快照之间创建增量快照。利用永久增量备份策略,备份应用创建是完整快照的初始快照,并且之后创建增量快照。
数据管理/保护策略越来越依赖云服务提供者。云服务提供者维持设备和软件,而不会给客户带来细节负担。云服务提供者向客户提供应用编程接口(API)。API提供云服务提供者的资源的访问权限,但是无法查看这些资源。
附图说明
通过参考附图,可以更好地理解本公开的实施例。
图1是将快照元数据排列到针对接收快照的每个定义数据集合的键-值存储库中的示例存储部件的示意图。
图2是在存储部件处维持的键-值存储库中的快照元数据的示意图。
图3是用于利用快照来更新云集成部件的示例操作的流程图。
图4至图6是用于利用有效的快照布局来恢复快照的示例操作的流程图。
图7至图9是针对用以使用有效的快照布局来恢复文件的示例操作的流程图。
图10至图14是用于快照回收的示例操作的流程图。图10是用于快照回收的示例操作的流程图,而图11至图14对图10中的示例操作进行了扩展。
图15是创建合成基线作为减少稳定数据逐出的一部分的云高速缓存快照管理器的示意图。
图16是用于创建具有数据所有权扩展的合成基线快照的示例操作的流程图。
图17至图20描绘了用于创建基于反向增量的合成基线快照以减少稳定数据逐出的示例操作的流程图。
图21描绘了具有存储部件快照管理器的示例计算机系统。
具体实施方式
下面的描述包括体现本公开的实施例的示例系统、方法、技术和程序流程。然而,应该理解,可以在没有这些具体细节的情况下实践本公开。例如,本公开涉及说明性示例中的数据块。但是快照的数据可以被称为数据段、数据对象、数据单元等。在其它实例中,没有详细示出公知的指令实例、协议、结构和技术以免模糊描述。
概述
数据管理应用通过将数据从数据源(该数据源可以是主存储装置或者辅助存储装置(例如,备份服务器))复制到中间存储目的地来创建快照。该中间存储目的地可以是在数据源与私有或者公共云存储装置(即,由云服务提供者托管和/或管理的存储装置)之间的存储部件。从数据源的角度来看,存储部件是快照的目的地,但是操作为用于最终将被存储在云存储装置中的快照的高速缓冲存储器。可以从存储部件快速恢复还未从存储部件中被逐出的快照。存储部件还可以至少有效地响应与元数据有关的请求,因为存储部件维持用于快照(高速缓存的快照和逐出的快照两者)的元数据。然而,恢复具有已经从存储部件中被逐出的数据的快照将引起从云存储装置下载逐出的数据的时间成本。利用永久增量快照配置和典型的高速缓存策略(例如,最近最少使用的),存储部件可以逐出较旧的快照的稳定数据块(即,在多个快照中未发生改变的数据块),这些稳定数据块可以是快照基线的未改变的数据块。如果稳定数据块已经被逐出,则恢复最新快照将遭受下载稳定块以用于恢复最新快照的时间损失。创建合成基线快照和刷新稳定数据块的逐出数据可以避免逐出稳定数据块,并且降低违反RTO的风险。
对云高速缓存存储部件上的快照布局的示例说明
图1是将快照元数据排列到针对接收快照的每个定义数据集合的键-值存储库中的示例存储部件的示意图。存储部件101包括存储设备102的阵列(例如,磁盘阵列、闪速存储体、混合存储阵列等)或者与存储设备102的阵列通信地耦合。存储部件101可以使用一些或者全部存储设备阵列102来对数据源中最终被逐出到云存储装置119的数据进行高速缓存。存储部件101包括协议栈103和部件快照管理器109。
协议栈103是软件的堆栈,在该说明中,该软件堆栈处理用于定义数据集合的快照(“快照流”)的数据流。定义数据集合是可标识的数据集合,该可标识的数据集合可以是卷、分区、虚拟磁盘、文件系统实例等。协议栈103执行通信/网络协议处理以及可能的附加协议处理以从快照流中提取快照分量。快照分量可以是指示快照中的信息是否涉及数据或者元数据、目录改变、索引节点元数据改变等的消息、对象、操作等。协议栈103提取快照分量并且将其格式化以供部件快照管理器109处理。协议栈103可以在与多个数据源的多个连接上处理快照流。协议栈103与数据源执行握手操作以交换有关定义数据集合的信息和在存储部件101处可用于定义数据集合的快照。
部件快照管理器109对从协议栈103接收到的快照元数据和快照数据进行排列。部件快照管理器109将快照元数据排列到由部件快照管理器109维持的适当的一个键-值存储库107中。在该示例说明中,单独的键-值存储库由定义数据集合维持。快照元数据的示例包括快照数据文件内的数据块的索引节点属性、目录信息和位置信息。部件快照管理器109通过快照和定义数据集合来维持快照数据文件117。部件快照管理器109可以通过为每个快照数据文件导出基于本地生成的快照标识符的文件命名方案来对快照数据文件进行排列。部件快照管理器109将快照数据文件存储在阵列102中,并且可以将快照数据文件存储到与不同的定义数据集合对齐的路径(例如,文件夹、目录等)中。类似地,部件快照管理器109将快照元数据107存储在阵列102中,并且可以按照基于定义数据集合标识符的文件名和用于每个定义数据集合的不同路径来对它们进行排列。存储部件101在文件被关闭之后将快照数据文件迁移到云存储装置119,这在快照流结束之后发生。将数据迁移到云存储装置119可以包括一个或者多个数据管理/效率操作,诸如,重复数据删除、压缩和/或加密。然而,存储部件101维持快照元数据,并且将快照元数据复制到云存储装置119。存储部件101可以将元数据复制到云存储装置119,但是也可以向元数据应用数据管理/效率操作并且将修改过的元数据写入云存储装置119。
图2是在存储部件处维持的键-值存储库中的快照元数据的示意图。在图2中,数据源203和数据源205分别将数据备份到数据管理应用实例213和数据管理应用实例215。数据管理应用实例213、215可以在数据源203、205或者其它设备上运行。数据管理应用实例213、215可以是独立应用(例如,备份应用)的实例或者应用或者操作系统的组件的实例。图2描绘了在数据源203上的示例定义数据集合的部分211。部分211包括根目录、子目录“FOO”和子目录中的三个文件:BAR、BAZ和QUX。数据管理应用实例213、215根据策略217向云高速缓存存储部件201传送永久增量快照流。策略217可以指定快照范例、数据集合限制、服务级别目标、每个快照的时间段等。存储部件201根据策略223管理接收到的快照。策略223可以指定针对从存储部件201可获得的快照的保留数量或者保留时间、重复数据删除参数、数据存档要求、数据安全性参数等。存储部件201根据策略223将快照存档到云存储装置225中。
当存储部件201接收到快照时,存储部件201将快照元数据记录插入到适当的键-值存储库中,并且将对应的数据块写入快照数据文件中。存储部件201使用全局映射227将与快照相关联的定义数据集合标识符“A”解析到键-值存储库230(也被称为键-值数据库)和针对定义数据集合A的快照数据文件集合231。存储部件201还可以在全局映射227中指示每定义数据集合的在键-值存储库中所表示的快照以及那些快照之间的父子关系。存储部件201还可以在全局映射227中存储源快照标识符与本地快照标识符的绑定。如先前提到的,生成本地标识符。本地快照标识符标识快照,同时还隐式地指示快照的顺序。源快照标识符(即,在快照源处被生成的快照标识符)(诸如,通用唯一标识符(UUID))不一定是确定性的并且因此,可能不暗示快照的顺序。源快照标识符与本地快照标识符的绑定允许存储部件在两个方向上解析标识符:从源快照标识符解析到本地快照标识符以访问键-值存储库中的快照元数据和从本地快照标识符解析到源快照标识符以关于快照与数据源通信。
图2单独地描绘了在键-值存储库230中的不同类型的快照元数据。存储部件201可以为每种不同类型的快照元数据维持不同的键-值存储库,而不是维持具有不同类型的快照元数据的键-值存储库。存储部件201将快照元数据排列到文件属性元数据233(“索引节点元数据”或者“索引节点记录”)、目录元数据235(“目录记录”)和数据映射元数据237(“数据映射记录”)中。快照元数据记录中的所有快照元数据记录都说明了使用本地快照标识符作为键前缀。存储部件201可以对每个新的快照使用单调递增计数器。在该示例中,基线快照的本地标识符为“1”,并且后续增量快照的本地快照标识符为“2”。因此,示例数据说明:对于定义数据集合A,已经接收到两个快照。存储部件201从本地快照标识符和索引节点编号构建用于索引节点记录的键。索引节点记录的值是针对对应的快照中的索引节点的文件属性(例如,作者、创建时间、上次修改时间等)。存储部件201从本地快照标识符、父索引节点编号和子名称构建用于目录记录的键。子名称可以是文件或者目录的名称。目录记录中的值至少是与子名称相对应的索引节点编号。存储部件201从本地快照标识符、索引节点编号和源文件偏移量(即,如在快照中传送的包含文件的偏移量)构建用于数据映射记录的键。目录记录中的值至少是数据块的长度和快照数据文件偏移量。该快照数据文件偏移量是在由存储部件201创建的快照数据文件内的数据块的偏移量。快照数据文件是针对在对应的快照内的文件的数据的聚合。
存储部件201将快照中的数据写入快照的文件中,该文件被称为快照数据文件。在图2中,存储部件201已经为快照1创建了快照数据文件239,并且为快照2创建了快照数据文件241。如在数据映射记录237中所描绘的,第三列中的偏移值与在对应的快照数据文件内的偏移量相对应。存储部件201已经将用于具有源文件偏移量512(键“1:97:512”)和88兆位(Mb)的长度的索引节点97的快照1数据块或者数据范围写入处于偏移量512的快照数据文件239。存储部件201已经将用于具有源文件偏移量0和256Mb的长度的索引节点98的快照1数据块写入处于偏移量600的快照数据文件239。在快照2中改变了索引节点97的数据。更具体地,用长度为50Mb的数据改变索引节点97的处于源文件偏移量100的数据。对于在快照2中的这种改变,存储部件201已经将该改变的数据块写入如通过具有键“2:97:100”的数据映射记录示出的那样处于偏移量0的快照数据文件241。
图2所示简单示例数据足以概念性地描述在操作为云存储高速缓冲存储器的存储部件处维持的快照数据和元数据布置。可以利用键的同一范例来维持附加元数据。例如,可以为访问控制列表和其它粒度的数据容器(例如,逻辑单元号(LUN))维持附加元数据。按照这样引入快照数据和元数据布置或者布局,本说明书呈现了流程图3至流程图14。这些附图描绘了用于为快照、快照恢复、文件恢复和快照回收创建记录的示例操作。附图将快照管理器称为执行示例操作以与图1一致。该名称“快照管理器”是用于相干地标识执行操作的(多个)程序的功能的逻辑构建。
图3是用于利用快照来更新云集成部件的示例操作的流程图。示例操作假定从快照流接收到“快照分量”。快照分量可以是指示快照中的信息是否与数据或者元数据、目录改变、索引节点元数据改变等有关的消息、对象、操作等。
在框301处,快照管理器检测快照传递,并且接收已经从快照流中提取的信息。该信息标识定义数据集合和源快照标识符。当检测到新的快照传递时,快照管理器可以对快照流执行准备操作。例如,快照管理器可以创建空的快照数据文件,并且基于将被分配给快照的本地快照标识符来对快照数据文件进行命名。
在框303处,快照管理器更新数据集合映射(“全局映射”)以将定义数据集合和指定快照相关联。这种更新可以涉及将快照标识符添加到为定义数据集合接收的快照标识符的列表,从而更新父子快照关系等。
在框305处,快照管理器为快照分配本地标识符,并且从全局映射确定针对定义数据集合的键-值存储库。快照管理器将本地标识符绑定到源快照标识符。可以在全局映射或者指示本地快照标识符与源快照标识符之间的关联的单独的结构中进行该操作。
在框307处,快照管理器开始处理来自快照流的每个快照分量。快照管理器可以从队列中读取快照分量,经由来自协议栈的进程间通信来接收分量等。
在框309处,快照管理器确定快照分量的类型。快照管理器根据传送的信息的类型来为每个快照分量创建记录。快照分量可以包括指示分量类型的标志或者值。快照管理器可以基于快照分量的内容来确定类型。快照分量可以是请求的操作,例如,对更新目录路径或者文件属性的请求。如果快照分量指示索引节点信息,则控制继续至框311。如果快照分量指示目录信息,则控制继续至框313。如果快照分量指示数据块,则控制继续至框315。
在框311处,快照管理器创建索引节点记录并且将其插入到针对定义数据集合的键-值存储库中。快照管理器利用基于被分配给快照的本地快照标识符的键和在快照分量中所指示的索引节点编号来创建索引节点记录。快照管理器利用来自快照分量的索引节点元数据(例如,属性)来创建索引节点记录。控制从框311继续至框317。
在框313处,快照管理器创建目录记录并且将其插入到针对定义数据集合的键-值存储库中。快照管理器利用基于被分配给快照的本地快照标识符的键和来自快照分量的父索引节点编号和子名称来创建目录记录。父索引节点编号标识容器文件系统对象(例如,文件夹或者目录)。子名称可以是容器或者文件的名称。快照管理器利用与子名称相对应的索引节点编号作为记录值来创建目录记录。控制从框313继续至框317。
在框315处,快照管理器将数据块附加到快照的快照数据文件。基于检测到快照流开始(例如,打开用于传输快照流的连接或者会话)而创建快照数据文件。快照管理器记录按照其将数据块写入快照数据文件的偏移量。
在框316处,快照管理器创建数据映射记录并且将其插入到针对定义数据集合的键-值存储库中。快照管理器利用基于被分配给快照的本地快照标识符的键、包含数据块的文件的索引节点编号和在快照分量中所指示的源文件偏移量来创建数据映射记录。快照管理器利用数据块的长度和快照数据文件偏移量作为值来创建数据映射记录。控制从框316继续至框317。
在框317处,快照管理器确定是否已经到达快照的结尾。虽然快照和快照流在概念上可以互换,但是快照流包括用于传送快照的对应通信基础设施。因此,快照管理器可以接收用于快照的数据中的所有数据,但是快照流仍然可以被认为是活动的,因为会话尚未被关闭。快照管理器可以在快照结束和开始时接收通信,但是当快照流(即,会话或者连接)被中断或者重新启动时可能不会得到通知。快照管理器可以接收表示快照结束的终止命令或者关闭命令。如果还未到达快照的结尾,则控制继续回到框307。否则,控制继续至框319。
在框319处,快照管理器关闭快照数据文件。该快照数据文件在被关闭之后可以被迁移到云存储装置。
在框321处,快照管理器更新本地快照标识符以用于分配给下一接收到的快照。例如,快照管理器使计数器递增。
图4至图6是用于利用上面描述的快照布局来恢复快照的示例操作的流程图。图4是用于恢复定义数据集合的快照的示例操作的流程图。恢复操作使用已经描述的快照元数据记录和快照数据文件来有效地恢复快照。如果已经从存储部件中逐出相关的快照数据文件,则存储部件将下载快照数据文件。恢复快照会将有效的记录和快照中的数据合并,这在快照被恢复回基线快照之前。被恢复的快照控制有效性。
在框401处,快照管理器检测指定数据集合和快照的恢复请求。快照管理器接收包括定义数据集合标识符和源快照标识符的请求。恢复请求还指示恢复目标(即,应该在哪里传送快照信息以用于恢复)。
在框403处,快照管理器标识针对指定的定义数据集合的快照键-值存储库,并且确定针对指定快照的本地快照标识符。快照管理器访问数据集合元数据以确定被绑定到源快照标识符的本地快照标识符。快照管理器还标识针对定义数据集合的键-值存储库。例如,快照管理器将数据集合标识符解析到对键-值存储库的引用或者至键-值存储库的路径。键-值存储库可以具有基于数据集合标识符的名称。
在框405处,快照管理器标识针对指定快照的基线快照。快照管理器访问指示针对每个定义数据集合的快照之间的父子关系的结构。快照管理器将基线快照作为父进行追踪,并且将后续增量快照作为基线快照的子进行追踪。
在框407处,快照管理器使用本地快照标识符作为键前缀来从所标识的键-值存储库中检索记录。检索到的记录包括索引节点记录、目录记录和数据映射记录。快照管理器将记录中的所有记录都检索到工作存储器(例如,随机存取存储器)中以合并记录。快照管理器可以按照记录类型来进行检索和合并,而不是通过本地快照标识符来检索所有记录。
在框409处,快照管理器确定指定快照是否是基线快照。快照管理器可以将指定快照的本地标识符与在框405处确定的基线快照的本地标识符相比较。如果指定快照是基线快照,则控制继续至框411。否则,控制继续至框415。
在框415处,快照管理器利用指定快照的索引节点记录来创建索引节点属性结构。该索引节点属性结构是用以托管合并的索引节点记录的临时数据结构。快照管理器最初利用指定快照的索引节点记录来创建索引节点属性结构,因为在合并期间发生冲突的情况下,指定快照控制有效性。
在框417处,快照管理器追踪检索到的目录记录的父索引节点编号和子名称对。快照管理器使用追踪到的配对来标识先前快照中指定快照目录记录使其无效的目录记录。
在框419处,快照管理器将检索到的目录记录传送至在恢复请求中所指示的恢复目标。快照管理器可以通过检查键或者值来确定检索到的记录中作为目录记录的那些记录。检索到的目录记录是有效的,因为它们属于指定快照。
在框421处,快照管理器利用指定快照的数据映射记录来恢复数据映射。快照管理器利用指定快照的数据块的范围来创建恢复数据映射,因为这些数据块正进行控制。
在框423处,快照管理器检索快照的记录并且将其合并回基线快照。快照管理器根据指定快照记录和合并记录来确定哪些记录无效。图5提供了有关该示例操作的附加细节。
在框425处,快照管理器将索引节点属性结构传送至恢复目标。索引节点属性结构现在具有来自已经从当前快照采集回基线快照的有效索引节点记录的信息。目录记录已经被用来帮助恢复目标在接收到快照数据之前重新构建快照结构。
在框427处,快照管理器基于恢复数据映射来向恢复目标传送有效的数据块。
如果在框409处确定指定快照是基线快照,则快照管理器在框411处将检索到的索引节点记录和目录记录传送至恢复目标。由于指定快照是基线快照,因此,合并可以被避免。
在框412处,快照管理器访问针对指定快照的快照数据文件。快照管理器可以使用指定快照的本地标识符来标识适当的快照数据文件。快照管理器还根据数据映射记录来将数据装配到缓冲区中。
在框413处,快照管理器将数据缓冲区和来自数据映射记录的信息传送至恢复目标。快照管理器可以传送有关索引节点编号、源文件偏移量和数据块长度的信息。
图5是用于检索快照的记录并且将其合并回基线快照的示例操作的流程图。图5与图4中的框423相对应。
在框501处,快照管理器开始将指定快照之前的每个快照迭代回基线快照。快照管理器可以使用父子关系元数据来确定先前快照和基线快照。本说明书将当前迭代的快照称为所选择的快照。
在框503处,快照管理器使用所选择的快照的本地快照标识符作为键前缀来从所标识的键-值存储库中检索记录。使用所选择的快照的本地快照标识符作为键前缀将检索针对所选择的快照的键-值存储库中的所有记录:索引节点记录、目录记录和数据映射记录。
在框505处,快照管理器将检索到的索引节点记录中的有效索引节点记录合并到索引节点属性结构中。快照管理器将检索到的记录的索引节点编号与索引节点属性结构中的索引节点编号相比较。如果找到匹配,则丢弃检索到的记录,因为针对快照的索引节点记录的有效版本在已经被写入索引节点属性结构时被恢复。
在框507处,快照管理器向恢复目标传送检索到的目录记录中指示还未被传送至恢复目标的父索引节点和子名称对的那些目录记录。快照管理器可以将检索记录的父索引节点编号和子名称对与追踪已经被传送的那些配对的列表相比较。如果已经进行了传送,则已经传送了针对正被恢复的快照的有效目录记录。
在框509处,快照管理器更新已经被传送回恢复目标的目录记录的追踪到的父索引节点编号和子名称对。
在框511处,快照管理器从所选择的快照的数据映射记录中标识有效的数据范围,并且将有效的范围合并到恢复数据映射中。快照管理器可以确定所选择的快照的数据映射记录中所表示的每个索引节点的范围。然后,快照管理器可以将范围与数据映射记录的偏移量和长度相比较。已经在数据映射中的数据范围是有效的,而来自所选择的快照数据映射记录的任何重叠或者匹配范围都已经被重写并且无效。对于指示部分有效的数据范围的数据映射记录,快照管理器可以修改在数据映射记录中所指示的偏移量和长度以仅包含范围的(多个)有效子范围。快照管理器还可以对指示具有(多个)有效子范围的数据块的数据映射记录进行注释。该快照管理器可以使用注释来指导稍后从快照数据文件复制数据。忽略仅指示无效范围的数据映射记录。
在框513处,快照管理器确定其是否已经处理了基线快照。如果快照管理器尚未到达基线快照,则控制返回到框501。
图6是用于基于恢复数据映射来向恢复目标传送有效的数据块的示例操作的流程图。图6与图4的框427相对应。利用现在在图4中被创建并且在图5中被更新的恢复数据映射中所定义的有效数据范围,快照管理器可以从快照数据文件返回有效数据块。然而,实施例可以将所有的数据映射记录传送回恢复目标,并且允许备份应用(例如,在恢复目标处)重新装配数据文件。
在框601处,快照管理器选择恢复数据映射的第一记录。快照管理器可以将恢复数据映射创建为存储合并的记录的键以用于按照快照和索引节点来对记录进行排序的另一键-值存储库。快照管理器可以将合并的记录中的信息提取到不同的临时数据结构中。恢复数据映射按照快照被恢复回基线快照的顺序来指示快照。换言之,快照管理器可以迭代被合并到恢复数据映射中的每个数据映射记录。在当前迭代的记录中所指示的快照被称为所选择的快照。
在框603处,快照管理器加载所选择的快照的快照数据文件。加载快照数据文件可以是:从本地存储装置加载到存储部件的存储器中或者从云存储装置下载。
在框605处,快照管理器将由在记录中所标识的有效数据范围定义的数据块复制到缓冲区中。快照管理器确定针对每个索引节点编号在所选择的快照数据文件中的数据范围。由于索引节点编号还影响数据映射记录的排序,因此,快照管理器可以遍历将遵循快照和索引节点编号的顺序的合并记录。
在框607处,快照管理器更新缓冲区描述符以使描述符指示索引节点编号、源文件偏移量和数据块长度。缓冲区描述符指导恢复目标将缓冲区中的数据块装配到文件中。
在框609处,快照管理器确定是否满足缓冲区阈值。该缓冲区阈值可以利用策略被配置或者由快照管理器基于存储部件的可用资源动态地配置。如果满足缓冲区阈值,则控制继续至框611。如果不满足,则控制继续至框613。
在框611处,快照管理器将缓冲区与缓冲区描述符一起冲刷到恢复目标。例如,快照管理器经由协议栈将缓冲区内容和缓冲区描述符传送至恢复目标。缓冲区被清空以用于存储附加数据块。控制从611继续至框613。
在框613处,快照管理器确定恢复数据映射中是否存在附加记录。如果存在附加记录,则控制继续至框615。在框615处,快照管理器选择在恢复数据映射中的下一记录。控制从框615继续至框603。如果恢复数据映射中不存在另一记录,则控制继续至框617。
在框617处,快照管理器确定缓冲区是否是空的。如果缓冲区不是空的,则快照管理器将缓冲区和缓冲区描述符冲刷到恢复目标。
图7至图9是用于恢复文件的示例操作的流程图。图7是用于通过指定快照来恢复文件的示例操作的流程图。这些示例操作说明了可能的恢复的不同粒度。还可以假设已经在键-值存储库中为指定粒度级别维持了快照元数据来恢复其它粒度级别(例如,LUN)。初始操作与用于快照恢复的那些初始操作类似。在图7中,由框701和框703表示的示例操作与由框401和框403表示的那些示例操作类似。
在框701处,快照管理器检测指定定义数据集合、快照和文件的恢复请求。快照管理器接收包括定义数据集合标识符、源快照标识符和文件名称的请求。恢复请求还指示恢复目标(即,应该在哪里传送快照信息以用于恢复)。
在框703处,快照管理器标识针对指定的定义数据集合的快照键-值存储库,并且确定针对指定快照的本地快照标识符。快照管理器访问数据集合元数据以确定被绑定到源快照标识符的本地快照标识符。快照管理器还标识针对定义数据集合的键-值存储库。例如,快照管理器将数据集合标识符解析到对键-值存储库的引用或者至键-值存储库的路径。键-值存储库可以具有基于数据集合标识符的名称。
在框705处,快照管理器递增地搜索快照的目录记录以获得待恢复的文件的索引节点编号。快照管理器递增地搜索待恢复的文件的路径名(例如,每个目录或者文件夹)的元素。快照管理器查找每个路径元素的索引节点编号,并且然后使用前一元素的已解析的索引节点编号来搜索下一元素。例如,快照开始在目录记录中搜索“/segment1”以最终找到针对文件“/segment1/segment2/segment3/foo_file”的索引节点编号,快照从指定快照往回经过前面的快照。
图8是用于对目录记录的这种增量搜索的示例操作的流程图。由于目录记录被存储在针对包括被恢复的文件的数据集合的键-值存储库中,因此,快照管理器利用从索引节点编号和子名称(即,路径元素的名称)构建的键前缀来搜索目录记录。在找到子索引节点编号(即,被搜索的路径元素的索引节点编号)之后,快照管理器继续搜索下一路径元素,直到找到待恢复的文件的索引节点编号。
在框801处,快照管理器将索引节点根编号设置为第一前缀搜索参数。快照管理器使用变量来构建(和重新构建)用于搜索目录记录的键前缀。第一前缀搜索参数是将被用于搜索的键前缀的第一部分。快照管理器最初将第一前缀搜索参数设置为已知的索引节点编号,在该示例中,该已知的索引节点编号是根索引节点编号。
在框802处,快照管理器开始从指定快照到每个先前的快照搜索快照的目录记录,直到找到被搜索的索引节点编号。在最初,快照管理器利用指定快照开始搜索。
在框803处,快照管理器将变量设置为指定快照(即,指定快照的本地快照标识符)。快照管理器还将搜索前缀设置为第一搜索前缀参数和路径元素。例如,快照管理器将搜索前缀设置为“77:dept1”。
在框804处,快照管理器使用搜索快照的本地快照标识符作为键前缀来从所标识的键-值存储库中检索目录记录。假设将各种类型的记录存储在同一键-值存储库中的快照元数据布置,快照管理器可以使用键-值存储库中的元数据来选择性地检索具有键前缀的目录记录,而不是具有匹配的键前缀的所有记录(即,不检索搜索快照的索引节点记录)。如果快照管理器在不同的键-值存储库中维持不同类型的快照元数据,则快照管理器可以通过键前缀来从键-值存储库中检索所有记录以获得目录元数据。
在框807处,快照管理器在检索到的目录记录中搜索搜索前缀。快照管理器在检索到的目录记录的键中搜索具有与搜索前缀匹配的索引节点编号和子名称的条目。控制从框807继续至框809。
在框809处,快照管理器确定被搜索的路径元素是否被解析为索引节点编号。换言之,快照管理器确定是否在检索到的目录记录中的一个目录记录中找到与搜索前缀的匹配。如果找到索引节点编号,则控制继续至框813。如果没有找到索引节点编号,则控制继续至框810。
在框810处,快照管理器确定搜索到的快照是否是基线快照。快照管理器维持指示哪些快照是基线快照的元数据。如果搜索到的快照是基线快照,则还未找到文件,并且快照管理器在框812处指示未找到文件。如果搜索到的快照不是基线快照,则控制继续至框811。
在框811处,快照管理器将前一快照设置为搜索快照。例如,快照管理器将变量“search_snapshot”更新为在当前快照之前的快照的本地快照标识符。控制从框811继续回到框804。
在框813处,快照管理器将第一前缀搜索参数设置为已解析的索引节点编号。快照管理器将第一前缀搜索参数更新为已解析的索引节点编号以便继续递增地搜索。
在框815处,快照管理器确定路径元素是否是待恢复的文件的名称。如果路径元素不是文件名,则快照管理器利用指定快照作为搜索快照重新开始来搜索下一路径元素。如果路径元素是文件名,则快照管理器已经找到待恢复的文件的索引节点编号。该索引节点编号已经被存储在第一前缀搜索参数中。在框816处,返回索引节点编号作为第一前缀搜索参数。索引节点编号然后被用来获得用于如在图7中的框717和框719中的任何一个中指示的那样使用数据映射记录来恢复文件的数据。
在框715处,快照管理器确定指定快照是否是基线快照。如果指定快照是基线快照,则可以利用基线快照来恢复文件,并且控制继续至框717。否则,控制继续至框719。
在框717处,快照管理器使用指定快照的本地标识符(在这种情况下,指定快照的本地标识符是基线快照的本地标识符)和在基线目录记录中找到的索引节点编号作为键前缀来检索数据映射记录。然后,快照管理器根据检索到的数据映射记录来重新构建文件。为了重新构建文件,快照管理器加载基线快照数据文件,并且根据在数据映射记录中所指示的偏移量和长度来装配数据。替代地,实施例可以将基线快照数据文件写入缓冲区并且将缓冲区与指示源文件偏移量和长度的缓冲区描述符一起传送至恢复目标。恢复目标可以利用缓冲区和缓冲区描述符来重新装配文件。控制从框717继续至框721。
在框719处,快照管理器跨快照合并数据映射记录,并且根据合并的数据映射记录来重新构建指定文件。合并丢弃无效的数据范围并且维持有效的数据范围,因为每个先前的快照数据映射记录都与指定快照的数据映射记录合并。
在框721处,快照管理器将恢复的文件传送至恢复目标。
图9是用于跨快照合并数据映射记录并且根据合并的数据映射记录来重新构建指定文件的示例操作的流程图。图9与图7的框719相对应。
在框901处,快照管理器使用指定快照的本地快照标识符和已解析的索引节点编号作为键前缀来从所标识的键-值存储库中检索数据映射记录。利用检索到的数据映射记录,快照管理器创建文件恢复映射。该文件恢复映射与在恢复快照时被使用的数据恢复映射相似。文件恢复映射是用以追踪有效数据范围的临时结构,因为检查先前的快照的数据映射记录以确定由数据映射记录标识的数据范围的有效性。文件恢复映射最终被用来收集数据块以用于文件的恢复。
在框903处,快照管理器开始针对每个先前快照返回到基线快照的操作。快照管理器可以基于指定快照或者所选择的快照的本地标识符来确定每个先前快照的本地标识符。正被评估的快照被称为所选择的快照。
在框905处,快照管理器使用指定快照的本地快照标识符和已解析的索引节点编号作为键前缀来从所标识的键-值存储库中检索数据映射记录。快照管理器将对检索到的数据映射记录的数据范围进行评估以确定有效范围。
在框907处,快照管理器从所选择的快照的检索到的数据映射记录标识(多个)有效数据范围,并且将所标识的(多个)有效数据范围合并到基于(多个)有效数据范围的文件恢复映射中。为了进行合并,快照管理器可以插入不与已经存在于文件恢复映射中的任何数据范围重叠的数据范围。可以通过比较源文件偏移量和长度来确定该数据范围。如果检测到重叠,则快照管理器可以修改正被合并的数据映射记录的偏移量和/或长度以仅指示(多个)有效范围。如果(多个)有效数据范围分割了由数据映射记录指示的数据范围,则快照管理器可以在文件恢复映射中创建具有附加有效范围的附加记录,或者用限定附加有效数据范围的源文件偏移量和长度来对现有数据映射进行注释。修改源文件偏移量和/或长度以标识(多个)有效数据范围还可能会引起修改对应的快照数据文件偏移量。例如,数据块可以具有256的源偏移量、100的长度和300的快照数据文件偏移量。快照管理器确定处于偏移量300到350的数据被重写。因此,数据块已经被分成从偏移量256到300和从偏移量350到356的有效范围。在快照数据文件内,现在有效数据范围是从偏移量300到344和从偏移量394到400。快照管理器将记录源文件偏移量和快照数据文件偏移量两者的改变,并且将改变长度记录为44Mb和6Mb的两个不同长度。
在框909处,快照管理器确定是否已经到达基线快照(即,所选择的快照是基线快照吗)。如果已经到达基线快照,则处理继续至框911。否则,控制返回到框903。
在框911处,快照管理器开始装配数据以从与在文件恢复映射中所指示的每个快照相对应的每个快照数据文件恢复文件。快照管理器通过所选择的快照的本地标识符来选择快照。
在框913处,快照管理器加载所选择的快照的快照数据文件。快照管理器从托管存储部件的文件系统加载文件,或者从云存储装置下载快照数据文件。快照管理器利用定义数据集合标识符和本地快照标识符来确定快照数据文件的位置和标识。如先前提到的,快照管理器可以在与拥有的定义数据集合相对应的路径中组织快照数据文件,并且基于本地快照标识符来对快照数据文件进行命名。
在框915处,快照管理器如在文件恢复映射中指示的那样重新构建文件。快照管理器可以根据在针对所选择的快照的文件恢复映射记录中所指示的快照数据文件偏移量和长度以及已解析的索引节点编号,将数据从快照数据文件读出到缓冲区中。如果将数据读入缓冲区,则快照管理器还可以利用源文件偏移量和数据块长度来更新缓冲区描述符。
在框917处,快照管理器确定文件恢复映射是否指示另一快照。如果不是,则合并结束。如果存在文件恢复映射中所指示的另一快照,则控制返回到框911。
除了恢复操作之外,快照管理器还允许删除快照。当删除一个或者多个快照时,待删除的(多个)快照的有效快照元数据和快照数据被合并到后续快照中。这被称为快照回收。图10是用于快照回收的示例操作的流程图,而图11至图14对图10中的示例操作进行了扩展。
在图10的框1001处,快照管理器检测删除针对定义数据集合的(多个)指定快照的请求。该请求标识定义数据集合和用于删除的一个或者多个快照。
在框1003处,快照管理器标记所标识的用于删除的(多个)快照。快照管理器可以维持描述定义数据集合的数据集合元数据(例如,源标识符、源名称、所有者等)。数据集合元数据还可以指示已经为定义数据集合创建的快照。快照管理器可以在数据集合元数据中设置指示已删除的快照的标志或者值。
在框1005处,快照管理器确定对于定义数据集合是否满足回收阈值。可以针对所有数据集合或者向快照管理器传送快照的每个数据集合配置阈值。作为示例,阈值可以是被标记为用于删除的快照的数目、自快照已经被标记为用于删除以来的时间段和/或基于运行平均变化率计算得出的、与待删除的(多个)快照相对应的数据的量。如果尚未满足阈值,则过程结束。
如果满足阈值,则快照管理器在框1007处确定被标记为用于删除的(多个)快照的本地标识符。例如,快照管理器可以读取将源快照标识符绑定到本地快照标识符的数据集合元数据。
在框1009处,快照管理器标识最新的(多个)标记快照。该所标识的快照被称为所选择的快照。快照管理器可以将最新的标识为具有最大本地标识符的标记快照,因为本地生成的快照标识符是确定性的。
在框1011处,快照管理器标识在所选择的快照之后的快照,即,未被标记为用于删除的最新相邻快照。该后续快照被称为有效快照,因为其将从所选择的快照获得有效数据的所有权。
在框1013处,快照管理器使用有效快照的本地快照标识符作为键前缀来从定义数据集合的键-值存储库中检索记录。这检索针对有效快照的各种元数据记录,在控制有效快照元数据时使用这些元数据记录。
在框1015处,快照管理器使用所选择的快照的本地快照标识符作为键前缀来从定义数据集合的键-值存储库中检索记录。检索这些记录以允许快照管理器标识所选择的快照的有效数据。
在框1017处,快照管理器隐式地向有效快照传递有效索引节点记录和有效目录记录的所有权。对所有权的传递是隐式的,因为“已删除的”快照的有效索引节点和目录记录将继续在其键前缀中指示被标记为已删除的快照。然而,快照管理器然后将处理指示被标记为已删除的快照的记录(例如,当执行恢复时),犹如未被标记为已删除的下一后续快照的一部分。
在框1021处,快照管理器确定所选择的快照的有效数据范围,并且隐式地将有效数据范围传递至有效快照。与目录记录和索引节点记录一样,快照管理器将处理被标记为已删除的快照的快照数据文件和数据映射记录作为下一后续有效快照的一部分。为了反映重写的数据,数据映射记录和快照数据的所有权的隐式传递可以包括:快照管理器更新范围并且在待删除的快照的快照数据文件中“打孔”。在快照数据文件中打孔将涉及删除在有效快照中被重写的数据并且相应地更新(多个)数据映射记录。
在框1023处,快照管理器确定是否存在被标记为用于删除的附加快照。快照管理器还可以将所选择的快照的状态从“待删除”状态更新为“已删除”状态。虽然是已删除,但是未从数据集合元数据中去除对快照的指示。如果不存在附加标记快照,则回收过程结束。如果存在其它标记快照,则控制继续至框1025。
在框1025处,快照管理器标识标记快照中下一最新的标记快照。该下一最新的标记快照被称为所选择的快照。
在框1027处,快照管理器确定所选择的快照是否与先前选择的快照相邻。快照管理器可以维持在已排序的队列中待删除的快照,并且确定与队列的邻接。快照管理器可以检查数据集合元数据以确定先前选择的快照和所选择的快照是否相邻(例如,快照5和快照6是相邻的)。如果所选择的快照和先前选择的快照相邻,则所有权继续被传递至有效快照。否则,标识新的有效快照。如果快照不相邻,则控制继续回到框1011。如果快照相邻,则控制继续回到框1015。
图11是用于隐式地向有效快照传递有效索引节点和目录记录的所有权的示例操作的流程图。图11与图10的框1017相对应。
在框1101处,快照管理器开始迭代所选择的快照的索引节点记录中的每个索引节点记录以确定有效性。快照管理器可以从检索到的记录中的第一记录遍历到最后记录,因为已经按照快照标识符和索引节点编号对它们进行了排序。当前迭代的索引节点记录被称为所选择的索引节点记录。
在1103处,快照管理器确定在所选择的索引节点记录中所指示的索引节点编号是否在有效快照的索引节点记录中被指示。如果索引节点编号匹配,则所选择的快照的索引节点记录无效。如果索引节点编号匹配,则控制继续至框1105。否则,所有权隐式地传递至有效快照。有效索引节点记录的所有权隐式地传递,因为所有权被假定为下一有效(即,未被删除或者未被标记为用于删除)快照。这避免了更新有效记录的键前缀的开销。
在框1105处,快照管理器从定义数据集合的键-值存储库中删除所选择的快照的索引节点记录。该索引节点记录被删除,因为其在有效快照中已经发生了改变。
在框1108处,快照管理器确定是否存在所选择的快照的待评估的附加索引节点记录以便进行所有权传递。如果存在附加索引节点记录,则控制继续至框1101。如果不存在,则控制继续至框1109。
在框1109处,快照管理器开始迭代所选择的快照的目录记录中的每个目录记录以确定有效性。快照管理器可以从检索到的目录记录中的第一记录遍历到最后记录,因为已经按照快照标识符和父节点编号对它们进行了排序。当前迭代的目录记录被称为所选择的目录记录。
在1111处,快照管理器确定在所选择的目录记录中所指示的父索引节点编号和子名称是否在有效快照的目录记录中被指示。如果父索引节点编号和子名称的组合匹配,则所选择的快照的目录记录无效。如果找到匹配,则控制继续至框1113。否则,与有效的索引节点记录一样,目录记录的所有权隐式地传递至下一有效快照。
在框1113处,快照管理器从定义数据集合的键-值存储库中删除所选择的快照的目录记录。该目录记录被删除,因为其在有效快照中已经发生了改变。
在框1117处,快照管理器确定是否存在所选择的快照的待评估的附加目录记录以便进行所有权传递。如果存在附加目录记录,则控制继续至框1109。
图12是用于确定所选择的快照的有效数据范围并且隐式地传递至有效快照的示例操作的流程图。图12与图10的框1021相对应。
在框1201处,快照管理器开始迭代所选择的快照的每个检索到的数据映射记录。与其它类型的记录一样,快照管理器可以按顺序遍历记录。当前迭代的数据映射记录被称为所选择的数据映射记录。
在框1203处,对于有效快照数据映射记录中的同一索引节点,快照管理器通过数据映射记录中的任何数据映射记录来确定由所选择的数据映射记录指示的数据范围的重写程度(若有的话)。为了进行这种确定,对于同一索引节点编号,快照管理器相对于有效快照的数据映射记录的源文件偏移量和长度对所选择的数据映射记录的源文件偏移量和长度进行评估。如果在所选择的数据映射记录中所指示的数据范围完全被重写,则控制继续至框1207。
由于数据块已经被重写,因此快照管理器在框1207处从所选择的快照的快照数据文件中删除数据块。快照管理器然后删除所选择的数据映射记录。替代地,实施例可以将数据块和数据映射记录标记为已删除或者用于删除。控制从框1207继续至框1217。
如果快照管理器确定了所选择的数据映射记录的数据范围未被重写,则控制继续至框1217,因为记录和快照数据文件保持不变并且将被假定为由如先前提到的下一后续有效快照所拥有。这有助于回收效率。
如果快照管理器在框1203处确定了所选择的数据映射记录的数据范围被部分重写,则控制继续至框1209。在框1209处,快照管理器确定未被重写的有效数据子范围,并且相应地更新所选择的快照的快照数据文件和数据映射记录。控制从框1209继续至框1217。在框217处,快照管理器确定是否存在所选择的快照的附加数据映射记录。
图13至图14是描绘用于确定未被重写的有效数据子范围并且相应地更新所选择的快照的数据映射记录的示例操作的流程图。图13至图14提供了详细说明图12的框1209的示例操作。
在框1301处,快照管理器将由所选择的数据映射记录指示的数据范围的起点和结尾与针对在有效快照数据映射记录中所指示的同一索引节点的数据范围的起点和结尾相比较。起点将是源文件偏移量,并且结尾将是被添加至源文件偏移量的长度。这确定了数据范围的哪个子范围尚未被重写(即,保持有效):前子范围、后子范围或者分割子范围(即,数据范围的中间部分被重写)。每个子范围引起对源数据文件偏移量和/或长度的不同更新以进行合并。如果有效子范围是后子范围,则控制继续至框1303。
在框1303处,快照管理器从所选择的快照的快照数据文件中删除在前子范围中的数据。快照管理器从指示的快照数据文件偏移量中删除针对前子范围的长度的数据。
在框1307处,快照管理器更新所选择的快照的数据映射记录。快照管理器更新数据映射记录中的源文件偏移量和快照数据文件偏移量以考虑删除前子范围。例如,快照管理器将前子范围的长度添加至源文件偏移量和数据文件偏移量。快照管理器还将数据映射记录中的长度更新为后子范围长度。
如果有效子范围是如在框1301处确定的前子范围,则控制继续至框1309。在框1309处,快照管理器从所选择的快照的快照数据文件中删除在后子范围中的数据。快照管理器从后子范围的起点中删除针对后子范围的长度的数据。
在框1313处,快照管理器更新所选择的快照的数据映射记录以指示后子范围的删除。快照管理器通过减少由后子范围的长度指示的长度来更新数据映射记录中的长度。
如果快照管理器确定由所选择的数据映射记录指示的数据范围被分成两个有效数据范围,则快照管理器针对有效范围中的一个有效范围更新所选择的数据映射记录,并且为另一有效范围插入新的数据映射记录。在框1401处,快照管理器通过基于有效子范围的已经确定的长度和当前指示的数据文件偏移量删除有效子范围之间的数据来在快照数据文件的快照数据文件中打孔。
在框1403处,快照管理器利用前子范围的长度来更新在所选择的快照的数据映射记录中的长度。
在框1409处,快照管理器基于已经存在的数据映射记录来创建和插入数据映射记录。快照管理器从所选择的快照的本地标识符、索引节点编号和被修改以考虑后子范围的起点的源文件偏移量构建用于新数据映射记录的键。为了修改源文件偏移量,快照管理器按照前子范围和重写的子范围的长度来调整原始源文件偏移量以指示有效的后子范围的源文件偏移量。快照管理器还创建具有后子范围的长度的数据映射记录,并且还根据前子范围的长度和重写的子范围的长度来调整快照数据文件偏移量。虽然图14更新现有的数据映射记录以指示有效的前子范围并且为有效的后子范围创建新记录,但是实施例可以反过来进行。
对用以减少稳定数据逐出的合成基线快照的示例说明
除了快照管理器管理快照并且根据所描述的布局来创建快照数据和元数据之外,快照管理器还可以被用来减少在永久增量快照范例中使用不考虑时间局部性的逐出策略的逐出机制对存储部件效率的损害。如先前提到的,不考虑永久增量范例的特点可能导致逐出快照的稳定数据,这会有违反服务级别目标的风险。快照元数据的所描述的布置或者布局促进有效地创建合成基线快照,该合成基线快照是利用增量快照被创建的基线快照。存储部件可以结合刷新逐出状态数据使用合成基线以减少稳定数据逐出。
图15是创建合成基线作为减少稳定数据逐出的一部分的云高速缓存快照管理器的示意图。云集成存储部件1500从数据源接收前面是基线快照的永久增量快照。云集成存储部件1500被认为是“云集成的”,因为其操作为用于被存储到云存储装置中的数据的网桥和/或网关,并且将本地数据管理与云数据管理集成。云集成存储部件1500将备份数据缓存在高速缓冲存储器1508中。高速缓冲存储器1508是由本地存储装置(例如,磁盘阵列、闪速存储阵列或者混合阵列)组成的逻辑高速缓冲存储器。
云集成存储部件1500接收图15中的基线快照和两个后续增量快照。当云集成存储部件1500接收基线快照时,数据被存储到高速缓冲存储器1508中。云集成存储部件1500(以下称为“存储部件”)基于接收到基线快照来更新逐出状态数据结构,这引起逐出状态数据结构的第一状态1503。存储部件1500利用对接收到的数据的指示(在图15中被标识为数据块A至E)和对应的逐出状态数据来更新逐出状态数据结构。在该示例说明中,逐出状态数据是时间指示符,并且接收到的数据中的所有数据都与时间指示符“T1”相关联,该时间指示符“T1”表示在存储部件1500处接收到数据的时间。在逐出状态数据结构中的条目的数目(“大小”)可以是可配置的。策略或者管理员配置可以基于高速缓冲存储器1508的存储容量来约束大小,高速缓冲存储器1508的存储容量也可以是可配置的。高速缓存状态数据结构可以不受约束,并且可以发展,直到逐出机制对其进行修整或者清除(例如,与固定大小的阵列形成对比,重新设置结束指针)。
当存储部件1500接收到第一增量快照时,存储部件1500更新逐出状态数据结构,从而产生第二状态1505。在该第二状态1505中,逐出状态数据结构指示数据块D’、E’和F。因此,自基线快照以来,数据块D和E已经被修改。存储部件1500将这些附加条目与时间指示符T2相关联。
当存储部件1500接收到第二增量快照时,存储部件1500更新逐出状态数据结构,从而产生第三状态1507。在第三状态1507中,逐出状态数据结构指示数据块E”和F’。这表示:自第二增量快照以来,数据块E’和F已经被修改。存储部件1500将这些附加条目与时间指示符T3相关联。
假设下一增量快照包括3个数据块,如果使用基于寿命的(例如,最近最少使用的)逐出策略,则稳定数据块A至C将被逐出。在说明中的这一点上,到此为止被生成的快照中的所有三个快照都将使用数据块A至C。但是这些数据块将从存储部件高速缓冲存储器1508中被逐出到云存储装置中。如果接收到恢复请求,则恢复将触发从云存储装置下载数据块A至C。
为了利用高速缓存的数据块来避免这种逐出稳定数据和促进有效恢复,部件快照管理器1501通过在针对与接收到的快照相对应的定义数据集合的键-值存储库1509中操纵快照元数据来创建合成基线快照。部件快照管理器1501可以通过操纵快照元数据的已经描述的布局来有效地创建合成基线快照,并且避免昂贵的数据传递。部件快照管理器1501还刷新与将由合成基线快照使用的数据块相关联的时间指示符。在该示例说明中,部件快照管理器1501操纵快照元数据以使用第二增量快照作为用于合成基线快照的基础。由于恢复第二增量快照将使用数据块A至C和D’,因此,与这些数据块相关联的时间指示符被设置为与第二增量快照相关联的时间指示符T3。
存储部件1500被假定为使用重复数据删除,所以,部件快照管理器1501还更新指纹数据库1511中的数据。部件快照管理器1501更新指纹数据库1511中的数据以将第二增量快照和与数据块A至C和D’相对应的指纹相关联。部件快照管理器1501可以使用针对第二增量快照的本地快照标识符来在指纹数据库1511中将第二增量快照与数据块A至C和D’相关联。
用于创建合成基线快照和修改逐出状态数据的触发可以发生变化。虽然图15将这些操作图示为在接收到第二增量快照时发生,但是一些实施例可以在其它时间执行这些操作,诸如,当接收到每个快照时。另外,后台进程可以执行这些操作而不是被标识为部件快照管理器的程序,尽管后台进程可能是部件快照管理器的组件。
图16至图20是用于创建合成基线快照并且修改逐出状态数据以承受稳定数据逐出的不同实施例的示例操作的流程图。示例操作假定如先前描述的快照元数据和快照数据的布置。附图指的是执行操作以与图15一致的快照管理器。
图16是用于创建具有数据所有权扩展的合成基线快照的示例操作的流程图。示例操作将有效快照元数据的“所有权”从原始所有者快照扩展到最新快照。所有权是指快照元数据与快照标识符的关联,使得当请求快照元数据时,将针对任何相关联的快照检索快照元数据。为了扩展所有权,示例操作对先前快照的仍然有效的快照元数据记录进行复制,并且在复制的记录中指示最新快照的本地快照标识符。
在框1601处,快照管理器接收快照,并且为接收到的快照创建快照元数据记录。如上所述,快照管理器创建索引节点记录、目录记录和数据映射记录。
在框1603处,快照管理器确定是否满足用于创建合成基线的阈值。阈值可以被配置成实现合成基线创建的频率与管理高速缓存之间的期望平衡以避免逐出稳定数据。阈值可以是快照的数目、高速缓存的数据的大小等。作为示例,阈值可以基于快照的数目和通过使用快照变化率消耗的高速缓存的量(即,增量快照数据的平均大小)两者。利用快照变化率,快照管理器可以基于平均变化率来设置与预期高速缓存消耗相对应的阈值快照数目。阈值还可以通过周期性地和/或响应于检测到趋势快照变化率(递增的或者递减的趋势)而重新计算快照变化率来动态地更新。如果不满足阈值,则过程结束,直到接收到下一快照为止。如果满足阈值,则控制继续至框1605。
在框1605处,快照管理器开始将在接收到的(或者最新的)快照之前的快照迭代返回基线快照或者先前的合成基线快照。为了进行迭代,快照管理器可以遍历与定义数据集合相关联的本地快照标识符,该定义数据集合与接收到的快照相对应。如上所述,快照管理器维持全局映射或者数据集合元数据,该全局映射或者数据集合元数据指示针对由快照管理器接收的每个定义数据集合的接收到的快照。当快照管理器创建合成基线快照时,快照管理器更新快照的父子关系元数据以将合成基线快照指示为后续增量快照的父快照。备选地,快照管理器可以将快照标记为合成基线快照,而不是修改父子关系元数据。快照管理器还可以维持增量快照与基线快照之间的父子关系,并且添加将合成基线快照的元数据指示为后续增量快照的合成父快照的元数据。
在框1607处,快照管理器从对应的定义数据集合的键-值存储库中检索接收到的快照和前一快照的快照元数据记录。快照管理器在其迭代先前的快照时重复检索接收到的快照的记录以考虑接收到的快照不断拥有记录。实施例可以维持累积所拥有的有效记录,并且将从针对接收到的快照的键-值存储库中的记录检索限制为初始检索。
在框1609处,快照管理器基于接收到的快照索引节点记录来标识前一快照的一个或者多个仍然有效的索引节点记录。快照管理器比较前一快照索引节点记录的键和接收到的快照索引节点记录的键。具有相同索引节点编号的那些先前快照记录是无效的。
在框1611处,快照管理器对前一快照的有效索引节点记录进行复制并且将它们插入到键-值存储库中作为用于接收到的快照的记录。快照管理器将这些复制的记录的键前缀改变为接收到的快照的本地快照标识符。可以通过修改前一快照的已经检索到的有效索引节点记录以将接收到的快照本地标识符指示为键前缀并且将这些有效索引节点记录插入到键-值存储库中来执行“复制”。
在框1613处,快照管理器基于接收到的快照目录记录来标识前一快照的一个或者多个仍然有效的目录记录。快照管理器比较先前的快照目录记录的键和接收到的快照目录记录的键。具有相同父索引节点编号和子名称的那些先前快照记录是无效的。
在框1615处,快照管理器对前一快照的有效目录记录进行复制并且将它们插入到键-值存储库中作为用于接收到的快照的记录。快照管理器将这些复制的记录的键前缀改变为接收到的快照的本地快照标识符。可以通过修改前一快照的已经检索到的有效目录记录以将接收到的快照本地标识符指示为键前缀并且将这些有效目录记录插入到键-值存储库中来执行“复制”。
在框1617处,快照管理器基于接收到的快照的数据映射记录来标识有效的高速缓存数据块。如上所述,快照管理器可以比较在数据映射记录中所指示的数据范围以确定已经被重写的数据块。由于快照管理器出于与高速缓存逐出有关的目的而正操纵数据,因此,快照管理器将对有效性的这种确定限于高速缓存的数据块。快照管理器可以对指纹数据库中的块描述符进行评估以确定适当的索引节点编号以选择性地对数据映射记录进行评估。快照管理器不标识有效的高速缓存数据块以扩展数据映射记录的所有权,而是将接收到的快照与高速缓存的数据块相关联。
在框1619处,快照管理器更新指纹数据库以将接收到的快照与有效的高速缓存数据块相关联。指纹数据库元数据将标识引用高速缓存数据块的索引节点编号和/或文件块编号。指纹数据库元数据还可以指示快照。索引节点编号和快照标识符的配对可以唯一地标识引用文件的实例。如果存储部件不实现重复数据删除,则存储部件可以维持具有用于高速缓存的数据块的描述符的数据结构并且指示相关联的本地快照标识符和文件信息(例如,索引节点编号、文件块编号等)。
在框1621处,快照管理器修改针对有效的高速缓存数据块的逐出状态数据。快照管理器修改与有效的高速缓存数据块相关联的逐出状态数据以降低有效的高速缓存数据块被逐出的可能性。快照管理器可以修改数据块的逐出状态数据以指示与接收到的快照相关联的时间指示符(例如,时间戳、时间段标识符等)。如果逐出策略基于使用频率(例如,最不经常使用),则快照管理器可以使该使用计数器递增。对于具有多个因素(例如,寿命和使用频率)的逐出策略,快照管理器可以更新逐出状态数据的多个字段。
在框1623处,快照管理器确定前一快照是否是基线快照。如果不是,则存在要处理的附加先前增量快照,并且控制返回到框1605。如果已经到达基线快照,则过程在接收到下一快照之前结束。
图17至图20描绘了用于创建基于反向增量的合成基线快照以减少稳定数据逐出的示例操作的流程图。替代扩展快照元数据的所有权,维持反向增量合成基线快照。与图16的示例操作形成对比,快照数据在快照之间被传递至最新快照以利用最新快照来连续“刷新”合成基线快照。
在图17的框1701处,快照管理器检测指定定义数据集合和快照的快照传递。另一过程(诸如,通信协议栈的过程)向快照管理器传送针对数据集合的快照正被传递(例如,在流中)至托管快照管理器的存储部件的信息。快照传递信息与托管存储部件和数据源之间的初始交换相对应。该信息最后利用由数据源识别的快照标识符(例如,UUID)来标识定义数据集合和快照。
在框1703处,快照管理器更新数据集合映射以将定义数据集合和指定快照相关联。快照管理器可以更新数据集合元数据,如先前描述的,该数据集合元数据指示每定义数据集合接收到的快照。
在框1705处,快照管理器向快照分配合成基线快照标识符,并且确定针对定义数据集合的键-值存储库。快照管理器可以为合成基线标识符保留值,或者针对合成基线标识符使用预定义值。例如,如果本地快照标识符是无符号整数,则快照管理器可以使用最大无符号整数作为合成基线快照标识符。这可以避免确定性本地快照标识符递增以与合成基线快照标识符冲突。
在框1707处,快照管理器开始处理每个检测到的快照分量。这些“分量”可以采取不同的形式,这取决于数据源经由流来传送快照的方式。作为示例,分量可以是请求(例如,执行目录操作的请求)、消息、对象等。如早前描述的,分量可以指示不同类型的快照元数据或者快照数据。
在框1709处,快照管理器确定快照分量的类型。快照管理器可以通过读取在分量的主体或者标头中的标志或者值来确定快照分量的类型。如果快照流分量指示快照数据(例如,(多个)数据块和块描述符),则控制继续至如由字母G表示的框2001。如果快照流分量指示目录元数据,则控制继续至框1901。如果快照分量指示索引节点元数据,则控制继续至框1801。
在图18的框1801处,快照管理器基于合成基线快照标识符和在快照流分量中所指示的索引节点编号利用键来在先前确定的键-值存储库中创建索引节点记录。创建索引节点记录可以包含:创建符合键-值存储库的设计的数据结构,并且利用快照流分量中的信息(例如,文件属性)来填充索引节点记录的值字段。
在框1803处,快照管理器确定键是否已经存在于键-值存储库中。快照管理器可以利用创建的键来提交记录检索。如果返回记录,则对于正被接收的快照,对应的索引节点记录不再有效。如果没有返回记录,则控制继续至框1807。如果返回记录,则控制继续至框1805。
在框1805处,快照管理器改变已经存在于键-值存储库中的索引节点记录以使用前基线快照标识符作为键前缀。前基线快照标识符包括标识在当前接收到的快照之前的快照的本地快照标识符。快照管理器可以将前基线快照标识符初始化为表示针对数据集合的第一接收到的快照的值(例如,0或者1),并且在该值被使用之后使该值递增。实施例还可以等待使前基线标识符递增,直到接收到新的快照为止。快照管理器可以通过提交符合键-值存储库的语义的更新或者改变请求来改变现有记录。实际上,快照管理器在其刷新合成基线快照时有效地创建了前基线快照。控制继续至框1807。
在框1807处,快照管理器将创建的索引节点记录插入到键-值存储库中。创建的索引节点记录包括正被接收的快照的索引节点元数据和合成基线标识符作为键前缀。控制继续至图17的框1711。
如果快照管理器在框1709处确定快照分量指示目录元数据,则控制继续至图19的框1901。图19中处理目录元数据与图18中处理索引节点元数据类似。在图19的框1901处,快照管理器基于合成基线快照标识符、在快照流分量中所指示的父索引节点编号以及在快照流分量中所指示的子名称利用键来在先前确定的键-值存储库中创建目录记录。创建目录记录可以包含:创建符合键-值存储库的设计的数据结构,并且利用快照流分量中的信息(例如,与子名称相对应的索引节点编号、所有权信息、访问许可等)来填充目录记录的值字段。
在框1903处,快照管理器确定键是否已经存在于键-值存储库中。快照管理器可以利用创建的键来提交记录检索。如果返回记录,则对于正被接收的快照,对应的目录记录不再有效。如果没有返回记录,则控制继续至框1907。如果返回记录,则控制继续至框1905。如果键-值存储库提供用以指示键是否存在于键-值存储库中而不返回对应的记录的操作,则快照管理器可以使用该操作而不是用以确定创建的记录(无论是索引节点还是目录)是否使键-值存储库中的对等记录无效的记录检索。
在框1905处,快照管理器改变已经存在于键-值存储库中的目录记录以使用前基线快照标识符作为键前缀。控制继续至框1907。
在框1907处,快照管理器将创建的索引节点记录插入到键-值存储库中。创建的索引节点记录包括正被接收的快照的目录元数据和合成基线标识符作为键前缀。控制继续至图17的框1711。
如果快照管理器在框1709处确定快照分量指示快照数据(例如,数据块和块描述符),则控制继续至图20的框2001。由于合成基线快照在快照之间持续存在,因此,快照管理器可以维持对应的快照数据文件。该合成基线快照数据文件随着每个接收到的快照而改变。快照管理器创建和关闭通过更新合成基线快照创建的前基线快照数据文件。相应地,快照管理器向前基线快照传递无效的快照元数据和快照数据,并且包含正被接收的快照的新的/改变的数据。
在框2001处,快照管理器使用在快照数据分量中所指示的合成基线快照标识符和索引节点编号来从键-值存储库中检索数据映射记录。换言之,快照管理器检索数据映射记录中当前由合成基线快照拥有的那些数据映射记录,这些数据映射记录与在数据分量中所指示的(多个)索引节点编号相对应。
在框2003处,快照管理器确定接收到的快照数据是否指示合成基线快照当前所拥有的任何(多个)数据块的重写/改变。为了进行该确定,快照管理器相对于检索到的数据映射记录的源文件偏移量和长度来对接收到的快照数据的源文件偏移量和长度进行评估。如果已经发生了重写/改变,则控制继续至框2011。否则,控制继续至框2005。
在框2005处,快照管理器将快照数据分量中的数据附加到合成基线快照数据文件。快照管理器记录按照其数据被附加的偏移量以用于写入对应的数据映射记录。
在框2007处,快照管理器基于合成基线标识符、在快照数据分量中所指示的索引节点编号以及在快照数据分量中所指示的源文件偏移量来创建指示键的数据映射记录。快照管理器还创建具有值字段的数据映射记录,该值字段利用在快照数据分量中所指示的长度和按照其数据被附加的记录的合成基线快照数据文件偏移量来填充。在框2009处,快照管理器插入创建的数据映射记录。控制从框2009继续至图17的框1711。
如果快照管理器在框2003处确定发生了重写/改变,则控制继续至框2011。在框2011处,快照管理器开始将被重写/改变的每个非连续数据范围传递至前基线快照。快照管理器可以通过比较源文件偏移量和长度来确定要被传递至前基线快照的(多个)非连续数据范围。下面针对图20将每个非连续范围称为范围。
在框2013处,快照管理器将范围中的数据从合成基线快照数据文件复制到前基线快照数据文件。如果这是针对正被接收的快照的第一快照数据分量,则快照管理器可以创建或者请求创建具有基于前基线快照标识符的标识符(例如,包含前基线快照标识符的文件名)的快照数据文件。复制到前基线快照数据文件可以符合先前描述的附加范例。
在框2015处,快照管理器创建与具有前基线标识符作为键前缀的范围相对应的数据映射记录。快照管理器为前基线快照创建使用合成基线快照数据映射记录中的索引节点编号、源文件偏移量和长度的数据映射记录。快照管理器指示按照其数据被附加到前基线快照数据文件中的偏移量。
在框2017处,快照管理器从合成基线快照数据文件中删除范围中的数据。例如,快照管理器可以将空值、全为0、全为1写入合成基线快照数据文件的范围。快照管理器可以标记或者追踪已删除的范围,而不是删除范围或者在删除范围之前。
在框2019处,快照管理器更新合成基线快照的(多个)数据映射记录以去除范围。如早前描述的,重写可以是局部的。如果检测到局部重写,则快照管理器根据对当前接收到的快照保持有效的数据范围是前范围、后范围还是两者(即,数据范围被分割)来更新源文件偏移量和长度。
在框2021处,快照管理器确定是否存在被重写的附加非连续范围。如果不存在,则控制继续至框2005。否则,快照管理器继续至下一非连续范围以在框2011处进行处理。
在图18至图20中描述的快照元数据和快照数据更新之后,流程返回到图17。在框1711处,快照管理器确定是否检测到快照结束。快照管理器可以在快照结束和开始时接收通信,但是当会话或者连接被中断或者重新启动时不会得到通知。快照管理器可以接收表示快照结束的终止命令或者关闭命令。如果还未到达快照的结尾,则控制流程继续回到框1707。否则,控制流程继续至框1713。
在框1713处,快照管理器更新指纹数据库(假设实现重复数据删除)以将合成基线快照标识符与新高速缓存的数据相关联。在追踪高速缓存数据的元数据中更新针对接收到的快照的接收到的数据,并且将其更新为指示与合成基线快照的关联。
在框1715处,快照管理器更新源快照标识符到本地快照标识符的映射。快照管理器将当前接收到的快照的源快照标识符与合成基线快照标识符相关联。快照管理器将先前接收到的快照的映射改变为与前基线快照标识符相关联。
在框1717处,快照管理器更新前基线快照标识符。例如,快照管理器使前基线快照标识符递增。
在框1719处,快照管理器修改针对传递的高速缓存数据块的逐出状态数据。快照管理器修改与有效的高速缓存数据块相关联的逐出状态数据以降低有效的高速缓存数据块被逐出的可能性。快照管理器可以修改逐出状态数据以指示与接收到的快照相关联的时间指示符(例如,时间戳、时间段标识符等)。如果逐出策略基于使用频率(例如,最不经常使用),则快照管理器可以使该使用计数器递增。对于具有多个因素(例如,寿命和使用频率)的逐出策略,快照管理器可以更新逐出状态数据的多个字段。实施例可以使用本地快照标识符作为逐出状态数据。由于本地快照标识符与接收到快照的顺序相对应,因此,逐出机制可以逐出与暗示最早接收的本地快照标识符相关联的数据块。由合成基线快照使用的数据将维持与合成基线快照标识符的关联,这向逐出机制表示该数据是最常使用或者最近使用的,这取决于所使用的高速缓存算法。
变型
提供流程图是为了帮助理解说明,而不是被用来限制权利要求的范围。流程图描绘了可以在权利要求的范围内发生变化的示例操作。可以执行附加操作;可以执行更少的操作;可以并行执行操作;并且可以按照不同的顺序来执行操作。例如,图4至图6呈现了恢复指定快照的示例操作。然而,实施例可以服务多个请求以同时恢复不同数据集合的快照。例如,操作可以执行用以为不同的数据集合产生不同的线程并且追踪由数据集合线程进行的恢复的进度的操作。作为另一示例变型,图4至图6的操作可以在标识有效数据块时将有效数据块传送至恢复目标,而不是在已经针对快照标识有效数据块之后传送有效数据块。例如,可以在511中标识有效范围之后执行将有效数据块写入缓冲区以用于传送至恢复目标的操作(即,框605、607、609、611和617),而不是更新恢复数据映射。应当理解,可以通过程序代码来实现流程图和/或框图中的每个框以及流程图图示和/或框图中的框的组合。程序代码可以被提供至通用计算机、专用计算机或者其它可编程机器或者装置的处理器。
如将了解到的,本公开的各个方面可以体现为系统、方法或者被存储在一个或多个机器可读介质中的程序代码/指令。相应地,各个方面可以采取硬件、软件(包括固件、常驻软件、微代码等)或者在本文中都可以被一般地称为“电路”、“模块”或者“系统”的软件方面和硬件方面的组合的形式。可以根据平台(操作系统和/或硬件)、应用生态系统、接口、程序员偏好、编程语言、管理员偏好等中的任何一个来不同地组织在示例图示中被呈现为个体模块/单元的功能。
可以利用一种或者多种机器可读介质的任何组合。机器可读介质可以是机器可读信号介质或者机器可读存储介质。例如,机器可读存储介质可以是但不限于:采用电子技术、磁技术、光学技术、电磁技术、红外技术或者半导体技术中的任何一种或者其组合来存储程序代码的系统、装置或者设备。机器可读存储介质的更具体的示例(非详尽列表)将包括以下:便携式计算机软磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者闪速存储器)、便携式压缩盘只读存储器(CD-ROM)、光学存储设备、磁存储设备或者前述内容的任何合适的组合。在本文档的上下文中,机器可读存储介质可以是可以包含或者存储用于由指令执行系统、装置或者设备使用或者与指令执行系统、装置或者设备连接的程序的任何有形介质。机器可读存储介质不是机器可读信号介质。
可以用一种或者多种编程语言(包括:面向对象的编程语言(诸如,编程语言、C++等);动态编程语言(诸如,Python);脚本语言(诸如,Perl编程语言或者PowerShell脚本语言);以及传统的过程式编程语言(诸如,“C”编程语言或者类似的编程语言))的任何组合来编写用于执行针对本公开的各个方面的操作的计算机程序代码。程序代码可以完全在独立机器上执行,可以在多个机器上按照分布式方式执行,并且可以在一台机器上执行,同时在另一台机器上提供结果和/或接受输入。
程序代码/指令还可以被存储在可以引导机器按照特定方式运行的机器可读介质中,使得被存储在机器可读介质中的指令产生制品,该制品包括实现在流程图和/或框图的一个或者多个框中所指定的功能/动作的指令。
图21描绘了具有存储部件快照管理器的示例计算机系统。该计算机系统包括处理器2101(可能包括多个处理器、多个核、多个节点和/或实现多线程等)。计算机系统包括存储器2107。该存储器2107可以是系统存储器或者机器可读介质的上面已经描述的可能实现中的任何一个或者多个。计算机系统还包括总线2103和网络接口2105。该系统还包括存储部件快照管理器2111。该存储部件快照管理器2111可以被配置有上面描述的快照布局/布置创建和利用功能与合成基线快照和逐出状态刷新功能中的一者或者两者。可以在硬件中和/或在处理器2101上部分地(或者完全地)实现先前描述的功能中的任何一个功能。例如,可以利用专用集成电路来实现功能,可以在处理器2101中实现的逻辑、在外围设备或者卡上的协处理器等中实现功能。
术语
本说明书使用术语“流”来指代在会话中的两个实体之间的数据连接上流动的单向数据流。会话中的实体可以是接口、服务等。流的元素的大小和格式可以根据与会话通信的实体发生变化。虽然流元素将根据支持会话的协议而被分段/划分,但是实体可以在操作系统角度处理数据,并且从该操作系统角度来看,流元素可以是数据块。流是“流”,因为数据集合(例如,卷或者目录)在源处被序列化以用于流式传输至目的地。将流元素序列化允许在比与序列化相对应的层更高的层处重新构建数据集合。
利用连词“和”在列表前使用短语“…中的至少一个”不应该被视为排他性列表,并且不应被解释为具有来自每个类别的一个项的类别列表,除非另有特别说明。可以利用列出的项中的仅仅一个、列出的项中的多个以及列表中的项中的一个或者多个和未列出的另一项来违反叙述“A、B和C中的至少一个”的条款。
Claims (16)
1.一种方法,包括:
至少部分地基于在设备处第一增量快照的接收,利用所述第一增量快照创建合成基线快照,所述设备对来自数据源的待存储在云存储装置中的数据块进行高速缓存;
修改与第二快照相关联并且对于所述第一增量快照保持有效的高速缓存的数据块的集合的逐出状态数据,其中第二增量快照在时间上在所述第一增量快照之前;以及
将所述第一增量快照的本地标识符与数据块的所述集合相关联。
2.根据权利要求1所述的方法,进一步包括:基于所述第一快照的接收来检测对阈值的满足,其中创建所述合成基线快照取决于对所述阈值的满足。
3.根据权利要求1所述的方法,其中创建所述合成基线快照包括:复制所述第二快照的对于所述第一快照保持有效的快照元数据,并且将被复制的所述快照元数据的所有权设置为所述第一快照。
4.根据权利要求3所述的方法,其中所述快照元数据至少包括索引节点元数据和目录元数据。
5.根据权利要求1所述的方法,其中创建所述合成基线快照包括:
确定所述第二快照的对于所述第一快照保持有效的快照元数据,其中键-值存储库包括针对定义数据集合的快照的元数据,所述快照包括所述第二快照;
复制有效的所述快照元数据;
将被复制的所述快照元数据的键前缀从所述第二快照的本地标识符改变为所述第一快照的本地标识符;以及
利用被改变的被复制的所述快照元数据来更新所述键-值存储库。
6.根据权利要求1所述的方法,其中修改高速缓存的块的所述集合的逐出状态数据包括:至少部分地基于针对所述第一快照所接收到的数据块的逐出状态数据来更新高速缓存的块的所述集合的逐出状态数据。
7.根据权利要求6所述的方法,其中修改逐出状态数据包括:递增使用频率值或者刷新时间指示符。
8.根据权利要求1所述的方法,进一步包括:确定高速缓存的数据块的所述集合对于所述第一快照保持有效。
9.根据权利要求8所述的方法,其中确定高速缓存的数据块的所述集合对于所述第一快照保持有效包括:至少部分地基于键-值存储库中针对所述第二快照的快照元数据来确定高速缓存的数据块的所述集合中没有高速缓存的数据块在所述第一快照中被重写,所述快照元数据包括针对定义数据集合的快照的元数据。
10.根据权利要求1所述的方法,其中创建所述合成基线快照包括:将合成基线快照标识符与所述第一快照相关联,并且将所述第二快照的被确定为对于所述第一快照无效的快照元数据与前基线快照标识符相关联。
11.根据权利要求10所述的方法,其中所述前基线快照标识符是确定性地生成的标识符,所述确定性地生成的标识符至少部分地基于快照的接收而改变并且表示所述快照的接收的顺序,并且所述合成基线快照标识符是与所述前基线快照标识符不冲突的标识符。
12.根据权利要求10所述的方法,进一步包括:确定所述第二快照的哪些快照元数据对于所述第一快照无效,并且确定所述第二快照的哪些快照数据对于所述第一快照无效。
13.根据权利要求11所述的方法,其中确定所述第二快照的哪些快照元数据对于所述第一快照无效包括:
从键-值存储库中检索所述第二快照的记录,所述键-值存储库包括针对定义数据集合的快照的快照元数据,其中所述快照包括所述第二快照;
确定所检索到的所述记录的索引节点元数据对于所述第一快照无效,所述索引节点元数据标识也在所述第一快照的所述快照元数据中被标识的索引节点;以及
确定所检索到的所述记录的目录元数据对于所述第一快照无效,所述目录元数据标识也在所述第一快照的所述快照元数据中被标识的目录索引节点编号和子名称对。
14.根据权利要求12所述的方法,其中将所述第二快照的被确定为对于所述第一快照无效的快照元数据与前基线快照标识符相关联包括:将所述记录中的每个记录的指示针对所述第一快照的无效快照元数据的键前缀从所述合成基线快照标识符改变为所述前基线快照标识符。
15.一种或者多种非瞬态机器可读介质,包括用以减少稳定快照数据逐出的程序代码,所述程序代码可执行以执行根据权利要求1至14中任一项所述的方法。
16.一种装置,包括:
处理器;
网络接口;以及
具有程序代码的机器可读介质,所述程序代码由所述处理器可执行以使所述装置执行根据权利要求1至14中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/338,272 US10346354B2 (en) | 2016-10-28 | 2016-10-28 | Reducing stable data eviction with synthetic baseline snapshot and eviction state refresh |
US15/338,272 | 2016-10-28 | ||
PCT/US2017/059079 WO2018081729A1 (en) | 2016-10-28 | 2017-10-30 | Reducing stable data eviction with synthetic baseline snapshot and eviction state refresh |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110073344A true CN110073344A (zh) | 2019-07-30 |
CN110073344B CN110073344B (zh) | 2021-01-15 |
Family
ID=60327398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780076519.XA Active CN110073344B (zh) | 2016-10-28 | 2017-10-30 | 利用合成基线快照和逐出状态刷新来减少稳定数据逐出 |
Country Status (4)
Country | Link |
---|---|
US (4) | US10346354B2 (zh) |
EP (1) | EP3532934B1 (zh) |
CN (1) | CN110073344B (zh) |
WO (1) | WO2018081729A1 (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160125059A1 (en) | 2014-11-04 | 2016-05-05 | Rubrik, Inc. | Hybrid cloud data management system |
US10824589B2 (en) | 2016-10-28 | 2020-11-03 | Netapp, Inc. | Snapshot metadata arrangement for efficient cloud integrated data management |
US10346354B2 (en) | 2016-10-28 | 2019-07-09 | Netapp, Inc. | Reducing stable data eviction with synthetic baseline snapshot and eviction state refresh |
US11334438B2 (en) | 2017-10-10 | 2022-05-17 | Rubrik, Inc. | Incremental file system backup using a pseudo-virtual disk |
US11210175B1 (en) * | 2017-10-31 | 2021-12-28 | EMC IP Holding Company, LLC | Storage management system and method |
US11372729B2 (en) | 2017-11-29 | 2022-06-28 | Rubrik, Inc. | In-place cloud instance restore |
US10678659B2 (en) * | 2017-12-12 | 2020-06-09 | Rubrik, Inc. | Array integration for virtual machine backup |
US10831609B2 (en) * | 2018-04-30 | 2020-11-10 | EMC IP Holding Company LLC | Data storage system with LUN snapshot shipping using volume-to-object translation |
US11281545B2 (en) * | 2018-09-07 | 2022-03-22 | University Of Central Florida Research Foundation, Inc. | Methods of crash recovery for data stored in non-volatile main memory |
CN111045857B (zh) * | 2018-10-12 | 2023-11-28 | 伊姆西Ip控股有限责任公司 | 数据备份和恢复的方法、电子设备和计算机可读存储介质 |
US11334521B2 (en) * | 2018-12-21 | 2022-05-17 | EMC IP Holding Company LLC | System and method that determines a size of metadata-based system snapshots |
US10838817B1 (en) | 2019-07-31 | 2020-11-17 | Rubrik, Inc. | Classifying snapshot image processing |
US11403024B2 (en) * | 2019-08-28 | 2022-08-02 | Cohesity, Inc. | Efficient restoration of content |
US11429559B2 (en) * | 2020-05-29 | 2022-08-30 | EMC IP Holding Company LLC | Compliance recycling algorithm for scheduled targetless snapshots |
US11144408B2 (en) * | 2019-10-24 | 2021-10-12 | EMC Holding Company, LLC | System and method for improving asynchronous replication performance in dual controller storage systems |
CN112051968B (zh) * | 2020-08-07 | 2021-10-22 | 东北大学 | 基于Kafka的分布式数据流分级缓存自动迁移方法 |
WO2022159291A1 (en) * | 2021-01-22 | 2022-07-28 | Scality, S.A. | Fast and efficient storage system implemented with multiple cloud services |
US12050807B2 (en) * | 2021-04-23 | 2024-07-30 | EMC IP Holding Company, LLC | Memory management system and method |
US20220358087A1 (en) * | 2021-05-08 | 2022-11-10 | Nutanix, Inc. | Technique for creating an in-memory compact state of snapshot metadata |
US11816129B2 (en) | 2021-06-22 | 2023-11-14 | Pure Storage, Inc. | Generating datasets using approximate baselines |
US11880338B2 (en) | 2021-07-22 | 2024-01-23 | EMC IP Holding Company LLC | Hard link handling with directory snapshots |
US11934347B2 (en) * | 2021-07-23 | 2024-03-19 | EMC IP Holding Company LLC | Determining a sharing relationship of a file in namespace snapshots |
US20230074216A1 (en) * | 2021-09-08 | 2023-03-09 | EMC IP Holding Company LLC | System and method for preserving access control lists in storage devices |
US12001393B2 (en) | 2021-11-30 | 2024-06-04 | Dell Products L.P. | Directory snapshots based on directory level inode virtualization |
US11892992B2 (en) * | 2022-01-31 | 2024-02-06 | Salesforce, Inc. | Unique identification management |
US20230350760A1 (en) * | 2022-04-28 | 2023-11-02 | Netapp Inc. | Physical size api for snapshots backed up to object store |
US11907116B2 (en) | 2022-04-29 | 2024-02-20 | Netapp, Inc. | Volume group garbage collection |
US20230359585A1 (en) | 2022-05-04 | 2023-11-09 | Netapp Inc. | Object store data management container with integrated snapshot difference interface for compliance scans |
US11977448B2 (en) | 2022-05-25 | 2024-05-07 | Netapp, Inc. | Directory restore from remote object store |
CN114925020B (zh) * | 2022-07-20 | 2022-10-25 | 中电云数智科技有限公司 | 一种基于数据增量写方式的快照版本数据迁移方法 |
US12050790B2 (en) * | 2022-08-16 | 2024-07-30 | Micron Technology, Inc. | Optimizing memory for repeating patterns |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120084261A1 (en) * | 2009-12-28 | 2012-04-05 | Riverbed Technology, Inc. | Cloud-based disaster recovery of backup data and metadata |
US8615641B2 (en) * | 2009-05-06 | 2013-12-24 | Hewlett-Packard Development Company, L.P. | System and method for differential backup |
CN103473277A (zh) * | 2013-08-27 | 2013-12-25 | 华为技术有限公司 | 文件系统的快照方法和装置 |
CN104040481A (zh) * | 2011-11-18 | 2014-09-10 | 戴尔软件股份有限公司 | 用于融合、存储和检索增量式备份数据的方法和系统 |
US20150261792A1 (en) * | 2014-03-17 | 2015-09-17 | Commvault Systems, Inc. | Maintaining a deduplication database |
WO2016168674A1 (en) * | 2015-04-16 | 2016-10-20 | Netapp, Inc. | Data backup with rolling baselines |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7216135B2 (en) * | 2002-02-15 | 2007-05-08 | International Business Machines Corporation | File system for providing access to a snapshot dataset where disk address in the inode is equal to a ditto address for indicating that the disk address is invalid disk address |
JP4215542B2 (ja) | 2002-03-19 | 2009-01-28 | ネットワーク アプライアンス, インコーポレイテッド | 2つのスナップショット間の変化を判定して宛先スナップショットに送信するシステム及び方法 |
US7865485B2 (en) | 2003-09-23 | 2011-01-04 | Emc Corporation | Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server |
US7546432B2 (en) | 2006-05-09 | 2009-06-09 | Emc Corporation | Pass-through write policies of files in distributed storage management |
US8285758B1 (en) | 2007-06-30 | 2012-10-09 | Emc Corporation | Tiering storage between multiple classes of storage on the same container file system |
US7694191B1 (en) | 2007-06-30 | 2010-04-06 | Emc Corporation | Self healing file system |
US8055864B2 (en) | 2007-08-06 | 2011-11-08 | International Business Machines Corporation | Efficient hierarchical storage management of a file system with snapshots |
US8190835B1 (en) * | 2007-12-31 | 2012-05-29 | Emc Corporation | Global de-duplication in shared architectures |
US8190836B1 (en) | 2008-04-30 | 2012-05-29 | Network Appliance, Inc. | Saving multiple snapshots without duplicating common blocks to protect the entire contents of a volume |
US8515911B1 (en) * | 2009-01-06 | 2013-08-20 | Emc Corporation | Methods and apparatus for managing multiple point in time copies in a file system |
US8504529B1 (en) | 2009-06-19 | 2013-08-06 | Netapp, Inc. | System and method for restoring data to a storage device based on a backup image |
US8412688B1 (en) * | 2009-06-29 | 2013-04-02 | Emc Corporation | Delegated reference count base file versioning |
US20110258461A1 (en) * | 2010-04-16 | 2011-10-20 | Twinstrata, Inc | System and method for resource sharing across multi-cloud arrays |
US8799413B2 (en) | 2010-05-03 | 2014-08-05 | Panzura, Inc. | Distributing data for a distributed filesystem across multiple cloud storage systems |
US9679040B1 (en) * | 2010-05-03 | 2017-06-13 | Panzura, Inc. | Performing deduplication in a distributed filesystem |
JP2012128644A (ja) | 2010-12-15 | 2012-07-05 | Toshiba Corp | メモリシステム |
US8789208B1 (en) * | 2011-10-04 | 2014-07-22 | Amazon Technologies, Inc. | Methods and apparatus for controlling snapshot exports |
US8972351B1 (en) * | 2011-11-08 | 2015-03-03 | Symantec Corporation | Systems and methods for creating selective snapshots |
US9804928B2 (en) * | 2011-11-14 | 2017-10-31 | Panzura, Inc. | Restoring an archived file in a distributed filesystem |
US9020903B1 (en) | 2012-06-29 | 2015-04-28 | Emc Corporation | Recovering duplicate blocks in file systems |
US8620973B1 (en) | 2012-09-25 | 2013-12-31 | Emc Corporation | Creating point-in-time copies of file maps for multiple versions of a production file to preserve file map allocations for the production file |
US9286110B2 (en) * | 2013-01-14 | 2016-03-15 | Commvault Systems, Inc. | Seamless virtual machine recall in a data storage system |
US10025669B2 (en) | 2014-12-23 | 2018-07-17 | Nuvoton Technology Corporation | Maintaining data-set coherency in non-volatile memory across power interruptions |
US10496488B2 (en) | 2014-12-31 | 2019-12-03 | Netapp, Inc. | Methods and systems for clone management |
US9720835B1 (en) * | 2015-01-30 | 2017-08-01 | EMC IP Holding Company LLC | Methods to efficiently implement coarse granularity cache eviction based on segment deletion hints |
US9904598B2 (en) * | 2015-04-21 | 2018-02-27 | Commvault Systems, Inc. | Content-independent and database management system-independent synthetic full backup of a database based on snapshot technology |
CN104933133B (zh) | 2015-06-12 | 2018-09-07 | 中国科学院计算技术研究所 | 分布式文件系统中的元数据快照存储和访问方法 |
US10942813B2 (en) | 2015-10-30 | 2021-03-09 | Netapp, Inc. | Cloud object data layout (CODL) |
US10691556B2 (en) | 2016-01-27 | 2020-06-23 | Quest Software Inc. | Recovering a specified set of documents from a database backup |
US10346354B2 (en) | 2016-10-28 | 2019-07-09 | Netapp, Inc. | Reducing stable data eviction with synthetic baseline snapshot and eviction state refresh |
US10824589B2 (en) | 2016-10-28 | 2020-11-03 | Netapp, Inc. | Snapshot metadata arrangement for efficient cloud integrated data management |
US10282099B1 (en) | 2017-10-27 | 2019-05-07 | Netapp, Inc. | Intelligent snapshot tiering |
US10635548B2 (en) | 2017-10-27 | 2020-04-28 | Netapp, Inc. | Data block name based efficient restore of multiple files from deduplicated storage |
-
2016
- 2016-10-28 US US15/338,272 patent/US10346354B2/en active Active
-
2017
- 2017-10-30 WO PCT/US2017/059079 patent/WO2018081729A1/en unknown
- 2017-10-30 CN CN201780076519.XA patent/CN110073344B/zh active Active
- 2017-10-30 EP EP17798053.9A patent/EP3532934B1/en active Active
-
2019
- 2019-06-10 US US16/435,829 patent/US11188500B2/en active Active
-
2021
- 2021-11-29 US US17/536,515 patent/US12007944B2/en active Active
-
2024
- 2024-04-22 US US18/641,602 patent/US20240273064A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8615641B2 (en) * | 2009-05-06 | 2013-12-24 | Hewlett-Packard Development Company, L.P. | System and method for differential backup |
US20120084261A1 (en) * | 2009-12-28 | 2012-04-05 | Riverbed Technology, Inc. | Cloud-based disaster recovery of backup data and metadata |
CN104040481A (zh) * | 2011-11-18 | 2014-09-10 | 戴尔软件股份有限公司 | 用于融合、存储和检索增量式备份数据的方法和系统 |
CN103473277A (zh) * | 2013-08-27 | 2013-12-25 | 华为技术有限公司 | 文件系统的快照方法和装置 |
US20150261792A1 (en) * | 2014-03-17 | 2015-09-17 | Commvault Systems, Inc. | Maintaining a deduplication database |
WO2016168674A1 (en) * | 2015-04-16 | 2016-10-20 | Netapp, Inc. | Data backup with rolling baselines |
Also Published As
Publication number | Publication date |
---|---|
US20220083505A1 (en) | 2022-03-17 |
EP3532934B1 (en) | 2020-12-02 |
EP3532934A1 (en) | 2019-09-04 |
US10346354B2 (en) | 2019-07-09 |
CN110073344B (zh) | 2021-01-15 |
US20180121454A1 (en) | 2018-05-03 |
WO2018081729A1 (en) | 2018-05-03 |
US20190294586A1 (en) | 2019-09-26 |
US20240273064A1 (en) | 2024-08-15 |
US11188500B2 (en) | 2021-11-30 |
US12007944B2 (en) | 2024-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110073344A (zh) | 利用合成基线快照和逐出状态刷新来减少稳定数据逐出 | |
US12099467B2 (en) | Snapshot metadata arrangement for efficient cloud integrated data management | |
US10776315B2 (en) | Efficient and flexible organization and management of file metadata | |
US11914485B2 (en) | Restoration of specified content from an archive | |
US20180004764A1 (en) | Efficient data synchronization for storage containers | |
JP6309103B2 (ja) | スナップショットおよびクローンの複製 | |
US9830324B2 (en) | Content based organization of file systems | |
US8849759B2 (en) | Unified local storage supporting file and cloud object access | |
US9155320B2 (en) | Prefix-based leaf node storage for database system | |
US20160283501A1 (en) | Posix-compatible file system, method of creating a file list and storage device | |
US20170123931A1 (en) | Object Storage System with a Distributed Namespace and Snapshot and Cloning Features | |
CN103154948B (zh) | 可丢弃文件的基于卡的管理 | |
CN107045530A (zh) | 一种将对象存储系统实现为本地文件系统的方法 | |
CN109726044A (zh) | 基于数据块名称从重复数据删除存储中高效还原多个文件 | |
CN101162469A (zh) | 基于快照的细粒度文件与目录版本管理方法 | |
US11403024B2 (en) | Efficient restoration of content | |
US10915246B2 (en) | Cloud storage format to enable space reclamation while minimizing data transfer | |
US20220100415A1 (en) | Method, device, and computer program product for storage management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |