一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

网络可访问块级快照的制作方法

2022-06-01 19:32:14 来源:中国专利 TAG:

网络可访问块级快照


背景技术:

1.一般来说,云计算是一种通过例如网络服务的服务提供对信息技术资源的访问的方法,其中用于支持这些服务的硬件和/或软件可动态地扩展以满足任何给定时间的服务需求。在云计算中,弹性是指可以由云服务提供商扩大和缩小以适应用户不断变化的需求的网络交付的计算资源。这些资源的弹性可以体现在处理能力、存储、带宽等方面。弹性计算资源可以自动按需交付,从而动态地适应给定用户系统上或内部的资源需求变化。例如,用户可以使用云服务来托管大型在线流媒体服务并使用弹性资源进行设置,使得向用户流式传输内容的网络服务器数量在观看高峰时段扩大以满足带宽需求,然后在系统使用率较低时缩小。
2.用户通常会租用、租赁通过云对资源的访问或以其他方式支付通过云访问资源的费用,因此不必购买和维护硬件和/或软件以提供对这些资源的访问。这提供了许多好处,包括允许用户响应于企业的不断变化的需求而快速地重新配置其可用计算资源,并使云服务提供商能够根据使用情况、流量或其他运营需求自动地扩展所提供的计算服务资源。与本地计算环境的相对静态基础架构相比,基于网络的计算服务的这种动态特性需要可以根据用户群的不断变化的需求可靠地重新分配其硬件的系统架构。
附图说明
3.图1描绘其中可以实现根据本公开的各种实施方案的弹性计算系统的示意图。
4.图2描绘根据本公开的方面其中图1的弹性计算系统用于实现公共快照服务的网络环境的示意图。
5.图3描绘根据本公开的方面其中图1的弹性计算系统用于实现公共快照服务的网络环境的更详细示意图。
6.图4描绘根据本公开的方面用于在图3的网络环境内创建快照的示例工作流。
7.图5描绘根据本公开的方面用于在图3的网络环境内创建快照的另一示例工作流。
8.图6是根据本公开的方面用于创建快照的示例过程的流程图。
9.图7是根据本公开的方面用于生成快照存储路径结构数据的示例过程的流程图。
10.图8是根据本公开的方面用于计算两个快照之间的快照块差异的示例过程的流程图。
11.图9描绘根据本公开的方面的示例卷、快照清单和清单索引。
12.图10描绘根据本公开的方面用于识别元数据以访问图3网络环境内的快照块的示例工作流。
13.图11是根据本公开的方面用于生成清单索引的示例过程的流程图。
14.图12是根据本公开的方面用于识别元数据以访问快照块的示例过程的流程图。
15.图13描绘根据本公开的方面的示例卷和卷的快照。
16.图14描绘根据本公开的方面用于从子块级修改创建子快照并合并父快照和子快照的示例工作流。
17.图15是根据本公开的方面用于为对卷的快照进行的子块修改创建子快照和写入集的示例过程的流程图。
18.图16是根据本公开的方面用于合并父快照和子快照的示例过程的流程图。
19.图17描绘根据本公开的方面提供公共快照服务的计算装置或系统的一般架构。
具体实施方式
20.简介
21.一般来说,本公开的方面涉及例如数据卷的“快照”(例如,各自表示块存储卷或装置的每个块在特定时间点的值的计算对象)的更具交互式和更有效的创建和管理,所述数据卷使用联网弹性计算系统或此种联网弹性计算系统外部的本地存储系统(本文中也称为私有数据存储服务器)内的块存储装置存储。在一些实现方式中,针对在云环境内创建为外部块存储卷(例如,存储在云环境外部的块存储卷)的备份的快照,所描述的技术可以有益地促进更快和更有效的快照创建和管理。通常,卷可以对应于数据的逻辑集合,例如维持在用户自己的专有数据服务器上或代表用户维持在云中的数据服务器上的一组数据。快照通常用于备份例如硬盘驱动器的块存储装置,使得可以将装置恢复到以前的状态(例如,在数据损坏或故障的情况下)。
22.通常,定期创建此类快照,并且在每个快照中包含卷的所有可用数据可能会消耗不必要数量的网络、处理器和存储资源,尤其是在快照中包含的大部分数据在快照之间保持不变的情况下。因此,在一些情况下,为了减少创建和存储此类快照时所消耗的计算资源量,快照可能是增量的,因为它们仅存储自最新快照(或“父”快照)以来值已经改变的块的数据。然而,通过执行逐块数据比较来标识自最新快照以来值已经改变的块可能非常耗时,尤其是对于与大量数据相关联的快照。此外,存储所有差异(例如,自最新快照以来值已经改变的所有块)可能涉及存储不必要的信息,例如对页面文件的改变或快照中可能不需要的其它临时数据。
23.解决上述问题的一个选项是直接在操作系统中创建快照,因为操作系统通常知道哪些块代表哪些文件(因此可以排除与不相关的文件对应的块)。但是,这通常需要操作系统直接管理和创建快照。由于操作系统的本地资源有限,因此这个选项可能是不合需要的。
24.当前公开的技术通过提供接口来解决这些问题,客户端可以通过所述接口向快照存储服务指定存储卷的原始快照(在本文中也称为父快照),并指定和/或提供相对于原始快照已改变的存储卷的各个块(或子块)。例如,此客户端可以调用用于创建(例如,云提供商网络的存储卷的或云提供商网络外部例如云提供商网络的客户内部部署的存储卷的)快照的api并在api调用中指定父快照。随后,客户端可以重复调用另一个api来将块(或子块)添加到快照中。当完成时,客户端可以调用另一个api来密封快照,从而使快照不可变。因此,快照存储服务可以基于由客户端指定/提供的块或子块创建快照,所述块或子块可能不包含存储卷中的所有块或自创建原始快照以来已经改变的所有块。通过允许客户端指定将用于创建快照的父快照和/或将添加到快照的块(或子块),可以仅使用已相对于过去的快照(例如,其中客户端指定的块可以排除在磁盘上已经改变但不必存储在快照中的块(或子块))改变的客户端指定/提供的块(或子块)创建差异快照(在本文中也称为增量快照或子快照)。
25.此外,出于各种目的,例如为了应用户请求创建差异或增量快照或为了向用户提供变化块的列表以供记录,快照存储服务可以计算两个快照之间的差异。然而,通过执行逐块数据比较来计算差异可能非常耗时,尤其是对于与大量数据相关联的快照。为了解决这个问题,本技术提供一种以加快块差异计算过程的方式存储快照的改进方法。例如,在基于父快照生成子快照时,如果子快照中的块相对于父快照中的对应块没有改变,则存储所述块,使得所述块具有与父快照中的对应块相同的路径结构(例如,存储在具有相同名称的存储目录路径中)。如果子快照中的块自创建父快照以来已经改变,则存储所述块,使得所述块具有与父快照中的对应块不同的路径结构(例如,存储在与存储父快照中的对应块的存储目录路径具有不同名称的存储目录路径中)。因此,通过比较两个快照中的块的路径结构(例如,存储两个块的存储目录路径的名称)可以更快速地计算出差异,而无需执行块级数据比较,从而减少宝贵处理资源的消耗。
26.在一些实施例中,通过用于创建和管理存储卷的快照的所公开技术来解决上述问题等。例如,如上所述,本技术提供一种快照创建过程,所述快照创建过程可以基于(i)要用作给定快照的基础的父快照的规范,以及(ii)要在给定快照中备份的数据块的规范来创建快照。因此,仅由用户指定的数据块需要作为快照的一部分检索和存储,从而减少宝贵的网络、处理器和存储资源的消耗。作为另一示例,如上所述,在基于父快照生成子快照时,如果子快照中的数据块相对于父快照中的对应块尚未改变,则可以存储所述块,使得所述块具有与父快照中的对应块相同的路径结构。如果子快照中的数据块自创建父快照以来已经改变,则可以存储所述块,使得所述块具有与父快照中的对应块不同的路径结构。这样,通过比较两个快照中的块的路径结构,可以更快速地计算出两个快照之间的差异,而无需执行块级数据比较,从而减少宝贵的处理资源的消耗。
27.如本文所述,本公开的另一方面涉及用于访问快照块的元数据的标识。通常在创建和存储快照时,将快照划分为存储在对象存储服务器上的多个逻辑分区或对象。在快照的初始创建期间,可以将“目录”或“清单”文件写入到对象存储服务器。快照清单可以被布置为块索引的有序列表(例如,形成快照基础的块存储装置的逻辑块)并且可以标识对象存储服务上保存对应于所述块的数据的对象。清单可以包括关于每个块的附加数据,例如与块的存储位置和快照id相关的元数据。当用户希望读取或请求存储在本文中所描述的公共快照服务中的快照的块时,可能需要用户标识存储所述块的数据的特定对象。可能需要用户标识与块的存储位置相关的特定元数据以访问快照块。例如,公共快照服务可能需要例如访问令牌的元数据,所述元数据可以标识或涉及底层块的存储位置。可以从快照清单中检索关于哪个对象对应于快照块的这种元数据和位置信息。然而,快照清单文件可能具有大的文件大小,因此快照清单的检索会拥塞网络带宽并导致本文所描述的快照操作中的瓶颈。例如,清单的每个条目的大小可以是16字节,并且可以表示存储为512kb对象的快照块。在16tb快照的示例中,清单的大小可以是512gb。此外,卷的快照可以是稀疏的(例如,当并非形成快照基础的块存储装置的每个块都具有数据时,未写入的块可能不会反映在快照中),因此并非块存储装置的每个块地址都可以在快照清单中表示。因此,需要一种优化机制来标识元数据或对象的位置,所述对象存储块存储装置的特定块的数据,如快照清单中所指示。
28.本公开的方面涉及清单索引的实现,所述清单索引为与上述清单相关的技术问题
提供技术解决方案。清单条目可以分组为m个条目的逻辑分区或“片段”,并且m个条目的每个片段都可以与偏移相关联。清单条目通常按块索引依序地排序,从而指示每个块的元数据,例如快照的特定对象,所述快照存储与从其创建快照的块存储装置中的特定块索引相对应的数据。因此,每个片段还可以与指示每个片段中第一个条目的块索引的开始块索引和指示片段中最后一个条目的块索引的结束块索引相关联。清单索引可以包括指示清单文件的每个片段的偏移以及开始块索引和结束块索引的条目,从而将快照清单的特定片段与从其创建快照的块存储装置中的特定块索引相关联。根据片段大小m的选择,清单索引的大小可以明显小于清单。当本文所描述的公共快照服务接收到标识对象的请求时,所述对象存储与从其创建快照的块存储装置的一个或多个块相关联,公共快照服务可以实施清单索引以标识来自清单片段的信息,所述信息对应于所请求块。因此,减少了网络负载,因为清单索引消除了从对象存储服务器检索或下载整个清单索引的需求。另外,可以并行标识和检索多个条目或片段以提高标识操作的效率。
29.通常,存储作为本文所描述的快照基础的卷的块存储装置以最小粒度(通常称为“块”)修改或写入。因此,块存储卷通常以整个块的形式写入,并且操作系统通常不支持在子块粒度上修改块存储卷。如上所述,可以将快照存储为代表存储卷块的对象的集合。由于“块”的概念是一种逻辑抽象,因此快照的块大小可能不等于操作系统向快照写入数据所使用的块大小。对于在云内创建快照以进行备份的外部工作负载(例如,使用存储在云提供商网络外部,例如云客户内部部署的块存储卷的工作负载)可能尤其如此。例如,可以配置卷的快照,使得快照的单个“块”代表512k的数据。例如,存储快照块的对象存储服务可以利用经过优化以在512k块中使用的底层物理存储介质。然而,写入快照的用户计算装置可以实施4kb块大小。因此,从写入装置的视角来看,快照的“块”可以表示128个块。在将外部工作负载备份到云快照的情况下,这可能要求托管外部块存储卷的计算机必须缓冲比实际写入的数据量大得多的数据量,以便通过网络将整个快照块发送到快照服务。这导致外部主机和网络的资源使用效率低下,因为主机必须请求缓冲和修改整个快照块的副本,并且必须存储和传输比它实际需要备份的数据量更多的数据量。
30.为了从快照的视角以及从写入装置的视角解决块大小的这种差异,本公开的实施方案使快照的块(否则通常只能作为整个单元修改)使用中介(本文中称为“公共快照服务”)以写入装置所需的任何粒度(例如,所述装置的操作系统使用的块大小)进行修改,以将来自块装置的写入合并到子块级别的快照中。有利的是,通过使用中介将子块写入合并到更大的快照块中,外部工作负载不再需要请求和缓冲如此大量的数据(如整个快照块),而是可以将写入流式传输到中介以合并到快照块内的适当位置。在快照的块(存储为对象)从写入装置的视角表示多个块的情况下,从写入装置的视角对单个块进行的修改可以表示为对快照块的仅一部分的修改,所述部分在本文中通常称为快照的“子块”。
31.允许在子块级别上写入的一种潜在机制是在每次修改块时完全重新创建写入快照块。例如,对于写入到给定快照块的一部分的数据,一种方法可以是读取整个快照块,将写入的数据应用到块的一部分,并且重新保存快照块。为了确保没有数据丢失,可以将保存的快照块存储为新快照的一部分(例如,先前父快照的子快照)。这种技术的一个缺点是在新保存的块与这些块的先前版本之间会发生大量数据复制。例如,如果快照块为512kb,则写入到块的4kb部分会导致复制508kb的数据。特别是对于大型快照,这种数据复制可能会
导致存储成本方面的巨大负载。
32.因此,本公开的方面涉及创建表示对卷的快照的子块进行的修改的快照。当对现有快照(也称为“父”快照)的子块进行修改时,公共快照服务可以起始子快照的创建以存储对子块进行的修改。公共快照服务还可以修改现有的未密封快照以合并对子块进行的修改,而无需创建子快照。公共快照服务可以准备零缓冲区,所述零缓冲区的大小等于包括写入的子块的快照块的大小。零缓冲区或缓冲区对象可以是具有快照块的文件大小(例如,512kb)的对象,其包括零作为值。当公共快照服务接收到对快照块的一个或多个子块进行的改变时,公共快照服务可以应用保存在缓冲区中的快照块的数据的变化子块。子块的大小可以是快照块的任何部分。为了完成子快照块的生成,公共快照服务可以对缓冲区的数据进行加密以生成子快照的快照块。然后可以将生成的子快照块作为对象存储在对象存储服务器上,作为表示子快照的对象集合的一部分。此外,快照服务可以生成指示应用于子快照块的子块的子块偏移、长度和校验和的写入集。子块偏移可以指示修改块在快照中所反映的底层卷中的偏移。写入集可以存储在与公共快照服务通信的元数据数据存储装置上或对象存储服务器上。根据对父快照进行的子块级别变化创建子快照块使公共快照服务能够避免复制整个快照(甚至整个快照块)来对备份卷进行微小修改,从而减少网络和计算资源负担。在一些实施方案中,公共快照服务可以将修改表示为写入表示并且根据本文描述的过程将父快照与写入表示合并。公共快照服务可以将所得快照存储为子快照。
33.当用户请求读取卷快照时,公共快照服务可以通过将父快照与随后生成的子快照合并来向用户呈现最新快照。响应于接收到读取快照的请求,公共快照服务从对象存储服务器检索父快照的块。公共快照服务还可以检索子快照块和写入集。对于写入集的每个条目,从对应的子快照中检索子块。公共快照服务可以使用写入集中指示的子块偏移来将子快照的子块与父快照块的对应子块对齐并合并。合并块可以响应于请求而传输,或者存储为新快照。
34.现在将关于某些示例和实施方案来描述本公开的这些和其它方面,这些示例和实施方案旨在说明但不限制本公开。尽管出于说明的目的,本文描述的示例和实施方案将集中于特定的计算和算法,但是本领域技术人员将理解示例仅是说明性的且并不旨在进行限制。
35.公共快照服务的示例计算环境的概述
36.图1描绘其中可以实现所公开的公共快照服务的包括弹性计算系统120的示例计算环境100。弹性计算系统120可以是云提供商网络(有时简称为“云”)。云是指可以是虚拟化的或裸机的大量网络可访问计算资源(例如,计算、存储和网络资源、应用程序和服务)。云可以提供对可配置计算资源共享池的便利的按需网络访问,这些计算资源可以响应于客户命令以编程方式供应和释放。可以动态地供应和重新配置这些资源以适应可变负载,这提供了弹性计算系统120的“弹性”。应当理解,所公开的快照创建和管理技术也可以在非弹性计算环境中实现。
37.用户计算装置102可以通过网络104访问弹性计算系统120。弹性计算系统120包括一个或多个块存储服务器105、一个或多个对象存储服务器110、以及一个或多个计算服务器115,它们彼此之间以及与网络104进行网络通信以向用户提供对计算资源的按需访问,所述计算资源包括卷106、桶111和实例116等。在下面更详细地描述这些特定资源。弹性计
算系统120的一些实现方式可以另外包括域名服务(“dns”)服务器、关系数据库服务器和用于支持按需云计算平台的其它服务器配置(未示出)。每个服务器包括:硬件计算机存储器和/或处理器;操作系统,所述操作系统提供用于所述服务器的一般管理和操作的可执行程序指令;以及计算机可读介质,所述计算机可读介质存储在由服务器的处理器执行时允许服务器执行其预期功能的指令。
38.弹性计算系统120可以通过网络104向用户提供按需的可扩展计算平台,从而例如允许用户通过他们对块存储服务器105、对象存储服务器110和计算服务器115的使用具有可支配的可扩展“虚拟计算装置”。这些虚拟计算装置具有个人计算装置的属性,包括硬件(各种类型的处理器、本地存储器、随机存取存储器(“ram”)、硬盘和/或固态驱动器(“ssd”)存储装置)、操作系统选择、网络功能和预装载应用程序软件。每个虚拟计算装置还可以虚拟化其控制台输入和输出(“i/o”)(例如,键盘、显示器和鼠标)。这种虚拟化允许用户使用例如浏览器、应用程序编程接口、软件开发工具包等计算机应用程序连接至他们的虚拟计算装置,以便像个人计算装置一样配置和使用他们的虚拟计算装置。与拥有用户可用的固定数量的硬件资源的个人计算装置不同,与虚拟计算装置相关联的硬件可以根据用户需要的资源放大或缩小。用户可以选择部署他们的虚拟计算系统以提供基于网络的服务供自己使用和/或供他们的客户或客户端使用。
39.可以跨多个地理上分离的区域提供弹性计算系统120,例如以通过使他们的虚拟计算装置在他们的地理位置中或附近来为用户提供较低的延迟。每个区域在位置和电源方面与每个其它区域物理隔离并且独立,并且可以通过网络104与其它区域传送数据。每个区域可以包括两个或多个可用区,每个可用区由一个或多个物理数据中心支持,所述物理数据中心具有冗余和独立的电源、网络和连接以减少两个区同时发生故障的可能性。虽然单个可用区可以跨越多个数据中心,但没有两个可用区共享一个数据中心。这可以保护用户免受数据中心级故障的影响。数据中心是指物理建筑物或外壳,所述物理建筑物或外壳容纳块存储服务器105、对象存储服务器110和计算服务器115中的一个或多个并向其提供电力和冷却。可用区内的数据中心和区域内的可用区通过专用的低延迟链路(例如,光纤网络电缆)相互连接。计算硬件的这种划分和地理分布使得弹性计算系统120能够以高度的容错性和稳定性向全球范围内的用户提供快速服务。为了跨给定区域中的区均匀地分布资源,弹性计算系统120的提供商可以独立地将可用区映射到每个用户账户的标识符。
40.具体转向弹性计算系统120内的不同服务器的角色,计算服务器115包括一个或多个服务器,在所述服务器上向用户提供可调整大小的计算能力以用于构建和托管他们的软件系统。用户可以根据需要使用计算服务器115来启动尽可能多的虚拟计算环境(称为“实例”116)。根据用户需要,实例116可以具有处理能力、存储器、存储和网络容量的各种配置。计算服务器115还可以包括用于在实例运行时使用的临时数据的计算机存储装置,但是一旦示例关闭,所述数据就会丢失。
41.块存储服务器105以卷106的形式为计算服务器115提供持久数据存储。块存储服务器105包括一个或多个服务器,数据在所述服务器上存储为块。块是一系列字节或位,通常包含一些完整的记录,具有块大小的最大长度。分块数据通常存储在数据缓冲区中并且一次整个块读取或写入所述分块数据。分块可以减少开销并加快数据流的处理。每个块都被分配唯一的标识符,所述块可以通过所述唯一标识符存储和检索,但通常不会被分配提
供进一步上下文的元数据。数据的块(在本文中也称为“数据块”)可以是例如512字节、1千字节(“kb”)、4kb、8kb、16kb、32kb、64kb、128kb、256kb、512kb或更大,这取决于实现方式。本文所描述的快照可以包括任何数量的此类块。例如取决于为其创建快照的用户卷的大小,快照的大小可能会有所不同。
42.用户卷106由存储在块存储服务器105上的一个或多个块组成,所述用户卷可以被视为大小的范围例如从1gb到1太字节tb(或更大)的个别硬盘驱动器。尽管被视为个别硬盘驱动器,但是应当理解,卷可以被存储为在一个或多个底层物理主机装置上实现的一个或多个虚拟化装置。卷106可以被分区少量次数(例如,最多16次),其中每个分区由弹性计算系统120的装置托管,所述弹性计算装置在一些实现方式中能够以大约每秒1gb(“gbps”)传输数据。这些卷提供可以附接至计算服务器115的特定实例的持久的专用存储装置。每个卷可以附接至在计算服务器115上运行的单个实例,并且可以从所述实例分离并重新附接至另一个。块存储服务器105可以通过跨可用区内的多个服务器复制卷而具有卷的内置冗余,这意味着如果个别驱动器发生故障或发生一些其它单一故障,卷将不会发生故障。
43.对象存储服务器110代表弹性计算系统120内的另一种类型的存储装置。对象存储服务器110包括一个或多个服务器,数据在所述服务器上存储为称为桶111的资源内的对象。每个对象通常包括存储的数据、启用对象存储服务器110关于分析所存储对象的各种能力的可变数量的元数据,以及可以用于检索对象的全局唯一标识符或密钥。存储在对象存储服务器110上的对象与唯一标识符相关联,使得可以通过来自任何位置中的联网计算装置的请求来获得对它们的授权访问。每个桶111与给定的用户账户相关联。用户可以将任意数量的对象存储在他们的桶中,可以写入、读取和删除他们的桶中的对象,并且可以控制对他们的桶和其中包含的对象的访问。此外,在具有分布在上述区域中的不同区域上的多个不同对象存储服务器110的实施方案中,用户可以选择存储桶的区域(或多个区域),例如以优化延迟。用户可以将对象存储服务器110用于例如在社交媒体网站上存储照片、在音乐流媒体网站上存储歌曲或在线协作服务中的文件等目的,仅举几个例子。在云中开发的应用程序通常利用对象存储服务器110的巨大可扩展性和元数据特性。对象存储服务器110可以支持高度并行的数据访问和传递。
44.对象存储服务器110可以提供比块存储服务器105更大的冗余,因为对象存储服务器110可以自动地将数据复制到多个可用区中。对象存储服务器110还具有与块存储服务器105不同的数据吞吐量,例如对于单个数据流大约为20mbps。虽然对象存储服务器110可以独立于上述实例116和卷106使用,但它们也可以用于提供如本文关于快照所描述的数据备份(例如,卷数据的对象存储备份)。
45.如图1中所说明,弹性计算系统120可以通过网络104与用户计算装置102通信。网络104可以包括任何适当的网络,包括内联网、因特网、蜂窝网络、局域网或任何其它此类网络或其组合。在所示实施方案中,网络104是因特网。用于通过因特网或任何其它上述类型的通信网络进行通信的协议和组件对于计算机通信领域的技术人员来说是已知的,因此这里不需要更详细地描述。用户计算装置102可以包括任何配备网络的计算装置,例如台式计算机、膝上型计算机、智能手机、平板计算机、电子阅读器、游戏控制台等。用户可以通过网络104访问弹性计算系统120以查看或管理他们的数据和计算资源,以及使用网站和/或由弹性计算系统120托管的应用程序。
46.弹性计算系统上的公共快照服务的示例用例
47.图2描绘其中在弹性计算系统120上实现公共快照服务130的计算环境200。图2中示出公共快照服务130的几个用例。例如,用户可以指示公共快照服务130创建存储在块存储服务器105上的卷(例如,客户端块存储卷106)的快照,和/或创建存储在弹性计算系统120外部的他们自己的数据存储服务器(例如,客户端存储服务器103)上的卷的快照。类似地,用户可以指示公共快照服务130将其卷(客户端块存储卷106或存储在客户端存储服务器103上的卷)的先前创建的快照恢复到存储在块存储服务器105上的卷(例如,客户端块存储卷106)上和/或存储在弹性计算系统120外部的他们自己的数据存储服务器(例如,客户端存储服务器103)上的卷上。可以执行图2中所示的创建和恢复操作的任何组合。例如,(i)可以将存储在客户端存储服务器103上的卷的快照恢复到存储在块存储服务器105上的卷上,(ii)可以将存储在块存储服务器105上的卷的另一个快照恢复到存储在客户端存储服务器103上的卷上,(iii)可以将存储在块存储服务器105上的卷的又一个快照恢复到存储在块存储服务器105上的卷上,以及(iv)可以将存储在客户端存储服务器103上的卷的又一快照恢复到存储在客户端存储服务器103上的卷上。
48.在一个实施方案中,快照是卷的时间点块级备份,作为数据副本存储在一个或多个对象存储服务器110上的卷上(例如,作为单个对象或集合对象)。作为通过对象存储服务器110的通用接口管理快照的补充或替代,可以通过块存储服务器105的应用程序编程接口(“api”)和/或在弹性计算系统120上实现的公共快照服务130的api管理快照。在一个示例中,快照被实现为卷内数据的增量记录。说明性地,当获取卷的第一快照时,将包含有效数据的卷的所有块作为一个或多个对象复制到对象存储服务器110,然后将快照“目录”或“清单”文件写入到对象存储服务器110,所述文件包括一个或多个对象的记录,以及一个或多个对象中的每个对象对应的卷的块。由于使用增量快照,因此当对同一卷拍摄后续快照时,仅需要将自第一次快照以来发生变化的块复制到对象存储服务器110,并且可以更新目录或清单文件以指向每个数据块的最新版本(或者可以创建第二目录或清单文件,使初始目录或清单文件保留为卷的先前版本的记录)。初始快照可以用于在初始快照时重构卷,或者来自后续时间点的快照可以组合在一起或与初始快照组合以在任何单个后续时间点重构整个卷。通过这种方式,快照既可以用作增量备份,也可以用作给定卷的完整备份。
49.在创建快照时,在启动快照之前写入卷的任何数据都可以包括在快照中,并且用户可以继续执行在快照创建期间对其卷进行的i/o操作,而不影响快照。用户可以从快照创建新卷,例如以创建其卷的副本或恢复数据。新卷将包含存储在快照中的所有数据,因此将是启动快照时的原始卷的副本。通过这种方式,快照也可用于将卷的数据从一个可用区传递到另一个可用区。类似地,可以对实例拍摄快照以创建所述实例的新虚拟机实例。
50.示例公共快照服务概述
51.图3描绘其中在弹性计算系统120上实现公共快照服务130的计算环境300。更具体地,计算环境300包括通过网络104与弹性计算系统120通信的用户计算装置102和客户端存储服务器103。由图3的弹性计算系统120实现的公共快照服务130包括数据平面系统132和快照工作流程138。数据平面系统132还包括元数据高速缓存134和索引高速缓存136。另外,弹性计算120还包括与密钥管理器144、数据库146、对象存储装置148和块存储装置150通信的控制平面系统140。例如,对象存储装置148可以由图1的对象存储服务器110实现并且块
存储装置150可以由图1的块存储服务器105实施。公共快照服务130的一个或多个组件可以在由计算服务器115提供的一个或多个实例116上实现。
52.控制平面系统140提供一组api,用户计算装置102的用户可以使用这些api创建和完成快照(例如,创建快照api和完成快照api),并且数据平面系统132提供一组api,用户计算装置102的用户可以使用这些api来添加和读取存储在弹性计算系统120上的现有快照中的数据块(例如,添加数据块api、列出快照块api、列出变化api,以及获取快照块api)。
53.当公共快照服务130创建快照时,公共快照服务130可以将要添加到快照的块的元数据存储在元数据高速缓存中。元数据用于最小化或减少控制平面调用的数量。在完成快照后,可以修剪此元数据。公共快照服务130可以将快照清单索引存储在索引高速缓存136中,其中快照清单索引标识快照中以特定顺序布置的所有块。例如,元数据索引可以是块索引到清单文件中的偏移映射的查找表。元数据索引中的条目可以表示块索引和清单文件以块索引开始的部分的偏移的映射。
54.快照工作流程138可以执行公共快照服务130的一个或多个操作,例如使用由用户指定/提供的块构建快照,执行完整性验证,并与弹性计算系统120的其它组件通信。
55.密钥管理器144可以利用硬件安全模块对由公共快照服务130提供的数据进行加密和解密。例如,密钥管理器144可以与硬件可信平台模块(tpm)通信以对由公共快照服务130提供的数据密钥进行加密。在其它情况下,密钥管理器144可以访问包括密钥管理器144可使用的一个或多个密钥的密钥文件,以对由公共快照服务130提供的数据进行加密或解密。密钥管理器144可以提供暴露给公共快照服务130的http api。
56.数据库146可以是由弹性计算系统120的一个或多个关系或非关系数据库服务器实现的数据库,并且可以将与各个块相关联的记录存储在快照中(例如,指示其状态)。另外,数据库146可以存储指示快照的父子关系的沿袭数据。对象存储装置148可以是上述对象存储服务器110的一个或多个桶,其包括卷的快照。块存储装置150可以是上文描述的块存储服务器105的一个或多个卷(例如,虚拟机实例的虚拟磁盘),针对其创建一个或多个快照和/或可以将一个或多个快照恢复到其上。
57.示例快照创建工作流
58.图4描绘根据本公开的方面的在创建块级快照时在图3中所示的各种组件之间的交互。如图4中所示,在(1)处,用户计算装置102调用控制平面api来起始块快照创建过程。api调用可以指定用于创建块快照的参数,例如(i)为其创建块快照的卷的大小,(ii)任何先前/父快照的指示,(iii)与请求相关联的唯一令牌(例如,以确保幂等性,使得请求的后续重试不会创建另一快照),(iv)用于加密快照的密钥(如果未指定,则可以使用默认密钥或用于加密先前/父快照的密钥),(v)如果没有进展,则可以在其之后取消请求的超时时段等。在(2)处,控制平面系统140从密钥管理器144请求数据密钥。在(3)处,密钥管理器144生成数据密钥并将生成的数据密钥传输到控制平面系统140。在一些实施方案中,(1)处的请求包括用于加密快照的数据密钥并且省略(2)和(3)。在其它实施方案中,(1)处的请求指定先前/父快照,并且控制平面系统140通过标识用于加密先前/父快照的数据密钥来确定数据密钥。在(4)和(5)处,控制平面系统140基于从密钥管理器144获得(或以其它方式标识)的数据密钥请求并分配新的快照id。用户计算装置102可以使用分配的快照id来标识新的块快照并执行关于块快照的附加操作,如下面进一步示出。在(6)处,控制平面系统140向用
户计算装置102返回响应。例如,返回的响应可以包括分配的快照id和使用快照所需的其它参数,例如块大小(块快照中的块的大小)。
59.在(7)处,用户计算装置102调用数据平面api以将存储卷的块添加到快照。数据平面api可以将(1)至(6)中创建的快照id、指示要添加到快照的数据块的位置的块索引、存储在数据块中的数据(本文也称为块数据)、数据块的长度和校验和信息作为输入。在一些实施方案中,可以在数据平面api调用中指定一个或多个子块(连同它们的偏移、数据和长度)。在一些情况下,与存储卷相关联的操作系统可以跟踪并指示存储卷的哪些块应该包括在快照中(例如,忽略对存储卷中不需要的文件的改变)。
60.在(8)处,数据平面系统132向控制平面140传输访问和验证检查请求并接收返回响应。例如,在(7)处接收到的请求中包括的校验和信息可以包括客户端校验和值,并且控制平面140可以使用客户端校验和值来验证块数据的完整性。尽管图4中未示出,但是客户端校验和值可以存储在数据库146中。在一些情况下,代替指定完整块,在(7)处接收到的请求将子块的列表指定为完整块的一部分。可以单独地验证子块(例如,使用请求中包括的校验和信息)。在框(9)处,数据平面系统132通过向密钥管理器144传输对加密数据密钥进行解密的请求并作为响应接收解密的数据密钥来获得解密数据密钥。在(10)处,数据平面系统132向数据库146传输在数据库146中创建块记录的请求并接收返回响应。例如,块记录可以指示块记录的状态是“待决”。在(11)处,数据平面系统132用解密的数据密钥对数据块进行加密,以产生加密的数据块。在(12)处,数据平面系统132向对象存储装置148传输将加密数据块存储在对象存储装置148中的请求并接收返回响应。尽管图4中未示出,但是在进行到(12)之前,数据平面132可以计算加密数据块的校验和,并确定校验和是否与在(7)处接收到的请求中包括的客户端校验和值匹配。在(13)处,数据平面系统132向数据库146传输更新数据库146中的块记录的请求并接收返回响应。例如,更新的块记录可以指示块记录的状态是“添加”。在(14)处,数据平面系统132向用户计算装置102传输状态。例如,状态可以指示在(7)处标识的数据块已成功添加到快照中。可以重复图4的交互(7)到(14)以向快照添加额外的数据块。
61.在添加了所有数据块之后,用户计算装置102可以调用控制平面api来完成或密封快照。控制平面api可以将快照id、快照中已改变的数据块的数量(例如,此数量应与(7)至(14)中添加的数据块的数量匹配)和校验和信息作为输入。快照完成可以作为异步任务启动,并且可以通过在请求中指定快照id使用api跟踪其进度。在完成过程期间,可以使用请求中提供的校验和信息来检查添加和/或改变的块的校验和以及版本信息以完成快照。一旦完成快照,控制平面140就可以返回成功返回值。在快照完成之前,快照内的块可能不可读,并且读取快照内的块的请求可能会导致错误。一旦成功地密封快照,快照就可能变得不可变,额外的数据块可能无法添加到快照中,并且快照内的数据块可能变得可读。
62.将数据写入到快照块的示例工作流
63.图5描绘用于将数据写入到已分配的快照块的另一示例工作流(例如,如图4的(1)至(6)中所示)。如图5中所示,在(1)处,用户计算装置102向数据平面系统132发送请求(例如,以api调用的形式),以通过指定与快照(例如,在(1)处的请求之前创建但尚未密封或完成的快照)相关联的快照id以及指示要添加到快照的数据块的位置的块索引、块数据、数据块的长度和校验和信息来将数据添加到快照的块。在一些实施方案中,写入可以发生在子
块级别,如下面关于图14更详细地讨论。在(2)处,数据平面系统132检查验证/授权来自用户计算装置102的请求所需的验证/授权信息是否存储在高速缓存152中。如果是,则数据平面系统132使用所述信息验证/授权请求。如果不是,则数据平面系统132向控制平面140传输验证/授权请求。在验证/授权请求之后,数据平面系统132检查高速缓存154是否存储数据平面系统132可用的解密数据密钥。如果是,则数据平面系统132使用存储在高速缓存154中的解密密钥。如果不是,则在(3)处,数据平面系统132向密钥管理器144请求解密的数据密钥并接收解密的密钥。在(4)处,数据平面系统132向数据库146传输在数据库146中创建块记录的请求并接收返回响应。例如,块记录可以指示块记录的状态是“待决”。在(5)处,数据平面系统132用解密的数据密钥对数据块进行加密,并且在(6)处,向对象存储装置148传输将数据块存储在对象存储装置148中的请求并接收返回响应。在(7)处,数据平面系统132向数据库146传输更新数据库146中的块记录的请求并接收返回响应。例如,更新的块记录可以指示块记录的状态是“添加”。在(7)处,数据平面系统132向用户计算装置102返回响应。例如,返回的响应可以指示在(1)处标识的数据块已成功添加到快照中。可以重复图5的交互(1)至(7)以向快照块添加额外的数据。
64.用于基于沿袭和差异信息创建快照的示例例程
65.如图4和图5中所示,可以通过调用快照创建api从存储在弹性计算系统120上的卷或本地卷创建块快照。作为响应,公共快照服务130可以生成快照的加密参数并将这些参数传递给块存储装置150以生成新的快照id。在来自块存储装置150的成功响应后,公共快照服务130可以返回快照创建api的响应,所述响应可以包括分配的快照id、块大小等。然后用户计算装置102(或在其上运行的应用程序)可以重复地(在顺序或并行工作流中)调用添加数据块api以将数据块添加到快照中。在已将所有改变块添加到快照之后,用户计算装置102(或在其上运行的应用程序)可以通过调用完整的快照api来密封快照。公共快照服务130(或控制平面系统140)然后可以起始异步任务以验证和密封快照。参考图6,更详细地描述快照创建过程。
66.图6描绘根据本公开的方面的用于创建块级快照的说明性例程600。例程600可以例如由公共快照服务130或本文描述的弹性计算系统120的一个或多个其它组件执行。为方便起见,例程600的步骤被描述为由公共快照服务器执行。例如,此公共快照服务器可以包括一个或多个硬件计算装置和存储指令的非暂时性物理计算机存储装置,所述指令在由一个或多个硬件计算装置执行时,使一个或多个硬件计算装置执行例程600的步骤。
67.例程600开始于602,其中公共快照服务器接收创建存储卷的增量快照的快照创建请求,其中存储卷由客户端数据存储服务器实现并且存储多个数据块。客户端数据存储服务器可以在弹性计算系统120的外部并且与弹性计算系统120进行网络通信(例如,经由网络104)。替代地,快照创建请求可以针对由弹性计算系统120实现的存储卷,例如卷106。
68.快照创建请求可以标识存储在与公共快照服务器进行网络通信的快照存储库中的父快照。父快照可以表示存储卷的先前状态(例如,在创建父快照时存储卷的状态,其可能与存储卷的当前状态不同)。在一些情况下,请求中标识的父快照是当前正在创建的快照的直接父快照。在其它情况下,请求中标识的父快照是更远的父快照,其中已在创建父快照的时间与创建当前快照的时间之间创建存储卷的一个或多个快照。
69.快照创建请求还可以标识存储在存储卷中的多个数据块中的数据块的子集。例
如,在存储卷中存储的200个数据块中,快照创建请求可以指示仅数据块51-100应该包括在快照中。所述请求可以例如由用户通过公共快照服务130的api提交。
70.在框604处,公共快照服务器从客户端数据存储服务器接收在快照创建中标识的数据块的子集。
71.在框606处,公共快照服务器基于从客户端数据存储服务器接收的数据块的子集以及与父快照相关联的一个或多个附加数据块来生成增量快照。通过这样做,公共快照服务器可以在不访问为其创建增量快照的存储卷中的所有数据块的情况下生成增量快照。例如,增量快照中的每个块可以使用其存储位置(例如,在对象存储装置148中)、快照id(例如,如果引用父/祖先快照,则父/祖先快照的id,或如果首先已上传数据块或如果先前上传数据块,但未引用对应父/祖先快照,则当前快照的id)和块索引(例如,表示当前块在存储卷中的逻辑位置)表示。因此,如果数据块是父快照和回溯父快照的增量快照的一部分,则数据块可以被表示为在父快照和增量快照两者中具有相同的存储位置(例如,在对象存储装置148中)。基于在将块添加到增量快照的请求中提供的与块相关联的块索引,公共快照服务器可以确定增量快照中的哪些块应该从父/祖先快照推导。通过允许快照创建请求指定父快照,公共快照服务器无需在增量快照中再次访问和存储作为父快照的一部分的数据块,从而减少创建增量快照所消耗的计算资源量。
72.在框608处,公共快照服务器使增量快照存储在快照存储库中。例如,公共快照服务器可以将增量快照存储在本文所述的对象存储装置148中。在增量快照存储在对象存储装置148中之前或之后,增量快照可以经历密封过程。在已提交增量快照内的所有块之后,客户端计算装置可以提供增量快照中的块的清单,并且公共快照服务器可以使用清单来验证已添加到增量快照中的块(除了或代替其它完整性检查,例如使用客户端计算装置所提供的校验和信息的完整性检查)。客户端计算装置所提供的快照清单可以包含对增量快照的所有块的引用。在一些情况下,清单包括对沿袭中的一个或多个祖先快照中的数据块或块的引用。在已根据清单验证增量快照内的所有块之后,密封过程结束,并且增量快照变得不可变且可读。替代地,在一些实施方案中,此清单不由客户端计算装置提供,而是由公共快照服务器在增量快照成功完成时生成。在此类实施方案中,快照密封过程可以涉及其它类型的完整性检查(例如,校验和)。
73.虽然在图6中示为单个系列操作,但是框604-608可以重复多次,每次重复接收数据块的子集的块,更新增量快照并存储更新的快照。例如,公共快照服务器可以接收对公共快照服务器所提供的添加数据块api的重复调用(例如,如图4和图5中所示)。
74.在框610处,公共快照服务器使存储在快照沿袭数据库中的快照沿袭数据进行更新,以反映父快照与增量快照之间的沿袭。例如,公共快照服务器可以将快照沿袭数据存储在本文所述的数据库146中。例程600然后可以结束。
75.在图6的示例中,公共快照服务器使用户能够通过为要添加到快照的每个块提交api调用直接将块写入到快照中。通过这样做,公共快照服务器允许用户确定其希望保留父/祖先快照的哪些块以及其希望重写父/祖先快照的哪些块,从而使用户自由地从父/祖先快照继承块,即使在这些块对用户来说并不重要的情况下,这些块自创建父/祖先快照以来发生变化,从而节省了计算资源。由于api将依赖用户来指示将哪些新块添加到增量快照中以及将从父/祖先快照继承哪些先前存储的块,因此用户可能需要跟踪已相对于父/祖先
快照对当前卷(将为其创建增量快照)做出的改变。另外,通过允许用户指定用户希望添加到增量快照的块,公共快照服务器不需要执行耗时的块比较,以确定哪些块已相对于父/祖先快照改变。
76.另外,在一些情况下,用户可能希望将“空”数据写入到增量快照中的块(例如,在用户不希望块从父/祖先快照继承,但所述块不含有任何有意义的数据的情况下)。在此类情况下,公共快照服务器可以指示所述块为空(或包含空数据),而不是将空数据写入到块并将其存储在对象存储装置中。通过这样做,公共快照服务器可以通过不必在对象存储装置中存储空块来实现进一步的计算资源节省。例如,用户可以指示所述块包含空数据,或者公共快照服务器可以基于用户提供的块数据确定所述块包含空数据。
77.尽管在图6中未示出,但是公共快照服务器可以使增量快照恢复到由客户端数据存储服务器(例如,弹性计算系统120外部的客户端数据存储服务器)实现的一个或多个存储卷上,或使增量快照恢复到由不同于客户端数据存储服务器的块存储服务器实现的一个或多个存储卷上(例如,由弹性计算系统120实现的存储卷,例如卷106)。
78.用于生成快照存储路径结构的示例例程
79.出于各种目的,例如为了创建增量快照或为了跟踪随时间变化的块,系统可以计算两个快照之间的差异。然而,通过执行逐块数据比较来计算差异可能非常耗时,尤其是对于与大量数据相关联的快照。为了解决这个问题,本文描述的技术提供一种以加速块差计算过程的方式存储快照的改进方法。例如,在基于父快照生成子快照时,如果子快照中的块相对于父快照中的对应块未改变,则存储所述块,使得所述块具有与父快照中的对应块相同的路径结构。如果子快照中的块自创建父快照以来已经改变,则存储所述块,使得所述块具有与父快照中的对应块不同的路径结构(例如,对象存储装置中的存储目录路径)。因此,通过比较两个快照中的块的路径结构,可以更快速地计算出差异,而无需执行块级数据比较,从而减少宝贵的处理资源的消耗。下文参考图7更详细地描述此类技术。
80.图7描绘根据本公开的方面的用于生成快照存储路径结构的说明性例程700。例程700可以例如由公共快照服务130或本文描述的弹性计算系统120的一个或多个其它组件执行。为方便起见,例程700的步骤被描述为由公共快照服务器执行。例如,此公共快照服务器可以包括一个或多个硬件计算装置和存储指令的非暂时性物理计算机存储装置,所述指令在由一个或多个硬件计算装置执行时,使一个或多个硬件计算装置执行例程700的步骤。
81.例程700开始于702,其中公共快照服务器接收创建存储多个数据块的存储卷的增量快照的快照创建请求。存储卷可以与先前创建并存储在与公共快照服务器进行网络通信的快照存储库中的父快照相关联。父快照可以表示存储卷的先前状态(例如,在创建父快照时存储卷的状态,其可能与存储卷的当前状态不同)。所述请求可以例如由用户通过公共快照服务130的api提交。
82.在框704处,公共快照服务器确定存储在存储卷中的多个数据块中的数据块的子集和与父快照相关联的对应数据块集合相同。例如,公共快照服务器可以基于公共快照服务器的用户所提供的数据块子集的标识来确定数据块的子集相同,而无需执行父快照与增量快照之间的逐块数据比较。替代地,公共快照服务器可以基于父快照与增量快照之间的逐块数据比较来确定数据块子集相同。
83.在框706处,公共快照服务器生成与增量快照相关联的第一存储路径结构数据,其
中第一存储路径结构数据包括(i)与数据块子集相关联的第一路径信息和(ii)与多个数据块中的一个或多个附加数据块相关联的第二路径信息,其中第一路径信息和与父快照相关联的对应数据块集合相关联的父路径信息相同,并且第二路径信息和与父快照相关联的任何路径信息不相同。在一些实施方案中,给定快照的存储路径结构数据可以是对应于与给定快照相关联的数据块集合的存储目录路径列表。例如,父快照可以包括3个数据块,并且对于所述3个数据块,父快照的存储路径结构数据可以分别包括“path://snapshots/snapshot-id-2/block-1”、“path://snapshots/snapshot-id-2/block-2,”以及“pat h://snapshots/snapshot-id-2/block-3。”在相同示例中,增量快照包括相同的3个数据块,但第三数据块中的数据已改变。增量快照的存储路径结构数据可以分别包括“path://snapshots/snapshot-id-2/block-1”、“path://snapshots/snapshot-id-2/block-2,”以及“path://snapshots/snapshot-id-2/block-3-1。”在此示例中,在父快照的存储路径结构数据中找到增强快照的存储路径“path://snapshots/snapshot-id-2/block-1”和“path://snapsho ts/snapshot-id-2/block-2。”另一方面,在父快照的存储路径结构数据中找不到第三数据块的存储路径“path://snapshots/snapshot-id-2/block-3-1。”如参考图8更详细地描述,通过针对增量快照中的每个相应数据块确定在父快照的存储路径结构数据中是否找到相应数据块的路径信息,公共快照服务器可以快速地确定增量快照的哪些数据块表示相对于父快照变化的数据块,而无需对增量快照中的所有数据块执行逐块数据比较。
84.在框708处,公共快照服务器使增量快照与第一存储路径结构数据一起存储在快照存储库中。在一些实施方案中,增量快照存储在与第一存储路径结构数据相同的存储装置中。在其它实施方案中,增量快照存储在与其中存储第一存储路径结构数据的存储装置分开的存储装置中。例程700然后可以结束。
85.尽管在图7中未示出,但是公共快照服务器可以使增量快照恢复到由客户端数据存储服务器(例如,弹性计算系统120外部的客户端数据存储服务器)实现的一个或多个存储卷上,或使增量快照恢复到由不同于客户端数据存储服务器的块存储服务器实现的一个或多个存储卷上(例如,由弹性计算系统120实现的存储卷,例如卷106)。
86.用于计算快照块差异的示例例程
87.公共快照服务130的用户可以例如通过调用快照差异api并指定两个快照的id来请求两个快照之间的差异。作为响应,公共快照服务130可以返回改变的数据块的列表。通过将快照的数据块存储在参考图7描述的特定存储路径结构中,可以通过比较两个快照中的数据块的路径结构来更快速地计算出差异,而无需执行块级数据比较,从而减少了宝贵的处理资源的消耗。下文参考图8更详细地描述快照块差异计算例程。
88.图8描绘根据本公开的方面的用于计算两个快照之间的快照块差异的说明性例程800。例程800可以例如由公共快照服务130或本文描述的弹性计算系统120的一个或多个其它组件执行。为方便起见,例程800的步骤被描述为由公共快照服务器执行。例如,此公共快照服务器可以包括一个或多个硬件计算装置和存储指令的非暂时性物理计算机存储装置,所述指令在由一个或多个硬件计算装置执行时,使一个或多个硬件计算装置执行例程800的步骤。
89.例程800开始于802,其中公共快照服务器从用户计算装置102接收计算父快照与
增量快照之间的快照块差异的请求。尽管在本文中称为父快照和增量快照,但这些快照可以是存储在公共快照服务器上的任何两个快照。说明性地,快照沿袭可以表示为树,其中根快照指示没有先前沿袭的快照,从根快照创建的增量快照是根快照的子节点,另外的增量快照是这些子节点的子节点等。在一些实施方案中,通过例程800比较的两个快照具有父子关系。在此类实施方案中的一些中,请求中标识的父快照是请求中标识的另一快照的直接父快照。在其它实施方案中,请求中标识的父快照是请求中标识的另一快照的更远父快照,其中已在创建父快照的时间与创建请求中标识的另一快照的时间之间创建相同存储卷的一个或多个快照。在另一实施方案中,在例程800中比较的两个快照可以是“兄弟”或“堂兄弟”快照—在谱系树内共享共同祖先快照的两个快照。因此,参考图8中的“父”和“子”快照应该被理解为指可以通过例程800进行的一个示例比较。所述请求可以例如由用户通过公共快照服务130的api提交。
90.在框804处,公共快照服务器生成数据块的列表,每个数据块与不包括在与父快照相关联的父路径信息中的路径信息相关联。例如,通过针对与增量快照相关联的每个相应数据块确定与相应数据块相关联的路径信息是否包括在与父快照相关联的父路径信息中,以及标识其路径信息不包括在父路径信息中的数据块集合,公共快照服务器可以生成数据块的列表。例如,分别针对父快照中的3个数据块,父快照的存储路径结构可以分别包括“path://snapshots/snapshot-id-2/bloc k-1”、“path://snapshots/snapshot-id-2/block-2”以及“path://snapshots/snaps hot-id-2/block-3,”并且针对父快照中的3个数据块,增量快照的存储路径结构可以包括“path://snapshots/snapshot-id-2/block-1”、“path://snaps hots/snapshot-id-2/block-2”以及“path://snapshots/snapshot-id-2/block-3-1。”在本示例中,基于路径信息“path://snapshots/snapshot-id-2/block-3-1”不在父快照的存储路径结构中,公共快照服务器可以确定具有路径信息“path://snapshots/snapshot-id-2/block-3-1”的增量快照的第三块已经改变并输出第三块。
91.在框806处,公共快照服务器输出数据块的列表以在用户计算装置上呈现。例程800然后可以结束。
92.示例快照清单和清单索引
93.图9描绘表示卷902的快照的示例快照清单904和对应清单索引906,所述卷表示块存储装置。应理解,对卷、清单和清单索引的这些描述仅是实现本公开的一个或多个方面的一个示例。虽然将卷902描绘为由20个块组成,但是本领域技术人员将理解,快照可以具有多于或少于20个块。类似地,尽管图9将快照清单904和清单索引906的条目描绘为逗号分隔值或表达式,但本领域普通技术人员将理解,条目可以以其它方式实现,例如以二进制表示的条目、作为数据库结构的条目的条目、键值数据、查找表等。
94.图9描绘包括20个块的卷902,所述块包括块910a、910b、910c。例如块910a、910b、910c的每个块可以是卷902的逻辑段,其表示说明性块存储装置。卷902的块可以与表示例如卷的逻辑块地址的块索引或标识符相关联。如图9中所描绘,卷902的块具有块索引1-20。虽然在图9中示出一系列连续的数字指标,但是其它序列也是可能的,例如非连续整数序列、以除了1之外的整数开始的序列或非数字序列(例如,字母序列)。卷902以及卷902的由此产生的快照可以是稀疏的,这意味着卷902的一些分区或块没有被写入数据。在图9中,具有写入数据的卷902的块(例如块910a和910b)是灰色阴影。没有写入数据的块(例如块
910c)无阴影。
95.快照在逻辑上被划分为对象,使得快照的对象对应于卷的一个或多个块。一般来说,快照清单904列举卷902的块以及存储与那些块相对应的数据的快照的特定对象。快照清单904可以另外包含与对象的存储位置相关的元数据,所述对象存储对应于快照块的数据。如图9中所描绘,快照可以排除没有写入数据的卷902的块,因此快照清单904可以排除没有写入数据的块(例如,块910c)并且仅列举具有写入数据的块。快照清单904可以根据块索引按顺序(例如按升序)列举块。尽管图9中的卷904的每个块与单个对象相关联,但是在一些情况下,快照的单个对象可以存储关于卷的多个块的信息。在图9中,快照清单904的每一行代表快照清单904的条目。快照清单904的每个条目由条目号(图9中的清单条目1-14)列举。快照清单904的每个条目可以指示块索引、存储块的数据的对象以及对象所属的快照id。例如,在图9中,第一条目指示存储在对象1内的快照1的块1。作为另一示例,第四条目指示存储在对象4内的快照1的块8。块索引、对象和快照id可以指示为整数、十六进制数、字符串表达式等。在一些情况下,对象标识符可以包括前缀标识符,所述前缀标识符指示对象存储服务器中存储对象的顶级逻辑路径。条目可以包含附加信息,例如前缀、包含块的对象的逻辑路径内的地址、文件路径数据、对象数据的校验和、对象内的块的子块或块元数据、对象元数据(例如,访问令牌,其在算法上链接到存储块数据的对象的存储位置,如下所述)等。清单904的条目可以是8kb、16kb、32kb、100kb、1mb等。快照清单904可以在创建快照时存储在对象存储服务器110上,并且可以响应于本文所描述的快照操作而进行修改。
96.快照清单904可以在逻辑上划分为m个条目的“片段”。最后一个片段可以具有少于m个条目,这取决于构成快照清单904的总条目数。清单索引906的大小与m成反比。换句话说,可以选择大的m来减小清单索引906的大小。清单分区或片段又具有更多条目,因此识别快照块的位置的过程1200可能需要下载或检索更大的清单片段以及更多的计算,以在片段中搜索所请求的块。可以在配置公共快照服务时选择片段大小m,或者可以由生成快照的客户按客户指定。可以根据优化方案确定片段大小m,以平衡清单索引大小、带宽和存储要求以及所需的搜索速度。例如,较大m可能会导致扫描速度更快的清单索引更小,但扫描速度更慢的清单分区更大。相反,较小m可能会导致扫描速度更慢的清单索引更大,但扫描速度更快的清单分区更小。在一个实施方案中,可以根据卷或快照的大小确定片段大小m;更大卷可以有更大m且更小卷可以有更小m。在图9中,片段大小m是3个条目,因此每个片段n=1至n=4具有3个条目。最后一个条目n=5具有2个条目。清单的每个片段可以与指示片段相对于快照清单904内的条目的位置的偏移相关联。例如,具有偏移n的片段由位置((n-1)
×
m 1)到位置(n)
×
m中的条目组成。如果片段是快照清单904的最后一个片段并且具有少于m个条目,则条目包括位置((n-1)
×
m 1)中的条目到快照清单904的最后一个条目。清单条目的偏移可以说明性地指所述条目所在的清单的行。在这种情况下,如图9中所描绘,属于块8的清单条目的偏移是4。
97.在图9中,清单索引906的每个条目包含指示清单中片段的偏移的条目(例如,作为行号)、与片段相关联的开始块以及与片段相关联的结束块。因此,对于图9中描绘的示例快照清单904,清单索引906可以包含5个条目,针对每个片段n=1至n=5一个条目。说明性地,从清单行4开始的片段n=2的开始块是块8,与片段n=2的第一条目相关联的块在图9中的快照清单904中列举。片段n=2的结束块是块10。偏移以及开始和结束块可以被指示为整
数、十六进制数、字符串表达式等。清单索引906的条目可以是4b、8b、16b、100b、1kb、8kb、16kb、32kb、100kb、1mb等。
98.虽然清单索引内的条目在图9中示为反映清单片段的偏移,但是在一些情况下,清单索引中的条目可以另外地或替代地反映片段在其它片段中的逻辑位置。例如,第一条目可以指示片段n=1,第二条目可以指示片段n=2等。如上所示,清单内的逻辑片段编号和此片段的偏移可以在数学上相互推导。
99.在一些实施方案中,清单索引906内的每个条目可以进一步指示与条目相关联的清单片段的校验和值(或所述片段内的信息,例如块索引),用于验证从对象存储服务器110检索或下载的清单904的片段。
100.清单索引906可以在创建快照时存储在对象存储服务器110上,并且可以响应于本文所描述的快照操作而进行修改。响应于对快照的第一操作,可以检索清单索引906并将其缓存到公共快照服务的本地存储器中。
101.用于标识快照块的位置的示例工作流
102.图10描绘用于标识元数据以访问图3的网络环境上的快照内的块的数据的示例工作流1000。例如,用于访问块的数据的元数据可以是基于存储在对象存储服务器110上的块(即,对应于所述块的对象)的位置生成的访问令牌。说明性地,每个块的令牌可以独立地或结合例如块号的其它信息在算法上链接到在对象存储服务器110上存储块数据的对象的存储位置,使得通过算法处理令牌和其它信息(如果有的话)产生对象在对象存储服务器110上的位置,所述位置表示块的数据。在一个实施方案中,令牌对于请求用户计算装置102是不透明的,使得装置102不能够确定对象的位置。
103.在步骤(1),用户计算装置102从公共快照服务130请求用于访问块的元数据。用户计算装置102可以并行地或串行地请求多个块的此种元数据。例如,用户计算装置102可以从给定块号开始请求快照的指定数量块的元数据列表(例如,列出从块1开始记录在快照内的接下来的100个块)。标识请求可以是例如读取快照或修改快照的快照操作的一部分。在步骤(2),公共快照服务130使用清单索引906标识包含所请求块的条目的清单片段。公共快照服务130可以实施过程1200以标识与包含所请求块的条目的清单片段相关联的偏移n(例如,通过清单内的行)。清单索引906可以存储在对象存储服务器110中。在此类示例中,清单索引906可以从对象存储服务器110中检索并且本地缓存在公共快照服务130的计算系统上。
104.在步骤(3),公共快照服务130检索所标识的清单片段。在一个实施方案中,将清单904存储为单个文件,可以从所述单个文件中单独地检索清单片段。快照服务130可以从清单片段中检索m个条目,所述清单片段从片段的清单索引条目中指示的清单行开始。如果片段是清单904的最后一个片段并且具有少于m个条目,则所述条目包括来自清单索引条目中指示的清单行的条目到清单904的最后一个条目。在清单索引指示逻辑片段号n的情况下,快照服务130可以检索位置((n-1)
×
m 1)至快照清单904的位置(n)
×
m中的条目,其中n是在步骤(2)中标识的逻辑片段号。如果片段是清单904的最后一个片段并且具有少于m个条目,则条目包括位置((n-1)
×
m 1)中的条目到快照清单904的最后一个条目。在另一个实施方案中,将清单904存储为一系列文件(例如,清单1、清单2等),因此服务130可以直接检索对应于清单片段的文件。在检索到所标识的清单片段之后,公共快照服务130可以通过比较
检索到的清单片段的校验和值(例如,通过使清单片段通过例如md5算法的校验和计算生成)与清单索引906中指示的校验和值来验证检索到的清单片段是有效的。
105.在步骤(4),公共快照服务130从清单片段标识用于访问所请求块的元数据。具体地,在步骤(4),公共快照服务130可以在检索到的清单片段中搜索对应于所请求块的条目,并且相应地标识如清单条目中指示的存储块数据的对象。快照服务130可以标识存储在快照清单904中的其它元数据,例如前缀元数据、包含块的逻辑路径内的地址、文件路径数据、对象数据的校验和、对象内的块的子块或块元数据、对象元数据等。在步骤(5),公共快照服务130返回用于访问的元数据。例如,元数据可以是对象或存储所请求块的数据的对象的地址,或者由公共快照生成并对应于所请求块的存储位置的访问令牌。在步骤(4)中未标识块的条目的情况下,公共快照服务130可以返回空或错误消息。空消息可以指示快照没有对块存储装置卷的所请求块进行备份(例如,因为它没有被写入)。在步骤(1)的请求是列举多个块的情况下,公共快照服务130可以返回包含用于访问指定数量的快照块的元数据的列举列表。例如,服务130可以标识检索到的清单片段内的第一条目,以及直到指定的总条目数的任何附加条目,并返回这些总条目内的每个块的元数据。在一些情况下,指定数量的块可能超过片段大小m,因此服务130可以在(3)处读取初始检索的片段之外的清单内的条目。
106.用于创建清单索引的示例例程
107.图11是用于生成清单索引的示例例程1100的流程图。例程1100可以例如由公共快照服务130或本文描述的弹性计算系统120的一个或多个其它组件执行。为方便起见,例程1100的步骤被描述为由公共快照服务器执行。例如,此公共快照服务器可以包括一个或多个硬件计算装置和存储指令的非暂时性物理计算机存储装置,所述指令在由一个或多个硬件计算装置执行时,使一个或多个硬件计算装置执行例程1100的步骤。例程1100可以通过卷的快照的完成来起始(例如,在将卷的块写入到快照中之后)。另外或替代地,例程1100可以由创建清单索引的请求起始。
108.在框1102处,公共快照服务130接收快照清单906,所述快照清单可以由服务130在完成快照期间创建。可以从对象存储服务器110接收快照清单906。如果在将清单存储到对象存储服务器中110之前执行例程1100,则可以从本地高速缓存接收快照清单。
109.在框1104处,公共快照服务130为来自清单的m个条目创建逻辑分区或片段,m是清单片段大小。在框1106处,公共快照服务130创建清单索引条目,所述清单索引条目指示片段在清单内的位置(例如,片段开始的清单条目的行号),以及用于清单片段内的条目的开始和结束块。公共快照服务130还可以在清单索引条目中指示与清单片段相关联的校验和值(例如,通过使片段的条目通过校验和计算来生成)。
110.在决策框1108处,公共快照服务130确定清单中是否剩余尚未分区并输入到清单索引中的多于m个条目。如果剩余多于m个条目,则例程返回到框1104以划分m个条目的下一个片段。如果剩余的条目少于或等于m,则例程进行到框1110。在框1110处,公共快照服务130创建最后一个清单索引条目,其指示片段在清单内的位置以及片段内的条目的开始和结束块。最后一个清单片段可以具有少于m个条目。在框1110之后,例程1100结束。公共快照服务130可以将创建的清单索引存储在对象存储服务110或本地高速缓存中。在一个实施方案中,公共快照服务130将创建的清单索引按单独的片段存储。
111.用于使用清单索引标识对象的示例例程
112.图12是用于标识用于访问快照块的元数据的示例例程1200的流程图。例如,元数据可以是对象的存储位置,所述对象存储对应于快照中反映的卷的块的数据,或者对应于快照内的块(即对应于所述块的对象)的位置的访问令牌。请求可以针对用于访问多个块的元数据。例如,所述请求可以指示来自给定块号的快照的指定数量块的列表。例程1200可以例如由公共快照服务130或本文描述的弹性计算系统120的一个或多个其它组件执行。为方便起见,例程1200的步骤被描述为由公共快照服务器执行。例如,此公共快照服务器可以包括一个或多个硬件计算装置和存储指令的非暂时性物理计算机存储装置,所述指令在由一个或多个硬件计算装置执行时,使一个或多个硬件计算装置执行例程1200的步骤。
113.在框1202处,公共快照服务130接收请求以标识用于访问在快照中反映的卷的块的元数据。可以从用户计算装置102接收所述请求。
114.在框1204处,公共快照服务130从清单索引中标识可以包含所请求块的条目的清单片段。公共快照服务130可以通过将所请求块的块索引与清单索引中列举的每个片段的开始和结束块索引进行比较来标识哪个片段可以包含所请求块。公共快照可以标识范围包括所请求块的清单索引的条目,因此标识与所述块相关联的片段。在另一示例中,公共快照服务130可以通过将所请求块的块索引与清单索引中列举的每个片段的开始块索引进行比较来标识哪个片段可以包含所请求块。例如,公共快照服务130可以确定在具有大于所请求块索引的开始块索引的第一清单片段之前的清单片段。关于图9中描绘的清单索引906,可以请求公共快照服务130标识块9的存储位置或存储数据的对象。公共快照服务130可以从清单索引906确定清单片段n=2可能包含块9的条目,因为开始块索引大于块9的第一清单片段是n=3,其中片段的开始块是块11。
115.在框1206处,公共快照服务130检索所标识的清单片段。公共快照服务130可以从对象存储服务器110检索所标识的清单片段。在一个实施方案中,将清单904存储为单个文件。快照服务130可以从清单片段中检索m个条目,所述清单片段从片段的清单索引条目中指示的清单行开始。如果片段是清单904的最后一个片段并且具有少于m个条目,则所述条目包括来自清单索引条目中指示的清单行的条目到清单904的最后一个条目。在清单索引指示偏移n的情况下,快照服务130可以检索快照清单的位置((n-1)
×
m 1)至位置n
×
m中的条目,其中n是在框1204处标识的逻辑片段编号并且m是片段大小。如果片段是清单的最后一个片段并且具有少于m个条目,则条目包括位置((n-1)
×
m 1)中的条目到清单的最后一个条目。在另一个实施方案中,将清单904存储为一系列文件(例如,清单1、清单2等),因此服务130可以直接检索对应于清单片段的文件。在检索到所标识的清单片段之后,公共快照服务130可以通过比较检索到的清单片段的校验和值(例如,通过使清单片段通过例如md5算法的校验和计算生成)与清单索引中指示的校验和值来验证检索到的清单片段是有效的。
116.在框1208处,公共快照服务130可以确定检索到的片段是否包含所请求块的条目。在对象存储块存储装置卷的一个块的数据的一个实施方案中,例如,公共快照服务130可以通过清单片段的条目来搜索所请求块索引。在另一实施方案中,对象可以存储多于一个块的数据,因此快照清单可以指示在对象上存储一系列的块。在此实施方案中,公共快照服务130可以基于清单内指示的范围进行搜索以标识包括所请求块的对象。在请求指定多个块的情况下,服务可以标识每个此种块的清单内的条目。例如,在请求是请求以特定块号开始
的给定数量块的元数据的“列表”操作的情况下,服务可以标识具有指定大小的清单片段的多个条目,其从对应于指定的块号开始。在指定大小超过清单片段内的条目数量的情况下,服务可以获取后续片段并继续读取此类条目。
117.另外,在框1208处,公共快照服务130返回用于访问所请求块的元数据,所述元数据可以从清单片段中标识的块的条目中读取。例如,元数据可以是对象的存储位置,所述对象存储对应于快照中反映的卷的块的数据,或者对应于快照内的块(即对应于所述块的对象)的位置的访问令牌。公共快照服务130可以返回清单条目中指示的附加信息,例如前缀元数据、包含块的逻辑路径内的地址、文件路径数据、对象数据的校验和、对象内的块的子块或块元数据、其它对象元数据等。如果公共快照130确定检索到的片段不包含所请求块的条目,则公共快照130可以返回空指示或消息。空指示或消息可以指示所请求块没有被备份并存储为快照的一部分。错误指示或消息可以指示清单索引或清单被损坏。如果在请求针对为从所请求块开始的多个块列举的元数据的实施方案中,在片段中没有找到所请求块的条目,则公共快照130可以开始从在清单中具有条目的下一顺序块(即,具有高于所请求块的最低块索引的块)列举元数据。例如,在针对从块5开始的前100个块提交“列表”操作请求(即,从块5开始依序地标识的100个块的列表)并且块5未存储在快照内的情况下,操作可能会导致返回清单中与高于5的块索引相对应的前100个条目的元数据。此外,在请求针对为从所请求块开始的多个块枚举的元数据的实施方案中,公共快照130可以确定将检索额外的清单片段以生成指定大小的列表。
118.示例卷和子块级快照
119.图13描绘根据本公开的方面的示例卷和卷的快照。应理解,对卷、快照和写入集的这些描述仅是实现本公开的一个或多个方面的一个示例。虽然卷1302被描绘为由12个操作系统级块或快照子块组成,但是本领域技术人员将理解,快照可以具有多于或少于12个快照子块。此外,虽然父快照1303的每个块1310a和子快照1304的每个块1312a在逻辑上划分为四个分区或子块,但是本领域技术人员将理解,快照块可以划分为多于或少于四个分区。实际上,根据本公开的方面,可以以任何期望的粒度(例如,在各个字节的级别)对子块进行修改。类似地,尽管图13将写入集1306的条目描绘为逗号分隔值或表达式,但本领域普通技术人员将理解,条目可以以其它方式实现,例如以二进制表示的条目、作为数据库结构的条目的条目、键值数据、查找表等。
120.图13描绘作为父快照1303和子快照1304的基础的块存储装置的卷1302。如图13中所描绘,卷1302包括操作系统级块(例如,由用户计算装置102的操作系统组织的数据的逻辑分组),所述操作系统级块在本文中通常被称为“子块”,如下文进一步详述。例如,块存储卷的每个操作系统级块可以是4kb,并表示操作系统写入到块存储装置的数据单元。在其操作过程中,用户计算装置102可以修改卷1302。在图13中,除去自上次备份以来(即,自创建父快照1303以来)已修改的操作系统级块(例如1308a和1308b)。没有除去未修改的操作系统级块(例如,1308c和1308d)。
121.一般而言,快照可以是块存储卷1302的时间点表示,其中快照作为一组对象存储在一个或多个对象存储服务器上。父快照1303包括3个快照块1310a、1310b、1310c并且每个块被示为在逻辑上划分为子块(尽管这种分区在表示快照块的数据中实际上可能并不明显)。例如,父快照块1301a被示为划分成快照块1311a-d。如图13中所描绘,卷1302的操作系
统级块1308a-d可以在父快照1303中表示为快照块的子块,例如子块1311a-d。换句话说,存储在卷1302的操作系统级块1-4中的数据作为单个快照块1310a存储在对象服务器中。同样,存储在卷1302的操作系统级块5-8中的数据作为单个快照块1310b存储在对象服务器中,并且存储在卷1302的操作系统级块9-12中的数据作为单个快照块1310c存储在对象服务器中。如图13中所描绘,除去自创建父快照1303以来已修改的子块。例如1311a、1311b的修改后的子块对应于例如1308a、1308b的修改后的操作系统级块。快照块1310c中的修改后的子块对应于卷1302的修改后的操作系统级块10-12。
122.子快照1304可以包括快照块1312a、1312b,它们表示在子块(例如,os级块)级别对父快照1303的写入,这可以例如表示自创建父快照以来对卷1302所做的修改。与父快照块1310a-c一样,子快照块1312a、1312b可以作为对象存储在对象存储服务器上。在图13中,子快照块1312a、1312b的阴影子块对应于写入到子快照块1312a、1312b的子块修改。如图13中所示,可能不在子快照1304中表示没有子块级别变化的父快照块(例如,父快照块1310b)。当例如通过过程1500创建子快照1304时,也创建对应写入集。如图13中所描绘,写入集包含每个子快照块1312a、1312b的条目;每个写入集条目可以指示子块偏移和写入到修改后的快照块的数据的长度。子块偏移可以指示写入到修改块的数据的偏移或位置。在一个实施方案中,偏移与快照块的开始有关(例如,指示在块4kb的第一子块处对快照块的写入等)。在另一个实施方案中,偏移与控制底层卷1302的操作系统所使用的逻辑块地址有关。例如,在图13中,子快照块1312a对应于子块1-4并且表示对子块1-2的改变。快照块1312a的块偏移可以是例如值1,因为子块1312a的数据开始于卷1302的第一子块。子快照块1312b对应于子块9-12并且表示对子块10-12的改变。快照块1312b的块偏移因此可以是值10,因为快照块1312b对应于写入到子块10-12的数据。如图13中所描绘,子快照块1312a、1312b中表示的子块修改的逻辑位置对应于卷1302内的修改后的os级块的逻辑位置。可以根据子块标识符(例如,对应于os级块)和/或字节值(例如,千字节数)指示偏移,因为这些值在已知维持卷1302的操作系统所使用的块大小的情况下可以在数学上互换。
123.用于创建子块级快照的示例工作流
124.图14描绘用于从子块级修改创建子快照并合并父快照和子快照的示例工作流。在步骤(1),用户计算装置102向公共快照服务130传输对快照的子块的写入,所述写入可以反映对例如在由父快照备份的本地存储装置上的块存储卷进行的改变。在其它实施例方案中,公共快照服务130可以接收反映对托管在块存储服务上的卷进行的改变的写入。
125.在步骤(2),公共快照服务可以生成包含子块级别改变的子快照块。公共快照服务可以生成包含定义的位模式的缓冲区对象(例如,全零导致“零缓冲区”),将在步骤(1)处接收到的写入信息作为子块改变施加到所述缓冲区对象,使得缓冲区包含对父快照块的子块改变的记录。在快照以加密形式存储在公共快照服务130处的实施方案中,公共快照服务可以加密缓冲区的内容以创建子块。在步骤(3),公共快照服务130生成并存储子快照块的写入集。公共快照服务130可以生成每个子快照块的写入集的条目,所述条目指示子块偏移(例如,写入数据的子块内的位置)和写入到子块的数据的长度。公共快照服务130可以计算写入集的每个条目的校验和。例如,公共快照服务130可以通过将属于子快照块的所有子块的校验和按照它们的逻辑位置以升序连接,然后计算连接的校验和的校验和来计算校验和(例如,base64编码的sha256校验和)。在一些实施方案中,写入集还包括子块相对于快照的
其它块(例如,作为块1、2、3等)的逻辑位置。在其它实施方案中,子块的逻辑位置可以存储在写入集之外(例如,在子块的路径信息内,如上所论述)。公共快照服务130可以将写入集存储在元数据数据存储装置中或对象存储服务器中。本领域技术人员将理解,步骤(2)和(3)可以依序地或至少部分地同时发生。在步骤(4),公共快照服务将子快照的一个或多个块作为一个或多个对象存储在对象存储服务器110中。
126.在步骤(5),用户计算装置102请求由公共快照服务130备份的块存储卷的当前快照。在步骤(6),公共快照服务130检索与请求相关联的父快照和子快照。在步骤(7),公共快照服务根据写入集中指示的偏移将子快照块与父快照块合并。具体来说,公共快照服务可以将子快照块内的写入数据与对应父快照块中的数据“叠加”,以生成表示修改块的数据。例如通过开始从由偏移指示的位置处的子快照针对由长度指示的字节数读取,可以基于偏移和长度标识写入子快照块内的数据。在步骤(7),公共快照服务130可以执行过程1600以合并子快照和父快照。在步骤(8),公共快照服务130可以将合并的快照传输到用户计算装置102。在其它实施方案中,公共快照服务130可以将合并的快照作为新快照存储在对象存储服务器110中。
127.虽然上述交互通常涉及响应于来自用户计算装置102的请求而合并子快照块和父快照块,但是在其它实施方案中,合并可以在此请求之前发生。例如,合并可以根据用户计算装置102的指令发生以“密封”或完成快照。说明性地,交互(1)-(3)可以重复地发生,因为用户计算装置102传输自父快照以来对卷的改变。此后,在交互(4)之前,针对包含子块变化的子快照的每个块,公共快照服务130根据块的写入集将块与父快照的对应块合并。然后,存储在(4)处的子快照可以包括相对于父快照修改的所有块,作为通过根据对应写入集将子块写入与父块合并而生成的完全更改的块或部分更改的块。子快照还可以包括这些更改块的清单,使得读取存储在子快照中的更改块连同父快照的未更改块能够读取快照。说明性地,在存储子快照之前进行子块修改的合并以创建部分更改的块可以加速对从子快照读取数据的请求的服务。
128.用于创建子块的子块写入表示和写入集的示例例程
129.图15是根据本公开的方面的用于为对卷的快照进行的子块修改创建写入表示和写入集的示例过程的流程图。例程1500可以例如由公共快照服务130或本文描述的弹性计算系统120的一个或多个其它组件执行。为方便起见,例程1500的框被描述为由公共快照服务器执行。例如,此公共快照服务器可以包括一个或多个硬件计算装置和存储指令的非暂时性物理计算机存储装置,所述指令在由一个或多个硬件计算装置执行时,使一个或多个硬件计算装置执行例程1500的框。
130.在框1502处,公共快照服务130接收对父快照块的子块的写入。公共快照服务130可以从用户计算装置102、本地存储装置或其它块存储服务接收写入。写入子块的数据可能反映对卷的os级块进行的改变。例如,操作系统可以4kb块为单位对其存储卷执行操作,并且从卷创建的快照可以被配置为将快照存储为大小为512kb的多个分区或快照块,其作为对象存储在一个或多个对象存储服务器上。在此示例中,每个快照块可以存储对应于128个os级块的数据。os级块和快照块可以用顺序地址或标识符来标识,例如,如图13中的示例卷1302所描绘。卷的快照可能是稀疏的,这意味着对于不包含数据的卷的子块,快照块可能不存在。如图13中的示例卷1302所描绘,可以修改卷以便修改一些但不是所有子块。
131.在框1504处,公共快照服务器创建缓冲区对象,用于应用写入到子块的数据。缓冲区对象可以是包括零的对象,零是快照块的大小。
132.在框1506处,公共快照服务器130将写入的数据应用到子块作为对缓冲区的修改,使得缓冲区包含表示对子块的写入的内容(“写入表示”)。将写入的数据应用到缓冲区可以包括将写入的数据写入到缓冲区内与快照块中的子块位置相对应的位置,如示例子快照块1312a、1312b中所描绘。在一些实施方案中,公共快照服务可以在存储写入表示之前对子缓冲区的数据进行加密。
133.在框1508处,公共快照服务器130创建写入表示的写入集条目,其指示作为子块写入而写入的数据的偏移和长度。偏移可以指示在子块写入内写入的数据的偏移或位置。根据逻辑块位置(例如,os级块)、字节位置或类似信息,可以相对于写入的快照块的开始和/或快照的开始来描述偏移。公共快照服务130可以计算写入集的每个条目的校验和。例如,公共快照服务130可以通过将所有子块的校验和按照它们的偏移以升序连接,然后计算连接的校验和的校验和来计算校验和(例如,base64编码的sha256校验和)。
134.在框1510处,公共快照服务130存储写入表示和写入集。写入表示可以作为对象存储在对象存储服务器中,或者保存在快照服务130的存储器中,以用于与来自父快照的块的版本合并(例如,在密封子快照期间)。写入集可以存储在由公共快照服务130维持的元数据数据存储装置上、对象存储服务器中、外部数据库中等。
135.用于合并子快照和父快照的示例例程
136.图16是根据本公开的方面用于合并父快照和子快照的示例过程的流程图。例程1600可以例如由公共快照服务130或本文描述的弹性计算系统120的一个或多个其它组件执行。为方便起见,例程1600的框被描述为由公共快照服务器执行。例如,此公共快照服务器可以包括一个或多个硬件计算装置和存储指令的非暂时性物理计算机存储装置,所述指令在由一个或多个硬件计算装置执行时,使一个或多个硬件计算装置执行例程1600的框。在一个实施方案中,在用户计算装置102写入到子快照的一个或多个块之后,由公共快照服务130响应于接收到“密封”或完成子快照的请求而起始例程1600。
137.在框1602处,公共快照服务130从对象存储服务器检索对应于所请求的子快照的父快照。父快照的检索可以响应于使用例程1200标识实现对快照的访问的元数据而发生。在一个实施方案中,公共快照服务130可以检索由生成子快照的请求指定的父快照的一个或多个块。
138.在框1604处,公共快照服务130检索对子快照进行的写入的写入表示。公共快照服务130还从元数据数据存储装置或对象存储服务器检索对应于写入表示的写入集。公共快照服务130可以对检索到的子块写入表示执行校验和,以验证校验和如对应于子块的写入集条目中所指示。
139.在框1606处,公共快照服务130根据写入集标识在每个写入表示内写入的数据。例如,公共快照服务130可以针对每个写入表示获取对应于所述写入表示的写入集,并且根据写入集内的偏移和长度信息表示要写入到子快照块的数据。公共快照服务130还可以标识对应于子快照块的父快照块。
140.在框1608处,公共快照服务130合并所标识的父快照块和写入表示以生成子快照块。合并父快照块和写入表示可以包括:对于每个写入表示,用写入到写入表示的对应数据
替换对应父快照块内的数据(例如,如根据写入集中的偏移和长度标识)。当合并父快照块和写入表示时,可以将所得的子快照块传输给请求用户,或作为子快照的一部分存储在对象服务器中。可以重复或至少部分地同时执行例程1600以根据写入集创建多个子快照块。
141.尽管上述交互通常涉及将写入表示合并到父快照块以生成子快照块,但是在其它实施方案中,公共快照服务130可以合并多个写入表示以创建子快照块。例如,在密封子快照之前,公共快照服务130可以接收表示为多个写入表示的多个子块级修改。因此,可以重复块1604-1608以将多个子块级修改合并到父快照块以生成子快照。此外,在一些实施方案中,公共快照服务130可以将一个或多个写入表示与给定快照的块的先前版本合并以创建所述块的最终版本。说明性地,用户可以最初将数据写入到快照的整个块,并且随后(例如,在密封所述快照之前)对所述块的子块进行写入。因此,公共快照服务130可以通过上述交互在密封快照期间将所述子块写入的写入表示与先前写入的数据(表示块的先前版本)合并以产生块的最终版本。因此,合并可以基于父快照的块或基于当前快照的块数据的先前版本(无论所述快照是否为独立快照、子快照等)发生。
142.公共快照服务的示例架构
143.图17描绘计算系统(称为公共快照服务130)的示例架构,所述计算系统可以用于执行本文所描述或图1至图16中所示的技术中的一个或多个。图17中描绘的公共快照服务130的一般架构包括可以用于实现本公开的一个或多个方面的计算机硬件和软件模块的布置。公共快照服务130可以包括比图17中所示的元件更多(或更少)的元件。然而,没有必要为了提供有利的公开而示出所有这些元件。如图所示,公共快照服务130包括处理器190、网络接口192和计算机可读介质194,所有这些都可以通过通信总线彼此通信。网络接口192可以提供与一个或多个网络或计算系统的连接性。处理器190因此可以通过图1和图3中所示的网络104从其它计算系统或服务接收信息和指令。
144.处理器190还可以与存储器180通信。存储器180可以包含处理器190为了实现本公开的一个或多个方面而执行的计算机程序指令(在一些实施方案中被分组为模块)。存储器180可以包括ram、rom,或其它持久性、辅助性或非暂时性计算机可读介质。存储器180可以存储操作系统184,所述操作系统提供计算机程序指令以供处理器190在公共快照服务130的一般管理和操作中使用。存储器180还可包括用于实现本公开的一个或多个方面的计算机程序指令和其它信息。例如,在一个实施方案中,存储器180包括用户界面模块182,所述用户界面模块生成用户界面(和/或因此指令),用于例如经由导航和/或浏览界面(例如,安装在用户计算装置上的浏览器或应用程序)显示在用户计算装置(例如,图1的用户计算装置102)上。另外,存储器180可以包括一个或多个数据存储装置或与一个或多个数据存储装置通信。
145.除了和/或组合用户界面模块182,存储器180可以包括可以由处理器190执行的快照创建单元186、快照存储路径结构生成单元187和快照块差异计算单元188。在一个实施方案中,快照创建单元186、快照存储路径结构生成单元187和快照块差异计算单元188单独地或共同地实现本公开的各个方面,例如创建快照,生成快照存储路径结构以将数据块存储在快照中,将快照恢复到目标卷上,计算快照与另一个快照(例如,父快照)之间的快照块差异,创建清单索引,创建子块级快照,和/或在本文中讨论或在图1至图16中示出的其它方面。
146.虽然快照创建单元186、快照存储路径结构生成单元187和快照块差异计算单元188在图17中示为公共快照服务130的一部分,但是在其它实施方案中,快照创建单元186、快照存储路径结构生成单元187和快照块差异计算单元188的全部或部分可以由弹性计算系统120和/或另一个计算装置的其它组件实现。例如,在本公开的某些实施方案中,与弹性计算系统120通信的另一计算装置可以包括与作为公共快照服务130的一部分示出的模块和组件类似地操作的若干模块或组件。还将理解,在一些实施方案中,用户计算装置(例如,图1的用户计算装置102)可以实现在本文中另外描述为由公共快照服务130的元件和/或模块实现的功能。例如,用户计算装置102可以经由网络104从公共快照服务130和/或弹性计算系统120的其它组件接收代码模块或其它指令,所述网络由用户计算装置102执行以实现本公开的各个方面。
147.术语
148.本文描述的所有方法和任务可以由计算机系统执行并完全自动化。在一些情况下,计算机系统可以包括多个不同的计算机或计算装置(例如,物理服务器、工作站、存储阵列、云计算资源等),其通过网络进行通信和互操作以执行所述的功能。每个这样的计算装置通常包括处理器(或多个处理器),其执行存储在存储器或其它非暂时性计算机可读存储介质或装置(例如,固态存储装置、磁盘驱动器等)中的程序指令或模块。本文所公开的各种功能可以在这样的程序指令中具体化,或可以在计算机系统的专用电路(例如,asic或fpga)中实现。在计算机系统包括多个计算装置的情况下,这些装置可以但不必是位置相同的。所公开的方法和任务的结果可以通过将例如固态存储器芯片或磁盘的物理存储装置转换成不同的状态来持久地存储。在一些实施方案中,计算机系统可以是基于云的计算系统,其处理资源由多个不同的商业实体或其它用户共享。
149.在本文描述的或在本公开的图中示出的过程可以响应于事件开始,例如在预定的或动态确定的时间表上开始,在由用户或系统管理员发起时按需开始,或者响应于一些其它事件开始。当起始这些过程时,存储在一个或多个非暂时性计算机可读介质(例如,硬盘驱动器、快闪存储器、可移动介质等)上的一组可执行程序指令可以被加载到服务器或另一计算装置的存储器(例如,ram)中。然后可执行指令可以由计算装置的基于硬件的计算机处理器执行。在一些实施方案中,这样的过程或其部分可以在多个计算装置和/或多个处理器上串行地或并行地实现。
150.取决于实施方案,本文描述的任何过程或算法的某些动作、事件或功能可以按不同的顺序执行,可以添加、合并或完全省略(例如,并非所有描述的操作或事件都是实践算法所必需的)。此外,在某些实施方案中,操作或事件可通过例如多线程处理、中断处理或多个处理器或处理器核心或在其它并行架构上同时而非顺序地执行。
151.结合本文所公开的实施方案而描述的各种说明性逻辑块、模块、例程和算法步骤可以实现为电子硬件(例如,asic或fpga装置)、在计算机硬件上运行的计算机软件或两者的组合。此外,结合本文公开的实施方案描述的各种说明性逻辑块和模块可以由机器实现或执行,机器例如是处理器装置、数字信号处理器(“dsp”)、专用集成电路(“asic”)、现场可编程门阵列(“fpga”)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其设计用于执行本文所述功能的任何组合。处理器装置可以是微处理器,但是在替代方案中,处理器装置可以是控制器、微控制器或状态机、其组合等。处理器装置可以包括电子电路,所
述电子电路被配置为处理计算机可执行指令。在另一个实施方案中,处理器装置包括fpga或其它可编程装置,其执行逻辑操作,而不处理计算机可执行指令。处理器装置还可以被实现为计算装置的组合,例如dsp和微处理器的组合、多个微处理器、一个或多个微处理器连同dsp核,或任何其它这种配置。虽然本文主要关于数字技术进行描述,但是处理器装置也可以主要包括模拟组件。例如,本文所述的渲染技术中的一些或所有可以在模拟电路或混合的模拟和数字电路中实现。计算环境可以包括任何类型的计算机系统,举几个例子来说,其包括但不限于基于微处理器的计算机系统、大型计算机、数字信号处理器、便携式计算装置、装置控制器或电器内的计算引擎。
152.结合本文所公开的实施方案描述的方法、过程、例程或算法的元件可以直接在硬件、由处理器装置执行的软件模块或这两者的组合中体现。软件模块可以驻留在ram存储器、快闪存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或任何其它形式的非暂时性计算机可读存储介质中。示例性存储介质可以耦合到处理器装置,使得处理器装置可以从存储介质读取信息以及将信息写入存储介质。在替代方案中,存储介质可以与处理器装置成一体。处理器装置和存储介质可以驻留在asic中。asic可以驻留在用户终端中。在替代方案中,处理器装置和存储介质可以作为离散组件驻留在用户终端中。
153.除非另有特别说明,或者在所使用的上下文中另外理解,否则本文使用的条件语言例如“能够”、“可以”、“可能”、“可”、“例如”等通常旨在表达某些实施方案包括而其它实施方案不包括某些特征、元件或步骤。因此,这种条件语言通常不旨在暗示无论如何特征、元件或步骤都是一个或多个实施方案必需的,或者一个或多个实施方案必然包括用于在有或没有其它输入或提示的情况下,判定这些特征、元件或步骤是否包括在或将要在任何特定实施方案中执行的逻辑。术语“包括(comprising)”、“包括(including)”、“具有”等是同义的,并且以开放形式作为包括性使用,且不排除附加元件、特征、动作、操作等。此外,术语“或”以其包括性意义(而非排他性意义)使用,使得当用于例如连接元件列表时,术语“或”意指列表中的一个、一些或所有要素。
154.除非另有特别说明,否则分离性语言例如短语“x、y或z中的至少一个”在上下文中应理解为通常使用的情况以表示项目、项等可以是x、y或z或其任何组合(例如,x、y或z)。因此,这样的分离性语言通常不旨在并且不应该暗示某些实施方案要求x中的至少一个、y中的至少一个和z中的至少一个各自存在。
155.尽管以上详细说明已展示、描述并指出应用于各种实施方案的新颖特征,但是可以理解的是可以在不脱离本公开的精神的情况下作出所说明的装置或算法的形式和细节上的各种省略、替代和改变。如可以认识到,本文所述的某些实施方案可以在不提供本文阐述的所有特征和益处的形式内实施,这是因为一些特征可以与其它特征分开使用或实践。在所述权利要求的等效物的含义和范围内的所有变化都将包含在所述权利要求的范围内。
156.示例条款
157.可以鉴于以下示例条款来描述本公开的实施方案的示例。
158.条款1:一种系统,所述系统包括:云提供商系统,其包括:快照存储库,用于存储块级快照;快照沿袭数据库,用于存储指示存储在所述快照存储库中的所述块级快照的一个或多个沿袭的快照沿袭数据;以及公共快照服务器,其与所述快照存储库和所述快照沿袭
数据库进行网络通信;以及块存储卷,其在所述云提供商系统外部的客户端数据存储服务器上实现,其中所述块存储卷存储多个数据块;其中所述公共快照服务器被配置成:接收创建所述块存储卷的增量快照的快照创建请求,其中所述快照创建请求标识存储在所述快照存储库中的父快照,其中所述父快照表示在所述存储卷的当前状态之前且不同于所述存储卷的当前状态的所述存储卷的先前状态;在所述快照创建请求之后接收至少一个块放置请求,其中所述至少一个块放置请求标识存储在所述存储卷中的所述多个数据块中的数据块的子集以添加到所述增量快照中;从所述客户端数据存储服务器接收由所述至少一个块放置请求标识的所述数据块的子集;接收密封所述增量快照使得不能够将附加数据块添加到所述增量快照中并且不能够修改所述增量快照中的数据块的请求;以及使所述增量快照存储在所述快照存储库中,所述增量快照包括从所述客户端数据存储服务器接收的所述数据块的子集以及对与所述父快照相关联的一个或多个附加数据块的一个或多个引用;以及使存储在所述快照沿袭数据库中的所述快照沿袭数据进行更新,以反映所述父快照与所述增量快照之间的沿袭。
159.条款2:如条款1所述的系统,其中所述公共快照服务器还被配置为使所述增量快照恢复到在所述客户端数据存储服务器上实现的一个或多个块存储卷上。
160.条款3:如条款1所述的系统,其中所述公共快照服务器还被配置为使所述增量快照恢复到在与所述客户端数据存储服务器不同的块存储服务器上实现的一个或多个块存储卷上。
161.条款4:如条款1所述的系统,其中在所述快照创建请求中标识的所述数据块的子集不包括所述块存储卷中自创建所述父快照的时间点以来已经改变的至少一个数据块。
162.条款5:如条款1所述的系统,其中在所述快照创建请求中标识的所述数据块的子集包括所述块存储卷中自创建所述父快照的时间点以来已经改变的所有数据块。
163.条款6:如条款1所述的系统,其中所述公共快照服务器还被配置为使所述父快照恢复到多个块存储卷上,并随后接收创建所述多个块存储卷的快照的多个请求,其中所述多个请求标识相同父快照和数据块的不同子集。
164.条款7:一种计算机实现的方法,包括:在云提供商系统处接收创建块存储卷的增量快照的请求,所述块存储卷在所述云提供商系统外部的客户端数据存储服务器上实现,其中所述块存储卷存储多个数据块,并且其中所述请求标识存储在快照存储库中的父快照;接收将存储在所述块存储卷中的所述多个数据块中的数据块的子集添加到所述增量快照的至少一个请求;从所述客户端数据存储服务器接收存储在所述块存储卷中的所述多个数据块中的所述数据块的子集;接收密封所述增量快照使得不能够对所述增量快照进行其它修改的请求;以及存储所述增量快照,所述增量快照包括所述数据块的子集以及对与所述父快照相关联的附加块数据的一个或多个引用;以及将所述父快照与所述增量快照之间的关联性存储在数据库中。
165.条款8:如条款7所述的计算机实现的方法,还包括将所述增量快照恢复到在所述云提供商系统外部的所述客户端数据存储服务器上实现的一个或多个块存储卷上。
166.条款9:如条款7所述的计算机实现的方法,还包括将所述增量快照恢复到在不同于所述客户端数据存储服务器的所述云提供商系统上实现的一个或多个块存储卷上。
167.条款10:如条款7所述的计算机实现的方法,其中所述数据块的子集不包括所述块
存储卷中自创建所述父快照的时间点以来已经改变的至少一个数据块。
168.条款11:如条款7所述的计算机实现的方法,其中所述数据块的子集包括所述块存储卷中自创建所述父快照的时间点以来已经改变的所有数据块。
169.条款12:如条款7所述的计算机实现的方法,其中所述父快照是所述增量快照的直接父快照,使得自创建所述父快照的时间点以来没有创建所述块存储卷的除所述增量快照之外的快照。
170.条款13:如条款7所述的计算机实现的方法,其中所述父快照是所述增量快照的远父快照,使得自创建所述父快照的时间点以来创建了所述块存储卷的除所述增量快照之外的至少一个快照。
171.条款13.5:如条款7所述的计算机实现的方法,还包括将所述父快照恢复到多个块存储卷上,并且随后接收创建所述多个块存储卷的快照的多个请求,其中所述多个请求标识相同的父快照和数据块的不同子集。
172.条款14:一种非暂时性计算机可读介质,所述非暂时性计算机可读介质存储指令,所述指令在由计算系统执行时使所述计算系统执行操作,包括:在云提供商系统处接收创建块存储卷的增量快照的请求,所述块存储卷在所述云提供商系统外部的客户端数据存储服务器上实现,其中所述块存储卷存储多个数据块,并且其中所述请求标识存储在快照存储库中的父快照;接收将存储在所述块存储卷中的所述多个数据块中的数据块的子集添加到所述增量快照的至少一个请求;从所述客户端数据存储服务器接收存储在所述块存储卷中的所述多个数据块中的所述数据块的子集;接收密封所述增量快照使得不能够对所述增量快照进行其它修改的请求;以及存储所述增量快照,所述增量快照包括所述数据块的子集以及对与所述父快照相关联的附加块数据的一个或多个引用;以及将所述父快照与所述增量快照之间的关联性存储在数据库中。
173.条款15:如条款14所述的非暂时性计算机可读介质,其中所述操作还包括将所述增量快照恢复到在所述云提供商系统外部的所述客户端数据存储服务器上实现的一个或多个块存储卷上。
174.条款16:如条款14所述的非暂时性计算机可读介质,其中所述操作还包括将所述增量快照恢复到在不同于所述客户端数据存储服务器的所述云提供商系统上实现的一个或多个块存储卷上。
175.条款17:如条款14所述的非暂时性计算机可读介质,其中所述数据块的子集不包括所述块存储卷中自创建所述父快照的时间点以来已经改变的至少一个数据块。
176.条款18:如条款14所述的非暂时性计算机可读介质,其中所述数据块的子集包括所述块存储卷中自创建所述父快照的时间点以来已经改变的所有数据块。
177.条款19:如条款14所述的非暂时性计算机可读介质,其中所述父快照是所述增量快照的直接父快照,使得自创建所述父快照的时间点以来没有创建所述块存储卷的除所述增量快照之外的快照。
178.条款20:如条款14所述的非暂时性计算机可读介质,其中所述父快照是所述增量快照的远父快照,使得自创建所述父快照的时间点以来创建了所述块存储卷的除所述增量快照之外的至少一个快照。
179.条款21:一种系统,所述系统包括:云提供商系统,其包括:快照存储库,用于存储
块级快照,其中所述块级快照各自与特定存储路径结构数据相关联;以及快照沿袭数据库,用于存储指示存储在所述快照存储库中的所述块级快照的一个或多个沿袭的快照沿袭数据;以及公共快照服务器,其与所述快照存储库和所述快照沿袭数据库进行网络通信;以及块存储卷,其在所述云提供商系统外部的客户端数据存储服务器上实现,其中所述块存储卷存储多个数据块;其中所述公共快照服务器被配置成:接收创建所述块存储卷的增量快照的快照创建请求,其中所述块存储卷与存储在所述快照存储库中的父快照相关联,其中所述父快照表示在所述块存储卷的当前状态之前且不同于所述块存储卷的当前状态的所述块存储卷的先前状态;确定存储在所述块存储卷中的所述多个数据块中的数据块的子集和与所述父快照相关联的对应数据块集合相同;生成与所述增量快照相关联的第一存储路径结构数据,其中所述第一存储路径结构数据包括(i)与所述数据块的子集相关联的第一路径信息,以及(ii)与所述多个数据块中的一个或多个附加数据块相关联的第二路径信息,其中所述第一路径信息和与所述父快照相关联的所述对应数据块集合相关联的父路径信息相同,并且所述第二路径信息和与所述父快照相关联的任何路径信息不相同;以及使所述增量快照与所述第一存储路径结构数据一起存储在所述快照存储库中。
180.条款22:如条款21所述的系统,其中所述公共快照服务器还被配置为基于所述公共快照服务器的用户所提供的所述数据块的子集的标识来确定所述数据块的子集相同,而无需执行所述父快照与所述增量快照之间的逐块数据比较。
181.条款23:如条款21所述的系统,其中所述公共快照服务器还被配置为基于所述父快照与所述增量快照之间的逐块数据比较来确定所述数据块的子集相同。
182.条款24:如条款21所述的系统,其中所述公共快照服务器还被配置为:从用户计算装置接收计算所述父快照与所述增量快照之间的快照块差异的请求;生成各自与路径信息相关联的数据块的列表,所述路径信息不包括在与所述父快照相关联的所述父路径信息中;以及输出数据块的所述列表以在所述用户计算装置上呈现。
183.条款25:如条款24所述的系统,其中生成数据块的所述列表包括针对与所述增量快照相关联的每个相应数据块确定与所述相应数据块相关联的所述路径信息是否包括在与所述父快照相关联的所述父路径信息中,而不将所述相应数据块内的块数据和与所述父快照相关联的对应数据块内的块数据进行比较。
184.条款26:如条款24所述的系统,其中所述公共快照服务器还被配置为:从所述用户计算装置接收检索块数据的请求,所述块数据与输出到所述用户计算装置的数据块的所述列表相关联;以及输出与数据块的所述列表相关联的所述块数据。
185.条款27:一种计算机实现的方法,其包括:接收创建存储多个数据块的存储卷的增量快照的请求,其中所述存储卷与存储在数据存储库中的父快照相关联;确定存储在所述存储卷中的所述多个数据块中的数据块的子集和与所述父快照相关联的对应数据块集合相同;生成与所述增量快照相关联的存储路径结构数据,其中所述存储路径结构数据包括(i)与所述数据块的子集相关联的第一路径信息,以及(ii)与所述多个数据块中的一个或多个附加数据块相关联的第二路径信息,其中所述第一路径信息包括在与所述父快照相关联的父存储路径结构数据中,并且所述第二路径信息不包括在与所述父快照相关联的父存储路径结构数据中;以及将所述增量快照与所述存储路径结构数据一起存储在所述数据存储库中。
186.条款28:如条款27所述的计算机实现的方法,其中确定所述数据块的子集相同包括标识由用户提供的所述数据块的子集,而不执行所述父快照与所述增量快照之间的逐块数据比较。
187.条款29:如条款27所述的计算机实现的方法,其中确定所述数据块的子集相同包括执行所述父快照与所述增量快照之间的逐块数据比较。
188.条款30:如条款27所述的计算机实现的方法,还包括:从用户计算装置接收计算所述父快照与所述增量快照之间的快照块差异的请求;生成各自与路径信息相关联的数据块的列表,所述路径信息不包括在与所述父快照相关联的所述父路径信息中;以及输出数据块的所述列表以在所述用户计算装置上呈现。
189.条款31:如条款30所述的计算机实现的方法,其中生成数据块的所述列表包括针对与所述增量快照相关联的每个相应数据块确定与所述相应数据块相关联的所述路径信息是否包括在与所述父快照相关联的所述父路径信息中。
190.条款32:如条款27所述的计算机实现的方法,其中所述存储卷由用户的私有数据存储服务器实现,其中所述存储卷不可由所述公共快照服务器访问。
191.条款33:如条款27所述的计算机实现的方法,其中所述存储卷由块存储服务器代表用户实现,其中所述存储卷不可由所述公共快照服务器访问。
192.条款34:一种非暂时性计算机可读介质,所述非暂时性计算机可读介质存储指令,所述指令在由计算系统执行时使所述计算系统执行操作,包括:接收创建存储多个数据块的存储卷的增量快照的请求,其中所述存储卷与存储在数据存储库中的父快照相关联;确定存储在所述存储卷中的所述多个数据块中的数据块的子集和与所述父快照相关联的对应数据块集合相同;生成与所述增量快照相关联的存储路径结构数据,其中所述存储路径结构数据包括(i)与所述数据块的子集相关联的第一路径信息,以及(ii)与所述多个数据块中的一个或多个附加数据块相关联的第二路径信息,其中所述第一路径信息包括在与所述父快照相关联的父存储路径结构数据中,并且所述第二路径信息不包括在与所述父快照相关联的父存储路径结构数据中;以及将所述增量快照与所述存储路径结构数据一起存储在所述数据存储库中。
193.条款35:如条款34所述的非暂时性计算机可读介质,其中确定所述数据块的子集相同包括标识由用户提供的所述数据块的子集,而不执行所述父快照与所述增量快照之间的逐块数据比较。
194.条款36:如条款34所述的非暂时性计算机可读介质,其中确定所述数据块的子集相同包括执行所述父快照与所述增量快照之间的逐块数据比较。
195.条款37:如条款34所述的非暂时性计算机可读介质,其中所述操作还包括:从用户计算装置接收计算所述父快照与所述增量快照之间的快照块差异的请求;生成各自与路径信息相关联的数据块的列表,所述路径信息不包括在与所述父快照相关联的所述父路径信息中;以及输出数据块的所述列表以在所述用户计算装置上呈现。
196.条款38:如条款37所述的非暂时性计算机可读介质,其中生成数据块的所述列表包括针对与所述增量快照相关联的每个相应数据块确定与所述相应数据块相关联的所述路径信息是否包括在与所述父快照相关联的所述父路径信息中。
197.条款39:如条款34所述的非暂时性计算机可读介质,其中所述存储卷由用户的私
有数据存储服务器实现,其中所述存储卷不可由所述公共快照服务器访问。
198.条款40:如条款34所述的非暂时性计算机可读介质,其中所述存储卷由块存储服务器代表用户实现,其中所述存储卷不可由所述公共快照服务器访问。
199.条款41:一种计算机实现的方法,其包括:在云提供商网络的对象存储服务处维持块存储卷的快照,所述快照表示所述块存储卷内的块的时间点表示,其中将所述快照维持为所述对象存储服务中的一组对象,每个对象包括对应于所述块存储卷内的块子集的数据;生成所述快照的清单,所述清单包括指示所述一组对象中的哪个对象存储对应于所述块存储卷内的一个或多个块的数据的条目;从所述快照的所述清单生成清单索引,其中所述清单索引内的条目将所述清单内的各个条目组映射至所述各个组所属的所述块存储卷内的一个或多个块,并且其中生成所述清单索引包括对于所述清单内的每条目组:从所述清单内的所述条目组确定与初始条目相关联的所述块存储卷的一个或多个块,从所述清单内的所述条目组确定与最后一个条目相关联的所述块存储卷的一个或多个块,以及生成所述清单索引的清单索引条目,所述清单索引条目将所述条目组与所述块存储卷的所述一个或多个块相关联,所述一个或多个块与初始条目和来自所述清单内的所述条目组的最后一个条目相关联;接收标识元数据的请求,所述元数据实现访问所述一组对象中存储对应于指定块的数据的对象;基于所述指定块的标识符和所述清单索引内的清单索引条目的比较,确定所述清单内包含所述指定块的条目的一组条目;从与所述指定块相关联的所述条目组中标识所述一组对象中存储对应于所述指定块的数据的对象;以及传输实现访问所述指定块的所述元数据,所述元数据指示存储对应于所述指定块的数据的所述对象的存储位置。
200.条款42:如条款41所述的计算机实现的方法,其中每个清单索引条目还指示所述清单内对应于所述清单索引条目的所述条目组的校验和值。
201.条款43:如条款42所述的计算机实现的方法,还包括:计算所述清单内与所述指定块相关联的所述条目组的校验和值;以及验证所述计算出的校验和值与在与所述指定块相关联的所述条目组的清单索引条目中指示的所述校验和值匹配。
202.条款44:如条款41所述的计算机实现的方法,还包括:将所述清单索引存储在所述对象存储服务中;响应于接收到标识存储与所述指定块相对应的数据的对象的请求,从所述对象存储服务中检索所述清单索引;以及将所述清单索引存储在本地高速缓存中。
203.条款45:如条款41所述的计算机实现的方法,其中所述存储卷内的块与顺序块索引相关联,并且其中所述指定块的标识符与所述清单索引内的清单索引条目的比较包括:确定所述清单索引中与包括所述指定块的块标识符的一系列块索引相关联的清单索引条目。
204.条款46:如条款41所述的计算机实现的方法,其中所述块存储卷的一个或多个未写入块的数据不存储在所述快照中。
205.条款47:一种系统,其包括:一个或多个对象存储服务器,所述对象存储服务器存储:快照,其对应于块存储卷的时间点表示,其中所述快照作为一组对象存储在所述一个或多个对象存储服务器上;清单,其指示所述一组对象中的哪个对象存储对应于所述块存储卷内的一个或多个块的数据;以及清单索引,其中所述清单索引包括条目,其中所述清单索引内的条目将所述清单内的各个条目组映射到所述各个组所属的所述块存储卷内的一个
或多个块;计算系统,其与所述一个或多个存储服务器通信,所述计算系统被配置为:接收标识访问信息的请求,所述访问信息实现检索对应于指定块的数据;基于所述指定块的标识符和所述清单索引内的清单索引条目的比较,确定所述清单内的包含所述指定块的条目的条目组;从与所述指定块相关联的所述条目组中标识存储对应于所述指定块的数据的对象;以及传输所述一组对象中将对应于所述指定块的数据存储为访问信息的对象的指示,所述访问信息实现检索对应于所述指定块的数据。
206.条款48:如条款47所述的系统,其中所述清单索引中的每个条目还指示所述清单内对应于所述清单索引条目的所述条目组的校验和值。
207.条款49:如条款48所述的系统,其中所述计算系统还被配置为:计算所述清单内与所述指定块相关联的所述条目组的校验和值;以及验证所述计算出的校验和值与在与所述指定块相关联的所述条目组的清单索引条目中指示的所述校验和值匹配。
208.条款50:如条款47所述的系统,其中为了从与所述指定块相关联的所述条目组中标识存储对应于所述指定块的数据的对象,所述计算系统在所述清单内与所述指定块相关联的所述条目组中搜索所述指定块的标识符。
209.条款51:如条款47所述的系统,其中所述存储卷内的块与顺序块标识符相关联,并且其中所述指定块的所述标识符与所述清单索引内的清单索引条目的比较包括:确定所述清单索引中与包括所述指定块的所述标识符的一系列块标识符相关联的清单索引条目。
210.条款52:如条款47所述的系统,其中所述计算系统还被配置为:响应于接收到标识存储与所述指定块相对应的数据的对象的请求,从所述一个或多个对象存储服务器检索所述清单索引;以及将所述清单索引存储在本地高速缓存中。
211.条款53:如条款47所述的系统,其中所述计算系统还被配置为:接收标识列表的请求,所述列表列举用于访问从第二指定块开始顺序地标识的多个块的元数据;基于所述第二指定块的标识符和所述清单索引内的清单索引条目的比较,确定所述清单内与包括所述第二指定块的标识符的一系列块标识符相关联的条目组;确定所述条目组不包含对应于所述第二指定块的条目;以及传输列举元数据的所述列表,所述元数据实现访问从与高于所述指定块的所述标识符的最低块标识符相关联的块顺序地标识的多个块的数据。
212.条款54:如条款47所述的系统,其中所述指示是令牌,所述令牌对应于所述一组对象中存储对应于所述指定块的数据的对象的存储位置。
213.条款55:一种非暂时性计算机可读介质,所述非暂时性计算机可读介质包括计算机可执行指令,所述计算机可执行指令在由计算装置执行时使所述计算装置:接收标识访问信息的请求,所述访问信息实现检索数据,其中一组对象存储对应于块存储卷内的一个或多个块的数据,并且进一步其中清单指示所述一组对象中的哪个对象存储对应于所述块存储卷内的一个或多个块的数据;接收清单索引,其中所述清单索引包括条目,其中所述清单索引内的条目将所述清单内的各个条目组映射到所述各个组所属的所述块存储卷内的一个或多个块;基于所述指定块的标识符和所述清单索引内的清单索引条目的比较,确定所述清单内的包含所述指定块的条目的条目组;从与所述指定块相关联的所述条目组中标识存储对应于所述指定块的数据的对象;以及传输所述一组对象中将对应于所述指定块的数据存储为访问信息的对象的指示,所述访问信息实现检索对应于所述指定块的数据。
214.条款56:如条款55所述的非暂时性计算机可读介质,其中所述清单索引中的每个
条目还指示所述清单内对应于所述清单索引条目的所述条目组的校验和值。
215.条款57:如条款56所述的非暂时性计算机可读介质,还包括计算机可执行指令,所述计算机可执行指令在由所述计算装置执行时进一步使所述计算装置:计算所述清单内与所述指定块相关联的条目组的校验和值;以及验证所述计算出的校验和值与在与所述指定块相关联的所述条目组的清单索引条目中指示的所述校验和值匹配。
216.条款58:如条款55所述的非暂时性计算机可读介质,其中为了从与所述指定块相关联的所述条目组中标识存储对应于所述指定块的数据的对象,所述计算机可执行指令还使计算装置在所述清单内与所述指定块相关联的条目组中搜索所述指定块的标识符。
217.条款59:如条款55所述的非暂时性计算机可读介质,其中所述存储卷内的块与顺序块标识符相关联,并且其中所述指定块的所述标识符与所述清单索引内的清单索引条目的比较包括:确定与包括所述指定块的所述标识符的一系列顺序块标识符相关联的清单索引条目。
218.条款60.1:如条款55所述的非暂时性计算机可读介质,还包括计算机可执行指令,所述计算机可执行指令在由所述计算装置执行时进一步使所述计算装置:响应于接收到标识存储对应于所述指定块的数据的对象的请求,从所述一个或多个对象存储服务器检索清单索引;以及将所述清单索引存储在本地高速缓存中。
219.条款60.2:如条款55所述的非暂时性计算机可读介质,还包括计算机可执行指令,所述计算机可执行指令在由所述计算装置执行时进一步使所述计算装置:接收标识访问信息的请求,所述访问信息实现检索对应于第二指定块的数据;基于第二指定块的标识符和清单索引内的清单索引条目的比较,确定清单内与包括所述第二指定块的标识符的一系列块标识符相关联的条目组;确定所述条目组不包含对应于所述第二指定块的条目;以及传输空指示。
220.条款61:一种计算机实现的方法,其包括:在云提供商系统的对象存储服务处维持第一快照,所述第一快照表示在所述云提供商系统外部的客户端数据存储服务器上维持的块存储卷的时间点表示,其中所述第一快照作为多个快照块存储在所述对象存储服务处,所述快照块的大小与所述客户端数据存储服务器的操作系统用于写入到所述块存储卷的操作系统级块的大小不同;接收创建子快照的请求,所述子快照反映自所述第一快照中表示的所述时间点以来所述块存储卷的变化,其中所述子快照作为一组子快照块存储在所述对象服务处,所述一组子快照块中的各个快照块对应于所述第一快照的各个快照块,并反映自所述时间点以来这些各个快照块的变化;接收将子块数据存储在子快照内的请求,所述子块数据表示对第一快照的第一快照块的少于所有数据的修改,所述修改开始于所述第一快照块内的位置并且表示对所述块存储卷的至少一个操作系统级块的修改;将所述修改存储到所述第一快照块的少于所有数据,其中存储所述修改包括:创建大小与第一快照块的大小匹配的缓冲区对象;在所述缓冲区对象中对应于所述第一快照块中的所述位置的位置处,将所述子块数据写入到所述缓冲区对象上,以创建修改的写入表示;以及生成所述写入表示的写入集条目,所述写入集条目至少基于所述第一快照块内的所述子块数据的位置和所述子块数据的长度而指示存储在所述写入表示中的子块数据;以及接收密封所述子快照的请求;响应于接收到密封所述子快照的所述请求,合并所述第一快照块和所述写入表示,以产生所述一组子快照块中的子快照块,其中合并所述第一快照块和所述写入表示包
括使用所述写入集条目通过所述写入表示中的所述子块数据重写所述第一快照块内的数据;以及将所述子快照块存储在云提供商系统处的对象存储服务处作为子快照的一部分。
221.条款62:如条款61所述的计算机实现的方法,其中所述写入集条目还指示所述写入表示中的所述子块数据的校验和值。
222.条款63:如条款62所述的计算机实现的方法,还包括:计算所述写入表示的校验和值;以及验证所述计算出的校验和值与所述写入表示的所述写入集条目中指示的所述校验和值匹配。
223.条款64:如条款61所述的计算机实现的方法,其中创建所述写入表示还包括加密子块数据。
224.条款65:如条款61所述的计算机实现的方法,其中用所述写入表示中的所述子块数据重写所述第一快照块内的数据包括用所述写入表示内的第二组数据重写所述第一快照块内的第一组数据,所述第一组数据从所述写入集条目内指示的位置开始并且跨越所述写入集条目内指示的长度,所述第二组数据从所述写入集条目内指示的所述位置开始并且跨越所述写入集条目内指示的所述长度。
225.条款66:如条款61所述的计算机实现的方法,其中所述块存储卷的一个或多个未写入块的数据不存储在所述子快照中。
226.条款67:一种系统,其包括:一个或多个对象存储服务器,所述对象存储服务器存储快照,其对应于块存储卷的时间点表示,其中所述快照作为多个快照块存储在所述一个或多个对象存储服务器上,并且其中每个快照块对应于所述块存储卷的多个操作系统级块;计算系统,其与所述一个或多个对象存储服务器通信,所述计算系统被配置为:接收修改所述多个快照块的第一快照块的少于所有数据的请求,所述请求指定对所述第一快照块的一个或多个子块的修改,所述子块对应于所述块存储卷的一个或多个操作系统级块,所述修改从所述第一快照块内的某个位置开始;存储表示对第一快照块的一个或多个子块的修改的写入表示,以及指示修改在第一快照块内的位置和修改长度的所述写入表示的元数据;接收将快照密封为一组不可变快照块的请求;检索所述写入表示和所述第一快照块;至少部分地通过以下方式生成所述一组不可变快照块:至少部分地通过根据元数据用写入表示所表示的修改重写所述第一快照块内的数据来将所述第一快照块与所述写入表示合并,其中所述合并产生所述一组不可变快照块中的第一不可变快照块;以及存储所述一组不可变快照块。
227.条款68:如条款67所述的系统,其中所述元数据还指示所述写入表示的校验和值。
228.条款69:如条款68所述的系统,其中所述计算系统还被配置为:计算所检索的所述写入表示的校验和值;以及验证所述写入表示的所述计算出的校验和值与所述写入表示的所述元数据中指示的所述校验和值匹配。
229.条款70:如条款67所述的系统,其中根据所述元数据用所述写入表示所表示的所述修改重写所述第一快照块内的数据包括重写所述第一快照块内从所述修改的所述位置开始并且跨越所述修改的所述长度的数据。
230.条款71:如条款67所述的系统,其中从父快照继承所述第一快照块。
231.条款72:如条款67所述的系统,其中所述写入表示由所述计算系统生成,并且其中所述计算系统被配置为至少部分地通过以下方式生成所述写入表示:创建缓冲区对象;在
与所述修改在所述第一快照块内的所述位置相对应的位置处将所述修改写入到缓冲区对象上;以及将所述缓冲区对象的内容存储为所述写入表示。
232.条款73:如条款72所述的系统,其中所述计算系统还被配置为在将所述缓冲区对象的所述内容存储为所述写入表示之前对所述缓冲区对象的内容进行加密。
233.条款74:一种非暂时性计算机可读介质,所述非暂时性计算机可读介质包括计算机可执行指令,所述计算机可执行指令在由计算系统执行时使所述计算系统:接收存储与块存储卷的时间点表示相对应的快照的请求,其中所述快照作为多个快照块存储在所述一个或多个对象存储服务器上,并且其中每个快照块对应于所述块存储卷的多个操作系统级块;接收修改所述多个快照块的第一快照块的少于所有数据的请求,所述请求指定对所述第一快照块的一个或多个子块的修改,所述子块对应于所述块存储卷的一个或多个操作系统级块,所述修改从所述第一快照块内的某个位置开始;存储表示对第一快照块的一个或多个子块块的修改的写入表示,以及指示修改在第一快照块内的位置和修改长度的所述写入表示的元数据;接收将快照密封为一组不可变快照块的请求;检索所述写入表示和所述第一快照块;至少部分地通过以下方式生成所述一组不可变快照块:至少部分地通过根据元数据用写入表示所表示的修改重写所述第一快照块内的数据来将所述第一快照块与所述写入表示合并,其中所述合并产生所述一组不可变快照块中的第一不可变快照块;以及存储所述一组不可变快照块。
234.条款75:如条款74所述的非暂时性计算机可读介质,其中所述元数据还指示所述写入表示的校验和值。
235.条款76:如条款75所述的非暂时性计算机可读介质,还包括计算机可执行指令,所述计算机可执行指令在由所述计算系统执行时进一步使所述计算系统:在检索之后计算所述写入表示的校验和值;以及验证所述写入表示的所述计算出的校验和值与所述写入表示的所述元数据中指示的所述校验和值匹配。
236.条款77:如条款74所述的非暂时性计算机可读介质,其中根据所述元数据用所述写入表示所表示的所述修改重写所述第一快照块内的数据包括重写所述第一快照块内从所述修改的所述位置开始并且跨越所述修改的所述长度的数据。
237.条款78:如条款74所述的非暂时性计算机可读介质,其中从父快照继承所述第一快照块。
238.条款79:如条款74所述的非暂时性计算机可读介质,还包括计算机可执行指令,所述计算机可执行指令在由所述计算系统执行时使所述计算装置至少部分地通过以下方式生成所述写入表示:创建缓冲区对象;在与所述修改在所述第一快照块内的所述位置相对应的位置处将所述修改写入到所述缓冲区对象上;以及将所述缓冲区对象的内容存储为所述写入表示。
239.条款80:如条款79所述的非暂时性计算机可读介质,还包括计算机可执行指令,所述计算机可执行指令在由所述计算系统执行时,使所述计算系统在将所述缓冲区对象的所述内容存储为所述写入表示之前对所述缓冲区内容的所述内容进行加密。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献