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