(57)【要約】【課題】２種類のパリティのチェックを容易にするストレージ制御装置、ストレージ制御方法を提供する。【解決手段】所定のサイズのデータである単位データを複数取得する取得部と、単位データが格納される位置を示す位置情報を単位データに付加する付加部と、連続するｍ個の単位データを連続データとするとき、ｎ個の連続データに基づいて連続するｍ個の第１パリティを生成すると共に、ｎ個の連続データの位置情報と設定された第１パラメータとに基づいて連続するｍ個の第１パリティの位置情報を生成する第１生成部と、ｎ個の連続データと設定されたｎ個の重み付け定数とに基づいて連続するｍ個の第２パリティを生成すると共に、ｎ個の連続データの位置情報とｎ個の重み付け定数と設定された第２パラメータとに基づいて連続するｍ個の第２パリティの位置情報を生成する第２生成部とを備えた。【選択図】図１
2008204247.tif 000002
【特許請求の範囲】
【請求項１】
データに基づいて第１パリティ及び第２パリティを互いに異なる生成方法により生成するストレージ制御装置であって、
所定のサイズのデータである単位データを複数取得する取得部と、
前記単位データが格納される位置を示す位置情報を前記単位データに付加する付加部と、
連続するｍ個の単位データを連続データとするとき、ｎ個の連続データに基づいて連続するｍ個の第１パリティを生成すると共に、前記ｎ個の連続データの位置情報と設定された第１パラメータとに基づいて前記連続するｍ個の第１パリティの位置情報を生成する第１生成部と、
前記ｎ個の連続データと設定されたｎ個の重み付け定数とに基づいて連続するｍ個の前記第２パリティを生成すると共に、前記ｎ個の連続データの位置情報と前記ｎ個の重み付け定数と設定された第２パラメータとに基づいて前記連続するｍ個の第２パリティの位置情報を生成する第２生成部と
を備えるストレージ制御装置。
【請求項２】
請求項１に記載のストレージ制御装置において、
前記連続するｍ個の書き込みデータの位置情報は、連続するｍ個の番号であり、
前記連続するｍ個の第１パリティの位置情報は、連続するｍ個の番号であり、
前記連続するｍ個の第２パリティの位置情報は、連続するｍ個の番号であることを特徴とするストレージ制御装置。
【請求項３】
請求項１または請求項２に記載のストレージ制御装置において、
前記第１生成部は、前記ｎ個の連続データのＸＯＲ演算を行うことにより前記連続するｍ個の第１パリティを生成し、前記ｎ個の連続データの位置情報と前記第１パラメータのＸＯＲ演算を行うことにより前記連続するｍ個の第１パリティの位置情報を生成することを特徴とするストレージ制御装置。
【請求項４】
請求項１乃至請求項３のいずれかに記載のストレージ制御装置において、
前記第２生成部は、前記ｎ個の連続データとそれぞれ対応する前記重み付け定数とのガロア積演算を行うことによりｎ個の重み付けデータを生成し、前記ｎ個の重み付けデータのＸＯＲ演算を行うことにより前記連続するｍ個の第２パリティを生成し、前記ｎ個の連続データの位置情報とそれぞれ対応する前記重み付け定数のガロア積演算を行うことによりｎ個の重み付け位置情報を生成し、前記ｎ個の重み付け位置情報と前記第２パラメータのＸＯＲ演算を行うことにより前記連続するｍ個の第２パリティの位置情報を生成することを特徴とするストレージ制御装置。
【請求項５】
請求項１乃至請求項４のいずれかに記載のストレージ制御装置において、
更に、前記単位データについて少なくとも位置情報のチェックを行い、該チェック結果が正常であれば割り当てられた記憶媒体に該単位データ及び該単位データの位置情報を書き込み、前記第１パリティの位置情報について少なくとも位置情報のチェックを行い、該チェック結果が正常であれば割り当てられた記憶媒体に該第１パリティ及び該第１パリティの位置情報を書き込み、前記第２パリティについて少なくとも位置情報のチェックを行い、該チェック結果が正常であれば割り当てられた記憶媒体に該第２パリティ及び該第２パリティの位置情報を書き込む書き込み部を備えることを特徴とするストレージ制御装置。
【請求項６】
データに基づいて第１パリティ及び第２パリティを互いに異なる生成方法により生成するストレージ制御方法であって、
所定のサイズのデータである単位データを複数取得する取得ステップと、
前記単位データが格納される位置を示す位置情報を前記単位データに付加する付加ステップと、
連続するｍ個の単位データを連続データとするとき、ｎ個の連続データに基づいて連続するｍ個の第１パリティを生成すると共に、前記ｎ個の連続データの位置情報と設定された第１パラメータとに基づいて前記連続するｍ個の第１パリティの位置情報を生成する第１生成ステップと、
前記ｎ個の連続データと設定されたｎ個の重み付け定数とに基づいて連続するｍ個の前記第２パリティを生成すると共に、前記ｎ個の連続データの位置情報と前記ｎ個の重み付け定数と設定された第２パラメータとに基づいて前記連続するｍ個の第２パリティの位置情報を生成する第２生成ステップと
を実行するストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２種類のパリティを生成するストレージ制御装置、ストレージ制御方法に関するものである。
【背景技術】
【０００２】
まず、従来のＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置の構成について説明する。
【０００３】
図４は、従来のＲＡＩＤ装置の構成の一例を示すブロック図である。このＲＡＩＤ装置１０１は、複数のＣＡ（Channel Adaptor）１１、複数のＣＭ（Controller Module）１２、複数のディスク（Disk）１３を備える。また、ＣＭ１２は、ＣＰＵ２１、Ｃａｃｈｅメモリ２２、ＤＩ（Disk Interface）２３、ＣＭ−ＣＭ転送部（ＣＭ−ＣＭ）２４、プログラムメモリ２６、メモリ２７を備える。
【０００４】
ＣＡ１１は、ホスト２に接続され、ホスト２との間でデータの送受信を行う。ＣＭ１２は、ＲＡＩＤの制御を行うモジュールである。ＣＰＵ２１は、プログラムメモリ２６に格納された制御プログラムをメモリ２７へ読み出して実行することによりＲＡＩＤ装置１０１の制御を行う。Ｃａｃｈｅメモリ２２は、ディスク１３へ書き込むデータやディスク１３から読み出されたデータを一時的に格納する。ＣＭ−ＣＭ転送部２４は、他のＣＭとの間でデータの送受信を行う。また、ＲＡＩＤ装置１０１は、データディスク４台に対してパリティディスク２台を用いるＲＡＩＤ６構成を示す。
【０００５】
次に、従来のＲＡＩＤ装置によるＷｒｉｔｅ処理について説明する。
【０００６】
図５は、従来のＷｒｉｔｅ処理の一例を示すフローチャートである。ＣＡ１１は、ホストからＷｒｉｔｅ命令を受信すると（Ｓ１１）、５１２Ｂｙｔｅのユーザデータ毎にＢＣＣ（Block Check Code）を付加してブロックとし（Ｓ１２）、ブロックをＣａｃｈｅメモリ２２へ格納する（Ｓ１３）。
【０００７】
次に、ＣＰＵ２１は、ホストからのＷｒｉｔｅ命令とは非同期に、Ｃａｃｈｅメモリ２２に格納されたデータからパリティを生成するパリティ生成処理を行い（Ｓ１４）、データ及びパリティの書き込みをＤＩ２３へ指示する（Ｓ１５）。ＤＩ２３は、書き込みを指示されたデータまたはパリティについてＢＣＣのチェックを行う（Ｓ２１）。チェックの結果が正常である場合（Ｓ２１，Ｙ）、ＤＩ２３は、データまたはパリティディスク１３へ書き込み（Ｓ２２）、このフローは終了する。チェックの結果が異常である場合（Ｓ２１，Ｎ）、ＤＩ２３はディスク１３への書き込みを行わず、ＣＰＵ２１は異常をホストへ通知するなどのエラー処理を行い（Ｓ２３）、このフローは終了する。
【０００８】
次に、ＢＣＣについて説明する。
【０００９】
図６は、ＢＣＣのフォーマットの一例を示す図である。ＣＡ１１は、５１２Ｂｙｔｅ（所定のサイズ）のユーザデータ（単位データ）毎に、ＢＣＣを付加して、ブロックとする。ＢＣＣは、１６ｂｉｔのＢｌｏｃｋ  ＣＲＣ（Cyclic Redundancy Check）と４８ｂｉｔのＢｌｏｃｋ  ＩＤから成る。ＣＲＣは、ユーザデータの正当性の検証を行うためのコードである。Ｂｌｏｃｋ  ＩＤは、ユーザデータの格納位置等の正当性の検証を行うためのコードである。
【００１０】
Ｂｌｏｃｋ  ＩＤは、１６ｂｉｔのＬｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｐｐｌｉｃａｔｉｏｎ  Ｔａｇと３２ｂｉｔのＬｏｇｉｃａｌ  Ｂｌｏｃｋ  Ｒｅｆｅｒｅｎｃｅ  Ｔａｇから成る。Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｐｐｌｉｃａｔｉｏｎ  Ｔａｇは、ブロックの格納位置に寄らない固定値である。Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ｒｅｆｅｒｅｎｃｅ  Ｔａｇは、ブロックの格納位置を示すカウンタ（位置情報）である。固定値は、１６ｂｉｔのＬＵＮ（Logical Unit Number）から成る。なお、固定値の領域はＬＵＮ以外の情報と分割利用しても良い。  
【００１１】
上述したＤＩ２３がＣａｃｈｅメモリ２２からディスク１３へデータを書き込む場合の他、ＤＩ２３がディスク１３からＣａｃｈｅメモリ２２へデータを読み出す場合、ＣＡ１１がＣａｃｈｅメモリ２２からホストへデータを送信する場合、ＣＭ−ＣＭ２４が自己と同一のＣＭ２１におけるＣａｃｈｅメモリ２２から他のＣＭ２１におけるＣａｃｈｅメモリ２２へデータを送信する場合にも、ＢＣＣのチェックが行われる。このように、ＢＣＣのチェックによりデータが保証されることにより、ＲＡＩＤ装置の信頼性を向上させている。また、格納位置を示すカウンタがチェックされることにより、ディスク１３上の誤った格納位置にデータが書き込まれることを防ぐことができる。
【００１２】
次に、ＲＡＩＤ６の一次元冗長方式について説明する。
【００１３】
図７は、ＲＡＩＤ６の一次元冗長方式におけるストリップの配置の一例を示す図である。このＲＡＩＤ装置は、６台のディスクＤ０，Ｄ１，Ｄ２，Ｄ３，Ｐ，Ｑを有し、このうち４台分の領域をデータに用い、２台分の領域をパリティに用いる。ここで、連続する０ｘ８０個のブロックをストリップ（データ群）とし、６台のディスク上の同一の位置において連続する０ｘ８０個のブロックをストライプとする。ストライプにはストライプ番号が振られ、データを書き込むストリップには、ストリップの通し番号であるストリップ番号が振られる。また、１つのストライプにおいて、４つのストリップから１つのストリップと同じサイズのパリティＰとパリティＱをそれぞれ生成する。パリティＰとパリティＱは、互いに異なる生成方法により生成される。
【００１４】
この図は、ストライプ番号０ｘ０〜０ｘ６におけるストリップ番号０ｘ０〜０ｘ１７の配置を示す。まず、最初のストライプ番号０ｘ０において、ドライブ番号順（ディスクＤ０，Ｄ１，Ｄ２，Ｄ３）にストリップ番号が振られる。以降のストライプでは、ストライプ毎にストリップの位置をドライブ番号順に巡回させる。つまり、図中の矢印の順序が示すように、ストライプ番号０ｘ１においては、ディスクＱ，Ｄ０，Ｄ１，Ｄ２にストリップ番号が振られ、ストライプ番号０ｘ２においては、ディスクＰ，Ｑ，Ｄ０，Ｄ１，Ｄ２にストリップ番号が振られる。このように、ＣＰＵ２１は、６台のディスクへストリップ、パリティＰ、パリティＱを配置する。
【００１５】
図８は、ストリップ内のブロックの内容の一例を示す図である。この図は、図７のストリップのうちストリップ番号０ｘ１０のストリップにおけるユーザデータとＢｌｏｃｋ  ＩＤの配置を示す。１つのストリップには、０ｘ８０ブロックの連続するユーザデータが配置され、ブロック毎にＢｌｏｃｋ  ＩＤの固定値とカウンタが配置される。固定値は全てのブロックにおいて固定の値であるが、カウンタはシーケンシャルに振られたブロックの番号である。また、連続するストリップ番号ｉ1，ｉ2を持つ２つのストリップにおいて、ストリップ番号ｉ1のストリップの最終ブロックのカウンタとストリップ番号ｉ2のストリップの先頭ブロックのカウンタは連続している。このように、ＣＰＵ２１は、ストリップ内にブロックを配置する。
【００１６】
上述したように従来のＲＡＩＤ装置におけるカウンタはシーケンシャルな値であるため、例えば連続する複数のブロックのＷｒｉｔｅ命令に対して、ＤＩ２３は、ストリップの先頭のブロックのカウンタから以降のブロックのカウンタを容易に推測することができ、カウンタのチェックを容易且つ高速に行うことができる。
【００１７】
なお、本発明の関連ある従来技術として、２種類以上のパリティを用いてデータの冗長化を行うＲＡＩＤのようなストレージ装置において、シーケンシャルリードの性能を改善するマッピングを行うストレージ制御装置がある（例えば、特許文献１参照）。
【特許文献１】特開２００６−１７１９５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
ＲＡＩＤ６の一次元冗長方式を用いる場合、パリティＰは、ストライプ内の全てのストリップのＸＯＲ演算を行うことにより求められる。また、パリティＱは、ストライプ内の全てのストリップに対してガロア体の積演算による重み付けを行い、その結果のＸＯＲ演算により求められる。
【００１９】
しかしながら、パリティＰ／Ｑのカウンタもユーザデータと同様の演算により求められるため、カウンタがシーケンシャルな値にならず、従来のＤＩ２３による高速なＢＣＣのチェックが不可能になる。
【００２０】
本発明は上述した問題点を解決するためになされたものであり、２種類のパリティのチェックを容易にするストレージ制御装置、ストレージ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２１】
上述した課題を解決するため、本発明は、データに基づいて第１パリティ及び第２パリティを互いに異なる生成方法により生成するストレージ制御装置であって、所定のサイズのデータである単位データを複数取得する取得部と、前記単位データが格納される位置を示す位置情報を前記単位データに付加する付加部と、連続するｍ個の単位データを連続データとするとき、ｎ個の連続データに基づいて連続するｍ個の第１パリティを生成すると共に、前記ｎ個の連続データの位置情報と設定された第１パラメータとに基づいて前記連続するｍ個の第１パリティの位置情報を生成する第１生成部と、前記ｎ個の連続データと設定されたｎ個の重み付け定数とに基づいて連続するｍ個の前記第２パリティを生成すると共に、前記ｎ個の連続データの位置情報と前記ｎ個の重み付け定数と設定された第２パラメータとに基づいて前記連続するｍ個の第２パリティの位置情報を生成する第２生成部とを備える。
【００２２】
また、本発明は、データに基づいて第１パリティ及び第２パリティを互いに異なる生成方法により生成するストレージ制御方法であって、所定のサイズのデータである単位データを複数取得する取得ステップと、前記単位データが格納される位置を示す位置情報を前記単位データに付加する付加ステップと、連続するｍ個の単位データを連続データとするとき、ｎ個の連続データに基づいて連続するｍ個の第１パリティを生成すると共に、前記ｎ個の連続データの位置情報と設定された第１パラメータとに基づいて前記連続するｍ個の第１パリティの位置情報を生成する第１生成ステップと、前記ｎ個の連続データと設定されたｎ個の重み付け定数とに基づいて連続するｍ個の前記第２パリティを生成すると共に、前記ｎ個の連続データの位置情報と前記ｎ個の重み付け定数と設定された第２パラメータとに基づいて前記連続するｍ個の第２パリティの位置情報を生成する第２生成ステップとを実行する。
【発明の効果】
【００２３】
本発明によれば、２種類のパリティのチェックを容易にすることができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施の形態について図面を参照しつつ説明する。
【００２５】
まず、従来のパリティ生成方法と本実施の形態に係るパリティ生成方法の原理について説明する。
【００２６】
本実施の形態においては、メンバディスク数を（ｎ＋２）とし、ディスクｎ台分のデータ領域とディスク２台分のパリティ領域を持つＲＡＩＤ６構成のストレージ制御装置の例について説明する。
【００２７】
ここで、あるストライプを選択して対象ストライプとするとき、対象ストライプ内のストリップに対して、ストリップ番号順にストライプ内ストリップ番号ｉ（ｉ＝０〜ｎ−１）を付す。また、対象ストライプ内の最初のストリップ（ｉ＝０）を先頭ストリップとする。このとき、ストライプ内ストリップ番号ｉのストリップ内における各ブロックのカウンタＢiは、次式で表される。
【００２８】
Ｂi＝Ｔi＋Ｓ
【００２９】
ここで、Ｔiは、そのストリップの先頭ブロックのカウンタの値であり、そのストリップ内で固定値である。Ｓは、そのストリップ内のブロック毎に付されるシーケンシャルな番号である。互いに異なるストリップにおいて、ストリップ内の位置が同一であるブロックのＳの値は等しい。あるストライプ内ストリップ番号ｉのストリップにおいて、ストリップ内のブロック数を０ｘ８０、Ｔiが０ｘ００８０であり、Ｓがブロック毎に０ｘ００〜０ｘ７ｆの連続する値をとるとき、ブロック毎のカウンタＢiは０ｘ００８０〜０ｘ００ｆｆの連続する（シーケンシャルな）値をとる。
【００３０】
まず、パリティＰの生成方法について説明する。
【００３１】
本実施の形態において、演算子“＋”はＸＯＲを示し、演算子“・”はガロア体の乗算を示す。通常、“＋”はＡＤＤであるが、ストリップサイズが２Nであり、且つ各ストリップの先頭カウンタであるＴiがストリップサイズの整数倍である場合、カウンタをビットで表した場合のＴiがビット位置とＳのビット位置が重複しないため、次式が成り立つ。
【００３２】
Ｔi  ＡＤＤ  Ｓ＝Ｔi  ＸＯＲ  Ｓ
【００３３】
ストライプ内ストリップ番号ｉのストリップのデータをＤiとすると、生成されるパリティＰのデータＤpは次式で表される。
【００３４】
【数１】
2008204247.tif 000003
【００３５】
ここで、従来のパリティＰの生成方法により得られるカウンタについて説明する。
【００３６】
カウンタについてもデータと同様の演算が行われ、従来のパリティＰのカウンタＢpは次式で表される。
【００３７】
【数２】
2008204247.tif 000004
【００３８】
第１項は、定数となる。ｎが奇数の場合、第２項はシーケンシャルな値Ｓとなり、ｎが偶数の場合、第２項は定数０ｘ００となる。従って、ｎが偶数の場合、Ｂpは定数となり、シーケンシャルな値でないため、ＤＩ２３によるチェックが不可能になる。
【００３９】
次に、パリティＱの生成方法について説明する。
【００４０】
パリティＱの生成に用いるガロア体ＧＦ（２N）の演算は、次式で表される分配則が成り立つ。
【００４１】
Ｘ・（Ｙ＋Ｚ）＝（Ｘ・Ｙ）＋（Ｘ・Ｚ）
【００４２】
ストライプ内ストリップ番号ｉのストリップのデータをＤi、ストライプ内ストリップ番号ｉに対応して予め定められた重み付け定数をＡiとすると、生成されるパリティＱのデータＤqは次式で表される。
【００４３】
【数３】
2008204247.tif 000005
【００４４】
ここで、Ａiは、ｉ毎にそれぞれ異なる値をとる。このように、パリティＰと異なる生成方法として、対象ストライプ内の各ストリップに対してガロア体の積演算によるＡiの重み付けを行い、その結果を全てＸＯＲ演算することにより、パリティＱのデータが得られる。
【００４５】
ここで、従来のパリティＱの生成方法により得られるカウンタについて説明する。
【００４６】
カウンタに対してもデータと同様の演算が行われるため、ストライプ内ストリップ番号ｉのストリップのカウンタＢi、及びストライプ内ストリップ番号ｉに対応する重み付け定数Ａiを用いて、従来のパリティＱのカウンタＢqは次式で表される。
【００４７】
【数４】
2008204247.tif 000006
【００４８】
第１項は、定数となる。第２項は、Ａiとｎの値により様々な値をとる。従って、Ｂqはシーケンシャルな値でないため、ＤＩ２３によるチェックが不可能になる。
【００４９】
本実施の形態においては、パリティＰ／Ｑの生成の際、ユーザデータを持つｎ個のストリップの他に、固定のデータを記録している仮想的なストリップであるファントムストリップをＸＯＲ演算する。ファントムストリップは、ディスク上には存在せず、ＣＰＵ２１によるパリティ生成及びデータ復元の処理に組み込まれるものである。従って、ファントムストリップは、ＲＡＩＤグループのメンバディスク数や生成するパリティの種類（Ｐ／Ｑ）に基づいて設定及び変更することが可能である。また、本実施の形態におけるファントムストリップのデータ部分はＡｌｌ  ０とすることにより、従来のパリティＰ／ＱにファントムストリップをＸＯＲ演算しても、従来と同一のパリティＰ／Ｑのデータが生成されるが、ファントムストリップのカウンタは状況に応じて設定されることにより、従来と異なるパリティＰ／Ｑのカウンタが生成される。
【００５０】
次に、本実施の形態に係るパリティＰのカウンタの生成方法について説明する。
【００５１】
ここで、パリティＰの生成に用いるファントムストリップのカウンタＢphpを定義する。ｎが偶数の場合、Ｂphpを次式で定義する。
【００５２】
【数５】
2008204247.tif 000007
【００５３】
このとき、Ｂpにファントムストリップを反映させることにより生成されるパリティＰのカウンタＢp’は次式で表される。
【００５４】
【数６】
2008204247.tif 000008
【００５５】
第１項は定数となり、第２項はシーケンシャルな値Ｓとなる。従って、Ｂp’は、ストリップ内でシーケンシャルな値となることにより、ＤＩ２３によるチェックが可能になる。
【００５６】
また、ｎが奇数の場合、Ｂphpを次式で定義する。
【００５７】
【数７】
2008204247.tif 000009
【００５８】
このとき、従来と同様に生成されるＢpに対して更にファントムストリップをＸＯＲ演算することにより生成されるパリティＰのカウンタＢp’は次式で表される。
【００５９】
【数８】
2008204247.tif 000010
【００６０】
第１項は定数となり、第２項はシーケンシャルな値Ｓとなる。従って、Ｂp’は、ストリップ内でシーケンシャルな値となることにより、ＤＩ２３によるチェックが可能になる。
【００６１】
次に、本実施の形態に係るパリティＱのカウンタの生成方法について説明する。
【００６２】
重み付け定数Ａiのうち、先頭ストリップに対する重み付け定数Ａ0を１とすると、１・Ｘ＝Ｘの関係から、Ｂqは次式のように表される。
【００６３】
【数９】
2008204247.tif 000011
【００６４】
ここで、パリティＱの生成に用いるファントムストリップのカウンタＢphqを次式で定義する。
【００６５】
【数１０】
2008204247.tif 000012
【００６６】
ここで、Ｂphqcは、ストライプ毎に決まる定数であり、数９の第２項に相当する。また、Ａphqs・Ｂphqsは、数９の第３項に相当する。また、Ｂphqsはストリップ内のブロックに対してシーケンシャルな値である。また、ＡphqsはＢphqsに対して用いる重み付け定数である。Ｂphqc、Ｂphqs、Ａphqsは、それぞれ次式で表される。
【００６７】
【数１１】
2008204247.tif 000013
【００６８】
このとき、従来と同様に生成されるＢqに対して更にファントムストリップをＸＯＲ演算することにより生成されるパリティＱのカウンタＢq’は、次式で表される。
【００６９】
【数１２】
2008204247.tif 000014
【００７０】
このようにＢq’は、先頭ストリップのカウンタＢ0と一致し、シーケンシャルな値となることにより、ＤＩ２３によるチェックが可能になる。
【００７１】
次に、本実施の形態に係るＲＡＩＤ装置の構成について説明する。
【００７２】
図１は、本実施の形態に係るＲＡＩＤ装置の構成の一例を示すブロック図である。この図において、図４と同一符号は図４に示された対象と同一又は相当物を示しており、ここでの説明を省略する。この図は、図４と比較すると、ＲＡＩＤ装置１０１の代わりにＲＡＩＤ装置１を備える。ＲＡＩＤ装置１０１と比較するとＲＡＩＤ装置１は、ＣＭ１２の代わりにＣＭ３２を備える。ＣＭ１２と比較するとＣＭ３２は、プログラムメモリ２６の代わりにプログラムメモリ３６を備える。プログラムメモリ２６と比較すると、プログラムメモリ３６は、格納された制御プログラムが異なる。ＣＰＵ２１は、予めプログラムメモリ３６に格納された制御プログラムをメモリ２７へ読み出して実行することによりＲＡＩＤ装置の制御を行う。
【００７３】
次に、本実施の形態に係るＲＡＩＤ装置によるＷｒｉｔｅ処理について説明する。
【００７４】
図２は、本実施の形態に係るＷｒｉｔｅ処理の一例を示すフローチャートである。この図において、図５と同一符号は図５に示された対象と同一又は相当物を示しており、ここでの説明を省略する。この図は、図５と比較すると、従来のパリティ生成処理（Ｓ１５）の代わりに本実施の形態に係るパリティ生成処理（Ｓ２５）を実行する。
【００７５】
次に、本実施の形態に係るパリティ生成処理について説明する。
【００７６】
図３は、本実施の形態に係るパリティ生成処理の動作の一例を示すフローチャートである。まず、ＣＰＵ２１は、ストライプ番号順に対象とするストライプを選択して対象ストライプとし（Ｓ３１）、パリティＰを生成するパリティＰ生成処理を行い（Ｓ３４）、パリティＱを生成するためのファントムストリップの設定を行うパリティＱ設定処理を行い（Ｓ３５）、パリティＱを生成するパリティＱ生成処理を行い（Ｓ３６）、前ストリップのパリティの生成を終了したか否かの判断を行い、終了した場合（Ｓ３７，Ｙ）、このフローは終了し、終了していない場合（Ｓ３７，Ｎ）、処理Ｓ３１へ戻り、次の対象ストライプを選択する。
【００７７】
パリティ生成処理の準備として、ＲＡＩＤ構成が決定されると、ＣＰＵ２１は、データディスク数ｎからパリティＰ生成用のファントムストリップのカウンタＢphpを設定する。ここで、ｎが偶数の場合、ＣＰＵ２１は、数５によりＢphpを設定し、ｎが奇数の場合、数７によりＢphpを設定する。また、ＣＰＵ２１は、数１１によりデータディスク数ｎとパリティＱ生成のための重み付け定数ＡｉからパリティＱ生成用のファントムストリップのパラメータＡphqsを設定する。また、ファントムストリップのデータは、全て０である。
【００７８】
また、パリティＰ生成処理において、ＣＰＵ２１は、対象ストライプ内のｎ個のストリップとファントムストリップとのＸＯＲ演算を行うことにより、パリティＰのストリップを生成する。
【００７９】
また、パリティＱ設定処理において、ＣＰＵ２１は、ストライプ毎に決まる定数であり、パリティＱ生成用のファントムストリップのカウンタに用いるパラメータＢphqcを数１１により設定し、パリティＱ生成用のファントムストリップのカウンタＢphqを数１０により設定する。
【００８０】
また、パリティＱ生成処理において、ＣＰＵ２１は、対象ストライプ内のｎ個のストリップに対して重み付け定数Ａiを用いてガロア体積演算による重み付けを行い、重み付けされたｎ個のストリップとファントムストリップとのＸＯＲ演算を行うことにより、パリティＱのストリップを生成する。
【００８１】
上述したパリティＰ生成処理によれば、ｎ個のストリップとカウンタの部分が調整されたファントムストリップとを用いてパリティＰの生成を行うことにより、パリティＰのカウンタが常にシーケンシャルな値となりＤＩ２３によるチェックを行うことができる。
【００８２】
上述したパリティＱ生成処理によれば、ｎ個のストリップと重み付け定数Ａiとカウンタの部分が調整されたファントムストリップとを用いてパリティＱの生成を行うことにより、パリティＱのカウンタが常にシーケンシャルな値となりＤＩ２３によるチェックを行うことができる。
【００８３】
本実施の形態によれば、一次元冗長方式のＲＡＩＤ６構成におけるデータ、パリティＰ／Ｑの全てのストリップに対してＤＩ２３によるチェックを行うことができることから、高速で信頼性の高いＲＡＩＤ装置を実現することができる。
【００８４】
なお、第１パラメータは、実施の形態におけるＢphpに対応する。また、第２パラメータは、実施の形態におけるＢphqに対応する。
【００８５】
また、取得部及び付加部は、実施の形態におけるＣＡに対応する。また、第１生成部は、実施の形態におけるＣＰＵによるパリティＰ生成処理に対応する。また、第２生成部は、実施の形態におけるＣＰＵによるパリティＱ生成処理に対応する。また、書き込み部は、実施の形態におけるＤＩに対応する。
【００８６】
また、取得ステップは、実施の形態における処理Ｓ１１に対応する。また、付加ステップは、実施の形態における処理Ｓ１２に対応する。また、第１生成ステップは、実施の形態における処理Ｓ３４に対応する。また、第２生成ステップは、実施の形態における処理Ｓ３６に対応する。また、書き込みステップは、実施の形態における処理Ｓ２２，Ｓ２３に対応する。
【００８７】
また、本実施の形態に係るＲＡＩＤ装置は、情報処理装置に容易に適用することができ、情報処理装置の性能をより高めることができる。ここで、ストレージ装置には、例えばサーバ、ＰＣ（Personal Computer）、ＮＡＳ（Network Attached Storage）等が含まれ得る。
【００８８】
（付記１）  データに基づいて第１パリティ及び第２パリティを互いに異なる生成方法により生成するストレージ制御装置であって、
所定のサイズのデータである単位データを複数取得する取得部と、
前記単位データが格納される位置を示す位置情報を前記単位データに付加する付加部と、
連続するｍ個の単位データを連続データとするとき、ｎ個の連続データに基づいて連続するｍ個の第１パリティを生成すると共に、前記ｎ個の連続データの位置情報と設定された第１パラメータとに基づいて前記連続するｍ個の第１パリティの位置情報を生成する第１生成部と、
前記ｎ個の連続データと設定されたｎ個の重み付け定数とに基づいて連続するｍ個の前記第２パリティを生成すると共に、前記ｎ個の連続データの位置情報と前記ｎ個の重み付け定数と設定された第２パラメータとに基づいて前記連続するｍ個の第２パリティの位置情報を生成する第２生成部と
を備えるストレージ制御装置。
（付記２）  付記１に記載のストレージ制御装置において、
前記連続するｍ個の書き込みデータの位置情報は、連続するｍ個の番号であり、
前記連続するｍ個の第１パリティの位置情報は、連続するｍ個の番号であり、
前記連続するｍ個の第２パリティの位置情報は、連続するｍ個の番号であることを特徴とするストレージ制御装置。
（付記３）  付記１または付記２に記載のストレージ制御装置において、
前記第１生成部は、前記ｎ個の連続データのＸＯＲ演算を行うことにより前記連続するｍ個の第１パリティを生成し、前記ｎ個の連続データの位置情報と前記第１パラメータのＸＯＲ演算を行うことにより前記連続するｍ個の第１パリティの位置情報を生成することを特徴とするストレージ制御装置。
（付記４）  付記１乃至付記３のいずれかに記載のストレージ制御装置において、
前記第２生成部は、前記ｎ個の連続データとそれぞれ対応する前記重み付け定数とのガロア積演算を行うことによりｎ個の重み付けデータを生成し、前記ｎ個の重み付けデータのＸＯＲ演算を行うことにより前記連続するｍ個の第２パリティを生成し、前記ｎ個の連続データの位置情報とそれぞれ対応する前記重み付け定数のガロア積演算を行うことによりｎ個の重み付け位置情報を生成し、前記ｎ個の重み付け位置情報と前記第２パラメータのＸＯＲ演算を行うことにより前記連続するｍ個の第２パリティの位置情報を生成することを特徴とするストレージ制御装置。
（付記５）  付記１乃至付記４のいずれかに記載のストレージ制御装置において、
ｎが奇数の場合、前記第１パラメータは所定の第１定数であり、ｎが偶数の場合、前記第１パラメータは、（所定の第１定数＋前記第１パリティの位置に基づく連続な番号）であること（但し、＋はＸＯＲ演算を示す）を特徴とするストレージ制御装置。
（付記６）  付記５に記載のストレージ制御装置において、
前記第１定数は、前記ｎ個の連続データの先頭の単位データの位置情報であることを特徴とするストレージ制御装置。
（付記７）  付記１乃至付記６のいずれかに記載のストレージ制御装置において、
前記第２パラメータは、（所定の第２定数＋（所定の第３定数・前記第１パリティの位置に基づく連続な番号））であること（但し、＋はＸＯＲ演算、・はガロア積演算を示す）を特徴とするストレージ制御装置。
（付記８）  付記７に記載のストレージ制御装置において、
前記第２定数は、前記重み付け定数と前記連続データが書き込まれる記憶媒体の位置とに基づく定数であり、前記第３定数は、前記重み付け定数に基づく定数であることを特徴とするストレージ制御装置。
（付記９）  付記１乃至付記８のいずれかに記載のストレージ制御装置において、
前記第２生成部は、前記ｎ個の連続データのうち先頭の連続データにおける連続するｍ個の単位データの位置情報と、該ｎ個の連続データから生成された前記連続するｍ個の第２パリティの位置情報とを等しくすることを特徴とするストレージ制御装置。
（付記１０）  付記１乃至付記９のいずれかに記載のストレージ制御装置において、
更に、前記単位データについて少なくとも位置情報のチェックを行い、該チェック結果が正常であれば割り当てられた第１記憶媒体に該単位データ及び該単位データの位置情報を書き込み、前記第１パリティの位置情報について少なくとも位置情報のチェックを行い、該チェック結果が正常であれば第１記憶媒体と異なる第２記憶媒体に該第１パリティ及び該第１パリティの位置情報を書き込み、前記第２パリティについて少なくとも位置情報のチェックを行い、該チェック結果が正常であれば第１記憶媒体及び第２記憶媒体と異なる第３記憶媒体に該第２パリティ及び該第２パリティの位置情報を書き込む書き込み部を備えることを特徴とするストレージ制御装置。
（付記１１）  付記１０に記載のストレージ制御装置において、
前記第１記憶媒体はｎ個の記憶媒体であり、前記第２記憶媒体は１個の記憶媒体であり、前記第３記憶媒体は１個の記憶媒体であることを特徴とするストレージ制御装置。
（付記１２）  付記１０または付記１１に記載のストレージ制御装置において、
前記第１記憶媒体、前記第２記憶媒体、前記第３記憶媒体は、一次元冗長方式のＲＡＩＤ６を構成し、前記第１パリティはパリティＰであり、前記第２パリティはパリティＱであることを特徴とするストレージ制御装置。
（付記１３）  データに基づいて第１パリティ及び第２パリティを互いに異なる生成方法により生成するストレージ制御方法であって、
所定のサイズのデータである単位データを複数取得する取得ステップと、
前記単位データが格納される位置を示す位置情報を前記単位データに付加する付加ステップと、
連続するｍ個の単位データを連続データとするとき、ｎ個の連続データに基づいて連続するｍ個の第１パリティを生成すると共に、前記ｎ個の連続データの位置情報と設定された第１パラメータとに基づいて前記連続するｍ個の第１パリティの位置情報を生成する第１生成ステップと、
前記ｎ個の連続データと設定されたｎ個の重み付け定数とに基づいて連続するｍ個の前記第２パリティを生成すると共に、前記ｎ個の連続データの位置情報と前記ｎ個の重み付け定数と設定された第２パラメータとに基づいて前記連続するｍ個の第２パリティの位置情報を生成する第２生成ステップと
を実行するストレージ制御方法。
（付記１４）  付記１３に記載のストレージ制御方法において、
前記連続するｍ個の書き込みデータの位置情報は、連続するｍ個の番号であり、
前記連続するｍ個の第１パリティの位置情報は、連続するｍ個の番号であり、
前記連続するｍ個の第２パリティの位置情報は、連続するｍ個の番号であることを特徴とするストレージ制御方法。
（付記１５）  付記１３または付記１４に記載のストレージ制御方法において、
前記第１生成部は、前記ｎ個の連続データのＸＯＲ演算を行うことにより前記連続するｍ個の第１パリティを生成し、前記ｎ個の連続データの位置情報と前記第１パラメータのＸＯＲ演算を行うことにより前記連続するｍ個の第１パリティの位置情報を生成することを特徴とするストレージ制御方法。
（付記１６）  付記１３乃至付記１５のいずれかに記載のストレージ制御方法において、
前記第２生成ステップは、前記ｎ個の連続データとそれぞれ対応する前記重み付け定数とのガロア積演算を行うことによりｎ個の重み付けデータを生成し、前記ｎ個の重み付けデータのＸＯＲ演算を行うことにより前記連続するｍ個の第２パリティを生成し、前記ｎ個の連続データの位置情報とそれぞれ対応する前記重み付け定数のガロア積演算を行うことによりｎ個の重み付け位置情報を生成し、前記ｎ個の重み付け位置情報と前記第２パラメータのＸＯＲ演算を行うことにより前記連続するｍ個の第２パリティの位置情報を生成することを特徴とするストレージ制御方法。
（付記１７）  付記１３乃至付記１６のいずれかに記載のストレージ制御方法において、
ｎが奇数の場合、前記第１パラメータは所定の第１定数であり、ｎが偶数の場合、前記第１パラメータは、（所定の第１定数＋前記第１パリティの位置に基づく連続な番号）であること（但し、＋はＸＯＲ演算を示す）を特徴とするストレージ制御方法。
（付記１８）  付記１３乃至付記１７のいずれかに記載のストレージ制御方法において、
前記第２パラメータは、（所定の第２定数＋（所定の第３定数・前記第１パリティの位置に基づく連続な番号））であること（但し、＋はＸＯＲ演算、・はガロア積演算を示す）を特徴とするストレージ制御方法。
（付記１９）  付記１３乃至付記１８のいずれかに記載のストレージ制御方法において、
更に、前記単位データについて少なくとも位置情報のチェックを行い、該チェック結果が正常であれば割り当てられた記憶媒体に該単位データ及び該単位データの位置情報を書き込み、前記第１パリティの位置情報について少なくとも位置情報のチェックを行い、該チェック結果が正常であれば割り当てられた記憶媒体に該第１パリティ及び該第１パリティの位置情報を書き込み、前記第２パリティについて少なくとも位置情報のチェックを行い、該チェック結果が正常であれば割り当てられた記憶媒体に該第２パリティ及び該第２パリティの位置情報を書き込む書き込みステップを実行することを特徴とするストレージ制御方法。
（付記２０）  付記１９に記載のストレージ制御方法において、
前記第１記憶媒体、前記第２記憶媒体、前記第３記憶媒体は、一次元冗長方式のＲＡＩＤ６を構成し、前記第１パリティはパリティＰであり、前記第２パリティはパリティＱであることを特徴とするストレージ制御方法。
【図面の簡単な説明】
【００８９】
【図１】本実施の形態に係るＲＡＩＤ装置の構成の一例を示すブロック図である。
【図２】本実施の形態に係るＷｒｉｔｅ処理の一例を示すフローチャートである。
【図３】本実施の形態に係るパリティ生成処理の動作の一例を示すフローチャートである。
【図４】従来のＲＡＩＤ装置の構成の一例を示すブロック図である。
【図５】従来のＷｒｉｔｅ処理の一例を示すフローチャートである。
【図６】ＢＣＣのフォーマットの一例を示す図である。
【図７】ＲＡＩＤ６の一次元冗長方式におけるストリップの配置の一例を示す図である。
【図８】ストリップ内のブロックの内容の一例を示す図である。
【符号の説明】
【００９０】
１  ＲＡＩＤ装置、１１  ＣＡ、１３  ディスク、２１  ＣＰＵ、２２  Ｃａｃｈｅメモリ、２３  ＤＩ、２４  ＣＭ−ＣＭ転送部、２７  メモリ、３２  ＣＭ、３６  プログラムメモリ。
【図１】
2008204247.tif 000015
【図２】
2008204247.tif 000016
【図３】
2008204247.tif 000017
【図４】
2008204247.tif 000018
【図５】
2008204247.tif 000019
【図６】
2008204247.tif 000020
【図７】
2008204247.tif 000021
【図８】
2008204247.tif 000022