CN105378676B - 本地生成的简单纠删码 - Google Patents

本地生成的简单纠删码 Download PDF

Info

Publication number
CN105378676B
CN105378676B CN201480036757.4A CN201480036757A CN105378676B CN 105378676 B CN105378676 B CN 105378676B CN 201480036757 A CN201480036757 A CN 201480036757A CN 105378676 B CN105378676 B CN 105378676B
Authority
CN
China
Prior art keywords
correcting
section
eleting codes
interval
data
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.)
Active
Application number
CN201480036757.4A
Other languages
English (en)
Other versions
CN105378676A (zh
Inventor
J·G·贝内特
B·詹金斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN105378676A publication Critical patent/CN105378676A/zh
Application granted granted Critical
Publication of CN105378676B publication Critical patent/CN105378676B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2058Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)

Abstract

“纠删码”是对多个不同数据集的编码。数据的冗余副本以这样的纠删码来维护,由此仅使用未经编码的副本的存储容量的一小部分。纠删码使用XOR函数以最小处理资源高效地生成。另外,纠删码从本地数据生成,由此避免了对网络资源的消耗。维护数据集的至少一个未经编码的副本,同时其余、冗余的副本被编码成纠删码。对数据的请求从未经编码的副本中提供。假如未经编码的副本发生故障,可由另一个计算设备生成新的未经编码的副本,该计算设备能够访问纠删码以及也被压入该纠删码的其它数据的未经编码的副本两者。通过递归地应用对编码数据的这一解码,可从多个故障中幸存。

Description

