掌桥专利:专业的专利平台
掌桥专利
首页

利用重叠的本地重构代码的擦除编码

文献发布时间:2023-06-19 09:44:49


利用重叠的本地重构代码的擦除编码

背景技术

用户经常依赖应用和服务来执行计算任务。分布式计算系统(例如云计算平台)是支持对可配置计算和存储资源的共享池的网络访问的计算架构。分布式计算系统可以使用容错存储(fault-tolerant storage)技术来进行熟练并且可靠的数据存储。特别地,擦除编码(erasure coding)技术可以被采用来减少存储开销。擦除编码可以跨存储节点(例如磁盘、服务器和机架)被实现。擦除编码可以基于定义代码数据片段之间的本地依赖性的本地保护组(local protection group)来提供对缺失的数据(例如数据片段)的有效恢复。本地保护组可以利用各种复杂性和结构来实现,以在恢复缺失的数据时支持被擦除编码的数据的不同的容错(fault tolerance)属性。如此,擦除编码方案可以被生成以适应特定的维度或者折衷,诸如成本、性能和可靠性。

发明内容

本发明的实施例涉及用于提供支持利用重叠的本地重构代码(“OLRC”)的擦除编码的区域冗余存储系统的方法、系统和计算机存储介质。作为背景,在现代数据中心中,通常发现存储机器由于软件或者硬件问题而暂时或者永久停机(down),这导致该机器上的数据或者文件不可访问。为了实现被存储在数据中心的数据的高可用性,特别是当一些机器停机时,容错技术通常被采纳;例如数据复制和擦除编码。第一种方法—数据复制—通常是指将相同数据的多个副本存储在若干机器上,使得即使在一个或多个机器停机的情况下,也可以从数据的其他可用的副本访问数据。然而,该解决方案的缺点是其高存储开销。第二种方法—擦除编码—通常是指用于从存储的数据的故障恢复的纠错算法。擦除编码将原始数据组块(data chunk)划分为数据片段,并且使用数据片段来生成奇偶校验(即,奇偶校验片段),并且然后将所有数据片段和奇偶校验片段存储在不同的机器上。即使在由于一个机器停机而无法访问一些数据片段的情况下,数据也仍然可以从其余一组可用的数据片段和奇偶校验片段被重构。由于附加的存储仅针对原始数据的奇偶校验片段,因此,存储开销比数据复制低得多。

区域冗余存储系统是由多个区域中的机器组成的系统,并且区域冗余存储被设计为容忍大规模运行中断(outage),这意味着:即使在一个区域中的机器暂时或者永久停机(例如电力运行中断或者建筑物倒塌)的情况下,数据可用性也不会受到影响。通过示例,在区域冗余存储系统中,机架可以具有多个节点,并且数据被放置在单独的机架中的节点上,其中机架位于不同的区域中。如此,可能存在3个区域,每个区域在机架中具有多个存储节点。数据可以跨区域被拆分为数据组块以及跨存储节点被拆分为数据片段,以处理区域故障和存储节点故障。区域冗余存储系统的一个容错目标是:在具有区域故障的情况下具有所有数据片段的总可用性,并且在存储节点发生故障的情况下使数据片段的可用性最大化。

作为背景,参照一个3区域的场景,常规的区域冗余存储系统可以实现擦除编码方案,该擦除编码方案针对不常见的情况和常见的情况提供特定的容错属性。在不常见的情况下,为区域故障和3个附加的存储节点故障提供容错,以及在常见的情况下,没有任何区域故障,为多达9个存储节点故障提供容错。注意,虽然存储节点故障比区域故障更常见,但是在区域故障或者存储节点故障中重构数据片段产生相同的成本(读取9个数据片段)。在这点上,常规的擦除编码实现未针对常见的情况被优化。

在本公开中所描述的实施例涉及用于使用重叠的本地重构代码(“OLRC”)来在区域冗余存储系统中改进擦除编码方案的技术。OLRC解决具有容错的区域冗余存储系统的问题,与不常见的情况(即,区域故障)相比较,该容错未针对常见的情况(即,存储节点故障)被优化。OLRC在维持针对不常见的情况的重构成本的同时优化针对常见的情况的重构。OLRC针对不常见的情况和常见的情况提供容错属性的新颖组合,其中OLRC还支持区域长期停机时间操作以进行灾难恢复。此外,OLRC的耐用性与区域冗余存储系统相同。通过示例,对于不常见的情况,如前所述,除了区域故障之外,还可以容忍3个附加的存储节点故障,其中重构成本为读取9个片段;以及现在,对于常见的情况,当没有区域故障时,重构通过仅读取6个片段产生更少的成本。与常规的代码(如Reed-Solomon(“RS”)代码)相比较,存储成本保持不变,同时针对重构进行了优化(例如修复成本和降级读取)。

OLRC是可能的,因为奇偶校验片段不与所有数据片段而是与数据片段的特定子集一起被生成。例如,OLRC不使用9个数据片段来生成奇偶校验片段,而仅使用6个数据片段。如本文更详细地讨论的,奇偶校验片段具体被生成为最佳的擦除代码,这些最佳的擦除代码具有以下属性:n个被编码的符号中的任何k个被编码的符号都足以恢复原始数据。ORLC的不同实施例可以被生成,并且进一步地,OLRC可以支持新颖的灾难恢复操作和配置。例如,在一个实施例中,OLRC以奇偶校验片段的水平放置来构造,以及在另一实施例中,OLRC利用奇偶校验片段的隔行(interlaced)放置来构造。此外,OLRC可以在一个区域故障时被重构以支持区域长期停机时间,本文更详细地讨论了每一项。

