CN112470112A - 块存储***的分布式副本 - Google Patents
块存储***的分布式副本 Download PDFInfo
- Publication number
- CN112470112A CN112470112A CN201980031641.4A CN201980031641A CN112470112A CN 112470112 A CN112470112 A CN 112470112A CN 201980031641 A CN201980031641 A CN 201980031641A CN 112470112 A CN112470112 A CN 112470112A
- Authority
- CN
- China
- Prior art keywords
- copy
- volume
- partition
- partitions
- server
- 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
- 238000005192 partition Methods 0.000 claims description 522
- 238000000034 method Methods 0.000 claims description 78
- 230000004048 modification Effects 0.000 claims description 34
- 238000012986 modification Methods 0.000 claims description 34
- 230000010076 replication Effects 0.000 claims description 30
- 230000004044 response Effects 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 14
- 238000000638 solvent extraction Methods 0.000 claims description 12
- 230000001902 propagating effect Effects 0.000 claims description 10
- 230000000977 initiatory effect Effects 0.000 claims description 5
- 238000012546 transfer Methods 0.000 abstract description 25
- 230000003993 interaction Effects 0.000 description 84
- 230000008569 process Effects 0.000 description 44
- 238000010586 diagram Methods 0.000 description 17
- 230000008901 benefit Effects 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 7
- 230000003362 replicative effect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000002441 reversible effect Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000004043 responsiveness Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000011144 upstream manufacturing Methods 0.000 description 4
- 241001522296 Erithacus rubecula Species 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000010367 cloning Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000012010 growth Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
总体来说,本申请的一个或多个方面对应于存储在网络化计算环境中的卷的高度分布式副本。所述卷的第一和第二副本可以同步复制,并且第三副本的一些实现方式可以异步复制。所述第三副本的高度分布式性质支持所述卷数据的并行数据传送,从而更快地创建所述卷的备份和新拷贝。
Description
背景技术
大体来说,云计算是一种通过服务(诸如Web服务)提供信息技术资源访问的方法,其中用于支持这些服务的硬件和/或软件是动态可扩展的,以满足任何给定时间的服务需求。在云计算中,弹性是指网络递送的计算资源,云服务提供商可以扩大和缩小所述网络递送的计算资源以适应用户变化的要求。这些资源的弹性可以是在处理能力、存储、带宽等方面。弹性计算资源可以自动且按需递送,从而动态地适应给定用户***上或内的资源要求变化。例如,用户可以使用云服务来托管大型在线串流服务,使用弹性资源进行设置,以便向用户流式传输内容的网络服务器的数目在高峰观看时间期间扩大以满足带宽要求,并且然后在***使用较少时缩小回去。
用户通常会租用、租赁或以其他方式支付通过云访问资源的费用,且因此不必购买和维护硬件和/或软件来提供对这些资源的访问。这提供了许多好处,包括允许用户响应于其企业变化的需求而快速地重新配置其可用的计算资源,并使云服务提供商能够基于使用情况、流量或其他运营需求自动扩展所提供的计算服务资源。与场所内计算环境的相对基础设施相比,基于网络的计算服务的这种动态性质要求***架构能够根据其用户群的变化的需求可靠地重新分配其硬件。
附图说明
图1A描绘弹性计算***的示意图,其中可以实现根据本公开的各种实施方案。
图1B描绘在图1A的弹性计算***内根据本公开的复制数据实例的示意图。
图2A描绘在图1A的弹性计算***内创建分布式第三副本的示意图。
图2B是用于创建图2A的分布式第三副本的示例性过程的流程图。
图3A描绘在图1A的弹性计算***内的主要副本和分布式第三副本之间复制数据更新的示意图。
图3B是用于更新图3A的分布式第三副本的示例性过程的流程图。
图4A描绘从图1A的弹性计算***内的分布式第三副本产生卷的克隆的示意图。
图4B是根据图4A从分布式第三副本产生克隆的示例性过程的流程图。
图5A描绘从图1A的弹性计算***内的分布式第三副本产生卷的快照备份的示意图。
图5B是根据图5A从分布式第三副本产生快照的示例性过程的流程图。
图5C是根据图5A从分布式第三副本产生快照的另一示例性过程的流程图。
图6描绘用于从对图1A的弹性计算***的分布式存储卷的写入操作产生消息流的说明***互。
图7描绘用于利用反映对分布式存储卷的写入操作的消息流来异步更新图1A的弹性计算***的分布式第三副本的说明***互。
图8描绘用于产生反映对分布式存储卷的写入操作的消息束以异步更新图1A的弹性计算***的分布式第三副本以及用于将这样的束存储在对象存储***上的说明***互。
图9A描绘基于反映对卷的写入的消息流来复制在特定时间点的图1A的弹性计算***的卷状态的示意图。
图9B是根据图9A的用于复制卷状态的示例性过程的流程图。
图10A-图10C描绘用于通过使用集中式权威机构为卷创建中介重复分区来促进卷或卷的一部分的大量重复的说明***互。
图11A-图11C描绘用于通过使用对等式通信为卷创建中介重复分区来促进卷或卷的一部分的大量重复的说明***互。
图12描绘用于通过使用卷的中介重复分区来促进卷或卷的一部分的大量重复的说明性路由。
具体实施方式
一般来说,本公开的各方面涉及例如在网络化弹性计算***内使用块存储来存储的数据卷的高度分布式数据副本实例的创建和管理。通常,卷可以对应于数据的逻辑集合,诸如代表用户维护的一组数据。卷可以在计算***内被复制多次,以提供卷的多个复制实例(所述复制实例可以共同表示计算***上的卷)。网络化弹性计算***中的卷的复制实例可以有利地提供自动故障转移和恢复,例如通过允许用户访问卷的主要副本或在块级与主要副本同步的卷的次要副本,使得主要或次要副本的故障不会禁止对卷的信息的访问。但是,某些动作(诸如创建卷的频繁备份或大量拷贝)会使存储该卷(例如,该卷的副本)的硬件的可用数据通信带宽紧张。这将导致该卷的用户经历大的延时。
在一些实施方案中,通过所公开的用于创建和使用卷的高度分布式第三副本的技术来解决上述问题。在一个示例中,卷的主要副本通常存储在单个分区或多达十六个不同的分区上,并且卷的次要副本存储在对应数目的不同分区上。每一分区可以存储在不同的计算装置上,诸如分布式计算环境中的服务器,或者多个分区可以存储在单个计算装置上。为了创建该卷的高度分布式第三副本,该卷的数据被分成大量的分区(例如,100、1,000、一百万或更多),所述分区被分布用于存储在多个不同的计算装置上。这通过利用大量装置的连接带宽来传送卷的数据,而不是利用通常存储主要副本或次要副本的少量装置,来解决延时问题。
将了解,主要和次要副本可能不像第三副本那样合理地大规模分布,例如由于要求它们实时处置用户读取和写入(例如,当用户请求从它们的卷读取或写入时)。例如,不同服务器(或其他计算机存储装置)的响应时间可能不同,并且整个卷的响应时间可能会受到最慢服务器的响应性的限制。因此,主要和次要副本的最大分布在实践中可能受到限制,以降低用户读取或写入花费的时间长过阈值时间(例如,由服务级别协议或“SLA”建立的时间)的可能性。相反,通过在一组较小的硬件装置上维护主要和次要副本,***可能能够在对卷的读取和写入期间维护低延时的用户体验。
与主要和次要副本不同,第三副本可能是大规模分布的,因为此类副本可能预期不会直接服务于用户对卷的读取或写入。因此,对第三副本上的卷实现读取或写入时的延迟可能是可允许的。在一个实施方案中,对第三副本上的卷的此类读取或写入的实现可以涉及基于包含在主要或次要副本中的信息而异步更新的第三副本。异步更新提供了许多好处,包括保持第三副本随对主要和次要副本的任何写入是最新的。另一好处涉及以下事实,更新数百万个节点可能比更新主要和次要副本的数目较少的节点慢,因此异步更新提供了从第三副本快速读取而不会减慢主要副本处的写入的好处。
在一个实施方案中,第三副本与主要和次要副本互补工作,以在以各种方式与卷交互时提供低的用户延时。例如,主要副本可以被配置成促进卷上的读取和写入(有时称为“输入输出操作”,或简称为“I/O操作”),从而维护用户对卷的体验。次要副本可以与主要副本同步更新,并且例如,如果托管主要副本的计算硬件出现故障,则在故障转移操作期间提供无缝过渡。有利地,第三副本的存储架构可以被配置成相对于主要和次要副本在大量计算装置上复制卷,从而能够同时创建数千个克隆(例如,从原始卷直接拷贝的新卷),能够更快地创建备份拷贝,并且能够更快地恢复,因为高度横向扩展的第三副本能够相比仅使用主要和次要副本的可能情况快速创建卷的新拷贝。在一个实施方案中,第三副本不会与主要和次要副本同步更新,因此不会用于对卷的标准用户I/O操作。说明性地,在第三副本是卷的数据在多个分区上的分布式存储的情况下,并且当从第三副本请求数据或向第三副本写入数据时,响应最慢的分区会导致整个操作的延迟,称为“尾部延时”。由于第三副本存储在数千或数百万个分区上,任何一个分区在给定时间不可用或经历延迟的可能性可能很高,从而增加了I/O操作的延时。因而,第三副本可能不太适合处置同步用户I/O操作,但仍然可以为将数据快速传送出卷提供好处。
为了说明,考虑示例,卷为8百万兆字节(“TB”),并且每个装置的数据传送限制为每秒1千兆字节(“GB”)。从来自单个装置的卷向外传送数据至少需要2小时13分20秒(假设为了示例的目的,充分利用了传送能力)。主要和次要副本可分成多达16个分区,其中数据传送限制基于每个分区来应用(例如,每个装置一个分区)。在16个分区的情况下,将数据从卷中传送出来仍然需要至少8分20秒。因此,从根本上说,数据向卷外的传送受到卷散布的装置数目的限制。但是,如果将卷分为1,000个装置,则每一装置只需推送1/1,000的卷数据,并且在当前示例中,传送卷的完整数据(从第三副本,而不是主要或次要副本)所需的时间减少到8秒。
本公开的各方面还涉及利用流日志***来促进记录与卷的交互。具体地,计算装置的集合可以实现“记录器机群”,其中对卷的修改(例如,如用户I/O操作中所反映的)被反映为与该卷相关联的一个或多个消息流内的消息。如本文所公开,记录器机群可以实现分布式第三副本与主要和次要副本的异步更新,使得记录器机群能够使分布式第三副本与主要和次要副本(所述副本例如可以同步更新)“最终一致”。例如,对卷的每一修改可以作为与该卷相关联的流内的消息被提交(例如,通过实现主要副本的装置)给记录器机群。记录器机群可以应用多种机制,诸如数据重复和冗余,以确保提交给流的消息随后以正确的顺序传输到托管该卷的分布式第三副本的装置。然后,所述装置可以从每一消息重新产生对该卷的分布式第三副本的修改,从而将第三副本置于与产生所述消息时的主要副本的状态相匹配的状态。因此,记录器机群的使用可以从托管主要副本功能性的装置卸载,诸如确保在托管分布式第三副本的装置上以正确的顺序成功交付每一修改。
如本文所描述,使用记录器机群将对卷的修改记录为消息流可以实现附加功能性。例如,将对卷的修改存储为消息流可以使本文公开的弹性计算***能够对卷进行“倒带”操作,或者以其他方式重新创建在流的消息中反映的特定时间点的卷状态。说明性地,用户可以请求卷的最后n个修改操作被“撤消”,并且弹性计算***可以利用反映那些修改的消息流来将卷恢复到那些操作之前的状态。作为另一说明,***可以利用消息流来产生该卷在任何状态下的时间点快照,即使该卷自从处于所述状态以来已经被修改过。具体地,***可以从已知状态(例如,当前状态或先前已知状态,其本身可以反映在快照中)产生临时卷,并且应用消息(例如,当从稍后状态向后工作时恢复消息,或者当从期望新快照的时间之前的状态向前工作时实现消息)来将临时卷置于原始卷在期望快照的时间点所处的状态。然后,***可以产生临时卷的快照,从而能够创建在消息流内反映的任何过去的时间点的卷快照。如下文论述,记录器机群可以实现关于卷的各种其他功能性。例如,弹性计算***可以提供应用编程接口(API),用户可以通过所述接口读取由记录器机群保持的卷的消息,从而当在记录器机群处检测到满足特定准则的修改时,实现诸如通知用户的功能性。
如上所述,由于分布式第三副本的分区上提供了高并行性,使用分布式第三副本可以实现卷的快速重复。然而,当仅使用分布式第三副本时,仍然可能存在期望的重复需要过多时间的情况。例如,在用户希望将源卷重复到数百或数千个目标卷的情况下,使用单个分布式第三副本可能需要大量时间来完成此类操作。为了解决此问题,本申请的实施方案允许实现和使用附加的高度分布式副本或那些副本的部分,以促进卷的大规模重复。说明性地,在用户希望重复源卷1000次的情况下,可以使用第一高度分布式副本(例如,第三副本)来创建第二高度分布式副本。然后,这两个高度分布式副本中的每一者都可以用于创建附加的高度分布式副本。以此方式,卷的高度分布式副本的数目可以呈指数级增加。当卷的高度分布式副本的数目达到足够的水平时(例如,预定的最大值,使得到目标卷的重复预期在阈值时间段内完成的水平,等),高度分布式副本的集合然后可以用于将源卷重复到期望的目标卷(例如,作为一组块存储服务器上的卷,作为计算服务器上的实例的虚拟磁盘驱动器,等)。随后,可以移除附加的高度分布式副本,以避免在提供如此数目的高度分布式副本时过度使用计算资源。
在一些情况下,用户可以请求大量重复整个卷。在此类情况下,可以创建许多附加的高度分布式副本来促进重复。这些附加的副本在本文中通常被称为“中介重复”副本,因为所述副本可以用作初始高度分布式副本(例如,第三副本)和被请求大量重复到的目标卷之间的中介。在其他情况下,用户可以请求大量重复卷的仅一部分。例如,用户可能希望将卷的单个文件(例如,配置文件)或扇区(例如,引导扇区)拷贝到大量目标卷。在此类情况下,可以重复高度分布式副本的一个或多个分区,而不是创建卷的附加的高度分布式副本。例如,在请求重复存储在高度分布式第三副本的单个分区上的文件的情况下,块存储服务器可以被配置成重复所述单个分区(例如,使用上述指数过程),直到存在足够数目的重复分区来将文件拷贝到目标卷(例如,在阈值时间段内)。此类重复的分区在本文通常被称为“中介重复”分区,因为所述分区可以被用作初始高度分布式副本(例如,第三副本)的分区和被请求大量重复到的目标卷之间的中介。中介重复副本(例如,代表整个卷)和中介重复分区(例如,代表高度分布式副本的个别分区)在本文统称为“中介重复”。
在一个实施方案中,集中式权威机构促进了中介重复的创建。例如,可以提供控制器,所述控制器接收从高度分布式副本拷贝信息的请求,确定请求是否满足创建中介重复的阈值水平,使得创建中介重复,并使用中介重复来实现所请求的信息拷贝。在另一实施方案中,实现高度分布式副本的分区的服务器的对等式操作促进了中介重复的创建。例如,实现高度分布式副本的服务集合内的每一服务器可以监视从服务器上的副本的分区拷贝信息的请求,并确定请求是否满足为分区创建一个或多个中介重复的阈值水平。如果是,服务器可以通过将源分区拷贝到集合内的另一服务器,并将拷贝该分区的请求的至少一部分传送到另一服务器,来产生中介重复分区。由于此功能性可以在每一服务器上实现,此对等式操作可以促进分区的中介重复数目的指数级增长,而不需要集中式控制。
如本领域技术人员所了解,如本文所公开,使用高度分布式副本和/或记录器机群代表了超过现有实现方式的显著技术进步。具体地,如本文所公开,使用高度分区的第三副本使得弹性计算***能够促进数据卷的快速复制,或者在数据卷上执行其他密集型I/O操作,而不会经历现有***的带宽或吞吐量限制。此外,高度分区的第三副本与较不高度分区的主要和次要副本的组合克服了仅利用高度分区的副本的困难,诸如由高水平分区引入的潜在延时。因此,高度分区的第三副本与较不高度分区的主要和次要副本的组合使得弹性计算***既能对用户I/O操作进行高度响应,又能促进卷的快速重复或密集型I/O操作。通过提高这些I/O密集型操作的速度,同时维持对典型用户I/O操作的响应性,本公开代表了对弹性计算***的操作的显著改进。例如,本文公开的实施方案可以显著提高弹性计算***的计算资源的使用效率,从而提高***的响应性并减少总资源使用量。存储卷的数据修改消息的记录器机群的实现可以通过例如实现分布式第三副本相对于分布较少式副本的异步更新来促进上述优点。本文公开的记录器机群还可以促进对弹性计算***的操作的其他改进,诸如在卷上“倒带”操作或者在先前状态下重新创建卷的能力。这种将卷恢复到过去状态的能力解决了存储装置内长期存在的问题,诸如在对装置的错误写入(例如,由于恶意软件)之后将装置恢复到过去状态的困难。此外,如本领域技术人员将会认识到的,本文描述的实施方案(例如,高度分区副本与较低分区副本的组合使用、将对卷的修改存储为消息流的记录器机群的实现)提供了对信息检索和数据存储领域内长期存在的技术问题诸如个别计算装置的有限带宽、分布式计算***强加的延时、在此类***上平衡带宽和延时问题的困难、以及在此类***中确保数据弹性的困难(特别是随着时间的推移)的技术解决方案。因而,本文描述的实施方案代表了计算机相关技术的显著改进。
现将关于特定示例和实施方案来描述本公开的各方面,所述示例和实施方案旨在说明而非限制本公开。尽管为了说明的目的,本文描述的示例和实施方案将集中于具体的计算和算法,但是本领域技术人员将了解,所述示例仅是说明性的,而不是旨在限制性的。例如,尽管本文参考“第三”副本公开了实施方案,但是此术语仅用于说明性目的,假设副本被引入到包含两个替代性副本的***中。然而,本公开的实施方案可以包括更多或更少的替代性副本。例如,在一个实施方案中,高度分区的副本可以与单个分区较少的副本一起使用,或者与3个或更多分区较少的副本一起使用。因此,如本文所使用,对主要或次要副本的参考应被理解为通常是指分区较少的副本的示例(卷在例如1个和16个副本之间分割,或者在多个副本之间分割,使得尾部延时预期不会显著影响标准用户I/O操作的响应性)。此外,虽然本文参考高度分区的“第三”副本讨论了实施方案,但是本公开的一些实施方案可以利用一个以上高度分区的副本,为了简单起见,其中任何一个都可以被称为“第三”副本。因此,如本文所使用,对第三副本的参考应理解为指高度分区的副本(例如,相对于代表相同卷的分区较少的副本)。如下文论述,此类高度分区的副本可以包括足够数目的分区,以实现密集型I/O操作的快速实现,诸如重复整个卷。此分区数目可以是例如1000到数百万个之间的分区。下面提供的示例在一些情况下可能将对卷的修改称为“写入操作”。术语“写入操作”应理解为指修改卷内所含的数据的任何请求,包括向卷写入新信息或者修改或删除卷内现有信息的请求。
具有第三副本的示例性计算环境的概述
图1A描绘包括弹性计算***120的示例性计算环境100,其中可以实现所公开的第三副本。弹性计算***120可以由用户装置130通过网络125来访问。弹性计算***120包括一个或多个计算服务器115、一个或多个对象存储服务器110和一个或多个块存储服务器105,它们彼此并与网络125联网通信,以向用户提供对包括实例116、卷111和桶106等计算资源的按需访问。下文进一步详细描述这些特定资源。弹性计算***120的一些实现方式可以另外包括域名服务(“DNS”)服务器、关系数据库服务器以及其他服务器配置(未示出)用于支持按需云计算平台。每一服务器包括硬件计算机存储器和/或处理器、为该服务器的一般管理和操作提供可执行程序指令的操作***、以及存储指令的计算机可读介质,当所述指令被服务器的处理器执行时,允许服务器执行其预期功能。
弹性计算***120可以通过网络125向用户提供按需的、可扩展的计算平台,例如,允许用户经由使用计算服务器115、对象存储服务器110和块存储服务器105来支配可扩展的“虚拟计算装置”。这些虚拟计算装置具有个人计算装置的属性,包括硬件(各种类型的处理器、本地存储器、随机存取存储器(“RAM”)、硬盘和/或固态驱动器(“SSD”)存储装置)、操作***的选择、联网能力和预加载的应用软件。每一虚拟计算装置还可以虚拟化其控制台输入和输出(“I/O”)(例如,键盘、显示器和鼠标)。这种虚拟化允许用户使用诸如浏览器、应用编程接口、软件开发工具包等计算机应用连接到他们的虚拟计算装置,以便配置和使用他们的虚拟计算装置,就像他们使用个人计算装置一样。与个人计算装置不同,个人计算装置拥有用户可用的固定量的硬件资源,与虚拟计算装置相关联的硬件可以根据用户需要的资源来扩大或缩小。用户可以选择部署他们的虚拟计算***来提供基于网络的服务,供他们自己使用和/或供他们的顾客或客户使用。
弹性计算***120可以跨越多个地理上分离的区域来提供,例如以通过使用户的虚拟计算装置位于其地理位置中或附近来为用户提供较低的延时。就位置和电源而言,每一区域与每个其他区域在物理上隔离并且独立,并且可以通过网络125与其他区域数据通信。每一区域可以包括两个或多个可用性区,每一区由一个或多个物理数据中心支持,所述物理数据中心设置有冗余且分离的电源、联网和连接性,以降低两个区同时出现故障的可能性。虽然单个可用性区可以跨越多个数据中心,但没有两个可用性区共享数据中心。这可以保护用户免受数据中心级故障的影响。数据中心是指容纳计算服务器115、对象存储服务器110和块存储服务器105中的一个或多个并向其提供电力和冷却的物理建筑或壳体。可用性区内的数据中心和区域内的可用性区通过专用的低延时链路(例如光纤网络电缆)相互连接。计算硬件的这种区域化和地理分布使得弹性计算***120能够以高度的容错性和稳定性在全球范围内向用户提供快速服务。为了在给定区域中的区上均匀地分布资源,弹性计算***120的提供商可以独立地将可用性区映射到每一用户账户的识别符。
具体转向弹性计算***内不同服务器的角色,计算服务器115包括一个或多个服务器,在这些服务器上向用户提供可调整大小的计算能力用于构建和托管他们的软件***。用户可以使用计算服务器115来启动他们需要的任意数量的虚拟计算环境,称为“实例”116。根据用户需求,实例116可以具有处理能力、存储器、存储装置和联网能力的各种配置。计算服务器115还可以包括用于在实例运行时使用的临时数据的计算机存储装置,然而,只要实例关闭,此数据就丢失。
块存储服务器105以卷106的形式为计算服务器115提供持久性数据存储装置。块存储服务器105包括一个或多个服务器,数据作为块存储在所述服务器上。块是字节或位的序列,通常包含一些整数的记录,具有块大小的最大长度。成块的数据通常存储在数据缓冲器中,并且一次读取或写入整个块。块化可以减少开销并加速数据流的处置。每一块被指派唯一识别符,通过所述识别符可以存储和检索它,但是通常不被指派提供进一步上下文的元数据。例如,数据块可以是512字节、1千字节(“kB”)、4kB、8kB、16kB、32kB或更大,这取决于实现方式。第三副本的分区可以是一个块或多个块的大小。例如,第三副本的分区的大小可以是等于对象存储服务器110所使用的最小存储单元的大小的多个块,或者使对象存储服务器110的吞吐量最大化的块的数目。例如,在对象存储服务器110实现1000个块的最小存储单元(例如,当块大小为1kB时为1兆字节的数据)的情况下,第三副本的每一分区的大小可以是1000个块(1兆字节)。相比来说,主要和次要副本的典型分区大小从8GB变化到62.5GB(或更大),例如取决于用户卷的大小。
用户卷106可以被视为例如大小从1GB变化到1百万兆字节TB的单个硬盘驱动器,由存储在块存储服务器105上的一个或多个块组成。尽管被视为单个硬盘驱动器,但是应了解,卷可以被存储为在一个或多个底层物理主机装置上实现的一个或多个虚拟化装置。卷106可以被分区少量次(例如,最多16次),其中每一分区由弹性计算***120的装置托管,在一些实现方式中,所述装置具有以每秒约1GB(“Gbps”)传送数据的能力。这些卷提供了可以附接到计算服务器115的特定实例的持久性专用存储装置。每一卷可以附接到运行在计算服务器115上的单个实例,并且可以从所述实例分离并重新附接到另一实例。如参考图1B更详细地描述,块存储服务器105通过在可用性区内的多个服务器上复制卷而具有卷的内置冗余,这意味着如果单个驱动器出现故障或发生某一其他单个故障,卷将不会出现故障。
对象存储服务器110代表弹性计算环境120内的另一类型的存储装置。对象存储服务器110包括一个或多个服务器,在所述服务器上数据作为对象存储在称为桶111的资源内。每一对象通常包括被存储的数据、实现对象存储服务器110关于分析存储的对象的各种能力的可变量的元数据、以及可以用于检索对象的全局唯一识别符或密钥。存储在对象存储服务器110上的对象与唯一识别符相关联,因此可以通过来自任何位置的联网计算装置的请求来获得对它们的授权访问。每一桶与给定的用户账户相关联。用户可以在其桶内存储需要的任意数量的对象,可以在其桶中写入、读取和删除对象,并且可以控制对其桶和所含对象的访问。此外,在具有分布在上述不同区域上的多个不同对象存储服务器110的实施方案中,用户可以选择存储桶的区域(或多个区域),例如以优化延时。用户可以将对象存储服务器110用于诸如在社交媒体网站上存储照片、在音乐流网站上存储歌曲或在线协作服务中存储文件(仅举几例)的目的。在云中开发的应用通常利用对象存储的巨大可扩展性和元数据特性。对象存储服务器110可以支持高度并行的数据访问和传送。
对象存储服务器110可以提供比块存储服务器105甚至更大的冗余,因为对象存储服务器110可以自动将数据复制到多个可用性区中。对象存储服务器110也具有与块存储服务器105不同的数据吞吐量,例如对于单个数据流大约20Mbps。虽然对象存储服务器110可以独立于上述实例和卷来使用,但是它们也可以用于提供数据备份,如下文关于快照所述(例如,卷数据的对象存储备份)。
弹性计算***120可以通过网络125与用户装置130通信。网络125可包括任何适合网络,其包括内联网、因特网、蜂窝式网络、局域网或任何其他此类网络或上述网络的组合。在所示出实施方案中,网络125是因特网。用于经由因特网或其他上述类型的通信网络中任一者通信的协议和部件是计算机通信领域的技术人员已知的,且因此无需在本文更详细描述。用户装置130可以包括任何配备网络的计算装置,例如台式计算机、膝上型计算机、智能电话、平板型计算机、电子阅读器、游戏控制台等。用户可以经由网络125访问弹性计算***120,以查看或管理他们的数据和计算资源,以及使用由弹性计算***120托管的网站和/或应用。
用户可以指示弹性计算***120创建存储在块存储服务器105上的他们的卷的快照。在一个实施方案中,快照是卷的时间点块级备份,存储为对象存储服务器110中一个或多个上的卷上的数据拷贝(例如,作为单个对象或对象集合)。除了通过对象存储服务器110的通用接口管理快照之外,或者作为其替代,快照可以通过块存储服务器105的应用编程接口(“API”)来管理。在一个示例中,快照被实现为卷内数据的增量记录。说明性地,当获取卷的第一快照时,包含有效数据的卷的所有块作为一个或多个对象被拷贝到对象存储服务器110,然后快照“目录”或“清单”文件被写入对象存储服务器110,其包括一个或多个对象的记录,以及一个或多个对象中的每一者对应的卷的块。由于使用增量快照,当对同一卷获取后续快照时,仅需要将自第一快照以来已经改变的块拷贝到对象存储服务器110,并且可以更新目录或清单文件以指向每一数据块的最新版本(或者可以创建第二目录或清单文件,使得初始目录或清单文件能够保持为卷的先前版本的记录)。初始快照可以用于重建初始快照时的卷,或者来自后续时间点的快照可以组合在一起或者与初始快照组合在一起来重建在任何单独的后续时间点的整个卷。以此方式,快照既可以作为给定卷的增量备份,也可以作为给定卷的完整备份。
当创建快照时,在快照启动之前写入卷的任何数据都可以包括在快照中,并且用户可以在快照创建期间继续对其卷执行I/O操作,而不会影响快照。用户可以从快照创建新卷,例如以创建其卷的副本或恢复数据。新卷将包含存储在快照中的所有数据,且因此将是启动快照时原始卷的重复。以此方式,快照还可以用于将卷的数据从一个可用性区传送到另一可用性区。类似地,可以获取实例的快照,以创建所述实例的新虚拟机实例。
图1B描绘根据本公开的实施方案可如何将块存储服务器105配置成存储卷的主要、次要和第三副本的示例。块存储服务器105被配置成在服务器105之间镜像块装置的内容,并跨冗余服务器同步复制数据。图1B还描绘弹性计算***120的数据平面150和控制平面155。数据平面150表示用户数据通过弹性计算***120的移动,而控制平面155表示控制信号通过弹性计算***120的移动。本领域技术人员将了解,数据平面150和控制平面155代表与服务器105的操作相关的逻辑结构,而不是服务器105的物理配置。
控制平面155是一种逻辑结构,其可以由至少一个具有计算机可执行软件的服务器来实现,用于协调***和用户请求,并将它们传播到弹性计算***120中的适当服务器。控制平面155的功能包括数据复制、故障转移操作以及从用户接收对要相对于数据平面150执行的特定动作的请求。这些可以包括创建、克隆和快照卷106。所示实施方案中的数据平面150通过在主要副本135、次要副本140和第三副本145上执行操作来实现。
如上文所述,用户I/O操作可以在主要副本135上执行,其中块级复制机制与次要副本140同步复制信息。为了提高数据完整性,可以在不同的块存储服务器105A、105B上提供主要副本135和次要副本140。尽管服务器105A、105B被描绘为单个服务器,但在一些实现方式中主要副本135和次要副本140可以各自包括许多分区,并且每一分区可以存储在不同的服务器上。卷的主要和次要副本都可以安装块级复制机制,所述机制允许对主要副本135的任何I/O操作被复制到次要副本140。用于跨多个副本向卷提供同步I/O操作的各种机制在此领域中是已知的,且因此本文不再详细描述。主要副本135的任何故障或中断可以通过对次要副本140执行故障转移操作来解决。可以使用DNS名称或其他此类方法,使得在故障转移期间所述名称可以被别名到次要副本140,使得用户部分不需要采取动作来利用“新的”主要副本。或者,托管附接到主要副本的实例的服务器可以在存储器中存储卷的IP地址、卷ID或连接到次要副本或者在发生故障转移时可以提供上述数据的控制平面***的IP地址的其他识别数据。复制卷的供应和新卷的创建可以由控制平面155控制。
主要和次要副本最多可以分区为16个分区。一般来说,分区是在计算机存储装置上创建一个或多个区域,以便操作***可以分别管理每一区域中的信息,其中每一分区都是使用物理计算机存储装置的一部分的不同的“逻辑”存储装置。每一分区可以由弹性计算***120的不同装置托管,并且具有高达其上实现所述分区的主机装置可用的计算资源的功能数据传送限制。例如,在分区托管在具有1Gbps网络接口的物理装置上的情况下,所述分区可以具有1Gbps的功能数据传送限制(或者更低,在主机装置托管多个必须同时通过网络接口发送的分区的情况下)。如上所述,此功能数据传送限制导致某些用户动作的延时,所述用户动作需要大量传送出该卷的数据,尤其是对于大容量数据。例如,用户可以创建实例的多个克隆,并且还可能希望克隆相关联的卷以附接到每一新实例。例如,这可能是有益的,其中用户卷包括实时市场数据,并且用户希望运行一千个实验来测试用于分析数据的不同算法,并且在下一个交易日推出最佳算法。此类实验是基于驻留在卷内的软件进行的,且因此将该卷克隆到1000台机器允许实验运行。应了解,这只是用户需要在短时间框架内创建大量克隆的一个说明性示例。主要和次要副本的数据传送带宽受到其上托管分区的源装置的功能数据传送限制的限制,并且控制平面155还可以保留此带宽的一部分,以支持主要副本135处的I/O操作以及块到次要副本140的同步复制(例如,使得标准用户I/O操作可以在克隆操作期间继续)。
相比来说,第三副本145可以分为比主要和次要副本的分区数目更多数目的分区。在一些实施方案中,此数目可以从1,000个分区变化到3200万个分区(例如,每个卷块一个分区)。在一些实施方案中,较低数目的分区可以用于第三副本,例如,某个数目使得整个卷在阈值时间段内能够被克隆或快照。在此示例中,网络接口的带宽、对象存储的带宽、卷的大小和目标完成时间可以用于确定要使用的分区数目。有利地,分区数目的增加增加了用于传送第三副本的数据的总可用带宽。每一分区可以包括卷的一个或多个块,并且这些分区可以存储在弹性计算***120的不同装置的容器中。在实施方案中,容器存储原始的非结构化二进制文件,例如二进制大对象(“BLOB”)数据文件,并在被查询时将它们返回。控制平面155可以将卷的数据(例如,存储在主要或次要副本中的数据)划分成单独的分区,每一分区可以存储在具有容量的弹性计算***120(或其指定区域或可用性区)中的任何容器上。这些容器只能被附加,并且一旦容器的存储空间被完全使用(例如,任何剩余的存储部分太小而不能存储第三副本的另一分区)就可以被密封。为了冗余,在一些实现方式中,容器服务器可以配置有计算机可执行指令,以复制容器的多个拷贝。
第三副本145可以被视为弹性计算***120内的新资源,以加速卷的快照和克隆。此第三副本145有利地减少了弹性计算环境120中多租户服务器上的瓶颈,例如,其中一个用户可以请求对其卷进行1,000次克隆,并用尽服务器的连接带宽,这不利于其他用户。在一个实施方案中,第三副本145可能不直接暴露给用户,尽管它可以被配置成支持他们的快照和克隆请求。一些实施方案可以维护第三副本的多个拷贝,例如支持并行馈入多个新卷的创建。第三副本145的分布式存储提供了许多好处,包括利用到对象存储服务器110上的桶的高并行性但低吞吐量的连接,以及能够驱动块存储服务器105上的高吞吐量。下文进一步详细描述关于创建、存储和使用第三副本145的附加细节。
示例性第三副本的概述
图2A描绘在弹性计算***120内创建分布式第三副本的示意图200,例如图1B的第三副本145的实现方式。第三副本没有在图2A中描绘出,因为此副本的分区存储在容器C1-Cn中。“静态”分布式第三副本是指不从主要或次要副本同步或异步接收块级更新的第三副本。虽然此特定示例可以被创建为静态分布式第三副本,但在一些实施方案中,此副本可以稍后从主要或次要副本接收更新,例如通过连接到如参考图3A和图3B所描述的记录器机群。
对象存储215可以是包括卷快照的上述对象存储服务器110的一个或多个桶。在所示出实施方案中,分布式副本协调器205A、205N是驱动从存储在对象存储215中的快照创建分布式第三副本的部件。其他实施方案可以创建第三副本,而不触及对象存储215,例如通过直接从主要和/或次要副本创建它。
可以有多个分布式副本协调器205A、205N,例如由记录器机群315更新的每个第三副本一个。说明性地,工作机210A-210N是无状态工作机机群,其按照分布式副本协调器205A、205N的指导下载要存储在每一分区(或分区范围)中的数据。分布式副本协调器205A、205N和工作机210A-210N可以是数据流处置客户端,例如作为计算服务器115上的实例运行。
工作机210A-210N将第三副本分区存储在容器服务器220上的容器C1-Cn中,例如选择任何具有容量的容器并将第三卷分区指向所选容器。在所示示例中,为了容错性,每一容器在多个服务器220上被复制,然而其他实现方式可能不复制容器。每一容器C1-Cn本质上是容器服务器220中的一者的分区。每一容器C1-Cn可以有存储多个第三卷分区的容量。在一个实施方案中,每一容器C1-Cn包括仅附加密钥值存储区,只要它有容量就存储密钥/值,并按需返回存储的数据。与上述属于用户的单个卷的卷分区不同,容器C1-Cn可以是多租户的,因为它们可以存储来自不同用户的多个卷的数据。
容器服务器220可以是块存储服务器105中的专用服务器,或者可以与存储上述卷的块存储服务器105共享。尽管存储在对象存储服务器110中的快照也可以被视为主要副本的拷贝,但是块存储服务器105和对象存储服务器110的桶之间的每一连接通常是低吞吐量与高延时,而给定可用性区内的弹性块存储服务105通常与高吞吐量、低延时连接相连接。因此,通过使用存储在容器服务器220上的第三副本而不是存储在对象存储服务器110上的快照,将整个卷的数据传送到新卷所需的时间可以从几小时减少到几分钟。
图2B是用于创建图2A的分布式第三副本的示例性过程230的流程图。在一些实施方案中,过程230可以在弹性计算***120的控制平面155的控制之下执行。
在方框235,控制平面155提交第三副本的创建。这可以涉及识别块存储服务器105上的特定卷,确认该卷已经被快照,并且如果没有,则创建该卷的快照。在其他实施方案中,第三副本的数据可以直接从主要和/或次要副本中汲取。
在方框240,分布式副本协调器205A、205N从对象存储215下载对象清单文件。对象清单文件可以识别表示卷的块的对象的存储位置。
在方框245,分布式副本协调器205A、205N基于例如每一工作机的能力和每个分区的块数目,向每一工作机210A-210N指派第三副本的一个或多个分区。更多数目的分区可以增加(例如,从快照)重新创建某些变得不可用的分区、重复容器服务器220上的分区以解决高需求(例如,在装置或分区被高度用于数据传送的情况下)以及使用未使用的容量的便利性。然而,主要副本的每一分区可能需要维护到第三副本的分区的对应子集的连接(例如,参见图5A),并且还具有它能够维护的最大数目的连接。因此,取决于特定的***配置,第三副本内的分区数目可以是这些利益之间的折衷。
在方框250,不同的工作机210A-210N从对象存储215下载他们负责的分区的块。每一工作机还为其负责的每一分区选择容器,例如基于识别任何具有容量的容器,然后通过在分区内包括下载的块数据来在所选容器上产生分区。在一个实施方案中,分区可以在容器上进行条带化,其中条带化是指对逻辑上连续的数据进行分段,使得连续的数据段存储在不同的物理存储装置上。为每一分区选择容器的此过程可以确保分区在数据中心内或多或少地在地理上是不同的,例如,使得大多数分区不共享同一个交换机。此外,选择容器的过程可以考虑候选主机上的带宽争用,使得分区不被放在“热”存储主机上(例如,使用它们的大多数或大部分连接带宽的主机)。
在方框255,每一工作机为其负责的分区构建部分清单,并将所述清单发送回分布式副本协调器。这些部分清单可以是从分区ID(或块ID)到容器ID的映射,并且部分清单可以被组装成清单文件,所述清单文件识别第三副本的分区的存储位置。第三副本145的分布式存储带来了寻找具有给定卷的块的所有容器的挑战。清单文件是此挑战的解决方案,因为它将第三副本的每一分区映射到具有所述分区的容器。如果分区在被请求时不可用,则控制平面155可以使用对象清单文件来识别分区的快照表示在对象存储服务器110上的位置,并从快照重新驱动下载。
在方框260,分布式副本协调器205A、205N将来自不同工作机210A-210N的部分清单组装成完整的分布式卷清单(例如,对于分布式第三副本的所有分区,从分区ID到容器ID),并将其存储在对象存储215上。一旦完成,分布式副本协调器205A、205N可以通知控制平面155,并且过程230结束。
第三副本的示例性更新的概述
图3A描绘在弹性计算***120内的主要副本和分布式第三副本(例如图1B的第三副本145)之间复制数据更新的示意图300。第三副本没有在图3A中描绘出,因为此副本的分区存储在容器C1-Cn中。分布式第三副本145的这种实现方式被维护为主要副本的异步拷贝。
用户可以经由客户端305在主要副本上执行I/O操作。主要副本说明性地存储在块存储服务器105的第一块存储服务器310上。此服务器310可以维护更新日志,并使用此日志来更新第三副本,例如经由如下文描述的记录器机群315。次要副本存储在第二块存储服务器(未示出)上。尽管图3A将主要副本的服务器310描绘为向记录器机群315传播更新330,但在其他实现方式中,向记录器机群315传播更新330可以由次要副本的服务器来执行,因为次要副本与主要副本同步维护,例如为了保留第一服务器的更多带宽来处置I/O操作325。
如关于图2A所描述,分布式第三副本被存储为容器服务器220上的容器C1-Cn中的卷的数千或数百万个分区。然而,在此实施方案中,分布式第三副本从主要副本接收块级更新。虽然第三副本的分区的地理多样性可能会引入比次要副本所经历的更大的更新复制延时,但是考虑到来自第三副本的并行数据传送能力的增加,这是可接受的。当次要副本被同步复制时(例如,与向主要副本写入数据同时),对第三副本的更新可以被异步复制(例如,在向主要副本写入数据之后)。例如,如果用户请求创建快照或克隆并且第三副本将用于此目的,则可以将更新传播到第三副本以确保它是最新的。此后,可以“冻结”第三副本,同时从第三副本创建快照或克隆。在冻结时,第三副本可以暂时保持对主要副本的任何新写入,同时将其数据传输到克隆或快照,并可以在完成克隆或快照过程后,将这些更新依序写入适当的分区。
在示例性实施方案中,记录器机群315是第三副本和主要副本之间的中介。记录器机群315可以是数据流处置客户端,例如作为一个或多个计算服务器115上的一个或多个实例运行。说明性地,记录器机群315可以通过AMAZON KINESISTM服务或经由APACHE KAFKATM软件来实现,其操作在此领域中是已知的。通过利用记录器机群315,可以从弹性块存储服务器310卸载用于保持第三副本最新的逻辑,并且可以减少块存储服务器310的存储器使用。说明性地,记录器机群315从主要副本接收更新,并且以串行方式将它们应用到第三副本。记录器机群315可以从主要副本中提取更新,或者主要副本可以将更新推送给记录器机群315。具体地,记录器机群315从块存储服务器310接收更新330,然后将这些更新传播到容器C1-Cn中的适当容器。如果容器服务器停机,在没有记录器机群315的情况下,主要副本的一些实施方案可以备份在更新日志上,并且这可以触发控制平面155开始限制用户I/O操作。有利地,在所示实施方案中,主要副本可以将其更新发送给记录器机群315,所述记录器机群可以将它们存储一段时间(例如,24小时)。记录器机群315可以在此时间段期间更新第三副本。记录器机群315可以具有多个工作机,每一工作机接收形成流的顺序更新(例如,对卷的更新的改变日志),并将更新传播到第三副本。在一些实施方案中,记录器机群315可以管理不同卷的多个第三副本,并且日志流可以表示对这些不同卷的顺序更新的改变日志。
在替代实施方案中,不是记录器机群315,而是主从架构可以用来向第三副本推送更新,其中主要副本是主控者,而次要副本是向第三副本推送更新的从属者。主控者可以知道第三副本的每一分区存储在哪里,并且还可以维护这些分区最新程度如何的日志。主控者可以更新从属者,从属者然后可以向第三副本推送更新。主要和/或次要副本可以接收对第三副本的写入的确认。对于没有对应确认的任何更新,主要和/或次要副本可以将所述更新重新发送到第三副本的适当分区。
一些实施方案可以有利地将记录器机群315定位在主控者和从属者之间,使得主控者更新记录器机群315,并且记录器机群315更新从属者。主控者只需确保记录器机群315接收到更新,并且然后记录器机群315确认第三副本接收到更新。与主从方法相比,记录器机群315提供的一个好处是,它能够实现第三副本的更大程度的分区和/或分布。如果主控者将更新推送到第三副本,则主控者可能需要将第三副本的所有元数据和逻辑包含在自身内部。
图3B是用于更新图3A的分布式第三副本的示例性过程320的流程图。在一些实施方案中,过程320可以在弹性计算***120的控制平面155的控制之下执行。
在方框325,用户在主要副本上执行I/O操作。这可以包括例如写入新数据、改变现有数据或删除现有数据。
在方框330,主要副本向记录器机群315发送此更新,如上文所述。更新可以是包括一系列更新和其他命令(例如,快照和克隆命令)的日志流的一部分。记录器机群315可以具备拒绝无序更新的智能。
在方框335,记录器机群315识别存储对应于更新的分区的任何容器。这可以包括识别卷中已经被改变的块,并在分布式卷清单中查找存储对应于这些块的分区的容器。
在方框340,记录器机群315向容器发送更新,以根据更新来更新第三副本。这可以异步地进行。如上文所述,如果第三副本的一部分不可用,则记录器机群315可以保持其更新,直到所述部分变得可用为止。在一些示例中,如果用户I/O正在使用前两个副本的带宽,则主要和次要副本可以延迟向第三副本传播更新,以维护用户体验。
任选地,在方框345,记录器机群可以将更新日志备份到对象存储215。这可以类似于快照备份运行,允许使用更新日志创建新卷。因而,在一些实施方案中,如果获取卷的快照,则可以清除对象存储215中的更新日志,并且此后可以将新的更新日志定期备份到对象存储。可以通过使用更新日志来创建新卷以更新快照。因而,在对象存储215中存储更新日志提供了比仅存储快照更细粒度的数据恢复。如上文所述,对象存储服务器110可以被配置成跨可用性区复制桶,而块存储服务器105可以仅复制可用性区内的卷。因此,将更新日志备份到对象存储215可以增加即使在可用性区故障的情况下用户数据将存留的可能性。
在决策方框350,记录器机群315确定日志流是否包括快照请求。快照请求可以是日志流的一部分,因此当它到达第三副本时,第三副本已经接收到快照所需的任何更新。如果存在快照请求,则在方框355,容器将它们的分区推送到对象存储215,从而在快照请求时创建第三副本的快照。例如,主要副本可以将快照请求注入日志流。记录器机群315中的记录机器中的每一者将消息传播到第三副本的分区,这可以以并行方式将分区内的数据作为对象存储到对象存储215,从而促进快照的快速创建。快照的这种并行化可以比等待主要或次要副本将相同量的数据推送到对象存储215快得多地创建快照。可替代的,如果日志流内没有快照请求,则过程过渡到方框360。
在决策方框360,记录器机群315确定日志流是否包括检查点请求。如果是,则在方框365,容器被用于创建新的第三副本,所述第三副本表示那个时刻的卷,如以上关于过程230所述的。例如,主要副本可以将检查点请求注入日志流。记录器机群315然后可以将所述检查点请求传输到第三副本的每个分区。然后,第三副本的每一分区可以将其数据推出到相同或另一容器内的新分区,从而创建第三副本的附加时间点拷贝。
从第三副本产生示例性克隆的概述
图4A描绘从弹性计算***120内的分布式第三副本产生卷的克隆的示意图400。如本文所描述,由于其高度分布的性质,第三副本支持高度并行,其中给定卷的许多数据段可以同时传送。克隆被创建为具有确定数目的分区405(其“几何形状”)的目标卷401。分区405可以存储在上述块存储服务器105中的一个或多个上。
将参考图4B描述图4A的交互的进一步解释。具体地,图4B是根据图4A的基于存储在分布式第三副本内的信息来克隆创建新数据卷(例如,作为卷的主要和次要副本)的示例性过程的流程图。在一些实施方案中,过程410可以在弹性计算***120的控制平面155的控制之下执行。
在方框415,控制平面155在分区405上创建目标卷401。目标卷401是指将使用第三副本来创建的新卷。
在方框420,控制平面155从对象存储215提取分布式卷清单,并将清单(或清单的部分)存储在目标卷分区405上。如上文所述,分布式卷清单将第三副本的每一分区的分区ID映射到容器ID。在一些实现方式中,目标卷401的每一分区可以具备分布式卷清单的相关子集,所述子集识别将被写入目标卷分区的第三副本分区的容器位置。
在方框425,目标卷的每一分区从相关容器中检索分布式卷清单的相关部分中列出的分区的数据。如果存在“获取”故障,即,卷的用户试图访问尚未被检索到目标卷的分区的数据,则目标卷401可以执行对托管所述分区的容器的获取。图4A描绘将第三副本的单个分区单次提取到目标卷401的对应分区405,并且此类提取可以说明性地重复,直到已经提取了第三副本的每一所需分区为止。尽管图4A展示从每一容器服务器220通向分区405之一的单个箭头,但是应理解,这是为了图中的简单性和清晰性的目的,并且每一分区可以从多个或所有容器服务器220接收数据。如果容器没有响应,则目标卷401可以使用参照图2A和图2B描述的对象存储清单,从对象存储中检索在分布式卷清单内识别的分区的数据。
在方框425,当目标卷401完成创建新卷时,目标卷用信号通知对象存储215。
从第三副本产生示例性快照的概述
图5A描绘从弹性计算***100内的分布式第三副本产生卷的快照备份的示意图。如上文所述,快照是卷的时间点块级备份,存储为对象存储215中的卷上的数据的拷贝(例如,作为单个对象或对象集合)。在一些实现方式中,快照被实现为卷内数据的增量记录,使得当获取卷的第一快照时,包含有效数据的卷的所有块作为一个或多个对象被拷贝到对象存储215,当获取同一卷的后续快照时,只有自第一快照以来已经改变的块需要被拷贝到对象存储215。当创建快照时,在快照启动之前写入卷的任何数据都可以包括在快照中,并且用户可以在快照创建期间继续对其卷执行I/O操作,而不会影响快照。
第三副本的高度分布式性质支持高度并行性,其中卷的许多部分可以同时传送,从而支持在对象存储215中快速创建备份。如所示出,用户可以从客户端305向主要副本(存储在一个或多个块存储服务器310上)发出快照请求510,主要副本继而向存储在容器服务器220上的第三副本的分区发送指令,以向对象存储215发送数据来创建快照备份。如上文关于图3B的方框350和355所述,在一些实现方式中,快照创建过程可以涉及记录器机群315,其将更新流中的快照请求传递给第三副本。
将参考图5B和图5C描述图5A的交互的进一步解释。具体地,图5B和图5C是根据图5A从分布式第三副本产生快照的示例性过程505A、505B的两个实现方式的流程图。下面一起描述过程505A、505B的公共块,所述描述分别地针对过程505A、505B的不同块。在一些实施方案中,过程505A、505B可以在弹性计算***120的控制平面155的控制之下执行。
参考图5B和图5C两者,在方框510,在托管主要副本的块存储服务器310处从客户端305接收产生卷的快照的用户请求。如上文所述,快照是存储在对象存储服务器110上的卷的数据的备份拷贝,由于对象存储服务器110的配置用于跨可用性区自动复制数据,因此与存储在块存储服务器105上的拷贝相比,这可以提供更大的容错性好处。因而,一些用户请求频繁的快照以在对象存储215中保持他们的数据的更新备份,从而需要高带宽使用来创建此类快照。
在方框515,托管主要副本的该组块存储服务器310将快照请求传播到存储在容器服务器220上的第三副本的分区。在一些实施方案中,主要副本的块存储服务器310可以将此任务卸载到托管次要副本的块存储服务器310上。如上所述,在一些实现方式中,快照可以是增量过程,其中只有自上次备份以来接收到更新的卷部分被发送到对象存储。在增量快照实现方式中,托管主要副本的块存储服务器310也可以维护备份映射,并与快照请求一起传输此备份映射。备份映射是指卷的部分(例如,块、块的集合等)的映射或列表,所述部分自卷的前一快照(例如,紧接在前的快照)以来已经被修改。当创建快照时,块存储服务器310可以修改备份映射,以反映自上次快照以来每一部分都没有被修改。当用户修改卷的部分时,托管主要副本的块存储服务器310中的一个或多个(或弹性计算***中的另一计算装置)可以修改备份映射,以反映此类块自先前快照以来已经被修改。托管第三副本分区的容器服务器220可以使用备份映射来识别应当响应于此快照请求而被发送到对象存储215的任何部分(例如,自先前快照以来已被修改的部分)。
在托管第三副本的容器服务器220已经接收到快照请求之后,可以进行所述过程的两种不同实现方式之一,如图5B和图5C的子过程520A和520B所反映。具体转到图5B,子过程520A反映了过程505A的第一实现方式,其直接从第三副本创建快照。
具体参考图5B,在方框540,容器服务器220将第三副本的分区的数据发送到对象存储215。容器服务器220可以将这些分区中的一些或全部的数据并行传输到对象存储215。在图5A中,对象存储215被示为单个对象,然而对象存储215实际上可以由具有到容器服务器220的多个物理连接的分布式***来表示。因此,第三副本的分区的数据可以沿着大量不同的物理连接来发送。例如,每一数据传送可能是单独的HTTP连接。有利地,所公开的第三副本架构提供了源侧(例如,容器服务器220)和目的地侧(例如,对象存储215)的高带宽。除了来自更多物理连接的更大带宽之外,所公开的第三副本的使用可以减少每一容器服务器220上并行化的存储器要求,因为每一装置只需要维护到对象存储215的连接的一小部分。
有利地,相对于从主要和次要副本的更有限数目的分区传输相同的数据,此技术可以加快创建快照的时间,并且它还释放了主要和次要副本的数据传输带宽,以处置连续的用户I/O操作。在实践中,与使用分区较少的主要或次要副本相比,使用高度分区的第三副本来产生快照可以显著减少将快照写入对象存储215所需的时间,例如通过将写入快照所需的时间从10小时(例如,当从分区较少的副本写入时)减少到仅1小时。
继续参考图5B,如果在从第三副本创建快照的同时,在主要副本处存在连续的用户I/O操作,则在方框545,可以保持对第三副本的某些分区所需的任何更新,例如由记录器机群315或更新从属者(例如,次要副本)保持。更新可以被保持,直到整个快照已经完成,或者直到被指定用于此类更新的分区已经完成将它们的数据传送到对象存储215。
现转向图5C,方框520B反映了过程505B的第二实现方式,所述过程创建第三副本的时间点拷贝(称为“附加第三副本”)。附加的第三副本代表快照请求时的卷数据,而原始第三副本可以基于对主要副本的写入来继续更新。
连续参考图5C,在方框525,容器服务器220拷贝第三副本的分区以创建附加的第三副本。例如,可以将第三副本的每一分区(或对应于备份映射中的块的子集)拷贝到与原始分区相同的容器中或不同的容器中。这些附加的第三副本分区拷贝不接收基于主要副本处的用户I/O操作的任何进一步更新(至少在将它们的数据传输到对象存储215中的快照的持续时间内),使得所述拷贝反映快照请求时的数据的卷。
过程505B从方框525移动到方框530,在此处,附加的第三副本的分区将它们的数据发送到对象存储215。这些分区中的一些或全部可以将它们的数据并行传输到对象存储215,提供了类似于参考图5B的方框540所描述的那些的益处。
如果在创建快照的同时在主要副本处存在连续的用户I/O操作,则在方框535,可以响应于用户I/O操作来更新原始第三副本拷贝的分区。有利地,使用附加的第三副本来支持快照创建的方法由于连续的用户I/O操作而释放原始第三副本拷贝来继续接收更新,例如,如关于图3A和图3B所描述,因为不需要原始第三副本拷贝的分区来将卷数据发送到用于快照的对象存储215。
从图5C的方框535或图5B的方框545,过程505A、505B过渡到方框550,在此处,当数据传送完成时第三副本(或其拷贝)的分区用信号通知主要副本550。主要副本然后可以创建对象清单,所述对象清单指示卷的每一块(或某一其他部分)存储在对象存储215中的何处。关于对象清单,每一容器C1-Cn或容器服务器220可以知道它已经将卷数据的每一对象表示放置在对象存储215中的什么地方。因此,控制清单创建的服务器(例如,控制主要副本的服务器)可以从相应的容器服务器收集那些位置,并将它们编译成将卷的部分(例如,块)映射到对象存储215内的对象的数据文件。
如上所述,当使用增量快照时,清单还可以引用先前的快照。因此,例如,清单可以指示在先前清单内识别的块1-433的位置,并且所述先前清单可以引用更旧的清单,等。可替代地,清单创建装置可以将来自先前清单的未修改块的对象表示的位置直接并入到当前清单中,使得单个清单文件包括卷数据的部分的位置。
任选地,在一些实现方式中,如果在过程505期间创建了任何附加的第三副本,则此时附加的第三副本可以被删除。在其他实现方式中,附加的第三副本可以保留一定时间段,例如允许用户从中创建卷的新克隆。因而,过程505可以涉及检查来自客户端505的任何克隆指令和/或在删除附加的第三副本之前等待此类指令某一预定的时间量。
虽然过程505A、505B是关于单个快照来描述的,但是它们可以同时或至少部分同时实现多次,例如在每次写入之后用户请求快照的情况下。在此类实现方式中,过程505A、505B的一个迭代可能正在创建第一快照,而另一迭代正在创建第二快照,等等。
实现记录机群的实施方案的概述
参考图6-图9B,将描述实现记录器机群315的本公开的说明性实施方案。如上所述,在一些实施方案中,记录器机群315可以促进分布式第三副本的异步更新,使得更新第三副本的功能从例如实现主要或次要副本的装置卸载。记录器机群315可以另外地或替代地提供其他功能性,诸如将对卷的修改记录作为消息流来维护(例如,其中每一消息反映对卷的修改)。如下文将描述,维护卷的消息流可以提供许多好处,诸如将卷恢复到消息流内反映的任何先前状态的能力(例如,通过基于恢复所述流的消息中反映的修改而将所述卷“倒带”到先前时间)。
参考图6,描绘了说明***互600,使得记录器机群能够维护反映对卷的修改的消息流。图6的交互开始于(1),其中客户端305向实现卷的一个或多个副本(例如,主要和/或次要副本)的块存储服务器310提交写入操作。因为卷可以作为虚拟化存储装置(例如,硬盘驱动器或固态磁盘驱动器)呈现给客户端装置305,所以写入操作可以根据多种总线接口协议中的任一者传输到块存储服务器310,其中多种总线接口协议在此领域中是已知的。例如,客户端305的写入操作可以被格式化为串行AT附件(SATA)数据包。如上所述,术语“写入操作”在本公开中旨在反映对目标卷的修改,且因此可以包括写入新数据、修改现有数据、删除数据或以其他方式修改在服务器310上实现的卷的内容的操作。
在接收到写入操作之后,块存储服务器310可以利用接收到的操作来产生对应于写入操作的消息,以包括在对应于卷的消息流中。(注意,块存储服务器310可以另外处理写入操作,以根据写入操作修改卷的副本,诸如主要和/或次要副本。由于对基于网络的存储装置的写入操作的一般实现方式在此领域中是已知的,因此本文不描述这些交互。)在一个实施方案中,卷与单个消息流相关联,使得卷上的所有写入操作作为消息被包括在单个消息流内。在另一实施方案中,卷与多个消息流相关联,使得卷上的写入操作在消息流间被划分。此类划分可以基于例如卷的主要副本和/或次要副本的分区。说明性地,如果主要和/或次要副本被分区为16个分区,则记录器机群315可以被用来维护该卷的16个消息流,每一消息流包括反映与16个分区中的单个分区相关的写入操作的消息。流之间的写入操作的其他划分也是可以考虑的。例如,写入操作可以通过负载平衡算法(例如循环划分等)在不同的消息流间划分。在多个消息流之间划分写入操作可能是有益的,例如,减少了维护每一流的存储器要求、在记录器机群315处实现并行化、以及减少在消息流内定位特定写入操作所需的时间(例如,基于知道写入操作所应用的分区)。将参考使用多个消息流来维护对卷的写入操作的日志来说明性地描述以下交互,每一对应于该卷的主要和/或次要副本的分区。然而,在利用单个消息流的情况下,或者在根据除了写入操作所应用的分区之外的准则来划分消息流的情况下(例如,负载平衡划分),可以实现类似的交互。
因此,在(2),块存储服务器310确定由写入操作修改的卷的分区(例如,主要和/或次要副本的分区)。另外,在(3)处,块存储服务器310产生反映写入操作的要被包括在适当的消息流中的消息。消息可以包括例如写入操作内容的记录(例如,代表写入操作的SATA数据包),以及稍后需要或可用于重新创建写入操作的任何附加元数据,诸如写入操作所应用的特定块地址、写入操作的时间、提交写入操作的客户端305的身份、写入操作所应用的卷的识别符、块存储服务器310指派给写入操作的序列号等。所述消息可以根据任何已知的消息传递协议来格式化。例如,消息可以根据消息队列遥测传输(MQTT)格式来格式化,格式化以供实现APACHE KAFKATM软件的服务器使用,或者格式化以包括在由AMAZON KINESISTM服务提供的流中。
在(4)处,块存储服务器310将消息(反映卷上的写入操作)传输到记录器机群315,以包括在对应于写入操作所应用的主要和/或次要副本的分区的流中。如图6所示,记录器机群315可以维护多个分区流608A-608N,每一分区流可以对应于例如主要和/或次要副本的不同分区。在图6的说明性示例中,写入消息被提交给分区流608B,反映例如写入操作修改了卷的第二分区。在(5),记录器机群315使消息排队到流608B中。在一些实施方案中,记录器机群315可以实现功能性以确保对机群315的各种故障的弹性,诸如通过利用冗余服务器来存储消息。在一个实施方案中,记录器机群315被配置成将队列内的每一消息“恰好一次”或“至少一次”递送给每一接收者。说明性地,“恰好一次”功能性在写入操作不是幂等的情况下可能是有益的,使得多次应用相同的写入操作并不总是导致相对于应用写入操作的块的相同状态。例如,可以使用“至少一次”功能性,其中写入操作是幂等的(例如,应用于相同块的相同操作总是导致块的相同状态,而不管操作的重复),并且可以与记录器机群315处减少的计算资源相关联。实现“至少一次”功能性的记录器机群315的一个示例性实现方式在题为“快速顺序消息存储(FAST SEQUENTIAL MESSAGE STORE)”的美国专利第8,261,286号中描述,其全部内容以引用的方式并入本文中。
如下文将描述,记录器机群315可以被配置成将每一流608内的消息递送给各种接收者。例如,记录器机群315可以向分布式第三副本递送消息,使得第三副本能够根据消息中反映的写入操作被异步更新到主要和/或次要副本的状态。作为另一示例,记录器机群315可以向对象存储215递送消息,使得此类对象存储215能够随着时间维护对卷的写入操作的记录。说明性地,记录器机群315可以强制消息的排序,使得给定流内的消息以正确的顺序在每一接收者处被接收。在一个实施方案中,“正确的顺序”是基于记录器机群315处的消息排队而建立的(例如,使得消息以与它们被接收的顺序相同的顺序被递送给接收者)。在另一实施方案中,“正确的顺序”是基于消息本身的内容建立的。例如,在消息包括指示序列号的元数据的情况下,记录器机群315可以利用序列号来建立消息在流中的正确顺序。在一些情况下,记录器机群315可以被配置成将消息的接收顺序与消息的内容同步。例如,记录器机群315可以被配置成仅接受具有有序序列号的消息(例如,增加数目、减少数目、增加相邻数目、减少相邻数目等),并且如果接收到包括无序序列号的消息,则通知传输装置。
虽然以上图6的交互是关于写入操作来描述的,但是对卷的其他操作可以另外地或替代地包括在该卷的消息流内。例如,请求创建反映给定时间点的卷状态的文件的“快照”操作可以反映在消息流的消息内。说明性地,快照消息可以被包括在卷的每一消息流中,并且维护卷的第三副本的分区的每一装置可以被配置成在接收到快照消息时,产生快照的相关部分作为对象存储215内的文件。下文更详细描述从第三副本创建快照。在一些实施方案中,包括在消息流内的快照消息可以指示快照在对象存储215上的位置。如下文将描述,这可以通过使装置能够结合在消息流内识别的写入操作而使用在消息流内识别的快照来重新创建在时间点的卷状态,促进重新创建在时间点的卷状态。
参考图7,将描述说明性的交互700,使得能够使用记录器机群315处的消息流内的消息来异步更新分布式第三副本。例如,图7的交互可以发生在图6的交互之后和/或与图6的交互同时发生(例如,在图6的交互对于多个写入操作重复的情况下)。
图7的交互开始于(1),其中记录器机群315检测到消息流中存在尚未被递送给接收者的消息。具体地,在图7的交互中,记录器机群315可以检测到分区流608B内存在尚未被递送到相关容器服务器220的消息。例如,相关容器服务器220可以对应于实现由消息表示的写入操作所应用的卷的第三副本的分区的服务器220。在一个实施方案中,记录器机群315可以为每一流维护该流的接收者列表,以及指示接收者已经接收到该流内的消息的确认列表。因此,交互(1)可以通过检测流608B内的消息尚未被流608B的接收者确认来实现。在一个实施方案中,可以至少部分地基于消息内包括的写入操作来确定流的接收者。例如,在消息内反映的写入操作应用于卷内的特定块偏移的情况下,可以基于服务器220来确定消息的接收者,所述服务器维护对应于所述块偏移的第三副本的分区。在一些实施方案中,记录器机群315被配置成根据发布/订阅(“pub/sub”)模型操作,并且每一容器服务器220被配置成“订阅”记录器机群315的流608的相关部分,从而通知记录器机群315服务器220是流608的这一部分的接收者。在其他实施方案中,记录器机群315被通知哪些容器服务器220维护第三副本的哪些分区(例如,通过实现卷的主要和/或次要副本的服务器310),并基于此类通知确定每一消息的接收者。
在确定消息存在于要递送给接收者的流内之后,记录器机群315在(2)向接收者容器服务器220提交所述消息。容器服务器220然后可以在(3)处利用所述消息来产生写入操作,并根据所述写入操作来修改卷的第三副本的分区。例如,在一些实施方案中,容器服务器220可以利用消息内的信息来重新创建表示写入操作的初始SATA数据包,并且相对于写入操作所应用的第三副本的相关分区来应用所述SATA数据包。因此,卷的第三副本可以用先前应用于主要和/或次要副本的写入操作异步更新。如上所述,在一些情况下,消息可以包括除写入操作之外的其他操作。例如,消息可以指示客户端对快照的请求。在此类情况下,如上所述(例如,参照图5A至图5C),服务器220可以通过发起卷快照的创建来处理消息。
虽然图7描绘了向单个接收者传输单个消息,但是记录器机群315可以用于促进向任何数目的接收者递送任何数目的消息。在一个实施方案中,记录器机群315以相对于流的顺序次序向每一接收者(例如,由对所述流的订阅所识别)传输消息,使得消息以相对于它们排队进入所述流的顺序的“先进先出”(FIFO)顺序被传输。例如,FIFO顺序的使用可以维护第三副本与主要和/或次要副本的一致性。
在一些实施方案中,记录器机群315可以被启用来监视每一分区流608的大小,以确保未解决消息(例如,每一接收者未确认的那些消息)不超过阈值量。说明性地,记录器机群315可以在消息被接收时使其排队,并且在消息被消息的每一接收者确认时将其标记为确认消息。然而,在接收者未能确认消息的情况下(例如,由于错误、硬件故障等),队列中未确认消息的数目可能超过阈值大小。在此类情况下,记录器机群315可以被配置成向块存储服务器310通知此类故障,诸如通过拒绝向流写入消息的后续请求。块存储服务器310又可以拒绝来自客户端装置305的写入操作,或者以其他方式指示此类写入操作没有被写入卷的第三副本。
参考图8,将描述用于将消息流内的消息记录写入对象存储215的说明***互800。此类消息记录可以用于例如重新创建在卷的消息流内反映的任何时间点的卷状态。图8的说明***互将针对单个消息流、分区流608B来描述。然而,对于卷的任何消息流,可以实现类似的交互。
图8的交互开始于(1),其中记录器机群315检测到队列集合事件。队列集合事件说明性地对应于指示消息流(例如,流608B)内的事件应该出队列并被传输到对象存储215(例如,用于长期存储)的任何事件。在一个实施方案中,队列集合事件对应于流内增长超过阈值数目(例如,由记录器机群315的管理员设置)的消息数目。在另一实施方案中,队列集合事件对应于流的消息内的快照操作的检测。在另一实施方案中,队列集合事件对应于自先前的队列集合事件以来经过阈值时间段(例如,24小时)。
在检测到队列集合事件时,记录器机群315在(2)将流608B内的消息捆绑、收集或以其他方式编译成要写入对象存储215的数据对象,所述数据对象在本文称为“捆绑对象”。捆绑对象可以是在捆绑对象产生时识别流内的消息的任何数据对象。例如,捆绑对象可以是ZIP或其他压缩数据文件。在一个实施方案中,记录器机群315在捆绑对象内仅包括由所有接收者(例如,容器服务器220)确认的消息。记录器机群315然后在(3)处将捆绑对象存储在对象存储215内。如下文将描述,捆绑对象随后可以从对象存储215中检索,作为由捆绑对象内的消息反映的一段时间内对卷进行的写入操作的记录。因为消息已经被存储在对象存储215中,所以记录器机群315可以随后在(4)使捆绑对象的消息从分区流608B中出队列,从而为后续消息释放流内的空间。
虽然上文将来自分区流608B的消息的出队列描述为周期性操作(例如,当接收到队列集合事件时),但是记录器机群315的一些实施方案可以替代地在消息被所有接收者确认时使消息出队列。说明性地,对象存储215可以允许向对象或对象集合写入单独的消息,并且对象存储215可以被配置成卷的每一消息流的接收者。因此,记录器机群315可以被配置成以与其他接收者(例如,容器服务器220)相同或相似的方式向对象存储215传输消息。在此类情况下,在从包括对象存储215在内的所有接收者确认接收之后,可以使消息从消息流中出队列。
参考图9A和图9B,将描述说明***互用于通过参考反映卷上的写入操作的消息流(或这种流的日志)来重新创建在时间点的卷状态。具体地,如上文论述,在对卷的修改反映在该卷的消息流内的情况下,此类消息流可以用于重新创建在消息流内反映的任何时间的卷状态。图9A中描绘了用于重新创建在特定时间点的卷状态的说明***互900,而图9A中描绘了用于重新创建在特定时间点的卷状态的说明性例程901。例程901可以例如由维护第一卷的装置来进行,其中第二卷的状态将被重新创建。第一和第二卷可以是相同的卷,从而使客户端能够对卷进行“倒带”操作,以将所述卷置于其先前状态。第一和第二卷可以是不同的卷,从而使客户端能够在新卷中重新创建先前存在的卷的先前状态。在图9A中,例程901被示为由块存储服务器310实现,以将先前存在的卷的状态重新创建为新卷,所述新卷包括例如在块存储服务器310处实现的主要和次要副本。例程901可以另外地或替代地由容器服务器220实现,以将先前存在的卷的状态重新创建为新的高度分布式卷或副本。
参考图9A和图9B,在方框902,块存储服务器310获得重新创建在特定时间点的先前存在的卷的状态的请求。所述请求可以例如由客户端305产生,并且可以指定先前存在的卷、特定时间点以及在其中重新创建在特定时间点的先前存在的卷的状态的目标卷(所述目标卷可以与先前存在的卷相同或者是不同的卷)。
在另一实施方案中,所述请求可以由记录器机群315或实现弹性计算***120的控制平面155的装置产生。说明性地,参考图9A和图9B描述的交互可以用于将反映一段时间内对卷的写入操作的消息流转换成特定时间点的卷的快照。因为此类快照可能需要比消息流更少的存储器来存储,所以这些交互可以使弹性计算***120能够减少***120的存储器使用。说明性地,在卷的消息流超过阈值大小的情况下,***120可以被配置成确定流内导致该流超过阈值大小的最早消息,并且创建反映在那些最早消息中反映的写入操作的实现之后的卷状态的卷快照。随后,***120可以删除那些最早的消息,因为正好在消息之后的***状态被保持在快照内。
在方框904,块存储服务器310检索反映参考时间点和与请求相关联的特定时间点之间对卷的写入操作的消息。参考时间点可以说明性地是特定时间点之前的任何点,并且在该点处整个卷的状态是已知的。参考时间点可以例如对应于卷的初始创建或卷快照的创建。因此,可以利用检索到的消息从参考时间点的卷状态开始,并应用消息内包括的写入操作来重新创建特定时间点的卷状态。说明性地,块存储服务器310可以维护卷的参考时间点的记录,并且可以选择用于例程901的特定实现的参考时间点作为与请求相关联的特定时间点之前的第一参考时间点。
在方框904中检索的消息可以包括存储在对象存储215内的包括任一个或两个捆绑对象的消息或者存储在记录器机群315内的未捆绑消息。说明性地,每一消息或捆绑对象可以与卷识别符和消息中反映的写入操作的时间或时间范围相关联。因此,块服务器310可以向对象存储215和/或记录器机群315请求与参考时间点和请求的特定时间点之间的时间段相关联的消息。
在方框906,块存储服务器310向目标卷604应用由检索的消息产生的一组写入操作,以便使目标卷604重新创建在请求中指定的特定时间点的请求中指定的先前存在的卷的状态。在一个实施方案中,块存储服务器310最初使卷604的状态与参考时间点的状态匹配(例如,通过将所有块设置为参考时间点是卷的初始创建情况下的未写入,通过将所有块设置为当参考时间点对应于快照的创建时反映在快照中的值,等)。随后,块存储服务器310可以以匹配检索到的消息的顺序向卷应用写入操作,从而重新创建对先前存在的卷所做的修改,并使目标卷310匹配先前存在的卷在特定时间点的状态。
在另一实施方案中,块存储服务器310可以通过首先应用对应于最后消息的写入操作,然后顺序地应用较早消息的写入操作,以与检索到的消息的顺序相反的顺序(例如相反的时间顺序)向卷应用写入操作。当以相反的顺序应用写入操作时,块存储服务器310可以忽略对先前存在的卷的相同块的第二次和后续写入,从而将最后写入(如在消息的时序中反映的)建立为该块的状态,作为目标卷中的块的状态。在一些情况下,以相反的顺序应用写入操作可以使块存储服务器310能够在不预先建立参考时间点的情况下操作。例如,块存储服务器310可以被配置成开始从记录器机群315或对象存储215检索卷的最新消息,并且继续检索消息,并且以与消息相反的顺序对目标卷应用对应的写入操作(例如,忽略对同一块的第二次或后续写入),直到目标卷604的所有块都具有已知状态。说明性地,块存储服务器310可以通过确定在消息的反向时间顺序的检索中已经到达参考时间点,或者所有块已经在此类消息中被写入,来确定目标卷604的所有块都具有已知状态。
随后,在方框908,块存储服务器310通知接收者,目标卷604已置于先前存在的卷在特定时间点的状态。接收者例如可以对应于最初请求重新创建先前存在的卷的状态的客户端。另外地或替代地,在***120请求重新创建卷的情况下,接收者可以是***的控制平面155。在此类情况下,控制平面155随后可以导致创建目标卷604的快照以存储在对象存储215内,从而使得能够删除用于创建目标卷604的状态的消息。
在方框906的写入操作的应用可以顺序地发生,以反映给定的块,使得反映在特定时间点之前或在特定时间点对所述块的写入操作的最新消息被认为是特定时间点的块状态的权威。然而,方框906处的写入操作的应用也可以相对于不同的块或块的部分并行发生。说明性地,块存储服务器310可以被配置成并行实现方框906的多个实例,或者在一些情况下并行实现整个例程901。例如,对于目标卷906的每一分区,可以发生方框906或例程901的单独实现。此类并行化可以使得块存储服务器310能够快速地将目标卷906置于与指定时间点的先前存在的卷的状态相匹配的状态。
虽然上文论述了记录器机群315的说明性功能性,但附加功能性可以另外地或替代地由记录器机群315实现。说明性地,记录器机群315可以被配置成提供公共可访问的API,授权的客户端能够通过所述API订阅与数据卷(例如,被授权访问的卷)相关联的消息流。因此,客户端可以利用此类API来实现各种功能性,诸如关于对数据卷的修改的通知。例如,客户端装置可以被配置成订阅来自数据卷的消息流,确定满足一组准则的修改何时被包括在消息流内,并且将此类修改通知终端用户。因此,本文描述的功能性在本质上是说明性的。
利用中介重复的实施方案概述
如上所述,虽然高度分布式第三副本可以促进卷的快速重复,但是在使用单个高度分布式副本的情况下,可能存在所请求的重复水平仍然需要过多时间的情况。例如,在用户希望重复源卷或该卷的一部分(例如,引导扇区)数百或数千次的情况下,当使用单个高度分布式第三副本时,此类重复可能需要大量时间。因而,本公开的实施方案可以能够创建中介重复副本或副本的中介重复分区,以允许更快速的大量重复。在一个实施方案中,对卷(或卷的一部分)的大量重复的请求可以通过首先创建一个或多个中介重复副本或中介重复分区(它们中的任一者在本文都可以被称为“中介重复”),然后使用此类中介重复来促进卷到一个或多个目标卷的大量重复来实现。
一个或多个中介重复的创建可以由诸如图2A的分布式副本协调器205之类的集中式权威机构来促进,或者可以由托管初始高度分布式副本的分区的服务器(例如,图2A的容器服务器220)来促进。下面将参照图10A-图11C来描述用于实现和使用中介重复的说明***互。具体地,图10A-图10C的交互描绘了使用分布式副本协调器205充当管理中介重复的创建和使用的集中式权威机构以便于从卷大量拷贝信息的交互。图11A-图11C的交互还描绘了管理中介重复的创建和使用的交互,所述中介重复有助于从卷大量拷贝信息,但是这样做是利用容器服务器220的对等式操作,而不是需要集中式权威机构。图10A-图11C的交互是参考与源卷相对应的高度分布式副本的单个分区被重复到多个目标卷来说明性描述的。此单个分区可以包括例如被请求拷贝到大量目标卷的配置文件或其他信息。然而,可以利用类似的交互来促进来自高度分布式副本的多个分区或副本的所有分区(例如,整个数据卷)的信息的重复。说明性地,通过关于高度分布式副本的所有分区来实现图10A-图10C或图11A-图11C的交互,由高度分布式副本表示的整个源卷可以被快速重复到甚至大量的目标卷。此外,虽然图10A-图11C的交互是关于将卷(或其一部分)重复到一组目标卷来描述的,但是类似的交互可以用于促进将卷(或其一部分)重复到任何网络装置。例如,中介重复可用于促进源卷(或其一部分)到对象存储服务器110内的一个或多个对象(例如,创建源卷的数百或数千个时间点“快照”)或到弹性计算***120外部的一个或多个网络目的地的大量重复。
如上所述,图10A-图10C的交互描绘了使用分布式副本协调器205充当管理中介重复的创建和使用的集中式权威机构,以便于从源卷的高度分布式副本的单个分区大量拷贝信息的交互。高度分布式副本的该分区说明性地存储在可用于托管此类分区的一组容器服务器220的第一容器服务器220A内。
图10A-图10C的交互在(1)处开始,其中分布式副本协调器接收将源卷的高度分布式副本的分区拷贝到一组目标卷的请求。在一个实施方案中,所述请求由用户经由块存储服务器105所提供的API来提交。API可以便于将请求直接提交给分布式副本协调器205A,或者提交给另一装置(例如,实现控制平面155),所述装置又将请求提交给分布式副本协调器205A。所述请求可以识别例如要拷贝的源卷的信息和所述信息应被拷贝到的一组目标卷。所述信息可以例如被指定为源卷的高度分布式副本的分区,或者被指定为协调器205A可以映射到分区的源卷的一个或多个文件(例如,基于存储所述信息的源卷的块范围)。该组目标卷可以被指定为例如块存储服务器105上的目标卷、计算服务器115上的实例116或其组合。在期望重复到对象存储服务器110或外部网络装置的情况下,该组目标可以被指定为对象存储服务器110或外部网络装置处的位置。
在(2),分布式副本协调器205A确定重复分区的未解决请求数目超过阈值水平。在一个实施方案中,阈值水平可以被预先建立为设定值,诸如由计算***110的管理员或者由源卷的用户。在另一实施方案中,阈值水平可以是预期完成重复分区的所有未解决请求所需的阈值时间。例如,协调器205A可以确定(例如,基于关于完成重复分区的请求的时间的历史信息)使重复分区的未解决请求的队列安静所需的预期时间,并且当使队列安静所需的预期时间超过阈值时间(例如,由计算***110的管理员或由源卷的用户设置)时,确定重复分区的未解决请求的数目超过阈值水平。
在确定重复分区的未解决请求的数目超过阈值水平之后,在(3)处,协调器确定应被创建以促进源分区的重复的中介重复分区的数目。在一个实施方案中,中介分区的数目至少部分基于重复所述分区的未解决请求的数目。说明性地,中介分区的数目可以由协调器205A确定,使得中介重复分区和源分区的组合可以有助于满足在阈值时间内重复的未解决请求。在另一实例中,管理员或用户可以为每个源分区或中介重复分区指定期望数目的未解决请求。例如,在每个分区的未解决请求的期望数目是20的情况下,中介重复的数目可以通过将未解决请求除以20并减去1(为了考虑初始源分区)来计算。在一些情况下,可以建立中介重复分区的最大数目,使得确定的数目不超过最大值。这可能限制例如用于促进分区的大量重复的计算***110的总资源(例如,其中大量重复由超过阈值水平的重复分区的未解决请求数目来表示)。
在(4),分布式副本协调器205A向托管高度分布式副本的初始分区的容器服务器220(在图10A中描绘为容器服务器220A)提交指令,以将初始分区拷贝到第二容器服务器(在图10B中描绘为容器服务器220B),从而在第二容器服务器上创建中介重复副本。在一个实施方案中,所述指令指定第二容器服务器。在另一实施方案中,第二容器服务器由托管初始分区的容器服务器来选择(例如,通过随机选择)。在(5),容器服务器220A将初始分区拷贝到容器服务器220B,因此在容器服务器220B上创建中介重复分区。在(6),容器服务器220B向协调器205A传输确认,即已经在容器服务器220B上创建了中介重复分区。
此后,可以串行、并行或其组合重复交互(4)-(6),直到中介重复分区的数目与协调器205A在(3)确定的数目匹配。例如,在接收到在容器服务器220B上创建中介重复的确认之后,协调器205可以重复交互(4)两次(可能同时或并发),一次指示容器服务器220A在容器服务器220C上创建中介重复,和一次指示容器服务器220B在容器服务器220N上创建中介重复。在交互(4)-(6)的每次重复中,初始分区的信息源的数目可以增加,从而便于创建更多的中介重复,所述中介重复又代表初始分区的附加信息源。以此方式,交互(4)-(6)的重复可以促进源分区的中介重复数目的指数增长。
在已创建了足够数目的中介重复(例如,满足在(3)确定的数目)之后,图10A的交互可以如图10B所描绘继续。具体地,协调器205A在(7)检测到已经创建了足够数目的中介重复,并且在(8)指示托管初始分区和中介重复的服务器220执行将分区(由初始分区和中介重复分区表示)的信息拷贝到目标卷。在图10B的交互中,假设分区的信息已经在容器服务器220N中每一之间被重复。然而,重复也可能在少于所有的容器服务器220N间。此外,在交互中,出于说明性目的,假设目标卷是块存储服务器110C上的卷。因此,在(9),每一容器服务器220执行分区拷贝操作,从而将源分区的信息拷贝到目的地块存储服务器310。因为这些操作可以并行进行,所以与从容器服务器220A上的初始分区串行执行分区拷贝操作相比,源分区的信息可以快速拷贝到块存储服务器310。
虽然图10B描绘了分区拷贝操作的单个并行化,但是这些交互可以被重复,以便于将源分区的信息拷贝到任意数目的块存储服务器310或其他网络装置。说明性地,协调器205A可以实现工作流控制算法,以向个别容器服务器220发送指令来进行将源分区重复到目标卷的未解决请求。当每一分区拷贝操作完成时,容器服务器220可以向协调器205A报告此类完成,所述协调器可以向容器服务器220发送指令,以进行重复源分区的另一未解决请求(如果存在的话)。这些交互可以重复,直到不再存在重复源分区的未解决请求,或者直到未解决请求的数目下降到指示应该通过垃圾收集过程移除过多的中介重复的阈值水平以下,如将参考图10C所描述的。在一些情况下,每一容器服务器220可以被配置成处置多个未解决请求,且正因如此,协调器205A可以向每一容器服务器220提交指令以执行多个分区拷贝操作。
如上所述,图10C描绘了说明***互用于实现关于中介重复的“垃圾收集”使得可以从容器服务器220移除过多的中介重复,从而减少容器服务器220所需的计算资源。具体地,图10C的交互从(10)开始,其中分布式副本协调器205A检测到未解决的分区拷贝请求的数目已经低于阈值水平。在一个实施方案中,阈值水平可以被设置为每个分区值,使得当未解决拷贝请求的总数除以源分区的总数(例如,包括初始分区和分区的任何中介重复)低于阈值时,满足所述阈值。例如,当在容器服务器220上重复5次的分区存在少于100个请求时,可以满足每个分区20个请求的阈值。在另一实施方案中,阈值水平可以被指定为满足未解决的分区拷贝请求所需的阈值时间。例如,如果容器服务器220上的信息的重复分区的当前数目预期在小于30秒内满足所有未解决请求,则可以满足阈值水平。
在检测到拷贝分区的未解决请求低于阈值水平之后,在(12),分布式副本协调器205A向容器服务器220传输指令以删除不需要的中介重复。在一个实施方案中,分布式副本协调器205A可以选择托管中介重复的单个容器服务器220(例如,随机地),并且向容器服务器220传输指令以删除其托管的中介重复。随后,可以重复交互(11)和(12),直到未解决的分区拷贝请求不再低于阈值水平。在另一实施方案中,分布式副本协调器205A可以确定要删除的中介重复的数目,使得未解决的分区拷贝请求不再低于阈值水平,并且在(12)处,可以向托管所述数目的中介重复的容器服务器220传输指令。以此方式,协调器205A可以确保容器服务器220内不维护过多的中介重复,使得容器服务器220的资源可用于其他操作(例如,重复其他分区、其他卷等)。
虽然上文讨论的实施方案涉及基于未解决的分区拷贝请求删除中介重复,但是可以使用附加的或替代的度量来确定是否删除中介重复。例如,分布式副本协调器205A可以获得或确定初始分区的拷贝请求的历史使用情况,并且从此类历史使用情况预测分区的未来拷贝请求(例如,通过将历史使用情况投射到未来时间)。随后,分布式副本协调器205A可以仅在分区的预测的未来拷贝请求(例如,在未来一段时间内)低于阈值水平时,用于删除一个或多个中介重复。在一个实施方案中,可以至少部分地基于容器服务器220删除和重新产生中介重复分区所需的时间来设置未来时间段。因此,例如,如果未来的分区拷贝请求被预测为足以保证在比删除和重新产生中介重复分区所需的时间更少的时间内使用中介重复分区,则分布式副本协调器205A可以确定不应该删除中介重复分区。
参考图11A-图11C,将描述图10A-图10C的那些的交互的附加或替代集合。具体地,虽然图10A-图10C的交互涉及使用分布式副本协调器205A作为集中式权威机构来控制分布式副本的分区的大量重复,但是图11A-图11C的交互涉及容器服务器220的对等式操作来控制分布式副本的分区的大量重复。图11A-图11C的交互可以被实现为图10A-图10C的交互的替代(例如,减少分布式副本协调器205A上的操作负载)或者除了图10-图10C的交互之外的交互。例如,在协调器205A需要过多的计算资源来维护高度分布式副本的每一分区的工作负载信息的情况下,协调器205A可以被配置成充当集中式权威机构来控制仅高度访问的分区的大量重复,并且容器220可以另外以对等式配置来控制较少访问的分区的重复,如果需要重复此类较少访问的分区的话。高度访问的分区可以在协调器处被识别,例如,通过使用“重型”算法(其示例在此领域中是已知的),或通过使用其他存储器有效算法来跟踪值流(例如,所有拷贝请求)内值的频繁出现(例如,拷贝单个分区的请求)。
图11A的交互在(1)处开始,其中分布式副本协调器205A以类似于图10A的交互(1)的方式接收将卷的高度分布式副本的分区拷贝到一组目标卷的请求。然而,与图10A的交互相比,图11A中的分布式副本协调器205A不需要促进初始分区的中介重复的创建。相反,在(2)处,协调器205A可以向托管初始分区的容器服务器220(这里,容器服务器220A)传输指令,以执行所请求的分区拷贝操作。
在(3),容器服务器220A检测到拷贝分区的未解决请求(例如,在容器服务器220的请求队列内维护的)超过阈值水平。以类似于上文讨论的方式,阈值水平可以被预先建立为设定值,诸如由计算***110的管理员或者由源卷的用户,或者可以是预期完成重复分区的所有未解决请求所需的阈值时间。例如,容器服务器220A可以确定(例如,基于关于完成重复分区的请求的时间的历史信息)使重复分区的未解决请求的队列安静所需的预期时间,并且当使队列安静所需的预期时间超过阈值时间(例如,由计算***110的管理员或由源卷的用户设置)时,确定重复分区的未解决请求的数目超过阈值水平。
响应于(3)的检测,在(4),容器服务器220A将初始分区拷贝到另一容器服务器220C,因此创建分区到容器服务器220C的中介重复。容器服务器220A可以根据任意数目的已知负载平衡或选择算法来选择容器服务器220C,诸如随机选择、循环选择等。在一个实施方案中,在将初始分区拷贝到服务器220C之前,容器服务器220A可以查询服务器220C,以请求在服务器220C上创建中介重复。如果服务器220C接受,则交互可以如上文所述进行。如果服务器220C拒绝,则容器服务器220A可以选择可替代服务器220,在所述可替代服务器上请求创建中介重复。服务器220C可以拒绝,例如,在服务器220C已经托管初始分区的中介重复的情况下,在服务器220C的当前工作负载太大而不能创建中介重复的情况下,等。
在假设服务器220C接受的情况下,交互进行到(5),其中容器服务器220A向容器服务器220C传输其当前分区拷贝指令队列的一部分。在一个实施方案中,服务器220A可以传送其现有分区拷贝指令队列的一半,从而在服务器220A和220C之间划分分区拷贝指令。
其后,类似于交互(3)和(4)的交互可以继续在容器服务器220内发生,直到每一容器服务器220A维护低于上述阈值水平的分区拷贝指令。例如,图11B中示出了交互,其中两个容器服务器220之间未解决的分区拷贝指令的划分不足以导致任一服务器220的队列低于未解决请求的阈值水平。因此,如图11B所示,在(6')和(6″)处,每一容器服务器220A和220C可以独立地确定其未解决的分区拷贝请求的队列超过阈值水平(例如,如上所述确定)(其中撇号指示独立的交互,所述交互可以同时发生,但不是必须同时发生)。其后,在(7')和(7″)处,服务器220A和220C中的每一者将分区拷贝到另一服务器(分别为服务器220B和220N),从而使服务器220间所述分区的重复数目加倍。类似于这些的交互可以继续在容器服务器220间发生,直到每一服务器220维护低于阈值的未解决分区拷贝指令的队列。其后,在(8),托管初始分区或中介重复分区的服务器220可以对块存储服务器310执行分区拷贝操作,从而将分区拷贝到目标卷。虽然在交互(9)中被示为单个操作,但是每一服务器220可以并行执行分区拷贝,从而促进将分区的信息快速传送到块存储服务器310。此外,每一服务器220可以被配置成处理其自己维护的未决分区拷贝指令队列,且正因如此,可以并行、串行或其组合执行分区拷贝本身,直到服务器220的队列内未解决指令的数目下降到阈值水平以下。
虽然图11A和图11B的交互是关于拷贝分区的一组请求来描述的,但是容器服务器220可以被配置成基于先前创建的中介重复来继续路由后续请求。例如,分布式副本协调器205A可以继续向容器服务器220A传输执行分区拷贝的指令,因为在这种情况下假设该服务器220A托管要被拷贝的初始分区。服务器220A可以在其自身和服务器220A已知的用以托管所述分区的中介重复的任何服务器220间分布后续的分区拷贝指令。例如,在图11A和图11B的交互中,服务器220可以知道在服务器220B和220C处存在中介重复,且因此可以根据多种已知负载平衡技术中的任一者(例如,使用循环分布)在服务器220A、220B和220C中的每一者间分布稍后的请求。其他服务器220可以类似地将请求转发到托管中介重复的附加的已知服务器220,从而使得后续请求能够在分区的中介重复间分布。
参考图11C,描绘了用于在容器服务器220的对等式配置内实现垃圾收集的说明***互。具体地,每一容器220可以被配置成维护未解决的分区拷贝指令的队列落在或低于上阈值水平(例如,如以上参考图11A和图11B所述),并且落在或高于下阈值水平。可以以类似于上文讨论的上阈值水平的方式,例如相对于每一服务器处的未解决请求的最小数目或者完成所有未解决分区拷贝请求所需的最小时间来指定下阈值水平。在一些情况下,下阈值水平可以被设置为零,使得容器服务器220被配置成仅当在服务器220处不存在拷贝分区的未解决请求时,才删除分区的中介重复。在一些情况下,给定服务器220被配置成仅在已知没有“下游”服务器220维护中介重复时删除中介重复,其中下游服务器220是指给定服务器220在其上导致创建中介重复的服务器220。
在图11C中,假设两个容器服务器220(服务器220B和220N)在交互(9')和(9″)处检测到服务器220处的未解决请求低于下阈值水平。因而,在(10')和(10″)处,服务器220删除中介重复,从而释放服务器220的计算资源。另外,在(11')和(11″)处,服务器220向“上游”服务器220报告它们的中介重复的删除,其中相对于给定服务器220的上游服务器220是指导致给定服务器220创建中介重复的服务器220。另外,在交互(11')和(11″)中,服务器220向上游服务器220传送服务器220的任何剩余分区拷贝指令。因此,上游服务器220可以被视为采用服务器220的工作负载,在所述工作负载下,未解决的拷贝指令低于下阈值。
如上文关于图11C所述,虽然上文讨论的实施方案涉及基于未解决的分区拷贝请求删除中介重复,但是可以使用附加的或替代的度量来确定是否删除中介重复。例如,容器服务器220可以获得或确定对由中介重复表示的分区的拷贝请求的历史使用情况,并且从此类历史使用情况预测分区的未来拷贝请求(例如,通过将历史使用情况投射到未来时间)。随后,容器服务器220可以仅在分区的预测的未来拷贝请求(例如,在未来一段时间内)低于阈值水平时,用于删除其中介重复。在一个实施方案中,可以至少部分地基于容器服务器220删除和重新产生中介重复分区所需的时间来设置未来时间段。因此,例如,如果未来的分区拷贝请求被预测为足以保证在比删除和重新产生中介重复分区所需的时间更少的时间内使用中介重复分区,则容器服务器220可以确定不应该删除中介重复分区。
参考图12,描绘了说明性例程1200,用于利用一个或多个中介重复来促进卷(或卷的一部分)到一组目标卷的大量重复。例如,例程1220可以由托管该卷的高度分布式副本的一组容器服务器220独立地或与计算***120的其他元件(诸如分布式副本协调器205)相结合来执行。
例程1200开始于1202,其中容器服务器220或协调器205接收将卷的一个或多个分区拷贝到一组目标卷的请求。如上所述,所述请求可以由例如用户通过计算***120的API提交,并且可以识别例如存储在一个或多个分区内的要拷贝到一组目标卷的信息。
在方框1204,容器服务器220为一个或多个分区中的每一者产生一个或多个中介重复分区,以用于促进所请求的拷贝。在一个实施方案中,根据例如上文图10A-图10C的交互,中介重复分区由诸如副本协调器205的集中式权威机构创建。在另一实施方案中,根据例如上文图11A-图11C的交互,中介重复分区经由容器服务器220的对等式交互来创建。
在方框1206,拷贝一个或多个分区的请求在托管中介重复的服务器220间被划分。在一个实施方案中,根据例如上文图10A-图10C的交互,诸如副本协调器205之类的集中式权威机构进行操作来在托管中介重复的服务器220间划分请求。在另一实施方案中,根据例如上文图11A-图11C的交互,服务器220以对等方式交互,以在服务器220间划分请求。
在方框1208,由服务器220进行分区拷贝操作,以将一个或多个分区的信息(如包括在例如分区的初始拷贝或分区的中介重复内)拷贝到目标卷。因为分区拷贝操作可以至少部分并行地实现,并且因为中介重复的数目相对于目标卷的数目可以很高(可能与目标卷成1比1的比率),所以相对于仅使用一个或多个分区的初始拷贝而没有中介重复,分区拷贝操作可以快速完成。
在方框1210,服务器220执行垃圾收集以删除服务器220上的过多中介重复。根据例如上文图10C的交互,垃圾收集可以例如通过集中式权威机构来促进。在另一实施方案中,根据例如上文图11C的交互,服务器220以对等方式交互以实现垃圾收集。例程1200然后可以结束。
虽然例程1200在上文被描述为基于用户请求说明性地发起,但在一些实施方案中,例程1200可以通过替代机制来实现。说明性地,例程1200可以被实现为用于响应于从目标卷读取特定分区的数据的用户请求来提供所述分区的快速重复的机制。例如,考虑一个实例,其中用户请求将初始卷(例如,由主要、次要和第三副本表示,每一副本可以分成多个分区)拷贝到一大组目标卷(例如,数百或数千个卷)。在本公开的一个实施方案中,块存储服务器105可以基于现有分区(例如,主要、次要和第三副本的分区)发起一组拷贝操作,尽管预期此类拷贝操作可能需要大量时间来从现有分区产生该组目标卷。然而,块存储服务器105可以进一步通知用户初始卷的数据在该组目标卷上可用,甚至在该组拷贝操作完成之前。块存储服务器105还可以通过发起将数据从初始卷的分区拷贝到读取卷的请求来响应于对该组目标卷的卷的读取请求。说明性地,如果在该组目标卷的卷处接收到足够数目的读取请求,则从初始卷的分区拷贝数据的对应组请求可以发起例程1200。因此,在一些情况下,例程1200的实现可以使得块存储服务器105能够响应于来自用户的读取目标卷的请求,“动态地”填充那些卷上的数据。
术语
本文描述的所有方法和任务可以由计算机***执行并完全自动化。在一些情况下,计算机***可以包括多个不同的计算机或计算装置(例如,物理服务器、工作站、存储阵列、云计算资源等),它们通过网络进行通信和互操作以执行所描述的功能。每一此类计算装置通常包括执行存储在存储器或其他非暂时性计算机可读存储介质或装置(例如,固态存储装置、磁盘驱动器等)中的程序指令或模块的处理器(或多个处理器)。本文所公开的各种功能可以在这样的程序指令中具体化,或可以在计算机***的专用电路(例如,ASIC或FPGA)中实现。在计算机***包括多个计算装置的情况下,这些装置可以但不必是同位的。所公开的方法和任务的结果可以通过将诸如固态存储器芯片或磁盘的物理存储装置变换成不同的状态来持久地存储。在一些实施方案中,计算机***可以是基于云的计算***,其处理资源由多个不同的商业实体或其他用户共享。
过程230、320、410、505A、505B和901可以响应于事件而开始,诸如根据预定或动态确定的时间表、当由用户或***管理员启动时根据需求、或者响应于某一其他事件。当发起过程230、320、410、505A、505B、901或1201时,存储在一个或多个非暂时性计算机可读介质(例如,硬盘驱动器、快闪存储器、可移除介质等)上的一组可执行程序指令可以被加载到服务器或其他计算装置的存储器(例如,RAM)中。可执行指令然后可以由计算装置的基于硬件的计算机处理器执行。在一些实施方案中,过程230、320、410、505A、505B、901、1201或其部分可以串行或并行地在多个计算装置和/或多个处理器上实现。
根据实施方案,本文描述的任何过程或算法的特定动作、事件或功能可以以不同的顺序执行,可以被添加、合并或一起省略(例如,并非所有描述的操作或事件对于算法的实践都是必要的)。此外,在特定实施方案中,操作或事件可以同时执行,例如,通过多线程处理、中断处理或多个处理器或处理器核或在其他并行架构上执行,而不是依序执行。
结合本文公开的实施方案描述的各种说明性逻辑块、模块、例程和算法步骤可以实现为电子硬件(例如,ASIC或FPGA装置)、运行在计算机硬件上的计算机软件或两者的组合。此外,结合本文公开的实施方案描述的各种说明性逻辑块和模块可以由机器来实现或执行,诸如处理器装置、数字信号处理器(“DSP”)、专用集成电路(“ASIC”)、现场可编程门阵列(“FPGA”)或其他可编程逻辑装置、离散门或晶体管逻辑、离散硬件部件或其被设计成执行本文描述的功能的任何组合。处理器装置可以是微处理器,但在替代方案中,处理器装置可以是控制器、微控制器或状态机、其组合等。处理器装置可以包括电子电路,其被配置为处理计算机可执行指令。在另一个实施方案中,处理器装置包括FPGA或其它可编程装置,其执行逻辑操作,而不处理计算机可执行指令。处理器装置还可以被实现为计算装置的组合,例如DSP和微处理器的组合、多个微处理器、一个或多个微处理器连同DSP核或任何其它这种配置。虽然本文主要是关于数字技术进行描述的,但是处理器装置也可以主要包括模拟部件。例如,本文所述的渲染技术中的一些或所有可以在模拟电路或混合的模拟和数字电路中实现。计算环境可以包括任何类型的计算机***,略举几例,其包括但不限于基于微处理器的计算机***、大型计算机、数字信号处理器、便携式计算装置、装置控制器或设备内的计算引擎。
结合本文公开的实施方案描述的方法、过程、例程或算法的元素可以直接体现在硬件中、由处理器装置执行的软件模块中或者两者的组合中。软件模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或任何其他形式的非暂时性计算机可读存储介质中。示例存储介质可以耦合到处理器装置,使得处理器装置可以从存储介质读取信息以及将信息写入存储介质。在替代方案中,存储介质可与处理器装置成一体。处理器装置和存储介质可以驻留在ASIC中。ASIC可以驻留在用户终端中。在替代方案中,处理器装置和存储介质可以作为离散部件而驻留在用户终端中。
本文使用的条件语言,诸如“可以”、“可能”、“能够”、“可”、“例如”等,除非另外特别说明,或者在所使用的上下文中以其他方式理解,通常旨在传达某些实施方案包括某些特征、元件或步骤,而其他实施方案不包括某些特征、元件或步骤。因此,这种条件语言通常不旨在暗示无论如何所述特征、元件或步骤都是一个或多个实施方案必需的,或者并非暗示一个或多个实施方案必须包括用于在借助或不借助其他输入或提示下决定是否包括这些特征、元件或步骤或者是否在任何特定实施方案中执行这些特征、元件或步骤的逻辑。术语“包括(comprising)”、“包括(including)”、“具有”等是同义的,并且以开放形式作为包括性使用,且不排除附加的元件、特征、动作、操作等。此外,术语“或”以其包括性意义(而不是以其排他性意义)使用,使得当例如用于连接元素的列表时,术语“或”表示列表中元素中的一个、一些或所有。
除非另有特别说明,否则分离性语言诸如短语“X、Y或Z中的至少一个”在上下文中应理解为通常使用的情况以表示项目、项等可以是X、Y或Z或其任何组合(例如,X、Y或Z)。因此,这样的分离性语言通常不旨在且不应暗示某些实施例要求X中的至少一个、Y中的至少一个以及Z中的至少一个每一个都存在。
虽然上文详细描述已经示出、描述并指出了应用于各种实施方案的新颖特征,但是可以理解,在不脱离本公开的精神的情况下,可以对所示装置或算法的形式和细节进行各种省略、替换和改变。如可以认识到的,本文所述的某些实施方案可以在不提供本文阐述的所有特征和益处的形式内具体化,这是因为一些特征可以与其他相分离地进行使用或实践。在所述权利要求的等效物的含义和范围内的所有变化都将包含在所述权利要求的范围内。
可以鉴于以下几组条款来较佳理解上述类容:
条款1.一种***,其包括:
第一组服务器,其上存储有卷的主要副本的第一数目的分区;
与所述第一服务器数据通信的第二组服务器,所述第二组服务器上存储有与所述主要副本同步接收更新的所述卷的次要副本,其中所述第一组服务器和所述第二组服务器中的一者或两者配置有计算机可执行指令,以处置用户发起的对所述卷的读取或写入;以及
与所述第一组服务器和所述第二组服务器中的一者或两者数据通信的多个附加服务器,所述多个附加服务器在其上共同存储有与所述主要副本异步接收所述更新的所述卷的第三副本,其中所述第三副本被存储为分布在所述多个附加服务器间的第二数目的分区,其中所述多个附加服务器配置有计算机可执行指令,以通过使用所述第三副本来处置所述卷的复制,并且其中所述第二数目的分区大于所述第一数目的分区。
条款2.根据条款1所述的***,其中所述第一组服务器、所述第二组服务器和所述多个附加服务器被配置成使用块存储来存储所述卷,其中所述第三副本的所述第二数目的分区中的每一者代表所述卷的至少一个块。
条款3.根据条款1所述的***,其中所述多个附加服务器配置有所述计算机可执行指令,以通过并行传输所述第二数目的分区中的多个分区的数据来处置所述卷的所述复制。
条款4.根据条款1所述的***,其中所述第二数目的分区在所述多个附加服务器上进行条带化,使得代表所述卷的第一部分的第一分区和代表所述卷中与所述第一部分是连续的第二部分的第二分区被存储在所述多个附加服务器的不同服务器上。
条款5.根据条款1所述的***,其还包括由计算机可执行指令配置的记录器机群,以:
接收来自所述主要副本和所述次要副本中的一者或两者的所述更新;以及
将所述更新异步地传播到所述第三副本。
条款6.根据条款1所述的***,其还包括:
实现所述***的控制平面的计算装置;以及
由所述控制平面建立的第三组服务器,用以使用所述第一数目的分区存储所述卷的新拷贝,其中所述第三组服务器的所述第一数目的分区中的每一者从所述多个附加服务器检索所述第二数目的分区中的某些分区的数据,以使用所述第三副本产生所述卷的所述新拷贝。
条款7.根据条款6所述的***,其还包括第三服务器,其托管与所述主要副本数据通信的计算资源,并且被配置成从所述主要副本访问所述卷的所述数据,其中所述第三服务器被配置有计算机可执行指令,以在所述主要副本不可用的情况下故障转移到所述次要副本,并且其中实现所述控制平面的所述计算装置被配置成创建所述卷的所述新拷贝作为新的次要副本。
条款8.一种计算机实现的方法,其包括:
使用第一组服务器上的第一数目的分区存储卷的主要副本;
使用第二组服务器上的所述第一数目的分区存储所述卷的次要副本,其中所述第一组服务器和所述第二组服务器中的一者或两者配置有计算机可执行指令,以经由对所述主要和次要副本的修改来处置用户发起的对所述卷的读取或写入;以及
至少通过以下操作来创建所述卷的第三副本:
将所述卷的数据分为第二数目的分区,其中所述第二数目的分区大于所述第一数目的分区,并且
在多个附加服务器上分布所述第二数目的分区,
其中所述多个附加服务器配置有计算机可执行指令,以通过使用所述第三副本来处置所述卷的复制。
条款9.根据条款8所述的计算机实现的方法,其还包括:
同步地更新所述主要副本和所述次要副本;以及
用对所述主要副本的更新异步地更新所述第三副本。
条款10.根据条款9所述的计算机实现的,其中异步地更新所述第三副本包括:
在记录器机群处接收所述更新;
在所述记录器机群处存储所述更新,直到它们可以被应用到所述第三副本;以及
连续地将所述更新应用于所述第二数目的分区中的指定分区。
条款11.根据条款8所述的计算机实现的,其中创建所述第三副本还包括:
从至少一个对象存储服务器检索所述卷的所述数据;
对于所述第二数目的分区的每一分区:
选择所述多个附加服务器中的服务器来存储所述分区,并且
使所述分区被发送到所述所选服务器以存储在所述所选服务器上;以及
为所述第二数目的分区中的每一分区创建识别所述分区的位置信息的清单。
条款12.根据条款8所述的计算机实现的方法,其中在所述多个附加服务器上分布所述第二数目的分区包括在所述多个附加服务器上对所述第二数目的分区进行条带化。
条款13.根据条款8所述的计算机实现的方法,其还包括:
确定创建所述卷的快照;以及
使所述第二数目的分区中的每一者被发送到至少一个对象存储服务器以创建所述快照,其中所述第二数目的分区中的至少一些被彼此并行地发送。
条款14.根据条款8所述的计算机实现的方法,其还包括:
确定创建所述卷的新副本;以及
使所述第二数目的分区中的每一者被发送到一个或多个第三服务器以创建所述新副本,其中所述第二数目的分区中的至少一些被彼此并行地发送到所述第三服务器。
条款15.一种存储指令的非暂时性计算机可读介质,所述指令在由计算***执行时使所述计算***执行包括以下各项的操作:
在所述计算***的第一组存储装置上存储卷的第一副本,其中所述第一组存储装置配置有计算机可执行指令,以经由对所述第一副本的修改来处置用户发起的对所述卷的读取或写入;以及
至少通过以下操作来创建所述卷的第二副本:
将所述卷的数据分为多个分区,并且
在所述计算***的第二组存储装置上分布所述多个分区,其中所述第二组存储装置配置有计算机可执行指令,以便于通过使用所述第二副本在所述计算***内重复所述卷,并且其中所述多个分区的数目大于所述第一组存储装置的数目。
条款16.根据条款15所述的非暂时性计算机可读介质,所述操作还包括用对所述第一副本的更新异步地更新所述第二副本。
条款17根据条款16所述的非暂时性计算机可读介质其中异步地更新所述第二副本包括:
在记录器机群处接收所述更新;
在所述记录器机群处存储所述更新,直到它们可以被应用到所述第二副本;以及
连续地将所述更新应用于所述多个分区中的指定分区。
条款18.根据条款15所述的非暂时性计算机可读介质,其中创建所述第二副本还包括:
从至少一个对象存储服务器检索所述卷的所述数据;
对于所述多个分区的每一分区:
选择所述第二组存储装置中的存储装置用于存储所述分区,
将所述分区路由到所选择的存储装置,并且
将所述分区存储在所述所选择存储装置的容器中;以及
为所述多个分区中的每一分区创建识别其中存储所述分区的所述容器的清单。
条款19.根据条款15所述的非暂时性计算机可读介质,其中在所述第二组存储装置上分布所述多个分区包括在所述第二组存储装置上对所述多个分区进行条带化。
条款20.根据条款15所述的非暂时性计算机可读介质,所述操作还包括:
确定创建所述卷的快照,其中所述快照是存储在至少一个对象存储服务器上的所述卷的对象表示;以及
将所述多个分区中的每一者推送到所述至少一个对象存储服务器以创建所述快照,其中所述多个分区中的至少一些被并行推送到所述至少一个对象存储服务器。
条款21.一种计算***,其包括:
第一组服务器,其上存储有卷的主要副本,所述第一组服务器对应于存储所述主要副本的第一数目的分区;
与所述第一服务器数据通信的第二组服务器,所述第二组服务器上存储有与所述主要副本同步接收更新的所述卷的次要副本,所述第二组服务器对应于存储所述次要副本的所述第一数目的分区;以及
与所述第一组服务器和所述第二组服务器中的一者或两者数据通信的多个附加服务器,所述多个附加服务器在其上共同存储有与所述主要副本异步接收所述更新的所述卷的第三副本,其中所述第三副本被存储为分布在所述多个附加服务器间的第二数目的分区,并且其中所述第二数目的分区大于所述第一数目的分区;
其中:
所述第一组服务器和所述第二组服务器中的一者或两者配置有计算机可执行指令,以:
经由对所述主要副本和所述次要副本的修改来处置用户发起的对所述卷的写入,并且
使用所述用户发起的对所述卷的写入来更新所述第三副本;以及
响应于接收到创建所述卷的备份的请求,所述多个附加服务器配置有计算机可执行指令,以通过使用所述第三副本在所述计算***内创建所述卷的所述备份。
条款22.根据条款21所述的计算***,其中所述多个附加服务器配置有所述计算机可执行指令,通过并行传输所述第二数目的分区的至少一部分的数据到被配置用于存储所述备份的至少一个其他服务器来创建所述卷的所述备份。
条款23.根据条款21所述的计算***,其中为了创建所述备份,所述多个附加服务器配置有所述计算机可执行指令,以将所述第二数目的分区的指定分区发送到一个或多个对象存储服务器,所述一个或多个对象存储服务器被配置成使用对象存储来存储所述指定分区。
条款24.根据条款23所述的计算***,其中所述第一组服务器和所述第二组服务器中的一者或两者配置有计算机可执行指令以创建备份映射,所述备份映射列出自从创建所述卷的先前备份以来已经改变的所述卷的任何块,并且其中所述多个附加服务器配置有所述计算机可执行指令,以使用所述备份映射来识别所述指定分区。
条款25.根据条款21所述的计算***,其中所述第一组服务器配置有计算机可执行指令,以:
接收用户备份请求;以及
将所述用户备份请求传播到所述多个附加服务器。
条款26.根据条款24所述的计算***,其中所述多个附加服务器配置有所述计算机可执行指令,以响应于接收到所述用户备份请求,将所述第二数目的分区中的至少一些的数据传输到被配置用于存储所述备份的至少一个其他服务器。
条款27.根据条款24所述的计算***,其中:
所述多个附加服务器配置有所述计算机可执行指令,以响应于接收到所述用户备份请求,创建所述第三副本的拷贝,所述第三副本的所述拷贝使使用所述第二数目的分区存储的所述卷的所述数据共同存储在第三组服务器上;以及
所述第三组服务器配置有所述计算机可执行指令,以将所述第二数目的分区中的至少一些的数据传输到被配置用于存储所述备份的至少一个其他服务器。
条款28.一种计算机实现的方法,其包括:
使用第一组服务器上的第一数目的分区存储卷的主要副本;
使用第二组服务器上的所述第一数目的分区存储所述卷的次要副本;
至少通过以下操作来创建所述卷的第三副本:
将所述卷的数据分为第二数目的分区,其中所述第二数目的分区大于所述第一数目的分区,并且
在多个附加服务器上分布所述第二数目的分区;
经由对所述主要和次要副本的修改来处置用户发起的对所述卷的写入;
使用所述用户发起的对所述卷的写入来更新所述第三副本;
接收创建所述卷的备份的用户备份请求;
将所述用户备份请求传播到所述第三副本;以及
通过使用所述第三副本来创建所述卷的备份。
条款29.根据条款28所述的计算机实现的方法,其中创建所述备份包括并行传输来自所述第二数目的分区中的至少一些的数据。
条款30.根据条款28所述的计算机实现的方法,其还包括:
在所述主要副本处接收用户备份请求;
将所述用户备份请求从所述主要副本传播到所述第三副本;以及
响应于在所述第三副本接收到所述用户备份请求来创建所述备份。
条款31.根据条款28所述的计算机实现的,其中创建所述备份包括:
创建所述第三副本的拷贝,所述第三副本的所述拷贝使使用所述第二数目的分区存储的所述卷的所述数据共同存储在第三组服务器上;以及
将所述第三副本的所述拷贝的所述第二数目的分区中的至少一些的数据传输到被配置用于存储所述备份的至少一个其他服务器。
条款32.根据条款31所述的计算机实现的,其还包括:
接收对所述主要副本的更新;以及
当所述第三副本的所述拷贝正向所述至少一个其他服务器传输所述数据时,将所述更新连续地应用于所述第三副本的所述第二数目的分区中的指定分区。
条款33.根据条款28所述的计算机实现的,其中创建所述备份包括:
接收对所述主要副本的更新;
存储所述更新,直到从所述第三副本创建所述备份;以及
在创建所述备份之后,连续地将所述更新应用于所述第二数目的分区中的指定分区。
条款34.根据条款33所述的计算机实现的,其还包括:
在所述主要副本处接收所述备份已经被创建的确认;以及
响应于接收到所述确认,连续地将所述更新应用于所述第二数目的分区中的所述指定分区。
条款35.一种存储指令的非暂时性计算机可读介质,所述指令在由计算***执行时使所述计算***执行包括以下各项的操作:
将卷的第一副本存储在所述计算***的第一组存储装置上;
至少通过以下操作来创建所述卷的第二副本:
将所述卷的数据分为多个分区,并且
在所述计算***的第二组存储装置上分布所述多个分区,其中所述多个分区的数目大于所述第一组存储装置的数目;
经由对所述第一副本的修改来处置用户发起的对所述卷的写入;
使用所述用户发起的对所述卷的写入来更新所述第二副本;
接收创建所述卷的备份的用户备份请求;
将所述用户备份请求传播到所述第二副本;以及
通过使用所述第二副本在所述计算***内创建所述卷的备份。
条款36.根据条款35所述的非暂时性计算机可读介质,所述操作还包括并行地从所述第二组存储装置中的至少一些传输所述第二副本的数据。
条款37.根据条款35所述的非暂时性计算机可读介质,所述用于创建所述备份的操作还包括:
创建所述第二副本的拷贝,所述第二副本的所述拷贝使使用所述第二数目的分区存储的所述卷的所述数据共同存储在第三组存储装置上;以及
将所述第二副本的所述拷贝的所述多个分区中的至少一些的数据传输到被配置用于存储所述备份的至少一个其他服务器。
条款38.根据权利要求37所述的非暂时性计算机可读介质,所述操作还包括:
接收对所述第一副本的更新;以及
当所述第二副本的所述拷贝正向所述至少一个其他服务器传输所述数据时,将所述更新连续地应用于所述第二副本的所述多个分区中的指定分区。
条款39.根据条款35所述的非暂时性计算机可读介质,所述操作还包括:
接收对所述第一副本的更新;
存储所述更新,直到从所述第二副本创建所述备份;以及
在创建所述备份之后,连续地将所述更新应用于所述多个分区中的指定分区。
条款40.根据条款35所述的非暂时性计算机可读介质,所述操作还包括:
将所述卷的所述第一副本存储为一个或多个块;
将所述卷的所述备份作为一个或多个对象存储在至少一个对象存储服务器上;以及
创建将所述卷的块映射到所述至少一个对象存储服务器上的对应位置的清单。
条款41.一种***,其包括:
实现数据卷的分布式副本的一组服务器计算装置,所述分布式副本包括分布在所述组服务器计算装置中的至少一些间的一组分区,其中所述分布式副本被指定用于所述数据卷的复制,并且不同于被指定用于处置对所述数据卷的修改的附加副本;以及
协调器计算装置,其配置有计算机可执行指令以:
接收指示所述组分区中的分区内的信息将被拷贝到一组目标卷的一个或多个请求;
确定将所述分区内的所述信息拷贝到所述组目标卷所需的拷贝操作的数目满足阈值;
重复所述组服务器计算装置内的所述分区,以产生中介重复分区;
并行地发起一组拷贝操作,将所述信息从所述中介重复分区拷贝到所述组目标卷。
条款42.根据条款41所述的***,其中所述一个或多个请求指示所述卷的整体将被拷贝到所述组目标卷,并且其中重复所述分区以产生中介重复分区还包括重复所述组分区以产生中介重复组的分区。
条款43.根据条款41所述的***,其中所述阈值至少部分地基于利用所述分区完成所述数目的拷贝操作的预期时间。
条款44.根据条款41所述的***,其中所述组拷贝操作还包括从所述分区到所述组目标卷的拷贝操作。
条款45.根据条款41所述的***,其中所述组拷贝操作对应于将所述信息从所述中介重复分区拷贝到所述组目标卷的第一子集的第一组拷贝操作,并且其中所述控制器计算装置还配置有计算机可执行指令,以并行地发起将所述信息从所述中介重复分区拷贝到所述组目标卷的第二子集的第二组拷贝操作。
条款46.一种计算机实现的方法,其包括:
实现数据卷的分布式副本,所述分布式副本包括分布在一组服务器计算装置中的至少一些间的一组分区,其中所述分布式副本被指定用于所述数据卷的复制,并且不同于被指定用于处置对所述数据卷的修改的附加副本;
接收所述组分区中的分区内的信息将被拷贝到一组网络装置的指示;
在所述组服务器计算装置内重复所述分区,以产生中介重复分区;
并行地发起一组拷贝操作,将所述信息从所述中介重复分区拷贝到所述组网络装置。
条款47.根据条款46所述的计算机实现的方法,其中在所述组服务器计算装置中的托管所述分区的第一服务器计算装置处接收所述指示,并且其中在所述组服务器计算装置内重复所述分区包括在所述第一服务器计算装置处选择所述组服务器计算装置中的第二服务器计算装置,在所述第二服务器计算装置上产生所述中介重复分区的第一中介重复分区。
条款48.根据条款47所述的计算机实现的方法,其还包括,由所述第一服务器计算装置指示所述第二服务器计算装置发起所述组拷贝操作的至少一部分。
条款49.根据条款48所述的计算机实现的方法,其还包括在所述第二服务器计算装置处:
选择所述组服务器计算装置中的第三服务器计算装置,在所述第三服务器计算装置上产生所述中介重复分区的第二中介重复分区;以及
指示所述第三服务器计算装置发起所述组拷贝操作的至少一部分。
条款50.根据条款48所述的计算机实现的方法,其还包括在所述第二服务器计算装置处:
检测关于在所述第二服务器计算装置处未完成的所述第一中介重复分区的拷贝操作的数目低于阈值水平;
从所述第二计算装置删除所述第一中介重复分区;以及
通知所述第一服务器计算装置所述第一中介重复分区已经从所述第二计算装置中删除。
条款51.根据条款46所述的计算机实现的方法,其中所述指示在控制器计算装置处接收,其中所述分区托管在所述组服务器计算装置的第一服务器计算装置处,并且其中在所述组服务器计算装置内重复所述分区包括在所述控制器计算装置处:
选择所述组服务器计算装置中的第二服务器计算装置,以托管所述中介重复分区的第一中介重复分区;以及
向所述第一服务器计算装置传输指令以至少部分地将所述分区重复到所述第二服务器计算装置来创建所述第一中介重复分区。
条款52.根据条款51所述的计算机实现的方法,其还包括在所述控制器计算装置处:
接收已经创建所述第一中介重复分区的指示;
选择所述组服务器计算装置中的第三服务器计算装置,以托管所述中介重复分区的第二中介重复分区;以及
向所述第二服务器计算装置传输指令以至少部分地将所述第一中介重复分区重复到所述第三服务器计算装置来创建所述第二中介重复分区。
条款53.根据条款51所述的计算机实现的方法,其还包括在所述控制器计算装置处,指示所述第二服务器计算装置在完成所述组拷贝操作之后删除所述第一中介重复分区。
条款54.一种非暂时性计算机可读介质,其包括可在实现数据卷的分布式副本的***上执行的指令,所述分布式副本包括分布在一组服务器计算装置中的至少一些间的一组分区,其中所述分布式副本被指定用于所述数据卷的复制,并且不同于被指定用于处置对所述数据卷的修改的附加副本,并且其中所述指令可由所述***执行以:
接收所述组分区中的分区内的信息将被拷贝到一组网络装置的指示;
重复所述组服务器计算装置内的所述分区,以产生中介重复分区;
并行地发起一组拷贝操作,将所述信息从所述中介重复分区拷贝到所述组网络装置。
条款55.根据条款54所述的非暂时性计算机可读介质,其中所述指令还可由所述***执行,以确定将所述分区内的所述信息拷贝到所述组网络装置所需的拷贝操作的数目满足阈值。
条款56.根据条款55所述的非暂时性计算机可读介质,其中所述阈值至少部分地基于利用所述分区完成所述数目的拷贝操作的预期时间。
条款57.根据条款54所述的非暂时性计算机可读介质,其中所述组拷贝操作还包括从所述分区到所述组目标卷的拷贝操作。
条款58.根据条款54所述的非暂时性计算机可读介质,其中所述指令可由所述***执行,以至少部分地通过以下方式中的至少一者来在所述组服务器计算装置内重复所述分区:使集中式装置指示所述组服务器计算装置重复所述分区,或者发起所述组服务器计算装置之间的对等式通信以使在所述组服务器计算装置内重复所述分区从而产生中介重复分区。
条款59.根据条款54所述的非暂时性计算机可读介质,其中所述指令还可由所述***执行,以确定将所述分区拷贝到所述组网络装置所需的未解决的拷贝操作的数目处于或低于阈值水平,并删除所述中介重复分区。
条款60.根据条款59所述的非暂时性计算机可读介质,其中所述指令还可由所述***执行,以在删除所述中介重复分区之前,确定预测在未来时间段内发生的拷贝所述分区的请求的未来数目处于或低于阈值水平。
条款61.根据条款59所述的非暂时性计算机可读介质,其中所述阈值水平至少部分地基于所述中介重复分区的数目来确定。
条款62.根据条款54所述的非暂时性计算机可读介质,其中所述分区内的所述信息将被拷贝到所述组网络装置的所述指示包括从所述组网络装置中的至少一者读取所述信息的请求。
应当强调的是,可以对上述实施方案进行许多变化和修改,这些实施方案的要素应被理解为在其他可接受的示例间。所有此类修改和变化都旨在包括在本公开的范围内,并由所附权利要求保护。
Claims (15)
1.一种计算***,其包括:
第一组服务器,其上存储有卷的主要副本的第一数目的分区;
与所述第一服务器数据通信的第二组服务器,所述第二组服务器上存储有与所述主要副本同步接收更新的所述卷的次要副本,其中所述第一组服务器和所述第二组服务器中的一者或两者配置有计算机可执行指令,以处置用户发起的对所述卷的读取或写入;以及
与所述第一组服务器和所述第二组服务器中的一者或两者数据通信的多个附加服务器,所述多个附加服务器在其上共同存储有与所述主要副本异步接收所述更新的所述卷的第三副本,其中所述第三副本被存储为分布在所述多个附加服务器间的第二数目的分区,其中所述多个附加服务器配置有计算机可执行指令,以通过使用所述第三副本来处置所述卷的复制,并且其中所述第二数目的分区大于所述第一数目的分区。
2.根据权利要求1所述的计算***,其中:
所述第一组服务器和所述第二组服务器中的一者或两者配置有计算机可执行指令,以:
经由对所述主要副本和所述次要副本的修改来处置用户发起的对所述卷的写入,并且
使用所述用户发起的对所述卷的写入来更新所述第三副本。
3.根据权利要求2所述的计算***,其中:
响应于接收到创建所述卷的备份的请求,所述多个附加服务器配置有计算机可执行指令,以通过使用所述第三副本在所述计算***内创建所述卷的所述备份。
4.根据权利要求3所述的计算***,其中为了创建所述备份,所述多个附加服务器配置有所述计算机可执行指令,以将所述第二数目的分区的指定分区发送到一个或多个对象存储服务器,所述一个或多个对象存储服务器被配置成使用对象存储来存储所述指定分区。
5.根据权利要求1所述的计算***,其中所述第一组服务器、所述第二组服务器和所述多个附加服务器被配置成使用块存储来存储所述卷,其中所述第三副本的所述第二数目的分区中的每一者代表所述卷的至少一个块。
6.根据前述权利要求中任一项所述的计算***,其中所述多个附加服务器配置有所述计算机可执行指令,以通过并行传输所述第二数目的分区中的至少一部分的数据来处置所述卷的所述复制。
7.根据权利要求1所述的计算***,其中所述第二数目的分区在所述多个附加服务器上进行条带化,使得代表所述卷的第一部分的第一分区和代表所述卷的与所述第一部分是连续的第二部分的第二分区被存储在所述多个附加服务器的不同服务器上。
8.根据前述权利要求中任一项所述的计算***,其还包括由计算机可执行指令配置的记录器机群,以:
接收来自所述主要副本和所述次要副本中的一者或两者的所述更新;以及
将所述更新异步地传播到所述第三副本。
9.根据前述权利要求中任一项所述的计算***,其还包括:
实现所述计算***的控制平面的计算装置;以及
由所述控制平面建立的第三组服务器,用以使用所述第一数目的分区存储所述卷的新拷贝,其中所述第三组服务器的所述第一数目的分区中的每一者从所述多个附加服务器检索所述第二数目的分区中的某些分区的数据,以使用所述第三副本产生所述卷的所述新拷贝。
10.一种计算机实现的方法,其包括:
实现数据卷的分布式副本,所述分布式副本包括分布在一组服务器计算装置中的至少一些间的一组分区,其中所述分布式副本被指定用于所述数据卷的复制,并且不同于被指定用于处置对所述数据卷的修改的附加副本;
接收所述组分区中的分区内的信息将被拷贝到一组网络装置的指示;
在所述组服务器计算装置内重复所述分区,以产生中介重复分区;以及
并行地发起一组拷贝操作,将所述信息从所述中介重复分区拷贝到所述组网络装置。
11.根据权利要求10所述的计算机实现的方法,其中在所述组服务器计算装置中托管所述分区的第一服务器计算装置处接收所述指示,并且其中在所述组服务器计算装置内重复所述分区包括在所述第一服务器计算装置处选择所述组服务器计算装置中的第二服务器计算装置,在所述第二服务器计算装置上产生所述中介重复分区的第一中介重复分区。
12.根据权利要求11所述的计算机实现的方法,其还包括,由所述第一服务器计算装置指示所述第二服务器计算装置发起所述组拷贝操作的至少一部分。
13.根据权利要求12所述的计算机实现的方法,其还包括在所述第二服务器计算装置处:
选择所述组服务器计算装置中的第三服务器计算装置,在所述第三服务器计算装置上产生所述中介重复分区的第二中介重复分区;以及
指示所述第三服务器计算装置发起所述组拷贝操作的至少一部分。
14.根据权利要求10所述的计算机实现的方法,其中所述指示在控制器计算装置处接收,其中所述分区托管在所述组服务器计算装置的第一服务器计算装置处,并且其中在所述组服务器计算装置内重复所述分区包括在所述控制器计算装置处:
选择所述组服务器计算装置中的第二服务器计算装置,以托管所述中介重复分区的第一中介重复分区;以及
向所述第一服务器计算装置传输指令以至少部分地将所述分区重复到所述第二服务器计算装置来创建所述第一中介重复分区。
15.根据权利要求14所述的计算机实现的方法,其还包括在所述控制器计算装置处:
接收已经创建所述第一中介重复分区的指示;
选择所述组服务器计算装置中的第三服务器计算装置,以托管所述中介重复分区的第二中介重复分区;以及
向所述第二服务器计算装置传输指令以至少部分地将所述第一中介重复分区重复到所述第三服务器计算装置来创建所述第二中介重复分区。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/967,023 US10768850B2 (en) | 2018-04-30 | 2018-04-30 | Distributed replica for block storage systems |
US15/967,284 US11023157B2 (en) | 2018-04-30 | 2018-04-30 | Intermediary duplication to facilitate copy requests in distributed storage systems |
US15/967,025 US10459655B1 (en) | 2018-04-30 | 2018-04-30 | Rapid volume backup generation from distributed replica |
US15/967,023 | 2018-04-30 | ||
US15/967,284 | 2018-04-30 | ||
US15/967,025 | 2018-04-30 | ||
PCT/US2019/028320 WO2019212768A1 (en) | 2018-04-30 | 2019-04-19 | Distributed replica for block storage systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112470112A true CN112470112A (zh) | 2021-03-09 |
CN112470112B CN112470112B (zh) | 2024-05-10 |
Family
ID=66530441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980031641.4A Active CN112470112B (zh) | 2018-04-30 | 2019-04-19 | 块存储***的分布式副本 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP3788466A1 (zh) |
JP (1) | JP7171757B2 (zh) |
KR (1) | KR102547126B1 (zh) |
CN (1) | CN112470112B (zh) |
AU (1) | AU2019262799B2 (zh) |
WO (1) | WO2019212768A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113655964A (zh) * | 2021-08-19 | 2021-11-16 | 北京神州新桥科技有限公司 | 数据卷的处理方法、装置、电子设备、介质及程序产品 |
US11182095B2 (en) | 2018-04-30 | 2021-11-23 | Amazon Technologies, Inc. | Rapid volume backup generation from distributed replica |
US11343314B1 (en) | 2018-04-30 | 2022-05-24 | Amazon Technologies, Inc. | Stream-based logging for distributed storage systems |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452296B1 (en) | 2018-03-23 | 2019-10-22 | Amazon Technologies, Inc. | Accelerated volumes |
US11023157B2 (en) | 2018-04-30 | 2021-06-01 | Amazon Technologies, Inc. | Intermediary duplication to facilitate copy requests in distributed storage systems |
US10956442B1 (en) | 2018-07-30 | 2021-03-23 | Amazon Technologies, Inc. | Dedicated source volume pool for accelerated creation of block data volumes from object data snapshots |
US10931750B1 (en) | 2018-07-30 | 2021-02-23 | Amazon Technologies, Inc. | Selection from dedicated source volume pool for accelerated creation of block data volumes |
US11068192B1 (en) | 2019-03-26 | 2021-07-20 | Amazon Technologies, Inc. | Utilizing mutiple snapshot sources for creating new copy of volume in a networked environment wherein additional snapshot sources are reserved with lower performance levels than a primary snapshot source |
US10983719B1 (en) | 2019-03-28 | 2021-04-20 | Amazon Technologies, Inc. | Replica pools to support volume replication in distributed storage systems |
CN111273859B (zh) * | 2020-01-14 | 2023-09-15 | 北京百度网讯科技有限公司 | 分发模式下复制组成员的变更方法、装置、设备和介质 |
CN111880740B (zh) * | 2020-07-29 | 2024-05-24 | 平安科技(深圳)有限公司 | 数据处理方法、装置、计算机***及可读存储介质 |
EP3998533B1 (en) * | 2020-11-04 | 2023-09-20 | NetApp, Inc. | On-demand parallel processing of objects using data connector components |
US11625306B2 (en) | 2020-11-04 | 2023-04-11 | Netapp, Inc. | Data connector component for implementing data requests |
US11755590B2 (en) | 2020-11-04 | 2023-09-12 | Netapp, Inc. | Data connector component for implementing integrity checking, anomaly detection, and file system metadata analysis |
CN114579039B (zh) * | 2020-12-02 | 2024-02-02 | 北京金山云网络技术有限公司 | 一种表格副本的扩展方法、***、装置及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101460931A (zh) * | 2006-05-29 | 2009-06-17 | 微软公司 | 在复制期间保留阴影副本数据 |
US20140351636A1 (en) * | 2012-02-09 | 2014-11-27 | Huawei Technologies Co., Ltd. | Method, device, and system for data reconstruction |
US20140359130A1 (en) * | 2013-06-04 | 2014-12-04 | Fujitsu Limited | Process migration method, computer system and intermediate computing resources |
CN105138435A (zh) * | 2008-08-08 | 2015-12-09 | 亚马逊技术有限公司 | 向执行中的程序提供对非本地块数据存储装置的可靠访问 |
US20160291889A1 (en) * | 2015-03-31 | 2016-10-06 | Internatinal Business Machines Corporation | System, method, and computer program product for dynamic volume mounting in a system maintaining synchronous copy objects |
CN106649891A (zh) * | 2017-02-24 | 2017-05-10 | 深圳市中博睿存信息技术有限公司 | 一种分布式数据存储方法和*** |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434994A (en) * | 1994-05-23 | 1995-07-18 | International Business Machines Corporation | System and method for maintaining replicated data coherency in a data processing system |
US8447938B2 (en) * | 2008-01-04 | 2013-05-21 | International Business Machines Corporation | Backing up a deduplicated filesystem to disjoint media |
US8261286B1 (en) | 2008-06-18 | 2012-09-04 | Amazon Technologies, Inc. | Fast sequential message store |
JP6035992B2 (ja) * | 2012-08-16 | 2016-11-30 | 日本電気株式会社 | 情報処理システム、データバックアップ方法、データバックアッププログラム |
JP2014157397A (ja) * | 2013-02-14 | 2014-08-28 | Nec Corp | 情報処理システム、情報処理装置、データバックアップ方法、及びデータ分散送信用制御プログラム |
JP2014186364A (ja) * | 2013-03-21 | 2014-10-02 | Kddi Corp | 分散システム |
JP2015005037A (ja) * | 2013-06-19 | 2015-01-08 | 富士通株式会社 | 情報処理装置、情報処理装置の制御プログラム、および情報処理装置の制御方法 |
US9720620B1 (en) * | 2014-03-11 | 2017-08-01 | Amazon Technologies, Inc. | Efficient data volume replication for block-based storage |
US9600203B2 (en) * | 2014-03-11 | 2017-03-21 | Amazon Technologies, Inc. | Reducing data volume durability state for block-based storage |
CN107533438B (zh) * | 2015-08-14 | 2020-09-08 | 慧与发展有限责任合伙企业 | 存储器***中的数据复制 |
-
2019
- 2019-04-19 EP EP19723932.0A patent/EP3788466A1/en active Pending
- 2019-04-19 AU AU2019262799A patent/AU2019262799B2/en active Active
- 2019-04-19 JP JP2020560778A patent/JP7171757B2/ja active Active
- 2019-04-19 WO PCT/US2019/028320 patent/WO2019212768A1/en unknown
- 2019-04-19 CN CN201980031641.4A patent/CN112470112B/zh active Active
- 2019-04-19 KR KR1020207033888A patent/KR102547126B1/ko active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101460931A (zh) * | 2006-05-29 | 2009-06-17 | 微软公司 | 在复制期间保留阴影副本数据 |
CN105138435A (zh) * | 2008-08-08 | 2015-12-09 | 亚马逊技术有限公司 | 向执行中的程序提供对非本地块数据存储装置的可靠访问 |
US20140351636A1 (en) * | 2012-02-09 | 2014-11-27 | Huawei Technologies Co., Ltd. | Method, device, and system for data reconstruction |
US20140359130A1 (en) * | 2013-06-04 | 2014-12-04 | Fujitsu Limited | Process migration method, computer system and intermediate computing resources |
US20160291889A1 (en) * | 2015-03-31 | 2016-10-06 | Internatinal Business Machines Corporation | System, method, and computer program product for dynamic volume mounting in a system maintaining synchronous copy objects |
CN106649891A (zh) * | 2017-02-24 | 2017-05-10 | 深圳市中博睿存信息技术有限公司 | 一种分布式数据存储方法和*** |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11182095B2 (en) | 2018-04-30 | 2021-11-23 | Amazon Technologies, Inc. | Rapid volume backup generation from distributed replica |
US11343314B1 (en) | 2018-04-30 | 2022-05-24 | Amazon Technologies, Inc. | Stream-based logging for distributed storage systems |
CN113655964A (zh) * | 2021-08-19 | 2021-11-16 | 北京神州新桥科技有限公司 | 数据卷的处理方法、装置、电子设备、介质及程序产品 |
CN113655964B (zh) * | 2021-08-19 | 2023-10-24 | 北京神州新桥科技有限公司 | 数据卷的处理方法、装置、电子设备、介质及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
AU2019262799B2 (en) | 2021-12-16 |
CN112470112B (zh) | 2024-05-10 |
AU2019262799A1 (en) | 2020-11-19 |
KR20210003217A (ko) | 2021-01-11 |
JP2021521551A (ja) | 2021-08-26 |
JP7171757B2 (ja) | 2022-11-15 |
WO2019212768A1 (en) | 2019-11-07 |
EP3788466A1 (en) | 2021-03-10 |
KR102547126B1 (ko) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112470112B (zh) | 块存储***的分布式副本 | |
US11182095B2 (en) | Rapid volume backup generation from distributed replica | |
US10768850B2 (en) | Distributed replica for block storage systems | |
US11023157B2 (en) | Intermediary duplication to facilitate copy requests in distributed storage systems | |
US11429499B2 (en) | Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including operations by a master monitor node | |
US11010240B2 (en) | Tracking status and restarting distributed replication | |
US11327799B2 (en) | Dynamic allocation of worker nodes for distributed replication | |
US20200348852A1 (en) | Distributed object replication architecture | |
US11349915B2 (en) | Distributed replication and deduplication of an object from a source site to a destination site | |
US10983719B1 (en) | Replica pools to support volume replication in distributed storage systems | |
US11893264B1 (en) | Methods and systems to interface between a multi-site distributed storage system and an external mediator to efficiently process events related to continuity | |
CN112789588A (zh) | 基于同步复制的割接引擎 | |
US11262933B2 (en) | Sharing memory resources between asynchronous replication workloads | |
Mundkur et al. | Disco: a computing platform for large-scale data analytics | |
US11343314B1 (en) | Stream-based logging for distributed storage systems |
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 |