本地生成的简单纠删码
背景
现代服务器计算设备经常被以一种方式物理配置以提升有限空间(诸如机架)内的多个此类服务器计算设备的安装和维护。服务器计算设备的多个机架随后可被容纳在专用设施(常被称为“数据中心”)中。通过将计算资源聚集在一起,数据中心可提供规模效率,同时提供提高的计算能力和可用性。例如,数据中心可包括数以千计的计算设备,其组合的处理能力可以无数种方式来分割和共享,由此使得实体能够以与这些实体如果自己购买计算设备相比更低的成本访问远远大得多的处理能力。作为另一示例,数据中心可实施对于个人而言贵的离谱的冗余机制,但是在冗余机制的成本被分摊到数据中心的所有用户上时,可提供并不昂贵的风险降低。这样的冗余机制可包括将数据中心内的计算设备划分成各个故障域,故障域可包括物理上不同的位置、独立的网络连接和功率源、以及其它类似的属性,使得大部分潜在地故障应当仅影响单个故障域。
经常,为了维持可靠性,数据的冗余副本被维持在一个数据中心内、或跨多个物理上不同的数据中心的多个这样的故障域。然而,这样的数据集可能足够大,导致对于这样的数据集的跨网络的数据通信可能是耗时和高成本的。结果,冗余常常以网络资源消耗以及因此的性能降级为代价来实现。另外,冗余机制常常需要对数据执行计算上昂贵的数学运算。因此,除了增加网络资源消耗,冗余还可能增加处理能力的使用。由于网络资源和处理能力两者都可能由昂贵的计算硬件以及其它类似的资本投资来支持,因此网络资源和处理能力两者的高效利用同时维持冗余性可以是合乎需要的。
概述
在一个实施例中,数据的冗余副本可以编码状态来维护,该编码状态仅使用了存储该数据的不经编码的副本所需的存储容量的一小部分。为了减少处理资源的消耗,数据可使用XOR函数来编码,XOR函数可由现代处理硬件高效地执行。
在另一实施例中,冗余可通过由以编码状态维护的数据冗余副本来提供,数据冗余副本可仅从本地数据副本中生成,由此避免了对于网络资源的消耗。
在进一步实施例中,可维护至少一个未经编码的数据副本,并且对于该数据的请求可从该未经编码的数据副本中提供。假如这一未经编码的副本遭受故障(包括毁坏性故障以及不可用性故障),可由另选的计算设备生成新的未经编码的副本,该另选的计算设备能够访问与所请求的数据一起被编码的其它数据的经编码的副本以及未经编码的副本两者。
在又一实施例中,通过递归地应用对编码数据的解码,可从多个故障中幸存。
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
当参考附图阅读以下详细描述时,将使得其它特征和优点是显而易见的。
附图简述
以下详细描述在结合附图参考时可得到最佳的理解,附图中:
图1是示出其中可实现本地生成的简单纠删码机制的示例性环境的框图;
图2是示出简单纠删码机制的示例性本地生成的框图;
图3是示出实现本地生成的简单纠删码机制的示例性系统的操作方面的框图;
图4是示出实现本地生成的简单纠删码机制的系统中的示例性错误恢复的框图;
图5是示出实现本地生成的简单纠删码机制的系统中的另一示例性错误恢复的框图;
图6是示出简单纠删码机制的示例性本地生成的流程图;
图7是示出示例性的利用简单纠删码来提供冗余数据的流程图;以及
图8是示例性计算设备的框图。
详细描述
以下的描述涉及用于实现本地生成的简单纠删码的机制。纠删码可以是对多个不同数据集的编码。数据的冗余副本可以这样的纠删码以编码状态来维护,该编码状态仅使用了存储该数据的不经编码的副本所需的存储容量的一小部分。为了减少处理资源的消耗,并且实现更高效且更快速的纠删码生成,就如“异或”或XOR一样简单的纠删码可被用于所描述的机制。另外,纠删码可从本地地存储在生成这一纠删码的计算设备上的数据中生成,由此避免网络资源的消耗。数据集的至少一个不经编码的副本应当被维护,而该数据的其余冗余副本可与其它的正交数据编码成一个或多个纠删码。对数据的请求可从这一未经编码的副本来提供。假如未经编码的副本遭受故障(包括毁坏性故障以及不可用性故障),可由另一个运作的并且可用的计算设备生成新的未经编码的副本,该计算设备能够访问纠删码以及也被压入该纠删码的其它数据的未经编码的副本两者。通过递归地应用对编码数据的这一解码,可从多个故障中幸存。
处于解说的目的,此处所描述的技术在对于数据中心而言典型的基础结构的上下文内来提出。具体来说,此处所描述的技术提及多个计算设备、多个故障域、以及它们之间的网络通信。然而,对这类环境和实施例的提及和说明是严格地示例性的,且不旨在将所描述的机制限于所提供的特定示例。事实上,此处所描述的技术同样可适用于其中数据的冗余副本被存储在诸如多个独立的存储介质上、或多个独立计算设备上的任何计算环境,无论这一存储介质或计算设备的物理表现是什么。
另外,虽然未作要求,但以下描述将处在诸如程序模块等正由一个或多个计算设备执行的计算机可执行指令的一般上下文中。更具体而言,除非另外指明,否则描述将参考一个或多个计算设备或外围设备所执行的动作以及其所执行的操作的符号表示。由此,应当理解,有时被称作计算机可执行的这种动作和操作包括处理单元对以结构化形式表示数据的电信号的操纵。这种操纵转换了数据或将其维持在存储器的位置中,这就以本领域技术人员所熟知的方式来重新配置或更改计算设备或外设的操作。数据被维护在其中的数据结构是具有由数据形式所定义的特定属性的物理位置。
一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。此外,本领域技术人员将会认识到这些计算设备不必限于常规个人计算机,并且包括其他计算配置,包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机等等。类似地,这些计算设备不必限于独立计算设备,因为各机制也可以在通过通信网络链接的分布式计算环境中实现。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。
参考图1,示出了示例性系统100,为以下的描述提供上下文。示例性系统100可以位于数据中心(诸如示例性的数据中心120)的上下文中,该数据中心通过网络(诸如网络101)提供数据中心能力和功能。客户端计算设备(诸如客户端计算设备110)可由数据中心120的客户使用来利用通过网络101提供的数据中心能力和功能。例如,为了说明此处所描述的冗余机制的操作,示例性客户端计算设备110可通过网络101向数据中心120传送客户端计算设备110请求由数据中心120存储和保持的数据180。这一数据提供由图1中示出的通信181来解说。
在一个实施例中,当经由通信181接收到数据180之际,数据中心120可标识要在其上存储该数据180的一个或多个计算设备。更具体地,名称服务器计算设备(诸如示例性名称服务器计算设备130)可维护与存储在数据中心120的计算设备(诸如示例性计算设备141、142、143、151、152、153、161、162、163、171、172和173)上的数据有关的元数据。因此,在这一实施例中,名称服务器计算设备(诸如示例性名称服务器计算设备130)可知晓数据中心120的计算设备中的哪个计算设备已在其本地存储介质上存储了任何给定的数据集合。名称服务器计算设备还可维护其它元数据,诸如与数据中心120的服务器计算设备存储附加数据的可用性有关的信息。元数据(诸如什么数据被存储在哪个设备上的位置图)的维护可由名称服务器计算设备使用事务和冗余技术来可靠地维护,事务和冗余技术可使得该名称服务器计算设备在被需要时可靠地可用,在考虑了在此处所描述的各机制的程度上。
在图1中示出的示例中,名称服务器计算设备130可已将计算设备143、162和171标识为数据中心120中要在它们之间维护通过通信181接收的数据180的三个冗余副本的计算设备。名称服务器计算设备130可恰当地指令计算设备143、162以及171,并且这些计算设备中的至少一个可接受正由客户端计算设备110所发送的数据180。例如,如图1中所解说的,通过通信181和191,数据180可被最初定向到服务器计算设备162,在此数据180可被存储为数据196。虽然数据180可与数据196是相同的,但是图1中使用的不同的附图标记表示数据196是数据180的分开且独立的副本。类似的,在本发明及相关联的附图的全文中,不同的副本标记将被用来指相同数据的不同副本。
在接收到数据180并将其本地地存储为数据196之际,在一个实施例中,服务器计算设备162可将数据196重传给其它计算设备(在本示例中,即服务器计算设备143和171)。图1的系统100中所示的通信192和193解说了数据196从服务器计算设备162被分别重传到服务器计算设备143和171,其中该数据可分别被存储为数据198和197。在其它实施例中,数据196、197和198的副本可通过数据中心120的计算设备间的另选通信来生成。在考虑此处所描述的机制的范围内,其中数据的副本被分布在数据中心120的各计算设备之中的方式可以是不相关的。类似地,虽然此处所描述的机制用数据的三个冗余副本(诸如数据副本196、197和198)来示例性地解说,但是它们可被用于导致总共两个或更多个数据副本存储在数据中心120的各计算设备上的任何数据存储冗余。例如,此处所描述的机制同样适用于其中仅两个数据副本被用来提供冗余的数据中心环境,诸如如果每一个副本可被视为以“高度可靠”的方式存储。作为另一示例,此处所描述的机制同样适用于其中四个或更多个数据副本被用来提供冗余的数据中心环境,诸如如果地理分隔被采用,其中多个站点中的每一个包括多个副本。
然而,出于解说所设想的机制的操作的目的,数据中心120可以图1的系统100中解说的状态来维护数据180的三个独立副本,即数据副本196、197、和198。如本领域技术人员将认识到的,这三个副本可提供数据180的冗余存储,因为如果这些副本中的两个或更少个副本变为不可用(诸如通过硬件故障或软件错误),至少一个正确的且可用的副本将保持向诸如客户端计算设备110提供对该数据的访问。
在图1中解说的具体示例中,三个独立的数据副本196、197、198不仅仅被分别维护在分开的计算设备(诸如服务器计算设备162、171和143)上,而且它们还可被维护在分开的故障域中。更具体地并且如图1中所解说的,服务器计算设备143、162和171中的每一个可以是分开的且独立的故障域的一部分,即分别是故障域140、160和170。该故障域可表示能够提供故障独立性的物理构造和环境。例如,故障域140的计算设备141、142和143所消耗的功率可与故障域150的计算设备151、152和153所消耗的功率不同且独立。因此,如果对于故障域140的电能供应被切断,该电源故障将不影响故障域150的计算设备。作为另一示例,故障域140的计算设备可被维护在与故障域150的计算设备分开的建筑物或其它类似结构中。因此,如果对于结构故障发生于包含故障域150的计算设备的建筑物,该故障将不会影响故障域140的计算设备。因此,将数据的冗余副本(诸如数据的冗余副本196、197以及198)不仅维护在分开的计算设备(诸如分别是服务器计算设备162、171和143)上,还维护在跨分开的故障域(诸如故障域140、160和170)上可以是有益的。
如此处所使用的,尽管术语“故障域”包括数据中心的上下文中的以上示例,但不被限制于此。替代地,如此处所使用的,术语“故障域”表示任何硬件组件或组件集,其故障至少部分地与另一硬件组件或组件集独立。因此,硬盘驱动器或固态存储设备的阵列中的每个单个硬盘驱动器或固态存储设备是一个“故障域”。类似的,每个单个计算设备(诸如在小型企业或家庭网络中的)也是一个“故障域”。如可从这些示例中看到的,此处所描述的机制不限于数据中心中的数据冗余应用,而是还可被用于实现多个计算设备或甚至是通信地耦合到单个存储设备的多个存储设备中的数据冗余。在后一种情况下,单个存储设备可执行计算机可执行指令,该指令可执行归属于以下的名称服务器计算设备的功能,尽管存储设备自身(诸如自加密存储设备)的处理能力可能足以实现以下所描述的纠删码生成和解码机制。
返回到图1的示例性系统100,如本领域技术人员还将会认识到的,对数据180的三个分开的副本(以数据副本196、197和198的形式)的维护可消耗维护数据180的单个副本所消耗的存储容量的量的三倍。因此,可能期望在不对存储容量产生相应的负面影响的情况下实现各机制以继续维护数据冗余(诸如图1的系统100所解说的)。
转至图2,参照其中所示的系统200解说了一个这样的示例性机制。如图2的系统200所解说的,具有数据的冗余副本(诸如图1中示出的以上提到的数据的冗余副本196、197和198)的计算设备中的一个或多个可生成代表数据副本的经编码版本的纠删码。例如,图1的系统100中的故障域140中的计算设备143在图2的系统200中被解说为包括四个不同的数据集合,出于引用清楚的目的,数据集合在此将被称为“区间(extent)”。如此处所使用的,术语“区间”表示数据块或数据集,其或者包括单个数据、更大数据的一部分,或者包括聚集在一起的多个更小的数据。如本领域技术人员将认识到的,区间通常被用来使通常在服务器计算环境的上下文内受管理的分立的数据的大小均匀化,该服务器计算环境代表一个或多个客户端主存该数据并且供其使用该数据。作为一个示例,图2中示出的区间211可包括数据180的冗余副本,即图1中解说并在以上描述的被存储在故障域140中的计算设备143上的数据副本198。区间211可还包括除了数据198以外的数据,或者替代地,区间211可仅包含数据198的一部分。然而,由于数据副本198可容易地从区间211中获得,为了便于在以下的描述中引用,提供区间211将等同于提供数据副本198。
如图2的示例性系统200所解说的,计算设备143可包括额外的区间,诸如区间212、213和214,它们可包括额外的数据,包括与区间211的数据无关的或正交的数据。在一个实施例中,一旦获得了适合的区间集合(诸如四个区间211、212、213和214的示例性集合),计算设备143可从这些区间中生成纠删码。如之前指出的,此处所描述的机制使得对简单纠删码的使用能够在维持数据冗余的同时提供降低的存储资源消耗。所描述的机制所允许的一种非常简单的纠删码可以是“异或”或XOR运算。例如,如计算220所指示的,在一个实施例中,计算设备143仅仅对区间211、212、213和214进行XOR以便生成纠删码215。这一XOR可以是按位的、按字节的、或者可使用对二进制数据的其它适当的大小界定。
XOR函数的使用可使得计算220能够被非常快速地执行,因为如本领域技术人员将认识到的,XOR运算可由大部分基于晶体管的处理硬件原生地执行。另外,如本领域技术人员还将认识到的,区间211、212、213和214与纠删码215(纠删码215是通过对那些区间一起作XOR来生成的)之间的关系可以是使得区间211、212、213和214与纠删码215中的任意一个可从其它四个的任意集合中生成。这一关系可基于这样的事实,即如果A XOR B等于C,则AXOR C等于B且B XOR C等于A。拥有A、B和C中的任意两个使得第三个能够通过使用XOR运算来生成。当然,所有的纠删码共享类似的从纠删码和其它未丢失数据集的任意组合中恢复丢失的数据集的能力。因此,虽然以下的描述是示例性地使用XOR功能来解说的,但是此处所描述的机制同样与任何纠删码方案相兼容。使用XOR功能仅仅是为了解说所描述的机制不限于计算上昂贵的纠删码方案来在维持数据冗余的同时提供减少的存储容量消耗。
因此,在状态241,计算设备143可已在其存储介质上存储了区间(诸如区间211、212、213以及214)并且可包括额外的额存储容量以便能够生成纠删码215并将其本地地存储在计算设备143上。接着,一旦完成计算220,计算设备143可处于状态242,其中它已在其存储介质上存储了区间211、212、213以及214以及纠删码215。当计算设备143已完成其对纠删码215的生成(诸如图2中的状态242所解说的),在一个实施例中,计算设备143可丢弃被用来生成纠删码215的每一个区间。因此,如丢弃动作230所解说的,在这一实施例中,计算设备143丢弃区间211、212、213和214的副本。结果,计算设备143可以状态243结束,其中其仅在其存储介质上存储了纠删码215。
通过丢弃曾被存储在计算设备143的存储介质上的区间211、212、213和214,并且仅保留纠删码215,计算设备143可减少其消耗的存储容量的量。更具体的,并且如本领域技术人员将认识到的,由于XOR运算的性质,纠删码215可以是与区间211、212、213和214中的最大的一个大致相同的大小。如果区间211、212、213和214被计算设备143选为在大小上大致相等,则纠删码215可消耗像区间211、212、213和214消耗的存储容量的四分之一般少。
简要地返回图1,其中示出的系统100解说了数据中心120保留数据180的三个副本,即数据副本196、197和198。以上所描述的纠删码生成机制可已由服务器计算设备143所承担,这导致数据副本198仅在服务器计算设备143上以这样的经编码的形式可用。在一个实施例中,服务器计算设备171可承担针对其数据副本197的类似的操作。因此,在这一实施例中,可在消耗如三个数据副本196、197和198将会消耗的存储容量的一半般小的同时提供数据冗余。更具体地,并且如以上所证明的,此处描述的纠删码可消耗如未经编码的数据的存储容量的四分之一般小。因此,如果副本197和198都已被编码成纠删码(诸如以所解说的方式),则消耗的存储容量可能是未经编码数据的全部量加上已被编码成纠删码的两个数据副本的每一个的全部量的四分之一,从而得到数据180的全部量的一倍半的总的存储容量消耗。由于三个数据副本196、197和198的冗余存储消耗数据180的全部量的三倍,该数据180的全部量的一倍半的总的存储容量消耗可代表如数据的三个未经编码的数据副本将会消耗的存储容量的一半般少的消耗。
转至图3,图1的系统100中解说的计算设备和故障域中的一些在图3的系统300中以简化形式示出。例如,系统300被示为包括故障域140(具有计算设备143)、故障域150(具有计算设备151)、故障域160(具有计算设备162)以及故障域170(具有计算设备171),这些中的每一个都最初在以上结合图1中的系统100提出。在图3的示例性系统300中,计算设备143被解说为包括纠删码215,图2中解说并在以上详细描述了纠删码215的生成。以类似方式,计算设备171也可已从包括其如图1中示出的数据副本197的区间中生成了纠删码315,该纠删码315以还未被解说的其它区间来编码。例如,区间中的可能已被存储在计算设备171上那个区间(计算设备171可已选择其用于纠删码生成)可能已经是其区间351的副本(在图3的系统300中被示为存储在故障域340中的计算设备341的存储设备上)。
如图2的示例性系统200所解说的,由计算设备143所生成的纠删码215可已从图2中示出的区间211、212、213和214中生成。一个这样的区间(即区间211)可能已经是曾存储在服务器计算设备143上的区间311的副本。未经编码的区间311在图3的示例性系统300中被示为存储在故障域160的计算设备162的存储设备上。为了便于引用,区间的副本将在此被称为区间的“实例”。因此,区间311是图2中示出的区间211的实例。类似的,区间212的未经编码的实例(以区间312的形式)被解说为存储在故障域330的计算设备331上。区间213和214的未经编码的实例(也在图2中示出,并且计算设备143生成纠删码215中也被使用)在图3的示例性系统300中被解说为存储在故障域150的计算设备151上作为未经编码的区间313,以及存储在故障域320的计算设备211上作为未经编码的区间314。
在一个实施例中,当请求特定数据集时(诸如举例而言如果客户端计算设备110传送对于其之前提供的数据的请求341),名称服务器计算设备(其在图3的系统300中未被具体解说)可标识计算设备162包括区间311,该区间311既是未经编码的,又包括客户端计算设备110经由请求341请求的数据。的确,名称服务器计算设备可追踪图3的系统300中示出的每一个区间的位置和状态,诸如每一个区间的每一个实例是编码形式还是未经编码形式。因此,这样的名称服务器计算设备可将请求341路由到计算设备162,计算设备162可随后用未经编码的区间311或其相关部分来作出响应,如图3的系统300的通信342所解说的。在一个实施例中,名称服务器计算设备功能可由图3中示出的计算设备中的任意一个或多个来提供。例如,客户端计算设备110可执行提供名称服务器功能的计算机可执行指令。在这一实施例中,客户端计算设备110可(其自己担任名称服务器)确定请求341要被定向到计算设备162。在其它实施例中,如所指出的,客户端计算设备110可被其它名称服务器计算设备明确指令将请求341定向到服务器计算设备162。作为响应的将区间311经由通信342提供给客户端计算设备110假定计算设备162对客户端计算设备110运作地、通信地可用,并且区间311被恰当和正确地存储在计算设备162上。
转至图4,其中示出的系统400解说了考虑计算设备162的故障的操作。该故障可包括计算设备162自身或其组件中的任意一个的硬件故障、相关支持机制(诸如功率递送)的故障、计算设备162的不可用性(诸如因为诸如重启或崩溃之类的临时情况)、或者以区间311不恰当或不正确地存储在计算设备162的一个或多个存储设备上的形式的故障。无论计算设备162不能提供区间311的原因是什么,客户端计算设备110仍然可具有对包含在区间311中的数据的请求421。如之前所指出的,在以上描述的示例性场景中,计算设备143可能已包括了区间311的实例,即图2中示出的区间211,并且该实例可被编码为纠删码215。因此,在一个实施例中,来自客户端计算设备110的请求可诸如被以上描述的名称服务器计算设备定向到服务器计算设备143。这一来自客户端计算设备110的对于服务器计算设备143的请求在图4的系统400中被解说为请求421。
响应于该请求421,计算设备143可被提供之前存储在该计算设备上的区间211的未经编码版本。在一个实施例中,计算设备142可通过对纠删码215与原先被XOR以便最初生成纠删码215的其它区间(不包括区间211)进行XOR来获得区间211的未经编码版本。在其它实施例中,区间211的未经编码版本可使用就当初被用来生成纠删码215的纠删码生成机制而言适合的无论何种机制来从纠删码215和被编码成该纠删码215的其它区间212、213和214中获得。为了执行这一从纠删码215解码区间211,计算设备143可从其它计算设备请求区间212、213和214的实例,纠删码215是从这些区间中生成的,诸如图2中所示出的。例如,计算设备143可与名称服务器计算设备通信,名称服务器计算设备可进而标识其上可已存储了图2中示出的区间212、213和214的未经编码形式的实例的一个或多个计算设备,纠删码215曾经是从这些区间212、213和214中生成的。在图4中解说的示例性系统400中,计算设备331可包括未经编码的区间312,其可以是图2中示出的并且曾被用来生成纠删码215的区间212的实例。类似的,在图4中解说的示例性系统400中,计算设备151和311可分别包括未经编码的区间313和314,其分别可以是图2中示出的并且曾被用来生成纠删码215的区间213和214的实例。
为了使得计算设备143能够重新生成图2中所示的未经编码的区间211,计算设备331可将未经编码的区间312的实例提供给计算设备143,如图4中的通信432所解说的。如计算设备143所接收并存储于其上的,区间312的实例在图4中带有附图标记412以说明它是存储在计算设备143(而不是计算设备331)上的不同的副本。另外,出于本示例的目的,图4中示出的区间412和312以及图2中示出的区间212可全都是同一区间的实例。类似地,为了使得计算设备143能够重新生成未经编码的区间211,计算设备311可提供未经编码的区间314的实例,如通信434所解说的,而计算设备151可提供未经编码的区间313的实例,如通信433所解说的。由于存储在计算设备143上,区间314的实例在图4中带有标记414,而区间313的实例带有标记413,以表明它们是不同的副本。
一旦计算设备143获得了区间412、414和413(如所指示的,它们可分别是图2中示出的区间212、214和213的实例并且被用来生成纠删码215),计算设备143可在一个实施例中对区间412、414、413和纠删码215一起进行XOR(如计算420所解说的)以推导出区间411,区间411可以是最初被用来生成纠删码215的区间211的副本。在其它实施例中,如所描述的,计算420可使用就当初曾被用来生成纠删码215的纠删编码而言适用的无论何种机制来推导区间411。服务器计算设备143可随后响应于通信421在通信422中提供未经编码区间411或其相关部分给客户端计算设备110。
如可见到的,服务器计算设备143可以未经编码的区间411的形式来提供区间311的冗余副本,该区间311由于服务器计算设备163的故障而不再可访问。服务器计算设备143可提供这一冗余副本,同时仅保留了单个纠删码215,如所指出的,这可消耗如曾被一起压入来生成该单个纠删码215的四个区间所消耗的存储容量的四分之一般小。另外,如图2中所解说的,并且如以上详细描述的,可已根据本地地存储在计算设备143上的数据而生成了纠删码215,由此避免了为了生成当初的纠删码215而进行网络传输。虽然网络传输(诸如图4中解说的并且上文中详细描述的通信432、433和434)可能对于从区间被压入其中的纠删码中生成未经编码的区间而言是必需的,但是该网络传输可以具有与故障情况下冗余机制所通常要求的网络传输类似的量级。因此,以上描述的机制可导致网络传输的量方面的有意义的降低,同时仍然提供同等量的冗余。
另外,如还可看到的,所描述的机制可提供对非常简单的纠删码方案的使用,包括但不限于对简单的数学XOR运算的使用。这样得到的纠删码方案可被用来在故障情况下提供被请求的数据,同时消耗未经编码数据所消耗的存储容量的一小部分。因此,以上描述的机制可在优化利用存储和处理能力两者的同时提供冗余。
在一个实施例中,此处所描述的机制可以递归形式实现以在多个故障中幸存。例如,并且参照图5的是示例性系统500,在一个实施例中,即使服务器计算设备162已故障并且计算设备中的包括计算设备143所请求的未经编码的区间的那个计算设备(诸如例如服务器计算设备151)也已故障,计算设备143可仍然生成区间411(诸如以与以上参照图4的是示例性系统400详细描述的类似的方式)。更具体地,并且如图5的示例性系统500所解说的,计算设备143可仍然请求被用来生成纠删码的未经编码的区间(当然,除了未经编码的区间211)。然而,在图5的示例性系统500中,虽然服务器计算设备143可分别经由通信432和434接收分别来自计算设备331和321的区间312和314,并且将它们分别存储为区间412和414,但是服务器计算设备143可能在获取来自计算设备151的任何区间时故障,因为该计算设备可能也已故障。
在这种情形下,在一个实施例中,以上描述的机制可被递归地应用。更具体地,服务器计算设备143可充当客户端并且可请求区间213的未经编码的实例,该区间213被用来生成纠删码215。作为响应,如以上详细描述的,名称服务器可标识包括从区间213的实例中生成的纠删码的一个或多个计算设备。例如,名称服务器可标识故障域580中的计算设备581为包括纠删码555,纠删码555可以是曾经从包括区间213的实例的区间中生成的。该经标识的计算设备581可随后执行以上描述的步骤来解码区间213的实例。例如,服务器计算设备581可从其它计算设备获得曾被用来生成纠删码555的其它区间的未经编码的版本。因此,如图5的示例性系统500所解说的,计算设备341可经由通信531提供区间351。如计算设备581上存储的,所提供的区间351的实例在图5中带有附图标记551以说明它是区间351的不同的副本。类似的,故障域540中的计算设备541可经由通信533提供未经编码的区间553。同样,故障域570中的计算设备571可经由通信532提供未经编码的区间552。如计算设备581上存储的,区间553的实例在图5中带有附图标记563以说明它是区间553的不同的副本。类似的,区间552的实例带有附图标记562。
通过区间551、563、562以及其最初拥有的纠删码555,计算设备581可执行计算522来生成未经编码的区间513。例如,在所解说的具体实施例中,如计算522所指示的,未经编码的区间513可通过对区间551、563和562以及纠删码555进行XOR来生成。在其它实施例中,如所描述的,可使用对于曾被用来生成纠删码555的纠删码机制而言适合的解码机制。以此方式,计算设备581可推导出区间513。区间513可以是由于计算设备151的故障而不可再访问的区间313的实例。因此,一旦(诸如由计算设备581)推导出区间513,区间513可如所解说的通过通信535被提供给计算设备143。一旦接收到区间513(计算设备143可将其存储为区间523),计算设备143可继续处理计算521(诸如以以上详细描述的方式,除了将区间313替换为等同的区间523,区间313在上文被描述为是从计算设备151获得的,区间523是以所描述的方式响应于计算设备151的故障而生成的)。如之前指出的,执行计算521可得到区间411。因此,可以看到,通过对以上描述的机制的迭代应用,可容许多个故障。
出于解说的目的,以上描述的机制已在其中三个数据副本被存储的冗余环境下描述。以上描述的机制使得那些副本中的两个能够被减为纠删码,由此减少了存储容量的利用,同时维持冗余。然而,这类描述是严格地示例性的,且所描述的机制同样适用于任何其它量的冗余。例如,可存储两个数据副本,其中之一被用来生成纠删码集。作为另一示例,可存储四个数据副本,其中的两个可被用来生成纠删码集,而另两个可以未经编码的形式保留。如本领域技术人员将认识到的,其他枚举同样适用。
在其它枚举中,不同数量个故障域可被使用并且可实现不同量的存储容量节省。例如,如果数据中心维护了四个冗余的数据副本,并且三个这样的副本被压入纠删码(诸如以以上详细描述的方式),则七个故障域可提供比采用三个完整的未经编码的冗余副本可获得的更大程度的可靠性。然而,该系统可能仅使用了最初的四个数据冗余副本将使用的总存储容量的三分之一。具体来说,可维护一个未经编码的数据副本,而纠删码可消耗未经编码的副本将消耗的存储空间的量的分别是六分之一、九分之一和十八分之一,如本领域技术人员将认识到的。
转至图6,流程图600在其中示出可诸如由服务器计算设备用来生成纠删码的一系列示例性步骤,该服务器计算设备包括其想要寻求压入纠删码中的两个或更多个区间。如此处所使用的,动词“压”表示从两个或更多个区间中产生纠删码。最初,在步骤610,如所解说的,两个或更多个区间可被接收用于存储在执行流程图600的各步骤的计算设备的本地存储介质上。接着,在步骤620,可作出关于区间是否要以未经修改且未经编码的形式来保留的决策。如以上所解说的,计算设备中的接收到区间的冗余副本的某些计算设备可以未经编码的形式保留这类区间并且可抑制将这类区间压成纠删码。在一个实施例中,对于哪些计算设备要保留未经编码形式的区间的判断可由名称服务器来执行。在替代实施例中,可由各个计算设备来执行初始判断,随后各个计算设备可寻求中央授权机构(诸如名称服务器)寻求批准。无论在步骤620采用何种方式来作出判断,如果在步骤620确定区间要以未经编码形式保留,则相关处理可在步骤660结束。
相反,如果在步骤620确定区间要被压成纠删码,则处理可前进至步骤630,在此选择两个或更多个区间被压成纠删码。如之前所指出的,在一个实施例中,四个区间可被压成单个纠删码。然而,如本领域技术人员将会认识到的,大于1的任何数目个区间可使用以上描述的机制来压成纠删码,并且在将四个区间压成单个纠删码的上下文内提供的以上描述是严格地示例性的并且出于解说的目的而提供,并且不应用于任何方式理解为将以上描述的实施例限制为纠删码仅从四个区间生成。
在一个实施例中,步骤630中对区间的选择需要选择两个或更多个具有大致相等大小的区间,因为如所指出的,生成的纠删码的大小可等于被压成该纠删码的最大的区间的大小。因此,如果大致相等大小的纠删码被选择,则存储容量节省可被最大化。另外,在一个实施例中,步骤630中对区间的选择可能需要选择其内容可以兼容的两个或更多个区间。兼容性可能需要具有大致类似寿命、类似的被请求或访问的概率、类似的源、或者其它类似之处的内容。
诸如在步骤630的对区间的选择可由名称服务器计算设备告知,或者可以其它方式考虑被指派以未经编码形式存储所选择的区间的计算设备。更具体地,在以下情况下,在步骤630对两个或更多个区间的选择可避免选择两个或更多个区间被压入单个纠删码:两个这样选择的区间都以未经编码形式存储在相同的故障域内。如本领域技术人员将会认识到的,在这种情况下,如果发生了影响该故障域的故障,则两个区间将同时变为不可用,从而导致从纠删码中重构该区间变得明显困难得多。
一旦在步骤630选择了两个或更多个区间,则处理可前进至步骤640,在此可从所选择的区间中生成纠删码。如以上详细描述的,所描述的机制所支持的一种简单的纠删码方案是XOR运算。因此,在步骤630,在该示例性实施例中,纠删码可通过对那些区间进行XOR来从所选择的区间生成。如之前也指出的,XOR运算可按位、按字节或对于二进制数据的任何其它适当的大小界定来执行。随后,一旦在步骤640生成了纠删码,步骤630处选择的区间(其现在已在步骤640被压入纠删码)可在步骤650删除。然后,在步骤660相关处理可以结束。
转向图7,其中所示的流程图700示出了可用于将区间从该区间被压入的纠删码中解编码出来的一系列示例性步骤。最初,在步骤710,可接收对于区间或对于来自区间的数据的请求,该区间已经被压成纠删码。在一个实施例中(未具体解说在图7中),在生成对应的纠删码之后对区间的删除可出于众多原因被延迟。因此,在这一实施例中,可在步骤710处接收到请求之后作出检查以确定所请求的区间是否已被删除。如果所请求的区间尚未被删除,则该区间可直接响应于步骤710处接收到的请求而被返回,并且相关处理可在步骤760处结束。
然而,如果所请求的区间已被删除且仅仅该区间已被压成的纠删码留下,则处理可前进至步骤720,在此可执行对于被压成同一纠删码的其它区间的标识。在一个实施例中,步骤720可由各个计算设备来执行,并且与纠删码一起保留元数据,元数据包括对于哪些区间被压成该纠删码的指示。在替代实施例中,步骤720可由外部计算设备来执行,诸如名称服务器计算设备,其可被查询以找出步骤720处确定的身份。随后,在步骤730,可向在其存储介质上以未经编码形式存储该区间的计算设备来请求经标识的区间。要将步骤730处的请求定向到的计算设备的标识可从名称服务器计算设备接收,或者替代地可对于执行流程图700的计算设备本地地知晓。
如果步骤730处请求被定向到的计算设备中的一个或多个不包括未经编码的形式区间,则那些计算设备可进而执行图7的示例性流程图700的各步骤。在接收到步骤730处请求的区间之后,处理可前进至步骤740,其中接收的区间和本地提供的纠删码可被用来生成所请求的、丢失的区间。在一个示例性实施例中,为了处理效率,可使用简单的纠删码方案,诸如简单的XOR纠删码。在这一示例性实施例中,如以上详细描述的,丢失的区间可在步骤740通过简单地将本地可用的纠删码与在步骤730请求的并在步骤740的操作之前接收到的区间进行XOR来生成。像之前一样,步骤740处的XOR可按位、按字节或对于二进制数据的任何其它适当的大小界定来执行。步骤740处生成的区间可随后在步骤750响应于在步骤710接收到的请求来提供。然后,在步骤760相关处理可以结束。
在一个实施例中,虽然未在附图中解说,但是从纠删码中解码区间可由请求来自该区间的数据的实体来执行。这一实施例可提供由于避免了得到的未经编码的区间的传输的缘故而导致的网络优化。
转至图8,示例性计算设备800被解说为部分地包括可用于执行和实现以上所描述的机制的硬件元件。示例性计算设备800可包括但不限于,一个或多个中央处理单元(CPU)820、系统存储器830和将包括该系统存储器在内的各种系统组件耦合至处理单元820的系统总线821。系统总线821可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任一种的局部总线。取决于特定物理实现,CPU 820、系统存储器830和计算设备800的其他组件中的一个或多个可以在物理上位于同处,诸如在单个芯片上。在这一情况下,系统总线821的一部分或全部可以只不过是单个芯片内的硅通路,且其在图8中的图示只不过是出于说明目的的记法方便。
计算设备800一般还包括计算机可读介质,该计算机可读介质可包括可被计算设备800访问的任何可用的介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算设备800访问的任何其它介质。然而,计算机存储介质不包括通信介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述中任一组合也应包括在计算机可读介质的范围之内。
在使用通信介质时,计算设备800可以经由到一个或多个远程计算机的逻辑连接在联网环境中工作。图8中描绘的逻辑连接是之前描述的到网络101的通用网络连接871。示例性计算设备800通信地耦合到的网络101可以是局域网(LAN)、广域网(WAN)(诸如因特网)、或其他网络。计算设备800通过网络接口或适配器870连接到通用网络连接871,该网络接口或适配器进而连接到系统总线821。在联网环境中,相对于计算设备800或其部分或外围设备所描绘的程序模块可被存储在通过一般网络连接871通信地耦合到计算设备800的一个或多个其他计算设备的存储器中。应当理解,所示的网络连接是示例性的,并且可使用在计算设备之间建立通信链路的其它手段。
在计算机存储介质中,系统存储器830包括易失性和/或非易失性存储器形式的计算机存储介质,包括只读存储器(ROM)831和随机存取存储器(RAM)832。包含用于引导计算设备800的代码等的基本输入/输出系统833(BIOS)通常被存储在ROM 831中。RAM 832通常包含处理单元820可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图8示出了操作系统834、其它程序模块835和程序数据836。
计算机系统800还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅仅作为示例,图8示出了对不可移动、非易失性介质进行读或写的硬盘驱动器841。可以与示例性计算设备一起使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器841通常通过诸如接口840等不可移动存储器接口连接到系统总线821。
上文讨论并在图8中示出的驱动器及其相关联的计算机存储介质为计算设备800提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图8中,硬盘驱动器841被示为存储了操作系统844、其他程序模块845,以及程序数据846。这些组件可以与操作系统834、其它程序模块835和程序数据836相同或不同。操作系统844、其它程序模块845和程序数据846在这里被标注了不同的标号是为了说明至少它们是不同的副本。
从上面的描述可以看出,已经呈现了提供用于通过使用本地生成的基于XOR的纠删码的数据冗余的机制。考虑此处所述的主题的众多可能的变化,本发明要求保护落入以下权利要求书范围内的所有这样的实施例及其等效实施方式。