因此,本发明的一个实施例提供了利用重叠的本地重构代码的改进的擦除编码。在操作中,数据组块被划分为数据片段。这些数据片段与区域相对应。多个奇偶校验片段使用数据片段来计算。奇偶校验片段使用数据片段的子集来计算。多个奇偶校验片段被分配给包括数据片段的区域,其中数据片段和多个奇偶校验片段定义具有多个本地组的重叠的本地重构代码。不可用的数据片段从来自多个本地组的至少两个本地组可恢复。

如此,本文所描述的实施例涉及一种提供容错擦除编码方案的OLRC,该方案在重构(包括修复成本、读取效率)与高耐久性之间具有改进的平衡,同时将存储开销保持最小。对于擦除编码方案,重构所需的数据片段和奇偶校验片段的数量用作对擦除编码方案的效率的衡量。利用OLRC,重构只需要来自相同本地组的数据片段和奇偶校验片段的总数的一小部分,这将使得该方案在具有有限数量的总数据片段的存储系统中是理想的。总的来说,OLRC提供对用于恢复缺失的数据的计算操作的改进,这在对分布式计算系统中的数据访问请求的处理中产生计算效率。

提供本发明内容是为了在简化的消息中介绍对构思的选择,下面在详细描述中进一步描述这些构思。本发明内容不旨在标识所要求保护的主题的关键特征或者本质特征,也不旨在单独用于帮助确定所要求保护的主题的范围。

附图说明

下面参照附图详细地描述了本技术,在附图中:

图1是示出了根据本发明的实施例的示例擦除编码方案的示意图;

图2是示出了根据本发明的实施例的示例擦除编码方案的示意图;

图3是示出了根据本发明的实施例的示例擦除编码方案的示意图;

图4是示出了根据本发明的实施例的示例擦除编码方案的示意图;

图5是示出了根据本发明的实施例的示例擦除编码方案的示意图;

图6是图示了根据本发明的实施例的用于使用重叠的本地重构代码来提供擦除编码的示例方法的流程图;

图7是图示了根据本发明的实施例的用于使用重叠的本地重构代码来提供数据恢复的示例方法的流程图;

图8是适合用于实现本发明的实施例的示例分布式计算系统的框图;以及

图9是适合用于实现本发明的实施例的示例计算环境的框图。

具体实施方式

通常,容错是指系统在其组件中的一些组件发生故障(或者一个或多个故障)的事件中继续进行操作的能力。常用的容错技术包括数据复制和擦除编码。特别地,擦除编码是指用于从存储的数据的故障恢复的纠错算法。数据可以被存储在具有不同类型的存储服务的不同类型的存储硬件中。擦除编码可以被实现以为存储的数据提供容错,使得如果数据片段由于主机停机而不可用,则数据可以使用可用的数据片段和奇偶校验片段被重构。附加地,擦除编码还可以提供减少的存储开销。例如,代替复制数据,数据可以被划分为数据片段并且与一个或多个奇偶校验片段相关联,并且然后数据片段被存储为具有从其余数据片段重构缺失的数据片段的能力。如此,擦除编码提供了在硬件、数据中心占用面积中的成本节省,并且通过不必运行附加的硬件提供了电力节省。

通常,擦除编码包括利用特定类型的编码方案来对数据进行编码,编码方案例如Reed-Solomon,该Reed-Solomon通常被表示为RS(K,M),其中K是数据片段的数量,并且M是奇偶校验片段的数量。在Reed-Solomon方法中,每个奇偶校验片段通过对所有k个数据片段的线性计算而被生成,Reed Solomon方法的该方面导致重构读取所需要的大量的数据片段,从而对于不可用的数据片段或者奇偶校验片段,影响了读取效率并且增加了修复成本。另一类型的编码方案是本地重构代码(LRC),本地重构代码在形式上可以被定义为(k,l,r)。(k,l,r)LRC将k个数据片段划分到l个组中,每个组中具有k/l个数据片段。擦除编码方案在每个组内计算一个本地奇偶校验片段。附加地,擦除编码方案包括从所有数据片段计算r个全局奇偶校验片段。通过示例,令n为片段的总数(数据片段+奇偶校验片段)。那么,n=k+l+r。因此,归一化存储开销为n/k=1+(l+r)/k。该示例中的LRC是存储成本为1+4/6=1.67倍的(6,2,2)LRC。在2015年6月26日提交的题目为“FLEXIBLE ERASURE CODING WITHENHANCED LOCAL PROTECTION GROUP STRUCTURES(具有增强的本地保护组结构的灵活的擦除编码)”的美国专利申请号14/752,595-代理人案卷号MS356350.01/MFCP.223049中详细描述了各种擦除代码,该专利申请通过整体引用并入本文。

最佳的擦除代码具有以下属性:n个被编码的符号中的任何k个被编码的符号都足以恢复原始数据。最佳的擦除代码是最大距离可分离(MDS)代码。特别地,在Singleton界限内实现该质量的线性区块代码被称为MDS代码。Reed-Solomon代码及其扩展版本是MDS代码。Reed-Solomon实现可以包括6个数据片段和用于恢复这6个数据片段的3个奇偶校验片段。如上面所示出的,与Reed-Solomon相比较,LRC减少了在重构离线的数据片段时需要读取的擦除编码片段的数量,同时使存储开销保持较低。例如,对于6个数据片段,LRC生成4个奇偶校验片段而不是3个奇偶校验片段。两个本地奇偶校验片段分别与6个片段中的3个数据片段的不同集合相关联,以及两个全局奇偶校验片段针对6个数据片段。因此,与使用奇偶校验片段和5个数据片段来重构发生故障的数据片段的Reed-Solomon形成对比,LRC使用本地奇偶校验片段和相同集合中的2个数据片段来重构发生故障的数据片段。LRC在平衡存储开销与重构成本方面提供比Reed-Solomon更大的灵活性。对于上面的示例,LRC比Reed-Solomon增加了一个奇偶校验片段,同时将重构成本减少了一半。备选地,LRC可以保持与Reed-Solomon相同的重构成本,同时显著减少存储开销。

