JP2014511158A - ストレージ・アレイにデータを保管するための方法、システム、およびコンピュータ・プログラム、ならびにストレージ・アレイ内の消去を訂正するための方法およびコンピュータ・プログラム - Google Patents

ストレージ・アレイにデータを保管するための方法、システム、およびコンピュータ・プログラム、ならびにストレージ・アレイ内の消去を訂正するための方法およびコンピュータ・プログラム Download PDF

Info

Publication number
JP2014511158A
JP2014511158A JP2013555955A JP2013555955A JP2014511158A JP 2014511158 A JP2014511158 A JP 2014511158A JP 2013555955 A JP2013555955 A JP 2013555955A JP 2013555955 A JP2013555955 A JP 2013555955A JP 2014511158 A JP2014511158 A JP 2014511158A
Authority
JP
Japan
Prior art keywords
page
parity
data
pages
row
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.)
Granted
Application number
JP2013555955A
Other languages
English (en)
Other versions
JP5945285B2 (ja
Inventor
ヘツラー、スティーヴン、ロバート
ブラウム、マリオ
ハフナー、ジェイムズ、リー
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 JP2014511158A publication Critical patent/JP2014511158A/ja
Application granted granted Critical
Publication of JP5945285B2 publication Critical patent/JP5945285B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/1045Nested RAID, i.e. implementing a RAID scheme in another RAID scheme
    • 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)
  • 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行のうちの任意の1行でt個までの消去からの回復が可能になり、残りのr−1行のうちの任意の1行でtr−1個までの消去からの回復が可能になり、残りのr−2行のうちの任意の1行でtr−2個までの消去からの回復が可能になるなど、このコード化により、最後の残りの行でt個までの消去からの回復が可能になるようになっている。コード化された書き込みデータはこのコード化から出力される。コード化された書き込みデータは、ストレージ・アレイ内のn個のストレージ・デバイス全域にわたって書き込みストライプとして書き込まれる。
【選択図】 図5

Description

