CN109144767B - 数据存储系统及其操作方法 - Google Patents
数据存储系统及其操作方法 Download PDFInfo
- Publication number
- CN109144767B CN109144767B CN201810234156.4A CN201810234156A CN109144767B CN 109144767 B CN109144767 B CN 109144767B CN 201810234156 A CN201810234156 A CN 201810234156A CN 109144767 B CN109144767 B CN 109144767B
- Authority
- CN
- China
- Prior art keywords
- data
- parity
- data elements
- storage
- skip
- 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
Links
- 238000000034 method Methods 0.000 title claims description 74
- 238000013500 data storage Methods 0.000 title claims description 13
- 230000002441 reversible effect Effects 0.000 claims abstract description 14
- 241000630329 Scomberesox saurus saurus Species 0.000 claims description 98
- 239000011159 matrix material Substances 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 9
- 230000001131 transforming effect Effects 0.000 claims description 4
- 238000011084 recovery Methods 0.000 abstract description 19
- 238000005516 engineering process Methods 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 15
- 230000015654 memory Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 230000008439 repair process Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 230000008929 regeneration Effects 0.000 description 3
- 238000011069 regeneration method Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241000255777 Lepidoptera Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3761—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Error Detection And Correction (AREA)
Abstract
公开的技术可以有利地提供有效数据恢复系统,该有效数据恢复系统包括包含第一存储节点和第二存储节点的多个存储节点,以及耦合到存储节点并管理存储节点上的数据的存储的存储逻辑。存储逻辑可运行以:接收包括数据元素的数据集合,该数据集合包括与第一存储节点相关联的数据元素的第一集合和与第二存储节点相关联的数据元素的第二集合;生成数据集合的第一奇偶校验,第一奇偶校验包括包含水平奇偶校验条目的集合的水平奇偶校验;以及组合来自数据集合的数据元素以产生包括跳过者奇偶校验条目的集合的跳过者奇偶校验。组合数据元素包括:使用可逆操作变换来自数据集合的数据元素的子集,水平奇偶校验条目的集合不同于跳过者奇偶校验条目的集合。
Description
技术领域
本公开涉及数据恢复和/或再生。
背景技术
当数据被传输、处理、和/或储存在存储器中,数据可能经常被损坏。奇偶校验位经常被用来验证数据的完整性以保证不会损坏。由于过去若干年中正在被处理和储存的数据量已经急剧地增加,并且只是在加速,特别是在诸如企业存储和云应用的大型存储应用中,所以要求的奇偶校验检查量正在以相应的速率上升。
然而,常规的奇偶校验检查算法经常要求增加地显著的计算和存储要求,并且不能以可接受的速率缩放。当使用先前计算的奇偶校验信息执行丢失的数据重构时,以上问题进一步恶化,因为使用常规的奇偶校验重构技巧,特别是在存储设备故障的事件中,对于准确地重构数据的要求是繁琐的且计算上昂贵的。
作为进一步的示例,对于在过去的十年左右,术语“再生代码”已经有时在编码理论界被用于描述代码构建,该代码构建专注于被要求以修复一个或多个故障(1个故障、2个故障等,取决于容许多少故障)的修复通信量(数据)的量。
例如,总共存在具有每个1太字节(terabyte,TB)的10个用户节点和每个1TB的2个奇偶校验节点的12TB。在前解决方案经常使用传统的Reed Solomon代码用于错误纠正,并且将容许多达2个节点故障。在1个节点故障的情况下,通信量将是10TB(具有用户数据的9个幸存节点和1个奇偶校验节点),因此相对于原始的10个用户节点的大小没有提供通信量节省。在 2次故障的情况下,通信量将是相同的10TB。
发明内容
根据本公开中的主题的一个创新方面,系统包括数据存储系统,该数据存储系统包括包含第一存储节点和第二存储节点的多个存储节点,以及耦合到存储节点并管理存储节点上的数据的存储的存储逻辑。存储逻辑可运行以:接收包括数据元素的数据集合,该数据元素包括与第一存储节点相关联的数据元素的第一集合和与第二存储节点相关联的数据元素的第二集合;生成数据集合的第一奇偶校验,第一奇偶校验包括包含水平奇偶校验条目的集合的水平奇偶校验;以及组合来自数据集合的数据元素以产生包括跳过者奇偶校验条目的集合的跳过者奇偶校验。组合数据元素包括:使用可逆(invertible) 操作变换来自数据集合的数据元素的子集,水平奇偶校验条目的集合不同于跳过者(skipper)奇偶校验条目的集合。
通常,本公开中描述的主题的另一创新方面可以用包括以下各项的方法来实施:接收包括数据元素的数据集合,该数据元素包括与第一存储节点相关联的数据元素的第一集合和与第二存储节点相关联的数据元素的第二集合;生成数据集合的第一奇偶校验,第一奇偶校验包括包含水平奇偶校验条目的集合的水平奇偶校验;以及组合来自数据集合的数据元素以产生包括跳过者奇偶校验条目的集合的跳过者奇偶校验,组合数据元素包括:使用可逆操作变换来自数据集合的数据元素的子集,水平奇偶校验条目的集合不同于跳过者奇偶校验条目的集合。
这些方面中的一个或多个的其它实施方式包括相应的系统、装置、和计算机程序、以及其它方面。这些和其它方面可以被配置为执行编码在计算机存储设备上的方法的动作。
这些和其它实施方式可以每个可选地包括以下特征和/或操作中的一个或多个:可逆操作包括移位操作和XOR操作中的一个;存储逻辑进一步可运行以接收对从第一奇偶校验和跳过者奇偶校验重建第一存储节点的数据元素的第一集合的请求;第一存储节点是故障的存储节点;存储逻辑进一步可运行以响应于接收对重建数据元素的第一集合的请求,检索(retrieve)数据元素的第二集合、第一奇偶校验、和跳过者奇偶校验,以及基于数据元素的第二集合、第一奇偶校验、和跳过者奇偶校验来重建数据元素的第一集合;存储逻辑进一步可运行以响应于接收对重建数据元素的第一集合的请求,确定对于重建对于数据元素的第一集合的数据需要的第二存储节点的数据元素,所需要的数据元素包括数据元素的第二集合的子集,确定需要的第一奇偶校验的水平奇偶校验条目和需要的跳过者奇偶校验的跳过者奇偶校验条目,以及基于需要的第二存储节点的数据元素和确定的奇偶校验条目来重建数据元素的第一集合;需要的第二存储节点的数据元素包括数据元素的第二集合的至少一半和少于全部;组合来自数据集合的数据元素以产生跳过者奇偶校验包括使用预定义规则来确定跳过者奇偶校验矩阵中的某跳过者奇偶校验数据元素的位置;接收对从第一奇偶校验和跳过者奇偶校验重建第一存储节点的数据元素的第一集合的请求;响应于接收对重建数据元素的第一集合的请求,检索数据元素的第二集合、第一奇偶校验、和跳过者奇偶校验;基于数据元素的第二集合、第一奇偶校验、和跳过者奇偶校验来重建数据元素的第一集合;响应于接收对重建数据元素的第一集合的请求,确定对于重建对于C数据元素的第一集合的数据需要的第二存储节点的数据元素,所需要的数据元素包括数据元素的第二集合的子集;确定需要的第一奇偶校验的水平奇偶校验条目和需要的跳过者奇偶校验的跳过者奇偶校验条目;以及基于需要的第二存储节点的数据元素和确定的奇偶校验条目来重建数据元素的第一集合。
这些实施方式在若干方面中是特别有利的。例如,当存在一个故障的内容储存时,仅需要剩余数据的一半来使用第一和第二奇偶校验重建对于故障内容储存的数据。另外,奇偶校验数据的构建保证了当在内容中存在一个数据元素的更新时,对第一和第二奇偶校验的更新仅要求对于第一和第二奇偶校验中的每一个更新一个条目。
另外,至于在涉及10个用户节点和2个奇偶校验节点的背景技术中描述的示例,在这些相同节点上的跳过者代码实施方式可以实质上减少在单个节点故障的情况下所需要的修复通信量的量。为了说明,如果1个用户节点故障,则然后可以接触所有幸存(9个用户和2个奇偶校验)节点,并且每一个幸存节点传送其数据的一半,达以上描述的在前解决方案的11×0.5TB= 5.5TB(与10TB相比)的总通信量。因此,不像背景技术的在前解决方案,对于单个节点故障,跳过者代码是最优的再生代码,其可以提供要求通信量的更少(典型地最少)量的代码构建。
应该理解,本公开中使用的语言已经为了可读性和指导的目的而被主要地选择,并且不限制本文公开的主题的范围。
附图说明
在附图的图中通过示例的方式而非通过限制的方式示出了本公开,其中相同的参考标号用于指代类似的元素。
图1是示出示例数据恢复系统的高级框图。
图2是示出存储逻辑的示例的框图。
图3A是示出使用可逆操作来生成跳过者奇偶校验的示例过程的图形表示。
图3B是示出示例跳过者奇偶校验恢复操作的图形表示。
图4A至图4C是示出示例跳过者奇偶校验的生成和利用的示图。
图5是示出示例跳过者奇偶校验的图形表示的框图。
图6是示例内容储存和相应的奇偶校验的示例图形表示。
图7A是用于生成跳过者奇偶校验的示例方法的流程图。
图7B是用于确定奇偶校验条目的示例方法的流程图。
图8是示出对于内容储存故障的示例数据恢复过程的示图。
图9是示出对于内容储存故障的进一步示例数据恢复过程的示图。
图10是用于重建对于(多个)故障的内容储存的数据的示例方法的流程图。
图11是示出对于两个内容储存故障的示例数据恢复过程的示图。
图12和图13示出如何使用水平和跳过者奇偶校验来修复不可访问的数据元素。
图14是用于重建对于两个故障的内容储存的数据的示例方法的流程图。
具体实施方式
以下描述用于实施恢复最优奇偶校验代码的技术。虽然在具体系统架构的上下文中描述技术,但应该理解,系统和方法可以被应用于硬件的其它架构和组织。使用恢复最优奇偶校验代码,技术可以比在前解决方案更有效地恢复储存在多个存储节点(也称为数据内容储存、或内容储存)中的数据元素,因为需要更少的可用数据用于修复。因而,技术可以有利地最大化最大距离可分(maximum distance separable,MDS)属性,其增加在仍然保证数据完整性的同时可能故障的节点的可允许数量。
图1是示出示例数据恢复系统100的高级框图。在描绘的实施例中,系统100可以包括存储逻辑104、以及一个或多个存储设备或物理存储介质 110a、110b至110n(也被称为存储节点或内容储存)。在示出的实施例中,存储逻辑104以及一个或多个存储设备110a、110b至110n经由信号线126a、 126b至126n通信地被耦合。然而,本公开不限于该配置,并且各种不同的系统环境和配置可以被部署且在本公开的范围内。其它实施例可以包括附加的或更少的组件。应该认识到,用于示出实施例的图1和其它图、以及参考标号或标号后的字母的指示(例如“110a”)是对被具体参考标号指定的元素或组件的特定参考。在参考标号出现在文本中而没有跟随其的字母的事件中,例如“110”,应该认识到,这样是对承受(bear)那种一般参考标号的元素或组件的不同实施例的一般参考。
在一些实施例中,存储逻辑104在存储设备中实施恢复最优奇偶校验代码以及储存相关的操作。存储逻辑104可以提供计算功能、服务、和/或资源以传送、接收、读取、写入、和变换来自系统100的其它实体的数据。在一些实施例中,存储逻辑104可以是被配置为使存储设备110上的存储空间的部分或全部可用的计算设备。存储逻辑104经由信号线126被耦合到存储设备110以用于与系统100的存储设备110a至110n的通信和协作。在其它实施例中,存储逻辑104经由信号线126a至126n在存储设备110a至110n之间传输数据。应该认识到,可以以分布式架构或其它方式这两者中的任何一个来利用多个存储逻辑单元104。为了本申请的目的,由系统100执行的系统配置和操作在单个存储逻辑104的上下文中被描述。
存储设备110a、110b至110n包括作为任何非瞬时性装置或设备的一个或多个非瞬时性计算机可使用的(例如,可读、可写等)介质,该任何非瞬时性装置或设备可以容纳、储存、通信传达、传播或运送用于通过处理器或与处理器结合处理的指令、数据、计算机程序、软件、代码例程等。在一些实施例中,存储设备110a、110b至110n经由信号线126a、126b至126n与存储逻辑104通信和协作。虽然本公开将存储设备110描述为闪存存储器设备,但应该理解,在一些实施例中,存储设备110可以包括其它非易失性存储器设备,诸如硬盘驱动器和其它合适的存储设备。在一些实施例中,存储设备110a至110n可以是分离的存储装置并且可以定位从彼此分离。
图2是示出根据本文描述的技巧的存储逻辑104的示例的框图。存储逻辑104包括软件和/或硬件逻辑,诸如组合逻辑、固件、软件、代码、或例程或其的一些组合。存储逻辑104可运行以对于在存储设备110中可储存的数据计算恢复最优奇偶校验代码。如在图2中所描绘的,存储逻辑104可以包括可以通过通信总线(未示出)电子通信地被耦合以用于与彼此的协作和通信的数据接口202、编码器/解码器204、和数据恢复器(recoverer)206。这些组件202、204、和206还经由信号线126被耦合以用于与系统100的其它实体(例如,存储设备110)的通信。然而,本公开不限于此配置,并且各种不同的系统环境和配置可以被部署且在本公开的范围内。其它实施例可以包括附加的或更少的组件。
在一些实施例中,数据接口202、编码器/解码器204、和数据恢复器206 是用于执行以下描述的操作的硬件。在一些实施例中,数据接口202、编码器/解码器204、和数据恢复器206是由包括在一个或多个自定义处理器中的处理器或逻辑可运行以提供其各自的功能的指令的集合。在一些实施例中,数据接口202、编码器/解码器204、和数据恢复器206被储存在存储装置中,并且由处理器可访问和可运行以提供其各自的功能。在进一步的实施例中,数据接口202、编码器/解码器204、和数据恢复器206被适配以用于与系统 100的处理器和其它组件的协作和通信。
数据接口202包括可运行以从一个或多个设备传送和/或接收/检索数据和/或命令的逻辑。在一个实施例中,数据接口202从一个或多个设备接收数据流(数据包)并且让它们为在非易失性存储设备(例如,存储设备110) 中的存储做准备。在一些实施例中,数据接口202接收传入数据包并且将该数据包临时地储存到存储器缓冲器(其可以是或者可以不是存储逻辑104的部分)中。在一些实施例中,数据接口202接收储存在(多个)存储设备110中的数据,和/或在(多个)存储设备110中储存数据。
数据接口202从一个或多个数据储存(诸如,但不限于系统100的存储设备110)接收传入数据和/或检索数据。传入数据可以包括但不限于,数据流、数据集合、和/或命令。数据流可以包括的数据块/元素(例如,新数据流的当前数据块、来自储存器的现有数据块等)的集合。数据块/元素的集合(例如数据流的集合)可以,但不限于,与文档、文件、电子邮件、消息、博客、和/或由自定义处理器运行和渲染并且/或者被储存在存储器中的任何应用相关联。
数据编码器/解码器204是用于对将要被储存在多个数据内容储存110上的数据(元素的集合)编码以生成奇偶校验代码的逻辑。数据编码器/解码器 204可以通过通信总线(未示出)电子通信地被耦合以用于与存储逻辑104 的其它组件的协作和通信。在一些实施例中,数据编码器/解码器204是处理器。数据编码器/解码器204可以从数据接口202接收数据块/元素的集合。在一些实施例中,数据编码器/解码器204可以生成对于将要被储存在系统100 中的数据内容储存110上的数据的奇偶校验代码。数据编码器/解码器204可以生成被储存到存储设备110的内容的两个奇偶校验(第一和第二奇偶校验,诸如本文所讨论的水平和跳过者奇偶校验)。以下参考图3A至7B详细描述由数据编码器/解码器204执行的生成数据奇偶校验的操作。
数据恢复器206是用于使用奇偶校验码从剩余数据内容储存的数据元素的全部或部分恢复来自故障的内容储存的数据的逻辑。为了区分的目的,贯穿本公开,未故障的内容储存被称为剩余数据内容储存。数据恢复器206可以通过通信总线(未示出)电子通信地被耦合以用于与存储逻辑104的其它组件的协作和通信。在一些实施例中,数据恢复器206是处理器。数据恢复器206可以从数据编码器/解码器204或者从奇偶校验码储存在其中的内容储存检索奇偶校验代码。虽然在图2的示例中被描绘为不同的元件,但是数据恢复器206可以包括数据编码器/解码器204或者相反。在一些实施例中,数据恢复器206可以执行数据编码器/解码器204的功能。以下参考图8至图12 详细描述由数据恢复器206执行的使用奇偶校验码从剩余数据内容储存的数据元素恢复数据的操作。
图3A是示出使用可逆(例如,逐位)操作来生成跳过者奇偶校验的示例过程302的图形表示。表示数据矢量V的示例数据元素306包括数据的多个数据块(在这种情况中为八(8)位),虽然应该理解数据块可以包括两个或多个数据块,并且这些块可以包括位、位的收集、或其它合适的数据类型,其中的所有都是可应用的。
在示出的实施例中,块被表示为a、b、c、d、e、f、g、h等。数据编码器/解码器204可以使用可逆操作(移位操作)将数据元素306的块变换到形成表示数据向量V’的移位的数据元素308的移位的数据块中。在这个示例中,变换使数据元素306的块移位,因此最右的块“h”被移位到最左的块的位置,并且其它块向右移动一个块,然而应该理解,其它移位顺序和/或方向也是可能的并且可以预期的。
接下来,数据编码器/解码器204可以变换移位的数据元素308的一个或多个块以形成表示数据向量V”的跳过者奇偶校验数据元素310。可以使用诸如其在这种情况下是XOR(exclusive or,异或)操作的可逆操作的数学操作来执行变换。更具体地,在这个示例中,通过将移位的数据元素308的最左的块(即“h”)和从左端的第二块(即“a”)组合来构建从跳过者奇偶校验数据元素310的左端的第二块311。结果是移位的XOR(shift-XOR)的“h +a”数据块311。
数据编码器/解码器204、或诸如数据恢复器206的另一合适组件可以执行重构过程304以重构原始数据元素306和/或其块,在这种情况下逆变 (inverted)/反向(reverse)相应的逐位操作被执行(XOR(以取消h并修复 a)并且非移位(以将位放置在其在数据元素306中反映的原始位置中)。通过执行反向/逆变过程304,系统100可以重建数据元素306的一个或多个块。
图3B是示出示例跳过者奇偶校验恢复操作320的图形表示。如在图3B 中所描绘的,跳过者奇偶校验数据元素310可以使用对于图3A所描述的过程302来构建。数据编码器/解码器204可以对数据元素306(V)和跳过者奇偶校验数据元素310(V”)执行加和操作以形成恢复奇偶校验数据元素312 (V+V”)。更具体地,数据元素306和310的相应块被XOR以形成恢复奇偶校验数据元素312(V”)的相应块中所示的值。例如,块3120和3120’被组合以形成3120”,并且以此类推形成其它块3121”至3127”。
在一些实施例中,数据恢复器206、或诸如编码器/解码器204的另一组件可以从恢复奇偶校验数据元素312的块恢复数据元素306或其一个或多个块。如图3B中所示出的,恢复奇偶校验数据元素312包括多个块(例如,在这个示例中为八(8)位,它们是块3120”、3121”、3122”、3123”、3124”、 3125”、3126”、3127”)。
恢复操作320可以通过对数据元素312的相对于XOR方向领先正被恢复的块的位置的块加和来恢复数据元素306的(多个)块。求和导致取消冗余块并产生恢复的块。更具体地,在这种情况下,XOR方向从第一元素开始,并沿与移位方向相同的方向延伸(至右)。
作为进一步的示例,为了恢复块3121,将块3120”与块3121”XOR,在这种情况下,a+h取消,并且b是反映原始块3121的结果。为了恢复块3122,块3120”和3121”被XOR,并且然后将该操作的结果与3122”XOR,在这种情况下,a+h取消而留下b,并且b取消而留下反映原始块3122的c。这些循环操作被进一步重复以恢复块3123至3127。为了恢复块3120,块3120”和块3121”被XOR,并且将结果与3122”XOR,等等并依此类推,直到所有块已经被循环地XOR,并且然后将结果,在这种情况下为h,与块3120” XOR以到达反映原始列3120的a。
图4A是示出对于两个示例内容储存402和404的示例水平奇偶校验406 和示例跳过者奇偶校验408的生成的图。内容储存402(也称为A)包括两个数据元素A0和A1。内容储存404(也称为B)还包括两个数据元素B0和 B1。
如所示的,内容储存A和B被用于生成水平奇偶校验406和跳过者奇偶校验408。跳过者奇偶校验可以是具有跳过者奇偶校验数据元素的、或者使用跳过者奇偶校验数据元素来生成的奇偶校验。数据编码器/解码器204可以通过取A0和B0的XOR以形成第一行4060并且取A1和B1的XOR以形成第二行4061,来对水平奇偶校验406编码。
对于跳过者奇偶校验408,数据编码器/解码器204可以通过取A1和B0 的XOR以形成第一行4080来对其编码。对于包括跳过者奇偶校验数据元素 4082的第二行4081,数据编码器/解码器204可以通过使用参考图3A所讨论的过程302变换A0来生成跳过者奇偶校验数据元素4082,并且然后可以取跳过者奇偶校验数据元素4082和B1的XOR。
图4B和4C是进一步示出对于两个示例内容储存452和454的示例水平奇偶校验456和示例跳过者奇偶校验458的生成的图。内容储存452包括两个数据元素450和451。内容储存454还包括两个数据元素440和441。
如所示的,内容储存452和454被用于生成水平奇偶校验456和跳过者奇偶校验458。数据编码器/解码器204可以通过取数据元素450(a,b,c,d) 和440(a,b,c,d)的XOR以形成第一行460(a a,b b,c c,d d)并且取数据元素451(e,f,g,h)和441(e,f,g,h)的XOR以形成第二行461((e e,f f,g g, h h)来对水平奇偶校验456编码。
对于跳过者奇偶校验458,数据编码器/解码器204可以通过取数据元素 451(e,f,g,h)和440(a,b,c,d))的XOR以形成第一行480(e a,f b,g c,h d) 来对其编码。对于第二行481,数据编码器/解码器204可以使用参考图3A 所描述的过程302来生成跳过者奇偶校验数据元素482,其在图4C中被进一步描绘。如由图4C所示,数据编码器/解码器204可以在420中检索数据矢量450(a,b,c,d),并且在422中在其上执行移位操作以形成数据矢量(d,a, b,c)。接下来,数据编码器/解码器204可以在424中利用第一的两个元素的 XOR的值来修改移位的数据矢量的第二元素以形成数据矢量(d,d a,b,c)。然后,为了形成第二行481,数据编码器/解码器204可以取跳过者奇偶校验数据矢量482(d,d a,b,c)和数据元素441(e,f,g,h)的XOR。
图5是示出对于四个内容储存(C0、C1、C2、和C3)的示例跳过者奇偶校验的图形表示。通常,对于k个内容储存,每个内容储存中的元素的数量是2k-1。在图5中所示的示例构建中,四个内容储存中的每一个容纳八(8) 个数据元素。i列和j行中的数据元素被表示为Ci[j]。更具体地说,沿着垂直方向的数据元素被认为是在列中,沿着水平方向的数据元素被认为是在行中,并且由实线连接的数据元素被认为从元素C0[j]开始是连续的。
在图5中,跳过者奇偶校验数据元素被加阴影。图5中的阴影元素是那些Ci[j],对于其j的二进制表示中的第i位等于第i-1位。在图5的示例中,在C1[3]的情况下,j的二进制表示是011(即,j=3)。继续以C1[3]的示例,其中i=1,第i位是第1位,并且第i-1位是第0位。在二进制表示011中,第0位是1,第1位是1,并且第2位是0。因此,由于第i位等于第i-1位(即,第1位和第0位两者都是1),因此该元素被加阴影。如在图5中所描绘的,其中在C2[j]的情况下,i=2,并且第i位是第2位,并且第i-1位是第1位,则j=0、1、2、3、4、5、6、和7的二进制表示分别是000、001、010、011、 100、101、110、和111。具有第2位等于第1位的元素被加阴影。因此,元素C2[0]、C2[1]、C2[6]和C2[7]被加阴影。
图6是示例内容储存和相应的奇偶校验的示例图形表示。在描绘的示例中,示出了四个内容储存(C0、C1、C2、和C3)、水平奇偶校验601、和跳过者奇偶校验602。如以上参考图5所讨论的,行沿着水平方向延伸,并且列沿着垂直方向延伸。如本文其它地方所讨论的,水平奇偶校验601可以通过组合来自内容储存的相同行的数据元素来生成。
以边框为边界的跳过者奇偶校验602中的数据元素中的每一个被表示为跳过者奇偶校验数据元素,并且可以使用本文其它地方所讨论的过程302来生成。如以上关于图5所讨论的,可以使用诸如蝶形图的傅里叶变换网络来确定跳过者奇偶校验602的行(620-627)中的数据元素的顺序,以及确定哪些元素将被变换到跳过者奇偶校验数据元素中。
作为进一步的示例,可以使用源自图5中的C0[0]的线来编码跳过者奇偶校验602的行620,该行包括C0[0]、C1[1]、C2[3]、和C3[7]的数据元素。可以使用源自C0[1]的线来编码跳过者奇偶校验602的行621,该行包括C0[1]、 C1[0]、C2[2]、和C3[6]的数据元素,等等并依此类推。
在更进一步的示例中,假设跳过者奇偶校验602的最右列被称为奇偶校验列零(0),并且从跳过者奇偶校验602的右端的第二列被称为奇偶校验列一(1),并且依此类推,对于奇偶校验列x,该列中的数据元素由跟随以下方式的这些数据元素的跳过者奇偶校验形式替换:跳过2x-1(多个)数据元素、移位-XOR 2x-1数据元素、然后跳过2x-1(多个)数据元素、移位-XOR 2x-1数据元素,直到所有的数据元素都已经被处理。
例如,在奇偶校验列1的情况下,其中x=1所以2x-1=1,从第一数据元素C1[1]开始的奇偶校验列1中的一个数据元素被跳过,并且跟随它的一个数据元素由跳过者奇偶校验形式替换。然后数据元素的另一数据元素被跳过,并且数据元素的另一数据元素由跳过者奇偶校验形式替换。
在奇偶校验列2的另一示例中,其中x=2所以2x-1=2。如在参考图6 示出的实施例中所描绘的,从第一数据元素C2[3]开始的两个数据元素被跳过,并且接下来的两个数据元素由跳过者奇偶校验形式替换。然后数据元素的另外两个数据元素被跳过,并且数据元素的另外两个数据元素由跳过者奇偶校验形式替换。对于奇偶校验列0,由于x=0,没有数据元素由跳过者奇偶校验形式替换。通过执行以上描述的操作,用于跳过者奇偶校验602的数据元素准备好用于组合(例如XOR操作)。
不像其它现有解决方案,由于在所示出的实施例中,来自内容的每个数据元素仅在水平和跳过者奇偶校验中的每一个中出现一次,这有利地允许,当在内容中存在对一个数据元素的更新时,仅要求对水平和跳过者奇偶校验中的每一个的单个更新,从而得到更有效、最优的更新。
图7A是用于生成跳过者奇偶校验的示例方法700的流程图。在块702 中,数据接口202可以接收包括数据元素的数据集合,该数据集合包括储存在第一存储节点中的数据元素的第一集合和储存在第二存储节点中的数据元素的第二集合。在块704中,数据编码器/解码器204生成数据集合的第一奇偶校验。第一奇偶校验可以包括包含水平奇偶校验条目的集合的水平奇偶校验、或另一合适的奇偶校验。在块706中,数据编码器/解码器204可以组合来自数据集合的数据元素以产生跳过者奇偶校验。跳过者奇偶校验可以包括跳过者奇偶校验条目的集合。为了组合数据元素,数据编码器/解码器204可以使用可逆操作来变换来自数据集合的数据元素的子集。水平奇偶校验条目的集合在组成上与跳过者奇偶校验条目的集合不同。
在一些实施例中,数据接口202可以从(诸如,经由计算机网络和/或通信总线耦合的)另一的计算系统或设备接收作为数据流的数据元素的数据集合。存储逻辑104可以处理数据元素以用于在一个或多个存储节点(存储设备110)中的存储,并且在这样做时,可以生成与其相关联的水平和跳过者奇偶校验。与生成奇偶校验相关联,存储逻辑104可以在各种存储节点(存储设备110)中储存内容(数据元素的集合)、以及水平奇偶校验601和跳过者奇偶校验602。
在一些实施例中,数据可以由跨分离的存储设备110的数据接口202来储存,使得,如果设备的一个或多个故障,则可以如本文其它地方所讨论的那样修复数据。在一些情况下,可以将奇偶校验(例如,水平,跳过者等) 储存在与它们与其相关联的数据不同的存储装置(存储设备110,诸如存储器、高可靠性存储介质等)中,使得如果需要可以维持数据修复过程。
图7B是用于确定奇偶校验条目的示例方法750的流程图。在块752中,数据编码器/解码器204可以确定可以由矩阵(在一些情况下被称为跳过者奇偶校验矩阵)具体实现的跳过者奇偶校验的哪些条目应该采取跳过者奇偶校验形式(如在本文其它地方讨论的,被变换到跳过者奇偶校验数据元素中)。可以基于预定义规则确定正被变换为具有跳过者奇偶校验形式的矩阵中的条目的位置。在某些情况下,规则可以使用傅立叶变换、蝶形图、或其它合适的高阶数学变换来对矩阵的条目排序。
在块754中,响应于确定变换跳过者奇偶校验矩阵的哪些条目,数据编码器/解码器204、或另一合适的组件可以将确定的条目变换到跳过者奇偶校验条目中。在一些实施例中,包括数据元素的位置的确定和跳过者奇偶校验数据元素的生成的跳过者奇偶校验矩阵的构建可以如本文其它地方描述的那样来执行,诸如参考图3A至图6。
图8是示出对于内容储存故障的示例数据恢复过程的示图。如在图8中所描绘的,第一内容储存库C0故障并且数据元素C0[0]到C0[7]是不可检索的。数据恢复器206可以从其它三个剩余数据内容储存C1、C2、和C3(其在这个示例中被称为剩余内容储存)检索数据元素的一半。在这个示例中,检索的数据元素是均匀编号的元素。使用检索的元素,数据恢复器206可以检索水平奇偶校验801(例如,810、812、814、和816)的偶数行以及跳过者奇偶校验802的奇数行(例如,数据元素821、823、825、和827)。
使用可用奇偶校验条目和数据元素,数据恢复器206可以通过执行本文其它地方所讨论的修复操作来恢复数据内容储存C0的不可访问数据。例如,使用来自数据内容储存C1、C2、和C3的水平奇偶校验条目810(C0[0]C1[0] C2[0]C3[0])和可用数据元素C1[0]、C2[0]、和C3[0],如本文其它地方所讨论的,数据恢复器206可以通过执行逆变数学操作(例如,XOR)来恢复C0[0],以取消三个可用数据元素C1[0]、C2[0]、和C3[0]。通过类似的操作,数据恢复器206也可以恢复数据元素C0[2]、C0[4]、和C0[6]。
另外,数据恢复器206可以使用来自行821(C0[1]、跳过者奇偶校验C1[0]、 C2[2]、和C3[6])的跳过者奇偶校验条目,以及来自数据内容储存C1、C2、和C3的可用数据元素C1[0]、C2[2]、和C3[6]来恢复C0[1]。如本文其它地方所讨论的,诸如参考图3A至图6,数据恢复器206可以通过执行逆变数学操作(例如XOR、非移位)来运算C0[1]。利用类似的操作,数据恢复器206 可以恢复数据元素C0[3]、C0[5]、和C0[7]的剩余部分。
应该理解,水平奇偶校验801和跳过者奇偶校验802的条目以一般形式示出以便于理解和避免混淆。然而,应该认识到,水平奇偶校验801和跳过者奇偶校验802的条目可以被组合,并且每个可以由数据块的阵列组成。
图9是示出对于内容储存故障的进一步示例数据恢复过程的示图。参考图9所描述的数据恢复过程与参考图8所描述的数据恢复过程类似,因此为了简洁的目的,这里将不重复所有方面。在图9中所描绘的示例中,C1已经故障,并且数据元素C1[0]至C1[7]不可访问,而不是内容储存C0故障。然而,数据恢复器206可以使用可用数据元素、水平奇偶校验901、和跳过者奇偶校验902来修复不可访问的数据元素。
例如,数据恢复器206可以检索水平奇偶校验行810元素(C0[0]C1[0] C2[0]C3[0])的元素、以及来自数据内容储存C0、C2、和C3的可用数据元素C0[0]、C2[0]、和C3[0]。利用这些,数据恢复器206可以通过执行相应的 (多个)逆变数学操作来恢复C1[0],如本文其它地方所讨论的(例如XOR) (其取消数据元素C0[0]、C2[0]、和C3[0]、并且留下C1[0])。利用类似的操作,数据恢复器206也可以恢复数据元素C1[3]、C1[4]、和C1[7]。
对于C1[1],数据恢复器206可以使用来自行820(C0[0]、C1[1]、C2[3]、和C3[7])的跳过者奇偶校验条目来恢复它。由于该行820不包括跳过者奇偶校验数据元素(没有元素使用盒来加边框),所以可以通过执行与以上用于水平奇偶校验901的那些类似的相应的(多个)逆变数学操作(例如XOR),使用可用数据元素C0[0]、C2[3]、和C3[7]来运算C1[1]。
另外,数据恢复器206可以通过如本文其它地方所讨论的,诸如参考图3A至图6,相应地执行(多个)逆变数学操作(例如,XOR,非移位),使用来自行823(C1[2]、跳过者奇偶校验C1[2]、跳过者奇偶校验C2[0]、和C3[4]) 的跳过者奇偶校验条目、以及来自数据内容储存C0、C2、和C3的可用数据元素C0[3]、C2[0]、和C3[4]来恢复C1[2]。利用类似的操作,数据恢复器206 可以恢复数据元素C1[5]和C1[6]的剩余部分。
对于参考图8和图9讨论的那些操作的类似操作可以用于修复内容储存 C2和C3在它们经历故障时的数据元素。
图10是用于重建对于(多个)故障的内容储存的数据的示例方法1000 的流程图。方法1000可以通过接收1002对重建对于多个内容储存的内容储存(例如,一个或多个内容储存)的故障的子集的数据的请求开始。在一些实施例中,数据恢复器206接收对重建对于一个或多个故障的内容储存的数据的请求。为了清楚起见,未故障的内容储存被称为可用内容储存。在一些实施例中,对重建数据的请求可以包括用于识别(多个)故障的内容储存(的信息例如,内容储存ID等)。在一些实施例中,在块1002中执行的操作可以由数据恢复器206、数据接口202、和/或系统100的一个或多个其它组件来执行。
接下来,方法1000可以基于哪些数据元素是不可访问的,(结合水平和跳过者奇偶校验)来确定1004被需要以重建不可访问数据元素的、来自可用内容储存的数据元素。方法1000可以通过确定1006需要的来自第一/水平奇偶校验和跳过者奇偶校验的数据元素来继续。在一些实施例中,如本文其它地方所讨论的,数据恢复器206可以基于哪些(多个)内容储存已经故障来确定需要的水平奇偶校验和跳过者奇偶校验的数据元素。在一些实施例中,在块1006中执行的操作可以由数据恢复器206和/或系统100的一个或多个其它组件来执行。
接下来,方法1000可以通过使用本文其它地方所讨论的恢复操作/处理、基于确定的来自可用内容储存和水平奇偶校验和跳过者奇偶校验的数据元素对于(多个)故障的内容储存恢复1010数据元素而继续。在一些实施例中,在块1010中执行的(多个)操作可以由数据恢复器206和/或系统100的一个或多个其它组件来执行。
图11是示出对于两个内容储存故障的示例数据恢复过程的示图。如在图 11中所描绘的,内容储存C1和C3故障,并且数据元素C1[0]至C1[7]和C3[0] 至C3[7]是不可检索的/不可访问的。如本文其它地方所讨论的,当数据储存在内容储存中时,水平奇偶校验1101和跳过者奇偶校验1102可以已经被构建。水平奇偶校验1101和跳过者奇偶校验1102可以储存在分离的存储设备 110(诸如高可靠性存储介质)中,因此它们可用于在内容储存的故障时重建数据内容。数据恢复器206可以检索水平和跳过者奇偶校验1101和1102以修复不可访问的数据元素。
如图12和13中所示,不可访问的数据元素可以被修复。具体地,水平奇偶校验1201可以由数据恢复器206生成以包括来自内容储存C0和C2的可用数据元素。跳过者奇偶校验1202可以由数据恢复器206通过包括来自不可访问的内容储存C1和C3(例如,来自跳过者奇偶校验1102)的数据元素来生成。
如以上参考图3A和图3B所讨论的,数据恢复器206可以获得来自跳过者奇偶校验1202的行1220和1226的条目。例如,第一行1220包括数据元素C1[1]和C3[7]。接下来需要的数据元素来自行1226,其包括数据元素C1[7] 和跳过者奇偶校验数据元素C3[1]。接下来,数据恢复器206可以获得来自水平奇偶校验1201的行1211和1217的条目,其中行1211包括C1[1]和C3[1],并且行1217包括C1[7]和C3[7]。数据恢复器206可以使用行1211、1217、1220和1226的条目以运算原始数据元素。例如,数据恢复器206可以如下处理来自行1211、1217、1220、和1226的条目:
使用以上方程式,所得到的数据具有V+V”的形式。因此,可以使用参考图3A和图3B所讨论的循环操作来恢复原始数据元素C1[1]、C1[7]、C3[1]、和C3[7]。
如在图13中所描绘的,数据恢复器206可以获得来自跳过者奇偶校验1202的行1223和1225的条目、以及来自水平奇偶校验1201的行1212和1214 的条目。数据恢复器206可以使用来自行1212、1214、1223和1225的条目来运算原始数据元素。例如,数据恢复器206可以如下来处理条目:
使用以上的方程式,所得到的数据是V+V”的形式。因此,可以使用参考图3A和图3B所讨论的循环操作来恢复原始数据元素C1[4]、C3[4]、 C1[2]、和C3[2]。
图14是重建对于来自多个内容储存的两个故障的内容储存的数据的示例方法1400的流程图。方法1400可以通过接收1402对重建对于多个内容储存的两个故障的内容储存的数据的请求而开始。在一些实施例中,数据恢复器206接收对重建对于两个故障的内容储存的数据的请求,其可以在请求中被识别(例如,使用唯一的存储节点标识符)。在一些实施例中,块1402中执行的(多个)操作可以由数据恢复器206和/或数据接口202和/或系统100 的一个或多个其它组件执行。
接下来,方法1400可以从可用数据内容储存检索1404数据元素。在一些实施例中,数据恢复器206可以从可用数据内容储存检索数据元素。在一些实施例中,在块1404中执行的(多个)操作可以由数据恢复器206和/或系统100的一个或多个其它组件来执行。
接下来,方法1400可以检索1406水平奇偶校验1101和跳过者奇偶校验 1102。在一些实施例中,数据恢复器206可以检索水平奇偶校验1101和跳过者奇偶校验1102。在一些实施例中,在块1406中执行的(多个)操作可以由数据恢复器206和/或系统100的一个或多个其它组件来执行。
接下来,方法1400可以生成1408可以反映水平奇偶校验1101的子集的水平奇偶校验1201、和可以反映跳过者奇偶校验1102的子集的跳过者奇偶校验1202。在一些实施例中,数据恢复器206可以通过分别从水平奇偶校验 1101和跳过者奇偶校验1102取消可用数据内容储存的数据元素来生成水平奇偶校验1201的子集和跳过者奇偶校验1202的子集。在一些实施例中,在块1408中执行的(多个)操作可以由数据恢复器206和/或系统100的一个或多个其它组件来执行。
接下来,方法1400可以通过获得1410来自水平奇偶校验1201的两个数据元素和来自跳过者奇偶校验1202的两个数据元素而继续。在一些实施例中,数据恢复器206可以拾得来自水平奇偶校验1201的两个数据元素和来自跳过者奇偶校验1202的两个数据元素。在一些实施例中,在块1410中执行的(多个)操作可以由数据恢复器206和/或系统100的一个或多个其它组件来执行。
接下来,方法1400可以通过基于来自水平奇偶校验1201和跳过者奇偶校验1202的四个数据元素对于两个故障的内容储存运算1412数据元素而前进。在一些实施例中,数据恢复器206可以基于来自水平奇偶校验1201和跳过者奇偶校验1202的四个数据元素对于两个故障的内容储存运算1412数据元素。参考图12和图13来讨论详细的运算。在一些实施例中,在块1412中执行的(多个)操作可以由数据恢复器206和/或系统100的一个或多个其它组件来执行。
接下来,方法1400可以通过确定1414对于两个故障的内容储存的所有数据元素是否已经恢复来处理。在一些实施例中,数据恢复器206确定对于两个故障的内容储存的所有数据元素是否已经恢复。如果确定的结果是“否”,则然后方法1400返回到块1410。如果确定的结果是“是”,则方法1400可以通过基于元素的顺序组合1416恢复的数据元素来处理。在一些实施例中,数据恢复器206可以基于元素的顺序来组合恢复的数据元素。在一些实施例中,在块1414和1416中执行的操作可以由数据恢复器206和/或系统100的一个或多个其它组件执行。
以下描述用于在存储设备中实施动态大小的反向映射的系统和方法。在以上描述中,出于解释的目的,阐述了大量具体细节。然而,显而易见的是,可以在没有这些具体细节的任何给定子集的情况下实践公开的技术。在其它实例中,结构和设备以框图形式示出。例如,在以上参考用户接口和具体硬件的一些实施方式中描述了公开的技术。而且,以上公开的技术主要在在线服务的上下文中;然而,公开的技术应用于其它数据源和其它数据类型(例如,其它资源(例如图像、音频、网页)的收集)。
在说明书中对“一个实施例”、“一些实施例”或“实施例”的引用意味着结合实施例描述的特殊的特征、结构、或者特性被包括在公开的技术的至少一个实施例中。说明书中的各处的短语“在一个实施例中”的出现并不必要全部引用相同的实施例。
以上详细描述的一些部分按照计算机存储器内的数据位上的操作的过程和符号表示来被呈现。过程可以一般地被认为是导致结果的自洽的操作序列。操作可以涉及物理量的物理操纵。这些量采用能够被储存、传递、组合、比较、以及以其它方式操纵的电或者磁信号的形式。这些信号可以被称为作为是以位、值、元素、符号、字符、术语、数字等的形式。
这些和类似的术语可以与适当的物理量相关联并且可以被认为是应用于这些量的标签。除非另外具体地陈述,如从在前讨论中显而易见的,将领会,贯穿本描述利用例如“处理”或“计算(computing)”或“运算(calculating)”或“确定”或“显示”等的术语的讨论,可以指代计算机系统或者类似的电子计算设备的动作和处理,该计算机系统或类似的电子计算设备将被表示为计算机系统的寄存器或存储器内的物理(电子)量的数据操纵并变换到类似地被表示为计算机系统存储器或寄存器或其它这样的信息储存器、传输或显示设备内的物理量的其它数据中。
公开的技术还可以涉及用于执行本文的操作的装置。这个装置可以被专门地构建以用于要求的目的,或者它可以包括由存储在计算机中的计算机程序选择地激活或者重新配置的一般目的的计算机。
公开的技术可以采取完全硬件实施方式、完全软件实施方式或者容纳硬件和软件元素两者的实施方式的形式。在一些实施方式中,本技术以软件来实施,该软件包括但不限于固件、驻留软件、微代码等等
另外,公开的技术可以采取从提供用于由计算机或任何指令运行系统的使用或与其结合的使用的程序代码的非瞬时性计算机可用或计算机可读介质可访问的计算机程序产品的形式。为了该描述的目的,计算机可用或计算机可读介质可以是能够容纳、储存、通信传达、传播、或运送用于由指令运行系统、装置、或设备的使用或与指令执行系统、装置或设备结合的使用的程序的任何装置。
合适于储存和/或运行程序代码的计算系统或数据处理系统将包括通过系统总线直接或间接耦合到存储器元件的至少一个处理器(例如,硬件处理器)。存储器元件可以包括在程序代码的实际运行期间采用的本地存储器、大容量存储器、和提供至少一些程序代码的临时存储以便减少在运行期间必须从大容量存储器检索代码的次数的高速缓存存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、指示设备等)可以任一直接地或通过介入的I/O控制器被耦合到系统。
网络适配器也可以被耦合到系统以启用数据处理系统通过介入的私密或公共网络变得耦合到其它数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡只是当前可用类型的网络适配器中的少数几个。
最后,本文呈现的过程和显示可以不与任何具体计算机或者其它装置固有地相关。可以将各种一般目的的系统与根据本文教导的程序一起使用,或者可以证明构建更加专用的装置来执行所要求的方法操作的方便。所要求的用于这些系统中的各种系统的结构将从以下描述中出现。另外,不参考任何具体的编程语言来描述本公开的技术。将领会,各种编程语言可以被用来实施如本文所描述的技术的教导。
为了说明和描述的目的,已经呈现了本技巧和技术的实施方式的前述描述。不意图详尽的或将本技巧和技术限制于公开的确切形式。鉴于以上教导,许多修改和变化是可能的。意图是使本技巧和技术的范围不受该详细描述的限制。本技巧和技术可以以其它特定形式来实施,而不脱离其精神或至关重要的特性。类似地,模块、例程、特征、属性、方法论和其它方面的具体命名和划分不是强制的或显著的,并且实施本技巧和技术或其特征的机制可以具有不同的名称、划分和/或格式。另外,本技术的模块、例程、特征、属性、方法论和其它方面可以被实施为软件、硬件、固件或三者的任意组合。而且,无论哪个组件(该组件的示例是模块)都作为软件来实施,组件可以作为独立程序、作为更大程序的部分、作为多个分离的程序、作为静态或动态链接库、作为内核可加载模块、作为设备驱动器、和/或以现在或将来在计算机编程中已知的每个和任何其它方式来实施。额外地,本技巧和技术决不限于以任何特定的编程语言、或针对任何特定的操作系统或环境的实施。因此,本技巧和技术的公开意图是说明性的而非限制性的。
Claims (17)
1.一种数据存储系统,包括:
多个存储节点,其包括第一存储节点和第二存储节点;和
存储逻辑,其被耦合到所述多个存储节点并且管理多个存储节点上的数据的存储,所述存储逻辑可运行以:
接收包括数据元素的数据集合,所述数据集合包括与第一存储节点相关联的数据元素的第一集合和与第二存储节点相关联的数据元素的第二集合;
生成数据集合的第一奇偶校验,所述第一奇偶校验包括包含水平奇偶校验条目的集合的水平奇偶校验;以及
通过使用包括移位操作和异或操作中的一个的可逆操作变换来自数据集合的数据元素的子集,组合来自数据集合的数据元素以产生包括跳过者奇偶校验条目的集合的跳过者奇偶校验,所述水平奇偶校验条目的集合不同于所述跳过者奇偶校验条目的集合。
2.如权利要求1所述的数据存储系统,其中所述存储逻辑还可运行以:
接收对从第一奇偶校验和跳过者奇偶校验重建数据元素的第一集合的请求。
3.如权利要求2所述的数据存储系统,其中所述第一存储节点是故障的存储节点。
4.如权利要求2所述的数据存储系统,其中所述存储逻辑还可运行以:
响应于接收对重建数据元素的第一集合的请求,检索数据元素的第二集合、第一奇偶校验、和跳过者奇偶校验;以及
基于数据元素的第二集合、第一奇偶校验、和跳过者奇偶校验来重建数据元素的第一集合。
5.如权利要求2所述的数据存储系统,其中所述存储逻辑还可运行以:
响应于接收对重建数据元素的第一集合的请求,确定对于重建对于数据元素的第一集合的数据需要的第二存储节点的数据元素,所需要的数据元素包括数据元素的第二集合的子集;
确定需要的第一奇偶校验的水平奇偶校验条目和需要的跳过者奇偶校验的跳过者奇偶校验条目;以及
基于需要的第二存储节点的数据元素和确定的奇偶校验条目来重建数据元素的第一集合。
6.如权利要求5所述的数据存储系统,其中所需要的第二存储节点的数据元素包括所述数据元素的第二集合的至少一半和少于全部。
7.如权利要求1所述的数据存储系统,其中组合来自数据集合的数据元素以产生跳过者奇偶校验包括,使用预定义规则来确定跳过者奇偶校验矩阵中的某跳过者奇偶校验数据元素的位置。
8.一种计算机实施的方法,包括:
接收包括数据元素的数据集合,所述数据元素包括与第一存储节点相关联的数据元素的第一集合和与第二存储节点相关联的数据元素的第二集合;
生成数据集合的第一奇偶校验,所述第一奇偶校验包括包含水平奇偶校验条目的集合的水平奇偶校验;以及
组合来自数据集合的数据元素以产生包括跳过者奇偶校验条目的集合的跳过者奇偶校验,组合数据元素包括使用包括移位操作和异或操作中的一个的可逆操作来变换来自数据集合的数据元素的子集,水平奇偶校验条目的集合不同于跳过者奇偶校验条目的集合。
9.如权利要求8所述的计算机实施的方法,还包括接收对从第一奇偶校验和跳过者奇偶校验重建数据元素的第一集合的请求。
10.如权利要求9所述的计算机实施的方法,其中所述第一存储节点是故障的存储节点。
11.如权利要求9所述的计算机实施的方法,还包括:
响应于接收对重建数据元素的第一集合的请求,检索数据元素的第二集合、第一奇偶校验、和跳过者奇偶校验;以及
基于数据元素的第二集合、第一奇偶校验、和跳过者奇偶校验来重建数据元素的第一集合。
12.如权利要求9所述的计算机实施的方法,还包括:
响应于接收对重建数据元素的第一集合的请求,确定对于重建对于数据元素的第一集合的数据需要的第二存储节点的数据元素,所需要的数据元素包括数据元素的第二集合的子集;
确定需要的第一奇偶校验的水平奇偶校验条目和需要的跳过者奇偶校验的跳过者奇偶校验条目;以及
基于所需要的第二存储节点的数据元素和所确定的奇偶校验条目来重建数据元素的第一集合。
13.如权利要求12所述的计算机实施的方法,其中所需要的第二存储节点的数据元素包括所述数据元素的第二集合的至少一半和少于全部。
14.如权利要求8所述的计算机实施的方法,其中组合来自数据集合的数据元素以产生跳过者奇偶校验包括,使用预定义规则来确定跳过者奇偶校验矩阵中的某跳过者奇偶校验数据元素的位置。
15.一种数据存储系统,包括:
用于接收包括数据元素的数据集合的工具,所述数据元素包括与第一存储节点相关联的数据元素的第一集合和与第二存储节点相关联的数据元素的第二集合;
用于生成数据集合的第一奇偶校验的工具,所述第一奇偶校验包括包含水平奇偶校验条目的集合的水平奇偶校验;和
用于组合来自数据集合的数据元素以产生包括跳过者奇偶校验条目的集合的跳过者奇偶校验的工具,用于组合数据元素的工具包括用于使用包括移位操作和异或操作中的一个的可逆操作来变换来自数据集合的数据元素的子集的工具,水平奇偶校验条目的集合不同于跳过者奇偶校验条目的集合。
16.如权利要求15所述的数据存储系统,其中所述第一存储节点是故障的存储节点。
17.如权利要求15所述的数据存储系统,其中组合来自数据集合的数据元素以产生跳过者奇偶校验包括,使用预定义规则来确定跳过者奇偶校验矩阵中的某跳过者奇偶校验数据元素的位置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/626,027 | 2017-06-16 | ||
US15/626,027 US10379952B2 (en) | 2017-06-16 | 2017-06-16 | Data recovery and regeneration using parity code |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109144767A CN109144767A (zh) | 2019-01-04 |
CN109144767B true CN109144767B (zh) | 2021-12-24 |
Family
ID=64457614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810234156.4A Active CN109144767B (zh) | 2017-06-16 | 2018-03-20 | 数据存储系统及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10379952B2 (zh) |
CN (1) | CN109144767B (zh) |
DE (1) | DE102018105847A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11726710B2 (en) | 2020-12-22 | 2023-08-15 | Seagate Technology Llc | Matrix super parity for data storage |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010020648A (ja) * | 2008-07-12 | 2010-01-28 | Hitachi Ulsi Systems Co Ltd | 記憶装置 |
CN101771421A (zh) * | 2010-03-11 | 2010-07-07 | 复旦大学 | 基于tdmp的超高速低功耗qc-ldpc码解码器 |
CN103392172A (zh) * | 2011-02-28 | 2013-11-13 | 国际商业机器公司 | 纠正存储阵列中的擦除 |
CN103475379A (zh) * | 2013-09-10 | 2013-12-25 | 电子科技大学 | 一种ldpc编码方法 |
CN104156276A (zh) * | 2014-08-14 | 2014-11-19 | 浪潮电子信息产业股份有限公司 | 一种防两块磁盘损坏的raid方法 |
CN104488196A (zh) * | 2012-11-05 | 2015-04-01 | 三菱电机株式会社 | 纠错编码方法及纠错编码装置 |
US9003264B1 (en) * | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
CN106575516A (zh) * | 2014-09-26 | 2017-04-19 | 英特尔公司 | 使用来自多个存储单元和奇偶校验存储单元的可靠性信息为一个失效存储单元恢复数据 |
CN107179961A (zh) * | 2016-03-11 | 2017-09-19 | 西部数据科技股份有限公司 | 存储系统中错误校正编码数据的冗余 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6101276A (en) * | 1996-06-21 | 2000-08-08 | Compaq Computer Corporation | Method and apparatus for performing two pass quality video compression through pipelining and buffer management |
US8880987B2 (en) * | 2011-07-29 | 2014-11-04 | Sandisk Technologies Inc. | Checksum using sums of permutation sub-matrices |
US8645789B2 (en) * | 2011-12-22 | 2014-02-04 | Sandisk Technologies Inc. | Multi-phase ECC encoding using algebraic codes |
US8972835B1 (en) * | 2012-06-06 | 2015-03-03 | Xilinx, Inc. | Encoding and decoding of information using a block code matrix |
US9529675B2 (en) * | 2013-07-26 | 2016-12-27 | Huawei Technologies Co., Ltd. | Data recovery method, data recovery device and distributed storage system |
US9793922B2 (en) * | 2015-09-25 | 2017-10-17 | HGST Netherlands B.V. | Repair-optimal parity code |
-
2017
- 2017-06-16 US US15/626,027 patent/US10379952B2/en active Active
-
2018
- 2018-03-14 DE DE102018105847.0A patent/DE102018105847A1/de active Pending
- 2018-03-20 CN CN201810234156.4A patent/CN109144767B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010020648A (ja) * | 2008-07-12 | 2010-01-28 | Hitachi Ulsi Systems Co Ltd | 記憶装置 |
CN101771421A (zh) * | 2010-03-11 | 2010-07-07 | 复旦大学 | 基于tdmp的超高速低功耗qc-ldpc码解码器 |
CN103392172A (zh) * | 2011-02-28 | 2013-11-13 | 国际商业机器公司 | 纠正存储阵列中的擦除 |
CN104488196A (zh) * | 2012-11-05 | 2015-04-01 | 三菱电机株式会社 | 纠错编码方法及纠错编码装置 |
US9003264B1 (en) * | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
CN103475379A (zh) * | 2013-09-10 | 2013-12-25 | 电子科技大学 | 一种ldpc编码方法 |
CN104156276A (zh) * | 2014-08-14 | 2014-11-19 | 浪潮电子信息产业股份有限公司 | 一种防两块磁盘损坏的raid方法 |
CN106575516A (zh) * | 2014-09-26 | 2017-04-19 | 英特尔公司 | 使用来自多个存储单元和奇偶校验存储单元的可靠性信息为一个失效存储单元恢复数据 |
CN107179961A (zh) * | 2016-03-11 | 2017-09-19 | 西部数据科技股份有限公司 | 存储系统中错误校正编码数据的冗余 |
Non-Patent Citations (2)
Title |
---|
Low-Complexity Transformed Encoder Architectures for Quasi-Cyclic Nonbinary LDPC Codes Over Subfields;Xinmiao Zhang;《 IEEE Transactions on Very Large Scale Integration (VLSI) Systems ( Volume: 25, Issue: 4, April 2017)》;20161209;全文 * |
NGB-W系统下LDPC码高效编译码器的FPGA实现;任晓龙;《中国优秀硕士学位论文全文数据库》;20170315;全文 * |
Also Published As
Publication number | Publication date |
---|---|
DE102018105847A1 (de) | 2018-12-20 |
US20180365107A1 (en) | 2018-12-20 |
US10379952B2 (en) | 2019-08-13 |
CN109144767A (zh) | 2019-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10740183B1 (en) | Recovering failed devices in distributed data centers | |
CN111149093B (zh) | 分布式存储系统的数据编码、解码及修复方法 | |
CN104052576B (zh) | 一种云存储下基于纠错码的数据恢复方法 | |
US8856619B1 (en) | Storing data across groups of storage nodes | |
US9690657B2 (en) | Writing data across storage devices in an erasure-coded system | |
CN110532126B (zh) | 纠删码存储系统数据快速恢复方法、装置及存储介质 | |
CN112860475B (zh) | 基于rs纠删码的校验块恢复方法、装置、系统及介质 | |
CN111697976B (zh) | 一种基于分布式存储的rs纠删快速解码方法及系统 | |
US20160350186A1 (en) | First responder parities for storage array | |
US10644726B2 (en) | Method and apparatus for reconstructing a data block | |
WO2018072294A1 (zh) | 一种校验矩阵的构造方法及水平阵列纠删码的构造方法 | |
US20210218419A1 (en) | Method, device and apparatus for storing data, computer readable storage medium | |
CN114153651B (zh) | 一种数据编码方法、装置、设备及介质 | |
CN112000512A (zh) | 一种数据修复方法及相关装置 | |
CN109358980A (zh) | 一种对数据更新和单磁盘错误修复友好的raid6编码方法 | |
CN109144767B (zh) | 数据存储系统及其操作方法 | |
US10031803B2 (en) | Distributed coding for multiple dimensional parities | |
US10430123B2 (en) | Hierarchical data recovery processing for extended product codes | |
US20180367162A1 (en) | CPU Error Remediation During Erasure Code Encoding | |
CN111224747A (zh) | 可降低修复带宽和磁盘读取开销的编码方法及其修复方法 | |
US10277253B2 (en) | High performance data redundancy and fault tolerance | |
CN104102558A (zh) | 一种基于纠删码的文件追加方法 | |
CN114296648B (zh) | 分布式云存储数据的维护方法、装置、设备和可读介质 | |
US10164655B2 (en) | Cache oblivious algorithm for butterfly code | |
CN107615248B (zh) | 分布式数据存储方法、控制设备和系统 |
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 |