进一步地,LRC代码可以基于所选择的编码等式被确定,使得LRC实现最大程度可恢复(MR)属性,这意味着:LRC可以对作为在理论上可译码的信息的任何故障模式进行译码。例如,参考上面的示例,如果3个数据片段和与这些数据片段相关联的奇偶校验片段的集合发生故障,则该模式是不可译码的,因为其余两个奇偶校验无法对这3个数据片段进行译码,因此,是在理论上不可译码的信息。或者,可以重构的故障模式被称为在理论上可译码的信息。LRC可以与实现最大程度可恢复属性的编码等式的单个集合相关联。

可以通过以下三个基本考虑来管理存储系统(例如运行存储服务的分布式计算系统)。首先,数据可以出于可靠性被存储(即,以冗余编码形式存储数据),这确保如果有界数量的机器、存储节点或者数据中心区域发生故障,不会丢失信息。其次,数据可以出于可用性被存储,因为数据可供用户使用(即,任何相关的故障-在界限内-都不应该使任何数据不可用)。最后,数据可以被存储以限制冗余度,在冗余度下,存储太多冗余数据限制了对总体存储成本的优化。

利用擦除编码,可以实现对缺失的数据片段的有效恢复。作为背景,参照3区域场景,常规的区域冗余存储系统可以实现针对不常见的情况和常见的情况提供特定的容错属性的擦除编码方案(例如RS(9,9))。在不常见的情况下,为区域故障和3个附加的存储节点故障提供容错,以及在常见的情况下,没有任何区域故障,为多达9个存储节点故障提供容错。注意,虽然存储节点故障比区域故障更常见,但是在区域故障或者存储节点故障中重构数据片段产生相同的成本(读取9个数据片段)。在这点上,常规的擦除编码实现未针对常见的情况被优化。

在本公开中所描述的实施例涉及用于使用利用重叠的本地重构代码的擦除编码来改进区域冗余存储系统的简单并且有效的方法。在高级别下,OLRC是被构造为与区域冗余存储系统一起、甚至与动态总数的区域一起灵活地进行操作的擦除编码方案。基于重叠的本地重构代码的擦除编码解决了常规的擦除编码实现中的问题,在常规的擦除编码实现中,与不常见的情况(即,区域故障)相比较,容错未针对常见的情况(即,存储节点故障)被优化。OLRC在维持针对不常见的情况的重构成本的同时优化针对常见的情况的重构。OLRC针对不常见的情况和常见的情况提供容错属性的新颖组合。通过示例,对于不常见的情况,如前所述,除了区域故障之外,还可以容忍3个附加的存储节点故障,其中重构成本为读取9个片段;以及现在,对于常见的情况,当没有区域故障时,重构产生仅读取6个片段的更少的成本。与常规的实现相比较,存储成本保持不变,同时针对重构进行了优化(例如修复成本和降级读取)。OLRC是可能的,因为奇偶校验片段不与所有数据片段而是与数据片段的特定子集一起被生成。

进一步地,在常规的LRC实现中,数据组块的多个数据片段中的任何单独的数据片段都仅存在于具有单个本地奇偶校验的一个本地保护组中。如果本地组中没有足够的数据片段用于针对数据片段的重构读取,则数据片段不可访问时,用于缺失的数据片段的重构操作包括全局重构读取,这些全局重构读取执行更多次读取以便重构缺失的数据片段。用于区域冗余存储系统的OLRC提供了容错与有效重构之间的改进的平衡。例如,OLRC具有更大的灵活性,因为每个本地组被构造为具有多个本地奇偶校验。如此,本地组可以被用于本地重构,因为每个数据片段是两个本地保护组的一部分,因此,OLRC的读取效率和平均修复成本被改进为优于LRC。

在操作中,对数据进行擦除编码可以跨多个存储区域和子区域被执行。这可以通过将数据组块划分为多个数据片段来实现。多个数据片段中的每个数据片段与区域相关联。区域包括地理地区、建筑物、数据中心和与存储服务相关联的存储节点。至少部分地基于每个擦除编码方案的权衡或者维度来计算多个重构奇偶校验片段。特别地,维度(诸如成本、性能和可靠性)定义与跨区域的OLRC方案相关联的实现约束。OLRC编码方案指定被擦除编码的数据的放置以针对容错实现特定目标。

OLRC擦除编码方案定义了将数据组块划分为多个数据片段的方式、以及数据片段在跨区域的机器中的最佳放置以针对容错实现特定目标和OLRC属性。例如,对于OLRC,仅利用所有数据片段的子集来计算多个奇偶校验片段。特别地,ORLC奇偶校验片段可以基于水平放置或者隔行放置。被用于计算单个奇偶校验片段的数据片段可能来自不同的区域,并且单独的数据片段可能被用于计算若干奇偶校验片段。最后,生成的奇偶校验片段被放置在跨区域的机器上,并且特别地,OLRC可以采用隔行放置策略,该隔行放置策略包括将奇偶校验片段放置在与其所有源数据片段不同的区域中。跨区域奇偶校验片段提供针对不可用的数据片段的跨区域重构(由于主机停机),因此,可以利用OLRC来实现上位的容错。

为了下面的详细讨论的目的,参考基于擦除编码方案跨多个区域对数据进行擦除编码来描述本发明的各实施例,针对三个区域示意性地描绘了该擦除编码方案;然而,本文所描绘的三个区域仅仅是示例性的,并且预期可以与本文所描述的擦除编码方案一起利用多个区域。类似地,对于数据片段的数量和奇偶校验片段数量,针对具有9个数据片段和9个奇偶校验片段的代码示意性地描绘了擦除编码方案,这些代码仅仅是示例性的,并且预期可以利用不同数量的数据片段和奇偶校验片段。