Claims (12)

1.一种用于生成纠删码的方法,所述方法包括:
选择两个或更多个区间的本地存储的实例,使得所选择的区间中的每一个区间的至少一个其它实例被以未经编码的形式存储在不同的故障域上,其中区间表示数据集合,故障域表示从数据中心的计算设备集合中划分而成的用于分摊故障风险的计算设备子集;
从所选择的所述两个或更多个区间的本地存储的实例本地地生成所述纠删码;以及
在生成所述纠删码后删除所选择的所述两个或更多个区间的本地存储的实例。
2.如权利要求1所述的方法,其特征在于,用于从所选择的所述两个或更多个区间的本地存储的实例生成所述纠删码的计算机可执行指令包括用于对所选择的所述两个或更多个区间的本地存储的实例进行XOR的计算机可执行指令。
3.如权利要求1所述的方法,其特征在于,还包括从所述纠删码生成所请求的区间的实例,所请求的区间是所选择的区间中的一个,所述从所述纠删码生成所请求的区间的实例进一步包括:
在所述纠删码生成之后的删除之后,标识所选择的区间中除了所请求的区间之外的、其本地存储的实例也被压入了所述纠删码的全部区间;
从所标识的其它区间的实例以未经编码形式存储的位置请求所标识的其它区间;
响应于所述请求,接收所标识的其它区间的未经编码形式的实例;以及
从所述纠删码以及接收到的其它区间的未经编码形式的实例生成所请求的区间。
4.如权利要求3所述的方法,其特征在于,进一步包括:
接收对所述区间的请求;
确定所述纠删码生成之后的删除是否已被执行;以及
仅在所述纠删码生成之后已执行了删除的情况下才执行所述标识、所述请求、所述接收、以及所述区间的所述生成。
5.一种将计算机可读数据冗余地存储在计算机可读存储介质上的方法,所述方法包括:
接收供存储的数据;
生成第一区间,所述第一区间包括所述数据的至少一部分,其中区间表示数据集合;
将所生成的第一区间的两个或更多个实例中的每一个实例存储在不同的故障域,其中故障域表示从数据中心的计算设备集合中划分而成的用于分摊故障风险的计算设备子集;
在所述不同的故障域中的第一个故障域处选择所述第一区间的实例和至少一个其它区间的实例,所选择的至少一个其它区间具有存储在与这两个不同的故障域不同的第三故障域中的它的另一未经编码的实例;
在所述不同的故障域中的所述第一个故障域处从所述第一区间的实例和所述至少一个其它区间的实例生成纠删码;以及
在生成所述纠删码之后从所述两个不同的故障域中的所述第一个故障域处删除所述第一区间的实例和所述至少一个其它区间的实例。
6.如权利要求5所述的方法,其特征在于,进一步包括:
接收对所述第一区间的请求;
在所述纠删码生成之后的删除之后,标识所述至少一个其它区间中被压入所述纠删码的全部区间;
从所标识的区间的实例以未经编码形式存储的位置请求所标识的区间;
响应于所述请求,接收所标识的区间的未经编码形式的实例;以及
从所述纠删码以及接收到的所标识的区间的未经编码形式的实例生成所述第一区间的实例。
7.一种冗余数据存储系统,包括:
包括第一区间的第一实例和第二区间的第一实例的第一故障域,其中区间表示数据集合,故障域表示从数据中心的计算设备集合中划分而成的用于分摊故障风险的计算设备子集;
不同于所述第一故障域的第二故障域,所述第二故障域包括所述第一区间的未经编码的第二实例;
不同于所述第一故障域和第二故障域两者的第三故障域,所述第三故障域包括所述第二区间的未经编码的第二实例;以及
执行计算机可执行指令的第一组一个或多个处理单元,所述计算机可执行指令的执行使得所述第一组一个或多个处理单元执行包括以下的步骤:
在所述第一故障域从包括所述第一区间的第一实例和所述第二区间的第一实例的各区间生成第一纠删码;以及
在所述第一纠删码被生成之后从所述第一故障域删除所述第一区间的第一实例和所述第二区间的第一实例。
8.如权利要求7所述的冗余数据存储系统,其特征在于,进一步包括:
不同于所述第一、第二和第三故障域中的每一个的第四故障域,所述第四故障域包括:所述第一区间的第三实例和所述第二区间的第三实例;以及
执行计算机可执行指令的第二组一个或多个处理单元,所述计算机可执行指令的执行使得所述第二组一个或多个处理单元执行包括以下的步骤:
在所述第四故障域从包括所述第一区间的第三实例和所述第二区间的第三实例的各区间生成第二纠删码;以及
在所述第二纠删码被生成之后从所述第四故障域删除所述第一区间的第三实例和所述第二区间的第三实例。
9.如权利要求7所述的冗余数据存储系统,其特征在于,所述第一组一个或多个处理单元执行进一步的计算机可执行指令,所述进一步的计算机可执行指令的执行使得所述第一组一个或多个处理单元执行包括以下的步骤:
在所述纠删码生成之后的删除之后接收对于所述第一区间的请求;
从所述第三故障域请求所述第二区间的第三实例;
从所述第一纠删码和所述第二区间的第三实例生成所述第一区间的第三实例。
10.如权利要求7所述的冗余数据存储系统,其特征在于,还包括一个或多个名称服务器,所述一个或多个名称服务器维护所述第一纠删码的位置和所述第一区间和所述第二区间的各实例中的每一个实例。
11.一种用于生成纠删码的系统,所述系统包括:
用于选择两个或更多个区间的本地存储的实例的装置,使得所选择的区间中的每一个区间的至少一个其它实例被以未经编码的形式存储在不同的故障域上,其中区间表示数据集合,故障域表示从数据中心的计算设备集合中划分而成的用于分摊故障风险的计算设备子集;
用于从所选择的所述两个或更多个区间的本地存储的实例本地地生成所述纠删码的装置;以及
用于在生成所述纠删码后删除所选择的所述两个或更多个区间的本地存储的实例的装置。
12.一种将计算机可读数据冗余地存储在计算机可读存储介质上的系统,所述系统包括:
用于接收供存储的数据的装置;
用于生成第一区间的装置,所述第一区间包括所述数据的至少一部分,其中区间表示数据集合;
用于将所生成的第一区间的两个或更多个实例中的每一个实例存储在不同的故障域的装置,其中故障域表示从数据中心的计算设备集合中划分而成的用于分摊故障风险的计算设备子集;
用于在所述不同的故障域中的第一个故障域处选择所述第一区间的实例和至少一个其它区间的实例的装置,所选择的至少一个其它区间具有存储在与这两个不同的故障域不同的第三故障域中的它的另一未经编码的实例;
用于在所述不同的故障域中的所述第一个故障域处从所述第一区间的实例和所述至少一个其它区间的实例生成纠删码的装置;以及
用于在生成所述纠删码之后从所述两个不同的故障域中的所述第一个故障域处删除所述第一区间的实例和所述至少一个其它区间的实例的装置。
CN201480036757.4A 2013-06-25 2014-06-23 本地生成的简单纠删码 Active CN105378676B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/927,061 US9354991B2 (en) 2013-06-25 2013-06-25 Locally generated simple erasure codes
US13/927,061 2013-06-25
PCT/US2014/043551 WO2014209823A1 (en) 2013-06-25 2014-06-23 Locally generated simple erasure codes

