CN104160452B - 用于存储数据和对擦除进行纠正的方法、系统和装置 - Google Patents

用于存储数据和对擦除进行纠正的方法、系统和装置 Download PDF

Info

Publication number
CN104160452B
CN104160452B CN201380007860.1A CN201380007860A CN104160452B CN 104160452 B CN104160452 B CN 104160452B CN 201380007860 A CN201380007860 A CN 201380007860A CN 104160452 B CN104160452 B CN 104160452B
Authority
CN
China
Prior art keywords
entry
odd even
data
row
array
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.)
Expired - Fee Related
Application number
CN201380007860.1A
Other languages
English (en)
Other versions
CN104160452A (zh
Inventor
M·布劳姆
J·L·哈夫纳
S·R·赫茨勒
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104160452A publication Critical patent/CN104160452A/zh
Application granted granted Critical
Publication of CN104160452B publication Critical patent/CN104160452B/zh
Expired - Fee Related 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/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
    • 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/108Parity data distribution in semiconductor storages, e.g. in SSD
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/033Theoretical methods to calculate these checking codes
    • 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/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种数据存储阵列包括m行和n列的条目,其中每个条目包括至少一个扇区。在该阵列中,mr+s个位置被分配给奇偶条目,而使得每一行具有至少r个奇偶条目。该奇偶条目对应于部分最大距离可分(PMDS)码,其允许从m行中的每一行中多达r次擦除以及数据阵列中任意位置的s次额外擦除进行恢复,其中是s大于零的整数。写数据和相关联的奇偶条目被写入到存储设备的集合。

Description

用于存储数据和对擦除进行纠正的方法、系统和装置
技术领域
本发明总体上涉及存储系统,更具体地,涉及用于存储阵列的部分最大距离可分(PMDS)纠删码(erasure correcting code)。
背景技术
计算机系统利用诸如奇偶计算之类的数据冗余方案来针对存储设备上的数据丢失进行保护。在独立磁盘冗余阵列(RAID)系统中,数据数值和相关奇偶数值跨磁盘驱动器成条形分布。RAID系统通常被用来保护硬盘驱动器(HDD)阵列中所存储的信息免于灾难性磁盘故障。两种常见的RAID方案是针对单一灾难性磁盘故障进行保护的RAID 5以及针对双重灾难性磁盘故障进行保护的RAID 6。
闪存是能够以大型分块进行电擦除和重新编程的固态非易失性存储设备类型。如同HDD,闪存设备将介质划分为通常为512比特的扇区。闪存设备进一步将扇区汇总为页面,其中每个页面通常有八个扇区,从而每个页面包含四千或4k字节(KB)。每个扇区由纠错码(ECC)进行保护,其对多种错误(典型地,单比特错误,虽然如字节错误的其它可能性也是可行的)进行纠正。常见的选择是Bose–Chaudhuri–Hocquenghem(BCH)码,如8位纠正或15位纠正的BCH码,虽然可能有许多变化形式。如在HDD中,闪存设备中的页面可能受到硬错误(HE)的影响。这例如在超出了页面的扇区中的BCH码的纠错能力时出现。与HDD相比,当页面处于其写耐力生命周期结尾附近,或者在其数据保存生命周期的结尾附近时,在闪存设备中超出BCH码的能力更加成为可能。因此,闪存设备中的HE的数量预计会随时间增长,在设备上留下潜在的HE。
由闪存设备所组成的阵列可能遇到灾难性设备故障与有可能更为普遍存在的HE相结合的混合形式。例如,使用RAID 5保护闪存设备中所存储的信息可能在存在潜在HE时导致设备故障。因此,对于给定数据条带块(例如,作为单元进行读取和/或写入的数据阵列)而言,如果RAID 5系统中的一个设备经历了灾难性设备故障,并且其它一些设备遭受到HE,则RAID 5系统将无法恢复该数据条带块中的信息。RAID 6可能允许数据得以被恢复,但是RAID 6为了奇偶性而要求专设整个第二设备,这在主要故障是HE时是昂贵的。
发明内容
实施例包括用于在存储阵列中存储数据的方法、系统和计算机程序产品。接收写数据并将其布置在包括m行和n列条目的阵列中,其中每个条目包括至少一个扇区。在该阵列中,mr+s个位置被分配给奇偶条目,而使得每一行具有至少r个奇偶条目。该奇偶条目对应于部分最大距离可分(PMDS)码,其允许从m行中的每一行中多达r次擦除以及数据阵列中任意位置的s次额外擦除进行恢复,其中s是大于零的整数。写数据和相关联的奇偶条目被写入到存储设备的集合。
另外的实施例包括一种用于对存储阵列中的擦除进行纠正的方法和计算机程序产品。从n个存储设备中的多个接收读条带块。该读条带块包括以m行和n列进行布置的条目阵列,其中每一列对应于存储设备中的一个。该条目包括数据条目和mr+s个奇偶条目。每一行包括根据部分最大距离可分(PMDS)码而从数据条目所生成的至少r个奇偶条目。确定该读条带块包括至少一个被擦除条目,最多mr+s个被擦除条目,并且没有一行具有多于r+s个被擦除条目。被擦除条目从未被擦除条目进行重构,这产生了被恢复的读条带块。
另外的特征和优势通过本发明的技术得以实现。本发明的其它实施例和方面在这里进行了详细描述并且被认为是所请求保护的发明的一部分。为了更好地利用该优势和特征来理解本发明,对描述和附图加以参考。
附图说明
现在将参考附图仅通过示例对本发明的(多个)实施例进行描述,其中:
图1图示了依据实施例的用于提供部分最大距离可分(PMDS)码的系统的框图;
图2图示了依据实施例的存储系统;
图3图示了依据实施例的编码块的内容;
图4是依据实施例的用于执行纠删的处理流程;
图5是依据实施例的用于对写条带块进行编码的处理流程;以及
图6是依据实施例的用于对读条带块进行解码的处理流程。
具体实施方式
本发明的实施例是具有二维结构的纠删码的新族群。这些纠删码在这里被称作部分最大距离可分(PMDS)码。这里所描述的PMDS码的实施例能够容忍(即,从其恢复)灾难性故障以及至少两个另外的硬错误(HE),即使是在该另外的HE与作为单元(例如,读数据条带块、写数据条带块)进行处理的数据阵列位于相同行中的时候。
如这里所使用的,术语“灾难性故障”是指诸如闪存设备的整个固态硬盘(SSD)的故障。如这里所使用的,术语“纠删”是指对其位置已知的错误进行纠正。纠删不同于“纠错”,如这里所使用的,后者是指对其位置并非已知的错误进行纠正。纠正删除与对纠错相比大约需要一半数量的冗余。如这里所使用的,术语“硬错误”或“HE”是指删除(擦除)(即,具有已知位置的错误)。
虽然诸如Bose–Chaudhuri–Hocquenghem(BCH)码之类的纠错码(ECC)有助于在校验之后将闪存设备中的原始误码率降低到较低水平,但是最终的水平仍然可能高于存储系统的目标原始误码率。例如,15位纠正BCH码可能在对512字节(B)的扇区进行解码之后将.001的原始误码率降低至2.7e-9的原始误码率。然而,代表闪存设备中的HE概率的该原始误码率基本上高于典型硬盘驱动器的原始误码率,后者的范围可能从8e-14到8e-16。更高的错误率可能在闪存设备中的写耐力的结尾附近出现以及在数据保存生命周期的结尾附近出现。
当超出了ECC的纠错能力时,这种情况将以非常高的概率被检测到。例如,如果已经实施了15位纠正的BCH码,并且已经发生了多于15个的错误,则BCH码自身非常可能会检测到这样的情况。在任何情况下,通常增加以循环冗余校验(CRC)以便确保误纠正的概率为1e-26等的量级。无法检测到误纠正的BCH码在症状上等同于HDD丢弃写入或偏离轨道写入。
实施例可以采用本领域已知的任意多种擦除纠正码。实施例所采用的多种擦除码的一个示例是Reed-Solomon(RS)码。RS码是本领域已知的并且能够被用来对多个擦除进行纠正。RS码是基于符号,其中符号的大小取决于应用。对于有关涉及RAID架构的RS码的教导而言,参见J.S.Plank的“A Tutorial on Reed-Solomon Coding for Fault-Tolerance inRAID-like Systems”,Software,Practice&Experience,995-1012,1997年9月。
用于对多个擦除进行纠正的另一有效编码族群由Blaum-Roth 93(BR93)码所给出,如M.Blaum et al.,New Array Codes for Multiple Phased Burst Correction”,IEEE Transactions on Information Theory,vol.39,pp.66-77 1993所给出。BR93码是通过避免Galois域运算而仅进行异或(XOR)运算而趋于不如RS码复杂的阵列代码。
RS和BR93码都是最大距离可分(MDS)编码,这意味着它们为了纠删而对冗余进行最优利用。RS和BR93码是这里所描述的实施例所能够利用的多次纠删码中的两种类型的示例。实施例并不局限于这两种编码,因为还可以实施其它编码族群,诸如通用EVENODD码或通用行对角码(RDC)。
与硬盘驱动器(HDD)的阵列相反,SSD的阵列呈现出混合的故障模式。在一方面,就像HDD的情形一样,存在着灾难性SSD故障。另一方面,存在着硬错误(HE),其通常是静默的,因为在试图访问包含HE的扇区之前并不知道其存在。这种情形使得在RAID(独立磁盘冗余阵列)类型的架构中进行恢复的任务复杂化。例如,假设在RAID 5架构中出现了灾难性SSD故障。则通过对每个幸存设备中的相对应扇区中进行“异或”(XOR)对故障设备的每个扇区进行重构而开始恢复。然而,如果存在还遭受到HE的行,则这样的行具有两个已经出现故障的扇区。RAID 5无法从这样的情形进行恢复并且将发生数据丢失。
针对以上情形的一种可能的解决方案是使用RAID 6类型的架构。其中两个SSD被用于奇偶性。RAID 6架构允许恢复一行中的两个已擦除扇区。然而,这样的解决方案可能是浪费的,因为需要另外的整个设备来针对HE进行保护。这里所描述的PMDS码的实施例提供了一种通过允许对HE进行处理而并不需要针对奇偶性专设整个第二SSD而介于RAID 5和RAID 6之间的解决方案。
为了处理这种带有灾难性故障的HE的混合环境,要对在SSD中写入信息的方式加以考虑。在SSD中写入信息的方式与在HDD中写入信息的方式十分不同。在SSD中,新的写入包括首先擦除多个连续扇区并且对它们全部进行重写。因此,SSD阵列中的短暂写操作(例如,每次一个扇区)在这里并不是问题:每次执行一次新的写入,每个SSD中例如M个扇区的数据条带块得以被擦除并在随后被重写。在这种情况下,作为新的写入的一部分重新计算奇偶性。如这里所描述的,假设存储阵列由逐个重复的“m×n”个条带块所组成(其中“n”是SSD的数量)。每个m×n条带块是一个独立单元并且每个条带块的奇偶性将依据这里所描述的实施例进行计算。此外,每次新的写入包括写入m×n数量的条带块(根据应用、所使用的特定SSD和其它因素,该数量可以为1)。这里所描述的PMDS编码族的实施例允许同时对灾难性故障和HE进行纠正。
图1描绘了依据一个实施例的使用PMDS进行保护的系统100的框图。如图1所示,主机计算机102与存储系统110中的阵列控制器104进行通信。存储系统110在由n个存储设备所组成的存储阵列108中存储数据(其中n大于1):存储设备0 106a,存储设备1 106b、存储设备2 106c至存储设备n-1 106d。在一个实施例中,奇偶位连同主机数据(例如,表示为数据比特)一起存储在存储设备106中。在一个实施例中,存储阵列108中的存储设备106由诸如闪存设备的SSD实施。在一个实施例中,该阵列由五个闪存设备所组成,每个设备具有32G字节(GB)的存储容量。如图1所示,阵列控制器104是存储系统110的一部分;在另一个实施例中,阵列控制器104是主机计算机102的一部分。
图2图示了依据一个实施例的图1的存储系统110。存储系统110可以包括如本领域技术人员所知的诸如接收器、传送器和时钟的多种其它部件,出于清楚的目的而并未对它们进行图示。如图2所示,阵列控制器104包括编码器202和解码器204。编码器202在写入处理期间被用于接收一个或多个写输入数据比特(例如,从主机计算机102)并且生成写条带块,其包括数据条目和奇偶条目。每个条目包括“b”个比特并且可以对应于一个或多个页面、一个或多个扇区和/或一个或多个符号。在一个实施例中,写条带块在存储阵列108中写入并且跨过存储阵列108中的多行。解码器204在读取处理期间被用于从存储阵列108读取一个或多个数据条目。当检测到条目中的一个或多个HE时,解码器读取其中已经从存储阵列108检测到(多个)HE的整个条带块。解码器204和编码器202都有权访问共享数据(例如,用来识别编码器202对写条带块所应用以生成写条带块的编码类型的数据)。读条带块包含被解码器204去除以生成读取数据的奇偶位。解码器204包括在已经发生了至少一个数据条目的读取故障时使用的重构器206。读取故障例如在已经超出条目的内部ECC的纠错能力时发生。通常,错误条目位置是已知的,并且因此错误位置(例如,(多个)被擦除条目的位置)和读条带块被发送至重构器206,后者试图恢复被擦除的条目。
图3描绘了跨多个存储设备106存储的数据阵列的内容(该数据阵列在这里也被称作“条带块”)。该数据阵列被编码器202使用PMDS码作为一个单元进行编码。如这里所使用的,术语“编码条带块”是指共同构成写条带块并且作为单元利用PMDS码进行编码的条目群组。如这里所使用的,术语“解码条带块”是指共同构成读条带块并且作为单元利用PMDS码进行解码的条目群组。
图3中所描绘的数据阵列包括以m行和n列进行布置的条目。每个条目类型旁的下标表示该条目在数据阵列中的位置(即,“a00”是处于数据阵列中0行0列的条目)。在一个实施例中,每一列表示存储设备的一部分。在图3所描绘的条带块中,每个条目表示存储在闪存设备中的存储器单元中的“b”个符号。处于这里描述的原因,假设b个符号中的每一个是一个比特,但是实际上其可能为明显更大的符号。假设ECC(例如,BCH)和/或CRC被用来检测已经发生的条目读取故障并且识别任意的擦除位置。这里所描述的实施例假设读取故障已经被报告,而无论用来识别这样的读取故障的方法如何。
在一个实施例中,解码器204接收读条带块,该读条带块已经经历了来自以图3所描述的方式进行编码的存储阵列108的一个或多个条目中的HE。在一个实施例中,由位于解码器204中的重构器206来执行从HE恢复。
依据一个实施例,阵列中的每一行以将对该行中的任意r次擦除进行恢复的方式通过r个奇偶条目进行保护。换句话说,该数据阵列的每一行构成[n,n-r,r+1]MDS码。此外,“s”个额外的全局奇偶位被添加至该阵列。该s个额外奇偶位可以以许多不同方式被置于该数据阵列中,但是为了简化描述,在该示例中,它们被放在最后一行。其全局性意味着这些奇偶位对数据阵列中的所有“mn”个条目都有所影响。例如,以下示出了4×5的数据阵列中的实例,r=1且s=2并且在最后一行中放入两个额外的全局奇偶位。“D”指示数据条目而“P”指示奇偶条目。
参考以上数据阵列,假设发生了灾难性故障(也就是说,数据阵列中的一个整列都发生了故障),并且此外,数据阵列中的任意地方有多达两处的HE。这里所描述的PMDS将对这些故障(这里也被称作擦除)进行纠正。这种情形在以下数据阵列中进行了图示。在左侧的数据阵列中,在不同行中出现了两个另外的HE。在右侧的阵列中,在相同行中出现了两个另外的HE。“F”指示故障而“N”指示无故障。
一种解决该问题的方法是使用MDS编码。在4×5的数据阵列示例中,总共有6个奇偶条目。从而,可行的是在具有6个奇偶条目的20个条目(例如,符号)上实施MDS码。因此,能够实施[20,14,7]MDS码(如RS码)。该方法所存在的问题在于其复杂度。在一个实施例中,该MDS码是[20,14,7]RS码。其中数据阵列中的行数m为4的该示例仅是出于说明的目的而给出。应用中更为典型的m数值为16或32,并且这将导致18或34个奇偶条目。虽然是可行的,但是实施这样的编码是复杂的。在正常操作中,编码基础期望利用其基于行的底层RAID结构,如RAID 5的情况下的单个奇偶位。额外奇偶位相对少地被偶而调用。这里所描述的PMDS码的实施例符合具有水平编码的约束以便对底层的RAID结构加以利用。在RAID 5加上两个全局奇偶位的示例的情况下,PMDS码能够对多达每行一次的擦除进行纠正,并且另外对任意地方的两处擦除进行纠正。因此,PMDS码能够纠正以上数据阵列中所描绘的指示故障和非故障的任意情形。
如下定义1中所定义的PMDS码的实施例
定义1。令c为m×n的数据阵列而使得每一行被编码为[n,n-r,r+1]MDS码,并且此外s个奇偶符号被添加到该阵列中。如果除了纠正多达每行r次擦除之外,c能够对阵列中任意地方的s次擦除进行纠正,则c是(r,s)PMDS码。
定义1中所定义的编码c是二维编码。假设条目以按行的方式被水平读取,则使得该编码为[mn,m(n-r)-s]线性码。下文中基于其奇偶校验矩阵对编码的实际结构进行描述,该矩阵为(mr+s)×mn矩阵。
图4描绘了依据一个实施例的由编码器204所实施的处理流程。在框402,ECC和/或CRC检测到条目的读取发生了故障。在框404,发送请求以读取包含已发生读取故障的条目的条带块中的所有条目。在框406,读条带块连同已经发生读取故障的(多个)条目的(多个)位置(即,(多个)被擦除的条目位置)一起被发送至重构器206。在框408,确定读条带块中的被擦除条目位置的数量是否大于该方案的纠删能力。例如,如果已经实施了能够恢复每行中一次擦除加上两个全局奇偶位的码,并且框408发现已经擦除了整个列连同三个额外条目,则超出了PMDS码的纠删能力。如果在框408确定读条带块中的被擦除条目位置的数量大于PMDS方案的能力,则执行框414以将错误条件返回至解码器204。如果在框408确定被擦除条目位置的数量处于PMDS方案的能力之内,则执行框410。在框410,使用如这里所描述的PMDS纠删码的实施例来重构读条带块。在框412,重构器206向解码器204输出所恢复的读条带块,其包括所恢复(多个)读条目。
图5和图6描绘了遵循经典编码理论的编码器和擦除(删除)解码器。在擦除解码中,编码是解码的特殊情况,并且擦除求解涉及校正子(syndrome)计算,随后求解线性系统,该线性系统具有与已经发生的擦除的数量相等的等式数量。该校正子根据如以下所给出的奇偶校验矩阵进行计算,并且只要擦除处于编码的擦除校验能力之内,该系统始终都具有解决方案。
图5是依据一个实施例的用于对写条带块进行编码的处理流程。在一个实施例中,图5所描绘的处理流程由编码器220所执行以保护m×n的数据阵列免于r个灾难性错误和“s”个另外错误的影响。在框502,假设具有“n”列(例如,闪存设备)和“m”行。此外,假设前m-1行中前n-r列中的条目以及第m行前n-r-s个条目包含数据条目(或信息条目)。其余条目为空白并且将使用如以下所描述的PMDS码进行编码。在框504,使用[n,n-r]MDS码对前m-1行进行编码。在一个实施例中,每一行的结果被存储在相对应行的后n-r个条目之中。在框506,通过基于如以下所描述的奇偶校验矩阵求解线性系统而对最后一行进行编码。在一个实施例中,该结果存储在该数据阵列的最后一行即第m-1行中的最后n-r-s个条目中。
图6中依据一个实施例的用于对写条带块进行解码的处理流程。在一个实施例中,图6所描绘的处理由解码器204针对m×n的数据阵列执行。在框602,假设存在均具有多达r+sj次擦除的“t”行(其中1≤j≤t),其中sj之和等于s,并且其余行中有多达r次擦除。在框604,使用一个或多个[n,n-r]MDS码对最多具有r次擦除的行进行纠正。在框606,通过计算校正子并且基于如以下所描述的奇偶校验矩阵求解线性系统而对均具有多达r+sj次擦除的“t”行进行纠正。
以下为对于PMDS码的实施例的码结构的描述,以及对要作为PMDS码的擦除纠正码的一般条件的描述。此外,针对所选择的应用对PMDS码的具体实施例进行描述。
码结构
如以上所描述的,每个条目由b个比特所组成。在一个实施例中,假设每个条目处于一个环中。该环由b次多项式f(x)所定义,即该环中的两个元素的乘积(取作次数达b-1的多项式)是将两个元素的乘积除以f(x)的余数(如果f(x)是不可约的,则该环成为Galois域GF(2b))。令α为定义该环的多项式f(x)的根。被表示为e(f(x))的f(x)的指数是α的指数,即最小值而使得如果f(x)是原函数(primitive),则e(f(x))=2b-1。
在应用中非常重要的特殊情形是f(x)=1+x+…+xp-1,其中p为素数。在这种情况下,e(f(x))=p且f(x)是不可约的。实际上,当且仅当2在GF(p)中是原函数时,证明f(x)不可约并不困难。因此,次数达到p-2的以1+x+…+xp-1为模的多项式构成环且通常并不构成域。该环被用来构建Blaum-Roth(BR)码,并且如这里的实施例中所描述的,假设f(x)是不可约的或者f(x)=1+x+…+xp-1,其中p为素数。一般结构定义如下。
结构1。考虑以二进制多项式为模的f(x),其中f(x)是不可约的或者f(x)=1+x+…+xp-1,其中p为素数。令mn≤e(f(x)),其中e(f(x))表示f(x)的指数。令c(m,n,r,s;f(x))为编码,其(mr+s)×mm奇偶校验矩阵为:
其中H(n,r,i,j)是r×n矩阵
如等式(2)所给出的其中每行为前一行的平方的矩阵H(n,r,i,j)已经在本领域中被用来构建其度量由秩所给出的编码,用于构建能够按列编码并按行解码的码,以及用于构架差分MDS码。
随后的示例1图示了结构1。
示例1。考虑m=3且n=5,则,
结构1针对特定参数以及定义环或域的多项式函数(即,f(x))提供了PMDS码。所接收的条目由所表示,其中所擦除的条目等于0。第一步是计算rm+s的校正子。对于c(m,n,r,s;f(x))编码而言,使用(1)所给出的奇偶校验矩阵该校正子为:
r=1的情形。以下为对其中r=1的情形的描述以及如何使用校正子来解码并确定c(m,n,r,1;f(x))编码是否为PMDS的描述。公式(1)所给出的奇偶校验矩阵被写为:
其中对于0≤j≤m-1
假设对于整数sj≥0而言,如果每次在行ij中最多有sj+1次擦除,其中0≤i1<i2<…<it≤m-1,则编码c(m,n,1,s;f(x)为(s1+1,s2+1,...,st+1)-擦除纠正的,编码c(m,n,r,1;f(x))能够对这样的擦除进行纠正。注意到,根据定义1,当且仅当c(m,n,r,1;f(x))针对每个选择的整数sj≥1以至于都为(s1+1,s2+1,...,st+1)-纠删的时候,编码c(m,n,1,s;f(x))为PMDS。以下引理定义了何时将c(m,n,1,s;f(x))表征为(s1+1,s2+1,...,st+1)-纠删的。
引理1。考虑编码c(m,n,1,s;f(x))且令sj≥1(1≤j≤t)使得对于每个sj,如果sj为奇数,则令s′j=sj,而如果sj为偶数,则令s′j=sj-1且因此,当且仅当c(m,n,1,s′;f(x))为s′1+1,s′2+1,...,s′t+1)-纠删的时,c(m,n,1,s;f(x))为(s1+1,s2+1,...,st+1)-纠删的。
引理2。考虑编码c(m,n,1,s;f(x))并且令sj≥1,每个sj(1≤j≤t)是奇数,而使得因此,当且仅当对于任何
则c(m,n,1,s;f(x))是(s1+1,s2+1,...,st+1)-纠删的。
引理1和2的组合导致以下定理。定理1。对于s≥1,如结构1所给出的编码c(m,n,1,s;f(x))当且仅当以下情况时是PMDS:(1)编码c(m,n,1,s-1;f(x))是PMDS,并且(2)对于使得的任意(s1,s2,…,st)并且每个sj为奇数,对于任意0≤i2<i3<…<it≤m-1以及任意而言,(6)保持成立。
定理1提供了进行检查以便确定如结构1所给出的编码c(m,n,1,s;f(x))是否为PMDS的条件,但是其自身并没有提供PMDS码的任何族群。考虑以f(x)=1+x+…+xp-1为模的多项式的环,而使得p为素数且mn<p。存在着f(x)不可约并且该环成为域的情形(等同地,2是GF(p)中的原函数(primitive))。注意到,定理1具有最多为mn-1<p-1=deg(f(x))的次数。因此,如果f(x)不可约,则所有这样的多项式与f(x)为相对素数并且该编码为PMDS。这在以下作为定理2指出,其提供了PMDS码的族群(不可约的多项式f(x)=1+x+…+xp-1的数量是否为无限大并非已知)。
定理2。考虑由结构1在以f(x)=1+x+…+xp-1为模的元素域上所提供的编码c(m,n,1,s;f(x))使得p是素数并且f(x)不可约(或者等同地,2是GF(p)中的原函数)。则编码c(m,n,1,s;f(x))是PMDS。
截至目前的描述已经对s的一般数值进行了处置。在下文中,描述对于应用而言可能非常重要的特殊情形。
r=1且s=1的情形:c(m,n,1,1;f(x))
c(m,n,1,1;f(x))始终是PMDS,因为通过定理1,1+xj(1≤j≤n-1)类型的二项式和f(x)是相对素数。当f(x)不可约时显然如此,并且在这种情况下,f(x)=1+x+…+xp-1而使得p是素数并且f(x)不可约同样为真。该结果作为定理3而给出。
定理3。编码c(m,n,1,1;f(x))始终为PMDS。
r=1且s=2的情形:c(m,n,1,2;f(x))
这种情况在应用中是重要的,特别是对于SSD的阵列而言。由于c(m,n,1,1;f(x))是PMDS,定理1针对s=2的情形给出了以下定理。
定理3。针对任意1<i≤m-1且针对任意0≤l1,0<l1,1≤n-1,0≤l2,0<l2,1≤n-1,当且仅当以下情况时,编码c(m,n,1,2;f(x))为PMDS
由于这种情况在应用中非常重要,所以在这里对(其编码为特殊情形的)解码稍加详细地进行描述,其它情形相似地加以对待。考虑PMDS码c(m,n,1,2;f(x)),即其满足定理4的条件。在不失一般性的情况下,假设相同行i0中存在三次擦除,或者不同行i0和i1中有两对擦除,其中0≤i0<i1≤m-1。考虑其中相同行i0中出现三次擦除第一情形,并且在行i0的条目j0,j1和j2中,0≤j0<j1<j2。最初假设使用等式(3)和(5)(等式(4)仅用于r>1),计算校正子Sm和Sm+1
使用如等式(1)所给出的奇偶校验矩阵求解以下线性系统:
针对该系统的解决方案为:
由于矩阵
是Vandermonde矩阵
所以以1+x+th为模的多项式的环为
由于矩阵
是Vandermonde矩阵
如本领域技术人员将会意识到的,例如使用Blaum和Roth的美国专利号5,321,246“Method and Means for Coding and Rebuilding the Data Contents of UnavailableDASDs or Rebuilding the Contents of a DASD in Error in the Presence of aReduced Number of Unavailable DASDs in a DASD Array”中所描述的方法,元素可以在以1+x+…+xp-1为模,p为素数的多项式的环中进行反转。
编码是解码的特殊情形。例如,假设将两个全局奇偶位放在如图3所示的阵列中的位置(m-1,n-3)和(m-1,n-2)。在使用单个奇偶位计算奇偶位ai,n-1(0≤i≤m-2)之后,使用以上所描述的方法计算奇偶位am-1,n-3,am-1,n-2和am-1,n-1。特别地,Vandermonde行列式变为(令i0=m-1,j0=n-3,j1=n-2且j2=n-1)因此,仅需要将进行反转以便进行编码,并且许多运算可以预先进行计算,这使得编码非常有效。
另一种情形是行i0和i1中有两对擦除,0≤i0<i1≤m-1。在该示例中,假设被擦除的条目是行i0中的以及行i1中的再次,使用奇偶校验矩阵求解具有4个未知数的4个等式的线性系统。
其中由(3)给出,而Sm和Sm+1由等式(5)给出。为了求解该线性系统,将以下行列式进行反转
通过行运算看出,该行列式等于以下行列式乘以α的幂:
注意到,该行列式对应于2×2的Vandermonde矩阵,并且其等于乘以如之前所描述的,该最后的表达式在以f(x)=1+x+…+xp-1为模的环,p为素数的情况下易于进行反转。然而,对进行反转并不像如以上所示出的反转二项式1⊕aj那样齐整。由于和1+x+…+xp-1由于定理4而是相对素数,所以使用Euclid算法对以为模的f(x)进行反转。
这占用了一些计算时间,但是这并不是经常出现的操作。当出现这种情况时,性能一般会由于灾难性故障而已经出现退化。
以下是对一些具体PMDS编码c(m,n,1,2;f(x))的分析。考虑第一个有限域GF(2b)。以下的表1包括数值b、不可约多项式f(x)(以八进制符号表示)、指数e(f(x))以及编码e(m,n,1,2;f(x))根据定理4是PMDS的数值m和n。该列表并非意在是所有其中该编码为PMDS的所有可能数值的穷举。
表1
接下来,考虑多项式模f(x)=1+x+…+xp-1的环,p为素数并且mn<e(f(x))=p。定理2求解了其中f(x)不可约的情况,从而在这种情况下,假设f(x)是不可约的,即该环并不是域。针对BR码考虑了该环是因为其允许对大尺寸符号的擦除进行有效纠正而并不像有限域的情况下那样使用查找表。要针对的不同数值m和n,mn<p对定理4的所有可能情形进行检查。
该结果在以下的表2中列出,其给出了17和257之间f(x)针对其可约的素数(因此,2在中并非是GF(p)中的素数)连同m和n的一些数值,以及指示该编码是否为PMDS的声明。对于大部分这些素数,这些编码都是PMDS。仅有的意外是31、73和89。89的情形特别令人感兴趣,由于对于m=8和n=11以及对于m=n=9而言,该编码并非是PMDS。然而,对于m=11和n=8而言,该编码是PMDS,其说明了作为PMDS的编码不仅取决于所选择的多项式f(x)而且还取决于m和n。
表2
r=1和s=3的情形:c(m,n,1,3;f(x))
有两种方式来获得作为计数之和的s=3,一种是3自身,另一种是1+1+1。因此,基于定理1,定理5为:
定理5。如果当且仅当以下情况时编码e(m,n,1,3;f(x))为PMDS,e(m,n,1,2;f(x))为PMDS,并且对于1≤l1<l2<l3≤n-1,
并且对于任何1≤i2<i3≤m-1,0≤l1,0<l1,1≤n-1,0≤l2,0<l2,1≤n-1以及0≤l3,0<l3,1≤n-1,
所以,为了检查编码e(m,n,1,3;f(x))是否为PMDS,则首先进行检查e(m,n,1,2;f(x))是否是PMDS,类似于以上表1和2所列出的情形。随后进行检查以查看定理5的等式(8)和(9)是否满足。
例如,表1中的编码是c(m,n,1,2;f(x))PMDS码,但是定理5中的等式(9)非常具有限制性并且大多数条目并不对应于c(m,n,1,3;f(x))PMDS码。然而,在表2中,作为c(m,n,1,2;f(x))PMDS码的若干编码也是c(m,n,1,3;f(x))PMDS码。这些结果在以下的表3中示出,其示出了素数17,43,89,127,151,241和257的结果,而且还示出了其中(m,n)=(11,8)的89的结果,虽然它们是c(m,n,1,2;f(x))PMDS码,但是该编码并非是c(m,n,1,3;f(x))。PMDS码。表3示出了使得2并非是GF(p)中的素数的p的数值,以及一些编码c(m,n,1,3;f(x)),mn<p。
表3
r=1和s=4的情形:c(m,n,1,4;f(x))
类似于之前的分析,s=4被写为奇数的所有可能和。有三种方式这样做:4=1+3,4=3+1以及4=1+1+1+1。因此,基于定理1,定理6是:
定理6。当且仅当以下情况时,结构1所给出的编码c(m,n,1,4;f(x))是PMDS,编码c(m,n,1,3;f(x))是PMDS,并且对于任何1≤i≤m-1,0≤l1,0<l1,1≤n-1和0≤l2,0<l2,1<l2,2<l23≤n-1,
对于任何1≤i≤m-1,0≤l1,0<l1,1<l1,2<l1,3≤n-1和0≤l2,0<l2,1≤n-1,
而且对于任何1≤i2<i3<i4≤m-1,0≤l1,0<l1,1≤n-1,0≤l2,0<l2,1≤n-1,1≤l3,0<l3,1≤n-1和1≤l4,0<l4,1≤n-1,
考虑编码c(m,n,1,4;f(x))的下一种受限情形。当代的编码已经被结构为能够从擦除的列以及具有多达两个错误的一行或者均具有多达一个错误的两个不同行一起进行恢复。从编码的观点来看,同时为5-纠删的和(3,3)-纠删的c(m,n,1,4;f(x))编码将完成该任务(这些条件实际上比同代的编码更强,因为它们并不需要擦除的列,因为擦除能够在行中的任何地方)。
注意到,根据引理2,当且仅当等式(8)针对任何1≤l1<l2<l3≤n-1都保持成立时编码c(m,n,1,4;f(x))是5-纠删的。而且,通过引理2,当且仅当等式(7)针对任何1≤i≤m-1以及1≤l1,0<l1,1≤n-1,1≤l2,0<l2,1≤n-1都保持成立时,编码c(m,n,1,4;f(x))是(3,3)-纠删的。等式(7)由于定理4而完全是编码c(m,n,1,2)要作为PMDS的条件。这导致了以下引理。
引理3。当且仅当编码c(m,n,1,2;f(x))是PMDS且等式(8)针对任何1≤l1<l2<l3≤n-1都保持成立时,编码c(m,n,1,4;f(x))是5-纠删的和(3,3)-纠删的。
如表2所示,对于c(m,n,1,2;f(x))为PMDS的m,n和p的数值,等式(8)保持成立。因此,通过引理3,对于这样的素数p,编码c(m,n,1,4;f(x))为5-纠删的和(3,3)-纠删的。
s=1的情形:c(m,n,r,1;f(x))
截至目前,已经对r=1的情形进行了描述。如果r=s=1,则如之前所描述的,该编码为PMDS。随后为对于r>1的情形的检验。因此,假设行i,0≤i≤m-1在位置0≤j0<j1<…<jr≤n-1具有r+1次擦除。随后的定理7给出了该编码要作为PMDS的条件。
定理7。考虑编码c(m,n,r,1;f(x))。如果r是偶数,则当且仅当c(m,n,r-1,1;f(x))为PMDS时c(m,n,1,4;f(x))是PMDS,而当r是奇数时,当且仅当以下情况时c(m,n,1,4;f(x))是PMDS,c(m,n,r-1,1;f(x))是PMDS并且针对任意1≤l1<l2<…<lr≤n-1,
如之前所描述的,c(m,n,1,1;f(x))是PMDS。因此,通过定理7,c(m,n,2,1;f(x))也是PMDS。根据等式(13),当且仅当(8)针对任何1≤l1<l2<l3≤n-1和r=3都保持成立时,c(m,n,3,1;f(x))和c(m,n,4,1;f(x))是PMDS。
r=2和s=1的情形:c(m,n,2,2;f(x))
对于要作为PMDS的c(m,n,2,2;f(x)),其必须要为4-纠删的和(3,3)-纠删的。如之前所描述的,当且仅当等式(8)针对任何1≤l1<l2<l3≤n-1都保持成立时,c(m,n,2,2;f(x))是4-纠删的。而且如之前所描述的,这等于是说编码c(m,n,3,1;f(x))是PMDS。通过检查编码c(m,n,2,2;f(x))是(3,3)-纠删的条件,其结果是定理8。
定理8。当且仅当以下情况时,编码c(m,n,2,2;f(x))是PMDS:如果c(m,n,3,1;f(x))是PMDS,并且针对任意1≤i≤m-1,0≤l1,0<l1,1<l1,2≤n-1和0≤l2,0<l2,1<l2,2≤n-1,如果
则gcd(g(x),f(x))=1。
可替换结构
以下是对作为之前所描述的结构1的替换形式的PMDS编码结构的实施例的描述。
结构2。考虑以f(x)为模的二进制多项式,其中f(x)是不可约的或者f(x)=1+x+…+xp-1,p是素数,并且令mn≤e(f(x))。令c(1)(m,n,r,s;f(x))是具有如下(mr+s)×mn奇偶校验矩阵的编码:
其中H(n,r,i,j)是r×n矩阵
并且0(n,r)是r×n零矩阵。
接下来,利用一些示例对结构2进行说明。在第一示例中,m=3且n=5.。则:
注意,c(m,n,1,2;f(x))和c(1)(m,n,1,2;f(x))冲突。以下是对一些特殊情况的分析。
s=1的情形:c (1) (m,n,r,1;f(x))
现在对c(1)(m,n,r,1;f(x))为(r+1)-纠删的条件进行检验。使用如等式(14)所定义的奇偶校验矩阵当且仅当以下情况时,c(1)(m,n,r,1;f(x))是(r+1)-纠删的:针对任何0≤i≤m-1以及针对任何1≤j0<j1<…<jr,Vandermonde行列式
是不可逆的。由于当f(x)不可约时,是不可逆的。当f(x)=1+x+…+xp-1,p为素数并且f(x)可约时,也是不可逆的。这导致了定理9。
定理9。编码c(1)(m,n,r,1;f(x))是PMDS。
将定理7和9进行比较而得出结论,对于r≥2,编码c(1)(m,n,r,1;f(x))优于c(m,n,r,1;f(x)),因为前者是PMDS而没有约束。
r=1且s=3的情形:c (1) (m,n,1,3;f(x))
以下定理保持成立。
定理10。如结构2所给出的编码c (1) (m,n,1,3;f(x))当且仅当以下情况下是PMDS:针对任何0≤i1≠i2≤m-1,0≤l1,0<l1,1<l1,2≤n-1和0≤l2,0<l2,1≤n-1,f(α)=0,以下矩阵是不可逆的
并且针对任何1≤i2<i3≤m-1,0≤l1,0<l1,1≤n-1,0≤l2,0<l2,1≤n-1和0≤l3,0<l3,1≤n-1,以下矩阵是不可逆的
考虑f(x)=1+x+…+xp-1,p为素数。所有使得2在GF(p)中为素数的素数p直至p=227都被测试(即,f(x)是不可约的),并且等式(16)和(17)所给出的矩阵在所有情况下都是不可逆的。这导致了引理4。
引理4。考虑结构2在以f(x)=1+x+…+xp-1为模而使得p为素数并且f(x)不可约(或者等同地,2在GF(p)中为原函数)的域上所给出的编码c(1)(m,n,1,3;f(x))。因此,对于19≤p≤227,c(1)(m,n,1,3;f(x))为PMDS。
对于使得2在GF(p)中并非原函数的p的数值,表4中针对m和n的不同数值而列出了一些结果。该表格与表3非常相似。
表4
实际上,将表3和表4相比较,能够看出对于使得c(1)(m,n,1,3;f(x))为PMDS的p,m和n的数值,c(m,n,1,3;f(x))也为PMDS。然而,对于p=23,c(3,7,1,3;f(x))是PMDS但c(1)(3,7,1,3;f(x))则不是;对于p=41,c(5,8,1,3;f(x))是PMDS但c(1)(5,8,1,3;f(x))则不是;而对于p=113,c(3,7,10,11;f(x)),c(3,7,11,10;f(x))和c(3,7,12,9;f(x))是PMDS但c(1)(3,7,10,11;f(x)),c(1)(3,7,11,10;f(x))和c(1)(3,7,12,9;f(x))则不是。
以下描述包括附加编码结构以及对PMDS码的实施例的描述。
技术效果和益处包括适用于其中硬错误与灾难性设备故障同时存在的闪存阵列类型的架构的PMDS编码。这里描述了在应用中有用的具体编码,以及PMDS码满足最优标准的必要和充分条件。技术效果和益处还包括能够提供与独立磁盘冗余阵列RAID 6的相同的保护,但是存储效率与RAID 5相接近。因此,实施例可以被用来使得针对给定冗余数量的条带块故障的保护最大化。
这里所使用的术语仅是出于对特定实施例进行解释的目的,而并非意在对本发明进行限制。如这里所使用的,除非上下文另外明确指出,否则术语“一个”(“a”、“an”和“the”)也包括复数形式。将要进一步理解的是,当在该说明书中使用时,术语“包括”和/或“包括了”表明存在所提到的特征、整数、步骤、操作、要素和/或组件,但是并不排除存在或增加一个或多个其它的特征、整数、步骤、操作、要素、组件和/或其群组。相对应的结构、素材、动作以及所有器件或步骤的等同形式加上以下权利要求中的功能部件意在包括用于与特别要求保护的其它所请求保护部件相结合地执行功能的任意结构、素材或动作。已经出于说明和描述的目的而给出了对本发明的描述,但是其并非意在进行穷举或者将本发明限制在所公开的情形。许多修改和变化对于本领域技术人员将是显而易见的而并不背离本发明的范围和精神。实施例被选择并描述以便对本发明的原则和实际应用最佳地进行解释,并且使得本领域技术人员能够针对具有适于所预期的特定使用的各种修改的实施例来理解本发明。
此外所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令还可以加载到计算机、其它可编程数据处理装置或者其它设备上而使得一系列操作步骤得以在该计算机、其它可编程数据处理装置或者其它设备上得以执行以产生计算机实时的处理而使得在计算机或其它可编程装置上执行的指令提供用于实施流程图和/或框图的一个或多个框中所指定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

Claims (26)

1.一种用于在n个存储设备的集合中存储数据的方法,该方法包括:
接收写数据;
将该写数据布置在包括m行和n列条目的阵列中,其中每个条目包括至少一个扇区;
将该阵列中的mr+s个位置分配给奇偶条目,而使得每一行具有至少r个奇偶条目,并且进一步使得该奇偶条目对应于部分最大距离可分PMDS码,这种码允许从m行中的每一行中多达r次擦除以及该数据阵列中任意位置的s次额外擦除进行恢复,其中s是大于零的整数,s小于m;以及
将该写数据和相关联的奇偶条目写入到该存储设备的集合。
2.根据权利要求1的方法,
其中通过求解具有mr+s个未知数的mr+s个等式的线性系统来计算奇偶条目,该线性系统基于该写数据以及对应于PMDS码的奇偶校验矩阵。
3.根据权利要求1的方法,其中该写数据和该奇偶条目处于具有b个元素的域或环中,该域或环由b次的多项式f(x)所生成,并且其中m和n的乘积小于f(x)的指数。
4.根据权利要求3的方法,其中f(x)是多项式Mp(x)=1+x+x2+…+xp-1并且p是素数。
5.根据权利要求1-4中任一项权利要求的方法,其中r=1。
6.根据权利要求2的方法,其中该奇偶校验矩阵是(m+s)×(mn)矩阵,而使得:
第j行包括(j-1)n个0,后跟有n个1并且后跟有0,其中j最大为m,
第(m+1)行包括一个1,后跟有α,后跟有α2,等等,直至该行的最后一个符号αmn-1,其中α是b次的多项式f(x)的根,该写数据和该奇偶条目处于具有b个元素的域或环中,并且
第(m+i)行,包括被取幂2i-1的第(m+1)行的条目,其中i是2和s之间的数。
7.根据权利要求2的方法,其中该奇偶校验矩阵是(m+s)×(mn)矩阵,而使得:
第j行包括(j-1)n个0,后跟有n个1并且后跟有0,其中j最大为m,
第(m+1)行包括一个1,后跟有α,后跟有α2,等等,直至该行的最后一个符号αmn-1,其中α是b次的多项式f(x)的根,该写数据和该奇偶条目处于具有b个元素的域或环中,以及
第(m+i)行包括被取幂i的第(m+1)行的条目,其中i是2和s之间的数。
8.根据权利要求1的方法,其中m-1行均恰好包含r个奇偶条目并且一行包含r+s个奇偶条目。
9.根据权利要求8的方法,其中恰好包含r个奇偶条目的m-1行中的每一行中的r个奇偶条目是使用[n,n-r]最大距离可分(MDS)码获得的,并且其余r+s个奇偶条目是通过基于该写数据、之前所获得的奇偶条目以及对应于PMDS码的奇偶校验矩阵来求解具有r+s个未知数的r+s个等式的系统而获得。
10.一种用于在存储阵列中存储数据的系统,该系统包括:
包括多个存储设备的存储阵列;以及
阵列控制器,其被配置为:
接收写数据;
将该写数据布置在包括m行和n列条目的阵列中,其中每个条目包括至少一个扇区;
将该阵列中的mr+s个位置分配给奇偶条目,而使得每一行具有至少r个奇偶条目,并且进一步使得该奇偶条目对应于部分最大距离可分PMDS码,这种码允许从m行中的每一行中多达r次擦除以及该数据阵列中任意位置的s次额外擦除进行恢复,其中s是大于零的整数,s小于m;以及
将该写数据和相关联的奇偶条目写入到该存储设备的集合。
11.根据权利要求10的系统,其中该数据和该奇偶条目处于具有b个元素的域或环中,该域或环由b次的多项式f(x)所生成,并且其中m和n的乘积小于f(x)的指数。
12.根据权利要求10的系统,其中r=1。
13.根据权利要求10的系统,其中通过求解具有mr+s个未知数的mr+s个等式的线性系统来计算奇偶条目,该线性系统基于该写数据以及对应于PMDS码的奇偶校验矩阵。
14.根据权利要求13的系统,其中该奇偶校验矩阵是(m+s)×(mn)矩阵,而使得:
第j行包括(j-1)n个0,后跟有n个1并且后跟有0,其中j最大为m,
第(m+1)行包括一个1,后跟有α,跟有α2,等等,直至该行的最后一个符号αmn-1,其中α是b次的多项式f(x)的根,该写数据和该奇偶条目处于具有b个元素的域或环中,以及
第(m+i)行包括被取幂2i-1的第(m+1)行的条目,其中i是2和s之间的数。
15.根据权利要求13的系统,其中该奇偶校验矩阵是(m+s)×(mn)矩阵,而使得:
第j行包括(j-1)n个0,后跟有n个1并且后跟有0,其中j最大为m,
第(m+1)行包括一个1,后跟有α,后跟有α2,等等,直至该行的最后一个符号αmn-1,其中α是b次的多项式f(x)的根,该数据和该奇偶条目处于具有b个元素的域或环中,
第(m+i)行包括被取幂i的第(m+1)行的条目,其中i是2和s之间的数。
16.根据权利要求10的系统,其中m-1行均恰好包含r个奇偶条目并且一行包含r+s个奇偶条目。
17.根据权利要求16的系统,其中恰好包含r个奇偶条目的m-1行中的每一行中的r个奇偶条目是使用[n,n-r]最大距离可分(MDS)码获得的,并且其余r+s个奇偶条目是通过基于该写数据、之前所获得的奇偶条目以及对应于PMDS码的奇偶校验矩阵来求解具有r+s个未知数的r+s个等式的系统而获得的。
18.一种用于在存储阵列中存储数据的装置,该装置包括:
用于接收写数据的模块;
用于将该写数据布置在包括m行和n列条目的阵列中的模块,其中每个条目包括至少一个扇区;
用于将该阵列中的mr+s个位置分配给奇偶条目,而使得每一行具有至少r个奇偶条目,并且进一步使得该奇偶条目对应于部分最大距离可分PMDS码的模块,这种码允许从m行中的每一行中多达r次擦除以及该数据阵列中任意位置的s次额外擦除进行恢复,其中s是大于零的整数,s小于m;并且
用于将该写数据和相关联的奇偶条目写入到该存储阵列的模块。
19.根据权利要求18的装置,其中该数据和奇偶条目处于具有b个元素的域或环中,该域或环由b次的多项式f(x)所生成,并且其中m和n的乘积小于f(x)的指数。
20.根据权利要求18的装置,其中r=1。
21.根据权利要求18的装置,其中m-1行均恰好包含r个奇偶条目并且一行包含r+s个奇偶条目。
22.根据权利要求21的装置,其中恰好包含r个奇偶条目的m-1行中的每一行中的r个奇偶条目是使用[n,n-r]最大距离可分(MDS)码获得的,并且其余r+s个奇偶条目是通过基于该写数据、之前所获得的奇偶条目以及对应于PMDS码的奇偶校验矩阵来求解具有r+s个未知数的r+s个等式的系统而获得。
23.一种用于对存储阵列中的擦除进行纠正的方法,该方法包括:
从n个存储设备中的多个接收读条带块,该读条带块包括以m行和n列进行布置的条目阵列,其中每一列对应于一个存储设备,该条目包括数据条目和mr+s个奇偶条目,每一行包括根据部分最大距离可分PMDS码而从数据条目所生成的至少r个奇偶条目,其中s小于m;
确定该读条带块包括至少一个被擦除条目,最多rm+s个被擦除的条目,并且没有任何行具有多于r+s个被擦除条目;以及
从未被擦除条目对被擦除条目进行重构,该重构产生了被恢复的读条带块。
24.根据权利要求23的方法,其中该重构包括:
基于该数据阵列中的未被擦除条目和奇偶校验矩阵计算校正子;以及
求解具有最多mr+s个未知数的最多mr+s个等式的线性系统,该线性系统基于该校正子和奇偶校验矩阵。
25.一种用于对存储阵列中的擦除进行纠正的装置,该装置包括:
用于从n个存储设备中的多个接收读条带块的模块,该读条带块包括以m行和n列进行布置的条目阵列,其中每一列对应于一个存储设备,该条目包括数据条目和mr+s个奇偶条目,每一行包括根据部分最大距离可分PMDS码而从数据条目所生成的至少r个奇偶条目,其中s小于m;
用于确定该读条带块包括至少一个被擦除条目,最多rm+s个被擦除的条目,并且没有任何行具有多于r+s个被擦除条目的模块;以及
用于从未被擦除条目对被擦除条目进行重构的模块,该重构产生了被恢复的读条带块;
其中,s小于m。
26.根据权利要求25的装置,其中该重构包括:
基于该数据阵列中的未被擦除条目和奇偶校验矩阵计算校正子;以及
求解具有最多mr+s个未知数的最多mr+s个等式的线性系统,该线性系统基于该校正子和奇偶校验矩阵。
CN201380007860.1A 2012-02-02 2013-01-11 用于存储数据和对擦除进行纠正的方法、系统和装置 Expired - Fee Related CN104160452B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/364,390 US8874995B2 (en) 2012-02-02 2012-02-02 Partial-maximum distance separable (PMDS) erasure correcting codes for storage arrays
US13/364,390 2012-02-02
PCT/IB2013/050262 WO2013114230A1 (en) 2012-02-02 2013-01-11 Erasure correcting codes for storage arrays

Publications (2)

Publication Number Publication Date
CN104160452A CN104160452A (zh) 2014-11-19
CN104160452B true CN104160452B (zh) 2017-05-03

Family

ID=48903989

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380007860.1A Expired - Fee Related CN104160452B (zh) 2012-02-02 2013-01-11 用于存储数据和对擦除进行纠正的方法、系统和装置

Country Status (6)

Country Link
US (2) US8874995B2 (zh)
EP (1) EP2810280A4 (zh)
JP (1) JP6153541B2 (zh)
CN (1) CN104160452B (zh)
CA (1) CA2861410A1 (zh)
WO (1) WO2013114230A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI461901B (zh) * 2012-12-10 2014-11-21 Ind Tech Res Inst 資料儲存與重建的方法與系統
US9459958B2 (en) 2013-12-02 2016-10-04 Annapurna Labs Ltd. Flexible redundant array of independent disks (RAID) computation device
USRE48835E1 (en) 2014-04-30 2021-11-30 Rubrik, Inc. Network addressable storage controller with storage drive profile comparison
US9081828B1 (en) 2014-04-30 2015-07-14 Igneous Systems, Inc. Network addressable storage controller with storage drive profile comparison
WO2015195104A1 (en) 2014-06-17 2015-12-23 Hewlett-Packard Development Company, L.P. Distributed storage data recovery
US9454333B2 (en) 2014-10-27 2016-09-27 International Business Machines Corporation Parity logs for RAID systems with variable capacity media
US9116833B1 (en) * 2014-12-18 2015-08-25 Igneous Systems, Inc. Efficiency for erasure encoding
JP2016126813A (ja) * 2015-01-08 2016-07-11 マイクロン テクノロジー, インク. 半導体装置
WO2016058289A1 (zh) * 2015-01-20 2016-04-21 北京大学深圳研究生院 一种能修复多个节点失效的mds纠删码
CN104616698A (zh) * 2015-01-28 2015-05-13 山东华翼微电子技术股份有限公司 一种充分利用存储器冗余单元的方法
US9361046B1 (en) 2015-05-11 2016-06-07 Igneous Systems, Inc. Wireless data storage chassis
US10437525B2 (en) * 2015-05-27 2019-10-08 California Institute Of Technology Communication efficient secret sharing
TWI569279B (zh) * 2015-10-15 2017-02-01 財團法人工業技術研究院 記憶體保護裝置與方法
US9804787B2 (en) * 2015-11-03 2017-10-31 Samsung Electronics Co., Ltd. Mitigating GC effect in a raid configuration
US10031803B2 (en) * 2015-12-14 2018-07-24 International Business Machines Corporation Distributed coding for multiple dimensional parities
US10031701B2 (en) * 2016-02-09 2018-07-24 International Business Machines Corporation Hierarchical processing for extended product codes
US10579495B2 (en) 2017-05-18 2020-03-03 California Institute Of Technology Systems and methods for transmitting data using encoder cooperation in the presence of state information
KR102369313B1 (ko) * 2017-08-18 2022-03-03 에스케이하이닉스 주식회사 에러 정정 회로, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치
US10417088B2 (en) 2017-11-09 2019-09-17 International Business Machines Corporation Data protection techniques for a non-volatile memory array
US11042661B2 (en) * 2018-06-08 2021-06-22 Weka.IO Ltd. Encryption for a distributed filesystem
US11190209B2 (en) * 2019-01-30 2021-11-30 International Business Machines Corporation Expansion for Blaum-Roth codes
US11038533B2 (en) 2019-04-25 2021-06-15 International Business Machines Corporation Expansion for generalized EVENODD codes
US20230037969A1 (en) * 2021-07-15 2023-02-09 The Regents Of The University Of California Systems and methods for distributed storage using storage codes with flexible number of nodes
US11822802B2 (en) * 2021-12-21 2023-11-21 Hewlett Packard Enterprise Development Lp Simplified raid implementation for byte-addressable memory
CN114415982B (zh) * 2022-03-30 2022-06-07 苏州浪潮智能科技有限公司 一种数据存储方法、装置、设备及可读存储介质

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4379259A (en) 1980-03-12 1983-04-05 National Semiconductor Corporation Process of performing burn-in and parallel functional testing of integrated circuit memories in an environmental chamber
US4719628A (en) * 1983-12-20 1988-01-12 Sony Corporation Method and apparatus for decoding error correction code
DE3838234A1 (de) * 1988-11-11 1990-05-17 Broadcast Television Syst Verfahren und schaltungsanordnung zur detektion und korrektur von fehlern in datenworten
US5367652A (en) * 1990-02-02 1994-11-22 Golden Jeffrey A Disc drive translation and defect management apparatus and method
US5164944A (en) 1990-06-08 1992-11-17 Unisys Corporation Method and apparatus for effecting multiple error correction in a computer memory
US5499253A (en) * 1994-01-05 1996-03-12 Digital Equipment Corporation System and method for calculating RAID 6 check codes
FR2717644B1 (fr) 1994-03-15 1996-04-26 Alcatel Mobile Comm France Procédé de codage - Entrelacement et procédé correspondant de désentrelacement - décodage.
US5862158A (en) 1995-11-08 1999-01-19 International Business Machines Corporation Efficient method for providing fault tolerance against double device failures in multiple device systems
US5923830A (en) 1997-05-07 1999-07-13 General Dynamics Information Systems, Inc. Non-interrupting power control for fault tolerant computer systems
US6138125A (en) * 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
US7134069B1 (en) 1999-06-16 2006-11-07 Madrone Solutions, Inc. Method and apparatus for error detection and correction
US6826711B2 (en) 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US6675318B1 (en) 2000-07-25 2004-01-06 Sun Microsystems, Inc. Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension
US6851082B1 (en) 2001-11-13 2005-02-01 Network Appliance, Inc. Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array
US7073115B2 (en) 2001-12-28 2006-07-04 Network Appliance, Inc. Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US6973613B2 (en) 2002-06-28 2005-12-06 Sun Microsystems, Inc. Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure
US7085953B1 (en) 2002-11-01 2006-08-01 International Business Machines Corporation Method and means for tolerating multiple dependent or arbitrary double disk failures in a disk array
US7093159B1 (en) 2002-12-12 2006-08-15 Adaptec, Inc. Method and system for four disk fault tolerance in a disk array
US7062604B1 (en) 2003-02-12 2006-06-13 Adaptec, Inc. Method and system for five-disk fault tolerance in a disk array
US7350126B2 (en) * 2003-06-23 2008-03-25 International Business Machines Corporation Method for constructing erasure correcting codes whose implementation requires only exclusive ORs
US7254754B2 (en) * 2003-07-14 2007-08-07 International Business Machines Corporation Raid 3+3
US7533325B2 (en) * 2003-07-14 2009-05-12 International Business Machines Corporation Anamorphic codes
US7240237B2 (en) 2004-05-25 2007-07-03 Lsi Corporation Method and system for high bandwidth fault tolerance in a storage subsystem
US7681104B1 (en) 2004-08-09 2010-03-16 Bakbone Software, Inc. Method for erasure coding data across a plurality of data stores in a network
US7519629B2 (en) 2004-09-30 2009-04-14 International Business Machines Corporation System and method for tolerating multiple storage device failures in a storage system with constrained parity in-degree
US7945729B2 (en) * 2004-11-24 2011-05-17 International Business Machines Corporation System and method for tolerating multiple storage device failures in a storage system using horizontal and vertical parity layouts
CN100371892C (zh) 2005-01-21 2008-02-27 华为技术有限公司 一种现场可编程门阵列的加载方法
US7536627B2 (en) 2005-12-27 2009-05-19 Sandisk Corporation Storing downloadable firmware on bulk media
US7747898B1 (en) 2006-09-19 2010-06-29 United Services Automobile Association (Usaa) High-availability data center
US8468416B2 (en) 2007-06-26 2013-06-18 International Business Machines Corporation Combined group ECC protection and subgroup parity protection
US8051358B2 (en) 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
CN100547555C (zh) 2007-12-10 2009-10-07 华中科技大学 一种基于指纹的数据备份系统
US8117519B2 (en) 2008-01-15 2012-02-14 Micron Technology, Inc. Memory apparatus and method using erasure error correction to reduce power consumption
US7925927B2 (en) 2008-06-23 2011-04-12 Hewlett-Packard Development Company, L.P. Simulator for determining data loss in a fault tolerant system
US8612666B2 (en) 2009-06-30 2013-12-17 Intel Corporation Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory
US20110041039A1 (en) 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US20110041005A1 (en) 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
JP5377175B2 (ja) 2009-09-08 2013-12-25 株式会社東芝 コントローラ、及びデータ記憶装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems;James S. Plank;《SOFTWARE PRACTICE & EXPERIENCE,WILEY & SONS,BOGNOR REGIS,GB》;19970901;第27卷(第9期);第995-1012页 *

Also Published As

Publication number Publication date
US20130205168A1 (en) 2013-08-08
US8869006B2 (en) 2014-10-21
JP2015508917A (ja) 2015-03-23
WO2013114230A1 (en) 2013-08-08
EP2810280A4 (en) 2015-06-24
US8874995B2 (en) 2014-10-28
CN104160452A (zh) 2014-11-19
US20130205181A1 (en) 2013-08-08
CA2861410A1 (en) 2013-08-08
JP6153541B2 (ja) 2017-06-28
EP2810280A1 (en) 2014-12-10

Similar Documents

Publication Publication Date Title
CN104160452B (zh) 用于存储数据和对擦除进行纠正的方法、系统和装置
CN103392172B (zh) 纠正存储阵列中的擦除
CN105122213B (zh) 用于数据存储系统中的错误检测和纠正的方法和装置
CN103577274B (zh) 管理存储器阵列的方法和装置
US8489916B2 (en) Multi-disk fault-tolerant system, method for generating a check block, and method for recovering a data block
CN100375045C (zh) 容许存储系统中的多个存储设备故障的系统和方法
EP1327936B1 (en) Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups
US8595606B1 (en) Extended row diagonal parity with optimal decoding procedure
US7925927B2 (en) Simulator for determining data loss in a fault tolerant system
US9405623B2 (en) Method of, and apparatus for, layout rectification of erasure encoded storage systems
US9058291B2 (en) Multiple erasure correcting codes for storage arrays
US8522125B1 (en) System and method for efficient horizontal maximum distance separable raid
US8484506B2 (en) Redundant array of independent disks level 5 (RAID 5) with a mirroring functionality
US7350126B2 (en) Method for constructing erasure correcting codes whose implementation requires only exclusive ORs
US7549112B2 (en) Unique response for puncture drive media error
US8489976B2 (en) Storage controlling device and storage controlling method
Li et al. Ps-code: A new code for improved degraded mode read and write performance of raid systems
US11831333B2 (en) Encoding for data recovery in storage systems
Jin et al. Extending and analysis of X-Code
Huang et al. S-code: Lowest density mds array codes for raid-6
WO2017186871A1 (en) Data protection coding technique
Huang et al. Ultimate Codes: Near-Optimal MDS Array Codes for RAID-6
Tau et al. Parity placement schemes to facilitate recovery from triple column disk failure in disk array systems
Gilroy Appendix II: RAID 6 tutorial

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170503

Termination date: 20210111