继续参考OLRC,OLRC被定义为OLRC(k,z,l,n),其中k是数据片段的总数,z是区域的总数,l是区域计数,其中来自区域的、区域计数中的所有数据片段都被用于计算奇偶校验片段,n是每本地组的奇偶校验片段的数量。OLRC包括每个区域中的k/z个数据片段,其中存储开销为(k+n*z)/k,归一化存储开销为1+n*z/k,对于示例性的3个区域的情况,OLRC具有9个数据片段,每个组中的3个奇偶校验片段,存储开销为1+3*3/9=2倍。例如,参考图1中的ORLC,基于OLRC(9,3,2,3)。

参照图1,图1图示了OLRC(9,3,2,3)。图1包括区域1、区域2、区域3、数据片段部分110A、数据片段部分120A和数据片段部分130A、奇偶校验片段部分110B、奇偶校验片段部分120B、奇偶校验片段部分130B。区域的只包括数据片段的部分可以被称为区域的数据片段部分,并且区域的一个部分只具有奇偶校验片段。数据组块100被划分为三个区域。数据组块100被划分为被称为区域数据片段(x0,x1,x2)、(y0,y1,y2)、(z0,z1,z2)的九个数据片段,然后以对应的数据片段部分(即,数据片段部分110A、数据片段部分120A和数据片段部分130A)被放置到三个区域中。具有相同区域片段组合中的三个数据片段的每个区域与区域1、区域2和区域3相对应。由于l为2,因此,对于OLRC(9,3,2,3),来自两个区域的所有数据片段都被用于生成一个奇偶校验片段。如在图1中所示出的,为了计算P