本発明は、一般に、ストレージ・システムに関し、より具体的には、ストレージ・アレイ(storage array)のためのネストされた複数消去訂正コード(nestedmultiple erasure correcting code)に関する。
コンピュータ・システムは、ストレージ・デバイス上のデータの損失から保護するためにパリティ計算などのデータ冗長性方式を使用する。冗長ディスク・アレイ(RAID)システムでは、データ値および関連パリティ値がディスク・ドライブ全域にわたってストライピングされる。RAIDシステムは、典型的に、ハードディス・ドライブ(HDD)アレイに保管された情報を破局的ディスク障害から保護するために使用される。普及している2つのRAID方式は、単一の破局的ディスク障害から保護するRAID5と、二重の破局的ディスク障害から保護するRAID6である。
フラッシュ・デバイスは、不揮発性ストレージ・デバイスの1つのタイプであって、大きいブロック単位で電気的に消去し再プログラムすることができるものである。HDDのように、フラッシュ・デバイスは、典型的に512バイトのセクタに媒体を分割する。フラッシュ・デバイスはさらに複数のセクタを集めてページを形成し、典型的に1ページあたり8つのセクタであり、それぞれのページが4000または4キロ(k)バイトを収容する。それぞれのセクタは、いくつかの誤り(典型的に単一ビット誤りであるが、バイト誤りなどのその他の可能性もあり得る)を訂正する誤り訂正コード(ECC)によって保護される。普及している選択肢の1つは、8ビット訂正または15ビット訂正BCHコードのようなBose−Chaudhuri−Hocquenghem(BCH)コードであるが、多くの変形例も可能である。HDDのように、フラッシュ・デバイス内のページではハード誤り(HE)が発生する可能性がある。これは、たとえば、ページの1つのセクにおけるBCHコードの誤り訂正能力を超えたときに発生する。HDDと比較すると、あるページがその書き込み持続存続期間の終わりに近づくにつれてまたはあるページがそのデータ保持存続期間の終わりに近づくにつれて、いずれの場合も、フラッシュ・デバイスの方がBCHコードの能力を超える可能性が高い。したがって、フラッシュ・デバイス内のHEの数は、時間の経過につれて増加すると予想することができ、デバイス上に潜在的HEが残る。
1997年9月、Software, Practice& Experience、999〜1012、J.S.Plankによる「A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-likeSystems」 1993年、IEEE Transactions onInformation Theory、第39巻、66〜77ページ、M.Blaum他による「New Array Codes for Multiple Phased Burst Correction」
フラッシュ・デバイスで構成されるアレイは、破局的デバイス障害とおそらくより優勢なHEとが結合した混合状態に遭遇する可能性がある。たとえば、フラッシュ・デバイスに保管された情報を保護するためにRAID5を使用すると、その結果、潜在的HEが存在するときにデバイス障害が発生する可能性がある。したがって、RAID5システム内のデバイスが破局的デバイス障害を経験し、他の何らかのデバイスのページにHEがある場合、このような事象が発生している行は情報を取り出すことができなくなる。RAID6は第2のデバイス全体をパリティに専念させる必要があり、支配的障害がHEであるときに費用がかかる。
一実施形態はデータを保管するための方法である。この方法は書き込みデータを受信することを含む。書き込みデータは「r」行×「n」列のページに配列され、それぞれのページは複数のセクタを含む。書き込みデータは、そのページ上で複数の水平および垂直消去訂正コードを使用してコード化される。このコード化の結果、第1の行はt個のパリティ・ページを含み、t≧1であり、第2の行はt個のパリティ・ページを含み、t≧tであり、第3の行はt個のパリティ・ページを含み、t≧tであり、t個のパリティ・ページを含み、t≧tr−1およびn>t>tであるr番目の行まで以下同様になる。このコード化により、r行のうちの任意の1行でt個までの消去からの回復が可能になり、残りのr−1行のうちの任意の1行でtr−1個までの消去からの回復が可能になり、残りのr−2行のうちの任意の1行でtr−2個までの消去からの回復が可能になるなど、このコード化により、最後の残りの行でt個までの消去からの回復が可能になるようになっている。コード化された書き込みデータはこのコード化から出力される。コード化された書き込みデータは、ストレージ・アレイ内のn個のストレージ・デバイス全域にわたって書き込みストライプとして書き込まれる。
他の実施形態はストレージ・アレイにデータを保管するためのシステムである。このシステムはストレージ・アレイとアレイ・コントローラとを含む。ストレージ・アレイは複数のストレージ・デバイスを含む。アレイ・コントローラは、書き込みデータを受信し、書き込みデータをr行×n列のページに配列するために構成される。アレイ・コントローラは、そのページ上で複数の水平および垂直消去訂正コードを使用して、書き込みデータをコード化する。このコード化の結果、第1の行はt個のパリティ・ページを含み、t≧1であり、第2の行はt個のパリティ・ページを含み、t≧tであり、第3の行はt個のパリティ・ページを含み、t≧tであり、t個のパリティ・ページを含み、t≧tr−1およびn>t>tであるr番目の行まで以下同様になる。このコード化により、r行のうちの任意の1行でt個までの消去からの回復が可能になり、残りのr−1行のうちの任意の1行でtr−1個までの消去からの回復が可能になり、残りのr−2行のうちの任意の1行でtr−2個までの消去からの回復が可能になるなど、このコード化により、最後の残りの行でt個までの消去からの回復が可能になるようになっている。コード化からの出力はコード化された書き込みデータを含む。アレイ・コントローラは、コード化された書き込みデータをストレージ・アレイ内のn個のストレージ・デバイス全域にわたって書き込みストライプとして書き込む。
他の実施形態はストレージ・アレイにデータを保管するためのコンピュータ・プログラム製品(computer program product)である。このコンピュータ・プログラム製品は、それによりコンピュータ可読プログラム・コードが実施されているコンピュータ可読記憶媒体を含む。このコンピュータ可読プログラム・コードは、書き込みデータを受信し、書き込みデータをr行×n列のページに配列するために構成されたコンピュータ可読プログラム・コードを含む。このプログラム・コードは、そのページ上で複数の水平および垂直消去訂正コードを使用して、書き込みデータをコード化するためにさらに構成される。第1の行はt個のパリティ・ページを含み、t≧1であり、第2の行はt個のパリティ・ページを含み、t≧tであり、第3の行はt個のパリティ・ページを含み、t≧tであり、t個のパリティ・ページを含み、t≧tr−1およびn>t>tであるr番目の行まで以下同様であり、このコード化により、r行のうちの任意の1行でt個までの消去からの回復が可能になり、残りのr−1行のうちの任意の1行でtr−1個までの消去からの回復が可能になり、残りのr−2行のうちの任意の1行でtr−2個までの消去からの回復が可能になるなど、このコード化により、最後の残りの行でt個までの消去からの回復が可能になるようになっている。このプログラム・コードは、書き込みデータをストレージ・アレイ内のn個のストレージ・デバイス全域にわたって書き込みストライプとして書き込むためにさらに構成される。
他の一実施形態はストレージ・アレイ内の消去を訂正するための方法である。この方法は複数のn個のストレージ・デバイスから読み取りストライプを受信することを含む。読み取りストライプはr行×n列に配列された複数ページのブロックを含み、それぞれの列はストレージ・デバイスの1つに対応する。ページはデータ・ページとパリティ・ページとを含む。パリティ・ページは複数の水平および垂直消去訂正コードを使用して生成され、第1の行はt個のパリティ・ページを含み、t≧1であり、第2の行はt個のパリティ・ページを含み、t≧tであり、第3の行はt個のパリティ・ページを含み、t≧tであり、t個のパリティ・ページを含み、t≧tr−1およびn>t>tであるr番目の行まで以下同様になるようになっている。この方法は、読み取りストライプが少なくとも1つの消去されたページを含み、その行のうちの1行が多くてもt個の消去を含み、r−1個の残りの行のうちの1行が多くてもtr−1個の消去を含み、r−2個の残りの行のうちの1行が多くてもtr−2個の消去を含むなど、最後の残りの行がt個の消去を含むと決定するまで、決定することも含む。消去されたページは、そのページのブロックならびに水平および垂直消去コードに応答して再構築される。再構築の結果、回復された読み取りストライプが得られる。
他の一実施形態はストレージ・アレイ内の消去を訂正するためのコンピュータ・プログラム製品である。このコンピュータ・プログラム製品は、それによりコンピュータ可読プログラム・コードが実施されているコンピュータ可読記憶媒体を含む。このコンピュータ可読プログラム・コードは、複数のn個のストレージ・デバイスから読み取りストライプを受信するために構成されたコンピュータ可読プログラム・コードを含む。読み取りストライプはr行×n列に配列された複数ページのブロックを含み、それぞれの列はストレージ・デバイスの1つに対応する。ページはデータ・ページとパリティ・ページとを含む。パリティ・ページは複数の水平および垂直消去訂正コードを使用して生成され、第1の行はt個のパリティ・ページを含み、t≧1であり、第2の行はt個のパリティ・ページを含み、t≧tであり、第3の行はt個のパリティ・ページを含み、t≧tであり、t個のパリティ・ページを含み、t≧tr−1およびn>t>tであるr番目の行まで以下同様になるようになっている。この方法は、読み取りストライプが少なくとも1つの消去されたページを含み、その行のうちの1行が多くてもt個の消去を含み、r−1個の残りの行のうちの1行が多くてもtr−1個の消去を含み、r−2個の残りの行のうちの1行が多くてもtr−2個の消去を含むなど、最後の残りの行がt個の消去を含むと決定するまで、決定することも含む。消去されたページは、そのページのブロックならびに水平および垂直消去コードに応答して再構築される。再構築の結果、回復された読み取りストライプが得られる。
追加の特徴および利点は本発明の技法により実現される。本発明のその他の諸実施形態および諸態様は、本明細書に詳細に記載され、請求された本発明の一部と見なされる。その利点および特徴とともに本発明をより適切に理解するために、以下の説明および図面を参照されたい。
次に、例としてのみ、添付図面に関連して、本発明の諸実施形態について説明する。
一実施形態により複数消去訂正コードを提供するためのシステムのブロック図である。 一実施形態によるストレージ・システムを示す図である。 一実施形態によりコード化されたブロックの内容を示す図である。 一実施形態により消去訂正を実行するためのプロセス・フローである。 一実施形態により書き込みストライプをコード化するためのプロセス・フローである。 一実施形態により読み取りストライプをデコードするためのプロセス・フローである。
一実施形態では、ストレージ・システム内のデバイス障害とブロック障害の組み合わせとして発生するデータ損失から保護するために複数消去訂正コードを使用する。複数消去に耐えられるネストされた消去コードであって、1つの消去に耐えられる全体的な外部パリティを有するものが一実施形態によって使用される。ネストされたプロパティは、そのデータについて計算されるそれぞれの冗長性記号と、前に計算されたすべての冗長性記号によって特徴付けられる。単一のデバイスが故障した場合、本明細書に記載されている一実施形態はRAID6に匹敵する保護を提供するが、保管効率はRAID5に近くなる。
本明細書で使用する「消去訂正」という用語は、その位置が分かっている誤りを訂正することを指している。消去訂正は「誤り訂正」とは異なり、本明細書で使用する「誤り訂正」はその位置が分かっていない誤りを訂正することを指している。消去を訂正するには、誤りを訂正するのに必要な冗長性の量の約半分を必要とする。本明細書で使用する「ハード誤り」または「HE」という用語は消去(すなわち、位置が分かっている誤り)を指している。
Bose−Chaudhuri−Hocquenghem(BCH)コードなどの誤り訂正コード(ECC)は、フラッシュ・デバイスにおける生ビット誤り率(raw bit error rate)を訂正後により低いレベルに低減するのに役立つが、最終レベルは依然としてストレージ・システムに関するターゲット生ビット誤り率より高い可能性がある。たとえば、15ビット訂正BCHコードは、512バイト(B)セクタをデコードした後に、「.001」の生ビット誤り率を2.7e−9の生ビット誤り率に低下させることができる。しかし、この生ビット誤り率は、フラッシュ・デバイスにおけるHEの確率を表し、8e−14から8e−16に及ぶ可能性がある典型的なハードディスク・ドライブ(HDD)のものよりかなり高い。高い誤り率は、フラッシュ・デバイスにおいて書き込み持続の終わり近くならびにデータ保持存続期間の終わり近くに発生する可能性がある。
ECCの誤り訂正能力を超えると、この事象は非常に高い確率で検出される。たとえば、15ビット訂正BCHコードが実現され、15個を超える誤りが発生した場合、BCHコード自体がこのような事象を検出する可能性が非常に高くなる。いずれの場合も、誤訂正(miscorrection)の確率が1e−26程度になることを保証するために、一般に巡回冗長コード(CRC)が追加される。BCHコードが誤訂正を検出し損なうことは、徴候的にHDDの書き込み脱落またはオフトラック書き込みと同等である。
当技術分野で知られているものであれば、どのような複数消去訂正コードでも一実施形態によって使用することができる。一実施形態によって使用される複数消去コードの一例はリード−ソロモン(RS)コードである。RSコードは当技術分野で周知のものであり、複数の消去を訂正するために使用することができる。RSコードは記号に基づくものであり、その記号のサイズは適用例次第である。RAIDアーキテクチャに関連するRSコードに関するチュートリアルについては、1997年9月、Software, Practice & Experience、999〜1012、J.S.Plankによる「A Tutorial on Reed-SolomonCoding for Fault-Tolerance in RAID-like Systems」を参照されたい。
複数の消去の訂正のための効率的なコードのもう1つの系列は、1993年、IEEETransactions on Information Theory、第39巻、66〜77ページ、M.Blaum他による「New Array Codes for Multiple Phased Burst Correction」に記載されている、Blaum−Roth 93(BR93)コードによって示される。BR93コードは、ガロア域演算を回避し、その代わりに排他的論理和(XOR)演算のみを実行することにより、RSコードより複雑ではなくなる傾向があるアレイ・コードである。
RSおよびBR93コードはいずれも最大距離分離可能(MDS)コードであり、消去を訂正するために冗長性を最適利用することを意味する。RSおよびBR93コードは、本明細書に記載されている諸実施形態によって使用できる2つのタイプの複数消去訂正コードの例である。汎用型EVENODDコードまたは汎用型行対角コード(RDC:row diagonal code)など、他の系列のコードも実現できるので、諸実施形態はこの2つのコードに限定されない。
図1は、一実施形態により複数消去訂正コードを使用して保護されるシステム100のブロック図を示している。図1に示されているように、ホスト・コンピュータ102は、ストレージ・システム110内のアレイ・コントローラ104と通信状態にある。ストレージ・システム110は、ストレージ・デバイス0 106a、ストレージ・デバイス1 106b、ストレージ・デバイス2 106c、・・・ストレージ・デバイスN−1 106dというN個のストレージ・デバイス106(ここでNは1より大きい)で構成されるストレージ・アレイ108にデータを保管する。一実施形態では、ホスト・データ(たとえば、データ・ビットとして表される)とともにパリティ・ビットがストレージ・デバイス106に保管される。一実施形態では、ストレージ・アレイ108内のストレージ・デバイス106がフラッシュ・デバイスによって実現される。一実施形態では、アレイは5個のフラッシュ・デバイスで構成され、それぞれのデバイスは32ギガバイト(G)の記憶容量を有する。
図1に示されているように、アレイ・コントローラ104はストレージ・システム110の一部であり、他の実施形態では、アレイ・コントローラ104はホスト・コンピュータ102の一部である。
図2は、一実施形態による図1のストレージ・システム110を示している。ストレージ・システム110は、当業者によって知られている受信機、送信機、およびクロックなど、多数のその他の要素を含むことができるが、明瞭にするためにこれらは示されていない。図2に示されているように、アレイ・コントローラ104はエンコーダ202とデコーダ204とを含む。エンコーダ202は、1つまたは複数の書き込みデータ・ページを(たとえば、ホスト・コンピュータ102から)受信し、データ・ページとパリティ・ページの両方を含む書き込みストライプを生成するための書き込みプロセス中に使用される。一実施形態では、書き込みストライプはストレージ・アレイ108に書き込まれ、ストレージ・アレイ108内の複数の行にわたる。デコーダ204は、1つまたは複数のデータ・ページをストレージ・アレイ108から読み取るための読み取りプロセス中に使用される。1つのページ内の1つまたは複数のHEが検出されると、デコーダは、ストレージ・アレイ108からHE(複数も可)が検出されているストライプ全体を読み取る。デコーダ204およびエンコーダ202はどちらも共用データ(たとえば、書き込みストライプを生成するためにエンコーダ202によって書き込みページに適用されたコード化のタイプを識別するためのデータ)にアクセスすることができる。読み取りストライプは、読み取りデータ・ページを生成するためにデコーダ204によって除去されるパリティ・ビットを含む。デコーダ204は、少なくとも1つのページの読み取り障害が発生したときに使用されるリコンストラクタ(reconstructor)206を含む。たとえば、1つのページの内部ECCの誤り訂正能力を超えたときに、読み取り障害が発生する。典型的に、誤っているページの位置は分かっており、したがって、誤り位置(たとえば、消去されたページ位置(複数も可))および読み取りストライプはリコンストラクタ206に送信され、これは消去されたページを取り出そうと試みる。
図3は、複数のストレージ・デバイス106の全域で保管されるアレイの一部分(本明細書では「ストライプ」ともいう)であって、複数消去訂正コードを使用してエンコーダ202によってコード化することができるものの内容を描写している。本明細書で使用する「ページ」という用語はメモリ・セルのグループを指している。一実施形態では、1つのページは4Kバイトであるが、他の諸実施形態では他のページ・サイズも実現することができる。本明細書で使用する「コード化ストライプ」という用語は、まとまって書き込みストライプを構成するページのグループであって、1つの単位として複数消去訂正コードでコード化されるものを指している。本明細書で使用する「デコーディング・ストライプ」という用語は、まとまって読み取りストライプを構成するページのグループであって、1つの単位として複数消去訂正コードでデコードされるものを指している。
図3に描写されているストライプは、3行×5列に配列されたページのブロックを含む。一実施形態では、それぞれの列はストレージ・デバイスの一部分を表している。図3に描写されているストライプでは、それぞれの位置はフラッシュ・メモリ・デバイス内の1つのページを表している。図3に示されているように、4つのページはパリティ・ビットを含むパリティ・ページ(p04、p14、p24、およびp23と表示されているページ)であり、残りのページはデータ・ビットを含むデータ・ページ(a00、a10、a20、a01、a11、a21、a02、a12、a22、a03、およびa13と表示されているページ)である。ページ読み取り障害が発生していることを検出し、任意の消去位置を識別するために、ECC(たとえば、BCH)またはCRCが使用されると想定する。本明細書に記載されている諸実施形態では、このような読み取り障害を識別するために使用される方法にかかわらず、読み取り障害が報告されていると想定している。
以下に記述する図3のストライプにおけるデータ・ページおよびパリティ・ページの配列は、残りの1行の2つのHEとともに、任意の2行の最高1つのHEの回復を可能にする。ストライプ内の任意の4つのHEの回復を可能にする4消去訂正コードを使用することもできるが、ここでは例のためにのみ3行ストライプが示されているので、複雑さが増すことになる。適用例における典型的なストライプは16行または32行を必要とする。
パリティ・ページの配置は訂正ストライプごとに様々になる可能性がある。パリティ・ページはストライプ内のどこにでも配置することができるが、一般に、ボトルネック効果を回避するためにストライプごとに異なるデバイスに配置することが好ましい。1つのストライプ内の行および列の数は任意のものにすることができるので、図3に描写されているストライプはストライプ例の例示に過ぎない。加えて、パリティ・ページの配置は任意のものであり、図3に示されているもの以外の位置に配置することもできる。さらに、パリティ・ページの数は必要な回復次第で様々になる可能性がある。図3のストライプは、ストレージ・デバイスのサイズ次第で、垂直に非限定的に繰り返すことができる。たとえば、ストレージ・デバイスが32Gのフラッシュ・デバイスであり、行数が16に等しい場合、コード化ストライプは500,000回繰り返される。
一実施形態では、デコーダ204は、図3に示されているようにコード化されているストレージ・アレイ108からページHEを経験している読み取りストライプを受信する。一例として、ページa01、a11、およびa21に対応する第2のストレージ・デバイスに破局的障害が発生しており、追加のHEがページa13で発生していると想定する。これら4つのページ消去は、以下に記述するデコード方式とともに図3に示されているストライプ構成を使用して回復することができる。一実施形態では、デコーダ204に位置するリコンストラクタ206によって回復が実行される。
図4は、一実施形態によりデコーダ204によって実現されるプロセス・フローを描写している。ブロック402では、ECCあるいはCRCまたはその両方が、ページ読み取りが失敗したことを検出する。ブロック404では、読み取りページが失敗したページを含むストライプ内のすべてのページを読み取るための要求が送信される。ブロック406では、読み取りが失敗したページ(複数も可)の位置(複数も可)(すなわち、消去されたページ位置(複数も可))とともに読み取りストライプがリコンストラクタ206に送信される。ブロック408では、読み取りストライプ内の消去されたページ位置の数がこの方式の消去訂正能力を超えるかどうかが判断される。たとえば、1行が3つの消去を含む場合、この方式の消去訂正能力を超える。図3の例では、これは、2つの行がそれぞれ2つの消去を含む場合にも発生する。ブロック408で、読み取りストライプ内の消去されたページ位置の数がこの方式の能力を超えると判断された場合、誤り状態をデコーダ204に返すためのブロック414が実行される。ブロック408で、消去されたページ位置の数がこの方式の能力の範囲内であると判断された場合、ブロック410が実行される。ブロック410では、本明細書で後述するように、消去訂正コードを伴う方式を使用して、読み取りストライプが再構築される。ブロック412では、リコンストラクタ206は、回復された読み取りページを含む、回復された読み取りストライプをデコーダ204に出力する。
図5は、一実施形態により書き込みストライプをコード化するためのプロセス・フローである。一実施形態では、図5に描写されているプロセス・フローがエンコーダ202によって実行される。図3の1つ(アレイは3行を有し、2行は1つの消去について訂正することができ、1行は2つの消去について訂正することができる)として(1,1,2)消去訂正方式に関連して説明するが、その他の消去訂正方式を対象として含むように拡張することもできる。ブロック502では、「n」列(たとえば、フラッシュ・デバイス)、「r」行が存在し、「L」行が最高2つの消去について訂正される能力を有すると想定する。加えて、最初の「n−2」列および(n−1)番目の列の最初の「r−L」ページがデータを含むと想定する。このアレイ内のページの残りはブランクであり、パリティ・ページを含むことになる。
図3の例では、5列(n=5)、3行(r=3)、およびL=1が存在する。データ・ページは「a」、パリティ・ページは「p」、未使用ページは「b」、一時ページは「q」または「c」として表される。それぞれのページ・タイプの隣の下付き文字はアレイ内のページの位置を表している(たとえば、「a00」は行列内の行0、列0にあるデータ・ページである)。記号「+」はXOR演算を表している。この実施形態のコード化により、これらの行のうちの任意の2行の1つの障害と残りの1行の2つの障害からの回復が可能になる。以下に示す説明では、一実施形態によりデータ・ページからパリティ・ページを入手する1つの方法を示している。以下のアレイは11個のデータ・ページの位置を示している。
Figure 2014511158
ブロック504では、単一パリティを使用して、最初の「r−L」行がコード化される。その結果は、最後の列の最初の「r−L」ページに書き込まれる。
この実施形態では、単一パリティを使用して、最初の2行のパリティが得られる。一実施形態では、第1の行のデータ・ページのXORを取ってp04を入手し、第2の行のデータ・ページのXORを取ってp14を入手することにより、そのパリティが得られる。
Figure 2014511158
ブロック506では、2つの補助列(auxiliary column)qを入手するために、グローバル・パリティ(global parity)を有する2消去訂正コードを使用して、R行がコード化される。グローバル・パリティを有する消去訂正コードを構築する方法の一実施形態については本明細書で後述する。
最初の2(一般に、r−L)行では、前述の2消去訂正コードの第1のパリティ記号を計算することで十分である。このような2消去訂正コードの第1のパリティ記号は、第1の行のq03、第2の行のq13、および第3の行のq23によって示される。
Figure 2014511158
ブロック508では、「(n−1)番目」の列の「r−L」個のデータ・ページと第1の補助列qの最初の「r−L」個のページとのXORが取られる。本明細書に記載されているケースでは、r−L=2であり、そのXORはa03+q03およびa13+q13である。
補助列を使用してa03+q03およびa13+q13を計算するが、ここでa03およびa13は前のアレイに示されているデータ・ページである。
Figure 2014511158
ブロック510では、L消去訂正コードを使用して、これらの「r−L」個のページがコード化される。
したがって、この実施形態では、1消去訂正垂直コード(すなわち、単一パリティ)を使用して、補助列の最初の2つの要素のXORとしてc23が計算される。
Figure 2014511158
ブロック512では、ブロック510からのL個のパリティ・ページと、ブロック506で得られた両方の列の最後のL個のページとのXORが取られる。そのXORの結果は、ブロック502の元のアレイの最後の2列の最後の「L」個のページに書き込まれる。
したがって、この実施形態では、一番下の行のパリティが以下に示すように得られる。
Figure 2014511158
これでコード化を完了し、結果として得られるアレイは以下に示す通りである。
Figure 2014511158
結果として得られるコードはそれぞれの行が単一パリティを有するという点でRAID5と同様であり、それぞれの行の多くても1つの項目が消去される場合にRAID5を使用することができる。上記の実施形態では、3行および5列によるコード化の方法の1つを例示している。最初の2行は1つのパリティ・ページのみを伝達し、第3の行は2つのパリティ・ページを伝達し、したがって、指定1(第1の行は1パリティ)、1(第2の行は1パリティ)、2(第3の行は2パリティ)になる。
要約すると、上記のアレイは、「r」行(r=3)×「n」列(n=5)のページを含む。それぞれの行は「t」個のパリティ・ページを有し、ここでt>=1である。第1の行は1つのパリティ・ページを含み(t=1)、第2の行は1つのパリティ・ページを含み(t=1)、第3の行は2つのパリティ・ページを含む(t=2)。このコード化により、3行のうちの任意の1行から2(t)個までの消去を回復することができ、残りの2行のそれぞれから1(t,t)個までの消去を回復することができる。
一般に、諸実施形態は(1,1,...,1,2,2,...2)方式を有することサポートし、行数は2の数と同様に任意のものである。最後の行の最後の列を計算するときに垂直L消去訂正コードを使用してパリティを入手することを除いては、この一般的なケース(L個の2を有する)のコード化は(1,1,2)のケースの1と同様である。このようなコードは独立しており、水平コードとは異なる可能性があり、その選択肢は選択された特定の適用例によって決まる。以下の一実施形態は(1,1,2,2)コードの一実施形態を示している。
また、以下の一実施形態に示されているように、この構造は、1つの消去を含む1行、2つの消去を含む1行、および3つの消去を含む第3の行をサポートする(1,2,3)などの他のパラメータに拡張することができる。
図6は、一実施形態により書き込みストライプをデコードするためのプロセス・フローである。一実施形態では、図6に描写されているプロセスがデコーダ204によって実行される。図6のプロセス・フローは(1,1,2)消去訂正コードに関連して説明するが、その他の消去訂正コードを対象として含むように拡張することもできる。ブロック602では、2つの消去を含む多くても「L」行が存在し、残りの行は多くても1つの消去を含むと想定する。
以下のアレイ実施形態に示されているように、第1および第3の行では1つの消去が行われ(すなわち、そのページ上のデータが脱落している)、第2の行では2つの消去が行われている。i番目の行およびj番目の列の消去はeijによって示される。
Figure 2014511158
ブロック604では、RAID5のように単一パリティを使用して、多くても1つの消去を含む行が訂正され、すなわち、対応する行の残りのページのXORを取ることにより、消去されたページが回復される。
したがって、このアレイ例を参照すると、第1の行のデータ脱落は第1の行の残存ページのXORを取ることによって回復され、第3の行のデータ脱落は第3の行の残存ページのXORを取ることによって回復される。これが可能であるのは、p04がa00、a01、a02、およびa03のXORであるという特性を有し、p24がa20、a21、a22、およびa23のXORであるという特性を有するからである。この結果、以下のアレイが得られる。
Figure 2014511158
ブロック606では、この時点で消去なしである少なくとも「r−L」行のq個のパリティは、二重消去訂正コードを使用して計算される。
したがって、この実施形態を参照すると、第1および第3の行の2消去訂正コードの第1のパリティ・ページが得られる(q03およびq23)。
Figure 2014511158
ブロック608では、少なくとも「r−L」の消去なし行の「(n−1)番目」の列のページと、ブロック606で得られた第1の列qとのXORが取られる。
したがって、この実施形態を参照すると、a03+q03およびp23+q23が得られる。前述の通り、p23+q23=c23である。
Figure 2014511158
ブロック610では、垂直L消去訂正コードを使用して、ブロック608の列で脱落している多くてもL個のページが取り出される。
この実施形態では、以下に示すように、垂直1消去訂正コードを使用して、第2の垂直記号が得られる。
Figure 2014511158
ブロック612では、二重消去訂正コードに対応するq個の項目を入手するために、ブロック610からのページと、2つの消去を有する行の最後の2列のページとのXORが取られる。
したがって、この実施形態では、q14がq14=(a13+q13)+p14として得られる。
Figure 2014511158
ブロック614では、二重消去訂正コードを使用して、2つの消去を含む多くてもL行が訂正される。
この実施形態では、以下の右側に示されている行を使用する2消去訂正コードを使用して、第2の行の消去されたページが回復される。
Figure 2014511158
2消去訂正コードを適用した結果は以下に示す通りである。
Figure 2014511158
ブロック616では、ブロック610で得られたページとともに2つの消去を含む少なくともL行のデコードで得られた第1の列qと、ブロック614で生成されたページとのXORが取られる。
この実施形態を参照すると、a13+q13とq13とのXORを取ることにより、a13が得られる。
Figure 2014511158
以下のアレイに示されているように、デコードが完了する。
Figure 2014511158
(1,1,2,2)コード化プロセスの実施形態
この実施形態では、5列(n=5)および4行(r=4)が存在する。データ・ページは「a」、パリティ・ページは「p」、未使用ページは「b」、一時ページは「q」または「c」として表される。それぞれのページ・タイプの隣の下付き文字はアレイ内のページの位置を表している(たとえば、「a00」は行列内の行0、列0にあるデータ・ページである)。以下のアレイは14個のデータ・ページの位置を示している。
Figure 2014511158
単一パリティを使用して、最初の2行のパリティが得られる。一実施形態では、第1の行のデータ・ページのXORを取ってp04を入手し、第2の行のデータ・ページのXORを取ってp14を入手することにより、そのパリティが得られる。
Figure 2014511158
次に、このアレイの最初の3(一般に、n−2)列について考慮する。その行のページのXORを取ることによりゼロ・ページが得られるように、全体的なパリティ・チェックを有する2消去訂正コードを使用して、最後の2行がコード化される(たとえば、後述するDiREコード)。最初の2行では、前述の2消去訂正コードの第1のパリティ記号を計算することで十分である。
Figure 2014511158
補助列を使用してa03+q03およびa13+q13を計算するが、ここでa03およびa13は前のアレイに示されているデータ・ページである。
Figure 2014511158
次に、2消去訂正垂直コードを使用して、補助列の最初の2つの項目からc23およびc33が計算される。
Figure 2014511158
一番下から2行分のパリティが以下に示すように得られる。
Figure 2014511158
これでコード化を完了し、結果として得られるアレイは以下に示す通りである。
Figure 2014511158
要約すると、上記のアレイは、r行(r=4)×n列(n=5)のページを含む。それぞれの行はt個のパリティ・ページを有し、ここでt>=1である。第1の行はt個のパリティ・ページを含み(t=1)、第2の行はt個のパリティ・ページを含み(t=1)、第3の行はt個のパリティ・ページを含み(t=2)、第4の行はt個のパリティ・ページを含む(t=2)。このコード化により、4行のうちの任意の2行から2個までの消去を回復することができ、残りの2行から1個までの消去を回復することができる。
(1,1,2,2)デコード・プロセスの実施形態
この実施形態では、5列(n=5)および4行(r=4)が存在する。データ・ページは「a」、パリティ・ページは「p」、消去されたページは「e」、未使用ページは「b」、一時ページは「q」または「c」として表される。以下のアレイに示されているように、第1および第3の行では1つの消去が行われ(すなわち、そのページ上のデータが脱落している)、第2および第4の行では2つの消去が行われている。
Figure 2014511158
まず、第1の行の残存ページのXORを取ることにより、第1の行の脱落ページが回復され、第3の行の残存ページのXORを取ることにより、第3の行の脱落ページが回復される。この結果、以下のアレイが得られる。
Figure 2014511158
次に、第1および第3の行の2消去訂正コードの第1のパリティ・ページが得られる(q03およびq23)。
Figure 2014511158
次に、a03+q03およびp23+q23が得られる。前述の通り、p23+q23=c23である。
Figure 2014511158
以下に示すように、垂直2消去訂正コードを使用して、第2および第4の垂直記号が得られる。
Figure 2014511158
次に、q14がq14=(a13+q13)+p14として得られ、q34がq34=c33+p34として得られる。
Figure 2014511158
以下の右側に示されている行を使用する2消去訂正コードを使用して、それぞれの行の2つの消去されたページが回復され、ここで、q33がq33=p33+c33として得られる。
Figure 2014511158
2消去訂正コードを適用した結果は以下に示す通りである。
Figure 2014511158
次に、q13とa13+q13とのXORを取ることにより、a13が得られる。
Figure 2014511158
以下のアレイに示されているように、デコードが完了する。
Figure 2014511158
(1,2,3)コード化プロセスの実施形態
この実施形態では、5列(n=5)および3行(r=3)が存在する。データ・ページは「a」、パリティ・ページは「p」、未使用ページは「b」、一時ページは「q」または「c」として表される。それぞれのページ・タイプの隣の下付き文字はアレイ内のページの位置を表している(たとえば、「a00」は行列内の行0、列0にあるデータ・ページである)。以下のアレイは9個のデータ・ページの位置を示している。
Figure 2014511158
まず、水平3消去訂正コードを使用して、それぞれの行の最初の2つの項目がコード化され、次に、a02とp02とのXORが取られ、a12とp12とのXORが取られる。最終的に、q22は、a02+p02およびa12+p12について1つの消去を訂正する垂直コードのパリティになる。この結果、以下の第2のアレイが得られる。
Figure 2014511158
次に、上記の水平3消去訂正コードを含む水平二重消去訂正コードを使用して、以下の第2のアレイ内のそれぞれの行に示されているqが得られる。この時点でそれぞれの行は2つまでの消去を訂正することができ、第2のアレイ内のそれぞれの列は1つの消去を訂正することができる。
Figure 2014511158
上記のこの2つのアレイについてXORが取られ、以下の結果のアレイが得られるが、その行は2つの消去を訂正できるコードに含まれる。以下のアレイ内のそれぞれの行は、その線形性により、2つまでの消去を訂正することができ、cij=pij+qijと示す。
Figure 2014511158
次に、以下の第2のアレイに示されているように、a03とr03とのXORが取られる。
Figure 2014511158
03+c03は二重消去訂正垂直コードを使用して垂直にコード化され、s13およびs23というラベルはこのような垂直コードに対応するパリティ・ページを示す。
Figure 2014511158
次に、第1のアレイ内に2消去訂正コードを含む1消去訂正コードを使用して、第2のアレイ内のそれぞれの行がコード化される。したがって、第2のアレイ内のそれぞれの列は2つの消去を訂正することができ、それぞれの行は1つの消去を訂正することができる。
Figure 2014511158
次に、これらのアレイについてXORが取られる。その結果の行は以下のアレイに示されるように1消去訂正コードにコード化され、ここで、tij=cij+sijになる。このアレイでは、それぞれの行は、線形性のために、1つの消去を訂正することができる。これでコード化を完了する。
Figure 2014511158
(1,2,3)デコード・プロセスの実施形態
この実施形態では、第1の行に3つの消去、第2の行に1つの消去、第3の行に2つの消去が存在する。
Figure 2014511158
まず、単一パリティを使用して、1つの消去のみを含む行(すなわち、第2の行)が訂正される。
Figure 2014511158
次に、2消去訂正コードにより、第2の行の最初の3つの項目がコード化される。
Figure 2014511158
これらのアレイの両方の中間行についてXORが取られる。したがって、tij+cij=sijになり、ここで、sijはコード化において上記で示された垂直2消去訂正コードの一部である。以下の第2のアレイに示されているように、このような2消去訂正コードを使用して、最後の2列が取り出される。
Figure 2014511158
次に、これらのアレイのXORが取られ、その結果、以下のアレイが得られる。
Figure 2014511158
この時点ですべての行は2つの消去を訂正することができる。したがって、最後の行を訂正することができ、その結果、以下に示すアレイが得られる。
Figure 2014511158
以下の一番下のアレイに示されているように3つのパリティにより、アレイの最後の2行の最初の2つの項目がコード化される。
Figure 2014511158
両方のアレイの最後の2行のXORが取られ、その結果、一番下にある以下のアレイが得られ、qij=cij+pijになる。
Figure 2014511158
それぞれの列は1つの消去を訂正することができ、垂直コードを使用して、第2のアレイ内の一番上から3つの項目が取り出され、その結果、以下のアレイが得られる。
Figure 2014511158
これらのアレイのXORが取られ、その結果、以下のアレイが得られ、そのそれぞれの行はこの時点で3消去訂正コードに含まれる。
Figure 2014511158
次に、第1の行の3つの消去が訂正され、その結果、以下のアレイが得られる。
Figure 2014511158
次に、すべての記号が回復される。第1のステップはこのアレイと上記のアレイとのXORを取ることである。両方のアレイは以下に示す通りである。
Figure 2014511158
この結果、以下の第1のアレイが得られ、次に、そのアレイと上記のアレイから得られる一番下のアレイとのXORが取られる。
Figure 2014511158
以下のアレイに示されるように、これでデコードを完了する。
Figure 2014511158
上記の方式と同様の結果を得るためのもう1つの方法は、同じ量の冗長性を有するRSコードを使用することである。たとえば、上記の(1,1,2)方式の実施形態では、冗長性の総量は4ページである。アレイ内の任意の4つの消去されたページを訂正できる4つの冗長ページを含むリード−ソロモン(RS)コードを実現することは可能である。この観点から見ると、RSコードは本明細書に記載されているコードの諸実施形態より強力である。しかし、特に、この方式で比較的多数の行が存在する場合、典型的な実施形態では16行または32行が存在する場合に、RSコードの複雑さは本明細書に記載されている方式の諸実施形態よりかなり増している。通常使用では、本明細書に記載されている方式は非常にRAID5に類似した動作を行い、それぞれの行の1つの消去から回復する。1行に2つの消去という珍しい事象が発生した場合のみ、本明細書に記載されたコードの能力全体が呼び出される。これに対して、RSは、それぞれの障害ごとにコードの全長を使用する必要がある。このため、その実現例はあまり実用的ではなく、コード化およびデコード・プロセスが非常に複雑なものになる。
技術的な効果および恩恵としては、冗長ディスク・アレイRAID6と同じ保護を提供できるが、保管効率はRAID5に近いものになることである。したがって、一実施形態を使用して、所与の量の冗長性についてストライプ障害に対する保護を最大限にすることができる。
2つの消去を訂正し、全体的なパリティ・チェックを有する対角行コード化(DiRE:Diagonal-Row Encoding)コードのコード化の実施形態
(1,1,2)方式など、本明細書に記載されている方式は、最も長いコードがパリティ・チェック・コードである、ネストされたコードのシステムを含む。したがって、本明細書に記載されているコードは、全体的なパリティ・チェックを有し、より一般的には、ネスティング・プロパティを有する。特に、任意のコードワードのすべての要素のXORはゼロである。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つのストレージ・デバイスのそれぞれからの1ページを表しており、それぞれのページは4つのセグメントに分割されている。最後の行(L4x)は、仮想行(imaginary row)であり、計算のみに使用される。
Figure 2014511158
このアレイの以下の内容を想定するが、ここで値「b」は、その位置に現在、値がないことを示している。
Figure 2014511158
まず、それぞれの対角線のパリティを計算すると、以下のアレイの値が得られる。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によって形成される対角線のパリティである。
Figure 2014511158
次に、パリティ列(列4)のそれぞれの要素と、列4の最後の位置の保管ビット、すなわち、L44=1とのXORが取られる。列4のそれぞれの要素と「1」とのXORを取ることにより、それぞれの対角線が奇数パリティを有する、以下のアレイが得られる。
Figure 2014511158
次に、行のパリティ(この実施形態では常に偶数)を見つけることにより、以下のアレイに示されているように、コード化が完了する。
Figure 2014511158
2消去DiREコードのパリティ・チェック行列の実施形態
BR93に教示されているように、f(x)=1+x+x+・・・+xz−1によって生成される環(ring)について考慮するが、ここでzは素数であり、αは回転モジュロ(rotationmodulo)f(x)とする。この場合、DiREコードに関するパリティ・チェック行列は以下のように示される。
Figure 2014511158
f(x)によって生成された環においてパリティ・チェック行列Hによって定義されるコードは、z=5の場合に上記の実施形態に示されている記述と同等である。
2消去のデコード: 第1のケース、最後の列の消去
このケースはコード化に類似しており、この実施形態は脱落している仮想項目に充填することから始まる。
Figure 2014511158
その結果、以下のアレイが得られる。
Figure 2014511158
次に、対角パリティ・コード化の逆を使用して、第3の列のデコードが実行される。この結果、以下のアレイが得られる。
Figure 2014511158
回復された列(第3の列)の項目と、以下に示されているような第3の列の最後の項目とのXORが取られる。
Figure 2014511158
この結果、以下のアレイが得られる。
Figure 2014511158
以下のアレイに示されているように、水平パリティを計算することにより、デコードが完了する。
Figure 2014511158
デコードされた値は、仮想行なしで、以下のアレイに示す通りである。
Figure 2014511158
2消去のデコード: 第2のケース、最初のz列における2つの消去
この実施形態は脱落している仮想項目を0で充填することから始まる。
Figure 2014511158
この結果、以下のアレイが得られる。
Figure 2014511158
次に、最後の列のパリティが計算され、すなわち、最後の列の1の数が奇数である場合、パリティは1になり、このような数が偶数である場合、パリティは0になる。この場合、最後の列は3つの1を含み、したがって、最後の列のパリティは1になる。このパリティ値1は、以下に示されているようにアレイの最後の行に書き込まれる。
Figure 2014511158
次に、対角パリティ・コード化の逆を使用して、第3の列のデコードが実行される。再帰は、消去された列の1つの最後の項目を通る対角線から始まり、水平に継続される。この結果、以下のアレイが得られる。
Figure 2014511158
デコードされた値は、仮想行なしで、以下のアレイに示す通りである。
Figure 2014511158
z=5の場合に3つの消去を訂正するDiREコードのコード化の実施形態
z=5である場合、アレイは4行×6列を含み、位置は以下のように指定される。最後の行(L4x)は、仮想行であり、計算のみに使用される。
Figure 2014511158
このアレイの以下の内容を想定するが、ここで値「b」は、その位置に現在、値がないことを示している。
Figure 2014511158
この実施形態では、第4の列を入手するために、傾斜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によって形成される線のパリティである。結果のアレイは以下に示す通りである。
Figure 2014511158
次に、第4の列のそれぞれの要素と、このような列の最後の位置の保管ビットとのXORが取られる。このようなビットは0であるので、その列は元のままである。以下のアレイは傾斜2の線による計算されたコード化を反映している。この実施形態では、傾斜2のそれぞれの線は偶数パリティを有する。
Figure 2014511158
これで傾斜2の線のコード化を完了する。上記の前の実施形態のように最後の2列が得られるが、これはコードのネスト性を反映している。デコードされた値は、仮想行なしで、以下のアレイに示す通りである。
Figure 2014511158
3つの消去をデコードするために、BR93で開発された再帰法を使用することができる。4つ以上の消去の場合、パリティ・チェック行列のネストされた表現が拡張される。しかし、4つ以上の消去の場合、コードは必ずしもすべての素数zについてMDSではない。いくつかの素数は、4つのパリティを含むMDSであるコードを提供する(すなわち、4つの消去を訂正することができる)が、いくつかの素数はそうではない。しかし、ほとんどの適用例では、3つのパリティで十分である。最終的に、ネストされた構造は、ガロア域GF(2)内の根であるαによって実施することができる。この場合、この構造は、有限体に関するRSコードのものと非常に似ている。コード化およびデコードは正規のRSコードのケースと同様であり、当業者であれば、ネストされたケースにおいてRS手順を容易に適用できるはずである。
z=5の場合、DiREコードは6以下の長さを有する。それぞれのページは1キロバイト(K)のセグメントに分割することができ、それぞれの1Kセグメントはコードの細分性を規定する。しかし、適用例によっては、6つのデバイスでは少なすぎる場合があり、より長いコードを使用する必要がある可能性がある。典型的なページ・サイズは4Kであるので、細分性が2の累乗であることは都合のよいことであり、したがって、1に2の累乗が加えられると素数が得られると判断される。このような累乗の1つは素数z=17に対応する16である。この場合、18以下の長さのDiREコードが使用され、細分性は256バイト(B)のブロックによって示される。
3消去DiREコードのパリティ・チェック行列の実施形態
3つの消去を訂正するDiREコードに関するパリティ・チェック行列は以下のように示される。
Figure 2014511158
この行列を2消去コードのパリティ・チェック行列の上記の実施形態と比較すると、DiREコードのネストされた構造を理解することができる。実際に、そのパリティ・チェック行列の最後の2行は2つの消去を訂正するコードのパリティ・チェック行列に対応し、したがって、3消去訂正コードが2消去訂正コードにネストされる。同様に、2つの消去を訂正するDiREコードは単一パリティ・コードにネストされる。
コード化式の実施形態
一実施形態は、(z−1)行×最大(z+1)列の寸法を有するアレイに適用され、zは素数である。この実施形態のコードは、最初のz−1列を最後の2列にコード化し、以下の特徴を有する。1.このコードはMDSであり、すなわち、消去された任意の2列を回復することができ、2.このコードはグローバル・パリティ・チェックを有し、すなわち、コード化された任意の行のXORは0であり、3.1および2の特徴の場合、コード化においてXORの数を最小限にし、4.デコードおよびコード化は簡単明瞭である(コード化はデコードの特別なケースである)。
情報ページをai,j、0≦i、j≦z−2で示し、2つのパリティ列をpおよびq、0≦i≦z−2で示す。パリティ列を入手する方法を記述する際に以下の規則を使用する。すなわち、<m>=nはm≡n(mod z)を意味し、0≦n<zである(たとえば、<8>=3)。ここで、
S=az−2−j,jのXOR、j=0〜z−2
とする。
次に、0≦i≦z−2の場合、
=Sとa<i−j−1>z,jのXORとのXOR、j=0〜z−2およびj≠i
=pとai,jのXORとのXOR、j=0〜z−2
である。
q列が全体的なパリティ列であることは注目に値する。
したがって、上記のように、2つまでの消去からの回復を可能にするMDSコードを実現するために上記の計算が使用される。このMDSコードはそれぞれのページをz−1個のセグメント(zは素数である)に分割し、このコードの長さは多くてもz+1である。第1のパリティ・ページpは、(第1のデータ・ページ)XOR(第2のデータ・ページにαを掛けたもの)XOR(第3のデータ・ページにαを掛けたもの)XOR・・・(n−2のデータ・ページにαn−3を掛けたもの)として計算される。この実施形態では、αは次数z−1の上記の多項式の根である。第2のパリティ・ページqは、p XOR(第1のデータ・ページ)XOR(第2のデータ・ページ)XOR(第3のデータ・ページ)XOR・・・(n−2のデータ・ページ)として計算される。
このコードは複数消去に拡張することができる。3つの消去の場合、このコードは引き続きMDSである。その他の場合、選択された素数によって決まる。たとえば、このコードが3つの消去を訂正できる場合、情報は最初のz−2列によって示され、ai,j、0≦i≦z−2、0≦j≦z−3であり、r、0≦i≦z−2とし、パリティ列z−2のページを示す。次に、rは以下のように得られる。ここで、
=a<−5−2j>z,jのXOR、j=0〜z−3
とする。
次に、0≦i≦z−2の場合、
=Sとa<i−4−2j>z,jのXORとのXOR、j=0〜z−3およびi≠<2j+3>
である。
次の2列、pおよびq列は、c列が入手されると、以前のように入手される。
したがって、上記のように、3つまでの消去からの回復を可能にするMDSコードを実現するために上記の計算が使用される。このMDSコードはそれぞれのページをz−1個のセグメント(zは素数である)に分割し、このコードの長さは多くてもz+1である。第1のパリティ・ページcは、(第1のデータ・ページ)XOR(第2のデータ・ページにαを掛けたもの)XOR(第3のデータ・ページにαを掛けたもの)XOR・・・(n−3のデータ・ページにα2(n−4)を掛けたもの)として計算される。この実施形態では、αは次数z−1の上記の多項式の根である。第2のパリティ・ページpは、(第1のデータ・ページ)XOR(第2のデータ・ページにαを掛けたもの)XOR(第3のデータ・ページにαを掛けたもの)XOR・・・(n−3のデータ・ページにαn−4を掛けたもの)XOR(第1のパリティ・ページにαn−3を掛けたもの)として計算される。第3のパリティ・ページqは、(第1のデータ・ページ)XOR(第2のデータ・ページ)XOR・・・(n−3のデータ・ページ)XOR(第1のパリティ・ページc)XOR(第2のパリティ・ページp)として計算される。
デコード式の実施形態
この実施形態は2つの消去を処理するが、3つ以上の消去に拡張することもできる。この実施形態では、消去は列iおよびjで行われ、0≦i<j≦zである。0≦t≦z−2である場合、at,z−1=pおよびat,z=qとする。j=zおよびj<zという2つのケースを区別する。最初のケースj=zについて考慮する。ここで、
S=a<i−1−j>z,jのXOR、j=0〜z−2およびj≠i
とする。
次に、0≦t≦z−2の場合、
t,i=Sとa<t+i−j>z,jのXORとのXOR、j=0〜z−2、j≠i、およびj≠<t+i+1>
t,z=q=at,jのXOR、j=0〜z−1
である。
次に、j<zのケースについて考慮する。ここで、
S=at,zのXOR、t=0〜z−2
とする。
さらに、az−1,m=0、0≦m≦zとする。
次に、0≦L≦z−2の場合、以下の式を計算する。
<−(j−1)(L+1)−1>z,j=Sとa<−(j−1)(L+1)+j−t>z,tのXORとのXOR、t=0〜z−1およびt≠j
<−(j−1)(L+1)−1>z,j=a<−(j−1)(L+1)−1>z,tのXOR、t=0〜zおよびt≠j
本明細書で使用する用語は、特定の実施形態のみを記述するためのものであって、本発明を限定するためのものではない。本明細書で使用する「a」、「an」、および「the」という単数形は、文脈が明らかにそうではない場合を示さない限り、複数形も含むためのものである。「comprises」あるいは「comprising」またはその両方の用語は、本明細書で使用する場合、所定の特徴、整数、ステップ、動作、要素、あるいはコンポーネント、またはこれらの組み合わせの存在を指定するが、1つまたは複数のその他の特徴、整数、ステップ、動作、要素、コンポーネント、あるいはそのグループ、またはこれらの組み合わせの存在または追加を排除しないことがさらに理解されるであろう。
以下の特許請求の範囲内のすべての手段またはステップならびに機能要素に対応する構造、材料、行為、およびそれと同等のものは、具体的に請求されている他の請求要素と組み合わせてその機能を実行するための任意の構造、材料、または行為を含むためのものである。本発明の説明は、例示および解説のために提示されたものであり、網羅するためまたは開示された形式に本発明を限定するためのものではない。多くの変更および変形は、本発明の範囲および精神を逸脱せずに当業者にとって明白なものになる。この実施形態は、本発明の原理および実用的な適用例を最も良く説明するため、ならびにその他の当業者が企図された特定の用途に適した様々な変更を含む様々な実施形態について本発明を理解できるようにするために、選択され記載されたものである。
さらに、当業者によって認識されるように、本発明の諸態様は、システム、方法、またはコンピュータ・プログラム製品として実施することができる。したがって、本発明の諸態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアとハードウェアの諸態様を組み合わせる実施形態の形を取ることができ、いずれも本明細書では一般に「回路」、「モジュール」、または「システム」と呼ぶことができる。さらに、本発明の諸態様は、そこにコンピュータ可読プログラム・コードが実施されている1つまたは複数のコンピュータ可読媒体に実施されたコンピュータ・プログラム製品の形を取ることができる。
1つまたは複数のコンピュータ可読媒体の任意の組み合わせを使用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体にすることができる。コンピュータ可読記憶媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、あるいは上記のものの任意の適切な組み合わせにすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的リスト)としては、1つまたは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光学記憶装置、磁気記憶装置、あるいは上記のものの任意の適切な組み合わせを含むであろう。本明細書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによりあるいはそれに関連して使用するためのプログラムを収容または保管することができる任意の有形媒体にすることができる。
コンピュータ可読信号媒体は、たとえば、ベースバンド内でまたは搬送波の一部として、そこにコンピュータ可読プログラム・コードが実施されている伝搬データ信号を含むことができる。このような伝搬信号は、電磁、光、またはそれらの任意の適切な組み合わせを含むがこれらに限定されない様々な形のうちのいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスによりあるいはそれに関連して使用するためのプログラムを通信、伝搬、または輸送することができる任意のコンピュータ可読媒体にすることができる。
コンピュータ可読媒体上に実施されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、あるいは上記のものの任意の適切な組み合わせを含むがこれらに限定されない任意の適切な媒体を使用して伝送することができる。
本発明の諸態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++などのオブジェクト指向プログラミング言語ならびに「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。プログラム・コードは、完全にユーザのコンピュータ上で、一部分はユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、一部分はユーザのコンピュータ上でしかも一部分はリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行することができる。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを介してリモート・コンピュータがユーザのコンピュータに接続される場合もあれば、(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに接続が行われる場合もある。
本発明の諸態様は、本発明の諸実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図あるいはブロック図またはその両方に関連して上記で記載されている。流れ図あるいはブロック図またはその両方の各ブロックおよび流れ図あるいはブロック図またはその両方内の複数ブロックの組み合わせは、コンピュータ・プログラム命令によって実現可能であることが理解されるであろう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに提供し、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサにより実行された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現するための手段を作成するようなマシンを生産することができる。
また、これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に保管された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現する命令を含む装置(article of manufacture)を生産するような特定の方法で機能するよう、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスに指示することができるコンピュータ可読媒体に保管することもできる。
また、コンピュータ・プログラム命令は、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイス上にロードし、コンピュータまたはその他のプログラマブル装置上で実行された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現するためのプロセスを提供するようなコンピュータで実行されるプロセスを生産するように、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイス上で一連の動作ステップを実行させることもできる。
図面内の流れ図およびブロック図は、本発明の様々な諸実施形態によるシステム、方法、およびコンピュータ・プログラム製品について可能な実現例のアーキテクチャ、機能、および動作を例示している。この点に関しては、流れ図またはブロック図内の各ブロックは、指定の論理機能(複数も可)を実現するための1つまたは複数の実行可能命令を含む、コードのモジュール、セグメント、または一部分を表すことができる。また、いくつかの代替実現例では、ブロック内に示された機能は図面内に示された順序から外れて行われる可能性があることにも留意されたい。たとえば、連続して示されている2つのブロックは、関係する機能次第で、実際にはほぼ同時に実行される場合もあれば、ときには逆の順序で実行される場合もある。また、ブロック図あるいは流れ図またはその両方の各ブロックおよびブロック図あるいは流れ図またはその両方内の複数ブロックの組み合わせは、指定の機能または行為を実行する特殊目的ハードウェアベースのシステムあるいは特殊目的ハードウェアとコンピュータ命令との組み合わせによって実現可能であることも留意されるであろう。

Claims (16)

  1. データを保管するための方法であって、
    書き込みデータを受信することと、
    前記書き込みデータをr行×n列のページに配列し、それぞれのページが複数のセクタを含むことと、
    前記ページ上で複数の水平および垂直消去訂正コードを使用して前記書き込みデータをコード化することであって、第1の行はt個のパリティ・ページを含み、t≧1であり、第2の行はt個のパリティ・ページを含み、t≧tであり、第3の行はt個のパリティ・ページを含み、t≧tであり、t個のパリティ・ページを含み、t≧tr−1およびn>t>tであるr番目の行まで以下同様であり、前記コード化により、前記r行のうちの任意の1行でt個までの消去からの回復が可能になり、残りのr−1行のうちの任意の1行でtr−1個までの消去からの回復が可能になり、残りのr−2行のうちの任意の1行でtr−2個までの消去からの回復が可能になるなど、前記コード化により、最後の残りの行でt個までの消去からの回復が可能になるようになっており、前記コード化からの出力がコード化された書き込みデータを含むことと、
    前記コード化された書き込みデータを、ストレージ・アレイ内のn個のストレージ・デバイス全域にわたって書き込みストライプとして書き込むこと
    を含む、方法。
  2. 前記書き込みストライプ内の任意の行のt個の前記パリティ・ページが、そのデータ・ページが前記行の残りのn−t個のページになる、t消去訂正コードに対応する、請求項1記載の方法。
  3. 前記水平および垂直消去訂正コードのうちの少なくとも1つが最大距離分離可能(MDS)コードである、請求項1または請求項2記載の方法。
  4. 前記MDSコードにより2つまでの消去からの回復が可能になり、前記MDSコードがぞれぞれのページをz−1個のセグメントに分割し、zが素数であり、前記MDSコードの長さnが多くてもz+1であり、
    第1のパリティ・ページが、第1のデータ・ページと、第2のデータ・ページにαを掛けたものと、第3のデータ・ページにαを掛けたものと、第4のデータ・ページにαを掛けたものと、以下同様で、n−2のデータ・ページにαn−3を掛けたものとの排他的論理和(XOR)として計算され、αは次数z−1の多項式の根であり、
    第2のパリティ・ページが、最初のn−2のデータ・ページと、前記第1のパリティ・ページとのXORとして計算される、請求項3記載の方法。
  5. 前記多項式が1+x+x+・・・xz−1である、請求項4記載の方法。
  6. 前記MDSコードにより3つまでの消去からの回復が可能になり、前記MDSコードがぞれぞれのページをz−1個のセグメントに分割し、zが素数であり、前記コードの長さnが多くてもz+1であり、
    第1のパリティ・ページが、第1のデータ・ページと、第2のデータ・ページにαを掛けたものと、第3のデータ・ページにαを掛けたものと、第4のデータ・ページにαを掛けたものと、以下同様で、n−3のデータ・ページにα2(n−4)を掛けたものとのXORとして計算され、αは次数z−1の多項式の根であり、
    第2のパリティ・ページが、第1のデータ・ページと、第2のデータ・ページにαを掛けたものと、第3のデータ・ページにαを掛けたものと、第4のデータ・ページにαを掛けたものと、以下同様で、n−3のデータ・ページにαn−4を掛けたものと、前記第1のパリティ・ページにαn−3を掛けたものとのXORとして計算され、
    第3のパリティ・ページが、前記n−3のデータ・ページと、前記第1および第2のパリティ・ページとのXORとして計算される、請求項3記載の方法。
  7. 前記多項式が1+x+x+・・・xz−1である、請求項6記載の方法。
  8. が2に等しい、請求項1記載の方法。
  9. が3に等しい、請求項1記載の方法。
  10. 前記ストレージ・デバイスが、ハードディスク・ドライブおよびフラッシュ・ドライブのうちの1つである、請求項1記載の方法。
  11. ストレージ・アレイにデータを保管するためのシステムであって、前記システムが、
    複数のストレージ・デバイスを含むストレージ・アレイと、
    請求項1ないし10のいずれかに記載のステップを実行するために構成されたアレイ・コントローラと
    を含む、システム。
  12. ストレージ・アレイにデータを保管するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
    それによりコンピュータ可読プログラム・コードが実施されているコンピュータ可読記憶媒体を含み、前記コンピュータ可読プログラム・コードが、請求項1ないし10のいずれかに記載のステップを実行するために構成されたコンピュータ可読プログラム・コードを含む、コンピュータ・プログラム製品。
  13. ストレージ・アレイ内の消去を訂正するための方法であって、前記方法が、
    複数のn個のストレージ・デバイスから読み取りストライプを受信することであって、前記読み取りストライプがr行×n列に配列された複数ページのブロックを含み、それぞれの列が前記ストレージ・デバイスの1つに対応し、前記ページがデータ・ページとパリティ・ページとを含み、前記パリティ・ページが複数の水平および垂直消去訂正コードを使用して生成され、第1の行はt個のパリティ・ページを含み、t≧1であり、第2の行はt個のパリティ・ページを含み、t≧tであり、第3の行はt個のパリティ・ページを含み、t≧tであり、t個のパリティ・ページを含み、t≧tr−1およびn>t>tであるr番目の行まで以下同様になるようになっていることと、
    前記読み取りストライプが少なくとも1つの消去されたページを含み、前記行のうちの1行が多くてもt個の消去を含み、r−1個の残りの行のうちの1行が多くてもtr−1個の消去を含み、r−2個の残りの行のうちの1行が多くてもtr−2個の消去を含むなど、最後の残りの行がt個の消去を含むと決定するまで、決定することと、
    前記ページのブロックならびに前記水平および垂直消去コードに応答して前記消去されたページを再構築することであって、前記再構築の結果、回復された読み取りストライプが得られること
    を含む、方法。
  14. 前記水平および垂直消去訂正コードのうちの少なくとも1つが最大距離分離可能コードである、請求項14記載の方法。
  15. が2に等しいかまたはtが3に等しい、請求項14記載の方法。
  16. ストレージ・アレイ内の消去を訂正するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
    それによりコンピュータ可読プログラム・コードが実施されているコンピュータ可読記憶媒体を含み、前記コンピュータ可読プログラム・コードが、請求項13ないし15のいずれかに記載のステップを実行するために構成されたコンピュータ可読プログラム・コードを含む、コンピュータ・プログラム製品。
JP2013555955A 2011-02-28 2012-02-10 ストレージ・アレイにデータを保管するための方法、システム、およびコンピュータ・プログラム、ならびにストレージ・アレイ内の消去を訂正するための方法およびコンピュータ・プログラム Active JP5945285B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/036,845 US8433979B2 (en) 2011-02-28 2011-02-28 Nested multiple erasure correcting codes for storage arrays
US13/036,845 2011-02-28
PCT/IB2012/050605 WO2012117309A1 (en) 2011-02-28 2012-02-10 Correcting erasures in storage arrays

Publications (2)

Publication Number Publication Date
JP2014511158A true JP2014511158A (ja) 2014-05-12
JP5945285B2 JP5945285B2 (ja) 2016-07-05

Family

ID=46719850

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013555955A Active JP5945285B2 (ja) 2011-02-28 2012-02-10 ストレージ・アレイにデータを保管するための方法、システム、およびコンピュータ・プログラム、ならびにストレージ・アレイ内の消去を訂正するための方法およびコンピュータ・プログラム

Country Status (7)

Country Link
US (2) US8433979B2 (ja)
JP (1) JP5945285B2 (ja)
CN (1) CN103392172B (ja)
CA (1) CA2817945A1 (ja)
DE (1) DE112012000385B4 (ja)
GB (1) GB2502224B (ja)
WO (1) WO2012117309A1 (ja)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
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
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
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
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
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions 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
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US9047214B1 (en) * 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of 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
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
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
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping 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
JP6117994B2 (ja) 2013-05-29 2017-04-19 株式会社東芝 符号化および復号の方法および装置
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
US9959168B2 (en) 2016-03-04 2018-05-01 Sandisk Technologies Llc ECC and RAID-type decoding
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
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
US10333555B2 (en) 2016-07-28 2019-06-25 Micron Technology, Inc. Apparatuses and methods for interleaved BCH codes
US10404282B2 (en) * 2016-07-28 2019-09-03 Micron Technology, Inc. Apparatuses and methods for integrated interleaved Reed-Solomon encoding and decoding
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0632376A2 (en) * 1993-06-30 1995-01-04 International Business Machines Corporation Encoding and rebuilding the data content of up to two unavailable DASDs in a DASD array
JPH10240453A (ja) * 1997-02-28 1998-09-11 Nec Corp ディスクアレイ装置
US20050114727A1 (en) * 2003-11-24 2005-05-26 Corbett Peter F. Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
US20060129873A1 (en) * 2004-11-24 2006-06-15 International Business Machines Corporation System and method for tolerating multiple storage device failures in a storage system using horizontal and vertical parity layouts

Family Cites Families (35)

* 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
KR930003997B1 (ko) 1983-12-20 1993-05-19 소니 가부시끼가이샤 에러 정정부호의 복호방법 및 복호장치
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
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
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
CN100371892C (zh) 2005-01-21 2008-02-27 华为技术有限公司 一种现场可编程门阵列的加载方法
US7536627B2 (en) 2005-12-27 2009-05-19 Sandisk Corporation Storing downloadable firmware on bulk media
US8046629B1 (en) * 2006-07-24 2011-10-25 Marvell World Trade Ltd. File server for redundant array of independent disks (RAID) system
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0632376A2 (en) * 1993-06-30 1995-01-04 International Business Machines Corporation Encoding and rebuilding the data content of up to two unavailable DASDs in a DASD array
JPH0728710A (ja) * 1993-06-30 1995-01-31 Internatl Business Mach Corp <Ibm> データ・コーディング再生方法
JPH10240453A (ja) * 1997-02-28 1998-09-11 Nec Corp ディスクアレイ装置
US20050114727A1 (en) * 2003-11-24 2005-05-26 Corbett Peter F. Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
JP2007524930A (ja) * 2003-11-24 2007-08-30 ネットワーク・アプライアンス・インコーポレイテッド ディスクアレイ内の2つのディスク故障に対する保護を提供する一様で対称な二重故障訂正技術
US20060129873A1 (en) * 2004-11-24 2006-06-15 International Business Machines Corporation System and method for tolerating multiple storage device failures in a storage system using horizontal and vertical parity layouts

Also Published As

Publication number Publication date
DE112012000385B4 (de) 2020-02-13
DE112012000385T5 (de) 2013-10-10
GB2502224A (en) 2013-11-20
US8433979B2 (en) 2013-04-30
US8918701B2 (en) 2014-12-23
CN103392172A (zh) 2013-11-13
GB2502224B (en) 2014-02-05
US20120331367A1 (en) 2012-12-27
GB201314853D0 (en) 2013-10-02
CN103392172B (zh) 2016-01-20
US20120221926A1 (en) 2012-08-30
CA2817945A1 (en) 2012-09-07
JP5945285B2 (ja) 2016-07-05
WO2012117309A1 (en) 2012-09-07

Similar Documents

Publication Publication Date Title
JP5945285B2 (ja) ストレージ・アレイにデータを保管するための方法、システム、およびコンピュータ・プログラム、ならびにストレージ・アレイ内の消去を訂正するための方法およびコンピュータ・プログラム
JP6153541B2 (ja) 消失エラー訂正符号を用いてストレージ・アレイにデータを格納する方法、システム及びプログラム
US10135465B2 (en) Error correction methods and apparatuses using first and second decoders
US10572345B2 (en) First responder parities for storage array
US9058291B2 (en) Multiple erasure correcting codes for storage arrays
US9081752B2 (en) Redundant disk encoding via erasure decoding
US9037951B2 (en) Data management in solid state storage systems
US8145941B2 (en) Detection and correction of block-level data corruption in fault-tolerant data-storage systems
US9229813B2 (en) Error correction with on-demand parity sectors in magnetic data storage devices
US8166370B1 (en) Efficient RAID ECC controller for RAID systems
JP5723967B2 (ja) ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス
KR101531774B1 (ko) 통합된 데이터 및 헤더 보호를 포함하는 인코드된 데이터의 디코딩
US7188295B2 (en) Method and apparatus for embedding an additional layer of error correction into an error correcting code
JP2013524609A5 (ja)
US20070124648A1 (en) Data protection method
JP2007299393A (ja) 回転する記憶媒体の複数の層にデータを読み書きする方法、プログラム及びデータ記憶装置
KR20220124182A (ko) 저장 시스템에서의 데이터 복구를 위한 인코딩
CN117194095A (zh) 改变纠错配置
WO2017186871A1 (en) Data protection coding technique

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20140912

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140912

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151218

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160527

R150 Certificate of patent or registration of utility model

Ref document number: 5945285

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250