(57)【特許請求の範囲】
【請求項１】
データを分散記録した多数のデータディスクドライブから構成されるディスクアレイを備えて入出力を並列処理するＲＡＩＤサブシステムからなる大容量記憶装置において、
データディスクドライブの故障時用の予備ディスクドライブと、パリティデータ記録用のパリティディスクドライブと、をデータディスクドライブの他に備え、
パリティディスクドライブのパリティデータを分割してパリティディスクドライブと予備ディスクドライブとに記録する分割パリティ予備ディスク制御を実行するようにし、
ディスクアレイ内のディスクドライブを中間シリンダから上位ブロックと下位ブロックに分け、予備ディスクドライブ以外のディスクドライブを２つの小パリティグループに分ける第１過程と、データディスクドライブのデータからパリティデータを演算して、上位ブロックのパリティデータはパリティディスクドライブの上位ブロックへ、データディスクドライブの下位ブロックのパリティデータは予備ディスクドライブの上位ブロックへ、それぞれ記録する第２過程と、パリティディスクドライブを含む側の小パリティグループは、該小パリティグループ内のデータディスクドライブのデータからパリティデータを演算し、上位ブロックのパリティデータを予備ディスクドライブの下位ブロックへ、下位ブロックのパリティデータをパリティディスクドライブの下位ブロックへ、それぞれ記録する第３過程と、から初期化過程が遂行されることを特徴とする大容量記憶装置。
【請求項２】
パリティデータ算出のための演算は排他的論理和を行う請求項１に記載の大容量記憶装置。
【請求項３】
ディスクドライブにフェイルが発生すると、１又は複数のデータディスクドライブのフェイルか、パリティディスクドライブのフェイルか、予備ディスクドライブのフェイルかを検出する請求項１又は請求項２に記載の大容量記憶装置。
【請求項４】
１つのデータディスクドライブにフェイルが発生した時、
予備ディスクドライブの上位ブロックに記録された下位ブロックのパリティデータを、パリティディスクドライブの下位ブロックにコピーする過程と、
フェイルの発生していないデータディスクドライブ及びパリティディスクドライブのデータを利用して、フェイルしたデータディスクドライブのデータを復元する過程と、
その復元したデータを予備ディスクドライブに書込む過程と、によりデータを復元する請求項３に記載の大容量記憶装置。
【請求項５】
各小パリティグループ当たり１つのデータディスクにフェイルが発生した時、
予備ディスクドライブの上位ブロックに記録された下位ブロックのパリティデータとパリティディスクドライブの下位ブロックに記録された小パリティグループの下位ブロックのパリティデータとを交換する過程と、
パリティディスクドライブを含む小パリティグループ内のフェイルの発生していないデータディスクドライブ、パリティディスクドライブ及び予備ディスクドライブのデータを利用して、パリティディスクドライブを含む小パリティグループ内のフェイルしたデータディスクドライブのデータを復元する過程と、
その復元したデータを予備ディスクドライブに書込む過程と、
フェイルの発生していないデータディスクドライブ、パリティディスクドライブ及び予備ディスクドライブのデータを利用して、フェイルした他方のデータディスクドライブのデータを復元する過程と、
その復元したデータをパリティディスクドライブに書込む過程と、によりデータを復元する請求項３に記載の大容量記憶装置。
【請求項６】
パリティディスクドライブにフェイルが発生した時、
予備ディスクドライブの上位ブロックに記録された下位ブロックのパリティデータを、予備ディスクドライブの下位ブロックにコピーする過程と、
データディスクドライブのデータを利用して、フェイルしたパリティディスクドライブの上位ブロックのデータを復元する過程と、
その復元したデータを予備ディスクドライブの上位ブロックに書込む過程と、によりデータを復元する請求項３に記載の大容量記憶装置。
【請求項７】
予備ディスクドライブにフェイルが発生した時、
データディスクドライブのデータを利用して、フェイルした予備ディスクドライブの上位ブロックのデータを復元する過程と、
その復元したデータをパリティディスクドライブの下位ブロックに書込む過程と、によりデータを復元する請求項３に記載の大容量記憶装置。
【請求項８】
パリティディスクドライブを含む小パリティグループ内の１つのデータディスクドライブと予備ディスクドライブにそれぞれフェイルが発生した時、
フェイルの発生していないデータディスクドライブ及びパリティディスクドライブのデータを利用して、フェイルしたデータディスクドライブの上位ブロックのデータを復元する過程と、
その復元したデータをパリティディスクドライブの上位ブロックに書込む過程と、
パリティディスクドライブを含む小パリティグループ内のフェイルの発生していないデータディスクドライブ及びパリティディスクドライブのデータを利用して、フェイルしたデータディスクドライブの下位ブロックのデータを復元する過程と、
その復元したデータをパリティディスクドライブの下位ブロックに書込む過程と、によりデータを復元する請求項３に記載の大容量記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は大容量記録装置システムに関するものである。
【０００２】
【従来の技術】
コンピュータシステムの性能は中央処理装置( ＣＰＵ）と入出力サブシステムによって左右される。近年、ＬＳＩ技術の発展でＣＰＵの処理速度が大きく向上しているにもかかわらず、入出力サブシステムの性能改善が遅れているために、全システムの実行時間の中で入出力にかかる時間の比率が増大している。また、入出力サブシステムの誤り発生時のデータ復旧費用が増加していることからも、優れた性能と信頼性を備えた入出力サブシステムの必要性が増してきている。
【０００３】
このために研究中のシステムの一つがＲＡＩＤ(Redundant Arrays of Inexpensive Disks) サブシステムである。通常の入出力サブシステムは一つのディスクドライブに順次アクセスするが、ＲＡＩＤサブシステムは多数のディスクドライブで構成されたディスクアレイにデータを分散させて入出力を並列に行うことにより、入出力を速く処理する。また、簡単なパリティ情報を用いて誤り発生時にデータ復元を可能にして信頼性を向上させる。現在ＲＡＩＤ関連技術は商用化段階にあり、大学ではＲＡＩＤアルゴリズムに関する研究とシミュレーションを用いた実験を通じて活発な理論的研究を続けており、一方、企業では多様な性能確認試験を通じて改善点を見つけることにより、入出力性能改善及び信頼性向上のための努力を続けている。ディスクアレイ構造自体は以前からハードディスクの入出力性能向上のための方法としてスーパーコンピュータ等で用いられてきたが、ＲＡＩＤの概念は１９８８年にカリフォルニア大学バークレー校の３人のコンピュータ学者により確立された。
【０００４】
図１は、通常のＲＡＩＤサブシステムの構成図である。同図によると、ＲＡＩＤサブシステムはディスクアレイコントローラ４と多数のディスクドライブ６- ０〜６- ｎで構成されたディスクアレイ６とからなる。ディスクアレイコントローラ４はホストシステム２とディスクアレイ６との間に位置し、ホストシステム２からのデータ読出／書込命令に基づいてディスクアレイ６のディスクドライブ６- ０〜６- ｎからデータの読出／書込を行う。このとき、ディスクアレイコントローラ４はディスクアレイ６の各ディスクドライブにデータを分散記録し、入出力を並列処理し、簡単なパリティ情報を用いて誤り発生時にデータ復元を可能なように制御する。
【０００５】
図２は、図１に示したディスクアレイコンローラ４のブロック図である。ディスクアレイコントローラ４はホストインタフェースコントローラ１０、プロセッサ１２、メモリ１４、バッファメモリ１６、及びアレイコントローラ１８で構成される。ホストインタフェースコントローラ１０はホストシステム２とプロセッサ１２のインタフェースを制御する。プロセッサ１２はディスクアレイサブシステムの全般的な動作制御を行う。メモリ１４はプロセッサ１２とホストインタフェースコントローラ１０に接続され、プロセッサ１２の制御プログラムが記録されたＲＯＭ及び制御動作時に発生するデータを一時記録するためのＲＡＭを含んでいる。バッファメモリ１６は、プロセッサ１２の制御下にホストシステム２とディスクアレイ６との間で送受信されるデータ及びデータ記録／再生命令を一時保管する。アレイコントローラ１８はプロセッサ１２とディスクアレイ６との間に送受信される各種のデータの制御とインタフェース整合をとる。
【０００６】
このような構成のＲＡＩＤサブシステムは、ディスクドライブにデータを分散またはストリッピング(Striping)、重複データをもつディスクミラーリング(mirroring) などのディスクアレイ方法で記録し、入出力デバイスの性能向上、容量拡張、及び信頼性の向上を図っている。ＲＡＩＤ理論は入出力装置のうち、カートリッジテープのような順次アクセス装置にも適用可能であるが、主な対象はハードディスク装置である。
【０００７】
ＲＡＩＤレベルは各種のデータ記録装置や信頼性の問題に対する解決策を提供しており、その特性によって６種類のＲＡＩＤレベル（レベル０〜５）に分けられている。６種類のＲＡＩＤレベルは使用環境や目的により長短所をもち、様々な応用分野に用いられる。以下に、各ＲＡＩＤレベルの構造に関する内容を簡単に説明する。
【０００８】
ＲＡＩＤレベル０：データの信頼性より速度に重点を置き、ディスクアレイ上の全てのディスクドライブにデータを分散記録する。ディスクドライブはそれぞれ異なるコントローラを使用する。このために入出力速度を向上できる長所があるが、信頼性は低い。
【０００９】
ＲＡＩＤレベル１：ミラーリングによりデータを記録する。ミラーリングはよく用いられる信頼性向上のための方法であるが、ディスク内容の全てが複写ディスクに記録されるために多くのディスク領域が必要となり、データの記録に最大でも全ディスク容量の５０％しか使用できないという欠点がある。しかし、同じデータが複写ディスクに存在するので、信頼性の点では一番良い方法である。
【００１０】
ＲＡＩＤレベル２：ＲＡＩＤレベル１の欠点である、信頼性確保のために使われる多くのディスク領域を削減するために、データをバイト単位で各ディスクアレイに分散記録する。そして、誤り認識と誤り訂正のためにハミングコードを使用しており、データディスク以外に幾つかの検査ディスクを持つ。
【００１１】
ＲＡＩＤレベル３：入出力が一度要求されると、データが並列にディスクドライブに入出力され、パリティデータは別のディスクドライブに記録される。尚、ディスク駆動用スピンドルモータは全てのディスクドライブが同時にデータを入出力し得るように同期化されている。従って、入出力は処理速度が遅くても高い並列入出力化によって速いデータ伝送が可能である。また、一つのドライブがエラーを起こしても、他のドライブとパリティドライブを使用することにより、全体のデータレートは落ちるがエラーしたデータは復元される。ＲＡＩＤレベル３は、非常に速いデータ伝送速度を要求するアプリケーション、即ちスーパーコンピュータ、イメージ操作プロセッサなどに用いられる。つまり、ロングデータブロック(Long Data Block) の伝送には高い能力を発揮するが、速い入出力が要求されるショートデータブロック(Short Data Block)の伝送には向いていない。尚、ＲＡＩＤレベル３は重複のために、シングルドライバをデータドライバと共用することにより、ＲＡＩＤレベル１より少ないドライバで済むが、コントローラは高性能のものが要求され複雑になる。
【００１２】
ＲＡＩＤレベル４：ＲＡＩＤレベル４のデータはディスクアレイを構成する多数のディスクドライブにストリップトアクロス(striped across)され、データが用いられて計算されたパリティデータはディスクアレイ内に別に設けられたディスクドライブに記録される。ここで、ストリップトアクロスとは、ディスクドライブの記録領域がブロック単位のストリッピングサイズで多数に分けられ、データがディスクドライブに記録される時にはストリッピングサイズだけのデータがそれぞれのディスクドライブに交差するように記録されることを意味する。ＲＡＩＤレベル４はデータのフェイル時に復元可能であり、読出し性能はＲＡＩＤレベル１と同様である。しかし書込み性能は、パリティ情報を特別に設けられたディスクドライブに供給しなければならないため、ボトルネック現象が発生してシングルディスクドライブに比べて著しく低下する。
【００１３】
ＲＡＩＤレベル５：ＲＡＩＤレベル４の書込み性能改善を目的にＲＡＩＤレベル５は設定された。ＲＡＩＤレベル５におけるデータはディスクアレイ内の各ディスクドライブにストリップトアクロスされ、パリティデータも書込み時にボトルネック現象を無くすために全てのドライブに分散記録される。ＲＡＩＤレベル５ではデータ書込み時にパリティを再び計算するために全ドライブから書込まれたデータを読出さなければならないので、速度は依然としてＲＡＩＤレベル４並みに遅い。しかし、データ同時入出力伝送処理が可能であり、フェイルが発生したディスクドライブのデータを復元することができる。また、ロングデータ記録に効果的であり、もしアプリケーションプログラムをデータ読出しに多くの比重を置くようにするか、或いはアレイデザイン(array design)を書込み性能向上のために改善すれば、ショートデータの書込みにも高い性能を得ることができる。尚、ＲＡＩＤレベル５はノンアレイデバイスに比べて価格面で非常に効果的である。
【００１４】
ＲＡＩＤレベル５の構造は、ディスクアレイを構成している一つのディスクドライブにフェイルが生じてもデータの損失をもたらさないようになっているが、ドライブの故障時に、すぐに復元作業が行われない場合にはフェイルが誘発される恐れがあり、それによりデータが損失されることがある。従って、ＲＡＩＤレベル５の構造ではデータの損失を防止するために、オンライン予備ディスクドライブ(on-line spare disk drive,or hot-spare disk drive)も設けられている。
【００１５】
図３は、ＲＡＩＤレベル５のディスクアレイの一例を示す。このＲＡＩＤレベル５のディスクアレイは、データを記録する５つのディスクドライブ（以下、“データドライブ”とする）Ｓ１〜Ｓ５と一つの予備ディスクドライブ（以下、“予備ドライブ”とする）ＳＰで構成されている。各ドライブは、記録領域がｎ個のブロックＢＬＫ０〜ＢＬＫｎ−１に分割されており、各ブロックの大きさはストリッピングサイズと呼ばれ、通常５１２バイトである。データはデータドライブＳ１〜Ｓ５の１番目のブロックＢＬＫ０に順次記録され、１番目のブロックＢＬＫ０に全て記録されると、２番目のブロックＢＬＫ１に順次記録される。つまり、次のように記録領域を使う。ドライブＳ１のブロックＢＬＫ０→ドライブＳ２のブロックＢＬＫ０  →  …  →  ドライブＳ５のブロックＢＬＫ０→ドライブＳ１のブロックＢＬＫ１→ドライブＳ２のブロックＢＬＫ１  →  …  →  ドライブＳ５のブロックＢＬＫｎ−１。
【００１６】
データがデータドライブＳ１〜Ｓ５に記録される時には、パリティデータも各データドライブに分散して記録される。図３において、データドライブの一番目のブロックＢＬＫ０で丸印の付けられたデータがパリティデータである。図３に示すパリティデータにおいて、第１データドライブＳ１では１番目のビット、第２データドライブＳ２では２番目のビット、第３データドライブＳ３では３番目のビット、…と順に分散記録される。
【００１７】
各データドライブＳ１〜Ｓ５に分散記録されたパリティデータをｋ番目に入れるとすると、そのパリティデータは記録されたドライブ以外のドライブのｋ番目のデータの排他的論理和（ＸＯＲ）によって生成される。図４を用いて説明すると、１番目のビットデータのうち、パリティデータ“１”は第１データドライブＳ１にあり、第１データドライブＳ１以外のデータドライブＳ２〜Ｓ５の１番目のビットデータのＸＯＲによって求められる。２番目のビットデータのうち、パリティデータ“０”は第２データドライブＳ２にあり、第２データドライブＳ２以外のデータドライブＳ１、Ｓ３〜Ｓ５の２番目のビットデータのＸＯＲによって求められる。３、４、５番目のパリティデータも同様にして生成、配置される。数式で表すと以下の式になる。
【数１】
Ｓ１のパリティデータ＝Ｓ２XOR Ｓ３XOR Ｓ４XOR Ｓ５＝１XOR ０XOR １XOR １＝１
Ｓ２のパリティデータ＝Ｓ１XOR Ｓ３XOR Ｓ４XOR Ｓ５＝１XOR ０XOR １XOR ０＝０
Ｓ３のパリティデータ＝Ｓ１XOR Ｓ２XOR Ｓ４XOR Ｓ５＝０XOR １XOR ０XOR １＝０
Ｓ４のパリティデータ＝Ｓ１XOR Ｓ２XOR Ｓ３XOR Ｓ５＝１XOR １XOR １XOR ０＝１
Ｓ５のパリティデータ＝Ｓ１XOR Ｓ２XOR Ｓ３XOR Ｓ４＝０XOR ０XOR ０XOR １＝１
【００１８】
予備ドライブＳＰは正常動作時は待機しており、データドライブが故障すると、故障したデータドライブの代わりに用いられる。もしデータドライブＳ１が故障すると、ディスクアレイコントローラは残りのデータドライブＳ２〜Ｓ５のデータをＸＯＲしてデータドライブＳ１のデータを復元し、復元されたデータを予備ドライブＳＰに記録する。予備ドライブＳＰはディスクアレイが正常動作時には用いられずに待機しているだけなので、装置の効率的な利用が出来ない。これは、ＲＡＩＤサブシステムの性能を低下させる要因となる。
【００１９】
【発明が解決しようとする課題】
本発明の目的は、装置を有効に活用し、ＲＡＩＤサブシステムの全体的な性能向上を実現する方法の提供にある。
【００２０】
【課題を解決するための手段】
このような目的を達成するために本発明では、ＲＡＩＤサブシステムのようにデータを分散記録した多数のデータディスクドライブからなるディスクアレイを持つ大容量記憶装置において、データディスクドライブの故障時用の予備ディスクドライブと、パリティデータ記録用のパリティディスクドライブと、を備えることを特徴とする。
【００２１】
この装置の初期化には、ディスクアレイ内のディスクドライブを中間シリンダから上位ブロックと下位ブロックに分け、予備ディスクドライブ以外のディスクドライブを２つの小パリティグループに分ける第１過程と、データディスクドライブのデータからパリティデータを演算して、上位ブロックのパリティデータはパリティディスクドライブの上位ブロックへ、データディスクドライブの下位ブロックのパリティデータは予備ディスクドライブの上位ブロックへ、それぞれ記録する第２過程と、パリティディスクドライブを含む側の小パリティグループは、該小パリティグループ内のデータディスクドライブのデータからパリティデータを演算し、上位ブロックのパリティデータを予備ディスクドライブの下位ブロックへ、下位ブロックのパリティデータをパリティディスクドライブの下位ブロックへ、それぞれ記録する第３過程と、が遂行される。
【００２２】
書込み動作時には、書込まれたデータディスクドライブ以外のデータディスクドライブのデータとパリティデータを演算し、その演算結果と新しく書込まれたデータを演算して新しいパリティデータを算出して、上位ブロックパリティデータならパリティディスクドライブの上位ブロックへ、下位ブロックのパリティデータなら予備ディスクドライブの上位ブロックへ、それぞれ記録する。また、パリティディスクドライブを含む小パリティグループのデータディスクドライブに対し書込み動作を行うときは、小パリティグループ内の書込まれたデータディスクドライブ以外のデータディスクドライブのデータとパリティデータを演算し、その演算結果と新しく書込まれたデータを演算して新しいパリティデータを算出して、上位ブロックのパリティデータを予備ディスクドライブの下位ブロックへ、下位ブロックのパリティデータをパリティディスクドライブの下位ブロックへ、それぞれ記録する。
【００２３】
パリティデータ算出のための演算は排他的論理和を行う。
【００２４】
１つのデータディスクドライブにフェイルが発生した時、予備ディスクドライブにフェイルしたデータを復元する第１過程と、予備ディスクドライブをフェイルしたデータディスクドライブの代わりにデータディスクドライブに設定し、フェイルしたデータディスクドライブを予備ディスクドライブに設定する第２過程と、によりデータを復元する。各小パリティグループ当たり１つのデータディスクにフェイルが発生した時、パリティディスクドライブを含む小パリティグループ内のフェイルしたデータディスクドライブを予備ディスクドライブへ復元する第１過程と、フェイルの発生していない全てのドライブを用いて残りのフェイルしたデータディスクドライブをパリティディスクドライブへ復元する第２過程と、予備ディスクドライブとパリティディスクドライブをデータディスクドライブに設定し、フェイルしたデータディスクドライブをそれぞれ予備ディスクドライブとパリティディスクドライブに設定する第３過程と、によりデータを復元する。パリティディスクドライブと予備ディスクドライブのどちらか１つにフェイルが発生した時、データディスクドライブのデータからパリティデータを再演算して復元する。パリティディスクドライブを含む小パリティグループ内の１つのデータディスクドライブと予備ディスクドライブにそれぞれフェイルが発生した時、フェイルしていない他の全てのディスクドライブからフェイルしたデータディスクドライブのデータを復元してパリティディスクドライブの上位ブロックに書込む第１過程と、パリティディスクドライブを含む小パリティグループ内のフェイルしていなデータディスクドライブとパリティディスクドライブから予備ディスクドライブのデータを復元する第２過程と、パリティディスクドライブをデータディスクドライブに設定し、フェイルしたデータディスクドライブをパリティディスクドライブに設定する第３過程と、によりデータを復元する。
【００２５】
【発明の実施の形態】
以下、本発明の実施形態を添付の図面を参照して詳細に説明する。本発明の実施形態では、多数のディスクドライブから構成されるディスクアレイをＲＡＩＤレベル４とＲＡＩＤレベル５の構造を合わせた構造とする。即ち、ＲＡＩＤレベル４の構造で使用するパリティドライブとＲＡＩＤレベル５の構造で使用する予備ドライブを多数のデータドライブと共に使用する。
【００２６】
図５は、本発明のＲＡＩＤサブシステムのブロック構成図である。同図を参照すると、ディスクアレイコントローラ４はホストシステム２と、ディスクアレイ６の間に接続される。ディスクアレイコントローラ４はディスクアレイ６の各ディスクドライブにデータを分散記録し、入出力を並列処理し、パリティデータを用いて誤り発生時のデータ復元を制御する。特に本発明のディスクアレイコントローラ４の主要な動作は、分割パリティ予備ディスクの制御を行うものである。分割パリティ予備ディスク制御は詳細に後述するが、初期化制御モード部分、正常制御モード部分、そしてドライブフェイル時にデータを復元するデータ復元制御モード部分に分けられる。ディスクアレイ６は、４つのデータドライブＳ１〜Ｓ４と、１個のパリティドライブＰＲと、予備ディスクドライブＳＰで構成される。ディスクアレイ６のディスクドライブＳ１〜Ｓ４、ＰＲ、ＳＰは該当の記録領域がストリッピングサイズ（例えば、５１２バイト）のブロックに分けられている。
【００２７】
次に、初期化制御モード、正常動作モード、及びデータ復元制御モードに対する動作を詳細に説明する。
【００２８】
初期化制御モードでは、各ディスクドライブＳ１〜Ｓ４、ＰＲ、ＳＰはディスクアレイコントローラ４の初期化制御時に小パリティグループに分けられ、該当の記録領域が上位ブロックと下位ブロックに分けられる。これらの動作を、図６のフローチャート、図７のディスクアレイ６の状態図、図８のディスクドライブのフォーマット図を用いて説明する。
【００２９】
図６によると初期化制御動作は、１００段階でディスクアレイコントローラ４はホストシステム２からシステム初期化命令を受けると１０２段階に進む。ディスクアレイコントローラ４は１０２段階で初期化制御機能をイネーブルし、分割オンフラグＳＯＦをセットし、１０４段階に進む。１０４段階では、ディスクアレイ６を構成するディスクドライブの中間シリンダ値を求めて上位ブロックと下位ブロックに分ける。図７、８を参照すると、参照番号５０Ａ、５２Ａ、５４Ａ、５６Ａ、５８Ａ、６０Ａが該当ディスクドライブの上位ブロックであり、参照番号５０Ｂ、５２Ｂ、５４Ｂ、５６Ｂ、５８Ｂ、６０Ｂが該当ディスクドライブの下位ブロックを表している。図８のデータドライブＳ１〜Ｓ４をみれば、上位、下位ブロックがそれぞれブロック単位（１ＢＬＫ）に分けられており、そのブロックデータＵＢＤ＿０、ＵＢＤ＿１、…  、ＵＢＤ＿ｍ及びＬＢＤ＿０、ＬＤＢ１、…、ＬＢＤ＿ｍがストリップトアクロスされている。ここで、ブロックデータとは単位ブロック（例えば、５１２バイトサイズ）に記録されたデータを総称する言葉である。
【００３０】
図６に戻りフローを説明すると、ディスクアレイコントローラ４は１０４段階後に１０６段階に進み、ディスクアレイ６内の予備ドライブＳＰの状態をチェックして１０８段階に進む。チェック結果に異常があれば１０８段階で検出して１１０段階に進んでホストシステム２へエラー通報をし、異常が無ければ１１２段階に進む。１１２段階では、パリティドライブＰＲの下位ブロック５８Ｂに記録されている下位ブロックパリティデータＬＰＲを予備ドライブＳＰの上位ブロック６０Ａにコピーする。パリティドライブＰＲに記録されたパリティデータはデータドライブＳ１〜Ｓ４のデータをＸＯＲして算出した値である。
【００３１】
図７では、ドライブＳ１〜Ｓ４の上位ブロックデータＵＢＤ（▲で表示）をＸＯＲして上位ブロックパリティデータＵＰＲ（▲で表示）を生成し、パリティドライブＰＲの上位ブロック５８Ａに記録している。又、ドライブＳ１〜Ｓ４の下位ブロックデータＬＢＤ（■で表示）をＸＯＲして下位ブロックパリティデータＬＰＲ（■で表示）を生成し、パリティドライブＰＲの下位ブロック５８Ｂに記録している。この下位ブロックパリティデータＬＰＲは、１１２段階で予備ドライブＳＰの上位ブロック６０Ａにコピーする。
【００３２】
ディスクアレイコントローラ４は１１４段階で移動完了を判断し、完了したら１１６段階に進む。１１６段階では予備ドライブＳＰを除いた残りのドライブを２つの小パリティグループに分ける。図７では、データドライブＳ１、Ｓ２を第１パリティグループ３０、データドライブＳ３、Ｓ４及びパリティドライブＰＲを第２パリティグループ４０としている。
【００３３】
ディスクアレイコントローラ４は１１８段階に進んで、パリティドライブＰＲを含む小パリティグループ、即ち第２パリティグループ４０のディスクドライブＳ３、Ｓ４、ＰＲの上位ブロックデータＵＢＤ、ＵＰＲ（○で表示）を用いて小グループ上位ブロックパリティデータＧＵＰＲを生成し、１２０段階で予備ドライブＳＰの下位ブロック６０Ｂに書込む。その後、ディスクアレイコントローラ４は１２２段階で書込みが完了したかを判断し、完了した場合は１２４段階に進む。
【００３４】
ディスクアレイコントローラ４は１２４段階で第２パリティグループ４０のディスクドライブＳ３、Ｓ４、ＰＲの下位ブロックデータＬＢＤ、ＬＰＲ（×で表示）を用いて小グループ下位ブロックパリティデータＧＬＰＲを生成する。そして、１２６段階でパリティドライブＰＲの下位ブロック５８Ｂに小グループ下位ブロックパリティデータＧＬＰＲを書込み、１２８段階で書込みが完了したかを判断し、完了した場合は１３０段階に進む。
【００３５】
１３０段階で、ディスクアレイコントローラ４は初期化制御の開始時にセットした分割オンフラグＳＯＦをリセットし、パリティ分割が完了したことを知らせる分割パリティ予備フラグ（ＳＰＳＦ）をセットした後、１３２段階で正常動作モードに転換する。
【００３６】
初期化制御が完了した後のディスクアレイ６は図７、８に示すように、パリティドライブＰＲの上位ブロック５８Ａには上位ブロックパリティデータＵＰＲ、下位ブロック５８Ｂには小グループ下位ブロックパリティデータＧＬＰＲが記録されており、予備ドライブＳＰの上位ブロック６０Ａには下位ブロックパリティデータＬＰＲ、下位ブロック６０Ｂには小グループ上位ブロックパリティデータＧＵＰＲが記録されている。次に、初期化制御モード終了後の正常な状態での動作制御を詳細に説明する。
【００３７】
本発明の正常動作モードとの比較のために、既存のＲＡＩＤレベル４における正常動作を図９Ａ、Ｂを参照して説明する。ＲＡＩＤレベル４においてディスクアレイコントローラはデータの読出し動作で、図９Ａに示すように該当のデータドライブＳ２からデータＯＤを読出す。書込み動作では図９Ｂに示すように、まず、新しいデータＮＤを該当のデータドライブＳ２に書込む。その後、新しいデータＮＤに対するパリティデータを生成するためにデータドライブＳ２を除いた残りのディスクドライブ内の新しいデータＮＤの記録位置と対応する記録位置からデータＯＤ、ＯＰを読出してＸＯＲしてデータＥＸを生成し、データＥＸを新しいデータＮＤとＸＯＲして新しいパリティデータＮＰを生成しパリティドライブＰＲに書込む。
【００３８】
これに対し、本発明の正常動作モードを図１０Ａ、Ｂ、１１Ａ、Ｂを参照して説明する。
【００３９】
図１０Ａ、Ｂは、第１パリティグループ３０にあるデータドライブＳ１、Ｓ２に対して行うデータ読出／書込動作の説明図である。ディスクアレイコントローラ４はデータの読出し動作時、図１０Ａに示すように、従来の方式と同様に該当のデータドライブＳ２からデータＯＤを読出す。読出し動作では第２パリティグループ４０に対しても同様の動作になる。
【００４０】
書込み動作では図１０Ｂに示すように、まず新しいデータＮＤを該当のデータドライブ、例えばＳ２に書込む。その後、新しいデータＮＤに対するパリティデータを生成するためにデータドライブＳ２を除いたデータドライブの、新しいデータＮＤの記録位置に対応する記録位置のデータＯＤを読出す。もし読出されたデータＯＤの記録位置が上位ブロックであれば、データが上位ブロックデータＵＢＤなので、ディスクアレイコントローラ４は読出した上位ブロックデータＵＢＤを、パリティドライブＰＲの上位ブロック５８Ａから読出した上位ブロックパリティデータＯ＿ＵＰＲとＸＯＲしてデータＥＸ１を生成する。その後、データＥＸ１をデータＮＤとＸＯＲして新しい上位ブロックパリティデータＮ＿ＵＰＲを生成し、パリティドライブＰＲの上位ブロック５８Ａに書込む。
【００４１】
一方、データドライブＳ１、Ｓ３、Ｓ４から読出したデータＯＤの記録位置が下位ブロックであれば、データが下位ブロックデータＬＢＤなので、ディスクアレイコントローラ４は読出した下位ブロックデータＬＢＤを予備ドライブＳＰの上位ブロック６０Ａから読出した下位ブロックパリティデータＯ＿ＬＰＲとＸＯＲしてデータＥＸ２を生成する。その後、データＥＸ２をデータＮＤとＸＯＲして新しい下位ブロックパリティデータＮ＿ＬＰＲを生成し、予備ドライブＳＰの上位ブロック６０Ａに書込む。
【００４２】
もし書込み動作で新しいデータＮＤが第２パリティグループ４０のデータドライブＳ３、Ｓ４のいずれかに書込まれると、図１１Ａ、Ｂに示すように動作する。ここでは、データドライブＳ３に新しいデータＮＤが書込まれる場合の動作を示している。図１１Ａは図１０Ｂと同様の動作を行い、パリティドライブＰＲ及び予備ドライブＳＰの上位ブロックにそれぞれ書込まれていた上位ブロック（または下位ブロック）パリティデータを新しい上位ブロック（または下位ブロック）パリティデータＮ＿ＵＰＲ（またはＮ＿ＬＰＲ）に変更する。更に、パリティドライブＰＲ及び予備ドライブＳＰの下位ブロックにそれぞれ書込まれている小グループ下位ブロックパリティデータＧＬＰＲ及び小グループ上位ブロックパリティデータＧＵＰＲを新しい小グループ下位ブロックパリティデータＮ＿ＧＬＰＲ及び小グループ上位ブロックパリティデータＮ＿ＧＵＰＲに変更する。
【００４３】
次に、小グループ上位ブロック（または下位ブロック）パリティデータＧＵＰＲ（ＧＬＰＲ）の変更動作を図１１Ｂを参照して説明する。データドライブＳ３に記録された新しいデータＮＤに対するパリティデータを生成するために、新しいデータＮＤとデータドライブＳ４内のデータＮＤの記録位置に対応する記録位置にあるデータＯＤをＸＯＲして、変更されたデータＧＥＸを生成する。
【００４４】
ＮＤ及びＯＤの記録位置が上位ブロックであれば、変更されたデータＧＥＸが上位ブロックデータＧＵＢＤなので、ディスクアレイコントローラ４は変更された上位ブロックデータＧＵＢＤを、パリティドライブＰＲの上位ブロック５８Ａから読出した上位ブロックパリティデータＯ＿ＧＵＰＲとＸＯＲして新しい小グループ上位ブロックパリティデータＮ＿ＧＵＰＲを生成して、予備ドライブＳＰの下位ブロックＧＯＢに書込む。
【００４５】
データＮＤ及びＯＤの記録位置が下位ブロックであれば、変更されたデータＧＥＸは下位ブロックデータＧＬＢＤである。下位ブロックデータＧＬＢＤは新しい小グループ下位ブロックパリティデータＮ＿ＧＬＰＲを意味するので、ディスクアレイコントローラ４は生成された小グループ下位ブロックパリティデータＮ＿ＧＬＰＲをパリティドライブＰＲの下位ブロック５８Ｂに書込む。
【００４６】
次に、ディスクアレイ６内の所定のディスクドライブにフェイルが発生した場合のデータ復元モード制御について説明する。ＲＡＩＤサブシステムの動作中にディスクアレイ６内のディスクドライブに、データドライブＳ１〜Ｓ４内の一つのデータドライブにフェイルが発生した場合、各小パリティグループ当たり一つのデータドライブにフェイルが発生した場合、パリティドライブＰＲと予備ドライブＳＰのいずれか一つにフェイルが発生した場合、第２パリティグループ４０内の一つのデータドライブと予備ドライブＳＰにそれぞれフェイルが発生した場合、にはデータの復元が可能である。
【００４７】
データドライブＳ１〜Ｓ４内の一つのデータドライブにフェイルが発生した場合の復元過程を、ディスクアレイ６内のデータドライブＳ１にフェイルが発生した場合について説明する。データドライブＳ１にフェイルが発生した時、データドライブＳ１のデータを記録し得るように予備ドライブＳＰを設け、フェイルの発生したＳ１のデータを復元して予備ドライブＳＰに記録させる。図１２のフローチャートにより詳細に説明すると以下のようになる。
【００４８】
ディスクアレイコントローラ４は２００段階でフェイルが発生したデータドライブＳ１を検出すると、２０２段階で復元フラグＲＣＶＦをセットし、２０４段階に進む。２０４段階で、ディスクアレイコントローラ４は予備ドライブＳＰの上位ブロック６０Ａに記録された下位ブロックパリティデータＬＰＲをパリティドライブＰＲの下位ブロック５８Ｂにコピーする。これにより、予備ドライブＳＰにはデータドライブＳ１のデータを記録し得る記録領域が設けられる。
【００４９】
その後、ディスクアレイコントローラ４は２０６段階に進んでフェイルが発生していないデータドライブＳ２、Ｓ３、Ｓ４とパリティドライブＰＲのデータをＸＯＲして、フェイルが発生したデータドライブＳ１のデータを復元する。その後、２０８段階で復元したデータを予備ドライブＳＰに書込む。２１０段階では書込み完了を判断し、完了したなら２１２段階に進む。
【００５０】
ディスクアレイコントローラ４は２１２段階でデータドライブＳ１と予備ドライブＳＰを交換するようにドライブテーブルを再び構成する。その後、２１４段階、２１６段階で分割パリティ予備フラグＳＰＳＦと復元フラグＲＣＶＦをリセットする。分割パリティ予備フラグＳＰＳＦがリセットされるので、以後予備ドライブＳＰを用いたパリティチェックは遂行しない。
【００５１】
次に、各小パリティグループ当たり一つのデータドライブにフェイルが発生した場合のデータ復元動作を、第１パリティグループ３０内のデータドライブＳ１と第２パリティグループ４０内のデータドライブＳ３にフェイルが発生した場合で説明する。データドライブＳ１、Ｓ３にフェイルが発生した時、データドライブＳ３のデータを記録し得るように予備ドライブＳＰを設け、第２パリティグループ４０内のフェイルが発生していない残りのドライブと予備ドライブＳＰを用いてＳ３のデータを復元して予備ドライブＳＰに記録し、次に、フェイルが発生していない残りの全てのドライブ、即ちデータドライブＳ２、Ｓ４、パリティドライブＰＲ及び復元されたＳ３のデータを記録している予備ドライブＳＰを用いてフェイルが発生したＳ１のデータを復元してパリティドライブＰＲに記録する。図１３のフローチャートにより詳細に説明すると以下のようになる。
【００５２】
ディスクアレイコントローラ４は、３００段階で各パリティグループでフェイルが発生したデータドライブＳ１及びＳ３を検出し、３０２段階と３０４段階でで復元フラグＲＣＶＦと交替パリティフラグＲＰＰＦをセットする。３０６段階でディスクアレイコントローラ４は、予備ドライブＳＰの上位ブロック６０Ａに記録された下位ブロックパリティデータＬＰＲと、パリティドライブＰＲの下位ブロック５８Ｂに記録された小グループ下位ブロックパリティデータＧＬＰＲを交換する。その結果、パリティドライブＰＲの下位ブロック５８Ｂには下位ブロックパリティデータＬＰＲが記録され、予備ドライブＳＰの上位ブロック６０Ａには小グループ下位ブロックパリティデータＧＬＰＲが記録される。その後、３０８段階で交替パリティフラグＲＰＰＦをリセットする。
【００５３】
ディスクアレイコントローラ４は、３１０段階で第２パリティグループ４０の中でフェイルが発生していないデータドライブＳ４とパリティドライブＰＲ、及び予備ドライブＳＰのデータを用いて、データドライブＳ３のデータを復元する。つまり、データドライブＳ４の上位ブロックデータＵＢＤ、パリティドライブＰＲの上位ブロックパリティデータＵＰＲ、及び予備ドライブＳＰの下位ブロック６０Ｂに記録された小グループ上位ブロックパリティデータＧＵＰＲをＸＯＲして、フェイルが発生したデータドライブＳ３の上位ブロックデータを復元する。そして、データドライブＳ４の下位ブロックデータＬＢＤ、予備ドライブＳＰの上位ブロック６０Ａに記録された小グループ下位ブロックパリティデータＧＬＰＲをＸＯＲして、フェイルが発生したデータドライブＳ３の下位ブロックデータを復元する。その後、ディスクアレイコントローラ４は３１２段階に進んで、復元されたデータを予備ドライブＳＰに書込む。３１４段階では書込みが完了したかどうかを判断し、書込みが完了した場合は３１６段階に進む。
【００５４】
３１６段階で、ディスクアレイコントローラ４は、フェイルが発生していないデータドライブＳ２、Ｓ４と、復元されたデータを記録している予備ドライブＳＰ及びパリティドライブＰＲのデータを用いて、データドライブＳ１のデータを復元する。具体的には、データドライブＳ２、Ｓ４の上位ブロックデータＵＢＤ、パリティドライブＰＲの上位ブロックパリティデータＵＰＲ、及び予備ドライブＳＰの上位ブロック６０Ａに記録された復元したデータドライブＳ３の上位ブロックデータをＸＯＲして、データドライブＳ１の上位ブロックデータを復元する。そして、データドライブＳ２、Ｓ４の下位ブロックデータＬＢＤ、パリティドライブＰＲの下位ブロックパリティデータＬＰＲ、及び予備ドライブＳＰの下位ブロック６０Ｂに記録された復元したデータドライブＳ３の下位ブロックデータをＸＯＲして、データドライブＳ１の下位ブロックデータを復元する。その後、ディスクアレイコントローラ４は３１８段階に進んで、復元されたデータをパリティドライブＰＲに書込む。３２０段階では書込みが完了したかを判断し、完了した場合は３２２段階に進む。
【００５５】
３２２段階でディスクアレイコントローラ４は、データドライブＳ１とパリティドライブＰＲを、データドライブＳ３と予備ドライブＳＰを交換するようにドライブテーブルを再構成する。その後、３２４段階、３２６段階で分割パリティ予備フラグＳＰＳＦと復元フラグＲＣＶＦをリセットする。分割パリティ予備フラグＳＰＳＦがリセットされるので、以後はパリティドライブＰＲ及び予備ドライブＳＰを用いたパリティチェックは遂行されない。
【００５６】
次に、パリティドライブＰＲと予備ドライブＳＰのいずれか一つにフェイルが発生した場合のデータ復元動作について説明する。まず、パリティドライブＰＲにフェイルが発生した場合には、既に予備ドライブＳＰの上位ブロック６０Ａには下位ブロックパリティデータＬＰＲが記録されているので、データドライブＳ１、Ｓ２、Ｓ３、Ｓ４の上位ブロックデータＵＢＤを用いてフェイルが発生した上位ブロックパリティデータＵＰＲを復元し、予備ドライブＳＰに記録する。次に、予備ドライブＳＰにフェイルが発生した時は、フェイルのある予備ドライブＳＰに記録された下位ブロックパリティデータＬＰＲだけフェイルが発生しているので、データドライブＳ１、Ｓ２、Ｓ３、Ｓ４の下位ブロックデータＬＢＤを用いてフェイルが発生した下位ブロックパリティデータＬＰＲを復元し、パリティドライブＰＲに記録させる。以下に図１４を用いて詳細に説明する。
【００５７】
ディスクアレイコントローラ４は４００段階で各パリティグループからフェイルが発生したドライブ（パリティドライブＰＲまたは予備ドライブＳＰ）を検出すると、４０２段階で復元フラグＲＣＶＦをセットし、４０４段階でパリティドライブＰＲにフェイルが発生したか予備ドライブＳＰにフェイルが発生したかを判断する。パリティドライブＰＲにフェイルが発生したときは、ディスクアレイコントローラ４は４０６段階〜４１４段階に進み、予備ドライブＳＰにフェイルが発生したなら、４１６段階〜４２２段階に進む。
【００５８】
パリティドライブＰＲのフェイル時にディスクアレイコントローラ４は、４０６段階で予備ドライブＳＰの上位ブロック６０Ａに記録された下位ブロックパリティデータＬＰＲを下位ブロック６０Ｂへ移動する。その後、４０８段階でディスクアレイ６内の全てのデータドライブＳ１、Ｓ２、Ｓ３、Ｓ４の上位ブロックデータＵＢＤをＸＯＲし、パリティドライブＰＲの上位ブロックパリティデータＵＰＲを復元する。そして、４１０段階では復元された上位ブロックパリティデータＵＰＲを予備ドライブＳＰの上位ブロック６０Ａに書込む。４１２段階では書込み完了を判断し、完了したときは４１４段階に進む。４１４段階で、ディスクアレイコントローラ４はパリティドライブＰＲを予備ドライブＳＰに再構成する。
【００５９】
一方、予備ドライブＳＰのフェイル時にディスクアレイコントローラ４は、４１６段階でディスクアレイ６内の全てのデータドライブＳ１、Ｓ２、Ｓ３、Ｓ４内の下位ブロックデータＬＢＤをＸＯＲして、予備ドライブＳＰのフェイル時に消えた下位ブロックパリティデータＬＰＲを復元する。そして、４１８段階では復元された下位ブロックパリティデータＬＰＲをパリティドライブＰＲの下位ブロック５８Ｂに書込む。４２０段階では書込みが完了したかどうかを判断し、完了した場合は４２２段階に進む。４２２段階で、ディスクアレイコントローラ４は予備ドライブＳＰが使用されないようにドライブテーブルを再構成する。その後、ディスクアレイコントローラ４は、４２４段階、４２６段階でで分割パリティ予備フラグＳＰＳＦと復元フラグＲＣＶＦをリセットする。
【００６０】
最後に、第２パリティグループ４０内の一つのデータドライブと予備ドライブＳＰにフェイルが発生した場合のデータ復元動作を説明する。下記の説明では、第２パリティグループ４０内でフェイルが発生したデータドライブをＳ３に仮定する。データドライブＳ３及び予備ドライブＳＰにフェイルが発生した時、ディスクアレイ６内のフェイルが発生していない全てのデータドライブＳ１、Ｓ２、Ｓ４とパリティドライブＰＲの上位ブロックデータＵＢＤ、ＵＰＲを用いてフェイルが発生したデータドライブＳ３の上位ブロックデータを復元して、パリティドライブＰＲの上位ブロック５８Ａに書込み、第２パリティグループ４０内のフェイルが発生していないデータドライブＳ４の下位ブロックデータＬＢＤとパリティドライブＰＲの下位ブロック５８Ｂに記録された小グループ下位ブロックパリティデータＧＬＰＲを用いてフェイルが発生したデータドライブＳ３の下位ブロックデータを復元して、パリティドライブＰＲの下位ブロック５８Ｂに書込む。
【００６１】
図１５のフローチャートにより詳細に説明すると、ディスクアレイコントローラ４は、５００段階でフェイルが発生したデータドライブＳ３及び予備ドライブＳＲを検出する。そして、５０２段階で復元フラグＲＣＶＦをセットし、５０４段階に進む。５０４段階でディスクアレイコントローラ４は、ディスクアレイ６内のフェイルが発生していない全てのデータドライブＳ１、Ｓ２、Ｓ４とパリティドライブＰＲの上位ブロックデータＵＢＤ、ＵＰＲをＸＯＲして、データドライブＳ３の上位ブロックデータを復元する。その後、５０６段階に進んで復元されたデータドライブＳ３の上位ブロックデータをパリティドライブＰＲの上位ブロック５８Ａに書込む。ディスクアレイコントローラ４は５０８段階で書込みが完了したかどうかを判断し、完了したときは５１０段階に進む。
【００６２】
５１０段階でディスクアレイコントローラ４は、第２パリティグループ４０内のフェイルが発生していないデータドライブＳ４の下位ブロックデータＬＢＤとパリティドライブＰＲの下位ブロック５８Ｂに記録された小グループ下位ブロックパリティデータＧＬＰＲをＸＯＲして、データドライブＳ３の下位ブロックデータを復元し、５１２段階に進んで復元されたデータをパリティドライブＰＲの下位ブロック５８Ｂに書込む。ディスクアレイコントローラ４は５１４段階で書込みが完了したかどうかを判断し、完了したときは５１６段階に進む。
【００６３】
５１６段階でディスクアレイコントローラ４はデータドライブＳ３とパリティドライブＰＲを交換するようにドライブテーブルを再構成する。その後、５１８段階、５２０段階で分割パリティ予備フラグＳＰＳＦと復元フラグＲＣＶＦをリセットする。分割パリティ予備フラグＳＰＳＦがリセットされるので、以後はパリティドライブＰＲ及び予備ドライブＳＰを用いたパリティチェックは遂行しない。
【００６４】
【発明の効果】
以上のような本発明のＲＡＩＤシステムの大容量記憶装置により、資源の効率的な活用が可能になり、既存のパリティディスクドライブの作業負荷を減らしてシステムの全体的な性能が向上する。また、色々なフェイルが発生してもデータの復元を可能にする。
【図面の簡単な説明】
【図１】ＲＡＩＤサブシステムの構成図。
【図２】図１のディスクアレイコントローラのブロック構成図。
【図３】ＲＡＩＤレベル５のディスクドライブのフォーマット図。
【図４】ＲＡＩＤレベル５のパリティデータの生成及び配置方法の説明図。
【図５】本発明の実施形態のブロック構成図。
【図６】本発明の実施形態の初期化制御のフローチャート。
【図７】図６の初期化制御によるディスクアレイ状態図。
【図８】図６の初期化制御による各ディスクドライブのフォーマット図。
【図９】既存のＲＡＩＤレベル４の正常動作モードでの分図Ａは読出し、分図Ｂは書込み動作の説明図。
【図１０】本発明の実施形態の第１パリティグループの正常動作モードでの分図Ａは読出し、分図Ｂは書込み動作の説明図。
【図１１】本発明の実施形態の第２パリティグループの正常動作モードでの分図Ａは書込み動作、分図Ｂは小パリティグループパリティデータ生成動作の説明図。
【図１２】本発明の実施形態のデータ復元のフローチャート。
【図１３】本発明の実施形態のデータ復元のフローチャート。
【図１４】本発明の実施形態のデータ復元のフローチャート。
【図１５】本発明の実施形態のデータ復元のフローチャート。
【図１】
0003742494.tif 000002
【図２】
0003742494.tif 000003
【図３】
0003742494.tif 000004
【図４】
0003742494.tif 000005
【図５】
0003742494.tif 000006
【図６】
0003742494.tif 000007
【図７】
0003742494.tif 000008
【図８】
0003742494.tif 000009
【図９】
0003742494.tif 000010
【図１０】
0003742494.tif 000011
【図１１】
0003742494.tif 000012
【図１２】
0003742494.tif 000013
【図１３】
0003742494.tif 000014
【図１４】
0003742494.tif 000015
【図１５】
0003742494.tif 000016