继续参照图2,图2图示了数据组块100的、使用水平放置策略(即,水平放置操作)而生成的数据片段和奇偶校验片段。在较高级别下,在包括源数据片段(即,在计算奇偶校验片段中使用的数据片段)的区域中分配奇偶校验片段可以被称为OLRC水平放置。具有数据片段和奇偶校验片段的区域定义本地组或者本地保护组(例如组1、组2和组3)。对于OLRC(9,3,2,3),存在三个本地组:组1–{x0,x1,x2,y0,y1,y2,P

对于LRC编码方案,任何单独的数据片段都仅存在于一个本地组中。如果对应的本地组中没有足够的数据片段用于重构操作或者降级读取操作,则该操作变为全局重构操作或者全局降级读取操作,这产生更多的成本。另一方面,OLRC被构造成使得该结构提供灵活性以在每个数据片段是两个本地组的一部分时支持更多的本地操作。在这点上,针对OLRC的读取效率和平均修复成本将比LRC更好。由于每个本地组具有3个奇偶校验片段,因此,本地组可以容忍离线的任何三个片段和通过本地重构进行恢复。如果有更多的片段离线(例如区域故障),则本地重构就没那么有益,在那种情况下,重构操作利用来自与正被恢复的组具有重叠的片段的其他本地组的数据,其中来自其他本地组的数据片段基于全局重构。

表1–针对节点故障的OLRC故障容限

对于OLRC(9,3,2,3),存储服务可以容忍所有任意6个或者更少的数据片段不可用的情况,对于小于或者等于3个数据片段停用(data fragment down)的情况,这些数据片段使用本地组可恢复,而对于多于3个片段停用的情况,取决于丢失的数据片段分布在各组之间的方式。如果停用的单独的本地组数据片段的计数小于或者等于3,则可以通过若干本地组重构来进行恢复,否则需要进行全局重构。对于多于6个片段不可用的情况,许多情况在理论上将是不可恢复的,针对7/8/9个片段停用的场景;对于OLRC,90%以上的情况仍然可恢复。上面的表1图示了针对节点故障的完全可恢复性场景。

此外,如所讨论的,OLRC在具有单个区域故障的不常见的情况下维持LRC容错属性。区域冗余存储被设计为容忍大规模运行中断(例如建筑物倒塌、数据中心烧毁或者与天气相关的损坏)。在一个区域故障场景下的容错是对任何擦除编码方案的容错有效性进行评估的关键措施。OLRC(9,3,2,3)的水平放置如图2所示,在任何一个区域停机的情况下(例如区域1停机),区域冗余存储系统最多只能容忍6个任意片段不可用。如果区域1停机,导致片段x0、x1、x2、P

还可以利用奇偶校验片段的隔行放置(即,隔行放置操作)来实现OLRC。参照图2中的奇偶校验片段的水平放置,有6个片段来自一个区域停机的相同本地组;例如,在区域1中,{x0,x1,x2,P

参照图4,图4图示了基于隔行放置技术而布置的数据组块110。特别地,基于隔行放置来放置奇偶校验片段。对于奇偶校验片段的隔行放置,当一个区域停机时,系统可以容忍任意3个或者更少的额外的片段停用,这大大提高了一个区域停机场景的故障容限。例如,当区域1停机以及从停机的x

OLRC还提供对改进的降级读取的支持。如本文所使用的,恢复可以是指片段的重构或者降级读取。当片段不可用时,需要进行重构读取以服务读取请求,而读取延迟通常由于读取多个片段而被降级。对于降级读取,由于本地降级读取比全局降级读取需要更少的片段,更少的片段意味着更少的读取I/O,因此,全局降级读取是最后的选项。对于OLRC擦除编码方案,每个数据片段参与多于一个组,并且对于每个本地组,存在多于一个奇偶校验片段;这对降级读取有益。一个数据片段参与多于一个组,这意味着:当需要对该特定数据片段执行降级读取或者重构时,可以对数据片段参与奇偶校验生成的组中的任何组执行本地降级读取或者重构。而且,存在用于基于组中的数据片段状态的状态来选择重构组的更多选项。并且,在本地组中有多于一个奇偶校验片段的情况下,带宽具有更快的本地重构,因为只需要本地组中的部分数据片段来进行译码。有利地,存在尾部延迟益处,因为多个本地奇偶校验可以有效地清除慢的节点。

通过示例,以OLRC(9,3,2,3)为例,每个单独的数据片段是两个组的一部分,并且对于每个组,存在从组中的所有六个数据片段生成的3个奇偶校验。考虑x0停用的情况,由于x0是两个组的一部分–{x0,x1,x2,y0,y1,y2,P

附加地,与区域内的通信相比较,跨区域边界的网络通信成本更昂贵并且还具有更高的延迟。如此,对于本地重构和全局重构,重构操作基于来自相同区域中的本地组的可用节点来对重构读取进行优先级排序,并且仅在需要时执行跨区域的读取,以便优化重构延迟。还预期OLRC实现可以被扩展到多于3个区域,而不会影响针对存储开销和本地重构效率的属性,因为区域计数不是用于擦除编码方案OLRC(k,z,l,n)的决定性元素。

在根据本文所描述的实施例的OLRC的一种实现中,OLRC可以被利用来为区域在延长的周期(即区域长期停机时间)内停机的场景提供改进。如上一章节中有关尾部延迟所提到的,对于OLRC,即使在一个区域停机的情况下,OLRC也仍然可以容忍3个额外的任意节点故障。例如,如果客户想要访问发生故障的区域中的数据,则可以通过即时重构数据片段(即,降级读取)来服务读取请求。然而,如上面所讨论的,针对重构读取的延迟将比直接数据片段读取昂贵得多。例如,如果区域具有预计花费延长的周期来恢复的故障,则从其余健康的区域中的停机区域迁移和/或重构数据片段以优化读取性能可以是有利的。例如,如果区域由于在一个地区的地震而停机,则可能花费数周或者甚至数月来修复或者重建停机区域。在理想的情况下,在迁移之后,对于其余两个区域,存储能力不应该提高,并且在迁移之后,其余片段应该在节点故障期间维持容错属性。

在一种实现中,编译码器(codec)转变操作可以被执行。编译码器转变可以是指以下过程:基于在最初对数据进行译码以进行复制、并且然后利用新的编译码器来重新进行擦除编码,而将利用编译码器A编码的数据转换为利用另一编译码器B编码的数据。通过示例,在区域长期停机时间场景下,数据OLRC(9,3,2,3)可以被编码为用于其余两个区域中的数据片段的柯西(Cauchy)Reed-Solomon编译码器CRS(9,3),其保留具有9个数据片段和3个全局奇偶校验片段的12个片段。CRS满足对能力和容错的要求,因为CRS可以容忍任意3个节点故障。然而,在编译码器转变期间的对译码和重新编码的中间处理可能很耗时,并且跨节点传输数据的网络成本可能非常昂贵(例如5倍),以及当区域被恢复时,编译码器转变工作的成本也可能非常昂贵。

本发明的实施例预期更有效的备选区域长期停机时间恢复操作。参照图5,图5图示了使用隔行放置的被布置在区域中的数据组块100。数据组块100的布置与上面所讨论的图4相对应。图5还包括与区域1、区域2和区域3相对应的全局奇偶校验部分(即,全局奇偶校验部分110C、120C和130C)中的全局奇偶校验片段。图5图示了支持在节点故障期间维持故障属性的擦除编码。例如,在区域停机的情况下,可以通过采用新的编码矩阵来将本地奇偶校验片段转换为全局奇偶校验片段;结果,备选区域长期停机时间恢复操作可以跳过执行昂贵的编译码器转变。在该转换的OLRC方案中,新的变量g被引入以表示全局奇偶校验片段的数量。如此,OLRC被表示为:OLRC(k,z,l,n,g)。根据先前的3区域示例,在该新方案中,g为3。备选区域长期停机时间恢复操作控制在不同情况下确实需要放置和复制哪些奇偶校验片段。在常见的情况下,仅保留本地奇偶校验片段,这将产生OLRC(9,3,2,3)。如图5所示,通过保留数据片段和全局奇偶校验片段并且删除所有本地奇偶校验片段,其余片段形成CRS(9,3)分布。如此,这消除了对额外的编译码器转变的需求,该额外的编译码器转变很耗时并且涉及撤销擦除编码以进行复制,并且然后利用新的编译码器来重新进行擦除编码。在新的编码方案下,网络成本将仅为1.56倍;与编译码器转变方法相比较,该方法节省了3倍以上的网络带宽。

有利地,本文所描述的实施例改进了计算操作,这些计算操作在处理区域冗余存储系统中的数据访问请求时产生计算效率。特别地,优化了对用于常见的情况(即,存储节点故障)的操作的改进,同时维持了针对不常见的情况(即,区域故障)的重构成本。此外,具有全局奇偶校验的OLRC还支持区域长期停机时间操作以进行灾难恢复。总的来说,这些改进在分布式计算系统中引起更少的CPU计算、更小的存储器需求以及擦除编码中的提高的灵活性、高可用性和灾难恢复。

参照图6和图7,图6和图7分别图示了用于使用重叠的本地重构代码来实现擦除编码和使用重叠的本地重构代码来实现数据恢复的方法的流程图。这些方法可以使用本文所描述的分布式计算系统来执行。在实施例中,一种或多种计算机存储介质在其上实施有计算机可执行指令,这些计算机可执行指令在由一个或多个处理器执行时可以使该一个或多个处理器执行系统800中的方法。

现在转向图6,图示了用于利用重叠的本地重构代码来对数据进行擦除编码的方法600的流程图被提供。首先,在框610,数据组块被划分为数据片段,这些数据片段与区域相对应。在框620,多个奇偶校验片段被计算。奇偶校验片段使用数据片段的子集被计算。被用于计算奇偶校验片段的数据片段的子集来自至少两个不同的区域。

对于水平放置,使用水平放置操作来分配多个奇偶校验片段的子集。水平放置操作将多个奇偶校验片段的子集放置在水平放置区域中。水平放置区域选自具有源数据片段的至少两个区域中的一个区域,该源数据片段在计算多个奇偶校验片段的子集时被使用。对于隔行放置,使用隔行放置操作来分配多个奇偶校验片段的子集。隔行放置操作将多个奇偶校验片段的子集放置在隔行放置区域中,其中隔行放置区域与具有源数据片段的区域不同,该源数据片段在计算多个奇偶校验片段的子集时被使用。

在框630,多个奇偶校验片段被分配给包括数据片段的区域。数据片段和多个奇偶校验片段定义具有多个本地组的重叠的本地重构代码,其中不可用的数据片段从来自多个本地组的至少两个本地组可恢复。被用于计算多个奇偶校验片段的子集的数据片段的子集定义本地组,该本地组包括数据片段子集和多个奇偶校验片段的子集。与不可用的本地组相对应的不可用的区域从其余可用的区域可恢复,其中不可用的本地组片段从来自可用的区域的可用的本地组可恢复。

现在转向图7,图示了用于利用重叠的本地重构代码进行数据恢复的方法700的流程图被提供。首先,在框710,访问具有多个本地组的重叠的本地重构代码的至少一个奇偶校验片段。不可用的数据片段从来自多个本地组的至少两个本地组可恢复。重叠的本地重构代码基于水平放置操作或者隔行放置操作而被生成。

在框720,至少一个不可用的数据片段基于至少一个奇偶校验片段而被恢复,该至少一个奇偶校验片段来自至少两个本地组的第一本地组或者第二本地组。第一本地组支持主要本地组类型恢复,而第二本地组支持次要本地组类型恢复。至少一个不可用的数据片段在隔行放置中从重叠的本地重构代码被恢复,其中重叠的重构代码从包括不可用的区域和至少一个附加的不可用的片段的故障可恢复。重叠的本地重构代码还包括多个全局奇偶校验片段,其中恢复至少一个不可用的数据片段包括:至少将全局奇偶校验片段中的至少两个全局奇偶校验片段重新分配给相同区域。重新分配至少两个全局奇偶校验片段可以仅在尝试和便于从两个本地组恢复至少一个不可用的数据片段时被执行。

转向图8,客户端计算设备810可以包括任何类型的计算设备,例如,诸如参照图9所描述的计算设备900。多个客户端计算设备810可以与分布式计算系统800(或者分布式存储系统)相关联。客户端计算设备810可以被用于获取存储本文所描述的一个或多个区域中的任何区域的数据。

区域可以是指提供存储服务的特定建筑物、数据中心和地理地区。例如,数据中心可以被实现为被配置为在数据中心内分配虚拟机以供服务应用使用的云计算环境。跨多个区域的擦除编码涵盖在由区域中的存储服务定义的任何容错级别下提供擦除编码。本领域普通技术人员要理解和了解,与区域相关联地被存储的信息可以是可配置的,并且可以包括与擦除编码数据等有关的任何信息,擦除编码数据包括数据组块、本地奇偶校验和区域奇偶校验。这种信息的内容和量不旨在按照任何方式来限制本发明的实施例的范围。

进一步地,虽然被图示为单个独立组件,但是区域实际上可以是包括存储设备的多个组件,例如机架和服务器的类集和另一外部计算设备(未示出)和/或其任何组合。如此,提供区域容错允许区域具有在区域中的组件中的服务的意外丢失或者故意丢失(这影响访问或者导致数据丢失)的情况下继续进行操作的能力。服务的意外丢失可以包括在存储、传输或者过程组件中的故障,例如电源故障、硬件故障、互联网服务提供方(ISP)故障或者数据损坏。地区区域故障可能与导致数据丢失的自然灾害、地震、洪水、龙卷风等相关联。服务的故意丢失可以包括计划的网络运行中断(例如维护运行中断),在该计划的网络运行中断期间,区域中的数据不可用。

由于区域是大规模存储系统,因此,本文的各实施例中的实施例支持由于大规模运行中断而引起的恢复操作。然而,跨区域的擦除编码的实现创建了不同的一组实现约束。例如,继续参照图8,网络890可以包括但不限于:一个或多个局域网(LAN)和/或广域网(WAN)。这种联网环境在办公室、企业范围的计算机网络、内联网和互联网中是常见的。利用本发明的实施例,用于擦除方案的成本维度和性能维度与分布式计算系统区域(例如区域1850、区域2 860和区域3 870)相关联。分布式计算系统800可以包括分别在单个区域内的若干子存储系统。子系统中的每个子系统可以通过横跨区域的网络890主干被链接在一起。如此,总成本可以基于单区域子存储系统和跨区域网络主干被确定。单区域子存储系统可以是存储开销(存储指定数量的用户数据所需的物理存储空间总量)的功能。跨区域网络主干可以是要被提供以支持存储系统的网络带宽量的功能。

性能度量可以是指从不同类型的故障场景恢复的能力。不同类型的区域故障对系统性能具有不同的影响。如此,例如,当区域内的存储节点或者故障域发生故障时,系统在降级模式下运行。然而,当整个区域发生故障时,系统在灾难模式下运行。为了表征性能,例如在降级模式下,降级读取成本(即,从发生故障的存储节点读取一个用户数据单元所需的磁盘I/O的数量)可以被定义。类似地,灾难读取成本可以被定义为读取在发生故障的区域中的一个用户数据单元所需的磁盘I/O的数量。磁盘I/O被预期包括用于传送数据的网络传输成本。可靠性度量还可以是网络890的功能,因为可靠性基于的是在一个或多个机器发生故障或者变得不可用之后重构数据的能力。例如,可靠性可以基于平均数据丢失时间(MTTDL)被评估。

图8所示擦除编码服务器820通常被配置为接收和传送信息以用于擦除编码。信息通常可以包括通信(例如对编码或者重构数据的请求)和/或利用本文所描述的擦除编码方案被编码的实际数据组块。如图所示,擦除编码服务器820包括编码器组件830和重构组件840。擦除编码服务器820具有对不同区域的访问。例如,擦除编码服务器820可以针对不同的区域接收和发送数据(例如数据组块)。数据组块可以是需要被编码的数据,或者可以是已经被恢复的数据。预期还可以从不在所示出的区域中的一个区域中的外部存储组件(未示出)接收数据。

本发明的实施例可以包括分别与若干区域相关联的多个擦除编码服务器820,其中区域中的数据根据本发明的实施例被处理。进一步地,擦除编码服务器820可以与具有接口元件的接口相关联,该接口元件支持由擦除编码服务器执行的功能。例如,接口元件可以提供对用于特定数据组块的特定擦除编码方案的选择。接口元件可以提供有关与擦除编码方案相关联的特定维度和实现约束的信息,使得可以基于与存储数据的实体(例如具有服务应用的租户)相关联的特定考虑来选择方案。预期用于实现本发明的实施例的接口元件的任何和所有这种变型以及其任何组合都在该范围内。

擦除编码服务器830的编码器组件830被配置为接收对数据进行编码的请求。数据组块可以与所选择的用于对数据组块进行编码的擦除编码方案一起被接收。编码器组件830还可以确定和/或选择针对数据组块而实现的擦除编码的类型。确定擦除编码方案至少部分地基于与编码方案相关联的维度(例如成本、性能和可靠性)。选择擦除编码方案可以由擦除编码服务器的接口元件支持。

特别地,存储数据组块的实体(例如与云计算平台相关联的租户)的目标可以与实现目标的编码方案对准。例如,实体可以认为第一编码方案比第二编码方案更有价值,因为该方案提供更好的性能。进一步地,编码器组件830被配置为执行与不同的编码方案相关联的编码步骤。如下面所更详细地讨论的,用于对数据组块进行编码的步骤由编码器组件830执行。例如,编码器组件如每个擦除编码方案所引导的那样将数据划分为组块,计算不同的奇偶校验,标识用于数据组块和奇偶校验的位置,并且传送数据组块。

擦除编码服务器830的重构组件850被配置为接收针对重构或者恢复数据的请求。如所讨论的,数据丢失可以是意外的或者故意的数据丢失。已编码的数据组块的待恢复的部分可以与用于恢复已编码的数据组块的该部分的相关联的擦除编码方案一起由重构组件850标识。预期可以从外部源(未示出)向重构组件传送待恢复的数据丢失信息和/或数据细节,该重构组件然后恢复已编码的数据的该部分。与对数据组块进行编码类似,重构过程还可以由擦除编码服务器820的接口元件支持。编码器组件830被配置为根据编码方案来恢复已编码的数据组块的各个部分。特别地,擦除编码方案和本地或者区域奇偶校验与数据组块的待恢复的部分相关联。如本文所更详细地讨论的,用于数据组块的重构部分的步骤和组件基于擦除编码方案发生变化。

继续参照分布式计算系统800,本文所描述的实施例支持跨全球数据中心存储和获取数据对象,以最大程度地利用分布式计算系统中的计算资源。特别地,分布式计算系统实现高度一致的版本化对象存储库,该存储库对跨全球数据中心的对象进行编码。分布式计算系统组件是指用于分布式计算系统管理的集成组件。这些集成组件是指使用分布式计算系统来支持分布式计算系统管理功能性的硬件架构和软件框架。硬件架构是指物理组件及其相互关系,而软件框架是指提供可以利用在设备上所实施的硬件来实现的功能性的软件。基于端到端软件的分布式计算系统可以在分布式计算系统组件内进行操作,以操作计算机硬件来提供分布式计算系统功能性。如此,分布式计算系统组件可以管理资源和提供服务以获得分布式计算系统功能性。对于本发明的实施例,预期任何其他变型及其组合。

通过示例,分布式计算系统可以包括API库,该API库包括针对例程、数据结构、对象类的规范,并且变量可以支持设备的硬件架构与分布式计算系统的软件框架之间的交互。如本文所描述的,这些API包括针对分布式计算系统的配置规范,使得其中的不同组件可以在分布式计算系统中彼此通信。

已经描述了本发明的实施例,下面描述在其中可以实现本发明的实施例的示例性操作环境,以便为本发明的各个方面提供一般上下文。首先具体参照图9,用于实现本发明的实施例的示例性操作环境被一般地示出和设计为计算设备900。计算设备900只是合适的计算环境的一个示例,而不旨在暗示关于本发明的使用范围或者功能性的任何限制。计算设备900也不应该被解释为具有与所图示的组件中的任何一个组件或者这些组件的组合相关的任何依赖性或者要求。

本发明可以在计算机代码或者机器可用指令(包括计算机可执行指令,诸如程序模块)的一般上下文中被描述,计算机代码或者机器可用指令由计算机或者其他机器(诸如个人数字助理或者其他手持式设备)执行。通常,程序模块包括执行特定任务或者实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明可以在各种系统配置中被实践,包括:手持式设备、消费电子产品、通用计算机、更专门的计算设备等。本发明还可以在通过远程处理设备来执行任务的分布式计算环境中被实践,这些远程处理设备通过通信网络被链接。

参照图9,计算设备900包括直接地或者间接地耦合以下设备的总线910:存储器912、一个或多个处理器914、一个或多个呈现组件916、输入/输出端口918、输入/输出组件920和说明性电源922。总线910表示可以作为一条或多条总线的内容(诸如地址总线、数据总线或者其组合)。虽然为了清楚起见,用线示出了图9所示各种框,但是实际上,描绘各种组件不是那么清楚,并且比喻地,线将更精确地是灰色的和模糊的。例如,可以将呈现组件(诸如显示设备)视为I/O组件。而且,处理器具有存储器。我们认识到这是本领域的本质,并且重申图9所示示意图仅仅是对可以结合本发明的一个或多个实施例来使用的示例性计算设备的说明。未在如“工作站”、“服务器”、“膝上型电脑”、“手持式设备”等这些类别之间进行区分,因为预期所有这些组件都在图9的范围内并且都是对“计算设备”的引用。

计算设备900通常包括各种计算机可读介质。计算机可读介质可以是可以由计算设备900访问的任何可用介质,并且包括易失性和非易失性介质、可移除和不可移除介质。通过示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。

计算机存储介质包括按照用于信息存储的任何方法或者技术而实现的易失性和非易失性介质、可移除和不可移除介质,信息诸如计算机可读指令、数据结构、程序模块或者其他数据。计算机存储介质包括但不限于:RAM、ROM、EEPROM、闪速存储器或者其他存储器技术、CD-ROM、数字通用盘(DVD)或者其他光盘存储装置、磁带盒、磁带、磁盘存储装置或者其他磁存储设备或者可以被用于存储期望信息并且可以由计算设备100访问的任何其他介质。计算机存储介质排除信号本身。

通信介质通常实施计算机可读指令、数据结构、程序模块或者已调制的数据信号中的其他数据(诸如载波或者其他传送机构),并且包括任何信息递送介质。术语“已调制的数据信号”是指具有其按照对信号中的信息进行编码的方式被设置或者改变的特性中的一个或多个特性的信号。通过示例而非限制,通信介质包括有线介质(诸如有线网络或者直接有线连接)和无线介质(诸如声学无线介质、RF、红外无线介质和其他无线介质)。上述内容中的任何内容的组合也应该被包括在计算机可读介质的范围内。

存储器912包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移除存储器、不可移除存储器或者其组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备900包括从各种实体(诸如存储器912或者I/O组件920)读取数据的一个或多个处理器。(多个)呈现组件916向用户或者其他设备呈现数据指示。示例性呈现组件包括显示设备、扬声器、打印组件、振动组件等。

I/O端口918允许计算设备900在逻辑上被耦合至包括I/O组件920的其他设备,这些其他设备中的一些可以被内置。说明性组件包括麦克风、操纵杆、游戏手柄、碟形卫星天线、扫描仪、打印机、无线设备等。

在下面的段落中所描述的实施例可以与具体描述的备选方案中的一个或多个备选方案组合。特别地,所要求保护的实施例可以备选地包含对多于一个其他实施例的引用。所要求保护的实施例可以指定对所要求保护的主题的进一步限制。

本文具体描述了本发明的实施例的主题以满足法定要求。然而,描述本身不旨在限制本专利的范围。相反,结合其他现有或者未来技术,本文的发明人已经考虑了还可以按照其他方式来实施所要求保护的主题,以包括与在本文档中所描述的步骤或者步骤组合类似的不同步骤或者步骤组合。此外,虽然本文可以使用术语“步骤”和/或“框”来暗示所采用的方法中的不同元素,但是这些术语不应该被解释为暗示本文所公开的各个步骤之中或者之间的任何特定顺序,除非明确地描述了单独的步骤的顺序以及除了当明确地描述了单独的步骤的顺序时。

出于本公开的目的,单词“包括(including)”具有与单词“包括(comprising)”相同的广泛含义,并且单词“访问”包括“接收”、“引用”或者“获取”。进一步地,单词“传送”具有与由基于软件或者硬件的总线、接收器或者发送器使用本文所描述的通信介质而支持的“接收”或者“传送”相同的广泛含义。而且,单词“发起”具有与单词“执行或者“指示”相同的广泛含义,其中对应的动作可以基于另一动作的发生而被执行以完成或者被中断。附加地,诸如“一”和“一个”等单词包括复数以及单数,除非另有相反指示。因此,例如,在存在一个或多个特征的情况下,满足对“特征”的约束。而且,术语“或者”包括连接词、反意连接词和两者(因此,a或者b包括a或者b、以及a和b)。

出于上面的详细讨论的目的,参照分布式计算环境来描述本发明的实施例;然而,本文所描绘的分布式计算环境仅仅是示例性的。组件可以被配置用于执行实施例的新颖方面,其中术语“被配置用于”可以是指“被编程为”使用代码来执行特定任务或者实现特定抽象数据类型。进一步地,虽然本发明的实施例通常可以是指本文所描述的分布式计算系统和示意图,但是应该理解,所描述的技术可以被扩展到其他实现上下文。

已经关于特定实施例描述了本发明的实施例,这些特定实施例在所有方面都旨在是说明性的而不是限制性的。在不脱离本发明的范围的情况下,对于本发明所属领域的普通技术人员而言,备选实施例将变得明显。

相关技术
  • 利用重叠的本地重构代码的擦除编码
  • 使用算术阶段压缩未充分利用的代码空间的编码器和解码器
技术分类

06120112283836