Publications (2)

Publication Number Publication Date
CN105378676A CN105378676A (zh) 2016-03-02
CN105378676B true CN105378676B (zh) 2019-06-21

Family

ID=51257570

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480036757.4A Active CN105378676B (zh) 2013-06-25 2014-06-23 本地生成的简单纠删码

Country Status (6)

Country Link
US (1) US9354991B2 (zh)
EP (1) EP3014451B1 (zh)
CN (1) CN105378676B (zh)
BR (1) BR112015031633B1 (zh)
TW (1) TW201506607A (zh)
WO (1) WO2014209823A1 (zh)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9595979B2 (en) * 2015-01-20 2017-03-14 International Business Machines Corporation Multiple erasure codes for distributed storage
WO2016126888A1 (en) * 2015-02-03 2016-08-11 Sobhani Shahraun Scott Space-based electronic data storage and transfer network system
US9983959B2 (en) 2015-06-29 2018-05-29 Microsoft Technology Licensing, Llc Erasure coding of data within a group of storage units based on connection characteristics
US9830221B2 (en) * 2016-04-05 2017-11-28 Netapp, Inc. Restoration of erasure-coded data via data shuttle in distributed storage system
US10255134B2 (en) * 2017-01-20 2019-04-09 Samsung Electronics Co., Ltd. Control plane method and apparatus for providing erasure code protection across multiple storage devices
WO2018203958A2 (en) * 2017-02-17 2018-11-08 SEAKR Engineering, Inc. Systems and methods for space-based and hybrid distributed data storage
US10761743B1 (en) 2017-07-17 2020-09-01 EMC IP Holding Company LLC Establishing data reliability groups within a geographically distributed data storage environment
US10284234B1 (en) 2017-07-19 2019-05-07 EMC IP Holding Company LLC Facilitation of data deletion for distributed erasure coding
US10817388B1 (en) 2017-07-21 2020-10-27 EMC IP Holding Company LLC Recovery of tree data in a geographically distributed environment
US10684780B1 (en) 2017-07-27 2020-06-16 EMC IP Holding Company LLC Time sensitive data convolution and de-convolution
US10880040B1 (en) 2017-10-23 2020-12-29 EMC IP Holding Company LLC Scale-out distributed erasure coding
US10382554B1 (en) 2018-01-04 2019-08-13 Emc Corporation Handling deletes with distributed erasure coding
US10817374B2 (en) 2018-04-12 2020-10-27 EMC IP Holding Company LLC Meta chunks
US10579297B2 (en) 2018-04-27 2020-03-03 EMC IP Holding Company LLC Scaling-in for geographically diverse storage
US10936196B2 (en) * 2018-06-15 2021-03-02 EMC IP Holding Company LLC Data convolution for geographically diverse storage
US11023130B2 (en) 2018-06-15 2021-06-01 EMC IP Holding Company LLC Deleting data in a geographically diverse storage construct
CN110196682B (zh) * 2018-06-15 2022-03-18 腾讯科技(深圳)有限公司 数据管理方法、装置、计算设备及存储介质
US10719250B2 (en) 2018-06-29 2020-07-21 EMC IP Holding Company LLC System and method for combining erasure-coded protection sets
US20190042365A1 (en) * 2018-09-26 2019-02-07 Intel Corporation Read-optimized lazy erasure coding
US11436203B2 (en) 2018-11-02 2022-09-06 EMC IP Holding Company LLC Scaling out geographically diverse storage
US10901635B2 (en) 2018-12-04 2021-01-26 EMC IP Holding Company LLC Mapped redundant array of independent nodes for data storage with high performance using logical columns of the nodes with different widths and different positioning patterns
US11119683B2 (en) 2018-12-20 2021-09-14 EMC IP Holding Company LLC Logical compaction of a degraded chunk in a geographically diverse data storage system
US10931777B2 (en) 2018-12-20 2021-02-23 EMC IP Holding Company LLC Network efficient geographically diverse data storage system employing degraded chunks
US10892782B2 (en) 2018-12-21 2021-01-12 EMC IP Holding Company LLC Flexible system and method for combining erasure-coded protection sets
US10768840B2 (en) 2019-01-04 2020-09-08 EMC IP Holding Company LLC Updating protection sets in a geographically distributed storage environment
US11023331B2 (en) 2019-01-04 2021-06-01 EMC IP Holding Company LLC Fast recovery of data in a geographically distributed storage environment
US10942827B2 (en) 2019-01-22 2021-03-09 EMC IP Holding Company LLC Replication of data in a geographically distributed storage environment
US10866766B2 (en) 2019-01-29 2020-12-15 EMC IP Holding Company LLC Affinity sensitive data convolution for data storage systems
US10936239B2 (en) 2019-01-29 2021-03-02 EMC IP Holding Company LLC Cluster contraction of a mapped redundant array of independent nodes
US10942825B2 (en) 2019-01-29 2021-03-09 EMC IP Holding Company LLC Mitigating real node failure in a mapped redundant array of independent nodes
US10846003B2 (en) 2019-01-29 2020-11-24 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage
US10944826B2 (en) 2019-04-03 2021-03-09 EMC IP Holding Company LLC Selective instantiation of a storage service for a mapped redundant array of independent nodes
US11029865B2 (en) 2019-04-03 2021-06-08 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a mapped redundant array of independent nodes
US11119686B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Preservation of data during scaling of a geographically diverse data storage system
US11121727B2 (en) 2019-04-30 2021-09-14 EMC IP Holding Company LLC Adaptive data storing for data storage systems employing erasure coding
US11113146B2 (en) 2019-04-30 2021-09-07 EMC IP Holding Company LLC Chunk segment recovery via hierarchical erasure coding in a geographically diverse data storage system
US11748004B2 (en) 2019-05-03 2023-09-05 EMC IP Holding Company LLC Data replication using active and passive data storage modes
CN111949628B (zh) * 2019-05-16 2024-05-17 北京京东尚科信息技术有限公司 数据操作方法、装置和分布式存储系统
US11209996B2 (en) 2019-07-15 2021-12-28 EMC IP Holding Company LLC Mapped cluster stretching for increasing workload in a data storage system
US11023145B2 (en) 2019-07-30 2021-06-01 EMC IP Holding Company LLC Hybrid mapped clusters for data storage
US11449399B2 (en) 2019-07-30 2022-09-20 EMC IP Holding Company LLC Mitigating real node failure of a doubly mapped redundant array of independent nodes
US11228322B2 (en) 2019-09-13 2022-01-18 EMC IP Holding Company LLC Rebalancing in a geographically diverse storage system employing erasure coding
US11449248B2 (en) 2019-09-26 2022-09-20 EMC IP Holding Company LLC Mapped redundant array of independent data storage regions
US11435910B2 (en) 2019-10-31 2022-09-06 EMC IP Holding Company LLC Heterogeneous mapped redundant array of independent nodes for data storage
US11119690B2 (en) 2019-10-31 2021-09-14 EMC IP Holding Company LLC Consolidation of protection sets in a geographically diverse data storage environment
US11288139B2 (en) 2019-10-31 2022-03-29 EMC IP Holding Company LLC Two-step recovery employing erasure coding in a geographically diverse data storage system
US11435957B2 (en) 2019-11-27 2022-09-06 EMC IP Holding Company LLC Selective instantiation of a storage service for a doubly mapped redundant array of independent nodes
US11144220B2 (en) 2019-12-24 2021-10-12 EMC IP Holding Company LLC Affinity sensitive storage of data corresponding to a doubly mapped redundant array of independent nodes
US11231860B2 (en) 2020-01-17 2022-01-25 EMC IP Holding Company LLC Doubly mapped redundant array of independent nodes for data storage with high performance
US11507308B2 (en) 2020-03-30 2022-11-22 EMC IP Holding Company LLC Disk access event control for mapped nodes supported by a real cluster storage system
US11288229B2 (en) 2020-05-29 2022-03-29 EMC IP Holding Company LLC Verifiable intra-cluster migration for a chunk storage system
US11693983B2 (en) 2020-10-28 2023-07-04 EMC IP Holding Company LLC Data protection via commutative erasure coding in a geographically diverse data storage system
US11847141B2 (en) 2021-01-19 2023-12-19 EMC IP Holding Company LLC Mapped redundant array of independent nodes employing mapped reliability groups for data storage
US11625174B2 (en) 2021-01-20 2023-04-11 EMC IP Holding Company LLC Parity allocation for a virtual redundant array of independent disks
US11449234B1 (en) 2021-05-28 2022-09-20 EMC IP Holding Company LLC Efficient data access operations via a mapping layer instance for a doubly mapped redundant array of independent nodes
US11354191B1 (en) 2021-05-28 2022-06-07 EMC IP Holding Company LLC Erasure coding in a large geographically diverse data storage system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101868785A (zh) * 2007-09-21 2010-10-20 惠普开发有限公司 生成数据存储系统的并行恢复策略
CN102270161A (zh) * 2011-06-09 2011-12-07 华中科技大学 一种基于纠删码的多等级容错数据存储、读取和恢复方法
US8296515B1 (en) * 2009-05-22 2012-10-23 Nvidia Corporation RAID-6 computation system and method

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191357B2 (en) * 2002-03-29 2007-03-13 Panasas, Inc. Hybrid quorum/primary-backup fault-tolerance model
US7581156B2 (en) 2002-12-16 2009-08-25 Microsoft Corporation Systems and methods for providing improved encoding and reconstruction of data
US20040254964A1 (en) * 2003-06-12 2004-12-16 Shoji Kodama Data replication with rollback
US7546342B2 (en) 2004-05-14 2009-06-09 Microsoft Corporation Distributed hosting of web content using partial replication
US7596673B2 (en) 2005-12-08 2009-09-29 Sony Corporation Failure tolerant data storage
US20080183963A1 (en) 2007-01-31 2008-07-31 International Business Machines Corporation System, Method, And Service For Providing A Generic RAID Engine And Optimizer
US7930611B2 (en) * 2007-03-09 2011-04-19 Microsoft Corporation Erasure-resilient codes having multiple protection groups
US7904782B2 (en) * 2007-03-09 2011-03-08 Microsoft Corporation Multiple protection group codes having maximally recoverable property
US8051362B2 (en) * 2007-06-15 2011-11-01 Microsoft Corporation Distributed data storage using erasure resilient coding
US20100218037A1 (en) 2008-09-16 2010-08-26 File System Labs Llc Matrix-based Error Correction and Erasure Code Methods and Apparatus and Applications Thereof
EP2187397A1 (en) 2008-11-05 2010-05-19 Thomson Licensing Method and apparatus for erasure decoding an ECC coded bitstream
US8458287B2 (en) 2009-07-31 2013-06-04 Microsoft Corporation Erasure coded storage aggregation in data centers
US8473778B2 (en) * 2010-09-08 2013-06-25 Microsoft Corporation Erasure coding immutable data
US8683153B1 (en) * 2010-09-29 2014-03-25 Emc Corporation Iterating for deduplication
US9274977B2 (en) * 2010-11-01 2016-03-01 International Business Machines Corporation Storing data integrity information utilizing dispersed storage
WO2012089701A1 (en) * 2010-12-27 2012-07-05 Amplidata Nv A distributed object storage system comprising performance optimizations
US8621330B2 (en) 2011-03-21 2013-12-31 Microsoft Corporation High rate locally decodable codes
US9141679B2 (en) 2011-08-31 2015-09-22 Microsoft Technology Licensing, Llc Cloud data storage using redundant encoding
US8799746B2 (en) * 2012-06-13 2014-08-05 Caringo, Inc. Erasure coding and replication in storage clusters

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101868785A (zh) * 2007-09-21 2010-10-20 惠普开发有限公司 生成数据存储系统的并行恢复策略
US8296515B1 (en) * 2009-05-22 2012-10-23 Nvidia Corporation RAID-6 computation system and method
CN102270161A (zh) * 2011-06-09 2011-12-07 华中科技大学 一种基于纠删码的多等级容错数据存储、读取和恢复方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于XOR纠删码的性能分析;姜泽雄;《中国集成电路》;20090930(第124期);56-57

