(57)【要約】【課題】  ２種類以上のパリティを用いてデータの冗長化を行うＲＡＩＤのようなストレージ装置において、シーケンシャルリードの性能を改善するマッピングを行う。【解決手段】  Ｎ個のデータストリップと異なる種類のＭ個のパリティストリップからなるストライプをＮ＋Ｍ個のディスクに分散して格納することで、データの冗長化を実現する。Ｎ＋Ｍ個のディスクが複数のストライプを格納する際、連続する２つのストライプ間で同じディスクにパリティストリップが連続して格納されないように、各ストライプに含まれるデータストリップとパリティストリップの格納先のディスクを決定する。【選択図】図３
2006171957.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ個のデータストリップと異なる種類のＭ個のパリティストリップからなるストライプをＮ＋Ｍ個の記憶装置に分散して格納する制御を行うことで、データの冗長化を実現するストレージ制御装置であって、
前記Ｎ＋Ｍ個の記憶装置が複数のストライプを格納する際、連続する２つのストライプ間で同じ記憶装置にパリティストリップが連続して格納されないように、各ストライプに含まれるＮ個のデータストリップとＭ個のパリティストリップの格納先の記憶装置を決定する決定手段と、
前記Ｎ個のデータストリップと２個以上のパリティストリップを、決定されたそれぞれの格納先の記憶装置に格納する制御を行う制御手段と
を備えることを特徴とするストレージ制御装置。
【請求項２】
前記決定手段は、前記複数のストライプに含まれるパリティストリップが前記Ｎ＋Ｍ個の記憶装置に均等に分散されるように、前記格納先の記憶装置を決定することを特徴とする請求項１記載のストレージ制御装置。
【請求項３】
前記決定手段は、同じ種類のパリティストリップを格納する記憶装置の番号がストライプ毎にＭ個ずつずれるように、前記格納先の記憶装置を決定することを特徴とする請求項２記載のストレージ制御装置。
【請求項４】
前記決定手段は、前記複数のストライプに含まれる同じ種類のパリティストリップが前記Ｎ＋Ｍ個の記憶装置に均等に分散されるように、前記格納先の記憶装置を決定することを特徴とする請求項２記載のストレージ制御装置。
【請求項５】
前記決定手段は、同じ種類のパリティストリップを格納する記憶装置の番号がストライプ毎にＭ個ずつずれるように、かつ、Ｍ個のパリティストリップを格納する記憶装置の番号が（Ｎ＋Ｍ）／Ｍストライプ毎に巡回するように、前記格納先の記憶装置を決定することを特徴とする請求項４記載のストレージ制御装置。
【請求項６】
前記決定手段は、同じ種類のパリティストリップを格納する記憶装置の番号がストライプ毎に１個ずつずれるように、かつ、各ストライプ内でＭ個のパリティストリップを格納する記憶装置の番号が連続しないように、前記格納先の記憶装置を決定することを特徴とする請求項４記載のストレージ制御装置。
【請求項７】
前記決定手段は、前記複数のストライプに含まれるデータストリップが前記Ｎ＋Ｍ個の記憶装置に均等に分散されるように、前記格納先の記憶装置を決定することを特徴とする請求項１または４記載のストレージ制御装置。
【請求項８】
前記決定手段は、同じ種類のパリティストリップを格納する記憶装置の番号がストライプ毎にＭ個ずつずれるように、かつ、Ｍ個のパリティストリップを格納する記憶装置の番号が（Ｎ＋Ｍ）／Ｍストライプ毎に巡回するように、かつ、Ｍ個のデータストリップを格納する記憶装置の番号が（Ｎ＋Ｍ）／Ｍストライプ毎に巡回するように、前記格納先の記憶装置を決定することを特徴とする請求項７記載のストレージ制御装置。
【請求項９】
データの冗長化を実現するために、Ｎ個のデータストリップと異なる種類のＭ個のパリティストリップからなるストライプを分散して格納するＮ＋Ｍ個の記憶装置と、
前記Ｎ＋Ｍ個の記憶装置が複数のストライプを格納する際、連続する２つのストライプ間で同じ記憶装置にパリティストリップが連続して格納されないように、各ストライプに含まれるＮ個のデータストリップとＭ個のパリティストリップの格納先の記憶装置を決定する決定手段と、
前記Ｎ個のデータストリップと２個以上のパリティストリップを、決定されたそれぞれの格納先の記憶装置に格納する制御を行う制御手段と
を備えることを特徴とするストレージ装置。
【請求項１０】
Ｎ個のデータストリップと異なる種類のＭ個のパリティストリップからなるストライプをＮ＋Ｍ個の記憶装置に分散して格納する制御を行うことで、データの冗長化を実現するプロセッサのためのプログラムであって、
前記Ｎ＋Ｍ個の記憶装置が複数のストライプを格納する際、連続する２つのストライプ間で同じ記憶装置にパリティストリップが連続して格納されないように、各ストライプに含まれるＮ個のデータストリップとＭ個のパリティストリップの格納先の記憶装置を決定し、
前記Ｎ個のデータストリップと２個以上のパリティストリップを、決定されたそれぞれの格納先の記憶装置に格納する
処理を前記プロセッサに実行させることを特徴とするプログラム。
【請求項１１】
Ｎ個のデータストリップと異なる種類のＭ個のパリティストリップからなるストライプをＮ＋Ｍ個の記憶装置に分散して格納することで、データの冗長化を実現するストレージ制御方法であって、
前記Ｎ＋Ｍ個の記憶装置が複数のストライプを格納する際、連続する２つのストライプ間で同じ記憶装置にパリティストリップが連続して格納されないように、各ストライプに含まれるＮ個のデータストリップとＭ個のパリティストリップの格納先の記憶装置を決定し、
前記Ｎ個のデータストリップと２個以上のパリティストリップを、決定されたそれぞれの格納先の記憶装置に格納する
ことを特徴とするストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＩＤ（Redundant Array of Inexpensive Disks）のような複数の記憶装置にデータおよびパリティを分散して格納する制御を行うストレージ制御装置および方法に関する。
【背景技術】
【０００２】
ＲＡＩＤは、複数のハードディスクを組み合わせて、冗長化された１台のハードディスクとして管理する技術であり、ディスクへのデータ配置やデータの冗長化の方法により、ＲＡＩＤ０〜ＲＡＩＤ６の７つのレベルに分類されている。このうち、ＲＡＩＤ３〜ＲＡＩＤ６では、データから生成されたパリティをデータとは別に格納することで、冗長化を実現している（例えば、特許文献１参照）。
【０００３】
まず、ＲＡＩＤ５のマッピングについて説明する。ＲＡＩＤ５では、ＲＡＩＤ４で固定されていたパリティ担当のディスクを、ストライプ毎に変更してパリティを分散させることで、性能改善を行っている。例えば、（４＋１）ＲＡＩＤ構成の場合、ＲＡＩＤ５のマッピングによる１ストライプの配置は、図１５に示すようになる。
【０００４】
ここで、（Ｎ＋１）ＲＡＩＤ構成とは、（Ｎ＋１）個のディスクのうち、Ｎ個のディスクがデータストリップを担当し、１つのディスクがパリティストリップを担当する構成を表す。図１５の例では、Ｄｉｓｋ０〜Ｄｉｓｋ３の４つのディスクにそれぞれ割り当てられたデータＤ００〜Ｄ０３と、Ｄｉｓｋ４に割り当てられたパリティＰ００から、１ストライプが構成されている。データＤ００〜Ｄ０３は、Ｄ００からの添え字の順番に並べて配置される。
【０００５】
こうして格納されたデータを読み出す通常のリード処理では、パリティＰ００を必要としない。このため、Ｄ００〜Ｄ０３のリード要求に対しては、パリティが配置されたＤｉｓｋ４は使用されない。
【０００６】
Ｄｉｓｋ０〜Ｄｉｓｋ４に複数のストライプが格納されている場合、異なるストライプに跨るデータを添え字の順番に読み出すリード要求も考えられる。このようなシーケンシャルなリード処理における性能を考慮すると、次のストライプの先頭となるデータＤ０４は、前のストライプでパリティＰ００が配置され、アクセスがなかったＤｉｓｋ４に配置するのが有効である。例えば、各ストライプの先頭データの位置をストライプ毎に１つずつずらした場合、データとパリティの配置は図１６に示すようになる。
【０００７】
一般には、（Ｎ＋１）ＲＡＩＤ構成に対応する（Ｎ＋１）ストライプの周期で、データとパリティのマッピングが行われる。ここではＮ＝４なので、５ストライプ周期である。
次に、ＲＡＩＤ６のマッピングについて説明する。ＲＡＩＤ６は、複数ディスクの故障に対応したＲＡＩＤレベルである。ＲＡＩＤ６は、（Ｎ＋Ｍ）ＲＡＩＤ構成で表され、ＲＡＩＤ５と同じようにストライプ毎にパリティを持つ。パリティが割り当てられるディスクの数Ｍは、複数ディスクの故障に対応するため、２以上となる。このパリティとしては、通常、ＲＡＩＤ５相当のパリティＰと、これとは異なるパリティＱ、Ｒ、Ｓ等が用いられる。
【０００８】
以下の説明では、２つのディスクの故障に対応するため、Ｍ＝２としてパリティＰとパリティＱを用いる。
図１６に示したＲＡＩＤ５のマッピングをＲＡＩＤ６における（４＋２）ＲＡＩＤ構成に適用すると、データとパリティの配置は図１７に示すようになる。一般には、（Ｎ＋Ｍ）ストライプの周期での配置となり、すべてのディスクがパリティＰとパリティＱの両方を担当する。
【特許文献１】特開２０００−２５９３５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述した従来のＲＡＩＤ６のマッピングには、次のような問題がある。
図１７に示したＲＡＩＤ６のマッピングでは、連続する２つのストライプにおいて、同じディスクがパリティＰとパリティＱを担当することになり、この間データを担当しない。このため、シーケンシャルリードの性能という観点からは好ましくない。
【００１０】
本発明の課題は、２種類以上のパリティを用いてデータの冗長化を行うＲＡＩＤのようなストレージ装置において、シーケンシャルリードの性能を改善するマッピングを行うことである。
【課題を解決するための手段】
【００１１】
図１は、本発明のストレージ制御装置の原理図である。図１のストレージ制御装置１０１は、決定手段１１１および制御手段１１２を備え、Ｎ個のデータストリップと異なる種類のＭ個のパリティストリップからなるストライプをＮ＋Ｍ個の記憶装置１０２−１，１０２−２，．．．，１０２−（Ｎ＋Ｍ）に分散して格納する制御を行うことで、データの冗長化を実現する。
【００１２】
決定手段１１１は、記憶装置１０２−１，１０２−２，．．．，１０２−（Ｎ＋Ｍ）が複数のストライプを格納する際、連続する２つのストライプ間で同じ記憶装置にパリティストリップが連続して格納されないように、各ストライプに含まれるＮ個のデータストリップとＭ個のパリティストリップの格納先の記憶装置を決定する。制御手段１１２は、Ｎ個のデータストリップと２個以上のパリティストリップを、決定されたそれぞれの格納先の記憶装置に格納する制御を行う。
【００１３】
（Ｎ＋Ｍ）ＲＡＩＤ構成の場合、各記憶装置は１つ以上の磁気ディスク装置に相当する。複数のストライプが格納される場合、連続する２つのストライプ間で、同じ記憶装置が同じ種類または異なる種類のパリティストリップを連続して担当しないように、１ストライプ内のデータおよびパリティが記憶装置１０２−１，１０２−２，．．．，１０２−（Ｎ＋Ｍ）に分散して格納される。これにより、異なるストライプに跨るデータをシーケンシャルに読み出す際に、Ｎ＋Ｍ個の記憶装置へのアクセス頻度が平均化される。
【００１４】
ストレージ制御装置１０１は、例えば、後述する図２のコントローラ２１１、図１３のホストバスアダプタ１３１１、または図１４のホスト装置１４０１に対応する。
【発明の効果】
【００１５】
本発明によれば、Ｎ個のデータストリップと異なる種類のＭ個のパリティストリップからなるストライプをＮ＋Ｍ個の記憶装置に分散して格納するストレージ装置において、シーケンシャルリードの性能が改善される。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
図２は、実施形態のストレージシステムの構成例を示している。図２のストレージシステムは、ホスト装置２０１およびＲＡＩＤ装置２０２からなり、ＲＡＩＤ装置２０２は、コントローラ２１１およびＤｉｓｋ０〜Ｄｉｓｋ５の６つのディスクを備えるストレージ装置に対応する。
【００１７】
各ディスクは、１つ以上の磁気ディスク装置からなり、ホスト装置２０１は、各ディスクを１つの記憶装置とみなしてデータのリード／ライトを行う。コントローラ２１１に接続されるディスクの数は６つに限られるわけではない。
【００１８】
コントローラ２１１は、プロセッサ２２１、メモリ２２２、およびキャッシュメモリ２２３を備え、Ｄｉｓｋ０〜Ｄｉｓｋ５に対するアクセスを制御する。プロセッサ２２１は、メモリ２２２に格納されたプログラムを実行することにより、アクセス制御を行う。
【００１９】
次に、図３から図１１までを参照しながら、（Ｎ＋Ｍ）ＲＡＩＤ構成における本実施形態のマッピングの例について説明する。
（１）第１のマッピング
図１７に示した（４＋２）ＲＡＩＤ構成において、シーケンシャルリードの性能を考慮して、パリティが連続しないように配置を２つずつずらすと、図３のようになる。このマッピングでは、データとパリティがそれぞれまとめて配置され、同じ種類のパリティを担当するディスクはストライプ毎にＭ個ずつずれる。この場合、連続する２つのストライプにおいて、同じディスクがパリティを担当することがないため、シーケンシャルリードの性能が改善される。
【００２０】
一般に、（Ｎ＋Ｍ）ＲＡＩＤ構成において、ディスク数（Ｎ＋Ｍ）がパリティ数Ｍの倍数の関係にある場合、配置がＭディスクずつずれるため、（Ｎ＋Ｍ）／Ｍストライプの周期での配置となる。ここではＮ＝４、Ｍ＝２なので、３ストライプ周期である。しかし、図３のマッピングでは、Ｄｉｓｋ１、Ｄｉｓｋ３、およびＤｉｓｋ５にはパリティＰが配置されることはなく、Ｄｉｓｋ０、Ｄｉｓｋ２、およびＤｉｓｋ４にはパリティＱが配置されることはない。
【００２１】
一方で、１つのディスクの故障時のリード処理や再構築（Rebuild ）処理では、パリティＱを用いずにパリティＰのみを用いたＲＡＩＤ５相当の処理が、性能の観点等から採用される。この場合、パリティＰがまったく配置されないディスクとそれ以外のディスクとでは負荷が異なるため、マッピングを改善する余地がある。パリティのマッピング改善案としては、例えば、以下の（２）および（３）が考えられる。
（２）第２のマッピング
図４に示すように、Ｐ、Ｑの順番に並べるストライプと、Ｑ、Ｐの順番に並べるストライプの両方を設けて、すべてのディスクがＰとＱとの両方を担当するように配置する。そして、（Ｎ＋Ｍ）／Ｍストライプ毎に、ＰおよびＱを担当するディスクを巡回させる。このため、（Ｎ＋Ｍ）ストライプ周期での配置となる。
（３）第３のマッピング
図５に示すように、ＰとＱを連続させずに１ディスク以上離して配置する。ここでは、ＰとＱがＮ／Ｍ（＝２）ディスクだけ離して配置され、データとパリティの配置がストライプ毎に１ディスクずつずれる。したがって、すべてのディスクがＰとＱの両方を担当することができる。
【００２２】
また、１つのストライプ内では、ＰとＱがＮ／Ｍディスクだけ離して配置されるため、あるディスクがＰまたはＱのいずれかを担当する機会は、（Ｎ＋Ｍ）／Ｍストライプ周期で均等となる。しかし、各データとパリティの配置がＲＡＩＤ５とは異なる。
【００２３】
上記の２つの改善案は、ＲＡＩＤ６でのパリティＰとパリティＱが同等のパリティストリップではなく、役割が異なることで生じる、負荷の違いを削減するための改善案である。これらの中では、（２）の改善案の方が有効であると考えられる。
【００２４】
ところで、パリティＰとパリティＱとで役割が異なるように、データストリップについても役割が異なる場合がある。例えば、ＲＤＰ（Row-Diagonal Parity ）方式と呼ばれるＲＡＩＤ６では、データとＲＡＩＤ５のパリティＰとを用いて、対角パリティＱを生成するが、１つのストライプ内の各ストリップの役割は均等ではない。具体的には、データあるいはＰのうち１つのストリップについては、そのストリップ全体が対角パリティＱの生成に用いられる。これに対して、残りのデータとパリティＰのストリップでは、その一部分のみがＱの生成に用いられる。
【００２５】
このことから、１つのディスクの故障時の再構築処理でパリティＱの復元を行う際には、データとパリティＰを担当するディスク間で負荷の違いが生じる。したがって、マッピングを改善する余地がある。データのマッピング改善案としては、例えば、以下の（４）および（５）が考えられる。
（４）第４のマッピング
例えば、Ｑの生成にＰのストリップ全体を用いる場合、Ｐの更新に伴うＱの更新がより多く発生する。すなわち、少量のデータの更新のためにＱの更新が増えるため、あまり有効ではない。そこで、Ｑの生成にストリップ全体を用いるのはＰのストリップではなく、データストリップの１つに割り当てることにする。
【００２６】
仮に、ストライプ内の先頭のデータストリップを、Ｑの生成にすべてのデータを使用するストリップと仮定する。この場合、図３および図４のマッピングでは、先頭データを担当するディスクとそうでないディスクがあるため、負荷が均等に分散されない。例えば、図３のマッピングでは、Ｄｉｓｋ０、Ｄｉｓｋ２、およびＤｉｓｋ４のみに先頭データが配置されており、Ｄｉｓｋ１、Ｄｉｓｋ３、およびＤｉｓｋ５には先頭データが配置されることがない。
【００２７】
このような偏りを軽減するため、図６に示すように、図４のマッピングで採用したＰとＱの周期的な並べ替えをデータストリップについても採用する。そして、Ｍ個並んだディスクへのデータおよびパリティのマッピング順序を、（Ｎ＋Ｍ）／Ｍストライプ毎に巡回させる。
【００２８】
例えば、最初の３つのストライプ６０１〜６０３の配置は図４と同じであり、それぞれのストライプの先頭データＤ００、Ｄ０４、およびＤ０８が、Ｄｉｓｋ０、Ｄｉｓｋ４、およびＤｉｓｋ２に分散されている。
【００２９】
次の３つのストライプ６０４〜６０６では、ＰとＱの配置は図４と同じであるが、データの配置は隣接する２つのディスク間で図４の場合と逆転している。具体的には、ストライプ６０４のＤ０ｃとＤ０ｄの配置が図４と逆になっており、Ｄ０ｅとＤ０ｆの配置も図４と逆になっている。ストライプ６０５および６０６についても同様である。このようなデータの並べ替えの結果、それぞれのストライプの先頭データＤ０ｃ、Ｄ１０、およびＤ１４が、Ｄｉｓｋ１、Ｄｉｓｋ５、およびＤｉｓｋ３に分散されている。
【００３０】
このように、図６のマッピングでは、Ｐ、Ｑ、および先頭データをすべてのディスクに分散して配置することができる。
（５）第５のマッピング
上記（４）の改善案のバリエーションである。図７に示すように、パリティの配置は図３と同じであるが、データの配置が異なる。このマッピングでは、ストライプ内の先頭データの位置を、直前のストライプでパリティを担当していたＭ個のディスクの中から、ストライプ毎にずらして選択する。ただし、ストライプ内の２番目からＭ番目までのデータは、直前のストライプでもデータを担当していたディスクに割り当てられる場合があるので、シーケンシャルリードの性能では（４）の改善案より劣っている。
【００３１】
図３から図７まではＭ＝２の場合のマッピング例を示しているが、これらのマッピングはＭ≧３のＲＡＩＤ構成に対しても、同様に適用可能である。図８、９、１０、および１１は、（３＋３）ＲＡＩＤ構成に対して、（１）、（２）、（３）、および（４）のマッピングをそれぞれ適用した例を示している。
【００３２】
コントローラ２１１は、ディスクに対するデータまたはパリティのリード／ライトアクセスを行うために、ＲＡＩＤ構成に応じて上述したようなマッピング処理を行う。そこで、（Ｎ＋Ｍ）ＲＡＩＤ構成においてコントローラ２１１が行うマッピング処理をより詳細に説明する。
【００３３】
以下の説明においては、Ｃ言語と同様に、演算子“／”は整数の割り算の商を表し、演算子“％”は割り算の余りを表すものとする。まず、マッピング処理に用いる変数定義について述べる。
・ＲＡＩＤ構成のディスク数：（Ｎ＋Ｍ）
（Ｎ＋Ｍ）は、ＲＡＩＤグループを構成するディスクの数である。ＲＡＩＤグループは、データ容量分Ｎ個とパリティ容量分Ｍ個の合計（Ｎ＋Ｍ）個のディスクからなる。ここでは、全ディスク数（Ｎ＋Ｍ）は、パリティ用ディスク数Ｍの倍数に設定される。
・ストリップサイズ：Ｓ
Ｓは、１ストリップのデータ容量（ブロック数等）を表し、ストライプデプスと同じである。
・データに割り当てられるアドレス：ａ
ａは、パリティを除くデータに順番に割り当てられるアドレスであり、０以上の整数である。ホスト装置２０１からのデータに対するＩ／Ｏ要求は、アドレスａを指定することで行われる。
・ストライプ番号：ｉ
ｉは、データとそれに対応するパリティとが所属するストライプを示す番号であり、０以上の整数である。ｉは、データアドレスａとＲＡＩＤ構成から決定され、次式により与えられる。
ｉ＝ａ／（Ｎ＊Ｓ）
・ストリップ番号：ｊ
ｊは、あるストライプに所属するストリップの順序を示す番号である。データのストリップに対しては、０＜＝ｊ＜＝（Ｎ−１）なるｊが割り当てられる。データストリップのｊは次式により与えられ、データはデータアドレスａに従って順番に格納される。
ｊ＝（ａ％（Ｓ＊Ｎ））／Ｓ
パリティのストリップに対しては、Ｎ＜＝ｊ＜＝（Ｎ＋Ｍ−１）なるｊが割り当てられる。例えば、ｊ＝ＮはパリティＰに対して割り当てられ、ｊ＝Ｎ＋１はパリティＱに対して割り当てられる。
・ディスク番号：ｄ
ｄは、ＲＡＩＤを構成するディスクのうちアクセス対象となるディスクを特定する番号であり、０＜＝ｄ＜＝（Ｎ＋Ｍ−１）である。ｄは、採用するマッピング方法に応じて、ｉとｊをパラメータとして決定される。
【００３４】
次に、以上の変数定義を用いたマッピング処理について述べる。マッピング処理では、マッピング方法に応じてデータアドレスａからストライプ番号ｉとストリップ番号ｊを決定し、アクセス対象のディスク番号ｄを決定する。
１．従来のマッピング
図１７に示した従来のマッピング方法では、ディスク番号ｄを１つずつずらしていく。ｄは次式により計算される。
ｄ＝（ｊ＋ｉ＊（Ｎ＋Ｍ−１））％（Ｎ＋Ｍ）
２．第１のマッピング
図３および８に示したマッピング方法では、ディスク番号ｄをパリティの数だけずらしていく。ｄは次式により計算される。
ｄ＝（ｊ＋（ｉ＊Ｎ））％（Ｎ＋Ｍ）
３．第２のマッピング
図４および９に示したマッピング方法では、上記第１のマッピングにおいてＭ個のパリティの並びを循環させる。データの場合のｄは第１のマッピングと同じになり、次式により計算される。
ｄ＝（ｊ＋（ｉ＊Ｎ））％（Ｎ＋Ｍ）
一方、パリティの場合は、まず、各ストライプ内でパリティを割り当てるディスクのうち先頭ディスクの番号をｐｔｏｐとして、ｐｔｏｐを次式により計算する。
ｐｔｏｐ＝（Ｎ＋（ｉ＊Ｎ））％（Ｎ＋Ｍ）
このｐｔｏｐを用いて、パリティの場合のｄは次式により計算される。
ｄ＝ｐｔｏｐ＋（ｊ−Ｎ＋（Ｍ−１）＊（ｉ／（Ｎ＋Ｍ）／Ｍ））％Ｍ
４．第３のマッピング
図５および１０に示したマッピング方法では、各パリティを連続させずに配置し、ディスク番号ｄを１つずつずらしていく。データの場合、ｄは次式により計算される。
ｄ＝（ｉ＊（Ｎ＋Ｍ−１）＋ｊ／（Ｎ／Ｍ）＊（（Ｎ＋Ｍ）／Ｍ）＋ｊ％（Ｎ／Ｍ））
％（Ｎ＋Ｍ）
一方、パリティの場合、ｄは次式により計算される。
ｄ＝（ｉ＊（Ｎ＋Ｍ−１）＋（ｊ−Ｎ）＊（（Ｎ＋Ｍ）／Ｍ）＋（Ｎ／Ｍ））
％（Ｎ＋Ｍ）
５．第４のマッピング
図６および１１に示したマッピング方法では、上記第２のマッピングにおけるＭ個のパリティの循環をデータにも適用し、Ｍ個のデータの並びを１グループとして、グループ毎に循環させる。このとき、パリティおよびデータのグループの総数ｇｎｕｍは、次式により計算される。
ｇｎｕｍ＝（Ｎ＋Ｍ）／Ｍ
データまたはパリティが所属するグループの番号ｇｉと、グループ内での順番ｇｊは、次式により与えられる。
ｇｉ＝ｊ／Ｍ
ｇｊ＝ｊ％Ｍ
データまたはパリティが所属するグループの先頭ディスクの番号をｇｔｏｐとすると、ｇｔｏｐは次式により計算される。
ｇｔｏｐ＝（（ｊ／Ｍ）＊Ｍ＋（ｉ＊Ｎ））％（Ｎ＋Ｍ）
このｇｔｏｐを用いて、ｄは次式により計算される。
ｄ＝ｇｔｏｐ＋（（ｊ％Ｍ）＋（Ｍ−１）＊（ｉ／（（Ｎ＋Ｍ）／Ｍ）））％Ｍ
コントローラ２１１は、以上の計算式により得られたｄの値に対応するディスクをアクセス対象として、データまたはパリティのリード／ライトを行う。
【００３５】
図１２は、コントローラ２１１のプロセッサ２２１が処理に用いるプログラムおよびデータの提供方法を示している。情報処理装置等の外部装置１２０１や可搬記録媒体１２０２に格納されたプログラムおよびデータは、ＲＡＩＤ装置２０２のメモリ２２２にロードされる。
【００３６】
外部装置１２０１は、そのプログラムおよびデータを搬送する搬送信号を生成し、通信ネットワーク上の任意の伝送媒体を介してＲＡＩＤ装置２０２に送信する。可搬記録媒体１２０２は、メモリカード、フレキシブルディスク、光ディスク、光磁気ディスク等の任意のコンピュータ読み取り可能な記録媒体である。プロセッサ２２１は、そのデータを用いてそのプログラムを実行し、必要な処理を行う。
【００３７】
図１３および１４は、ストレージシステムの別の構成例を示している。図１３は、ホスト装置に実装されたホストバスアダプタがディスクアクセスの制御を行う例を示しており、図１４は、ホスト装置に実装されたソフトウェアがディスクアクセスの制御を行う例を示している。いずれの構成においても、必要なプログラムおよびデータは、ＲＡＩＤ装置２０２の場合と同様にして提供される。
【００３８】
図１３のストレージシステムは、ホスト装置１３０１およびＤｉｓｋ０〜Ｄｉｓｋ５からなり、ホスト装置１３０１は、ホストバスアダプタ１３１１を備える。ホストバスアダプタ１３１１は、プロセッサ１３２１、メモリ１３２２、およびキャッシュメモリ１３２３を備え、Ｄｉｓｋ０〜Ｄｉｓｋ５に対するアクセスを制御する。このとき、プロセッサ１３２１は、メモリ１３２２に格納されたプログラムを実行することにより、上述したマッピング処理を行う。
【００３９】
図１４のストレージシステムは、ホスト装置１４０１およびＤｉｓｋ０〜Ｄｉｓｋ５からなる。ホスト装置１４０１は、プロセッサ１４１１およびメモリ１４１２を備え、Ｄｉｓｋ０〜Ｄｉｓｋ５に対するアクセスを制御する。このとき、プロセッサ１４１１は、メモリ１４１２に格納されたプログラムを実行することにより、上述したマッピング処理を行う。
【００４０】
なお、以上の実施形態では、ディスク装置として磁気ディスク装置が用いられているが、本発明は、光ディスク装置、光磁気ディスク装置等の他のディスク装置や、テープ装置のような他の記憶装置を用いたストレージシステムに対しても、適用可能である。
【００４１】
（付記１）  Ｎ個のデータストリップと異なる種類のＭ個のパリティストリップからなるストライプをＮ＋Ｍ個の記憶装置に分散して格納する制御を行うことで、データの冗長化を実現するストレージ制御装置であって、
前記Ｎ＋Ｍ個の記憶装置が複数のストライプを格納する際、連続する２つのストライプ間で同じ記憶装置にパリティストリップが連続して格納されないように、各ストライプに含まれるＮ個のデータストリップとＭ個のパリティストリップの格納先の記憶装置を決定する決定手段と、
前記Ｎ個のデータストリップと２個以上のパリティストリップを、決定されたそれぞれの格納先の記憶装置に格納する制御を行う制御手段と
を備えることを特徴とするストレージ制御装置。
【００４２】
（付記２）  前記決定手段は、前記複数のストライプに含まれるパリティストリップが前記Ｎ＋Ｍ個の記憶装置に均等に分散されるように、前記格納先の記憶装置を決定することを特徴とする付記１記載のストレージ制御装置。
【００４３】
（付記３）  前記決定手段は、同じ種類のパリティストリップを格納する記憶装置の番号がストライプ毎にＭ個ずつずれるように、前記格納先の記憶装置を決定することを特徴とする付記２記載のストレージ制御装置。
【００４４】
（付記４）  前記決定手段は、指定されたデータアドレスから、データまたはパリティが所属するストライプを示すストライプ番号ｉと、該ストライプ内でデータまたはパリティが所属するストリップを示すストリップ番号ｊを決定し、整数の割り算の余りを表す演算子を％として、
ｄ＝（ｊ＋（ｉ＊Ｎ））％（Ｎ＋Ｍ）
なる計算により、データまたはパリティを格納する記憶装置の番号ｄを求めることを特徴とする付記２または３記載のストレージ制御装置。
【００４５】
（付記５）  前記決定手段は、前記複数のストライプに含まれる同じ種類のパリティストリップが前記Ｎ＋Ｍ個の記憶装置に均等に分散されるように、前記格納先の記憶装置を決定することを特徴とする付記２記載のストレージ制御装置。
【００４６】
（付記６）  前記決定手段は、同じ種類のパリティストリップを格納する記憶装置の番号がストライプ毎にＭ個ずつずれるように、かつ、Ｍ個のパリティストリップを格納する記憶装置の番号が（Ｎ＋Ｍ）／Ｍストライプ毎に巡回するように、前記格納先の記憶装置を決定することを特徴とする付記５記載のストレージ制御装置。
【００４７】
（付記７）  前記決定手段は、指定されたデータアドレスから、データまたはパリティが所属するストライプを示すストライプ番号ｉと、該ストライプ内でデータまたはパリティが所属するストリップを示すストリップ番号ｊを決定し、ｉおよびｊから格納先の記憶装置の番号ｄを求める際に、データの格納先については、整数の割り算の余りを表す演算子を％として、
ｄ＝（ｊ＋（ｉ＊Ｎ））％（Ｎ＋Ｍ）
なる計算によりｄを求め、パリティの格納先については、整数の割り算の商を表す演算子を／として、
ｐｔｏｐ＝（Ｎ＋（ｉ＊Ｎ））％（Ｎ＋Ｍ）
ｄ＝ｐｔｏｐ＋（ｊ−Ｎ＋（Ｍ−１）＊（ｉ／（Ｎ＋Ｍ）／Ｍ））％Ｍ
なる計算によりｄを求めることを特徴とする付記５または６記載のストレージ制御装置。
【００４８】
（付記８）  前記決定手段は、同じ種類のパリティストリップを格納する記憶装置の番号がストライプ毎に１個ずつずれるように、かつ、各ストライプ内でＭ個のパリティストリップを格納する記憶装置の番号が連続しないように、前記格納先の記憶装置を決定することを特徴とする付記５記載のストレージ制御装置。
【００４９】
（付記９）  前記決定手段は、指定されたデータアドレスから、データまたはパリティが所属するストライプを示すストライプ番号ｉと、該ストライプ内でデータまたはパリティが所属するストリップを示すストリップ番号ｊを決定し、ｉおよびｊから格納先の記憶装置の番号ｄを求める際に、データの格納先については、整数の割り算の商を表す演算子を／とし、整数の割り算の余りを表す演算子を％として、
ｄ＝（ｉ＊（Ｎ＋Ｍ−１）＋ｊ／（Ｎ／Ｍ）＊（（Ｎ＋Ｍ）／Ｍ）＋ｊ％（Ｎ／Ｍ））
％（Ｎ＋Ｍ）
なる計算によりｄを求め、パリティの格納先については、
ｄ＝（ｉ＊（Ｎ＋Ｍ−１）＋（ｊ−Ｎ）＊（（Ｎ＋Ｍ）／Ｍ）＋（Ｎ／Ｍ））
％（Ｎ＋Ｍ）
なる計算によりｄを求めることを特徴とする付記５または８記載のストレージ制御装置。
【００５０】
（付記１０）  前記決定手段は、前記複数のストライプに含まれるデータストリップが前記Ｎ＋Ｍ個の記憶装置に均等に分散されるように、前記格納先の記憶装置を決定することを特徴とする付記１または５記載のストレージ制御装置。
【００５１】
（付記１１）  前記決定手段は、同じ種類のパリティストリップを格納する記憶装置の番号がストライプ毎にＭ個ずつずれるように、かつ、Ｍ個のパリティストリップを格納する記憶装置の番号が（Ｎ＋Ｍ）／Ｍストライプ毎に巡回するように、かつ、Ｍ個のデータストリップを格納する記憶装置の番号が（Ｎ＋Ｍ）／Ｍストライプ毎に巡回するように、前記格納先の記憶装置を決定することを特徴とする付記１０記載のストレージ制御装置。
【００５２】
（付記１２）  前記決定手段は、指定されたデータアドレスから、データまたはパリティが所属するストライプを示すストライプ番号ｉと、該ストライプ内でデータまたはパリティが所属するストリップを示すストリップ番号ｊを決定し、整数の割り算の商を表す演算子を／とし、整数の割り算の余りを表す演算子を％として、
ｇｔｏｐ＝（（ｊ／Ｍ）＊Ｍ＋（ｉ＊Ｎ））％（Ｎ＋Ｍ）
ｄ＝ｇｔｏｐ＋（（ｊ％Ｍ）＋（Ｍ−１）＊（ｉ／（（Ｎ＋Ｍ）／Ｍ）））％Ｍ
なる計算により、データまたはパリティを格納する記憶装置の番号ｄを求めることを特徴とする付記１０または１１記載のストレージ制御装置。
【００５３】
（付記１３）  データの冗長化を実現するために、Ｎ個のデータストリップと異なる種類のＭ個のパリティストリップからなるストライプを分散して格納するＮ＋Ｍ個の記憶装置と、
前記Ｎ＋Ｍ個の記憶装置が複数のストライプを格納する際、連続する２つのストライプ間で同じ記憶装置にパリティストリップが連続して格納されないように、各ストライプに含まれるＮ個のデータストリップとＭ個のパリティストリップの格納先の記憶装置を決定する決定手段と、
前記Ｎ個のデータストリップと２個以上のパリティストリップを、決定されたそれぞれの格納先の記憶装置に格納する制御を行う制御手段と
を備えることを特徴とするストレージ装置。
【００５４】
（付記１４）  Ｎ個のデータストリップと異なる種類のＭ個のパリティストリップからなるストライプをＮ＋Ｍ個の記憶装置に分散して格納する制御を行うことで、データの冗長化を実現するプロセッサのためのプログラムであって、
前記Ｎ＋Ｍ個の記憶装置が複数のストライプを格納する際、連続する２つのストライプ間で同じ記憶装置にパリティストリップが連続して格納されないように、各ストライプに含まれるＮ個のデータストリップとＭ個のパリティストリップの格納先の記憶装置を決定し、
前記Ｎ個のデータストリップと２個以上のパリティストリップを、決定されたそれぞれの格納先の記憶装置に格納する
処理を前記プロセッサに実行させることを特徴とするプログラム。
【００５５】
（付記１５）  Ｎ個のデータストリップと異なる種類のＭ個のパリティストリップからなるストライプをＮ＋Ｍ個の記憶装置に分散して格納することで、データの冗長化を実現するストレージ制御方法であって、
前記Ｎ＋Ｍ個の記憶装置が複数のストライプを格納する際、連続する２つのストライプ間で同じ記憶装置にパリティストリップが連続して格納されないように、各ストライプに含まれるＮ個のデータストリップとＭ個のパリティストリップの格納先の記憶装置を決定し、
前記Ｎ個のデータストリップと２個以上のパリティストリップを、決定されたそれぞれの格納先の記憶装置に格納する
ことを特徴とするストレージ制御方法。
【図面の簡単な説明】
【００５６】
【図１】本発明のストレージ制御装置の原理図である。
【図２】第１のストレージシステムの構成図である。
【図３】Ｍ＝２の第１のマッピングを示す図である。
【図４】Ｍ＝２の第２のマッピングを示す図である。
【図５】Ｍ＝２の第３のマッピングを示す図である。
【図６】Ｍ＝２の第４のマッピングを示す図である。
【図７】Ｍ＝２の第５のマッピングを示す図である。
【図８】Ｍ＝３の第１のマッピングを示す図である。
【図９】Ｍ＝３の第２のマッピングを示す図である。
【図１０】Ｍ＝３の第３のマッピングを示す図である。
【図１１】Ｍ＝３の第４のマッピングを示す図である。
【図１２】プログラムおよびデータの提供方法を示す図である。
【図１３】第２のストレージシステムの構成図である。
【図１４】第３のストレージシステムの構成図である。
【図１５】ＲＡＩＤ５のストライプを示す図である。
【図１６】ＲＡＩＤ５のマッピングを示す図である。
【図１７】ＲＡＩＤ６のマッピングを示す図である。
【符号の説明】
【００５７】
１０１  ストレージ制御装置
１０２−１、１０２−２、１０２−（Ｎ＋Ｍ）  記憶装置
１１１  決定手段
１１２  制御手段
２０１、１３０１、１４０１  ホスト装置
２０２  ＲＡＩＤ装置
２１１  コントローラ
２１１、１３２１、１４１１  プロセッサ
２２２、１３２２、１４１２  メモリ
２２３、１３２３  キャッシュメモリ
６０１、６０２、６０３、６０４、６０５、６０６  ストライプ
１２０１  外部装置
１２０２  可搬記録媒体
１３１１  ホストバスアダプタ
Ｄｉｓｋ０、Ｄｉｓｋ１、Ｄｉｓｋ２、Ｄｉｓｋ３、Ｄｉｓｋ４、Ｄｉｓｋ５  ディスク
【図１】
2006171957.tif 000003
【図２】
2006171957.tif 000004
【図１２】
2006171957.tif 000005
【図１３】
2006171957.tif 000006
【図１４】
2006171957.tif 000007
【図３】
2006171957.tif 000008
【図４】
2006171957.tif 000009
【図５】
2006171957.tif 000010
【図６】
2006171957.tif 000011
【図７】
2006171957.tif 000012
【図８】
2006171957.tif 000013
【図９】
2006171957.tif 000014
【図１０】
2006171957.tif 000015
【図１１】
2006171957.tif 000016
【図１５】
2006171957.tif 000017
【図１６】
2006171957.tif 000018
【図１７】
2006171957.tif 000019