(57)【要約】【課題】データの記録方向に沿って、局所的に発生するバースト誤りなどを効率的に修復できるようにすることである。【解決手段】Ｎ＋Ｐ台のドライブと、誤り訂正符号化回路と、分配回路と、配列回路と、誤り訂正復号回路とを具備するディスクアレイ装置によって解決できる。誤り訂正符号化回路は、記録データからＭ×Ｎバイトを取り出して成る情報シンボルに、Ｍ×Ｐバイトのパリティシンボルを付加して、符号長Ｍ×（Ｎ＋Ｐ）バイトのリード・ソロモン符号を生成する。分配回路は、Ｍ×（Ｎ＋Ｐ）バイトのリード・ソロモン符号を、Ｍバイトずつの（Ｎ＋Ｐ）個の断片に分割し、Ｎ＋Ｐ台のドライブに分配する。配列回路は、各ドライブにおいて、Ｍバイトずつの（Ｎ＋Ｐ）個の断片が、データの記録方向に沿って整列して保存されるように、Ｍバイトずつの断片を配列する。誤り訂正復号回路は、リード・ソロモン符号に基づいて、誤りを訂正する。【選択図】図２
2010152745.tif 000002
【特許請求の範囲】
【請求項１】
Ｍ，Ｎ，Ｐを自然数としたとき、記録データを記録するＮ＋Ｐ台のドライブと、
Ｍ×Ｎの大きさの記録データを与えられると、Ｍ×Ｐの大きさのパリティを付加する符号化回路であって、前記記録データからＭ×Ｎバイトを取り出して成る情報シンボルに、Ｍ×Ｐバイトのパリティシンボルを付加して、符号長Ｍ×（Ｎ＋Ｐ）バイトのリード・ソロモン符号を生成する誤り訂正符号化回路と、
前記Ｍ×（Ｎ＋Ｐ）バイトのリード・ソロモン符号を、Ｍバイトずつの（Ｎ＋Ｐ）個の断片に分割し、前記（Ｎ＋Ｐ）個の断片を、前記Ｎ＋Ｐ台のドライブに分配する分配回路と、
前記Ｎ＋Ｐ台のドライブのそれぞれにおいて、前記Ｍバイトずつの（Ｎ＋Ｐ）個の断片が、データの記録方向に沿って整列して保存されるように、前記Ｎ＋Ｐ台のドライブのそれぞれに対して、異なるリード・ソロモン符号に属するＭバイトずつの断片を配列する配列回路と、
前記Ｎ＋Ｐ台のドライブから読み出された記録データに誤りがあった場合に、前記Ｍ×（Ｎ＋Ｐ）バイトのリード・ソロモン符号に基づいて、前記誤りを訂正する誤り訂正復号回路とを具備する
ディスクアレイ装置。
【請求項２】
前記Ｎ＋Ｐ台のドライブは、それぞれ、
前記配列回路によって与えられるＭバイトずつの断片に対し、インタリーブによる並べ替えを施して記録を行い、
前記配列回路は、
前記インタリーブによる並べ替えの逆操作を行って、前記Ｍバイトずつの断片を配列する
請求項１記載のディスクアレイ装置。
【請求項３】
前記Ｎ＋Ｐ台のドライブは、それぞれ、
前記Ｍバイトずつの断片を記録すると共に補助データを記録し、前記補助データに基づいて、再生不良領域に関する情報を出力し、
前記誤り訂正復号回路は、
前記再生不良領域に関する情報を用いて、前記Ｍ×（Ｎ＋Ｐ）バイトのリード・ソロモン符号毎に、前記再生不良領域の消失訂正を含む誤り訂正を行う
請求項２のディスクアレイ装置。
【請求項４】
前記Ｐは２以上の整数であり、
前記誤り訂正復号回路は、
前記Ｍ×（Ｎ＋Ｐ）バイトのリード・ソロモン符号毎に、誤りを含む（Ｐ−１）個以下の断片を特定し、特定した断片に対する消失訂正と、その他の断片に対するランダム誤り訂正とを行う
請求項３記載のディスクアレイ装置。
【請求項５】
前記Ｎ＋Ｐ台のドライブは、
前記配列回路から与えられる前記Ｍバイトずつの断片のデータ列に対して、第二の誤り訂正符号化を施し、前記第二の誤り訂正符号化によって、読み出したデータの誤りを訂正する
請求項４記載のディスクアレイ装置。
【請求項６】
前記誤り訂正復号回路は、
前記Ｎ＋Ｐ台のドライブが、前記第二の誤り訂正符号化によって読み出したデータの誤りを訂正できなかった場合に、前記Ｍ×（Ｎ＋Ｐ）バイトのリード・ソロモン符号による誤り訂正を行った後で、前記第二の誤り訂正符号化による誤り訂正を行う
請求項５のディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のディスク装置に分配して記録されたデータの誤りを検出し、訂正する機能を備えるディスクアレイ装置に関する。
【背景技術】
【０００２】
大量のデータを複数台のディスク装置に分散して保存することによって、高い信頼性を図るディスクアレイ装置としてＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）が知られる。ＲＡＩＤにはデータを分配する単位やパリティ情報の有無によって、複数のレベルがある。
【０００３】
ＲＡＩＤレベル４では、１台のドライブをパリティ専用に割り当て、残りの複数台にデータを記録する。データ記録はドライブ毎にブロックを単位として行われる。例えば、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）では３２ｋＢのデータが１ブロック、ブルーレイディスクでは６４ｋＢのデータが１ブロックとして扱われている。パリティドライブに記録するブロックのデータは、他の複数台に記録される各々のブロックのデータに基づき、ブロック内の対応するビット毎に排他的論理和をとることによって決められる。こうすることによって、いずれか１台のドライブに障害が発生した場合でも、残るドライブから読み出されるブロックのデータ同士の排他的論理和をとることで、データを再構築することができる。
【０００４】
図１に、ＲＡＩＤレベル４を採用したディスクアレイ装置の構成を示す。図示するように、ディスクアレイ装置は、データ分配回路２００と、５台のディスクドライブ４００と、パリティ演算回路７００と、復号回路８００とを備えている。図中、記録ブロック列は、ブロック毎にデータ分配回路２００によって４台のドライブに割り当てられる。パリティ演算回路７００では、４台のドライブに割り当てられたブロック内の、対応するビットごとに排他的論理和がとられ、パリティドライブとして設けられた最下段のドライブに記録される。再生時は、復号回路８００が各ドライブの再生データを検証して、誤りを検出する。仮に、１台のドライブに障害が生じた場合には、復号回路８００は、パリティドライブの再生データとその他のドライブの再生データとを使って、障害ブロックを再構築し、正しいデータを出力する。
【０００５】
ＲＡＩＤレベル４では、パリティ・ブロックを常に同じドライブに割り当てる。一部のブロックを書き換えた場合に、対応するパリティ・ブロックも書き替えの対象となる。このため、パリティ・ブロックの書き込みにボトルネックが現れる。一方、ＲＡＩＤレベル５では、パリティ・ブロックをアレイ内の全てのドライブに順に割り当てる。これによって、書き込みのボトルネックを防ぐことができる。
【０００６】
ＲＡＩＤレベル６では、ブロックの組み合わせを変えて、パリティ・ブロックを２重に作成して記録する。これによって、同時に２台のドライブに障害が発生しても、データの再構築が可能になる。特表２００７−５２４９３０号公報（特許文献１参照）には、複数ドライブで構成したアレイの行に沿って付加したパリティセットと、アレイの対角方向に沿って付加したパリティセットとによって２台分の冗長情報を与える例が示されている。この場合には、障害があるブロックを予め特定できれば、パリティ・ブロックの冗長情報から２ブロックまでのデータを再構築できる。
【０００７】
上記ＲＡＩＤのように、排他的論理和によって得られたパリティ・ブロックを冗長データとして記録する場合、障害があるブロックを予め特定できれば、そのブロックのデータを再構築できる。しかし、パリティ・ブロックに加えた冗長データから、障害がある位置を特定することまではできない。よって、例えば、一部に誤りを含むブロックの数が、パリティとして加えた冗長ブロックの数よりも多い場合には、データを再構築できない。
【０００８】
誤りを含むビットを特定するために、パリティ・ブロックをハミングコードに基づいて作るＲＡＩＤレベル２も知られる。しかし、パリティ・ブロックは、他の複数台のドライブに記録される各々のブロックのデータに基づいて、ビット毎にハミングコードを生成するように作られる。このことから、ディスクの使用効率が悪いという欠点がある。ＲＡＩＤレベル２の場合、例えば、４台のデータ記録ドライブに、３台のパリティドライブを加えても、２つのブロックの同じ位置に同時に発生した誤りを訂正することはできない。
【０００９】
特に、ディスクの障害は記録方向に沿ったバースト誤りになりやすいが、ビット毎の排他的論理和によって得られたパリティ・ブロックや、ビット毎にハミングコードを生成するようにしたパリティ・ブロックでは、バースト誤りを効率的に修復することはできない。
【００１０】
特開平０５−１８９２５７号公報（特許文献２参照）や特開平０７−１５２４９６号公報（特許文献３参照）には、リード・ソロモン符号によって符号化し、１バイトずつを複数台のディスク装置に割り当ててディスクアレイを構成する例が示されている。リード・ソロモン符号を使ってはいるものの、この場合にはバースト誤りがそれぞれ別の符号に属することになる。ディスク上で連続した位置に誤りが発生しても、別の符号の１バイトずつの誤りに分解されてしまうため、バースト誤りとしての効率的な修復は行えない。
【００１１】
【特許文献１】特表２００７−５２４９３０号公報
【特許文献２】特開平０５−１８９２５７号公報
【特許文献３】特開平０７−１５２４９６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明の課題は、データの記録方向に沿って、局所的に発生するバースト誤りなどを効率的に修復できるようにすることである。
【課題を解決するための手段】
【００１３】
本発明の一つのアスペクトによるディスクアレイ装置は、Ｎ＋Ｐ台のドライブと、誤り訂正符号化回路と、分配回路と、配列回路と、誤り訂正復号回路とを具備する。Ｍ，Ｎ，Ｐを自然数とする。Ｎ＋Ｐ台のドライブは、記録データを記録する。誤り訂正符号化回路は、Ｍ×Ｎの大きさの記録データを与えられると、Ｍ×Ｐの大きさのパリティを付加する符号化回路であって、記録データからＭ×Ｎバイトを取り出して成る情報シンボルに、Ｍ×Ｐバイトのパリティシンボルを付加して、符号長Ｍ×（Ｎ＋Ｐ）バイトのリード・ソロモン符号を生成する。分配回路は、Ｍ×（Ｎ＋Ｐ）バイトのリード・ソロモン符号を、Ｍバイトずつの（Ｎ＋Ｐ）個の断片に分割し、（Ｎ＋Ｐ）個の断片を、Ｎ＋Ｐ台のドライブに分配する。配列回路は、Ｎ＋Ｐ台のドライブのそれぞれにおいて、Ｍバイトずつの（Ｎ＋Ｐ）個の断片が、データの記録方向に沿って整列して保存されるように、Ｎ＋Ｐ台のドライブのそれぞれに対して、異なるリード・ソロモン符号に属するＭバイトずつの断片を配列する。誤り訂正復号回路は、Ｎ＋Ｐ台のドライブから読み出された記録データに誤りがあった場合に、Ｍ×（Ｎ＋Ｐ）バイトのリード・ソロモン符号に基づいて、誤りを訂正する。
【発明の効果】
【００１４】
本発明によれば、Ｍバイトずつの断片が、データの記録方向に沿って整列して保存されるので、データの記録方向に沿って、局所的に発生するバースト誤りなどを効率的に修復できるようになる。
【発明を実施するための最良の形態】
【００１５】
本発明を実施するための最良の形態の一つについて、添付した図面を参照しながら、詳細に説明する。図２に、１つの実施の形態におけるディスクアレイ装置の構成説明図を示す。図２におけるディスクアレイ装置は、８ブロック分の記録データに対して３ブロック分のパリティを加え、これら１１ブロック分のデータをドライブ１１台に分割して記録する。図２において、ディスクアレイ装置は、誤り訂正符号化回路１０と、データ分配回路２０と、１１個のデータ配列回路３０と、１１台のドライブ４０と、１１個の符号配列回路５０と、誤り訂正復号回路６０とを備えている。
【００１６】
図２に示した各回路において、データ列がどのように扱われるかについて詳述する。図３ａ，図３ｂ−１，図３ｂ−２は、図２のディスクアレイ装置が、記録データを、どのようにドライブに保存するかを示す説明図である。なお、各ドライブに割り当てる誤り訂正符号の断片の長さは１９バイトとする。記録データは、８ブロック分の記録データを一つの記録ブロック列として、まず、ディスクアレイ装置の誤り訂正符号化回路１０に与えられる。
【００１７】
図３ａに示すように、一つの記録ブロック列を与えられると、誤り訂正符号化回路１０は、［記録ブロック１］，［記録ブロック２］，・・・，［記録ブロック８］に対して、誤り訂正符号化処理を行う。図示するように、誤り訂正符号化回路１０は、８つの記録ブロックから１９バイトの断片を取り出して、８×１９バイトの情報シンボルを生成する。また、情報シンボルごとにリード・ソロモン符号に基づいた３×１９バイトのパリティを加え、出力する。
【００１８】
図３ａにおいて、一つの記録ブロックは、４３２バイト×１５２バイトの大きさを持っている。この場合、記録ブロックあたり３４５６（＝４３２×１５２／１９）の断片が作られる。［記録ブロック１］の先頭の断片Ａ１は、［記録ブロック２］から［記録ブロック８］までのそれぞれの先頭の断片Ａ２〜Ａ８とまとめられ、これらの８つの断片Ａ１〜Ａ８で、一つの情報シンボルが形成される。更に、この一つの情報シンボルに対して、リード・ソロモン符号に基づいて、パリティシンボルに当たる３×１９バイトが加えられる。図３ａでは、３×１９バイトのパリティシンボルを、Ａ９，Ａ１０，Ａ１１と表記している。Ａ９，Ａ１０，Ａ１１の大きさは、それぞれ１９バイトである。
【００１９】
同様に、［記録ブロック１］における２つ目の断片Ｂ１も、その他の［記録ブロック２］〜［記録ブロック８］における２つ目の断片Ｂ２〜Ｂ８とまとめられて、一つの情報シンボルが形成される。この情報シンボルにも、３×１９バイトのパリティシンボルＢ９，Ｂ１０，Ｂ１１が加えられる。［記録ブロック１］〜［記録ブロック８］における３つ目以降の断片Ｃｋ，Ｄｋ，Ｅｋ，Ｆｋ，・・・についても、同様に誤り訂正符号化処理が為される。
【００２０】
データ分配回路２０は、誤り訂正符号化回路１０から、（８＋３）×１９バイトの誤り訂正符号列を与えられると、その誤り訂正符号列に対して、データ分配処理を行う。データ分配回路２０は、（８＋３）×１９バイトの誤り訂正符号列を、１９バイト毎の断片に分割する。図３ｂ−１，図３ｂ−２に示すように、データ分配回路２は、１９バイト毎の断片を１１台のドライブに割り当てる。割り当てが決まった１９バイトの断片は、各々のドライブに対応したデータ配列回路３０に送られる。分配されたデータ列は、ドライブ１台あたり丁度１記録ブロック分の大きさ（４３２バイト×１５２バイト）と同じ大きさになる。
【００２１】
それぞれのドライブに割り当てて分配される分配データ列は、データ配列回路３０に与えられる。データ配列回路３０は、データ列の並べ替え処理を行い、記録データをドライブ４０へ送出する。ドライブ４０は、受け取った記録データをディスク上に保存する。データ配列回路３０における並べ替え処理は、ドライブ内部で処理されるインタリーブの逆の操作にあたる。この並べ替え処理によって、ディスク上に記録データが記録されるときのデータ配列は、図３ｂ−１，図３ｂ−２の最下段に示すように、それぞれのリード・ソロモン符号に対応する断片がディスク上で整列するように配置される。
【００２２】
ディスクに記録されたデータを再生する場合には、符号配列回路５０が、ドライブ４０から読み出したデータを受け取り、並べ替え処理を行う。更に、誤り訂正復号回路６０が、誤り位置を検出し、訂正して、再生ブロック列として取り出すという手順をとる。データの再生手順については、後に詳細を説明する。
【００２３】
ドライブ内部で行われるインタリーブや、ＥＣＣ符号化処理について詳しく説明する。図４に、ドライブ内部における記録ブロックのデータ配置例を示す。図４の例では、データ本体３８バイト毎に、斜線部にて示す同期確認用の補助データを挿入して記録を行っている。図中の矢印で示すように、データの記録は、記録領域の横方向に進められるのに対して、誤り訂正符号化は、記録領域の縦方向に行われる。図中、縦方向に選ばれた２１６バイトのデータ列に対して、３２バイトのパリティシンボルが加えられる。３２バイトのパリティシンボルは、ドライブ内部で個別にリード・ソロモン符号に基づく誤り訂正符号化を施すことによって追加される。図４において、ドライブ内部の記録領域は、３８バイトの幅を持った４列の区分記録領域を有している。縦１列の区分記録領域２×（２１６＋３２）バイトあたり、２組のリード・ソロモン符号がインタリーブして配置されている。１組のリード・ソロモン符号は（２１６＋３２）バイトの大きさを持つ。このうち、パリティシンボルは３２バイトを占めるので、２組のリード・ソロモン符号で、パリティシンボルは６４バイトの大きさになる。図中、リード・ソロモン符号は、縦１列の区分記録領域に２組ずつをまとめて示し、情報シンボル２×２１６バイトにつき、６４バイト（２×３２バイト）のパリティとして表されている。
【００２４】
ドライブに渡される配列データを処理して、保存する形式に変換する手順を、より詳細に説明する。図５ａ〜図５ｅは、配列データを、図４に示したデータ保存形式に変換する手順を説明する図である。図５ａは、ドライブに渡される配列データの例である。配列データは、４３２バイト×１５２バイトの大きさを単位としたデータ列として、各ドライブに渡される。まず、このような配列データに対して、データの並べ替え処理が行われる。このデータの並べ替え処理は、ドライブ内でのＥＣＣ符号化処理の前処理として行われる。図５ａのような配列データのデータ列を、２１６×３０４バイトの行列に並べ替える処理が行われ、図５ｂに示すような符号化前処理データが生成される。
【００２５】
続いて、符号化前処理データの列に沿って、ドライブ内での誤り訂正符号化処理を施す。図５ｂにおける符号化前処理データの１列は２１６バイトの情報シンボルを有している。各列２１６バイトの情報シンボルに対して、３２バイトのパリティシンボルを加えて誤り訂正符号化処理を施す。図５ｃに示すように、２４８行×３０４列のドライブ内ＥＣＣ符号化データが作られる。
【００２６】
次に、インタリーブの並べ替え処理を施す。図５ｄに示すように、ドライブ内ＥＣＣ符号化データにおける２列ずつが互いにインタリーブするように並べ替える。この並べ替え処理によって、ディスク上で連続するバイト列が互いに異なる誤り訂正符号に属するようになる。最後に、補助データの挿入処理を行う。図５ｅに示すように、図５ｄのようなインタリーブデータに、同期確認用の補助データを挿入する。図５ｅのようなデータが、ディスク上へ記録される。
【００２７】
図５ｅに示すデータは、図中、データ保存形態と示されている。このような保存形態で記録されるデータ列は、図４と同様な構造である。１１×１９バイトの誤り訂正符号化データＡ１〜Ａ１１は、ドライブ外部のデータ分配回路２０で分割されて、１１個の断片Ａ１，Ａ２，・・・，Ａ１１に分かれる。例えば、一つの断片Ａ１に含まれる１９バイトは、Ａ１，０〜Ａ１，１８に当たる。図５ｅに示すように、これらＡ１，０〜Ａ１，１８は、データ配列回路３０で行われた並べ替え処理と、ドライブ内部でのインタリーブによる並べ替え処理とによって、記録方向に沿って整列するようになる。同様に、誤り訂正符号化データの他の断片Ｂ１（Ｂ１，０〜Ｂ１，１８），Ｃ１（Ｃ１，０〜Ｃ１，１８），Ｄ１（Ｄ１，０〜Ｄ１，１８），・・・もディスク上で整列する。
【００２８】
ドライブ内部でのインタリーブは、連続する記録データに発生したバースト誤りを異なる誤り訂正符号に振り分けるので、訂正能力を高める効果がある。例えば、図６ａに示すように、記録方向に沿って、Ｉ１，０からＲ１，１８までに渡る１行以上のバイト列、Ｉ１，０，Ｉ１，１，Ｉ１，２，…，Ｒ１，１７，Ｒ１，１８にデータ検出誤りが含まれていたとする。データを再生する場合、ディスクに記録する際の処理と逆の手順でデインタリーブ処理が施される。デインタリーブ処理の結果、図６ｂに示すように、これらのデータは全て異なる列の独立な誤り訂正符号に属するようになる。図６ａに示すバースト誤りの場合、デインタリーブ処理後に誤り位置が分散化されるので、誤り訂正符号を構成している各列に、誤りを含むバイトデータは、１つ以下になる。従って、各列の誤り訂正符号の中で、１バイト誤りとして処理できる。特に可換媒体を用いるディスクドライブでは、媒体の局所的な欠陥による誤り訂正能力を確保するため、このようなインタリーブが施されることが多い。
【００２９】
ドライブ内部で付加した誤り訂正符号を用いれば、デインタリーブによって必ず誤りデータを検出し、訂正できるとは限らない。良い結果を与えない場合もある。ドライブ内部で設けたパリティを用いて全ての誤りを訂正できない場合というのは、バースト誤りやランダム誤りが非常に多い場合に限られる。このうち、ランダム誤りが非常に多い場合は、デインタリーブによってデータの配列を変更しても、変更後の誤り位置もランダムであることに違いはなく、並べ替えの効果は見込めない。一方、バースト誤りが非常に多い場合に、デインタリーブを施すと、特定の位置に集中していた誤りがブロック内にばら撒かれることになる。誤りの個数が一定の閾値を下回っていれば、これをランダム誤りとして訂正できる可能性がある。しかしながら、ドライブ内の訂正能力を上回る誤りがランダム誤りとしてばら撒かれると、ドライブ外部でもランダム誤り訂正を行う必要が生じる。
【００３０】
ランダム誤りの訂正には、誤りデータの一つ一つについて誤り位置と数値とを特定する必要がある。一方、バースト誤りでは、複数バイトのデータに対して一括して位置を特定することができるため、ランダム誤り訂正に比べて訂正できる誤りの個数の上限は大きくなる。ドライブ外部に付加された誤り訂正符号にとっては、ドライブ内で発生したバースト誤りが、一部の符号語に集中しているほうが望ましい。すなわち、ドライブ外部の誤り訂正符号化回路１０で付加された誤り訂正符号にとっては、デインタリーブによってバースト誤りを振り分けてしまうことが必ずしも良い結果を与えない。
【００３１】
図７に示す具体的な例を用いて、バースト誤りが発生した場合の復号手順を説明する。図７は、ドライブ１からドライブ３まで及びドライブ５の各ドライブに、それぞれ１００行ずつのバースト誤りが発生した場合の例である。図７の最上段に並ぶデータ保存形態において、太枠と×印とで示した４列に亘る一続きの箇所にバースト誤りが発生している。図示するように、ドライブ１とドライブ２のバースト誤り位置は重複しているものとする。同様に、ドライブ３とドライブ５のバースト誤り位置も重複しているものとする。
【００３２】
単一のドライブに設けられた誤り訂正符号では、１００行に渡るバースト誤りを訂正できない。このため、ドライブ１，２，３，５に記録されたデータは、誤りを含んだまま、各ドライブから読み出される。図７の２段目に並ぶ読み出しデータを参照すると分かるように、各ドライブから読み出されるデータは、デインタリーブなどによる影響で、誤り位置がブロック全体にばら撒かれる。一方、ドライブ４、ドライブ６からドライブ１１までの７台では、ドライブ内部において誤り検出や訂正が済んでいるため、読み出しデータに誤りは含まれていない。
【００３３】
図２の符号配列回路５０では、各ドライブから読み出される複数ブロックのデータを、誤り訂正符号化回路１０によって符号化されたリード・ソロモン符号毎に並べ替え処理を施す。図７の最下段に示すように、各ブロックからは１９バイトずつの断片が取り出され、３４５６行の独立なリード・ソロモン符号が得られる。リード・ソロモン符号の断片は、各ドライブのディスク上で記録方向に沿うように整列していたことにより、符号配列回路５０によって配列された後の誤り位置は、バースト誤りが発生した位置に対応して、一部の誤り訂正符号に再び集中して並ぶようになる。
【００３４】
図７の最下段において、ドライブ１に記録されていた断片Ａ１，Ｂ１，Ｃ１，Ｄ１，Ｅ１，Ｆ１，・・・は、３４５６行の独立なリード・ソロモン符号の第１列に並んでいる。ドライブ２に記録されていた断片Ａ２，Ｂ２，Ｃ２，Ｄ２，Ｅ２，Ｆ２，・・・は、３４５６行の第２列に並んでいる。ドライブ１のバースト誤りも、ドライブ２のバースト誤りも、それぞれ３つの断片のみに集中している。ドライブ３に記録されていた断片Ａ３，Ｂ３，Ｃ３，Ｄ３，Ｅ３，Ｆ３，・・・は、３４５６行の第３列に並んでいる。ドライブ５に記録されていた断片Ａ５，Ｂ５，Ｃ５，Ｄ５，Ｅ５，Ｆ５，・・・は、３４５６行の第５列に並んでいる。ドライブ３のバースト誤りも、ドライブ５のバースト誤りも、それぞれ３つの断片のみに集中している。
【００３５】
各ドライブ内部の記録ブロックでは、図４の斜線部に示したような同期確認用の補助データによって、バースト誤りが発生した位置を特定することができる場合がある。本実施の形態においては、ドライブ４０から符号配列回路５０へ、バースト誤り位置の情報が与えられる場合には、誤り訂正符号に従って配列された読み出しデータと共に、バースト誤りを含む断片であることを示すフラグも、誤り訂正復号回路６０に送られる。
【００３６】
誤り訂正復号回路６０では、バースト誤りを含むとして指定された断片が、１つの誤り訂正符号あたり最大３つまでであれば、消失訂正によって復元することができる。再生誤りが含まれるブロックが３つ以下の場合には、再生誤りを含む断片が３つ以下の場合、３つの断片全てを消失として指定し、復元することができる。再生誤りが含まれる断片が４つ以上ある場合、それらの断片全てを消失と扱って復元することはできない。しかしながら、ブロックより細かい単位でバースト誤りを含む断片の位置に関する情報が得られれば、復号を行うことが可能である。以下、その復号方法について詳述する。
【００３７】
図７に示した例では、３４５６行の各行に誤り訂正符号を並べたとき、バースト誤りを含む断片の数は全ての行で２つ以下になっている。例えば、ドライブ１，２で発生したバースト誤りを含む断片を持つ行が３つある。これらの３つの行においては、ドライブ３，５に対応する第３列及び第５列の断片中に含まれるランダム誤りが９バイト以下であれば、これを検出し、訂正することができる。なお、ドライブ４，６〜１１に対応する列の断片に含まれるランダム誤りは訂正済みである。
【００３８】
同様に、ドライブ３，５に対応する第３列及び第５列の断片にバースト誤りが含まれ、ドライブ１，２に対応する第１列及び第２列の断片にランダム誤りが含まれている場合でも、ランダム誤りが９バイト以下であれば訂正できる。また、ドライブ１，２，３，５にランダム誤りが含まれる場合でも、対応する４つの断片に含まれる誤りの総数が２８バイト以下であれば、位置を特定して訂正を行える。このようにして、全ての行で誤り訂正できれば、すべてのブロックのデータを復元できることになる。
【００３９】
訂正可能となる条件は、次のようになる。Ｍバイトずつの長さをもつＰ個の断片がパリティとして加えられているリード・ソロモン符号で、バースト誤りを含む断片の位置に関する情報が与えられるとき、バースト誤りを含む断片の個数ｐがＰ個以下で、更にその他の断片内部に含まれるランダム誤りの個数ｒが、
ｒ＜Ｍ×（Ｐ−ｐ）／２
を満たしていれば、符号は訂正できる。また、ドライブから消失に関する情報が得られない場合でも、バースト誤りを含む断片がパリティとして加えられた断片の数より少なければ、読み出されたデータを直接利用して、次のようにバースト誤り位置を特定し、訂正処理を進めることもできる。リード・ソロモン符号における誤り訂正処理の詳細は、公知文献「符号理論」（今井秀樹著  電子情報通信学会編）などに記載されている。ここでは、符号内に設けた一部の断片を消失と仮定したときに、それが復号できるかを判定するための手順を示す。
【００４０】
ガロア体ＧＦ（２８）上のリード・ソロモン符号として、数１で表される生成多項式Ｇ（ｘ）の符号が使われるものとして説明する。
【数１】
2010152745.tif 000003
【００４１】
まず、読み出しによって得られた１列分の符号２０９バイトが、受信ベクトル（ｙ０，ｙ１，ｙ２，・・・，ｙ２０８）で表されるとき、受信多項式Ｙ（ｘ）、及び、シンドロームｓ０，ｓ１，ｓ２，・・・，ｓ５６を、数２で表すものとする。
【数２】
2010152745.tif 000004
【００４２】
シンドロームｓｉを係数とする多項式Ｓ（ｚ）を、数３とおく。
【数３】
2010152745.tif 000005
【００４３】
更に、消失と仮定した断片に対応する位置多項式λ（ｚ）を、数４とする。
【数４】
2010152745.tif 000006
ここで、Ｄは消失と仮定した位置の集合を表し、ｉ∈Ｄは消失と仮定した位置全てについて処理することを示す。
【００４４】
消失と仮定した断片が１つの場合、位置多項式λ（ｚ）は、ｚの１９次式となり、断片が２つの場合は３８次式となる。消失と仮定した断片以外に誤りが含まれていなければ、数５は、位置多項式λ（ｚ）よりも小さい次数の誤り評価多項式ψ（ｚ）を解にもつ。
【数５】
2010152745.tif 000007
【００４５】
また、消失と仮定した断片の外部に訂正可能な範囲のランダム誤りがある場合には、ランダム誤りに対応する位置多項式をσ（ｚ）として、数６の関係が満足される。
【数６】
2010152745.tif 000008
【００４６】
消失と仮定した断片が１つならば、位置多項式σ（ｚ）は１８次以下、誤り評価多項式ψ（ｚ）は３６次以下となる。また、断片が２つならば、位置多項式σ（ｚ）は９次以下、誤り評価多項式ψ（ｚ）は４６次以下となる。
【００４７】
このような解があるか否かは、数７で表されるλ（ｚ）Ｓ（ｚ）の係数ｓλ  ｉを用いた行列式、｜Ｓｋ｜によって判定できる。数７において、ｈは消失の個数、ｋはランダム誤りの個数である。消失と仮定した断片が１つのとき、ｈ＝１９、ｋ＝１８とする。断片が２つのときには、ｈ＝３８、ｋ＝９として、行列式｜Ｓｋ｜の値を求める。行列式の値が０であれば、解があると考えられる。
【数７】
2010152745.tif 000009
【００４８】
誤りを含むと想定される断片のそれぞれについて、位置多項式λ（ｚ）とシンドロームｓｉから、行列式｜Ｓｋ｜を求め、行列式の値が０になる断片を選ぶことで、バースト誤りの位置が特定できる。それぞれの断片に対応した位置多項式λ（ｚ）の係数は、断片の位置によって定まる固定値となるため、予め求めておける。
【００４９】
以上、記録データ８ブロックに対して３ブロック分のパリティを加える場合の例について説明した。課題を解決するための手段の欄における説明に対応させると、Ｍ＝１９，Ｎ＝８，Ｐ＝３の場合である。その他、本発明は、パリティのブロック数が異なる場合でも同様に誤り訂正が可能である。例えば、２ブロック分のパリティを加えた場合には、読み出されたデータについて、各行のリード・ソロモン符号あたり断片１つ分の消失を訂正でき、また、断片に含まれるバイト数の半数未満の数のランダム誤りを訂正できる。すなわち、パリティがＰブロック加えられていれば、（Ｐ−１）以下の断片の消失を特定し、また、誤り訂正符号の残りの訂正能力によってランダム誤りが訂正できる。
【００５０】
このように、ドライブ外部で付加したリード・ソロモン符号の断片が、ディスク上で整列して配置されるように、データ配列回路３０がデータの並べ替え処理を行っている。この並べ替え処理によって、ディスク上で発生したバースト誤りが、ドライブ外部でもバースト誤りとして処理できる。公知文献に記載された技術のように、記録ブロックの対応する位置のバイトデータ同士で排他的論理和をとる場合と比べて、高い誤り訂正能力が得られ、記憶装置の信頼性を高められる。また、データ配列回路を設けずに、ドライブ外部でリード・ソロモン符号を付加した場合と比べても、バースト誤りが、異なるリード・ソロモン符号に分散してしまうのを避けられることから、局所的な誤りを効果的に訂正できる利点が得られる。
【００５１】
ドライブ４０が、ドライブ内部で符号化した誤り訂正符号のドライブ内パリティを、記録データと共に符号配列回路５０に出力する機能を備えていれば、更に高い訂正能力を実現できる。誤り訂正復号回路６０では、ドライブ外で付加された誤り訂正符号の復号を行った後で、更にドライブ内で加えられたパリティを元に、誤り訂正に失敗したブロック単体の訂正も行える。ドライブからデータを読み出す時に復号に失敗したブロックでも、ドライブ外で付加された符号を用いて、いくつかの断片が復元された後では、全てのデータを復元できる可能性がある。
【００５２】
上記説明では、図４に示したような、ドライブ内部で誤り訂正符号化処理が施されて記録された記録データに対して、誤り訂正を適用する例を示した。しかし、本発明は、この例に限らず、例えばＤＶＤ（Ｄｉｇｉｔ  ａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）で採用されているように、積符号によって誤り訂正符号化処理が施されるドライブに適用した場合でも高い効果が得られる。図８に示すように、ＤＶＤでは、積符号のうち、行方向の誤り訂正符号ＰＩは、データの記録方向に沿って符号化されている。しかし、積符号のうち、ＰＯ訂正符号化方向に付加されているパリティは、列あたり１６バイトになっている。従って、例えば、合計で１６行を超えるバースト誤りが発生したブロックでは、ドライブ単体での誤り訂正が行えない。しかし、記録方向に沿って１６バイトずつに分割した断片を用いて、上記実施の形態と同様にドライブ外部でパリティを付加しておくことで、このようなデータも復旧できるようになる。
【００５３】
なお、本発明は上記実施の形態に限定されない。本発明の技術思想の範囲内において、上記実施の形態は適宜変更され得ることは明らかである。
【図面の簡単な説明】
【００５４】
【図１】ＲＡＩＤレベル４を採用したディスクアレイ装置の構成を示す図
【図２】本実施の形態におけるディスクアレイ装置の構成を説明する図
【図３ａ】記録データを、どのようにドライブに保存するかを示す説明図（１／２）
【図３ｂ−１】記録データを、どのようにドライブに保存するかを示す説明図（２−１／２）
【図３ｂ−２】記録データを、どのようにドライブに保存するかを示す説明図（２−２／２）
【図４】ドライブ内部における記録ブロックのデータ配置例を示す図
【図５ａ】ドライブ内部でのデータ保存手順を説明する図（１／５）
【図５ｂ】ドライブ内部でのデータ保存手順を説明する図（２／５）
【図５ｃ】ドライブ内部でのデータ保存手順を説明する図（３／５）
【図５ｄ】ドライブ内部でのデータ保存手順を説明する図（４／５）
【図５ｅ】ドライブ内部でのデータ保存手順を説明する図（５／５）
【図６ａ】バースト誤りの影響を説明する図（１／２）
【図６ｂ】バースト誤りの影響を説明する図（２／２）
【図７】本実施の形態でのデータ再生時の手順を示す図
【図８】ドライブ内部の記録ブロックの第２のデータ配置例を示す図
【符号の説明】
【００５５】
１０…誤り訂正符号化回路
２０，２００…データ分配回路
３０…データ配列回路
４０，４００…ドライブ
５０…符号配列回路
６０…誤り訂正復号回路
７００…パリティ演算回路
８００…復号回路
【図１】
2010152745.tif 000010
【図２】
2010152745.tif 000011
【図３ａ】
2010152745.tif 000012
【図３ｂ−１】
2010152745.tif 000013
【図３ｂ−２】
2010152745.tif 000014
【図４】
2010152745.tif 000015
【図５ａ】
2010152745.tif 000016
【図５ｂ】
2010152745.tif 000017
【図５ｃ】
2010152745.tif 000018
【図５ｄ】
2010152745.tif 000019
【図５ｅ】
2010152745.tif 000020
【図６ａ】
2010152745.tif 000021
【図６ｂ】
2010152745.tif 000022
【図７】
2010152745.tif 000023
【図８】
2010152745.tif 000024