JP6153541B2 - 消失エラー訂正符号を用いてストレージ・アレイにデータを格納する方法、システム及びプログラム - Google Patents

消失エラー訂正符号を用いてストレージ・アレイにデータを格納する方法、システム及びプログラム Download PDF

Info

Publication number
JP6153541B2
JP6153541B2 JP2014555344A JP2014555344A JP6153541B2 JP 6153541 B2 JP6153541 B2 JP 6153541B2 JP 2014555344 A JP2014555344 A JP 2014555344A JP 2014555344 A JP2014555344 A JP 2014555344A JP 6153541 B2 JP6153541 B2 JP 6153541B2
Authority
JP
Japan
Prior art keywords
parity
row
entries
code
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014555344A
Other languages
English (en)
Other versions
JP2015508917A (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 JP2015508917A publication Critical patent/JP2015508917A/ja
Application granted granted Critical
Publication of JP6153541B2 publication Critical patent/JP6153541B2/ja
Expired - Fee Related 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/033Theoretical methods to calculate these checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations

Landscapes

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

Description

本発明は、一般にストレージ・システムに関し、さらに具体的にはストレージ・アレイに対する部分最大距離分離(PMDS:partial−maximum distance separable)消失エラー訂正符号に関する。
コンピュータ・システムは、ストレージ・デバイスのデータ喪失を防止するために、パリティ計算などデータ冗長スキームを用いている。独立ディスクの冗長アレイ(RAID:redundant arrays of independent disks)システムでは、データ値と関連するパリティ値とは、ディスク・ドライブにまたがって分散配置(stripe)される。RAIDシステムは、通常、ハード・ディスク・ドライブ(HDD:hard disk drive)のアレイ中に格納された情報を、ディスク壊損(catastrophic disc failure)から保護するために用いられる。2つのよく使われるRAIDスキームは、単一のディスク壊損から保護するRAID5および二重のディスク壊損から保護するRAID6である。
フラッシュ・デバイスは、大ブロックで電気的に消去して再プログラムできる、固体不揮発性ストレージ・デバイスの一種である。HDDと同様、フラッシュ・デバイスは、媒体を、通常512バイトのセクタに分割する。フラッシュ・デバイスは、セクタを、通常ページ当たり8セクタのページにさらに纏め、各ページは4千バイトまたは4キロバイト(KB:kilobyte)を包含する。各セクタは、いくつかのエラー(通常は単一ビット・エラーであるが、バイト・エラーなど他の可能性もあり得る)を訂正する誤り訂正符号(ECC:error correcting code)によって保護される。よく使われる選択は、ボーズ・チョドーリ・オッケンジェム(BCH:Bose−Chaudhuri−Hocquenghem)符号の、8ビット訂正または15ビット訂正BCH符号などであるが、多くの変形があり得る。HDDにおけるのと同様、フラッシュ・デバイス中のページもハード・エラー(HE:hard errors)による被害を受けることがある。これは、例えば、ページのセクタ中のBCH符号のエラー訂正能力を超過したときに生ずる。BCH符号のエラー訂正能力に対する超過は、HDDと比べると、フラッシュ・デバイスでのほうが起こりやすく、その書き込み耐用寿命の終わり近くのページ、およびそのデータ保持寿命の終わり近くのページの両方として生ずる。しかして、フラッシュ・デバイスにおけるHEの回数は、デバイスに潜在的なHEを残しつつ時間経過とともに増加することが予期し得る。
フラッシュ・デバイスを構成するアレイは、より頻度が高いであろうHEと組み合わさった、込み入った破局的デバイス故障に遭遇し得る。例えば、潜在的なHEがある場合、フラッシュ・デバイス中に格納された情報を保護するためのRAID5の使用が、デバイス故障をもたらすことがある。その結果、所与のデータ・ストライプ(例えば、一単位として読み取られもしくは書き込まれまたはその両方が行われるデータ・アレイ)に対し、RAID5システム中のあるデバイスが、破局的なデバイス故障を被り、且つ何らかの他のデバイスがHEを被ったとき、RAID5システムは、該データ・ストライプ中の情報を回復することができないことになろう。RAID6は、こういったデータを回復することを可能にし得るが、RAID6は、全体が第二デバイスをパリティ専用とすることを必要とし、主な故障がHEである場合、これはコスト高である。
諸実施形態は、ストレージ・アレイ中にデータを格納するための方法、システム、およびコンピュータ・プログラム製品を含む。書き込みデータが受信され、各エントリが少なくとも一つのセクタを含むエントリのm個の行とn個の列とを含むアレイの中に配置される。このアレイにおいて、各行が少なくともr個のパリティ・エントリを有するように、mr+s個の場所がパリティ・エントリに割り当てられる。これらパリティ・エントリは、m個の行それぞれにおける最大r個までの消失エラーおよびデータ・アレイ中の任意の場所のさらなるs個(sはゼロより大きい整数)の消失エラーからの復元を可能にする、部分最大距離分離(PMDS)符号に対応する。これら書き込みデータおよび関連付けられたパリティ・エントリは、ストレージ・デバイスのセットに書き込まれる。
さらなる実施形態は、ストレージ・アレイ中の消失エラーを訂正するための方法およびコンピュータ・プログラム製品を含む。読み取りストライプが複数n個のストレージ・デバイスから受信される。この読み取りストライプは、各コラムがストレージ・デバイスの一つに対応する、m行とn列との中に配置されたエントリのアレイを含む。これらエントリは、データ・エントリ群とmr+s個のパリティ・エントリとを含む。各行は、部分最大距離分離(PMDS)符号に従って、データ・エントリから生成された少なくともr個のパリティ・エントリを包含する。この読み取りストライプが、少なくとも一つの消失エラー・エントリ、多くてもmr+sまでの消失エラー・エントリを含むことと、r+s個より多い消失エラー・エントリを有する行がないことと、が判定される。これら消失エラー・エントリは消失エラーがなかったエントリから再構築され、復元された読み取りストライプが得られる。
本発明の技法を用いてさらなる特徴および利点が実現される。本明細書では、本発明の他の実施形態および態様が詳細に説明され、これらは請求対象の発明の一部と見なされる。本発明の利点および特徴をよりよく理解するため、これらの説明および図面を参照されたい。
単なる例示を目的として、添付の図面を参照しながら、以下に本発明の実施形態(群)を説明する。
ある実施形態による、部分最大距離分離(PMDS)符号を提供するためのシステムのブロック図を示す。 ある実施形態による、ストレージ・システムを示す。 ある実施形態による、符号化ブロックの内容を示す。 ある実施形態による、消失エラー訂正を実施するためのプロセス・フローである。 ある実施形態による、書き込みストライプを符号化するためのプロセス・フローである。 ある実施形態による、読み取りストライプを復号するためのプロセス・フローである。
本発明のある実施形態は、二次元構造を有する消失エラー訂正符号の新規ファミリである。本明細書では、これらの消失エラー訂正符号を、部分最大距離分離(PMDS)符号と言う。本明細書で説明するPMDS符号の実施形態は、破局的故障と少なくとも2つのさらなるハード・エラー(HE)とを、このさらなるHEが一単位(例えば、一つの読み取りデータ・ストライプ、一つの書き込みデータ・ストライプ)として処理されるデータ・アレイ中の同じ行の中に所在する場合であっても、許容(すなわちそれらを復元)することができる。
本明細書で用いる用語「破局的故障」とは、フラッシュ・デバイスなど固体ドライブ(SSD:solid state drive)全体の故障を言う。本明細書で用いる用語「消失エラー訂正(erasure correction)」とは、場所が判明しているエラーを訂正することを言う。消失エラー訂正は「誤り訂正(error correction)」とは異なり、後者は、本明細書では場所が未判明のエラーを訂正することを言う。消失エラーを訂正するには、エラーを訂正するため必要な冗長性の量の約半分を要する。本明細書で用いる用語「ハード・エラー」または「HE」とは、消失エラー(すなわち、場所の判明しているエラー)を言う。
ボーズ・チョドーリ・オッケンジェム(BCH)符号などの誤り訂正符号(ECC)は、訂正の後、フラッシュ・デバイス中の生ビット不良率をより低いレベルに低減する助力となるが、それでも最終的なレベルは、ストレージ・システムに対する目標生ビット不良率よりも高くなり得る。例えば、15ビット訂正BCH符号は、0.001の生ビット不良率を、512バイト(B:byte)セクタを復号した後、2.7e−9の生不良率に低下させることができる。但し、フラッシュ・デバイス中のHEの確率を表すこの生ビット不良率は、典型的なハード・ディスク・ドライブ(HDD:hard disk drive)の不良率よりも実質的に高く、これは、8e−14〜8e−16に分布し得る。より高い不良率は、フラッシュ・デバイスの書き込み耐用寿命の終末近く、並びにデータ保持寿命の終末近くで生じ易い。
ECCの誤り訂正能力を超過すると、この事象が非常に高い確率で検出されることになる。例えば、15ビット訂正BCH符号が実装されていて、15より多いエラーが生じた場合、BCH符号自体がかかる事象を検出する確率が非常に高くなる。いずれの場合も、訂正ミスの確率が1e−26のオーダー近くになることを保証するため、一般には、巡回冗長符号(CRC:cyclical redundancy code)が加えられる。訂正ミスの検出に失敗したBCH符号は、HDDの書き落としまたはトラック外書き込みと症候的には同様である。
ある実施形態では、当該技術分野で既知の任意の多重消失エラー訂正符号が用いられ得る。ある実施形態によって用いられる多重消失エラー訂正符号の一例は、リードソロモン(RS:Reed−Solomon )符号である。RS符号は、当該技術分野では周知であり、複数の消失エラーを訂正するため使うことができる。RS符号は、シンボルに基づいており、これらシンボルのサイズはアプリケーションに依存する。RAIDアーキテクチャに関するRS符号の参考文献については、J.S.Plank著、「A Tutorial on Reed−Solomon Coding for Fault−Tolerance in RAID−like Systems」、Software,Practice & Experience,995〜1012、1997年9月、を参照されたい。
複数の消失エラーの訂正のための効率的な符号の別のファミリが、Blaum−Roth93(BR93)符号により提供され、これは、M.Blaumら著、「New Array Codes for Multiple Phased Burst Correction」、IEEE Transactions on Information Theory、vol.39、pp.66〜77、1993年に記載されている。BR93符号は、ガロア体演算を回避し、代わりに排他的OR(XOR)演算だけを行うので、RS符号よりもより単純な傾向のあるアレイ符号である。
RSおよびBR93符号の両方は最大距離分離(MDS:maximum distance separable)符号である。すなわち、これらは消失エラーを訂正するため、冗長性の最適利用を図る。RSおよびBR93符号は、本明細書で説明する諸実施形態が用いることの可能な多重消失エラー訂正符号の2種類の例である。諸実施形態は、これら2つの符号に限定されるものでなく、一般化EVENODD符号または一般化行−対角符号(RDC:row diagonal code)などの他のファミリの符号も実装することが可能である。
ハード・ディスク・ドライブ(HDD)のアレイと対照的に、SSDのアレイは入り混じった故障モードを呈する。一方では、HDDの場合と同様、破局的なSSD故障がある。他方では、ハード・エラー(HE)があり、これは一般に、HEを包含するセクタにアクセスしようとするまでそれらの存在が分からないという点でサイレントである。この状況は、RAID(独立ディスクの冗長アレイ)型のアーキテクチャにおける復元作業を困難にしている。例えば、RAID5アーキテクチャで破局的SSD故障が生じたと仮定する。復元は、無事なデバイス各々中の対応するセクタに「排他論理和演算を行う」(XOR演算を行う)ことによって故障したデバイスの各セクタを再構築することから開始される。しかしながら、HEも被っている行がある場合、かかる行は故障した2つのセクタを有することになる。RAID5は、かかる事象からの復元はできないので、データ喪失が生じることになる。
上記の状態に対する可能な対処策は、RAID6型のアーキテクチャを用いることであり、この型ではパリティのために2つのSSDが使われる。RAID6アーキテクチャは、一行中の2つの消去されたセクタの復元を可能にする。しかしながら、かかる対処策は浪費的である。というのは、これは、HEからの保護を行うために追加の全体デバイスを必要とするからである。本明細書で説明するPMDS符号の実施形態は、パリティ専用の第二のSSDの必要なしにHEを取り扱えるようにすることによって、RAID5とRAID6との中間の対処策を提供する。
破局的故障とHEとが混在するこの環境を取り扱うために、情報をSSD中に書き込むやり方を考慮に入れる。情報をSSD中に書き込むこのやり方は、HDDの中に情報が書き込まれるやり方とは全く異なる。SSDにおいて、新規書き込みは、最初にいくつかの連続するセクタを消去するステップと、その後それらの全てに再書き込みをするステップとを含む。したがって、SSDのアレイ中の短い書き込みオペレーション(例えば、一度に一セクタ)はここでの要諦ではない。新規書き込みが行われるたびに、各SSD中の、例えばM個のセクタのデータ・ストライプが消去され次いで再書き込みされる。この場合、パリティは、新規書き込みの一部として再計算される。本明細書での説明では、ストレージ・アレイは、次々に反復される「m×n」のストライプ(「n」はSSDの数)で構成されていると仮定している。各m×nのストライプは、独立した単位であり、各ストライプに対するパリティは、本明細書で説明される諸実施形態に従って計算されることになる。さらに、各新規書き込みは、いくつかのm×nストライプを書き込むステップを含む(この数は、使われるアプリケーション、個別のSSD、および他のファクタ如何によっては、一にすることもできる)。本明細書で説明する、PMDS符号のファミリの実施形態は、破局的な故障とHEとの同時訂正を可能にする。
図1は、ある実施形態による、PMDS符号を用いて保護されるシステム100のブロック図を示す。図1に示されるように、ホスト・コンピュータ102は、ストレージ・システム110中のアレイ・コントローラ104と通信している。ストレージ・システム110は、ストレージ・デバイス0(106a)、ストレージ・デバイス1(106b)、ストレージ・デバイス2(106c)からストレージ・デバイスn−1(106d)までのn個のストレージ・デバイス106(nは1より大きい)で構成されるストレージ・アレイ108中にデータを格納する。ある実施形態において、パリティ・ビットは、ホスト・データ(例えば、データ・ビットとして表される)と共にストレージ・デバイス106中に格納される。一実施形態において、ストレージ・アレイ108中のストレージ・デバイス106は、フラッシュ・デバイスなどのSSDによって実装される。ある実施形態において、このアレイは、各デバイスが32ギガバイト(GB:Gigabyte)のストレージ容量を有する5つのフラッシュ・デバイスで構成される。図1に示されるように、アレイ・コントローラ104は、ストレージ・システム110の一部であり、別の実施形態では、アレイ・コントローラ104は、ホスト・コンピュータ102の一部である。
図2は、ある実施形態による、図1のストレージ・システム110を示す。ストレージ・システム110は、当業者には周知のように、レシーバ、トランスミッタ、およびクロックなど他の数々のエレメントを含み得るが、これらは簡明化のため図示されていない。図2に示されるように、アレイ・コントローラ104は、エンコーダ202およびデコーダ204を含む。エンコーダ202は、書き込みプロセスの過程で、一つ以上の書き込みデータのビット群を(例えば、ホスト・コンピュータ102から)受信し、書き込みストライプを生成するために用いられ、書き込みストライプは、データ・エントリおよびパリティ・エントリの両方を含む。各エントリは、「b」個のビットを含み、一つ以上のページ、一つ以上のセクタ、もしくは一つ以上のシンボルまたはこれらの組み合わせに相当し得る。ある実施形態において、書き込みストライプは、ストレージ・アレイ108中に書き込まれ、該ストレージ・アレイ108中の複数の行にまたがる。デコーダ204は、読み取りプロセスの過程で、ストレージ・アレイ108から一つ以上のデータ・エントリを読み取るために用いられる。あるエントリ中に一つ以上のHEが検出されると、デコーダは、ストレージ・アレイ108から、HE(群)が検出されたストライプ全体を読み取る。デコーダ204およびエンコーダ202の両方は、共用データ(例えば、エンコーダ202が、書き込みストライプを生成するために、書き込みエントリに適用した符号化の型を識別するためのデータ)へのアクセスを有する。読み取りストライプはパリティ・ビットを包含し、これは読み取りデータを生成するためにデコーダ204によって除去される。デコーダ204は、少なくとも一つのデータ・エントリの読み取り不良が発生したときに使われる、リコンストラクタ206を含む。読み取り不良は、例えば、あるエントリの内部ECCの誤り訂正能力が超過されたときに発生する。通常、エラーのあるエントリの場所は分かっており、しかして、エラーの場所(例えば、消失エラー・エントリの場所(群))および読み取りストライプがリコンストラクタ206に送信され、該リコンストラクタが消失エラー・エントリを回復しようと試みる。
図3は、複数のストレージ・デバイス106にまたがって格納されるデータ・アレイの内容を示す(本明細書では、このデータ・アレイを「ストライプ」とも言う)。データ・アレイは、エンコーダ202によってPMDS符号を用いて一単位として符号化されている。本明細書で用いる用語「符号化ストライプ」とは、一緒に書き込みストライプを構成し、一ユニットとしてPMDS符号を使って符号化されるエントリの一群を言う。本明細書で用いる用語「復号ストライプ」とは、一緒に読み取りストライプを構成し、一ユニットとしてPMDC符号を使って復号されるエントリの一群を言う。
図3に示されたデータ・アレイは、m行とn列とに配置されたエントリを含む。各エントリ・タイプに添えられている下付き記号は、データ・アレイ中のそのエントリの位置を表す(例えば「a00」はデータ・アレイ中の行0、列0にあるエントリである)。ある実施形態において、各列は、ストレージ・デバイスの一部分を表す。図3に示されたストライプにおいて、各エントリは、フラッシュ・メモリ・デバイス中のメモリ・セル内に格納された「b」個のシンボルを表す。本明細書では、説明目的のためにbのシンボルの各々が一ビットであると仮定しているが、実際上はもっと大きなシンボルにされることになろう。エントリ読み取り不良が生じたことを検出し、いずれかの消失エラー場所を識別するため、ECC(例えばBCH)もしくはCRCまたはその両方が用いられると仮定する。本明細書で説明する諸実施形態は、読み取り不良を識別するために使われた方法の如何にかかわらず、かかる読み取り不良がレポートされたことを仮定している。
ある実施形態において、デコーダ204は、図3に示された仕方で符号化されたストレージ・アレイ108から、一つ以上のエントリでHEを被った読み取りストライプを受信する。ある実施形態において、デコーダ204に配置されたリコンストラクタ206によって、HEからの復元が行われる。
ある実施形態によれば、アレイ中の各行は、その行中のr個のどの消失エラーも復元されるようなやり方で、r個のパリティ・エントリによって保護されている。すなわち、データ・アレイの各行は、[n,n−r,r+1]MDS符号を構成している。さらに、アレイには、「s」個の全体用の追加パリティが加えられる。このs個の追加パリティは、データ・アレイ中に多様な方途で配置することができるが、説明の簡明化のため、本例ではこれらは最後の行に配置される。全体用ということは、これらのパリティが、データ・アレイ中の全「mn」エントリに影響を与えることを意味する。例えば、下記の4×5のデータ・アレイの事例では、r=1、s=2であり、最後の行に2つの追加の全体用パリティが配置されている。「D」はデータ・エントリを示し、「P」はパリティ・エントリを示す。
D D D D P
D D D D P
D D D D P
D D P P P
上記のデータ・アレイを参照し、一つの破局的な故障が発生し(すなわち、データ・アレイ中のある列全体が故障した)、それに加えてデータ・アレイ中のどこかに2以下のHEがある、と仮定しよう。本明細書で説明するPMDSが、これらの故障(本明細書では消失エラーとも言う)を訂正することになる。この状態を、下記のデータ・アレイで例示する。左側のアレイでは、相異なる行で2つのさらなるHEが生じている。右側のアレイでは、同じ行で2つのさらなるHEが生じている「F」は故障を示し、「N」故障のないことを示す。
N F N F N N N N F N
N N N F N N N N F N
N N N F F F N N F F
N N N F N N N N F N
この問題を解決する一つのアプローチは、MDS符号を用いることである。この4×5のデータ・アレイの例では、合計6つのパリティ・エントリがある。したがって、6つのパリティ・エントリを備えた20のエントリ(例えば、シンボル)に、MDS符号を実装することが可能である。そこで、[20,14,7]MDS符号(RS符号と同様)を実装することができる。このアプローチにおける問題は、その複雑さである。一実施形態において、このMDS符号は[20,14,7]RS符号である。データ・アレイ中の行の数であるmが4であるこの事例は、例示目的のためだけに提示されている。アプリケーション中でもっと一般的なmの値は16または32であり、これは18または34のパリティ・エントリをもたらすことになろう。かかる符号の実装は、実行可能ではあるが複雑である。符号ベースでは、通常のオペレーションにおいて、RAID5の場合における単一パリティのように、その根底となる、行に基づくRAID構造を用いることが望ましい。追加のパリティが実際に使われるのは比較的まれである。本明細書で説明するPMDS符号の諸実施形態は、根底にあるRAID構造を用いるために水平符号を有するという制約に適合する。RAID5プラス2つの全体用パリティの例の場合において、あるPMDS符号は、最大で、行あたり一つの消失エラーに加え、任意の場所における2つの消失エラーまでを訂正することができる。しかして、本PMDS符号は、前述のデータ・アレイ中に表された故障および無故障を示す状態のいずれをも訂正することが可能である。
PMDS符号のある実施形態は、定義1において以下のように定義される
定義1.
Figure 0006153541
を、各行が[n,n−r,r+1]MDS符号に符号化された、m×nのデータ・アレイとし、さらに、s個のパリティ・シンボルがそのアレイに追加されているものとする。
Figure 0006153541
が、行あたりr以下の消失エラーを訂正するのに加え、アレイ中の任意の場所のs個の消失エラーを訂正することができれば、
Figure 0006153541
は、(r,s)PMDS符号である。
定義1に定義された符号
Figure 0006153541
は二次元符号である。これらのエントリは、行単位で水平方向に読み取られ、この符号が[mn,m(n−r)−s]線形符号であると仮定されている。以下に、諸符号の実際の構築を、それらのパリティ検査マトリックスに基づいて説明するものとし、これらのマトリックスは(mr+s)×mnのマトリックスである。
図4は、ある実施形態による、デコーダ204によって実行されるプロセス・フローを示す。ブロック402で、ECCもしくはCRCまたはその両方が、あるエントリの読み取りが失敗したことを検出する。ブロック404で、読み取りに失敗したエントリを包含するストライプ中のエントリの全てを読み取る要求が送信される。ブロック406で、読み取りに失敗したエントリ(群)の場所(群)(すなわち、消失エラー・エントリの場所(群))と共に読み取られたストライプが、リコンストラクタ206に送信される。ブロック408で、読み取られたストライプ中の消失エラー・エントリの場所の数が、当該スキームの消失エラー訂正能力を上回っているかどうかが判定される。例えば、もし、各行で一つの消失エラーを復元でき2つの全体用パリティを有する符号が実装されており、ブロック408で、一つの列全体に併せ3つのさらなるエントリが消失していることが見出されれば、これはPMDS符号の消失エラー訂正能力を超過している。ブロック408で、読み取られたストライプ中の消失エラー・エントリの場所の数がPMDSスキームの能力を上回ると判定された場合、ブロック414が実行され、デコーダ204にエラー状態が返される。ブロック408で、消失エラー・エントリの場所の数がPMDSスキームの能力内であると判定された場合、ブロック410が実行される。ブロック410で、読み取られたストライプが、本明細書で説明するPMDS消失エラー訂正符号の実施形態を用いて再構築される。ブロック412で、リコンストラクタ206は、復元された読み取りエントリ(群)を含む復元済み読み取りストライプをデコーダ204に出力する。
図5および図6は、典型的な符号化理論によるエンコーダおよび消失エラー・デコーダを表す。消失エラー復号において、符号化は復号の特殊なケースであり、消失エラー解決には、シンドローム計算に続き、発生した消失エラーの数と等しいいくつかの方程式を用いて線形システムを解くことが必要となる。該シンドロームは、本明細書で後記するパリティ検査マトリックスから計算され、消失エラーが当該符号の消失エラー訂正能力内であれば、システムは常にある解を有する。
図5は、ある実施形態による、書き込みストライプを符号化するためのプロセス・フローである。ある実施形態において、図5に示されたプロセス・フローは、m×nのデータ・アレイを、r個の破局的エラーおよび「s」のさらなるエラーから保護するために、エンコーダ202によって実施される。ブロック502で、「n」の列(例えば、フラッシュ・デバイス)および「m」の行があると仮定される。さらに、最初のm−1個の行中の最初のn−r個の列中のエントリ、およびm番目の行の最初のn−r−s個のエントリが、データ・エントリ(または情報エントリ)を包含するように仮定される。残りのエントリは空白であり、本明細書において後で説明するようにPMDS符号を使って符号化されることになる。ブロック504で、最初のm−1の行は、[n,n−r]MDS符号を使って符号化される。ある実施形態において、各行に対する結果が、対応する行の最後のn−rエントリ中に格納される。ブロック506で、最後の行が、本明細書において後で説明するように、パリティ検査マトリックスに基づく線形システムを解くことによって符号化される。ある実施形態において、これらの結果は、データ・アレイの最後の行、行m−1中の最後のn−r−s個のエントリ中に格納される。
図6は、ある実施形態による、書き込みストライプを復号するためのプロセス・フローである。ある実施形態において、図6中に示されたプロセスは、m×nのデータ・アレイに対してデコーダ204によって実施される。ブロック602で、各々が最大r+s(1≦j≦t)までの消失エラーを有する「t」個の行があり、残りの行中に最大r個までの消失エラーがあると仮定される(sの総和がs)。ブロック604で、最大r個までの消失エラーを有する行が、一つ以上の[n,n−r]MDS符号を使って訂正される。ブロック606で、本明細書において後で説明するように、各々が最大r+sまでの消失エラーを有する「t」の行が、パリティ検査マトリックスに基づき、シンドロームを計算して線形システムを解くことによって訂正される。
以下は、PMDS符号の諸実施形態に対する符号構築の説明、および消失エラー訂正符号がPMDS符号であるための一般条件の説明である。さらに、選択されたアプリケーションに対するPMDS符号の具体的な実施形態も説明する。
符号構築
前述したように、各エントリはb個のビットで構築される。ある実施形態において、各エントリは環(ring)中にあると仮定される。この環は、次数bの多項式f(x)で定義される。すなわち、(次数b−1以下の多項式群として取られた)環中の2つの要素の積は、f(x)による両要素の積の留数である(f(x)が既約(irreducible)の場合、環はガロワ体GF(2)となる)。aをこの環を定義する多項式f(x)の根とする。f(x)の指数は(e(f(x))と示され、これはaの指数である。すなわち、
Figure 0006153541
f(x)が原始多項式(primitive)の場合は、e(f(x))=2−1となる。
適用において重要となる特殊なケースは、f(x)=1+x+・・・+xp−1(pは素数)である。この場合、e(f(x))=p であり、f(x)は既約でないことがある。事実上、GF(p)中で2が原始元(primitive)のとき且つそのときに限り、f(x)が既約であることを証明するのは難しくない。しかして、p−2以下の次数の多項式モジュロ1+x+・・・+xp−1は環を構成し、一般には体(field)ではない。この環はブルームロス(BR)符号の構築に使われており、本明細書の諸実施形態で説明するように、f(x)は既約であるか、もしくはf(x)=1+x+・・・+xp−1(pは素数)であると仮定される。一般的構築は以下のとおり定義される。
構築(Construction)1.
f(x)は既約であるか、もしくはf(x)=1+x+・・・+xp−1(pは素数)である場合の、二元多項式モジュロf(x)を考察する。mn≦e(f(x))とする(ここでe(f(x))はf(x)の指数を表す)。
Figure 0006153541
を、その(mr+s)×mnパリティ検査マトリックスが、
Figure 0006153541
である符号とする。式(2)で与えられたマトリックスH(n,r,i,j)中の各行は前の行の平方である。該マトリックスは、ランクにより距離(metric)が与えられた符号を構築し、列上で符号化でき行上で復号できる符号を構築し、微分MDS符号を構築するために、当該技術分野で使われている。
以下の例1は構築1を例示するものである。
例1.
m=3およびn=5とすると、次式のようになる
Figure 0006153541
構築1は、環または体を定義する特定のパラメータおよび多項式関数(すなわち、f(x))に対するPMDS符号を提供する。受信されたエントリは、
Figure 0006153541
で表され、その消失エラー・エントリは0に等しい。最初のステップはrm+s個のシンドロームの計算である。
Figure 0006153541
符号に対し、式(1)で与えられたパリティ検査マトリックス
Figure 0006153541
を用いて、以下の式のシンドロームが得られる。
Figure 0006153541
r=1の場合.
以下の式はr=1の場合の表現式(description)であり、復号のためどのようにシンドロームを用いるか、および、
Figure 0006153541
符号がPMDSであるかどうかを判定するための表現式である。式(1)で与えられた下記パリティ検査マトリックスは、
Figure 0006153541
Figure 0006153541
として表される。整数s≧0に対し、
Figure 0006153541
と仮定する。
Figure 0006153541
は、行i(0≦i<i<・・・<i≦m−1)中に最大s+1までの消失エラーがある毎に(s+1,s+1,・・・,s+1)‐消失エラー訂正をしており、かかる消失エラーを訂正することが可能である。なお、定義1によれば、
Figure 0006153541
が、整数s≧1の各選択に対し(s+1,s+1,・・・,s+1)−消失エラー訂正のとき且つそのときに限り、
Figure 0006153541
はPMDSであり、sは次式となる。
Figure 0006153541
以下の補助定理は、
Figure 0006153541
が(s+1,s+1,・・・,s+1)−消失エラー訂正として特性化される際に定義される。
Figure 0006153541
Figure 0006153541
補助定理1および補助定理2の組み合わせにより以下の定理が得られる。
Figure 0006153541
定理1は、構築1により与えられた下記符号
Figure 0006153541
がPMDSかどうかを判定するための検査の条件を提供するが、それ自体は、PMDS符号のいかなるファミリも提供しない。多項式モジュロf(x)=1+x+・・・+xp−1の環(pは素数であり、mn<p)を考察する。f(x)が既約であり、環が体となる(等価に、2がGF(p)中の原始元である)ケースがある。なお、定理1における多項式は、最大mn−1<p−1=deg(f(x))までの次数を有する。したがって、f(x)が既約の場合、かかる全ての多項式はf(x)に相対的に素(relatively prime)であり当該符号はPMDSである。このことは下記定理2として述べられ、これはPMDS符号のファミリを提供する(既約多項式f(x)=1+x+・・・+xp−1の数が無限かそうでないかは分かっていない)。
定理2.
構築1で与えられた符号
Figure 0006153541
について、pが素数であり、f(x)が既約である(または、等価に2がGF(p)中の原始元である)、要素群モジュロf(x)=1+x+・・・+xp−1の体について考察する。このとき、下記の符号はPMDSである。
Figure 0006153541
ここまで、s個の一般的な値を使って説明してきた。以下の記述では、適用のため重要となり得る特殊なケースについて説明する。
Figure 0006153541
Figure 0006153541
は、常にPMDSである。というのは、定理1によって、1≦j≦n−1に対する、型1+xの2項式とf(x)とは相対的に素だからである。このことは、f(x)が既約の場合確かであり、pが素数であるf(x)=1+x+・・・+xp−1且つf(x)が既約である場合も真である。この結果は、定理3として述べられる。
定理3.
Figure 0006153541
は常にPMDSである。
Figure 0006153541
このケースは、特にSSDのアレイに対する適用において重要である。
Figure 0006153541
がPMDSなので、定理1によりs=2の場合に対し次の定理が与えられる。
Figure 0006153541
このケースは適用において重要なので、この復号(符号化はその特殊なケースである)についてここである程度詳しく説明するが、他のケースも同様に処理できる。PMDS符号
Figure 0006153541
を考察すると、これは定理4の条件を満たしている。一般性を失うことなく、同一の行i中に3つの消失エラーがあるか、もしくは相異なる行iおよびi中に消失エラーの2つのペアがあると仮定する(ここで0≦i<i≦m−1)。最初に、同一の行i中に3つの消失エラー、すなわち行iのエントリj、j、およびj(0≦j<j<j)に消失エラーが発生した場合を考察する。最初に、式(3)および式(5)(式(4)はr>1に対してだけ使われる)を用いて、
Figure 0006153541
を仮定すれば、以下のシンドロームが計算される。
Figure 0006153541
式(1)で与えられたパリティ検査マトリックス
Figure 0006153541
を使って、次の線形システムが解ける。
Figure 0006153541
Figure 0006153541
Figure 0006153541
Figure 0006153541
当業者ならよく理解しているように、これら要素
Figure 0006153541
は、例えば、BlaumおよびRothの米国特許第5,321,246号、「Method and Means for Coding and Rebuilding the Data Contents of Unavailable DASDs or Rebuilding the Contents of a DASD in Error in the Presence of a Reduced Number of Unavailable DASDs in a DASD Array」に記載された方法を使って、多項式モジュロ1+x+・・・+xp−1(pは素数)の環に、効率的に反転可能である。
符号化は復号の特殊なケースである。例えば、2つの全体用パリティが、図3に示されたアレイ中の場所(m−1,n−3)および(m−1,n−2)に配置されていると仮定する。単一のパリティを使い0≦i≦m−2に対するパリティai,n−1を計算した後、上記の方法を用いてam−1,n−3、am−1,n−2およびam−1,n−1が計算される。具体的には、このバンデルモンド行列式は、以下のとおりになる。
Figure 0006153541
したがって、符号化のため反転が必要なのは、
Figure 0006153541
のみであり、多くの演算は事前計算が可能であるので、符号化が非常に効率的になる。
もう一つのケースは、行iおよびi(0≦i<i≦m−1)中に消失エラーの2つのペアがある場合である。この例において、消失エラーの生じたエントリは、
Figure 0006153541
であると仮定する。再度、パリティ検査マトリックス
Figure 0006153541
を使い、4つの未知値を持つ4つの方程式の線形システムが解かれる。
Figure 0006153541
この線形システムを解くために、次の行列式が反転される。
Figure 0006153541
行演算によって、この行列式が、以下の行列式にaの累乗を乗じたものに等しいことが分かる。
Figure 0006153541
なお、この行列式は2×2のバンデルモンド・マトリックスに相当し、これは次式と等価である。
Figure 0006153541
前述したように、この最後の式は、環モジュロf(x)=1+x+・・・+xp−1(pは素数)の場合、反転は容易である。但し、
Figure 0006153541
の反転は、上記の二項式
Figure 0006153541
を反転するようにきれいにはいかない。
Figure 0006153541
は、定理4によって相対的に素なので、
Figure 0006153541
は、ユークリッドの互除法を使って反転される。
これは、いくらかの計算時間がかかるが、頻繁に行われる演算ではない。これが使われるときは、一般には、破局的故障によって既にパフォーマンスは落ち込んでいる。
以下は、いくつかの具体的なPMDS符号
Figure 0006153541
の解析である。最初に、有限体GF(2)を考察する。下記の表1は、値bと、既約多項式f(x)(8進法で)と、指数e(f(x))と、値mおよびnとを含み、これらに対し、符号
Figure 0006153541
は、定理4によりPMDSである。このリストは、符号がPMDSである場合の全ての可能な値を網羅することは意図されていない。
Figure 0006153541
次に、多項式モジュロf(x)=1+x+・・・+xp−1の環(pは素数であり、mn<e(f(x))=p)を考察する。f(x)が既約である場合は定理2によって解けるので、この場合は、f(x)が既約でない、すなわち、環が体でないと仮定する。この環は、BR符号に対して考慮された。なぜなら、これは、有限体のケースの場合のようにルックアップ・テーブルを使わずに、大きなサイズのシンボルに対し、消失エラーの効率的な訂正を可能にするからである。mおよびn(mn<p)の色々な値に対し、定理4の全てのあり得るケースをチェックする必要がある。
その結果を下記の表2に示している。この表は、f(x)が既約となる(したがって、2はGF(p)中の原始元ではない)17から257までの素数のリストを、mおよびnのいくつかの値と当該符号がPMDSかどうかの否応と共に提供するものである。かかる素数のほとんどに対し、その符号はPMDSである。例外は、31、73、および89だけである。89の場合は特に興味深い。というのは、m=8且つn=11、およびm=n=9に対して符号がPMDSでないからである。しかしながら、m=11且つn=8に対して符号はPMDSであり、このことは、符号がPMDSであることは、選択された多項式f(x)だけでなく、mおよびnにも依存するという事実を示している。
Figure 0006153541
Figure 0006153541
奇数の和としてs=3を得るための2つのやり方がある。一つは3自体であり、他方は1+1+1である。次いで定理1に基づくと、定理5は以下のとおりである:
Figure 0006153541
しかして、符号
Figure 0006153541
がPMDSであるかどうかを検査するため、最初に、
Figure 0006153541
が、上記の表1および表2に示されたケースと同様に、PMDSかどうかの判定が行われる。次いで、定理5の式(8)および(9)が満たされているかどうかを調べるための検査が行われる。例えば、表1中の符号は
Figure 0006153541
であるが、定理5の式(9)はかなり制限的でエントリのほとんどは
Figure 0006153541
に合致しない。しかしながら、表2では、
Figure 0006153541
である符号のいくつかが、
Figure 0006153541
でもある。これらの結果は、下記の表3に示されており、この表は、素数17、43、89、127、151、241、および257、並びに(m,n)=(11,8)の89に対して、符号が
Figure 0006153541
であったにもかかわらず、これらが
Figure 0006153541
ではないことを示している。
表3は、GF(p)中の2が原始元でないpの値、および下記のいくつかの符号を示している。
Figure 0006153541
Figure 0006153541
Figure 0006153541
前の解析と同様に、s=4は全てのあり得る奇数の和として表されている。これを行うやり方には、4=1+3、4=3+1、および4=1+1+1+1+1の3つがある。次いで、定理1に基づくと、定理6は以下のとおりである:
Figure 0006153541
Figure 0006153541
に対する制限条件を次に考察する。近年の符号は、消失した一つの列と、2つ以下のエラーを有する1つの行または各一つ以下のエラーを有する2つの異なる行と、を復元できるように構築されている。符号化の観点からは、5消失エラー訂正および(3,3)消失エラー訂正の両方を行う
Figure 0006153541
がこれを達成する(これらの条件は近年の符号よりも実際に強力である。というのは、これらは消失エラーのあった列の情報を必要とせず、消失エラーが行のどこにあってもよいからである)。なお、定理2によれば、
Figure 0006153541
は、任意の1≦l<l<l≦n−1に対し、式(8)が成立するとき且つそのときに限り、5消失エラーを訂正する。また、定理2によって、
Figure 0006153541
は、任意の1≦i≦m−1および0≦l1.0<l1.1≦n−1、0≦l2.0<l2.1≦n−1に対し、式(7)が成立するとき且つそのときに限り、(3,3)消失エラーを訂正する。式(7)は、まさしく、
Figure 0006153541
が定理4によってPMDSになるための条件である。これは以下の補助定理をもたらす。
Figure 0006153541
表2に示されるように、
Figure 0006153541
がPMDSであるm、nおよびpの値に対し、式(8)が成り立つ。したがって、補助定理3によって、かかる素数pに対し、
Figure 0006153541
は、5消失エラー訂正および(3,3)消失エラー訂正の両方を行う。
Figure 0006153541
これまで、r=1のケースを説明してきた。r=s=1であれば、前述したように符号はPMDSである。以下は、r>1の場合の検証である。しかして、行i(0≦i≦m−1)は、場所0≦j<j<・・・<j≦n−1にr+1の消失エラーを有すると仮定する。以下の定理7は、符号がPMDSであるための条件を与える。
Figure 0006153541
Figure 0006153541
は、前述したようにPMDSである。しかして、定理7により、
Figure 0006153541
もPMDSである。式(13)により、
Figure 0006153541
は、任意の1≦l<l<l≦n−1且つr=3に対し、式(8)が成立するとき且つそのときに限り、PMDSである。
Figure 0006153541
Figure 0006153541
がPMDSであるためには、該符号は4消失エラー訂正および(3,3)消失エラー訂正の両方を行う必要がある。前述したように、
Figure 0006153541
は、任意の1≦l<l<l≦n−1に対し、式(8)が成立するとき且つそのときに限り、4消失エラー訂正を行う。また、前述したように、これは、
Figure 0006153541
がPMDSであるというのと等価である。
Figure 0006153541
が(3,3)消失エラー訂正を行うための条件を検証することによって、定理8が得られる。
Figure 0006153541
別の構築
以下は、前述した構築1とは別の、PMDS符号構築の実施形態の説明である。
構築2.
二元多項式モジュロf(x)を考察する。ここで、f(x)は既約であるかもしくはf(x)=1+x+・・・+xp−1であり、pは素数である。mn≦e(f(x))とする。
Figure 0006153541
を、その(mr+s)×mnのパリティ検査マトリックスが次式である符号とする。
Figure 0006153541
次いで、構築2をいくつかの例を用いて説明する。第一例ではm=3且つn=5である。このとき:
Figure 0006153541
Figure 0006153541
の2つは一致することに留意されたい。以下はいくつかの特殊なケースの解析である。
Figure 0006153541
Figure 0006153541
が(r+1)の消失エラー訂正を行う条件を、以下に検証する。式(14)で定義された下記パリティ検査マトリックスを用いれば、
Figure 0006153541
Figure 0006153541
は、任意の0≦i≦m−1および任意の1≦j<j<・・・<jに対し、バンデルモンド行列式
Figure 0006153541
が反転可能であるとき且つそのときに限り、(r+1)消失エラー訂正を行う。f(x)が既約の場合、以下のようになるので、
Figure 0006153541
Figure 0006153541
は反転可能である。f(x)=1+x+・・・+xp−1(pは素数)且つf(x)が既約の場合も、
Figure 0006153541
は反転可能である。これにより定理9が得られる。
Figure 0006153541
Figure 0006153541
以下の定理が成立する。
Figure 0006153541
f(x)=1+x+・・・+xp−1(pは素数)を考察する。2がGF(p)の原始元である場合の全てのp(p=227まで)を検定した(すなわち、f(x)は既約である)中で、全てのインスタンスにおいて式(16)および式(17)により与えられるマトリックスは反転可能であった。これにより補助定理4が得られる。
補助定理4.
構築2によって与えられる符号
Figure 0006153541
について、要素群の体モジュロf(x)=1+x+・・・+xp−1(pは素数であり、f(x)が既約である(または、等価に2がGF(p)中の原始元である))を考察する。このとき、19≦p≦227に対し、下記の符号は、PMDSである。
Figure 0006153541
2がGF(p)中の原始元でないときのpの値に対し、mおよびnの色々な値に対するいくつかの結果を表4に示す。この表は、表3に非常に類似している。
Figure 0006153541
Figure 0006153541
がPMDSであるp、mおよびnの値に対し、
Figure 0006153541
もまたPMDSであることが、実際に、表3と表4とを比べると分かる。
Figure 0006153541
以下の記述は、さらなる符号構築、およびPMDS符号の実施形態の説明を含む。
技術的効果および利点には、フラッシュ・アレイ型のアーキテクチャに適したPMDS符号が含まれ、これらアーキテクチャではハード・エラーが破局的デバイス故障と共存する。アプリケーションで有用な特定の符号、および最適性基準を満たす、PMDS符号に対する必要且つ十分な条件を本明細書で説明してきた。また、技術的効果および利点には、独立ディスクの冗長アレイがあるRAID6と同じ保護を提供するが、RAID5に近いストレージ効率を有する能力が含まれる。しかして、ある実施形態を用いて、所与の冗長性の量に対し、ストライプ故障に対する保護を最大化することができる。
本明細書で使用する用語は、単に特定の実施形態を説明する目的のためのものであり、本発明を限定することは意図されていない。本明細書で用いられる、単数形「ある(“a”、“an”)」、および「該(“the”)」は、文脈上明確に別途に示されていなければ、複数形も同じように含むことが意図されている。さらに、当然のことながら本明細書で用いられる「含む(“comprise”)」もしくは「含んでいる(“comprising”)」またはその両方は、述べられた特徴、完全体(integer)、ステップ、オペレーション、エレメント、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の特徴、完全体、ステップ、オペレーション、エレメント、コンポーネント、もしくはこれらの群、または上記の組み合わせの存在または追加を排除するものではない。添付の請求項中のミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素全ての、対応する構造、材料、動作および均等物は、具体的に請求された他の請求要素と組み合わせてその機能を実施するための、一切の構造、材料または動作を包含することが意図されている。本発明の記述は、例示および説明の目的で提示されたもので、網羅的であることも、または本発明を開示した形態に限定することも意図されていない。当業者には、本発明の範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。本実施形態は、本発明の原理および実際的な応用を最善に説明し、他の当業者が、意図する特定の用途に適したさまざまな修改を加えたさまざまな実施形態に関して、本発明を理解できるように選択し説明されたものである。
さらに、当業者には周知のように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。従って、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、一般に本明細書では全て「回路」、「モジュール」、または「システム」といわれることもある、ソフトウェアおよびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の態様は、コンピュータ可読プログラム・コードが中に具現化されている一つ以上のコンピュータ可読媒体(群)中に具体化されたコンピュータ・プログラム製品の形を取ることも可能である。
一つ以上のコンピュータ可読媒体(群)の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいはこれらの任意の適切な組み合わせであり得る。コンピュータ可読ストレージ媒体のさらに具体的な例(非包括的リスト)には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM:erasable programmable read−only memoryまたはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であり得る。
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うこともできる。
本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を上記で説明してきた。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能群/動作群を実装するための手段を生成するようにすることができる。
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することができるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能/動作を実装する命令群を包含する製造品を作り出せるようにすることができる。
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群/動作群を実装するためのプロセスを提供するようにすることも可能である。
図面のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能(群)を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序を外れて行われ得ることに留意すべきである。例えば、連続して示された2つのブロックが、関与する機能によって、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロック群の組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。

Claims (17)

  1. 複数のストレージ・デバイスのセットで構成されたストレージ・アレイにデータを格納する方法であって、
    書き込みデータを受信するステップと、
    前記書き込みデータを、各エントリが少なくとも一つのセクタを含む、m個の行とn個の列とのエントリ群を包含するアレイ中に配置するステップと、
    各行に少なくともr個のパリティ・エントリがあるように、さらに前記パリティ・エントリが部分最大距離分離(PMDS)符号に対応するように、前記アレイ中のmr+s個の場所を前記パリティ・エントリに割り当てるステップであって、かかる符号は、前記mの行のそれぞれにおける最大r個までの消失エラー、並びにデータ・アレイ中の任意の場所にあるs個(sはゼロより大きい整数)のさらなる消失エラーの復元を可能にする、前記割り当てるステップと、
    前記書き込みデータおよび関連付けられたパリティ・エントリを前記ストレージ・デバイスのセットに書き込むステップと、
    を含む方法。
  2. 前記パリティ・エントリが、mr+sが未知であるmr+s個の方程式の線形システムを解くことによって計算され、前記線形システムは、前記書き込みデータおよび前記PMDS符号に対応するパリティ検査マトリックスに基づく、
    請求項1に記載の方法。
  3. 前記書き込みデータおよびパリティ・エントリが、b個の要素を有する体または環の中にあり、前記体または環は、次数bの多項式f(x)によって生成され、mとnとの積はf(x)の指数より小さい、請求項1に記載の方法。
  4. f(x)が多項式Mp(x)=1+x+x2+・・・+xp−1であり、pは素数である、請求項3に記載の方法。
  5. r=1である、請求項1〜4のいずれか一項に記載の方法。
  6. パリティ検査マトリックスが、(m+s)×(mn)のマトリックスであって、
    j番目(jが最大でもm)の行が、(j−1)m個の0と、それに続くm個の1と、それに続く0群とを含み、
    (m+1)番目の行は、1、その後にα、その後にα2と順々に続く前記行の最後のシンボルαmn−1までを含み、αはf(x)の根であり、
    (m+i)番目(iは2とsとの間の数字)の行が、i−1乗された前記(m+1)番目の行の前記エントリを含む、
    請求項1に記載の方法。
  7. 前記パリティ検査マトリックスが、(m+s)×(mn)のマトリックスであって、
    j番目(jは最大でもm)の行が、(j−1)m個の0と、それに続くm個の1と、それに続く0群とを含み、
    (m+1)番目の行は、1、その後にα、その後にα2と順々に続く前記行の最後のシンボルαmn−1までを含み、αはf(x)の根であり、
    (m+i)番目(iは2とsとの間の数字)の行が、i乗された前記(m+1)番目の行の前記エントリを含む、
    請求項1に記載の方法。
  8. m−1の行が、各々丁度r個のパリティ・エントリを包含し、1つの行がr+s個のパリティ・エントリを包含する、請求項1に記載の方法。
  9. 丁度r個のパリティ・エントリを包含する前記m−1の各行中の前記r個のパリティ・エントリは、[n,n−r]最大距離分離(MDS)符号を用いて得られたものであり、残りの前記r+s個のパリティ・エントリは、前記書き込みデータ、前に得られた前記パリティ・エントリ、および前記PMDS符号に対応するパリティ検査マトリックスに基づき、r+sが未知であるr+s個の方程式のシステムを解くことによって得られる、請求項8に記載の方法。
  10. 複数のストレージ・デバイスのセットで構成されたストレージ・アレイデータを格納するためのシステムであって、
    複数のストレージ・デバイスを含むストレージ・アレイと、
    書き込みデータを受信し、
    前記書き込みデータを、各エントリが少なくとも一つのセクタを含む、m個の行とn個の列とのエントリ群を包含するアレイ中に配置し、
    各行に少なくともr個のパリティ・エントリがあるように、さらに前記パリティ・エントリが部分最大距離分離(PMDS)符号に対応するように、前記アレイ中のmr+s個の場所を前記パリティ・エントリに割り当て、かかる符号は、前記mの行それぞれにおける最大r個までの消失エラー並びにデータ・アレイ中の任意の場所にあるs個(sはゼロより大きい整数)のさらなる消失エラーの復元を可能にし、
    前記書き込みデータおよび関連付けられたパリティ・エントリを前記ストレージ・デバイスのセットに書き込む、
    よう構成されたアレイ・コントローラと、
    を含むシステム。
  11. 前記データおよびパリティ・エントリが、b個の要素を有する体または環の中にあり、前記体または環は、次数bの多項式f(x)によって生成され、mとnとの積はf(x)の指数より小さい、請求項10に記載のシステム。
  12. r=1である、請求項10に記載のシステム。
  13. 前記パリティ検査マトリックスが、(m+s)×(mn)のマトリックスであって、
    j番目(jは最大でもm)の行が、(j−1)m個の0と、それに続くm個の1と、それに続く0群とを含み、
    (m+1)番目の行は、1、その後にα、その後にα2と順々に続く前記行の最後のシンボルαmn−1までを含み、αはf(x)の根であり、
    (m+i)番目(iは2とsとの間の数字)の行が、i−1乗された前記(m+1)番目の行の前記エントリを含む、
    請求項10に記載のシステム。
  14. 前記パリティ検査マトリックスが、(m+s)×(mn)のマトリックスであって、
    j番目(jは最大でもm)の行が、(j−1)m個の0と、それに続くm個の1と、それに続く0群とを含み、
    (m+1)番目の行は、1、その後にα、その後にα2と順々に続く前記行の最後のシンボルαmn−1までを含み、αはf(x)の根であり、
    (m+i)番目(iは2とsとの間の数字)の行が、i乗された前記(m+1)番目の行の前記エントリを含む、
    請求項10に記載のシステム。
  15. m−1の行が、各々丁度r個のパリティ・エントリを包含し、1つの行がr+s個のパリティ・エントリを包含する、請求項10に記載のシステム。
  16. 丁度r個のパリティ・エントリを包含する前記m−1の各行中の前記r個のパリティ・エントリは、[n,n−r]最大距離分離(MDS)符号を用いて得られたものであり、残りの前記r+s個のパリティ・エントリは、前記書き込みデータ、前に得られた前記パリティ・エントリ、および前記PMDS符号に対応する前記パリティ検査マトリックスに基づき、r+sが未知であるr+s個の方程式のシステムを解くことによって得られる、請求項15に記載のシステム。
  17. 複数のストレージ・デバイスのセットで構成されたストレージ・アレイにデータを格納するためのコンピュータ・プログラムであって、
    書き込みデータを受信し、
    前記書き込みデータを、各エントリが少なくとも一つのセクタを含む、m個の行とn個の列とのエントリ群を包含するアレイ中に配置し、
    各行に少なくともr個のパリティ・エントリがあるように、さらに前記パリティ・エントリが部分最大距離分離(PMDS)符号に対応するように、前記アレイ中のmr+s個の場所を前記パリティ・エントリに割り当て、かかる符号は、前記mの行のそれぞれにおける最大r個までの消失エラー並びにデータ・アレイ中の任意の場所にあるs個(sはゼロより大きい整数)のさらなる消失エラーの復元を可能にし、
    前記書き込みデータおよび関連付けられたパリティ・エントリを前記ストレージ・デバイスのセットに書き込む、
    ことをコンピュータに実行させるコンピュータ・プログラム。
JP2014555344A 2012-02-02 2013-01-11 消失エラー訂正符号を用いてストレージ・アレイにデータを格納する方法、システム及びプログラム Expired - Fee Related JP6153541B2 (ja)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
JP2015508917A JP2015508917A (ja) 2015-03-23
JP6153541B2 true JP6153541B2 (ja) 2017-06-28

Family

ID=48903989

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014555344A Expired - Fee Related JP6153541B2 (ja) 2012-02-02 2013-01-11 消失エラー訂正符号を用いてストレージ・アレイにデータを格納する方法、システム及びプログラム

Country Status (6)

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

Families Citing this family (25)

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

Family Cites Families (38)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6153541B2 (ja) 消失エラー訂正符号を用いてストレージ・アレイにデータを格納する方法、システム及びプログラム
JP5945285B2 (ja) ストレージ・アレイにデータを保管するための方法、システム、およびコンピュータ・プログラム、ならびにストレージ・アレイ内の消去を訂正するための方法およびコンピュータ・プログラム
US10572345B2 (en) First responder parities for storage array
US9058291B2 (en) Multiple erasure correcting codes for storage arrays
KR101267183B1 (ko) 반도체 기억 장치
JP4668970B2 (ja) フォールトトレラントデータストレージシステムにおけるブロックレベルのデータ破損の検出および訂正
US9229810B2 (en) Enabling efficient recovery from multiple failures together with one latent error in a storage array
EP1828899B1 (en) Method and system for syndrome generation and data recovery
US20080256420A1 (en) Error checking addressable blocks in storage
US10430123B2 (en) Hierarchical data recovery processing for extended product codes
US10824504B2 (en) Common high and low random bit error correction logic
US8788915B2 (en) Apparatuses and methods for encoding using error protection codes
WO2017158430A1 (en) Coding technique
US11474898B2 (en) Multiple responder approach to systems with different types of failures
KR20220124182A (ko) 저장 시스템에서의 데이터 복구를 위한 인코딩
WO2017186871A1 (en) Data protection coding technique
Huang et al. S-code: Lowest density mds array codes for raid-6
Sim et al. Implementation of a Reed-Solomon Code as an ECC in Yet Another Flash File System
Blaum et al. Construction of sector-disk (SD) codes with two global parity symbols

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170308

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: 20170509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170530

R150 Certificate of patent or registration of utility model

Ref document number: 6153541

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees