(57)【要約】【課題】  一部のデータドライブが異常となった場合のみならず、全てのデータドライブが異常となった場合であってもデータを復元することを可能とする。【解決手段】    ３以上の奇数個のデータドライブと、前記データドライブと同一数のパリティドライブと、を備え、前記奇数個のパリティドライブのうちの１個のパリティドライブは、全てのデータドライブに対応して設けられ、前記奇数個のパリティドライブのうちの前記１個のパリティドライブ以外のパリティドライブの各々は、相互に隣接するデータドライブに対応して設けられる。【選択図】        図１
2006003971.tif 000002
【特許請求の範囲】
【請求項１】
３以上の奇数個のデータドライブと、
前記データドライブと同一数のパリティドライブと、
を備え、
前記奇数個のパリティドライブのうちの１個のパリティドライブは、全てのデータドライブに対応して設けられ、
前記奇数個のパリティドライブのうちの前記１個のパリティドライブ以外のパリティドライブの各々は、相互に隣接するデータドライブに対応して設けられることを特徴とする冗長化ドライブ群。
【請求項２】
請求項１に記載の冗長化ドライブ群において、
前記奇数個のパリティドライブのうちの全てのデータドライブに対応して設けられた１個のパリティドライブは、前記奇数個のデータドライブが全て正常である場合には、全てのデータドライブに格納されているデータを基に算出されたパリティを格納し、前記奇数個のデータドライブが全て正常である場合以外の場合には、全てのデータドライブが正常であったならばこれらのデータドライブに格納されたであろうデータを基に算出されたパリティを格納し、
前記奇数個のパリティドライブのうちの前記１個のパリティドライブ以外のパリティドライブの各々は、対応する２つのデータドライブが共に正常である場合には、該対応する２つのデータドライブに格納されているデータを基に算出されたパリティを格納し、該対応する２つのデータドライブのうちの一方のデータドライブが正常でない場合には、該対応する２つのデータドライブのうちの正常なデータドライブに格納されているデータ及び正常でないデータドライブが正常であったならばこのデータドライブに格納されたであろうデータを基に算出されたパリティを格納することを特徴とする冗長化ドライブ群。
【請求項３】
請求項１又は２に記載の冗長化ドライブ群を用いた書込み方法において、
対象データドライブにこれまで書き込まれていたデータ、前記対象データドライブにこれから書き込むべきデータ並びに前記対象データドライブ及び該対象データドライブに隣接するデータドライブに対応するパリティドライブにこれまで書き込まれていたパリティを基に、前記対象データドライブ及び該対象ドライブに隣接するデータドライブに対応するパリティドライブにこれから書き込むべきパリティを算出して、該算出されたパリティを前記対象データドライブ及び該対象ドライブに隣接するデータドライブに対応するパリティドライブに書き込むことを特徴とする書込み方法。
【請求項４】
請求項１又は２に記載の冗長化ドライブ群を用いた書込み方法において、
対象データドライブにこれまで書き込まれていたデータ、前記対象データドライブにこれから書き込むべきデータ並びに全てのデータドライブに対応するパリティドライブにこれまで書き込まれていたパリティを基に、前記全てのデータドライブに対応するパリティドライブにこれから書き込むべきパリティを算出して、該算出されたパリティを前記全てのデータドライブに対応するパリティドライブに書き込むことを特徴とする書込み方法。
【請求項５】
請求項３又は４に記載の冗長化ドライブ群を用いた書込み方法において、
前記対象データドライブにこれまで書き込まれていたデータを、前記対象データドライブに隣接するデータドライブに格納されているデータ並びに前記対象データドライブ及び前記隣接するデータドライブに対応するパリティドライブに格納されているパリティを基に復元することを特徴とする書込み方法。
【請求項６】
請求項３又は４に記載の冗長化ドライブ群を用いた書込み方法において、
前記対象データドライブにこれまで書き込まれていたデータを、前記対象データドライブ以外の全てのデータドライブに格納されているデータ及び全てのドライブに対応するパリティドライブに格納されているパリティを基に復元することを特徴とする書込み方法。
【請求項７】
請求項３又は４に記載の冗長化ドライブ群を用いた書込み方法において、
前記対象データドライブにこれまで書き込まれていたデータを、全てのドライブに対応するパリティドライブに格納されているパリティ及び何れかの相互に隣接するデータドライブに対応するパリティドライブのうちの一部のパリティドライブに格納されているパリティを基に、対象ドライブのデータを復元することを特徴とする書込み方法。
【請求項８】
請求項７に記載の書込み方法において、
何れかの相互に隣接するデータドライブに対応するパリティドライブのうちの一部のパリティドライブとは、
ｉ番目のデータブロックと（ｉ＋１）番目のデータブロックに対するパリティブロックをパリティブロックｉ・（ｉ＋１）と表すと、
前記対象データドライブが偶数番目２ｍ（ｍは自然数）のデータドライブである場合には、パリティブロック１・２乃至パリティブロック（２ｍ−１）・２ｍ及びパリティブロック２ｍ・（２ｍ＋１）乃至パリティブロック（Ｎ−１）・Ｎであり、
前記対象データドライブが奇数番目（２ｍ＋１）（ｍは自然数）のデータブロックである場合には、パリティブロック１・２乃至パリティブロック（２ｍ−１）・２ｍ及びパリティブロック２（ｍ＋１）・（２（ｍ＋１）＋１）乃至パリティブロック（Ｎ−１）・Ｎであることを特徴とする書込み方法。
【請求項９】
請求項１又は２に記載の冗長化ドライブ群を用いた読出し方法において、
対象データドライブに隣接するデータドライブに格納されているデータ並びに前記対象データドライブ及び前記隣接するデータドライブに対応するパリティドライブに格納されているパリティを基に、前記対象ドライブのデータを復元することを特徴とする読出し方法。
【請求項１０】
請求項１又は２に記載の冗長化ドライブ群を用いた読出し方法において、
対象データドライブ以外の全てのデータドライブに格納されているデータ及び全てのドライブに対応するパリティドライブに格納されているパリティを基に、前記対象ドライブのデータを復元することを特徴とする読出し方法。
【請求項１１】
請求項１又は２に記載の冗長化ドライブ群を用いた読出し方法において、
全てのドライブに対応するパリティドライブに格納されているパリティ及び何れかの相互に隣接するデータドライブに対応するパリティドライブのうちの一部のパリティドライブに格納されているパリティを基に、対象ドライブのデータを復元することを特徴とする読出し方法。
【請求項１２】
請求項１１に記載の読出し方法において、
何れかの相互に隣接するデータドライブに対応するパリティドライブのうちの一部のパリティドライブとは、
ｉ番目のデータブロックと（ｉ＋１）番目のデータブロックに対するパリティブロックをパリティブロックｉ・（ｉ＋１）と表すと、
前記対象データドライブが偶数番目２ｍ（ｍは自然数）のデータドライブである場合には、パリティブロック１・２乃至パリティブロック（２ｍ−１）・２ｍ及びパリティブロック２ｍ・（２ｍ＋１）乃至パリティブロック（Ｎ−１）・Ｎであり、
前記対象データドライブが奇数番目（２ｍ＋１）（ｍは自然数）のデータブロックである場合には、パリティブロック１・２乃至パリティブロック（２ｍ−１）・２ｍ及びパリティブロック２（ｍ＋１）・（２（ｍ＋１）＋１）乃至パリティブロック（Ｎ−１）・Ｎであることを特徴とする読出し方法。
【請求項１３】
請求項３乃至８の何れか１項に記載の書込み方法をコンピュータに行わせるためのプログラム。
【請求項１４】
請求項９乃至１２の何れか１項に記載の読出し方法をコンピュータに行わせるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データドライブにパリティドライブを付加して構成される冗長化ドライブ群並びにこれを用いた書込み方法及び読出し方法に関する。
【背景技術】
【０００２】
従来のＲＡＩＤ(Redundant Array of Inexpensive Disks)は、ＲＡＩＤ１を除いて、複数のドライブが故障した場合にデータは失われてしまう。また、ＲＡＩＤ１は、ミラーリングされる関係にある両方のドライブが故障した場合には、データは失われてしまう。
【０００３】
このようなＲＡＩＤの問題点を解消するものとして、複数のデータドライブを環状に並べ、データドライブと同一数のパリティドライブを用意し、各パリティドライブが相互に隣接する２つのデータドライブに対応するようにした冗長ドライブ群が発明されている（特許文献１参照）。
【特許文献１】特開２０００−２０７１３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１に記載されている発明では、全てのデータドライブが異常となった場合には、データを復元することができない（特許文献１第２７段落参照）。
【０００５】
そこで、本発明は、一部のデータドライブが異常となった場合のみならず、全てのデータドライブが異常となった場合であってもデータを復元することを可能とする冗長化ドライブ群並びにこれを用いた書込み方法及び読出し方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明によれば、３以上の奇数個のデータドライブと、前記データドライブと同一数のパリティドライブと、を備え、前記奇数個のパリティドライブのうちの１個のパリティドライブは、全てのデータドライブに対応して設けられ、前記奇数個のパリティドライブのうちの前記１個のパリティドライブ以外のパリティドライブの各々は、相互に隣接するデータドライブに対応して設けられることを特徴とする冗長化ドライブ群が提供される。
【０００７】
本発明によれば、上記の冗長化ドライブ群において、前記奇数個のパリティドライブのうちの前記全てのデータドライブに対応して設けられた１個のパリティドライブは、前記奇数個のデータドライブが全て正常である場合には、全てのデータドライブに格納されているデータを基に算出されたパリティを格納し、前記奇数個のデータドライブが全て正常である場合以外の場合には、全てのデータドライブが正常であったならばこれらのデータドライブに格納されたであろうデータを基に算出されたパリティを格納し、前記奇数個のパリティドライブのうちの前記１個のパリティドライブ以外のパリティドライブの各々は、対応する２つのデータドライブが共に正常である場合には、該対応する２つのデータドライブに格納されているデータを基に算出されたパリティを格納し、該対応する２つのデータドライブのうちの一方のデータドライブが正常でない場合には、該対応する２つのデータドライブのうちの正常なデータドライブに格納されているデータ及び正常でないデータドライブが正常であったならばこのデータドライブに格納されたであろうデータを基に算出されたパリティを格納することを特徴とする冗長化ドライブ群が提供される。
【０００８】
更に、本発明によれば、上記の冗長化ドライブ群を用いた書込み方法において、対象データドライブにこれまで書き込まれていたデータ、前記対象データドライブにこれから書き込むべきデータ並びに前記対象データドライブ及び該対象データドライブに隣接するデータドライブに対応するパリティドライブにこれまで書き込まれていたパリティを基に、前記対象データドライブ及び該対象ドライブに隣接するデータドライブに対応するパリティドライブにこれから書き込むべきパリティを算出して、該算出されたパリティを前記対象データドライブ及び該対象ドライブに隣接するデータドライブに対応するパリティドライブに書き込むことを特徴とする書込み方法が提供される。
【０００９】
更に、本発明によれば、上記冗長化ドライブ群を用いた書込み方法において、対象データドライブにこれまで書き込まれていたデータ、前記対象データドライブにこれから書き込むべきデータ並びに全てのデータドライブに対応するパリティドライブにこれまで書き込まれていたパリティを基に、前記全てのデータドライブに対応するパリティドライブにこれから書き込むべきパリティを算出して、該算出されたパリティを前記全てのデータドライブに対応するパリティドライブに書き込むことを特徴とする書込み方法が提供される。
【００１０】
更に、本発明によれば、上記冗長化ドライブ群を用いた書込み方法において、前記対象データドライブにこれまで書き込まれていたデータを、前記対象データドライブに隣接するデータドライブに格納されているデータ並びに前記対象データドライブ及び前記隣接するデータドライブに対応するパリティドライブに格納されているパリティを基に復元することを特徴とする書込み方法が提供される。
【００１１】
更に、本発明によれば、上記の冗長化ドライブ群を用いた書込み方法において、前記対象データドライブにこれまで書き込まれていたデータを、前記対象データドライブ以外の全てのデータドライブに格納されているデータ及び全てのドライブに対応するパリティドライブに格納されているパリティを基に復元することを特徴とする書込み方法が提供される。
【００１２】
更に、本発明によれば、上記の冗長化ドライブ群を用いた書込み方法において、前記対象データドライブにこれまで書き込まれていたデータを、全てのドライブに対応するパリティドライブに格納されているパリティ及び何れかの相互に隣接するデータドライブに対応するパリティドライブのうちの一部のパリティドライブに格納されているパリティを基に、対象ドライブのデータを復元することを特徴とする書込み方法が提供される。
【００１３】
更に、本発明によれば、上記の書込み方法において、何れかの相互に隣接するデータドライブに対応するパリティドライブのうちの一部のパリティドライブとは、ｉ番目のデータブロックと（ｉ＋１）番目のデータブロックに対するパリティブロックをパリティブロックｉ・（ｉ＋１）と表すと、前記対象データドライブが偶数番目２ｍ（ｍは自然数）のデータドライブである場合には、パリティブロック１・２乃至パリティブロック（２ｍ−１）・２ｍ及びパリティブロック２ｍ・（２ｍ＋１）乃至パリティブロック（Ｎ−１）・Ｎであり、前記対象データドライブが奇数番目（２ｍ＋１）（ｍは自然数）のデータブロックである場合には、パリティブロック１・２乃至パリティブロック（２ｍ−１）・２ｍ及びパリティブロック２（ｍ＋１）・（２（ｍ＋１）＋１）乃至パリティブロック（Ｎ−１）・Ｎであることを特徴とする書込み方法が提供される。
【００１４】
更に、本発明によれば、上記の冗長化ドライブ群を用いた読出し方法において、対象データドライブに隣接するデータドライブに格納されているデータ並びに前記対象データドライブ及び前記隣接するデータドライブに対応するパリティドライブに格納されているパリティを基に、前記対象ドライブのデータを復元することを特徴とする読出し方法が提供される。
【００１５】
更に、本発明によれば、上記の冗長化ドライブ群を用いた読出し方法において、対象データドライブ以外の全てのデータドライブに格納されているデータ及び全てのドライブに対応するパリティドライブに格納されているパリティを基に、前記対象ドライブのデータを復元することを特徴とする読出し方法が提供される。
【００１６】
更に、本発明によれば、上記の冗長化ドライブ群を用いた読出し方法において、全てのドライブに対応するパリティドライブに格納されているパリティ及び何れかの相互に隣接するデータドライブに対応するパリティドライブのうちの一部のパリティドライブに格納されているパリティを基に、対象ドライブのデータを復元することを特徴とする読出し方法が提供される。
【００１７】
更に、本発明によれば、上記の読出し方法において、何れかの相互に隣接するデータドライブに対応するパリティドライブのうちの一部のパリティドライブとは、ｉ番目のデータブロックと（ｉ＋１）番目のデータブロックに対するパリティブロックをパリティブロックｉ・（ｉ＋１）と表すと、前記対象データドライブが偶数番目２ｍ（ｍは自然数）のデータドライブである場合には、パリティブロック１・２乃至パリティブロック（２ｍ−１）・２ｍ及びパリティブロック２ｍ・（２ｍ＋１）乃至パリティブロック（Ｎ−１）・Ｎであり、前記対象データドライブが奇数番目（２ｍ＋１）（ｍは自然数）のデータブロックである場合には、パリティブロック１・２乃至パリティブロック（２ｍ−１）・２ｍ及びパリティブロック２（ｍ＋１）・（２（ｍ＋１）＋１）乃至パリティブロック（Ｎ−１）・Ｎであることを特徴とする読出し方法が提供される。
【発明の効果】
【００１８】
本発明によれば、一部のデータドライブが異常となった場合のみならず、全てのデータドライブが異常となった場合であってもデータを復元することが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照して本発明を実施するための最良の形態について詳細に説明する。
【００２０】
本発明は、記憶装置を持つコンピュータシステムにおいて、データドライブに加え、関連する全てのデータブロックのパリティブロックを持つパリティドライブと各対（ペア）のデータブロックに関連するパリティブロックを持つパリティドライブにて冗長化構成することを特徴とする。同時に任意の２台のドライブ故障が発生した場合にデータ復旧可能であり、かつ、データドライブが全て故障した場合でも全てのデータドライブのデータの復旧が可能となる。
【００２１】
［１  パリティ情報］
［１．１  データとパリティの関連性について］
図１はＮ個のデータドライブを使用する場合のデータブロックとパリティブロックの関連図である。ただし、データドライブの総数Ｎは３以上の奇数である。パリティドライブ内の各パリティブロックは実線で関連付けられたデータブロックに関連するパリティ情報を保持する。
【００２２】
各パリティドライブ内のパリティブロックには以下の関係式を満たすパリティ情報を保持する。データブロックが更新される時には関連性を保つためデータブロックの内容とともに関連するパリティブロックの更新も同時に行う必要がある。
【００２３】
パリティブロックｎ−１・ｎ
＝データブロックｎ−１  ＸＯＲ  データブロックｎ
＜式１＞
（ただし、ｎ＝２、３、…、Ｎ）
パリティブロック１〜Ｎ
＝データブロック１  ＸＯＲ
データブロック２  ＸＯＲ
…
データブロックＮ−１  ＸＯＲ
データブロックＮ
＜式２＞
但し、パリティブロックｎ−１・ｎは、データブロックｎ−１とデータブロックｎに関連したパリティブロックであることを示し、パリティブロック１〜Ｎは、データブロック１乃至データブロックＮの全てに関連したパリティブロックであることを示し、ＸＯＲは排他的論理和(exclusive or)を示す。排他的論理の計算は、図２に示すような論理ゲートを用いて行われる。図２（ａ）は、２入力の場合の論理ゲートを示し、図２（ｂ）は、３入力の場合の論理ゲートを示し、図２（ｃ）及び図２（ｄ）は、Ｎ入力の場合の論理ゲートを示す。また、ＣＰＵを用いる場合には、ＣＰＵの内部又は外部に設けられているＡＬＵにより図２に示すような論理ゲートを実現する。また、３入力以上の場合には、レジスタも併用し、図２（ａ）の出力ｙを一旦レジスタに格納し、その後、入力ｘ１として論理ゲートに与え、該論理ゲートの他端に入力されるデータと排他的論理和を取るようにしてもよい。
【００２４】
［１．２  リード／ライトの動作概要］
リード／ライトの動作概要を図３及び４のフローチャートに示す。これらのフローチャートを参照して説明されている各ステップは、ハードウェアによって実現することもできるが、ＣＰＵを内蔵するコンピュータがプログラムを読み込んで実行することによっても実現することができる。
【００２５】
ハードウェアによって実現する場合には、例えば、図５に示すようなリード／ライト装置によりリード／ライトを行う。
【００２６】
図５を参照すると、リード／ライト装置は、データ読出部２５１、パリティ読出部２５２、リード／ライト判断部２５３、データドライブ利用可能判断部２５４、データ再生部２５５、パリティ生成部２５６、データ書込部２５７及びパリティ書込部２５８を備える。
【００２７】
リード又はライトの判断は、リード／ライト判断部２５３が、ライト命令又はリード命令を判別することにより行う。リード命令及びライト命令には、アクセス先のデータドライブを識別するための識別情報、アクセス先のアドレスを識別するためのアドレスが含まれ、ライト命令には書き込むべきデータが含まれる。
【００２８】
［２  リード処理］
［２．１  対象データブロックのデータドライブが利用可能である場合（２０２→２０８でＹＥＳ）］
この場合には、データ読出部２５１により、対象のデータドライブから読み出す（２０９）。
【００２９】
［２．２  対象データブロックのあるドライブが利用可能でない場合（２０２→２０８でＮＯ）〜その１〜］
対象データブロックに関連するパリティブロックの情報（パリティ読出部２５２により読み出されたもの）と、該パリティブロックが他方において関連付けられているデータブロックの情報（データ読出部２５１により読み出されたもの）を用いて、データ再生部２５５により、対象データブロック内の情報を復元する（２１５）。データブロックの復元は対象データブロックとアクセス可能なドライブにより以下のうちいずれか計算可能な式を用いる。
【００３０】
データブロック１
＝データブロック２  ＸＯＲ  パリティブロック１
＜式３−１−１＞
データブロック１
＝データブロック２  ＸＯＲ
データブロック３  ＸＯＲ
…
ＸＯＲ
データブロックＮ  ＸＯＲ
パリティブロック１〜Ｎ
＜式３−１−２＞
＜式３−１−１＞によれば、隣接するデータブロック並びに対象データブロック１及び隣接するデータブロックに関連するパリティブロックを基に対象ブロック１のデータを復元することが可能となる。
【００３１】
＜式３−１−２＞によれば、対象データブロック１以外の全てのデータブロック及びパリティブロック１〜Ｎを基に対象データブロック１のデータを復元することが可能となる。
【００３２】
データブロックＮ
＝データブロックＮ−１  ＸＯＲ
パリティブロックＮ−１・Ｎ
＜式３−２−１＞
データブロックＮ
＝データブロック１  ＸＯＲ
データブロック２  ＸＯＲ
…
ＸＯＲ
データブロックＮ−１  ＸＯＲ
パリティブロック１〜Ｎ
＜式３−２−２＞
＜式３−２−１＞によれば、隣接するデータブロック並びに対象データブロックＮ及び隣接するデータブロックに関連するパリティブロックを基に対象ブロックＮのデータを復元することが可能となる。
【００３３】
＜式３−２−２＞によれば、対象データブロックＮ以外の全てのデータブロック及びパリティブロック１〜Ｎを基に対象データブロックＮのデータを復元することが可能となる。
【００３４】
データブロックｎ
＝データブロックｎ＋１  ＸＯＲ
パリティブロックｎ・ｎ＋１
（ｎ＝２、３、…、Ｎ−１）
＜式３−３−１＞
データブロックｎ
＝データブロックｎ−１  ＸＯＲ
パリティブロックｎ−１・ｎ
（ｎ＝２、３、…、Ｎ−１）
＜式３−３−２＞
データブロックｎ
＝データブロック１  ＸＯＲ
…
ＸＯＲ
データブロックｎ−１  ＸＯＲ
データブロックｎ＋１  ＸＯＲ
…
ＸＯＲ
データブロックＮ  ＸＯＲ
パリティブロック１〜Ｎ
（ｎ＝２、３、…、Ｎ−１）
＜式３−３−３＞
＜式３−３−１＞及び＜式３−３−２＞によれば、隣接するデータブロック並びに対象データブロックＮ及び隣接するデータブロックに関連するパリティブロックを基に対象ブロックＮのデータを復元することが可能となる。
【００３５】
＜式３−３−３＞によれば、対象データブロックＮ以外の全てのデータブロック及びパリティブロック１〜Ｎを基に対象データブロックＮのデータを復元することが可能となる。
【００３６】
［２．３  データドライブが全数故障した場合（２０２→２０８でＮＯ）〜その２］
パリティドライブが全て利用可能であれば下記の式により全データドライブの情報が復元可能である（２１５）。
【００３７】
［２．３．１  偶数番号（２ｍ）のデータブロックのリード］
データブロックａ
＝パリティブロック１〜Ｎ  ＸＯＲ
パリティブロック１・２  ＸＯＲ
…
パリティブロック（２ｍ−１）・２ｍ  ＸＯＲ
パリティブロック２ｍ・（２ｍ＋１）  ＸＯＲ
…
パリティブロック（Ｎ−１）・Ｎ
＜式４−１＞
［２．３．２  奇数番号（２ｍ＋１）のデータブロックのリード］
データブロックｂ
＝パリティブロック１〜Ｎ  ＸＯＲ
パリティブロック１・２  ＸＯＲ
…
パリティブロック（２ｍ−１）・２ｍ  ＸＯＲ
パリティブロック２（ｍ＋１）・（２（ｍ＋１）＋１）  ＸＯＲ
…
パリティブロック（Ｎ−１）・Ｎ
＜式４−２＞
［３  ライト処理］
［３．１  対象データブロックｎのデータドライブが利用可能な場合（２０２→２０３でＹＥＳ）］
それに関連するパリティブロックの更新を下記の式に基づいてデータブロックｎに関連するパリティ情報を消去した後に新しいデータブロックｎを含めた再計算を行う（２０４）。
【００３８】
データ書込部２５７とパリティ書込部２５８により、＜式５＞＜式６＞によって生成された新しいパリティ情報とライトデータをパリティブロックとデータブロックにライトする（２０５、２０６）。
【００３９】
新しいパリティブロック１〜Ｎ
＝現在パリティブロック１〜Ｎ  ＸＯＲ
現在データブロックｎ  ＸＯＲ
新しいデータブロックｎ
（ｎ＝１、２、３、…、Ｎ）
＜式５＞
新しいパリティブロックｎ−１・ｎ
＝現在パリティブロックｎ−１・ｎ  ＸＯＲ
現在データブロックｎ  ＸＯＲ
新しいデータブロックｎ
（ｎ＝２、３、…、Ｎ）
＜式６＞
新しいパリティブロックｎ・ｎ＋１
＝現在パリティブロックｎ・ｎ＋１  ＸＯＲ
現在データブロックｎ  ＸＯＲ
新しいデータブロックｎ
（ｎ＝１、２、３、…、Ｎ−１）
＜式７＞
現在のパリティは、パリティ読出部２５２により行う。現在のデータブロックの読出しは、データ読出部２５１により行う。＜式５＞乃至＜式７＞の計算は、パリティ生成部２５６により行う。
【００４０】
［３．２  対象データブロックのドライブが利用可能でない場合（２０２→２０３でＮＯ）
まず、データ再生部２５５により、その対象データブロックの古い情報を再生する（２１１）。この再生のためには、ステップ２１５の方法を利用する。具体的には、上記［２．２］又は［２．３］で説明した方法を利用する。
【００４１】
次に、パリティ生成部２５６により、再生した情報と、関連するパリティブロックの現在の情報と、新たにライトする情報から、関連するパリティブロックの新しい情報を計算し、パリティ書込部２５８により、書き込む（２１３）。具体的には、上記［３．１］で説明した方法を利用して関連する３種類のパリティを計算し、これらをそれぞれに対応するパリティドライブに書き込む。
【実施例１】
【００４２】
本発明の実施例はＮ＝５の場合、図６に示すようになる。
【００４３】
ここでは２つのドライブが故障した場合とデータドライブがすべて故障した場合の障害時のリードの実施例を示す。
【００４４】
［１．  ２つのドライブが故障］
［１．１  故障が２つともパリティドライブであった場合］
データドライブはすべて利用可能であるためデータをリードすることができる。
【００４５】
［１．２  ２つの故障がともにデータドライブであった場合］
［１．２．１  データドライブ１（３０１）とデータドライブ５（３０５）が故障した場合］
データドライブ１（３０１）内のデータブロック１（３１１）はパリティブロック１・２（３１６）とデータブロック２（３１２）より＜式３−１−１＞より再生可能である。
【００４６】
データドライブ５（３０５）内のデータブロック５（３１５）はパリティブロック４・５（３１９）とデータブロック４（３１４）より＜式３−２−１＞より再生可能である。
【００４７】
［１．２．２  データドライブ１（３０１）とデータドライブ２（３０２）が故障した場合］
データドライブ２（３０２）内のデータブロック２（３１２）はデータブロック３（３１３）とパリティブロック２・３（３１７）より＜式３−３−１＞より再生可能である。
【００４８】
データドライブ１（３０１）内のデータブロック１（３１１）は上記により再生されたデータブロック２（３１２）とパリティブロック１・２（３１６）から＜式３−３−２＞より再生可能である。
【００４９】
また、データドライブ１（３０１）内のデータブロック１（３１１）は、パリティ１〜５、パリティ１・２、パリティ３・４からも再生可能である。
【００５０】
［１．２．３  （データドライブ２（３０２）とデータドライブ３（３０３）が故障した場合］
データブロック２（３１２）はパリティブロック１・２（３１６）とデータブロック１（３１１）から＜式３−３−２、ｎ＝２＞により再生可能である。
【００５１】
データブロック３（３１３）はパリティブロック３・４（３１８）とデータブロック４（３１４）から＜式３−３−１、ｎ＝３＞により再生可能である。
【００５２】
［１．３  ２つの故障がパリティドライブとデータドライブに分散してあった場合］
［１．３．１  データドライブ１（３０１）とパリティドライブ１〜５（３００）のドライブが故障した場合］
データブロック１（３１１）の復旧はパリティブロック１・２（３１６）とデータブロック２（３１２）から＜式３−１−１＞により再生可能である。
【００５３】
［１．３．２  データドライブ１（３０１）とパリティドライブ１・２（３１６）が故障した場合］
データブロック１（３１１）の復旧はデータブロック２（３１２）乃至データブロック５（３１５）とパリティブロック１〜５（３１０）より＜式３−１−２＞により再生可能である。
【００５４】
［１．３．３  データドライブ２（３０２）とパリティドライブ１〜５（３００）のドライブが故障した場合］
データブロック２（３１２）の復旧はパリティブロック１・２（３１６）とデータブロック１（３１１）から＜式３−３−２，ｎ＝２＞より再生可能である。
【００５５】
［１．３．４  データドライブ２（３０２）とパリティドライブ１・２（３０６）が故障した場合］
データブロック２（３１２）の復旧はパリティブロック２・３（３１７）とデータブロック３（３１３）＜式３−３−１，ｎ＝２＞から再生可能である
［２．データドライブすべてが故障したとき］
以下のようにしてデータブロックが再生可能である。
【００５６】
データブロック１（３１１）はパリティブロック２・３（３１７）とパリティブロック４・５（３１９）とパリティブロック１〜５（３１０）から＜式４−１＞より再生可能である。
【００５７】
データブロック２（３１２）はパリティブロック１・２（３１６）とパリティブロック２・３（３１７）とパリティブロック４・５（３１９）とパリティブロック１〜５（３１０）から＜式４−２＞より再生可能である。
【００５８】
データブロック３（３１３）はパリティブロック１・２（３１６）とパリティブロック４・５（３１９）とパリティブロック１〜５（３１０）から＜式４−１＞より再生可能である。
【００５９】
データブロック４（３１４）はパリティブロック１・２（３１６）とパリティブロック３・４（３１８）とパリティブロック４・５（３１９）とパリティブロック１〜５（３１０）＜式４−２＞より再生可能である。
【００６０】
データブロック５（３１５）はパリティブロック１・２（３１６）とパリティブロック３・４（３１８）とパリティブロック１〜５（３１０）＜式４−１＞より再生可能である。
これらの関係の一覧表を図７に示す。また、Ｎが３の場合の同様な関係の一覧表を図８に示し、Ｎが７の場合の同様な関係の一覧表を図９に示し、Ｎが９の場合の同様な関係の一覧表を図１０に示す。Ｎが１の場合には、パリティブロック１を用いて、データブロック１を再生することが可能であることは明らかである。
【００６１】
図１１は、Ｎ＝１の場合、Ｎ＝３の場合、Ｎ＝５の場合、Ｎ＝７の場合及びＮ＝９の場合の一覧表を１つにまとめたものである。Ｎ＝１の場合には、符号３０１で示す逆Ｌ字型の枠で囲まれる領域内の○で示されるパリティブロックが利用され、Ｎ＝３の場合には、符号３０３で示す逆Ｌ字型の枠で囲まれる領域内の○で示されるパリティブロックが利用され、Ｎ＝５の場合には、符号３０５で示す逆Ｌ字型の枠で囲まれる領域内の○で示されるパリティブロックが利用され、Ｎ＝７の場合には、符号３０７で示す逆Ｌ字型の枠で囲まれる領域内の○で示されるパリティブロックが利用され、Ｎ＝９の場合には、符号３０９で示す逆Ｌ字型の枠で囲まれる領域内の○で示されるパリティブロックが利用される。
【００６２】
図１１から明らかなように、Ｎの値を２ｍ＋１（ｍ＝０、１、２、・・・）から２（ｍ＋１）＋１に増加させるためには、Ｎの値が２ｍ＋１である場合に利用するパリティブロックをそのまま利用し、拡張領域については、所定の規則（ｍの値に依存しない一定の規則）に従って、どのパリティブロックを利用するかを決定する。
【００６３】
すなわち、データブロックの数が２ｍ＋１から増加して２（ｍ＋１）＋１となった場合、１乃至２（ｍ＋１）＋１のデータブロックのうちの１乃至２ｍ＋１のデータブロックを再生するためには、Ｎの値が２ｍ＋１であった場合の利用パリティを全て利用し（但し、全データブロックに対するパリティは、データブロック１乃至２ｍ＋１に対するパリティブロックからデータブロック１乃至２（ｍ＋１）＋１に対するパリティブロックに変更されている。）、更に、データブロック２（ｍ＋１）及びデータブロック２（ｍ＋１）＋１に対するパリティブロックも追加して利用する。
【００６４】
データブロック２（ｍ＋１）を再生するためには、データブロック２ｍ＋１を再生するために利用するパリティブロックを全て利用し、更に、データブロック２ｍ＋１及びデータブロック２（ｍ＋１）に対するパリティブロック及びデータブロック２（ｍ＋１）及びデータブロック２（ｍ＋１）＋１に対するパリティブロックを利用する。
【００６５】
データブロック２（ｍ＋１）＋１を再生するためには、データブロック２ｍ＋１を再生するために利用するパリティブロックを全て利用し、更に、データブロック２ｍ＋１及びデータブロック２（ｍ＋１）に対するパリティブロック及びデータブロック２（ｍ＋１）を利用する。
【００６６】
図７乃至１１より＜式４−１＞及び＜式４−２＞は明らかである。
【００６７】
なお、Ｎの値が偶数である場合には、パリティブロック１〜Ｎの値が、例えば、全データブロックの値が０である場合であっても、全データブロックの値が１である場合であっても、０となってしまい区別が付かないことより、Ｎの値が偶数である場合には、本発明を利用することができない。
【産業上の利用可能性】
【００６８】
本発明は、エラー耐性があり、信頼性のあるデータの書込み及び読出しに利用することができる。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施形態による冗長化ドライブ群の構成を示す概念図である。
【図２】本発明の実施形態によるパリティ生成部の構成を示す回路図である。
【図３】本発明の実施形態による冗長化ドライブ群を用いた書込み方法及び読出し方法を示す第１のフローチャートである。
【図４】本発明の実施形態による冗長化ドライブ群を用いた書込み方法及び読出し方法を示す第２のフローチャートである。
【図５】本発明の実施形態による書込み／読出し装置の構成を示すブロック図である。
【図６】本発明の実施例１による冗長化ドライブ群の構成を示す概念図である。
【図７】データドライブの数が５である場合において、全てのデータブロックが異常となった場合に、データを再生するために利用するパリティを示す表である。
【図８】データドライブの数が３である場合において、全てのデータブロックが異常となった場合に、データを再生するために利用するパリティを示す表である。
【図９】データドライブの数が７である場合において、全てのデータブロックが異常となった場合に、データを再生するために利用するパリティを示す表である。
【図１０】データドライブの数が９である場合において、全てのデータブロックが異常となった場合に、データを再生するために利用するパリティを示す表である。
【図１１】データドライブの数が１、３、５、７又は９である場合において、全てのデータブロックが異常となった場合に、データを再生するために利用するパリティを示す表である。
【符号の説明】
【００７０】
２５１  データ読出部
２５２  パリティ読出部
２５３  リード／ライト判断部
２５４  データドライブ利用可能判断部
２５５  データ再生部
２５６  パリティ生成部
２５７  データ書込部
２５８  パリティ書込部
【図１】
2006003971.tif 000003
【図２】
2006003971.tif 000004
【図３】
2006003971.tif 000005
【図４】
2006003971.tif 000006
【図５】
2006003971.tif 000007
【図６】
2006003971.tif 000008
【図７】
2006003971.tif 000009
【図８】
2006003971.tif 000010
【図９】
2006003971.tif 000011
【図１０】
2006003971.tif 000012
【図１１】
2006003971.tif 000013