Also Published As

Publication number Publication date
TW201506607A (zh) 2015-02-16
WO2014209823A1 (en) 2014-12-31
EP3014451A1 (en) 2016-05-04
BR112015031633A8 (pt) 2021-05-25
US20140380088A1 (en) 2014-12-25
EP3014451B1 (en) 2017-12-20
US9354991B2 (en) 2016-05-31
CN105378676A (zh) 2016-03-02
BR112015031633A2 (pt) 2017-07-25
BR112015031633B1 (pt) 2022-05-31

Similar Documents

Publication Publication Date Title
CN105378676B (zh) 本地生成的简单纠删码
US9501341B2 (en) Directory synchronization of a dispersed storage network
US9170884B2 (en) Utilizing cached encoded data slices in a dispersed storage network
US9110819B2 (en) Adjusting data dispersal in a dispersed storage network
US9116626B2 (en) Failsafe directory file system in a dispersed storage network
US8156368B2 (en) Rebuilding lost data in a distributed redundancy data storage system
US9015431B2 (en) Distributed storage revision rollbacks
US8171102B2 (en) Smart access to a dispersed data storage network
US8625635B2 (en) Dispersed storage network frame protocol header
US9501355B2 (en) Storing data and directory information in a distributed storage network
WO2020047707A1 (zh) 分布式存储系统的数据编码、解码及修复方法
US20150067090A1 (en) Storing low retention priority data in a dispersed storage network
US10067831B2 (en) Slice migration in a dispersed storage network
US9229824B2 (en) Caching rebuilt encoded data slices in a dispersed storage network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant