CN103392172B - 纠正存储阵列中的擦除 - Google Patents
纠正存储阵列中的擦除 Download PDFInfo
- Publication number
- CN103392172B CN103392172B CN201280010158.6A CN201280010158A CN103392172B CN 103392172 B CN103392172 B CN 103392172B CN 201280010158 A CN201280010158 A CN 201280010158A CN 103392172 B CN103392172 B CN 103392172B
- Authority
- CN
- China
- Prior art keywords
- page
- row
- parity checking
- erasing
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 59
- 230000004044 response Effects 0.000 claims description 3
- JEYCTXHKTXCGPB-UHFFFAOYSA-N Methaqualone Chemical compound CC1=CC=CC=C1N1C(=O)C2=CC=CC=C2N=C1C JEYCTXHKTXCGPB-UHFFFAOYSA-N 0.000 claims 2
- 230000008569 process Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 19
- 238000004590 computer program Methods 0.000 description 13
- 239000011159 matrix material Substances 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 238000011084 recovery Methods 0.000 description 7
- 206010011906 Death Diseases 0.000 description 4
- 230000009471 action Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000008034 disappearance Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 101000606504 Drosophila melanogaster Tyrosine-protein kinase-like otk Proteins 0.000 description 1
- 238000002679 ablation Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 208000024891 symptom Diseases 0.000 description 1
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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1045—Nested RAID, i.e. implementing a RAID scheme in another RAID scheme
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1057—Parity-multiple bits-RAID6, i.e. RAID 6 implementations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1059—Parity-single bit-RAID5, i.e. RAID 5 implementations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
在一种用于在存储阵列中存储数据的方法中,写入数据被排列成“r”行和“n”列的页,每个页包括多个扇区。在所述页上使用多个水平和垂直擦除纠正码对所述写入数据进行编码。所述编码允许在r行的任何一行中从最多tr次擦除中恢复,在剩余r-1行的任何一行中从最多tr-1次擦除中恢复,在剩余r-2行的任何一行中从最多tr-2次擦除中恢复,依此类推,使得所述编码允许在最后一个剩余行中从最多t1次擦除中恢复。从所述编码输出编码后的写入数据。作为写入条带而写入所述编码后的写入数据,所述写入条带跨存储阵列中的n个存储设备。
Description
背景技术
本发明一般地涉及存储系统,更具体地说,涉及用于存储阵列的嵌套多次擦除纠正码。
计算机系统利用数据冗余方案(例如奇偶校验计算)以防止存储设备上的数据丢失。在独立磁盘冗余阵列(RAID)系统中,数据值和相关的奇偶校验值跨磁盘驱动器被条带化。RAID系统通常用于保护存储在硬盘驱动器(HDD)阵列中的信息以免发生灾难性磁盘故障。两种常用的RAID方案是防止单一灾难性磁盘故障的RAID5,以及防止双重灾难性磁盘故障的RAID6。
闪存设备是一种类型的非易失性存储设备,其能够以大型块进行电擦除和重新编程。与HDD一样,闪存设备将介质分成通常为512字节的扇区。闪存设备还将扇区聚集成页,通常每个页八个扇区,以便每个页包含四千或4千(K)字节。每个扇区由错误纠正码(ECC)保护,该代码纠正多个错误(通常为一位错误,然而还可以纠正其它错误,例如字节错误)。一种常用的选择是博斯-查德胡里-霍昆格母(BCH)码,如八位纠正或十五位纠正BCH码,尽管可以存在许多变型。如在HDD中,闪存设备中的页可能发生硬错误(HE)。例如,当超出页扇区中的BCH码的错误纠正能力时,会发生这种情况。与HDD相比,当页接近其写入持续寿命结束时,或者当页接近其数据保存寿命结束时,在闪存设备中更可能超出BCH码的能力。因此,闪存设备中的HE数量可以预计随时间而增加,从而在设备上留下潜在的HE。
由闪存设备组成的阵列可能同时遇到灾难性设备故障和可能更普遍的HE。例如,当存在潜在的HE时,使用RAID5保护存储在闪存设备中的信息可能导致设备故障。因此,如果RAID5系统中的设备遇到灾难性设备故障,并且某个其它设备在页中具有HE,则发生这种事件的行将不能取回信息。RAID6需要将整个第二设备专用于奇偶校验,这在主要故障是HE时会很昂贵。
发明内容
一个实施例是一种用于存储数据的方法。所述方法包括接收写入数据。所述写入数据被排列成“r”行和“n”列的页,每个页包括多个扇区。在所述页上使用多个水平和垂直擦除纠正码对所述写入数据进行编码。所述编码导致包含t1个奇偶校验页并且t1≥1的第一行、包含t2个奇偶校验页并且t2≥t1的第二行、包含t3个奇偶校验页并且t3≥t2的第三行,依此类推,直到包含tr个奇偶校验页并且tr≥tr-1以及n>tr>t1的第r行。所述编码允许在r行的任何一行中从最多tr次擦除中恢复,在剩余r-1行的任何一行中从最多tr-1次擦除中恢复,在剩余r-2行的任何一行中从最多tr-2次擦除中恢复,依此类推,使得所述编码允许在最后一个剩余行中从最多t1次擦除中恢复。从所述编码输出编码后的写入数据。作为写入条带而写入所述编码后的写入数据,所述写入条带跨存储阵列中的n个存储设备。
另一个实施例是一种用于在存储阵列中存储数据的系统。所述系统包括存储阵列和阵列控制器。所述存储阵列包括多个存储设备。所述阵列控制器被配置为接收写入数据并将所述写入数据排列在r行和n列的页中。所述阵列控制器在所述页上使用多个水平和垂直擦除纠正码对所述写入数据进行编码。所述编码导致包含t1个奇偶校验页并且t1≥1的第一行、包含t2个奇偶校验页并且t2≥t1的第二行、包含t3个奇偶校验页并且t3≥t2的第三行,依此类推,直到包含tr个奇偶校验页并且tr≥tr-1以及n>tr>t1的第r行。所述编码允许在r行的任何一行中从最多tr次擦除中恢复,在剩余r-1行的任何一行中从最多tr-1次擦除中恢复,在剩余r-2行的任何一行中从最多tr-2次擦除中恢复,依此类推,使得所述编码允许在最后一个剩余行中从最多t1次擦除中恢复。来自所述编码的输出包括编码后的写入数据。所述阵列控制器将所述编码后的写入数据写入为写入条带,所述写入条带跨存储阵列中的n个存储设备。
另一个实施例是一种用于在存储阵列中存储数据的计算机程序产品。所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有包含在其中的计算机可读程序代码。所述计算机可读程序代码包括被配置为接收写入数据并将所述写入数据排列在r行和n列的页中的计算机可读程序代码。所述程序代码被还配置为在所述页上使用多个水平和垂直擦除纠正码对所述写入数据进行编码。第一行包含t1个奇偶校验页并且t1≥1,第二行包含t2个奇偶校验页并且t2≥t1,第三行包含t3个奇偶校验页并且t3≥t2,依此类推,直到包含tr个奇偶校验页并且tr≥tr-1以及n>tr>t1的第r行,其中所述编码允许在r行的任何一行中从最多tr次擦除中恢复,在剩余r-1行的任何一行中从最多tr-1次擦除中恢复,在剩余r-2行的任何一行中从最多tr-2次擦除中恢复,依此类推,使得所述编码允许在最后一个剩余行中从最多t1次擦除中恢复。所述程序代码还被配置为将所述写入数据写入为写入条带,所述写入条带跨存储阵列中的n个存储设备。
另一个实施例是一种用于纠正存储阵列中的擦除的方法。所述方法包括从多个(n个)存储设备接收读取条带。所述读取条带包括排列在r行和n列中的页块,每个列对应于所述存储设备之一。所述页包括数据页和奇偶校验页。使用多个水平和垂直擦除纠正码生成所述奇偶校验页,使得第一行包含t1个奇偶校验页并且t1≥1,第二行包含t2个奇偶校验页并且t2≥t1,第三行包含t3个奇偶校验页并且t3≥t2,依此类推,直到包含tr个奇偶校验页并且tr≥tr-1以及n>tr>t1的第r行。所述方法还包括确定所述读取条带包括至少一个已擦除页,并且所述行中的一行包含最多tr次擦除,r-1个剩余行中的一行包含最多tr-1次擦除,r-2个剩余行中的一行包含最多tr-2次擦除,依此类推,直到确定最后一个剩余行包含t1次擦除。响应于所述页块以及所述水平和垂直擦除码而重构所述已擦除页。所述重构导致恢复后的读取条带。
另一个实施例是一种用于纠正存储阵列中的擦除的计算机程序产品。所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有包含在其中的计算机可读程序代码。所述计算机可读程序代码包括被配置为从多个(n个)存储设备接收读取条带的计算机可读程序代码。所述读取条带包括排列在r行和n列中的页块,每个列对应于所述存储设备之一。所述页包括数据页和奇偶校验页。使用多个水平和垂直擦除纠正码生成所述奇偶校验页,使得第一行包含t1个奇偶校验页并且t1≥1,第二行包含t2个奇偶校验页并且t2≥t1,第三行包含t3个奇偶校验页并且t3≥t2,依此类推,直到包含tr个奇偶校验页并且tr≥tr-1以及n>tr>t1的第r行。所述方法还包括确定所述读取条带包括至少一个已擦除页,并且所述行中的一行包含最多tr次擦除,r-1个剩余行中的一行包含最多tr-1次擦除,r-2个剩余行中的一行包含最多tr-2次擦除,依此类推,直到确定最后一个剩余行包含t1次擦除。响应于所述页块以及所述水平和垂直擦除代码而重构所述已擦除页。所述重构导致恢复后的读取条带。
通过本发明的技术实现其它特性和优点。在此详细描述本发明的其它实施例和方面,并且这些实施例和方面被视为要求保护的本发明的一部分。为了更好地理解本发明以及优点和特性,请参考描述和附图。
附图说明
现在仅通过实例的方式参考附图描述本发明的实施例,这些附图是:
图1示出根据一个实施例的用于提供多次擦除纠正码的系统的框图;
图2示出根据一个实施例的存储系统;
图3示出根据一个实施例的编码块的内容;
图4是根据一个实施例的用于执行擦除纠正的过程流;
图5是根据一个实施例的用于对写入条带进行编码的过程流;以及
图6是根据一个实施例的用于对读取条带进行解码的过程流。
具体实施方式
一个实施例利用多次擦除纠正码以防止在存储系统中出现作为设备故障和块故障的组合发生的数据丢失。一个实施例使用嵌套擦除码,其可以容许多次擦除并具有容许一次擦除的整体外部奇偶校验。嵌套属性通过每个冗余符号表征,所述冗余符号通过数据和所有先前计算的冗余符号来计算。在单个设备发生故障的情况下,在此描述的一个实施例提供保护,所述保护堪比RAID6,但存储效率接近RAID5。
如在此使用的,术语“擦除纠正”指纠正其位置已知的错误。擦除纠正不同于“错误纠正”,如在此使用的,“错误纠正”指纠正其位置未知的错误。纠正擦除需要的冗余量大约为纠正错误所需的一半。如在此使用的,术语“硬错误”或“HE”指擦除(即,具有已知位置的错误)。
尽管在纠正之后,错误纠正码(ECC),例如博斯-查德胡里-霍昆格母(BCH)码,有助于将闪存设备中的原始位错误率减少到较低级别,但最终级别可能仍高于存储系统的目标原始位错误率。例如,对512字节(B)扇区进行解码之后,十五位纠正BCH码可以将为.001的原始位错误率减少到为2.7e-9的原始位错误率。但是,该原始位错误率(表示闪存设备中的HE概率)远高于典型硬盘驱动器(HDD)的原始位错误率,后者的范围可以从8e-14到8e-16。在闪存设备中,接近写入持续寿命结束以及接近数据保存寿命结束时可能出现较高的错误率。
当超出ECC的错误纠正能力时,检测到该事件的概率非常高。例如,如果实施十五位纠正BCH码并且发生的错误超过十五个,则BCH码本身很可能检测到这种事件。在任何情况下,通常添加循环冗余代码(CRC)以便确保误纠正的概率的数量级约为1e-26。无法检测误纠正的BCH码在症状上相当于HDD删除的写入或偏离磁道写入。
一个实施例可以使用所属技术领域中公知的任何多次擦除纠正码。一个实施例使用的多次擦除码的一个实例是里德-所罗门(RS)码。RS码是所属技术领域中公知的,并且可以用于纠正多次擦除。RS码基于符号,所述符号的大小取决于应用。有关与RAID架构相关的RS码的教程,请参见J.S.Plank的“ATutorialonReed-SolomonCodingforFault-ToleranceinRAID-likeSystems”(有关在RAID式系统中容错的里德-所罗门编码的教程,Software,Practice&Experience,第995-1012页,1997年9月)。
用于纠正多次擦除的另一个有效代码系列由伯劳姆-罗斯93(BR93)码给出,如在M.Blaum等人的“NewArrayCodesforMultiplePhasedBurstCorrection”(用于多阶段突发纠正的新阵列代码,IEEETransactionsonInformationTheory,第39卷,第66-77页,1993年)中描述的。BR93码是阵列代码,通常没有RS码复杂,因为它们避免了伽罗瓦域运算而仅执行异或(XOR)运算。
RS和BR93码都是最大距离可分(MDS)码,意味着它们最佳地利用冗余以便纠正擦除。RS和BR93码是两种类型的多次擦除纠正码的实例,可以由在此描述的实施例使用。各实施例并不限于这两种代码,因为还可以实施其它代码系列,例如广义EVENODD码或广义行对角线码(RDC)。
图1示出根据一个实施例的使用多次擦除纠正码保护的系统100的框图。如图1所示,主机计算机102与存储系统110中的阵列控制器104通信。存储系统110将数据存储在存储阵列108中,存储阵列108包括N个存储设备106(其中N大于1):存储设备0106a、存储设备1106b、存储设备2106c到存储设备N-1106d。在一个实施例中,奇偶校验位与主机数据(例如,表示为数据位)一起存储在存储设备106中。在一个实施例中,存储阵列108中的存储设备106由闪存设备实现。在一个实施例中,所述阵列包括五个闪存设备,每个设备具有32千兆字节(G)存储容量。
如图1所示,阵列控制器104是存储系统110的一部分;在另一个实施例中,阵列控制器104是主机计算机102的一部分。
图2示出根据一个实施例的图1的存储系统110。存储系统110可以包括多个其它元件,例如接收器、发送器和时钟,如所属技术领域的普通技术人员公知的,为清晰起见,未示出这些元件。如图2所示,阵列控制器104包括编码器202和解码器204。在写入过程中使用编码器202,以便接收一个或多个写入数据页(例如,来自主机计算机102),并生成包括数据页和奇偶校验页的写入条带。在一个实施例中,写入条带被写入在存储阵列108中并跨越存储阵列108中的多个行。在读取过程中使用解码器204,以便从存储阵列108读取一个或多个数据页。当在页中检测到一个或多个HE时,解码器从存储阵列108读取其中检测到HE(多个)的整个条带。解码器204和编码器202都可访问共享数据(例如,用于标识编码类型的数据,编码器202将所述编码应用于写入页以生成写入条带)。读取条带包含奇偶校验位,解码器204删除所述奇偶校验位以生成读取数据页。解码器204包括重构器206,当至少一个页发生读取故障时,使用重构器206。例如,当超出页的内部ECC的错误纠正能力时,发生读取故障。通常,错误页的位置已知,因此将错误位置(例如,已擦除页位置(多个))和读取条带发送到重构器206,重构器206尝试取回已擦除页。
图3示出跨多个存储设备106存储的阵列的一部分的内容(在此也称为“条带”),其可以由编码器202使用多次擦除纠正码进行编码。如在此使用的,术语“页”指一组存储单元。在一个实施例中,页为4K字节,但其它实施例还可以实现其它页大小。如在此使用的,术语“编码条带”指一组页,它们共同组成写入条带并作为一个单位使用多次擦除纠正码进行编码。如在此使用的,术语“解码条带”指一组页,它们共同组成读取条带并作为一个单位使用多次擦除纠正码进行解码。
图3所示的条带包括排列在三行和五列中的页块。在一个实施例中,每个列表示存储设备的一部分。在图3所示的条带中,每个位置表示闪存设备中的一个页。如图3所示,四个页是包含奇偶校验位的奇偶校验页(标记为p04、p14、p24和p23的页),剩余页是包含数据位的数据页(标记为a00、a10、a20、a01、a11、a21、a02、a12、a22、a03和a13的页)。假设使用ECC(例如,BCH)或CRC检测发生页读取故障,并标识任何擦除位置。在此描述的实施例假设已报告读取故障,不管用于标识这种读取故障的方法为何。
下面描述的图3的条带中的数据页和奇偶校验页的排列允许在任何两行中恢复最多一个HE,并在剩余一行中恢复最多两个HE。还可以使用四次擦除纠正码,从而允许在条带中恢复任何四个HE,但复杂性较高,因为出于实例的考虑在此仅给出一个三行条带。应用中的典型条带包括十六或甚至三十二行。
奇偶校验页的放置可能因纠正条带的不同而有所变化。尽管可以将奇偶校验页放置在条带中的任何位置,但通常优选将它们放置在不同条带的不同设备中,以便避免瓶颈效应。图3所示的条带仅是实例条带的例示,因为条带中的行和列的数量可以是任意的。此外,奇偶校验页的放置是任意的,并且可以将它们放置在不同于图3所示的位置中。进一步,奇偶校验页的数量可以有所变化,具体取决于所需的恢复。图3的条带可以纵向无限重复,具体取决于存储设备的大小。例如,如果存储设备是32G闪存设备并且行数等于十六,则编码条带重复500,000次。
在一个实施例中,解码器204从采用图3所示方式编码的存储阵列108接收遇到页HE的读取条带。作为一个实例,假设对应于页a01、a11和a21的第二存储设备发生灾难性故障,并且在页a13中发生额外HE。可以使用图3所示的条带配置以及下面描述的解码方案恢复这四次页擦除。在一个实施例中,由位于解码器204中的重构器206执行恢复。
图4示出根据一个实施例的由解码器204实现的过程流。在方框402,ECC和/或CRC检测到页读取失败。在方框404,发送请求以读取包含其中读取页失败的页的条带中的所有页。在方框406,将读取条带以及其中读取失败的页(多个)的位置(多个)(即,已擦除页位置(多个))发送到重构器206。在方框408,判定读取条带中的已擦除页位置的数量是否大于方案的擦除纠正能力。例如,如果行包含三次擦除,则超出方案的擦除纠正能力。在图3的实例中,当两行各自包含两次擦除时,也会发生这种情况。如果在方框408判定读取条带中的已擦除页位置的数量大于方案的能力,则执行方框414以将错误条件返回到解码器204。如果在方框408判定已擦除页位置的数量在方案的能力之内,则执行方框410。在方框410,使用包括如下所述的擦除纠正码的方案重构读取条带。在方框412,重构器206将恢复后的读取条带(包括恢复后的读取页)输出到解码器204。
图5是根据一个实施例的用于对写入条带进行编码的过程流。在一个实施例中,由编码器202执行图5所示的过程流。所述过程流将参考作为图3方案的(1,1,2)擦除纠正方案(阵列具有三行,可以针对一次擦除纠正两行,以及可以针对两次擦除纠正一行)进行描述,但可以扩展以涵盖其它擦除纠正方案。在方框502,假设具有“n”列(例如,闪存设备)、“r”行,以及“L”行(具有针对最多两次擦除而被纠正的能力)。此外,假设前“n-2”个列以及第(n-1)列的前“r-L”个页包含数据。阵列中的其余页为空,并且将包含奇偶校验页。
在图3的实例中,具有五列(n=5)、三行(r=3),并且L=1。数据页表示为“a”,奇偶校验页表示为“p”,未使用的页表示为“b”,临时页表示为“q”或“c”。每个页类型旁边的下标表示页在阵列中的位置(例如,“a00”是在矩阵中的行0、列0处的数据页)。符号“+”表示XOR(异或)运算。该实施例中的编码允许在任何两行中从一个故障中恢复,在剩余一行中从两个故障中恢复。下面的描述示出一种根据一个实施例的用于从数据页获得奇偶校验页的方法。下面的阵列示出十一个数据页的位置。
a00a01a02a03b04
a10a11a12a13b14
a20a21a22b23b24
在方框504,使用单一奇偶校验(singleparity)对前“r-L”个行进行编码。将结果写入最后一列的前“r-L”个页。
在该实施例中,使用单一奇偶校验获得前两行的奇偶校验。在一个实施例中,通过以下操作获得奇偶校验:对第一行中的数据页进行XOR运算以获得p04,对第二行中的数据页进行XOR运算以获得p14。
a00a01a02a03p04
a10a11a12a13p14
a20a21a22b23b24
在方框506,使用具有全局奇偶校验的两次擦除纠正码对R个行进行编码,以获得两个辅助列q。下面描述如何构造具有全局奇偶校验的擦除纠正码的一个实施例。
在前两(通常为r-L)行中,计算上述两次擦除纠正码的第一奇偶校验符号便足够。这种两次擦除纠正码的第一奇偶校验符号由第一行中的q03、第二行中的q13和第三行中的q23表示。
a00a01a02q03b04
a10a11a12q13b14
a20a21a22q23q24
在方框508,将第n-1列的“r-L”个数据页与第一辅助列q的前“r-L”个页进行XOR运算。在此处描述的情况下,r-L=2,XOR为a03+q03和a13+q13。
使用辅助列计算a03+q03和a13+q13,其中a03和a13是先前阵列中示出的数据页。
a00a01a02q03b04a03+q03
a10a11a12q13b14a13+q13
a20a21a22q23q24
在方框510,使用L次擦除纠正码对这“r-L”个页进行编码。
因此,在该实施例中,使用一次擦除纠正垂直码(即,单一奇偶校验)将c23计算为辅助列的前两个元素的XOR(异或)。
a00a01a02q03b04a03+q03
a10a11a12q13b14a13+q13
a20a21a22q23q24c23
在方框512,将来自方框510的L个奇偶校验页与在方框506获得的两个列的最后L个页进行XOR运算。将XOR的结果写入方框502的原始阵列的最后两列的最后“L”个页。
因此,在该实施例中,获得底端行的奇偶校验,如下所示。
a00a01a02q03p04
a10a11a12q13p14
a20a21a22q23+c23=p23q24+c23=p24
这将完成编码,并且生成的阵列如下所示。
a00a01a02a03p04
a10a11a12a13p14
a20a21a22p23p24
生成的代码类似于RAID5,因为每行具有单一奇偶校验,并且如果擦除每行中的最多一个表项,则可以利用RAID5。上面的实施例示出一种通过三行和五列进行编码的方法。前两行仅包含一个奇偶校验页,而第三行包含两个奇偶校验页,因此指定1(第一行一个奇偶校验)、1(第二行一个奇偶校验)、2(第三行两个奇偶校验)。
概括地说,上面的阵列包括“r”行(r=3)和“n”列(n=5)的页。每行具有“t”个奇偶校验页,其中t>=1。第一行包含一个奇偶校验页(t1=1),第二行包含一个奇偶校验页(t2=1),第三行包含两个奇偶校验页(t3=2)。该编码允许从三行的任何一行中恢复最多2(t3)次擦除,从剩余两行的每行中恢复最多1(t1、t2)次擦除。
通常,各实施例支持具有(1,1,...,1,2,2,...2)方案,其中行的数量是任意的,并且2的数量也是任意的。一般情况(具有L个2)的编码类似于(1,1,2)情况的编码,只是当计算最后一行中的最后一列时,使用垂直L次擦除纠正码获得奇偶校验。这种代码是独立的,并且可能不同于水平代码;其选择依赖于所选择的特定应用。下面的一个实施例示出(1,1,2,2)码的实施例。
此外,如下面的实施例所示,上述构造可以扩展到其它参数,例如(1,2,3),其支持一行包含一次擦除、一行包含两次擦除,第三行包含三次擦除。
图6是根据一个实施例的用于对写入条带进行解码的过程流。在一个实施例中,由解码器204执行图6所示的过程。图6中的过程流将参考(1,1,2)擦除纠正码进行描述,但可以扩展以涵盖其它擦除纠正码。在方框602,假设最多具有“L”个包含两次擦除的行,并且剩余行包含最多一次擦除。
如下面的阵列实施例所示,第一和第三行发生一次擦除(即,页上的数据丢失),而第二行发生两次擦除。第i行和第j列中的擦除由eij表示。
a00e01a02a03p04
e10a11a12e13p14
a20a21a22p23e24
在方框604,使用单一奇偶校验纠正最多包含一次擦除的行,如同在RAID5中那样,即,通过对相应行中的剩余页进行XOR运算恢复擦除页。
因此,参考实例阵列,通过对第一行中的剩余页进行XOR运算恢复第一行中的丢失数据;以及通过对第三行中的剩余页进行XOR运算恢复第三行中的丢失数据。这是可行的,因为p04在属性上是a00、a01、a02和a03的异或;以及因为p24在属性上是a20、a21、a22和a23的异或。这将导致下面的阵列。
a00a01a02a03p04
e10a11a12e13p14
a20a21a22p23p24
在方框606,使用两次擦除纠正码计算现在无擦除的至少“r-L”个行的q个奇偶校验。
因此,参考该实施例,获得第一和第三行中的两次擦除纠正码的第一奇偶校验页(q03和q23)。
a00a01a02q03p04
e10a11a12e13p14
a20a21a22q23p24
在方框608,将至少“r-L”个无擦除行的第“n-1”列的页与在方框606获得的第一列Q进行XOR运算。
因此,参考该实施例,获得a03+q03和p23+q23。如前所述,p23+q23=c23。
a00a01a02a03p04a03+q03
e10a11a12e13p14
a20a21a22p23p24p23+q23=c23
在方框610,使用垂直L次擦除纠正码取回在方框608的列中缺失的最多L个页。
在该实施例中,使用垂直一次擦除纠正码获得第二垂直符号,如下所示。
a00a01a02a03p04a03+q03
e10a11a12e13p14a13+q13
a20a21a22p23p24r23
在方框612,将来自方框610的页与具有两次擦除的行的最后两列的页进行XOR运算,以获得对应于两次擦除纠正码的q个表项。
因此,在该实施例中,q14获得为q14=(a13+q13)+p14。
a00a01a02a03p04
e10a11a12e13p14a13+q13q14
a20a21a22p23p24
在方框614,使用两次擦除纠正码纠正包含两次擦除的最多L个行。
在该实施例中,使用两次擦除纠正码,利用下面所示的右边的行,恢复第二行中的已擦除页。
a00a01a02a03p04
e10a11a12e13p14e10a11a12e13q14
a20a21a22p23p24
应用两次擦除纠正码的结果如下所示。
a00a01a02a03p04
e10a11a12e13p14a10a11a12q13q14
a20a21a22p23p24
在方框616,将获得的第一列q与在方框614生成的页进行XOR运算,第一列q是使用在方框610获得的页对包含两次擦除的至少L个行进行解码时获得的。
参考该实施例,通过对a13+q13与q13进行XOR运算获得a13。
a00a01a02a03p04
a10a11a12q13p14a13=(a13+q13)+q13
a20a21a22p23p24
完成解码,如下面的阵列所示。
a00a01a02a03p04
a10a11a12a13p14
a20a21a22p23p24
(1,1,2,2)编码过程的实施例
在该实施例中,具有五列(n=5)和四行(r=4)。数据页表示为“a”,奇偶校验页表示为“p”,未使用的页表示为“b”,临时页表示为“q”或“c”。每个页类型旁边的下标表示页在阵列中的位置(例如,“a00”是在矩阵中的行0、列0处的数据页)。下面的阵列示出十四个数据页的位置。
使用单一奇偶校验获得前两行的奇偶校验。在一个实施例中,通过以下操作获得奇偶校验:对第一行中的数据页进行XOR运算以获得p04,对第二行中的数据页进行XOR运算以获得p14。
接下来,考虑阵列的前三(通常为n-2)列。使用具有整体奇偶校验的两次擦除纠正码对最后两行进行编码,使得对行的页进行XOR运算将提供零页(例如,下面描述的DiRE码)。在前两行中,足以计算上述两次擦除纠正码的第一奇偶校验符号。
使用辅助列计算a03+q03和a13+q13,其中a03和a13是先前阵列中示出的数据页。
接下来,使用两次擦除纠正垂直码,从辅助列的前两个表项计算c23和c33。
获得底端两行的奇偶校验,如下所示。
这将完成编码,并且生成的阵列如下所示。
概括地说,上面的阵列包括r行(r=4)和n列(n=5)的页。每行具有t个奇偶校验页,其中t>=1。第一行包含t1个奇偶校验页(t1=1),第二行包含t2个奇偶校验页(t2=1),第三行包含t3个奇偶校验页(t3=2),第四行包含t4个奇偶校验页(t4=2)。该编码允许从四行的任何两行中恢复最多2次擦除,从剩余两行中恢复最多1次擦除。
(1,1,2,2)解码过程的实施例
在该实施例中,具有五列(n=5)和四行(r=4)。数据页表示为“a”,奇偶校验页表示为“p”,已擦除页表示为“e”,未使用的页表示为“b”,临时页表示为“q”或“c”。如下面的阵列所示,第一和第三行发生一次擦除(即,页上的数据丢失),而第二和第四行发生两次擦除。
首先,通过对第一行中的剩余页进行XOR运算恢复第一行中的丢失页;以及通过对第三行中的剩余页进行XOR运算恢复第三行中的丢失页。这将导致下面的阵列。
接下来,获得第一和第三行中的两次擦除纠正码的第一奇偶校验页(q03和q23)。
然后,获得a03+q03和p23+q23。如前所述,p23+q23=c23。
使用垂直两次擦除纠正码获得第二和第四垂直符号,如下所示。
接下来,q14获得为q14=(a13+q13)+p14,q34获得为q34=c33+p34。
使用两次擦除纠正码,利用下面所示的右边的行,恢复每行中的两个已擦除页,其中q33获得为q33=p33+c33。
应用两次擦除纠正码的结果如下所示。
接下来,通过将q13与a13+q13进行XOR运算获得a13。
完成解码,如下面的阵列所示。
(1,2,3)编码过程的实施例
在该实施例中,具有五列(n=5)和三行(r=3)。数据页表示为“a”,奇偶校验页表示为“p”,未使用的页表示为“b”,临时页表示为“q”或“c”。每个页类型旁边的下标表示页在阵列中的位置(例如,“a00”是在矩阵中的行0、列0处的数据页)。下面的阵列示出九个数据页的位置。
a00a01a02a03bb4
a10a11a12b13b14
a20a21b22b23b24
首先,使用水平三次擦除纠正码对每行的前两个表项进行编码,然后将a02与p02进行XOR运算,将a12与p12进行XOR运算。最后,q22是针对a02+p02和a12+p12纠正一次擦除的垂直代码的奇偶校验。这将导致下面的第二阵列。
a00a01p02p03p04
a10a11p12p13p14
a20a21p22p23p24
b00b01a02+p02b03b04
b10b11a12+p12b13b14
b20b21q22b23b24
接下来,使用包含上面的水平三次擦除纠正码的水平两次擦除纠正码,获得下面第二阵列中的每行所示的q。现在每行可以纠正最多两次擦除,并且第二阵列中的每列可以纠正一次擦除。
a00a01p02p03p04
a10a11p12p13p14
a20a21p22p23p24
b00b01a02+p02q03q04
b10b11a12+p12q13q14
b20b21b22q23q24
对上面这两个阵列进行XOR运算以获得下面生成的阵列,其中行位于可以纠正两次擦除的代码中。下面阵列中的每行可以纠正最多两次擦除,因为其具有线性,我们表示为cij=pij+qij。
a00a01a02c03c04
a10a11a12c13c14
a20a21c22c23c24
接下来,对a03与r03进行XOR运算,如下面的第二阵列所示。
a00a01a02c03c04
a10a11a12c13c14
a20a21c22c23c24
b00b01b02a03+c03b04
b10b11b12b13b14
b20b21b22b23b24
使用两次擦除纠正垂直代码对a03+c03进行垂直编码,并且标记s13和s23表示对应于这种垂直码的奇偶校验页。
a00a01a02r03r04
a10a11a12r13r14
a20a21r22r23r24
b00b01b02a03+r03b04
b10b11b12s13b14
b20b21b22s23b24
然后使用包含第一阵列中的两次擦除纠正码的一次擦除纠正码,对第二阵列中的每行进行编码。因此,第二阵列中的每列可以纠正两次擦除,并且每行可以纠正一次擦除。
a00a01a02c03c04
a10a11a12c13c14
a20a21c22c23c24
b00b01b02a03+c03s04
b10b11b12s13s14
b20b21b22s23s24
然后对阵列进行XOR运算。将结果的行编码为一次擦除纠正码,如下面的阵列所示,其中tij=cij+sij。在该阵列中,每行可以纠正一次擦除代码,因为具有线性。这将完成编码。
a00a01a02a03t04
a10a11a12t13t14
a20a21c22t23t24
(1,2,3)解码过程的实施例
在该实施例中,第一行中具有三次擦除,第二行中具有一次擦除,第三行中具有两次擦除。
e00e01a02e03t04
a10a11a12t13e14
a20e21c22e23t24
首先,使用单一奇偶校验纠正仅包含一次擦除的行(即,第二行)。
e00e01a02e03t04
a10a11a12t13t14
a20e21c22e23t24
接下来,使用两次擦除纠正码对第二行中的前三个表项进行编码。
e00e01a02e03t04
a10a11a12t13t14
a20e21c22e23t24
b00b01b02b03b04
a10a11a12c13c14
b20b21b22b23b24
对阵列中的两个中间行进行XOR运算。因此,tij+cij=sij,其中sij是上面在编码中示出的垂直两次擦除纠正码的一部分。使用这种两次擦除纠正码取回最后两列,如下面的第二阵列所示:
e00e01a02e03t04
a10a11a12t13t14
a20e21c22e23t24
b00b01b02a03+c03s04
000s13s14
b20b21b22s23s24
然后对阵列进行XOR运算,从而导致下面的阵列。
e00e01a02e03c04
a10a11a12c13c14
a20e21c22e23c24
现在,所有行都可以纠正两次擦除。因此,可以纠正最后一行,从而导致下面所示的阵列。
e00e01a02e03c04
a10a11a12c13c14
a20a21c22c23c24
使用三个奇偶检验对阵列的最后两行中的前两个表项进行编码,如下面的底端阵列所示。
e00e01a02e03c04
a10a11a12c13c14
a20a21c22c23c24
b00b01b02b03b04
a10a11p12p13p14
a20a21p22p23p24
对两个阵列的最后两行进行XOR运算,从而导致下面的底端阵列,并且qij=cij+pij:
e00e01a02e03c04
a10a11a12c13c14
a20a21c22c23c24
b00b01b02b03b04
00a12+p12q13q14
00q22q23q24
每列可以纠正一次擦除,并且使用垂直码取回第二阵列中的顶端三个表项,从而导致下面的阵列:
e00e01a02e03c04
a10a11a12c13c14
a20a21c22c23c24
b00b01a02+p02q03q04
00a12+p12q13q14
00q22q23q24
对阵列进行XOR运算,从而导致下面的阵列,该阵列的每行现在位于三次擦除纠正码中。
e00e01p02e03p04
a10a11p12p13p14
a20a21p22p23p24
然后纠正第一行中的三次擦除,从而导致下面的阵列。
a00a01p02p03p04
a10a11p12p13p14
a20a21p22p23p24
接下来,恢复所有符号。第一步骤是将阵列与上面的阵列进行XOR运算。下面示出两个阵列。
a00a01p02p03p04
a10a11p12p13p14
a20a21p22p23p24
00a02+p02q03q04
00a12+p12q13q14
00q22q23q24
这将导致下面的第一阵列,然后将该阵列与来自上面阵列的底端阵列进行XOR运算。
a00a01a02c03c04
a10a11a12c13c14
a20a21c22c23c24
000a0.+c03s04
000s13s14
000s23s24
这将完成解码,如下面的阵列所示。
a00a01a02a03t04
a10a11a12t13t14
a20a21c22t23t24
用于获得类似于上述方案的结果的另一种方法是使用具有相同冗余量的RS代码。例如,在上述(1,1,2)方案的实施例中,总的冗余量是4个页。可以实施具有4个冗余页的里德-所罗门(RS)码,其可以纠正阵列中的任何4个已擦除页。从这个角度来讲,RS码比在此描述的代码的实施例更强大。但是,RS码的复杂性远大于在此描述的方案的实施例,尤其是当方案中具有相对大量的行时,如典型实施例中具有16或32行。在正常操作中,在此描述的方案的运行非常类似于RAID5,在每行中从一次擦除中恢复。仅当出现一行中具有两次擦除的少见事件时,才调用在此描述的代码的全部能力。另一方面,RS需要针对每个故障使用整个长度的代码。由于此原因,其实施的可行性更小,并且编码和解码过程更复杂。
技术效果和益处包括能够提供与独立磁盘冗余阵列RAID6相同的保护,但存储效率接近RAID5。因此,可以使用一个实施例针对给定冗余量最大程度防止条带故障。
对纠正2次擦除并具有整体奇偶校验的对角线行编码(DiRE)码进行
编码的实施例。
在此描述的方案(例如(1,1,2)方案)包括一种嵌套代码系统,并且最大代码是奇偶校验代码。因此,在此描述的代码具有整体奇偶校验,更具体地说,具有嵌套属性。具体地说,任何代码字的所有元素的异或为0。公知的阵列代码(例如EVENODD或RDP)没有整体奇偶校验符号。RDP是嵌套的,但较大的代码(基于对角线奇偶校验)不是MDS,因此不能用于在此描述的代码。
下面描述的实施例代码包括z-1行和最多z+1列的阵列,其中z是素数。在下面的实施例(其中z=5)中,阵列包含4行和6列,并且位置指定如下。在一个实施例中,L00、L01、L02、L03、L04、L05是来自位于6个不同存储设备上的6个不同页的段。如所述实施例所示,L00、L10、L20、L30是来自同一页的段。因此,下面的阵列表示来自6个存储设备中的每一个的一个页,并且每个页分成四个段。最后一行(L4x)是虚构行并仅用于计算目的。
假设阵列具有下面的内容,其中值“b”指示位置当前没有值。
首先计算每个对角线的奇偶校验,从而导致下面阵列中的值。L04等于“1”,这是由L40、L31、L22和L13形成的对角线的奇偶校验。L14等于“0”,这是由L41、L32、L23和L00形成的对角线的奇偶校验。L24等于“1”,这是由L42、L33、L10和L01形成的对角线的奇偶校验。L34等于“0”,这是由L43、L20、L11和L02形成的对角线的奇偶校验。L44等于“1”,这是由L30、L21、L12和L03形成的对角线的奇偶校验。
接下来将奇偶校验列(列4)中的每个元素与列4的最后一个位置中的存储位(即,L44=1)进行XOR运算。通过将列4中的每个元素与“1”进行XOR运算,获得下面的阵列,其中每个对角线具有奇校验。
接下来,通过查找行的奇偶校验(在该实施例中始终为偶校验)完成编码,如下面的阵列所示。
2次擦除DiRE码的奇偶校验矩阵的实施例
按照BR93中的教导,考虑由f(x)=1+x+x2+…+xz-1生成的环,其中z是素数,并假设α是f(x)的旋转模数。然后DiRE码的奇偶校验矩阵给出如下:
H=1αα2…αz-10
111…11
在由f(x)生成的环中,奇偶校验矩阵H定义的代码相当于上面实施例中给出的描述,其中z=5。
2次擦除的解码:第一情况,擦除最后一列
该情况类似于编码,并且所述实施例首先填充缺失的虚构表项。
结果是下面的阵列。
接下来,使用对角线奇偶校验编码的反转,执行第三列的解码。这将导致下面的阵列。
将恢复后的列(第三列)中的表项与该第三列中的最后一个表项进行XOR运算,如下所示。
这将导致下面的阵列。
通过计算水平奇偶校验完成解码,如下面的阵列所示。
在下面的阵列中示出解码值,没有虚构行。
2次擦除的解码:第二情况,前z列中的两次擦除
所述实施例首先使用0填充缺失的虚构表项。
这将导致下面的阵列。
接下来,计算最后一列的奇偶校验,即,如果最后一列中的1的数量是奇数,则奇偶校验为1,而如果该数量是偶数,则奇偶校验为0。在该情况中,最后一列包含三个1,因此,最后一列的奇偶校验为1。该奇偶校验值1被写入阵列的最后一行,如下所示。
接下来,使用对角线奇偶校验编码的反转,执行第三列的解码。在通过一个擦除列的最后一个表项的对角线中启动递归并横向继续。这将导致下面的阵列。
在下面的阵列中示出解码值,没有虚构行。
对纠正3次擦除的DiRE码进行编码的实施例,针对z=5。
当z=5时,阵列包含4行和6列,并且位置指定如下。最后一行(L4x)是虚构行并仅用于计算目的。
L00L01L02L03L04L05
L10L11L12L13L14L15
L20L21L22L23L24L25
L30L31L32L33L34L35
L40L41L42L43L44L45
假设阵列具有下面的内容,其中值“b”指示位置当前没有值。
在该实施例中,使用斜率为2的直线获得第四列。首先计算斜率为2的这些直线的每一条的奇偶校验,从而导致下面阵列中的值。L03等于“0”,这是由L10、L41和L22形成的直线的奇偶校验。L13等于“0”,这是由L20、L01和L32形成的直线的奇偶校验。L23等于“1”,这是由L30、L11和L42形成的直线的奇偶校验。L33等于“1”,这是由L40、L21和L02形成的直线的奇偶校验。L43等于“0”,这是由L00、L31和L12形成的直线的奇偶校验。生成的阵列如下所示:
接下来,将第四列中的每个元素与该列的最后一个位置中的存储位进行XOR运算。因为该位是0,所以该列保持不变。下面的阵列反映使用斜率为2的直线的已完成编码。在该实施例中,斜率为2的每条直线具有偶校验。
这将完成斜率为2的直线的编码。将获得最后两列,类似于上述的前一个实施例;这将突出代码的嵌套性质。在下面的阵列中示出解码值,没有虚构行。
为了对三次擦除进行解码,可以使用BR93中开发的递归方法。对于超过三次的擦除,扩展奇偶校验矩阵的嵌套表达式。但是,在超过三次擦除的情况下,代码不一定针对每个素数z都是MDS。某些素数提供的代码是具有四个奇偶校验的MDS(即,它们可以纠正四次擦除),但某些素数则不提供。但是,在大多数应用中,三个奇偶校验便足够。最后,嵌套构造可能受α影响,α是伽罗瓦域GF(2b)中的根。在这种情况下,构造非常类似于有限域上的RS码之一。编码和解码类似于常规RS码的情况,并且所属技术领域的技术人员应能够轻松在嵌套情况中应用RS过程。
当z=5时,DiRE码的长度最多为6。可以将每个页分成1千字节(K)段,并且每个1K段决定代码的粒度。但是,对于某些应用而言6个设备可能太少,并且可能需要使用较长的代码。因为典型的页大小是4K,所以粒度是2的幂很方便,因此确定2的幂,其加上1给出素数。一个这种幂是16,其对应于素数z=17。在这种情况下,使用长度最多为18的DiRE码,并且粒度则由256字节(B)块给出。
3次擦除DiRE码的奇偶校验矩阵的实施例
纠正3次擦除的DiRE码的奇偶校验矩阵给出如下:
H=1α2α4…α2(z-2)00
1αα2…αz-2αz-10
111…111
将该矩阵与上面2次擦除代码的奇偶校验矩阵的实施例相比较,可以看到DiRE码的嵌套结构。实际上,其奇偶校验矩阵的最后两行对应于纠正两次擦除的代码的奇偶校验矩阵,因此3次擦除纠正码嵌套在2次擦除纠正码中。同样,纠正两次擦除的DiRE码嵌套在单一奇偶校验码中。
编码方程的实施例
一个实施例应用于维数为z-1行乘以最多z+1列的阵列,其中z是素数。该实施例中的代码将前z-1列编码为最后两列,并具有以下特性:1.代码是MDS,即,它可以恢复任何两个已擦除列;2.代码具有全局奇偶校验,即,任何编码行的XOR(异或)都为0;3.给定属性1和2,它在编码时最小化异或的数量;以及4.解码和编码简单(编码是解码的特殊情况)。
通过ai,j(0≤i、j≤z-2)表示信息页;以及通过pi和qi(0≤i≤z-2)表示两个奇偶校验列。在描述如何获得奇偶校验列时,使用以下约定:<m>z=n表示m≡n(modz)和0≤n<z(例如,<8>5=3)。假设
S=az-2-j,js的XOR,从j=0到z-2。
则,对于0≤i≤z-2,
pi=S与a<i-j-1>z,js的XOR的XOR,从j=0到z-2并且j≠i,以及
qi=pi与ai,js的XOR的XOR,从j=0到z-2。
注意,q列是整体奇偶校验列。
因此,如上所述,使用上面的计算实施MDS码,该码允许从最多两次擦除中恢复。MDS码将每个页分成z-1个段(z是素数),并且代码的长度最多为z+1。第一奇偶校验页p计算为:(第一数据页)XOR(第二数据页乘以α)XOR(第三数据页乘以α2)XOR...(第n-2数据页乘以αn-3)。在该实施例中,α是上述z-1次多项式的根。第二奇偶校验页q计算为:pXOR(第一数据页)XOR(第二数据页)XOR(第三数据页)XOR...(第n-2数据页)。
可以将代码扩展到多次擦除。对于三次擦除,它继续是MDS。在其它情况下,它依赖于选择的素数。例如,如果代码可以纠正3次擦除,则信息由前z-2列ai,j(0≤i≤z-2,0≤j≤z-3)给出,并且假设ri(0≤i≤z-2)表示奇偶校验列z-2中的页。则按如下方式获得ris。假设
S2=a<-5-2j>z,js的XOR,从j=0到z-3。
则,对于0≤i≤z-2,
ci=S2与a<i-4-2j>z,js的XOR的XOR,从j=0到z-3并且i≠<2j+3>z。
按照之前曾经获得c列的方式,获得接下来的两列,即p和q列。
因此,如上所述,使用上面的计算实施MDS码,该码允许从最多三次擦除中恢复。MDS码将每个页分成z-1个段(z是素数),并且代码的长度最多为z+1。第一奇偶校验页c计算为:(第一数据页)XOR(第二数据页乘以α2)XOR(第三数据页乘以α4)XOR...(第n-3数据页乘以α2(n-4))。在该实施例中,α是上述z-1次多项式的根。第二奇偶校验页p计算为:(第一数据页)XOR(第二数据页乘以α)XOR(第三数据页乘以α2)XOR...(第n-3数据页乘以αn-4)XOR(第一奇偶校验页c乘以αn-3)。第三奇偶校验页q计算为:(第一数据页)XOR(第二数据页)XOR...(第n-3数据页)XOR(第一奇偶校验页c)XOR(第二奇偶校验页p)。
解码方程的实施例
该实施例处理两次擦除,但它可以扩展到超过两次的擦除。在该实施例中,在列i和j中发生擦除,其中0≤i<j≤z。对于0≤t≤z-2,假设at,z-1=pt和at,z=qt。区分两种情况:j=z和j<z。考虑第一种情况j=z。假设
S=a<i-1-j>z,j的XOR,对于j=0到z-2并且j≠i
则,对于0≤t≤z-2,
at,i=S与a<t+i-j>z,j的XOR的XOR,对于j=0到z-2,j≠i并且j≠<t+i+1>z,以及
at,z=qt=at,js的XOR,从j=0到z-1。
接下来,考虑j<z的情况。假设
S=at,zs的XOR,从t=0到z-2。
假设对于0≤m≤z,az-1,m=0。则,对于0≤L≤z-2,计算
a<-(j-i)(L+1)-1>z,j=S与a<-(j-1)(L+1)+j-t>z,ts的XOR的XOR,从t=0到z-1并且t≠j,以及
a<-(j-i)(L+1)-1>z,i=a<-(j-1)(L+1)-1>z,ts的XOR,从t=0到z并且t≠i。
在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如在此所使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特性、整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其它特性、整数、步骤、操作、元素、组件和/或其组的存在或增加。
以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对本发明的描述其目的在于示意和描述,并非是穷尽性的,也并非是要将本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说,在不偏离本发明范围和精神的情况下,显然可以作出许多修改和变型。对实施例的选择和说明,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施方式。
此外,所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储设备、磁存储设备、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
上面参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(articleofmanufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的体系结构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (14)
1.一种用于存储数据的方法,包括:
接收写入数据;
将所述写入数据排列在r行和n列的页中,每个页包括多个扇区;
在所述页上使用多个水平和垂直擦除纠正码对所述写入数据进行编码,使得第一行包含t1个奇偶校验页并且t1≥1,第二行包含t2个奇偶校验页并且t2≥t1,第三行包含t3个奇偶校验页并且t3≥t2,依此类推,直到包含tr个奇偶校验页并且tr≥tr-1以及n>tr>t1的第r行,其中所述编码允许在r行的任何一行中从最多tr次擦除中恢复,在剩余r-1行的任何一行中从最多tr-1次擦除中恢复,在剩余r-2行的任何一行中从最多tr-2次擦除中恢复,依此类推,使得所述编码允许在最后一个剩余行中从最多t1次擦除中恢复,并且所述编码的输出包括编码后的写入数据;
作为写入条带而写入所述编码后的写入数据,所述写入条带跨存储阵列中的n个存储设备。
2.根据权利要求1的方法,其中所述写入条带中的任何一行中的t1个所述奇偶校验页对应于t1擦除纠正码,所述t1擦除纠正码的数据页是该行中的剩余n-t1个页。
3.根据权利要求1或2的方法,其中所述水平和垂直擦除纠正码中的至少一个是MDS(最大距离可分)码。
4.根据权利要求3的方法,其中所述MDS码允许从最多两次擦除中恢复,所述MDS码将每个页分成z-1个段,z是素数,并且所述MDS码的长度n最多为z+1,其中
第一奇偶校验页被计算为以下各项的异或(XOR):第一数据页、第二数据页乘以α、第三数据页乘以α2、第四数据页乘以α3,依此类推,直到数据页n-2乘以αn-3,其中α是z-1次多项式的根;以及
第二奇偶校验页被计算为前n-2个数据页与所述第一奇偶校验页的异或。
5.根据权利要求4的方法,其中所述多项式为1+x+x2+…+xz-1。
6.根据权利要求3的方法,其中所述MDS码允许从最多三次擦除中恢复,所述MDS码将每个页分成z-1个段,z是素数,并且所述MDS码的长度n最多为z+1,其中
第一奇偶校验页被计算为以下各项的异或:第一数据页、第二数据页乘以α2、第三数据页乘以α4、第四数据页乘以α6,依此类推,直到数据页n-3乘以α2(n-4),其中α是z-1次多项式的根;
第二奇偶校验页被计算为以下各项的异或:第一数据页、第二数据页乘以α、第三数据页乘以α2、第四数据页乘以α3,依此类推,直到数据页n-3乘以αn-4,以及所述第一奇偶校验页乘以αn-3;以及
第三奇偶校验页被计算为n-3个数据页与所述第一和第二奇偶校验页的异或。
7.根据权利要求6的方法,其中所述多项式为1+x+x2+…+xz-1。
8.根据权利要求1的方法,其中tr等于2。
9.根据权利要求1的方法,其中tr等于3。
10.根据权利要求1的方法,其中所述存储设备是硬盘驱动器和闪存驱动器中的一个。
11.一种用于在存储阵列中存储数据的系统,所述系统包括:
存储阵列,其包括多个存储设备;以及
阵列控制器,其被配置为执行权利要求1至10中的任一权利要求的步骤。
12.一种用于纠正存储阵列中的擦除的方法,所述方法包括:
接收来自n个存储设备的读取条带,所述读取条带包括排列在r行和n列中的页块,每个列对应于所述存储设备之一,所述页包括数据页和奇偶校验页,使用多个水平和垂直擦除纠正码生成所述奇偶校验页,使得第一行包含t1个奇偶校验页并且t1≥1,第二行包含t2个奇偶校验页并且t2≥t1,第三行包含t3个奇偶校验页并且t3≥t2,依此类推,直到包含tr个奇偶校验页并且tr≥tr-1以及n>tr>t1的第r行;
确定所述读取条带包括至少一个已擦除页,并且所述r行中的一行包含最多tr次擦除,r-1个剩余行中的一行包含最多tr-1次擦除,r-2个剩余行中的一行包含最多tr-2次擦除,依此类推,直到确定最后一个剩余行包含t1次擦除;以及
响应于所述页块以及所述水平和垂直擦除纠正码而重构所述已擦除页,所述重构导致恢复后的读取条带。
13.根据权利要求12的方法,其中所述水平和垂直擦除纠正码中的至少一个是最大距离可分码。
14.根据权利要求13的方法,其中tm等于2或者tm等于3。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/036,845 | 2011-02-28 | ||
US13/036,845 US8433979B2 (en) | 2011-02-28 | 2011-02-28 | Nested multiple erasure correcting codes for storage arrays |
PCT/IB2012/050605 WO2012117309A1 (en) | 2011-02-28 | 2012-02-10 | Correcting erasures in storage arrays |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103392172A CN103392172A (zh) | 2013-11-13 |
CN103392172B true CN103392172B (zh) | 2016-01-20 |
Family
ID=46719850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280010158.6A Active CN103392172B (zh) | 2011-02-28 | 2012-02-10 | 纠正存储阵列中的擦除 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8433979B2 (zh) |
JP (1) | JP5945285B2 (zh) |
CN (1) | CN103392172B (zh) |
CA (1) | CA2817945A1 (zh) |
DE (1) | DE112012000385B4 (zh) |
GB (1) | GB2502224B (zh) |
WO (1) | WO2012117309A1 (zh) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130117525A1 (en) * | 2011-11-04 | 2013-05-09 | Lsi Corporation | Method for implementing pre-emptive read reconstruction |
US8996957B1 (en) | 2012-05-22 | 2015-03-31 | Pmc-Sierra, Inc. | Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes |
US8972824B1 (en) | 2012-05-22 | 2015-03-03 | Pmc-Sierra, Inc. | Systems and methods for transparently varying error correction code strength in a flash drive |
US9021336B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages |
US8793556B1 (en) | 2012-05-22 | 2014-07-29 | Pmc-Sierra, Inc. | Systems and methods for reclaiming flash blocks of a flash drive |
US9176812B1 (en) | 2012-05-22 | 2015-11-03 | Pmc-Sierra, Inc. | Systems and methods for storing data in page stripes of a flash drive |
US9183085B1 (en) | 2012-05-22 | 2015-11-10 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency |
US9047214B1 (en) * | 2012-05-22 | 2015-06-02 | Pmc-Sierra, Inc. | System and method for tolerating a failed page in a flash device |
US9021333B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for recovering data from failed portions of a flash drive |
US9021337B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive |
US8788910B1 (en) | 2012-05-22 | 2014-07-22 | Pmc-Sierra, Inc. | Systems and methods for low latency, high reliability error correction in a flash drive |
US9312885B2 (en) * | 2012-08-15 | 2016-04-12 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory system error correction capability of which is improved |
US8949698B2 (en) * | 2012-09-27 | 2015-02-03 | Intel Corporation | Method, apparatus and system for handling data faults |
US9026867B1 (en) * | 2013-03-15 | 2015-05-05 | Pmc-Sierra, Inc. | Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory |
US9009565B1 (en) | 2013-03-15 | 2015-04-14 | Pmc-Sierra, Inc. | Systems and methods for mapping for solid-state memory |
US9081701B1 (en) | 2013-03-15 | 2015-07-14 | Pmc-Sierra, Inc. | Systems and methods for decoding data for solid-state memory |
US9208018B1 (en) | 2013-03-15 | 2015-12-08 | Pmc-Sierra, Inc. | Systems and methods for reclaiming memory for solid-state memory |
US9053012B1 (en) | 2013-03-15 | 2015-06-09 | Pmc-Sierra, Inc. | Systems and methods for storing data for solid-state memory |
WO2014191705A1 (en) | 2013-05-29 | 2014-12-04 | Toshiba Research Europe Limited | Coding and decoding methods and apparatus |
US9619324B2 (en) | 2013-09-27 | 2017-04-11 | Intel Corporation | Error correction in non—volatile memory |
EP2863566B1 (en) | 2013-10-18 | 2020-09-02 | Université de Nantes | Method and apparatus for reconstructing a data block |
US9262268B2 (en) | 2013-12-20 | 2016-02-16 | Seagate Technology Llc | Method to distribute user data and error correction data over different page types by leveraging error rate variations |
US9804925B1 (en) | 2014-02-25 | 2017-10-31 | Google Inc. | Data reconstruction in distributed storage systems |
WO2016058289A1 (zh) * | 2015-01-20 | 2016-04-21 | 北京大学深圳研究生院 | 一种能修复多个节点失效的mds纠删码 |
US9595979B2 (en) | 2015-01-20 | 2017-03-14 | International Business Machines Corporation | Multiple erasure codes for distributed storage |
US9870284B2 (en) | 2015-05-27 | 2018-01-16 | International Business Machines Corporation | First responder parities for storage array |
US9654146B2 (en) * | 2015-08-18 | 2017-05-16 | Taiwan Semiconductor Manufacturing Company, Ltd. | Bi-directional parity bit generator circuit |
US10055278B2 (en) | 2015-10-30 | 2018-08-21 | International Business Machines Corporation | Autonomic parity exchange in data storage systems |
US10031803B2 (en) * | 2015-12-14 | 2018-07-24 | International Business Machines Corporation | Distributed coding for multiple dimensional parities |
US9569306B1 (en) * | 2015-12-18 | 2017-02-14 | International Business Machines Corporation | Recovery of multi-page failures in non-volatile memory system |
US10142419B2 (en) | 2016-03-04 | 2018-11-27 | Sandisk Technologies Llc | Erasure correcting coding using data subsets and partial parity symbols |
US10536172B2 (en) | 2016-03-04 | 2020-01-14 | Western Digital Technologies, Inc. | ECC and raid-type decoding |
US9959168B2 (en) | 2016-03-04 | 2018-05-01 | Sandisk Technologies Llc | ECC and RAID-type decoding |
US10218789B2 (en) | 2016-03-04 | 2019-02-26 | Western Digital Technologies, Inc. | Erasure correcting coding using temporary erasure data |
US10592113B2 (en) * | 2016-07-18 | 2020-03-17 | Storart Technology (Shenzhen) Co., Ltd. | Method for transferring command from host to device controller and system using the same |
US10404282B2 (en) * | 2016-07-28 | 2019-09-03 | Micron Technology, Inc. | Apparatuses and methods for integrated interleaved Reed-Solomon encoding and decoding |
US10333555B2 (en) * | 2016-07-28 | 2019-06-25 | Micron Technology, Inc. | Apparatuses and methods for interleaved BCH codes |
US10169141B2 (en) * | 2016-08-11 | 2019-01-01 | SK Hynix Inc. | Modifiable stripe length in flash memory devices |
CN107783784A (zh) * | 2016-08-24 | 2018-03-09 | 衡宇科技股份有限公司 | 由主机到设备控制器传输命令的方法及使用其的系统 |
US10452477B2 (en) * | 2016-08-26 | 2019-10-22 | Netapp, Inc. | Multiple node repair using high rate minimum storage regeneration erasure code |
US10284230B2 (en) * | 2016-11-15 | 2019-05-07 | Western Digital Technologies, Inc. | Linked storage system and host system error correcting code |
US10379952B2 (en) * | 2017-06-16 | 2019-08-13 | Western Digital Technologies, Inc. | Data recovery and regeneration using parity code |
US10686471B2 (en) * | 2017-11-22 | 2020-06-16 | Samsung Electronics Co., Ltd. | One-sub-symbol linear repair schemes |
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 |
CN111585582B (zh) * | 2020-05-14 | 2023-04-07 | 成都信息工程大学 | 一种基于阵列运算且码距自由确定的编码方法 |
US11474898B2 (en) | 2020-12-09 | 2022-10-18 | International Business Machines Corporation | Multiple responder approach to systems with different types of failures |
CN115329399B (zh) * | 2022-10-13 | 2023-01-31 | 江苏华存电子科技有限公司 | 基于nand的垂直水平raid4数据保护管理方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002008900A2 (en) * | 2000-07-25 | 2002-01-31 | Sun Microsystems, Inc. | Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension |
CN1898650A (zh) * | 2003-07-14 | 2007-01-17 | 国际商业机器公司 | 数据存储阵列 |
CN101652752A (zh) * | 2006-07-24 | 2010-02-17 | 马维尔国际贸易有限公司 | 用于独立磁盘冗余阵列(raid)系统的文件服务器 |
Family Cites Families (36)
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 |
EP0632376B1 (en) * | 1993-06-30 | 1998-02-11 | International Business Machines Corporation | Encoding and rebuilding the data content of up to two unavailable DASDs in a DASD array |
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 |
JPH10240453A (ja) * | 1997-02-28 | 1998-09-11 | Nec Corp | ディスクアレイ装置 |
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 |
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 |
US20040123032A1 (en) * | 2002-12-24 | 2004-06-24 | Talagala Nisha D. | Method for storing integrity metadata in redundant data layouts |
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 |
US7263629B2 (en) * | 2003-11-24 | 2007-08-28 | Network Appliance, Inc. | Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array |
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 |
-
2011
- 2011-02-28 US US13/036,845 patent/US8433979B2/en active Active
-
2012
- 2012-02-10 JP JP2013555955A patent/JP5945285B2/ja active Active
- 2012-02-10 WO PCT/IB2012/050605 patent/WO2012117309A1/en active Application Filing
- 2012-02-10 CA CA2817945A patent/CA2817945A1/en not_active Abandoned
- 2012-02-10 GB GB1314853.1A patent/GB2502224B/en active Active
- 2012-02-10 CN CN201280010158.6A patent/CN103392172B/zh active Active
- 2012-02-10 DE DE112012000385.3T patent/DE112012000385B4/de active Active
- 2012-07-31 US US13/563,123 patent/US8918701B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002008900A2 (en) * | 2000-07-25 | 2002-01-31 | Sun Microsystems, Inc. | Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension |
CN1898650A (zh) * | 2003-07-14 | 2007-01-17 | 国际商业机器公司 | 数据存储阵列 |
CN101652752A (zh) * | 2006-07-24 | 2010-02-17 | 马维尔国际贸易有限公司 | 用于独立磁盘冗余阵列(raid)系统的文件服务器 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的高速存储阵列设计;杨立宏,熊宇,龙涛元;《长沙航空职业技术学院学报》;20091231;第9卷(第4期);57-61 * |
Also Published As
Publication number | Publication date |
---|---|
CN103392172A (zh) | 2013-11-13 |
US8918701B2 (en) | 2014-12-23 |
GB201314853D0 (en) | 2013-10-02 |
GB2502224A (en) | 2013-11-20 |
JP2014511158A (ja) | 2014-05-12 |
JP5945285B2 (ja) | 2016-07-05 |
US8433979B2 (en) | 2013-04-30 |
DE112012000385T5 (de) | 2013-10-10 |
US20120331367A1 (en) | 2012-12-27 |
US20120221926A1 (en) | 2012-08-30 |
DE112012000385B4 (de) | 2020-02-13 |
GB2502224B (en) | 2014-02-05 |
WO2012117309A1 (en) | 2012-09-07 |
CA2817945A1 (en) | 2012-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103392172B (zh) | 纠正存储阵列中的擦除 | |
CN104160452B (zh) | 用于存储数据和对擦除进行纠正的方法、系统和装置 | |
CN103577274B (zh) | 管理存储器阵列的方法和装置 | |
CN100375045C (zh) | 容许存储系统中的多个存储设备故障的系统和方法 | |
JP4668970B2 (ja) | フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正 | |
US8166370B1 (en) | Efficient RAID ECC controller for RAID systems | |
CN101635158B (zh) | 编码和/或解码系统数据的方法、装置、系统和体系结构 | |
CN104115126A (zh) | 使用代数码的多阶段ecc编码 | |
US9058291B2 (en) | Multiple erasure correcting codes for storage arrays | |
US9870284B2 (en) | First responder parities for storage array | |
CN102823141B (zh) | 用于固态存储器件的两级bch码 | |
CN102656566A (zh) | 固态存储系统中的数据管理 | |
CN103238139A (zh) | 解码包含集成的数据和信头保护的编码数据 | |
JP2013524609A5 (zh) | ||
KR20040093748A (ko) | 오류정정의 추가층을 오류정정코드 내에 삽입하는 방법 및장치 | |
US20070124648A1 (en) | Data protection method | |
WO2007137013A3 (en) | Error correction coding for multiple-sector pages in flash memory devices | |
CN107402860A (zh) | 用于执行内建式自我测试的独立磁盘冗余数组译码系统 | |
CN103151078A (zh) | 一种存储器检错纠错码生成方法 | |
US20230053467A1 (en) | Encoding for data recovery in storage systems | |
WO2017186871A1 (en) | Data protection coding technique | |
Tau et al. | Parity placement schemes to facilitate recovery from triple column disk failure in disk array systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: SK SK HYNIX INC. Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION Effective date: 20141011 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20141011 Address after: Gyeonggi Do, South Korea Applicant after: SK Hynix Address before: American New York Applicant before: International Business Machines Corp. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |