(57)【要約】【課題】大規模な記憶システムにおいて生じる制御装置のボトルネックを解消する。【解決手段】データブロックと冗長化ブロックとの組を格納する記憶システムは、それぞれが複数の記憶装置のそれぞれを制御する複数の制御部と、書込対象の書込データブロックを格納すべき記憶装置を制御する制御部を選択するホスト接続部と、当該書込データブロックを当該制御部に転送する転送部とを備え、複数の制御部のそれぞれは、転送部により転送された書込データブロックを、当該書込データブロックを格納すべき記憶装置に書き込むデータブロック書込部と、冗長化ブロックを格納すべき記憶装置を制御する制御部に、冗長化ブロックの更新を要求する冗長化ブロック更新要求部と、他の制御部から冗長化ブロックの更新を要求された場合に、当該制御部が制御する記憶装置に格納された冗長化ブロックを更新する冗長化ブロック更新部とを有する。【選択図】  図１
2004334706.tif 000002
【特許請求の範囲】
【請求項１】
データブロックと、当該データブロックの故障時に当該データブロックを再生するための冗長データである冗長化ブロックとの組を、複数の記憶装置にブロック単位で分散して格納する記憶システムであって、
それぞれが前記複数の記憶装置のそれぞれを制御する複数の制御部と、
当該記憶システムに格納すべきデータブロックである書込データブロックを外部のホスト装置から受信し、前記書込データブロックを格納すべき前記記憶装置を制御する前記制御部を選択するホスト接続部と、
受信した前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置を制御する前記制御部に転送する転送部と
を備え、
前記複数の制御部のそれぞれは、
前記転送部により転送された前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置に書き込むデータブロック書込部と、
前記書込データブロックと組となる前記冗長化ブロックを格納すべき前記記憶装置を制御する前記制御部に、前記冗長化ブロックの更新を要求する冗長化ブロック更新要求部と、
他の前記制御部から前記冗長化ブロックの更新を要求された場合に、当該制御部が制御する前記記憶装置に格納された前記冗長化ブロックを更新する冗長化ブロック更新部と
を有する記憶システム。
【請求項２】
前記複数の制御部のそれぞれは、
前記転送部により転送された前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置に書き込む前に、当該書込データブロックを書き込むべき記憶領域に格納されている格納データブロックを読み出すデータブロック読出部と、
前記転送部により転送された前記書込データブロック及び前記格納データブロックに基づき、前記冗長化ブロックの更新に用いる更新データを生成する更新データ生成部と、
他の前記制御部から前記冗長化ブロックの更新を要求された場合に、当該制御部が制御する前記記憶装置に格納されている、更新前の前記冗長化ブロックを読み出す冗長化ブロック読出部と、
更新前の前記冗長化ブロック及び前記更新データ生成部が生成した前記更新データに基づき、前記書込データブロックと組となる新たな前記冗長化ブロックを生成する冗長化ブロック生成部と
を有し、
前記冗長化ブロック更新部は、前記冗長化ブロック生成部により生成された前記冗長化ブロックを、当該冗長化ブロックを格納すべき前記記憶装置に書き込む
請求項１記載の記憶システム。
【請求項３】
前記更新データ生成部は、前記書込データブロック及び前記格納データブロックをビット毎に排他的論理和演算することにより、前記更新データを生成し、
前記冗長化ブロック生成部は、更新前の前記冗長化ブロック及び前記更新データをビット毎に排他的論理和演算することにより、前記書込データブロックと組となる新たな前記冗長化ブロックを生成する
請求項２記載の記憶システム。
【請求項４】
前記データブロック書込部は、前記転送部により転送された前記書込データブロックを、当該データブロック書込部を有する前記制御部が制御する前記記憶装置及び当該記憶装置のミラーとなるミラー記憶装置に書き込み、
他の前記制御部から前記冗長化ブロックの更新を要求された場合に、前記冗長化ブロック更新部は、当該冗長化ブロック更新部を有する前記制御部が制御する前記記憶装置及び当該記憶装置のミラーとなるミラー記憶装置のそれぞれに格納された前記冗長化ブロックをそれぞれ更新する
請求項２記載の記憶システム。
【請求項５】
第１の前記制御部と、前記第１の制御部が制御する前記記憶装置と、第２の前記制御部が制御する前記記憶装置のミラーとなる第２の前記ミラー記憶装置とは、前記記憶システムの筐体に着脱可能に実装される第１のサブ筐体に実装され、
前記第２の制御部と、前記第２の制御部が制御する前記記憶装置と、前記第１の制御部が制御する前記記憶装置のミラーとなる第１の前記ミラー記憶装置とは、前記記憶システムの筐体に着脱可能に実装される第２のサブ筐体に実装される
請求項４記載の記憶システム。
【請求項６】
前記第１の制御部を、前記第１のミラー記憶装置及び前記第２のミラー記憶装置のいずれに電気的に接続するかを切り替える第１のセレクタと、
前記第２の制御部を、前記第２のミラー記憶装置及び前記第１のミラー記憶装置のいずれに電気的に接続するかを切り替える第２のセレクタと
を更に備える請求項５記載の記憶システム。
【請求項７】
前記第１のセレクタは、前記第１の制御部を前記第２のミラー記憶装置に電気的に接続するか、又は、前記第１の制御部を前記第１のセレクタ及び前記第２のセレクタを介して前記第１のミラー記憶装置に電気的に接続するかを選択し、
前記第２のセレクタは、前記第２の制御部を前記第１のミラー記憶装置に電気的に接続するか、又は、前記第２の制御部を前記第２のセレクタ及び前記第１のセレクタを介して前記第２のミラー記憶装置に電気的に接続するかを選択する
請求項６記載の記憶システム。
【請求項８】
前記第１の記憶装置及び／又は前記第１の制御部が故障した場合に、前記第２のセレクタは、前記第２の制御部を前記第１のミラー記憶装置に電気的に接続し、
前記第１の記憶装置及び／又は前記第１の制御部が故障した状態において、前記第１の記憶装置が格納するデータブロックの読出要求をホスト装置から受けた場合に、前記ホスト接続部は、前記第１のミラー記憶装置から当該データブロックのミラーであるデータブロックを前記第２の制御部により読み出し、前記ホスト装置に返信する
請求項６記載の記憶システム。
【請求項９】
当該記憶システムは、複数のデータブロックと、前記複数のデータブロックの少なくとも１つのデータブロックの故障時に、故障した当該データブロックを再生するための冗長データである冗長化ブロックとの組を、前記複数の記憶装置に分散して格納し、
故障したデータブロックの読出要求を外部のホスト装置から受信した場合に、前記ホスト接続部は、前記転送部を介して、故障した当該データブロックと組となる前記冗長化ブロックを格納する前記記憶装置を制御する前記制御部に前記読出要求を転送し、
前記複数の制御部のそれぞれは、
故障した前記データブロックの前記読出要求を受けた場合に、故障した前記データブロックと組となる前記冗長化ブロックを、当該冗長化ブロックを格納する前記記憶装置から読み出す冗長化ブロック読出部と、
故障した前記データブロックの前記読出要求を受けた場合に、故障した前記データブロック及び前記冗長化ブロックと組となるデータブロックである正常データブロックを格納する前記記憶装置を制御する他の前記制御部に、前記正常データブロックの読み出しを要求するブロック読出要求部と、
前記ブロック読出要求部の要求に基づいて他の前記制御部により読み出された前記正常データブロック及び前記冗長化ブロックに基づいて、故障した前記データブロックを再生するデータブロック再生部と、
再生された前記データブロックを、前記ホスト接続部を介して前記ホスト装置に返送するデータブロック返送部と
を更に有する請求項１記載の記憶システム。
【請求項１０】
前記ホスト接続部は、
ホスト装置から読出要求を受けて読み出されたデータブロックを格納するキャッシュ記憶部と、
前記キャッシュ記憶部に格納されたデータブロックを対象とする読出要求をホスト装置から受けた場合に、前記キャッシュ記憶部から当該データブロックを当該ホスト装置に返送するキャッシュ制御部と
を有し、
前記キャッシュ制御部は、故障したデータブロックであって、前記データブロック再生部により再生されたデータブロックを、故障していないデータブロックと比較し当該キャッシュ記憶部に残留する優先度を高く設定する
請求項６記載の記憶システム。
【請求項１１】
当該記憶システムは、複数のデータブロックと、前記複数のデータブロックの少なくとも１つのデータブロックの故障時に、故障した当該データブロックを再生するための冗長データである冗長化ブロックとの組を、前記複数の記憶装置に分散して格納し、
故障したデータブロックを再生して当該データブロックを格納すべき前記記憶装置に書き込む再構築要求を外部のホスト装置から受信した場合に、前記ホスト接続部は、当該データブロックを格納すべき前記記憶装置を制御する前記制御部に、故障したデータブロックの再構築要求を転送し、
前記複数の制御部のそれぞれは、
故障した前記データブロックと組となる他の前記データブロック又は前記冗長化ブロックを格納する前記記憶装置を制御する他の前記制御部のそれぞれに、故障した前記データブロックと組となる他の前記データブロック又は前記冗長化ブロックの読出しを要求するブロック読出要求部と、
前記ブロック読出要求部の要求に応じて他の前記制御部から返送された前記データブロック及び前記冗長化ブロックに基づいて、故障した前記データブロックを再生するデータブロック再生部と
を更に有し、
前記データブロック書込部は、前記データブロック再生部により再生された前記データブロックを、当該データブロックを格納すべき前記記憶装置に書き込む
請求項１記載の記憶システム。
【請求項１２】
前記冗長化ブロック更新部は、前記冗長化ブロックを更新した場合に、冗長化ブロック更新通知を当該冗長化ブロックの更新を要求した前記制御部に送信し、
当該冗長化ブロックの更新を要求した前記制御部は、前記冗長化ブロック更新通知を受信し、かつ、当該冗長化ブロックと組となる前記書込データブロックを格納すべき前記記憶装置に当該書込データブロックを書き込んだ場合に、前記ホスト接続部を介して前記ホスト装置に書込完了通知を送信する完了通知部を更に有する
請求項１記載の記憶システム。
【請求項１３】
データブロックと、当該データブロックのミラーとなるミラーブロックとの組を、前記複数の記憶装置にブロック単位で分散して格納する記憶システムであって、
第１のデータブロックを格納する第１の前記記憶装置及び前記第１のデータブロックのミラーとなる第１の前記ミラーブロックを格納する第２の前記記憶装置を制御する第１の制御部と、
第２のデータブロックを格納する第３の前記記憶装置及び前記第２のデータブロックのミラーとなる第２の前記ミラーブロックを格納する第４の前記記憶装置を制御する第２の制御部と、
前記第１のデータブロックの読出要求を外部のホスト装置から受けた場合に、前記第１の制御部により前記第１の記憶装置から前記第１のデータブロックを読み出して前記ホスト装置に返送し、前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記第２の制御部により前記第２の記憶装置から前記第２のデータブロックを読み出して前記ホスト装置に返送するホスト接続部と、
前記第２の制御部又は前記第１の記憶装置が故障した場合に、前記第１の制御部と前記第２の記憶装置とを電気的に接続するのに代えて、前記第１の制御部と前記第４の記憶装置とを電気的に接続するセレクタと
を備え、
前記第２の制御部が故障した状態において前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記ホスト接続部は、前記第１の制御部に前記第２のデータブロックの読出要求を転送し、
前記第２のデータブロックの読出要求を受けた前記第１の制御部は、前記セレクタにより電気的に接続された前記第４の記憶装置から前記第２のミラーブロックを読み出し、前記ホスト接続部に返送する
記憶システム。
【請求項１４】
データブロックと、当該データブロックの故障時に当該データブロックを再生するための冗長データである冗長化ブロックとの組を、複数の記憶装置にブロック単位で分散して格納する記憶システムの制御装置であって、
前記記憶システムは、
それぞれが複数の記憶装置のそれぞれを制御する複数の当該制御装置と、
当該記憶システムに格納すべきデータブロックである書込データブロックを外部のホスト装置から受信し、前記書込データブロックを格納すべき前記記憶装置を制御する前記制御装置を選択するホスト接続部と、
受信した前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置を制御する前記制御装置に転送する転送部と
を備え、
前記複数の制御装置のそれぞれは、
前記転送部により転送された前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置に書き込むデータブロック書込部と、
前記書込データブロックと組となる前記冗長化ブロックを格納すべき前記記憶装置を制御する前記制御装置に、前記冗長化ブロックの更新を要求する冗長化ブロック更新要求部と、
他の前記制御装置から前記冗長化ブロックの更新を要求された場合に、当該制御部が制御する前記記憶装置に格納された前記冗長化ブロックを更新する冗長化ブロック更新部と
を有する制御装置。
【請求項１５】
データブロックと、当該データブロックのミラーとなるミラーブロックとの組を、前記複数の記憶装置にブロック単位で分散して格納する記憶システムの制御装置であって、
前記記憶システムは、
第１のデータブロックを格納する第１の前記記憶装置及び前記第１のデータブロックのミラーとなる第１の前記ミラーブロックを格納する第２の前記記憶装置を制御する当該制御装置と、
第２のデータブロックを格納する第３の前記記憶装置及び前記第２のデータブロックのミラーとなる第２の前記ミラーブロックを格納する第４の前記記憶装置を制御する他の制御装置と、
前記第１のデータブロックの読出要求を外部のホスト装置から受けた場合に、当該制御装置により前記第１の記憶装置から前記第１のデータブロックを読み出して前記ホスト装置に返送し、前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記他の制御装置により前記第２の記憶装置から前記第２のデータブロックを読み出して前記ホスト装置に返送するホスト接続部と
を備え、
前記他の制御装置又は前記第３の記憶装置が故障した状態において前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記ホスト接続部は、当該制御装置に前記第２のデータブロックの読出要求を転送し、
当該制御装置は、
前記他の制御装置又は前記第３の記憶装置が故障した場合に、当該制御装置と前記第２の記憶装置とを電気的に接続するのに代えて、当該制御装置と前記第４の記憶装置とを電気的に接続するセレクタと、
前記他の制御装置が故障した状態において前記第２のデータブロックの読出要求を受けた場合に、前記セレクタにより電気的に接続された前記第４の記憶装置から前記第２のミラーブロックを読み出し、前記ホスト接続部に返送する制御部と
を有する制御装置。
【請求項１６】
データブロックと、当該データブロックの故障時に当該データブロックを再生するための冗長データである冗長化ブロックとの組を、複数の記憶装置にブロック単位で分散して格納する記憶システムの制御方法であって、
前記記憶システムは、
それぞれが複数の記憶装置のそれぞれを制御する複数の当該制御装置と、
当該記憶システムに格納すべきデータブロックである書込データブロックを外部のホスト装置から受信し、前記書込データブロックを格納すべき前記記憶装置を制御する前記制御装置を選択するホスト接続部と、
受信した前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置を制御する前記制御装置に転送する転送部と
を備え、
前記複数の制御装置のそれぞれに、
前記転送部により転送された前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置に書き込ませるデータブロック書込段階と、
前記書込データブロックと組となる前記冗長化ブロックを格納すべき前記記憶装置を制御する前記制御装置に、前記冗長化ブロックの更新を要求させる冗長化ブロック更新要求段階と、
他の前記制御装置から前記冗長化ブロックの更新を要求された場合に、当該制御部が制御する前記記憶装置に格納された前記冗長化ブロックを更新させる冗長化ブロック更新段階と
を有する制御方法。
【請求項１７】
データブロックと、当該データブロックのミラーとなるミラーブロックとの組を、前記複数の記憶装置にブロック単位で分散して格納する記憶システムの制御方法であって、
前記記憶システムは、
第１のデータブロックを格納する第１の前記記憶装置及び前記第１のデータブロックのミラーとなる第１の前記ミラーブロックを格納する第２の前記記憶装置を制御する第１の前記制御装置と、
第２のデータブロックを格納する第３の前記記憶装置及び前記第２のデータブロックのミラーとなる第２の前記ミラーブロックを格納する第４の前記記憶装置を制御する第２の前記制御装置と、
前記第１のデータブロックの読出要求を外部のホスト装置から受けた場合に、前記第１の制御装置により前記第１の記憶装置から前記第１のデータブロックを読み出して前記ホスト装置に返送し、前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記第２の制御装置により前記第２の記憶装置から前記第２のデータブロックを読み出して前記ホスト装置に返送するホスト接続部と
を備え、
前記第２の制御装置又は前記第３の記憶装置が故障した状態において前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記ホスト接続部から、当該制御装置に前記第２のデータブロックの読出要求を転送する転送段階と、
前記第２の制御装置又は前記第３の記憶装置が故障した場合に、前記第１の制御装置と前記第２の記憶装置とを電気的に接続するのに代えて、前記第１の制御装置と前記第４の記憶装置とを電気的に接続するセレクタ段階と、
前記第２の制御装置が故障した状態において前記第２のデータブロックの読出要求を受けた場合に、前記第１の制御装置が、前記セレクタ段階により電気的に接続された前記第４の記憶装置から前記第２のミラーブロックを読み出し、前記ホスト接続部に返送する制御段階と
を有する制御方法。
【請求項１８】
データブロックと、当該データブロックの故障時に当該データブロックを再生するための冗長データである冗長化ブロックとの組を、複数の記憶装置にブロック単位で分散して格納する記憶システムを制御するプログラムであって、
前記記憶システムは、
それぞれが前記複数の記憶装置のそれぞれを制御する複数の制御部と、
当該記憶システムに格納すべきデータブロックである書込データブロックを外部のホスト装置から受信し、前記書込データブロックを格納すべき前記記憶装置を制御する前記制御部を選択するホスト接続部と、
受信した前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置を制御する前記制御部に転送する転送部と
を備え、
当該プログラムは、前記複数の制御部のそれぞれを、
前記転送部により転送された前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置に書き込むデータブロック書込部と、
前記書込データブロックと組となる前記冗長化ブロックを格納すべき前記記憶装置を制御する前記制御部に、前記冗長化ブロックの更新を要求する冗長化ブロック更新要求部と、
他の前記制御部から前記冗長化ブロックの更新を要求された場合に、当該制御部が制御する前記記憶装置に格納された前記冗長化ブロックを更新する冗長化ブロック更新部と
して機能させるプログラム。
【請求項１９】
請求項１８記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記憶システム、制御装置、制御方法、及び、そのプログラムと記録媒体に関する。特に本発明は、データブロック及びデータブロックを再生するための冗長化ブロックを複数の記憶装置に分散して格納する記憶システム、制御装置、制御方法、及び、そのプログラムと記録媒体に関する。
【０００２】
【従来の技術】
従来、ハードディスク等の記憶装置のアクセス性能を高めると共に、耐故障性を向上するために、ＲＡＩＤ技術が用いられている。例えば、ＲＡＩＤ５構成においては、複数のデータブロックと、複数のデータブロックのいずれかが故障した場合に故障したデータブロックを再生するための冗長データであるパリティブロックとの組からなるストライプを、複数の記憶装置にブロック単位で分散して格納する。すなわち例えば、データブロックＤ１、データブロックＤ２、及びパリティブロックＰを、記憶装置１、記憶装置２、及び記憶装置３にそれぞれ格納する。
【０００３】
ＲＡＩＤ５構成においては、一の記憶装置が故障した場合、ストライプ中のいずれかのデータブロック又はパリティブロックが失われる。この場合においても、ストライプ中の失われたブロック以外のブロックに基づき、失われたブロックを再生することができる。すなわち例えば、上記の例において、記憶装置１が故障した場合、データブロックＤ１が失われる。この場合、データブロックＤ２及びパリティブロックＰに基づいて、データブロックＤ１を再生することで、一の記憶装置が故障した場合に当該記憶装置に格納されたデータが失われるのを防ぐことができる。
【０００４】
従来のＲＡＩＤ型記憶システムは、ＲＡＩＤを構成する複数の記憶装置を一の制御装置により制御し、上記のパリティブロックの生成やデータブロックの再生等を当該制御装置により行なうのが一般的であった（特許文献１及び特許文献２参照。）。
【０００５】
【特許文献１】
特開平９−８１５２７号公報（段落００１６、図３）
【特許文献２】
特開２００１−２４９８５３号公報（段落００３５、図１）
【０００６】
【発明が解決しようとする課題】
大規模な記憶システムを構成する場合においては、接続する記憶装置の数が増える。この場合において、ＲＡＩＤを構成する複数の記憶装置を一の制御装置により制御すると、当該制御装置がボトルネックとなり、記憶システムの性能向上を図るのが困難となる。
【０００７】
そこで本発明は、上記の課題を解決することのできる記憶システム、制御装置、制御方法、及び、そのプログラムと記録媒体を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【０００８】
【課題を解決するための手段】
即ち、本発明の第１の形態によると、データブロックと、当該データブロックの故障時に当該データブロックを再生するための冗長データである冗長化ブロックとの組を、複数の記憶装置にブロック単位で分散して格納する記憶システムであって、それぞれが前記複数の記憶装置のそれぞれを制御する複数の制御部と、当該記憶システムに格納すべきデータブロックである書込データブロックを外部のホスト装置から受信し、前記書込データブロックを格納すべき前記記憶装置を制御する前記制御部を選択するホスト接続部と、受信した前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置を制御する前記制御部に転送する転送部とを備え、前記複数の制御部のそれぞれは、前記転送部により転送された前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置に書き込むデータブロック書込部と、前記書込データブロックと組となる前記冗長化ブロックを格納すべき前記記憶装置を制御する前記制御部に、前記冗長化ブロックの更新を要求する冗長化ブロック更新要求部と、他の前記制御部から前記冗長化ブロックの更新を要求された場合に、当該制御部が制御する前記記憶装置に格納された前記冗長化ブロックを更新する冗長化ブロック更新部とを有する記憶システムと、その制御装置、制御方法、プログラム、及び記録媒体を提供する。
【０００９】
また、本発明の第２の形態によると、データブロックと、当該データブロックのミラーとなるミラーブロックとの組を、前記複数の記憶装置にブロック単位で分散して格納する記憶システムであって、第１のデータブロックを格納する第１の前記記憶装置及び前記第１のデータブロックのミラーとなる第１の前記ミラーブロックを格納する第２の前記記憶装置を制御する第１の制御部と、第２のデータブロックを格納する第３の前記記憶装置及び前記第２のデータブロックのミラーとなる第２の前記ミラーブロックを格納する第４の前記記憶装置を制御する第２の制御部と、前記第１のデータブロックの読出要求を外部のホスト装置から受けた場合に、前記第１の制御部により前記第１の記憶装置から前記第１のデータブロックを読み出して前記ホスト装置に返送し、前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記第２の制御部により前記第２の記憶装置から前記第２のデータブロックを読み出して前記ホスト装置に返送するホスト接続部と、前記第２の制御部又は前記第１の記憶装置が故障した場合に、前記第１の制御部と前記第２の記憶装置とを電気的に接続するのに代えて、前記第１の制御部と前記第４の記憶装置とを電気的に接続するセレクタとを備え、前記第２の制御部が故障した状態において前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記ホスト接続部は、前記第１の制御部に前記第２のデータブロックの読出要求を転送し、前記第２のデータブロックの読出要求を受けた前記第１の制御部は、前記セレクタにより電気的に接続された前記第４の記憶装置から前記第２のミラーブロックを読み出し、前記ホスト接続部に返送する記憶システムと、その制御装置、制御方法、プログラム、及び記録媒体を提供する。
【００１０】
なお上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションも又発明となりうる。
【００１１】
【発明の実施の形態】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、又実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
図１は、本実施形態に係る記憶システム１０の構成を示す。記憶システム１０は、ホスト装置２０に接続されるホスト接続部３０と、複数のノード６０を備え、複数のノード６０に分散して複数の記憶装置８０を接続する。そして、ホスト接続部３０が有するホスト制御部３４が記憶システム１０とホスト装置２０の間のデータ転送等を制御し、複数のノード６０のそれぞれに設けられたノード制御装置７０が個々のデータブロックのアクセス等を分散して処理する。これにより、複数のノード６０を一の制御装置で集中制御した場合に生じるボトルネックを解消する。
【００１３】
記憶システム１０は、ホスト接続部３０と、１又は複数の転送部５０と、複数のノード６０とを備える。
ホスト接続部３０は、直接又はネットワークを介してホスト装置２０と接続され、各種のコマンドをホスト装置２０から受信し、当該コマンドに対応する記憶システム１０の処理結果をホスト装置２０に返信する。
ホスト接続部３０がホスト装置２０から受信するコマンドは、複数の記憶装置８０の少なくとも１つに格納されたデータブロックの読出要求、複数の記憶装置８０の少なくとも１つに対してデータブロックを書き込む書込要求、一の記憶装置８０が故障した場合等において、故障したデータブロックを再生し、交換等により復旧した記憶装置８０に書き込む再構築要求を含む。これらのコマンドは、ブロック単位で記憶装置８０をアクセスするコマンドであってよく、複数ブロックをまとめてアクセスするコマンドであってもよい。
【００１４】
ホスト接続部３０は、ホストインターフェイス３２と、ホスト制御部３４と、キャッシュ記憶部３８と、１又は複数のインターフェイス４０とを有する。
ホストインターフェイス３２は、ホスト装置２０との間でコマンド及びデータの授受を行なう。ホスト制御部３４は、ホストインターフェイス３２を介してホスト装置２０からコマンドを受信し、当該コマンドを処理すべきノード６０を選択する。そして、インターフェイス４０及び転送部５０を介して当該コマンドを選択したノード６０に転送し、当該ノード６０から処理結果を受けてホストインターフェイス３２を介してホスト装置２０に通知する。
【００１５】
ホスト制御部３４は、読み出されたデータブロックを一時的に格納するキャッシュ領域であるキャッシュ記憶部３８を制御するキャッシュ制御部３６を含む。キャッシュ制御部３６は、ホスト装置２０から読出要求を受けて記憶装置８０から読み出されたデータブロックをキャッシュ記憶部３８に格納する。そして、キャッシュ記憶部３８に格納されたデータブロックを対象とする読出要求をホスト装置２０から受けた場合に、キャッシュ記憶部３８から当該データブロックをホスト装置２０に返送する。
【００１６】
複数のインターフェイス４０は、ホスト制御部３４と１又は複数の転送部５０をそれぞれ接続する。複数の転送部５０は、ホスト接続部３０内のホスト制御部３４が転送するコマンドを、当該コマンドを処理するノード６０に転送し、当該コマンドの処理結果を、当該ノード６０からホスト制御部３４へ転送する。本実施形態において、複数の転送部５０のそれぞれは、ホスト接続部３０と、複数のノード６０のそれぞれとを接続する。そして、一の転送部５０が故障した場合においても、他の転送部５０によりコマンド及び処理結果の転送を行なうことにより、耐故障性を高める。
【００１７】
複数のノード６０のそれぞれは、記憶システム１０の筐体に着脱可能なサブ筐体に実装される。ノード６０が実装されるサブ筐体は、記憶システム１０の交換単位（ＦＲＵ：Ｆｉｅｌｄ  Ｒｅｐｌａｃｅａｂｌｅ  Ｕｎｉｔ）であってよい。
【００１８】
複数のノード６０のそれぞれは、記憶装置８０、記憶装置８１、及びノード制御装置７０を有する。
複数の記憶装置８０は、１又は複数のデータブロックと、当該１又は複数のデータブロックに対応して設けられた冗長化ブロックとの組を、ブロック単位で分散して格納する。すなわち、複数の記憶装置８０は、ＲＡＩＤ１又はＲＡＩＤ５等のＲＡＩＤ構成を採ってよく、１又は複数のデータブロック及びこれらに対応する冗長化ブロックの組は、ストライプと呼ばれる。
【００１９】
ここで、冗長化ブロックとは、当該１又は複数のデータブロックのうち少なくとも１つのデータブロックの故障時に、当該データブロックを再生するための冗長化データである。例えばＲＡＩＤ１においては、１のデータブロックと、当該データブロックのミラーである冗長化ブロックとの組を、複数の記憶装置８０に分散して格納する。また、ＲＡＩＤ５においては、複数のデータブロックと、複数のデータブロックに基づき、例えばビット毎の排他的論理和演算等により生成された冗長化ブロックとの組を、複数の記憶装置８０に分散して格納する。
【００２０】
なお、本実施形態において各ノード６０は一の記憶装置８０を有するが、これに代えて各ノード６０は複数の記憶装置８０を有してよい。
【００２１】
複数の記憶装置８１のそれぞれは、複数の記憶装置８０のそれぞれのミラーとして用いられる。本実施形態において、複数のノード６０のそれぞれは、他のノード６０が有する記憶装置８０のミラーとして用いられる記憶装置８１を有する。
【００２２】
複数のノード制御装置７０のそれぞれは、複数の記憶装置８０及び記憶装置８１のそれぞれを制御する。すなわち、ノード制御装置７０は、当該ノード制御装置７０が設けられたノード６０内の記憶装置８０と、当該記憶装置８０のミラーとして用いられる記憶装置８１とを制御する。
より具体的には、転送部５０を介してホスト接続部３０からコマンドを受け取ると、ノード制御装置７０は、当該コマンドにより指定された処理を行い、処理結果をホスト接続部３０に返送する。当該コマンドの処理において、ノード制御装置７０は、当該コマンドの処理の一部を転送部５０を介して他のノード制御装置７０に行なわせ、他のノード制御装置７０を介して間接的に当該他のノード制御装置７０に接続された記憶装置８０又は記憶装置８１をアクセスしてよい。
【００２３】
ここで、複数のノード６０は、図中のノード６０ａとノード６０ｂ、ノード６０ｃとノード６０ｄに示した様に、２つのノード６０が対として用いられ、各ノード６０内の記憶装置８１は、対となるノード６０内の記憶装置８０のミラーとして用いられる。すなわち、記憶装置８１ａ、記憶装置８１ｂ、記憶装置８１ｃ、及び記憶装置８１ｄは、記憶装置８０ｂ、記憶装置８０ａ、記憶装置８０ｄ、及び記憶装置８０ｃのミラーとしてそれぞれ用いられる。
【００２４】
以上に示した様に、複数のノード制御装置７０は、ホスト装置２０から受けたデータブロックのアクセス等を分散して処理する。すなわち、ホスト装置２０が複数のデータブロックに対するアクセスコマンドを発行した場合に、ホスト接続部３０は、アクセス対象のデータブロックに応じて一のノード６０を選択し、アクセスコマンドを当該ノード６０に転送する。そして、当該ノード６０内のノード制御装置７０は、当該アクセスコマンドに対応する処理を行う。従って、本実施形態に係る記憶システム１０によれば、複数のデータブロックに対するアクセスコマンドを、複数のノード制御装置７０により分散処理することができるため、ホスト接続部３０内のホスト制御部３４における処理量を低減し、ホスト制御部３４がボトルネックとなるのを防ぐことができる。
【００２５】
図２は、本実施形態に係るノード制御装置７０ａの構成を示す。ノード制御装置７０ｂ〜ｄは、ノード制御装置７０ａと略同一の構成及び機能を有するため、以下相違点を除き説明を省略する。
ノード制御装置７０ａは、制御部２００と、セレクタ２７０とを有する。ここで、ノード制御装置７０ａは、制御部２００及びセレクタ２７０をそれぞれ実現する回路を、一の半導体デバイスに実装してよい。
【００２６】
記憶システム１０が有する複数の制御部２００のそれぞれは、複数の記憶装置８０のそれぞれと、当該記憶装置８０のミラーとして用いられる記憶装置８１とを制御する。制御部２００は、受信インターフェイス２１０と、ブロック書込部２２０と、ブロック読出部２３０と、送信インターフェイス２４０と、演算部２５０と、フロー制御部２６０とを含む。
【００２７】
受信インターフェイス２１０は、複数の転送部５０に接続される。受信インターフェイス２１０は、ホスト接続部３０又は他の制御部２００から当該制御部２００に対するコマンド等を転送部５０を介して受信する要求受信部２１２と、制御部２００が他の制御部２００に送信したコマンドに対する当該他の制御部２００の処理結果等の応答を転送部５０を介して受信する応答受信部２１４とを含む。
【００２８】
ブロック書込部２２０は、制御部２００に接続された記憶装置８０ａ、及び、記憶装置８１ａ若しくは記憶装置８１ｂに、データブロック又は冗長化ブロックを書き込む。ブロック書込部２２０は、書込対象のデータブロックを、書込先となる記憶装置８０ａ等に書き込むデータブロック書込部２２２と、記憶装置８０ａ等に格納された冗長化ブロックを更新する冗長化ブロック更新部２２４とを含む。
【００２９】
ブロック読出部２３０は、制御部２００に接続された記憶装置８０ａ、及び、記憶装置８１ａ若しくは記憶装置８１ｂから、データブロック又は冗長化ブロックを読み出す。ブロック読出部２３０は、記憶装置８０ａ等に格納されたデータブロックを読み出すデータブロック読出部２３２と、記憶装置８０ａ等に格納された冗長化ブロックを読み出す冗長化ブロック読出部２３４とを含む。
【００３０】
送信インターフェイス２４０は、複数の転送部５０に接続される。送信インターフェイス２４０は、完了通知部２４２と、ブロック返送部２４４と、要求送信部２４６とを含む。完了通知部２４２は、ホスト接続部３０又は他の制御部２００から当該制御部２００に対するコマンドの処理結果を、当該コマンドの要求元に返送する。ブロック返送部２４４は、ホスト接続部３０又は他の制御部２００からデータブロック又は冗長化ブロックの読出要求を受けた場合に、ブロック読出部２３０により読み出した当該データブロック又は当該冗長化ブロックを、当該読出要求の要求元に返送する。要求送信部２４６は、当該制御部２００から他の制御部２００に対するコマンドを、転送部５０を介して当該他の制御部２００に送信する。
【００３１】
演算部２５０は、冗長化ブロックを更新するための演算、及び、データブロックを再生するための演算を行なう。演算部２５０は、更新データ生成部２５２と、冗長化ブロック生成部２５４と、データブロック再生部２５６とを含む。更新データ生成部２５２は、当該制御部２００がデータブロックを記憶装置８０ａや、記憶装置８１ａ若しくは記憶装置８１ｂに書き込む場合に、当該データブロックと組となる冗長化ブロックの更新に用いる更新データを生成する。冗長化ブロック生成部２５４は、当該制御部２００が他の制御部２００から冗長化ブロックの更新を要求された場合に、更新前の冗長化ブロック及び更新データに基づいて新たな冗長化ブロックを生成する。データブロック再生部２５６は、データブロック又は冗長化ブロックの故障時に、故障した当該ブロックと組となる他のデータブロック及び／又は冗長化ブロックに基づいて、故障した当該ブロックを再生する。ここで、演算部２５０は、更新データ生成部２５２、冗長化ブロック生成部２５４、及び／又はデータブロック再生部２５６の演算処理を行なう演算処理ハードウェアにより実現されてよく、これに代えて、制御部２００内に設けられたプロセッサと、当該プロセッサを更新データ生成部２５２、冗長化ブロック生成部２５４、及び／又はデータブロック再生部２５６として機能させるプログラムとの組み合わせにより実現されてよい。
【００３２】
フロー制御部２６０は、制御部２００における各種の処理を制御する。フロー制御部２６０は、冗長化ブロック更新要求部２６２と、ブロック読出要求部２６４とを含む。当該制御部２００がホスト接続部３０からデータブロックの書込要求を受けた場合に、当該データブロックと組となる冗長化ブロックを格納するノード６０内の制御部２００に、要求送信部２４６を介して当該冗長化ブロックの更新を要求する。ブロック読出要求部２６４は、故障したデータブロック又は冗長化ブロックを再生する場合に、故障した当該ブロックと組となるデータブロック又は冗長化ブロックの読み出しを、要求送信部２４６を介して他の制御部２００に要求する。ここで、フロー制御部２６０は、ハードウェアによる制御回路により実現されてもよく、これに代えて、ノード制御装置７０ａ内に設けられたプロセッサと、当該プロセッサを冗長化ブロック更新要求部２６２やブロック読出要求部２６４として機能させるプログラムとの組み合わせにより実現されてもよい。
【００３３】
セレクタ２７０は、ポートａ、ポートｂ、及びポートｃのそれぞれと、ポートｄ、ポートｅ、及びポートｆのそれぞれとを、電気的に接続する。ポートａ及びポートｂのそれぞれは、制御部２００内のブロック書込部２２０及びブロック読出部２３０に接続される。ポートｃは、ノード６０ａと対となるノード６０ｂが有するノード制御装置７０ｂにおけるセレクタ２７０のポートｆに接続される。ポートｄ及びポートｅは、記憶装置８０ａ及び記憶装置８１ａにそれぞれ接続される。ポートｆは、ノード６０ａと対となるノード６０ｂが有するノード制御装置７０ｂにおけるセレクタ２７０のポートｃに接続される。
【００３４】
そして、ノード制御装置７０ａ内のセレクタ２７０は、ノード制御装置７０ａ内の制御部２００を、記憶装置８１ａに電気的に接続するか、又は、ノード制御装置７０ａ内のセレクタ２７０及びノード制御装置７０ｂ内のセレクタ２７０を介して記憶装置８１ｂに電気的に接続するかを切り替えることができる。同様にノード制御装置７０ｂ内のセレクタ２７０は、ノード制御装置７０ｂ内の制御部２００を、記憶装置８１ｂに電気的に接続するか、又は、ノード制御装置７０ｂ内のセレクタ２７０及びノード制御装置７０ａ内のセレクタ２７０を介して記憶装置８１ａに電気的に接続するかを切り替えることができる。すなわち、記憶装置８１ｂを記憶装置８０ａのミラーとして用いる場合、ノード制御装置７０ａは、ポートａとポートｄ、ポートｂとポートｆ、ポートｃとポートｅがそれぞれ電気的に接続されるようにノード制御装置７０ａ内のセレクタ２７０を設定する。同様に、ノード制御装置７０ｂは、ポートａとポートｄ、ポートｂとポートｆ、ポートｃとポートｅがそれぞれ電気的に接続されるようにノード制御装置７０ｂ内のセレクタ２７０を設定する。本実施形態において、この接続形態をクロス接続形態と呼ぶ。
【００３５】
クロス接続形態により、ノード制御装置７０ａ内のブロック書込部２２０及びブロック読出部２３０は、ポートａを介して記憶装置８０ａに電気的に接続され、ノード制御装置７０ａ内のセレクタ２７０を介して記憶装置８０ａをアクセスすることができる。また、ノード制御装置７０ａ内のブロック書込部２２０及びブロック読出部２３０は、ノード制御装置７０ａにおけるセレクタ２７０のポートｂ及びポートｆを介してノード制御装置７０ｂにおけるセレクタ２７０のポートｃに接続され、更にノード制御装置７０ｂにおけるセレクタ２７０のポートｅを介して記憶装置８１ｂに接続され、ノード制御装置７０ａ内のセレクタ２７０及びノード制御装置７０ｂ内のセレクタ２７０を介して記憶装置８１ｂをアクセスすることができる。同様に、ノード制御装置７０ｂ内のブロック書込部２２０及びブロック読出部２３０は、ノード制御装置７０ｂにおけるセレクタ２７０のポートａ及びポートｂを介して、記憶装置８０ｂ及び記憶装置８１ａをそれぞれアクセスすることができる。
【００３６】
一方、ノード制御装置７０ａ及びノード制御装置７０ｂのそれぞれが、当該ノード制御装置７０内のセレクタ２７０を、ポートａとポートｄ、ポートｂとポートｅがそれぞれ電気的に接続されるように設定すると、ノード制御装置７０ａ内のブロック書込部２２０及びブロック読出部２３０は、ポートａ及びポートｂを介して記憶装置８０ａ及び記憶装置８１ａをそれぞれアクセスすることができる。また、ノード制御装置７０ｂ内のブロック書込部２２０及びブロック読出部２３０は、ポートａ及びポートｂを介して記憶装置８０ｂ及び記憶装置８１ｂをそれぞれアクセスすることができる。本実施形態において、この接続形態をストレート接続形態と呼ぶ。
【００３７】
図３は、本実施形態に係る記憶システム１０に格納されるデータの配置を示す。本実施形態において、記憶システム１０は、一例としてＲＡＩＤ５０構成を採る。すなわち、複数のデータブロックと冗長化ブロックとの組を１ストライプとして、複数の記憶装置８０に分散して格納する。また、１ストライプを構成する複数のデータブロック及び冗長化ブロックのそれぞれのミラーを、複数の記憶装置８１に分散して格納する。
【００３８】
より具体的には、本実施形態において各ストライプは、データブロック１（図中ＤＢ１）、データブロック２（図中ＤＢ２）、及び冗長化ブロックの一例であるパリティブロック（図中ＰＢ）の組を含む。ストライプ１に含まれるＤＢ１、ＤＢ２、及びＰＢは、ノード６０ａ内の記憶装置８０ａ、ノード６０ｂ内の記憶装置８０ｂ、及びノード６０ｄ内の記憶装置８０ｄにそれぞれ格納される。また、ノード６０ｃ内の記憶装置８０ｃには、予備のブロック（図中Ｓ）が設けられてよい。ストライプ中のいずれかのブロックが故障した場合に、予備のブロックは、故障したブロックに代えて用いられてもよい。
【００３９】
また、ストライプ１に含まれるＤＢ１、ＤＢ２、及びＰＢは、ノード６０ｂ内の記憶装置８１ｂ、ノード６０ａ内の記憶装置８１ａ、及びノード６０ｃ内の記憶装置８１ｃにそれぞれミラーとして格納される。図中において、ＤＢ１、ＤＢ２、及びＰＢのミラーとなるブロックを、ＤＢ１’、ＤＢ２’、及びＰＢ’によりそれぞれ示す。また、ノード６０ｄ内の記憶装置８１ｄには、予備のブロック（図中Ｓ）が設けられてよい。ストライプ中においてミラーとなるいずれかのブロックが故障した場合に、予備のブロックは、故障したブロックに代えて用いられてもよい。
【００４０】
ストライプ２のＤＢ１、ＤＢ２、及びＰＢは、ストライプ１と異なる記憶装置８０にＰＢが格納されるようにローテートして記憶装置８０ａ〜ｄに格納される。これにより、全てのストライプのＰＢが特定の記憶装置８０に格納されることにより、ＰＢへのアクセスが特定の記憶装置８０に集中するのを防ぐことができる。
なお、記憶システム１０がＲＡＩＤ５構成を採る場合、記憶装置８１ａ〜ｄは用いられなくてもよい。また、これに代えて、記憶装置８１ａ〜ｄは、記憶装置８０ａ〜ｄに配置されるストライプと異なるストライプを格納し、記憶装置８１ａ〜ｄと併せて一つのボリュームとして用いられてもよい。
【００４１】
図４は、本実施形態に係る記憶システム１０において、図３に示したストライプ１のＤＢ１に対してデータブロックを書き込む場合を例として、書込処理の流れを示す。
まず、ホスト接続部３０は、書込要求のコマンド及び記憶システム１０に格納すべき書込対象のデータブロックである書込データブロックをホスト装置２０から受信する（Ｓ４００）。次に、ホスト接続部３０内のホスト制御部３４は、当該書込データブロックを格納すべき記憶装置８０を制御するノード制御装置７０ａ内の制御部２００を選択する（Ｓ４０５）。ここで、ホスト制御部３４は、ホスト装置２０から受信した、書込データブロックを格納すべき論理ブロック番号に基づいて、当該書込データブロックを格納すべき記憶装置８０と、当該記憶装置８０上において当該書込データブロックを格納すべきブロック番号とを算出することにより、当該書込データブロックを格納すべき記憶装置８０を制御する制御部２００を選択してよい。
【００４２】
次に、転送部５０は、ホスト装置２０から受信した書込要求及び書込データブロックを、ホスト制御部３４により選択された、当該書込データブロックを格納すべき記憶装置８０を制御する制御部２００に転送する（Ｓ４１０）。すなわち、本例において、転送部５０は、当該書込データブロックを、当該書込データブロックを格納すべき記憶装置８０ａを制御するノード制御装置７０ａ内の制御部２００に転送する。この結果、ノード制御装置７０ａ内の要求受信部２１２は、書込要求及び書込データブロックを受信する。
【００４３】
次に、書込要求及び書込データブロックを受信すると、ノード制御装置７０ａ内のデータブロック読出部２３２は、転送部５０により転送され、要求受信部２１２により受信された書込データブロックを記憶装置８０ａに書き込む前に、当該書込データブロックを書き込むべき記憶装置８０ａ上の記憶領域に格納されているデータブロックである格納データブロックを読み出す（Ｓ４１５）。
【００４４】
次に、更新データ生成部２５２は、Ｓ４１０で受信した書込データブロック及びＳ４１５で読み出した格納データブロックに基づき、当該書込データブロックと組となる冗長化ブロックの更新に用いる更新データを生成する（Ｓ４２０）。ここで、記憶システム１０がＲＡＩＤ５構成を採る場合、更新データ生成部２５２は、書込データブロック及び格納データブロックをビット毎に排他的論理和演算することにより、更新データを生成してよい。
【００４５】
次に、フロー制御部２６０内の冗長化ブロック更新要求部２６２は、当該書込データブロックと組となる冗長化ブロックを格納すべき記憶装置８０を制御する制御部２００に、冗長化ブロックの更新を要求する（Ｓ４２５）。すなわち、本例において冗長化ブロック更新要求部２６２は、ストライプ１の冗長化ブロックであるＰＢを格納すべき記憶装置８０ｄを制御する制御部２００に、冗長化ブロック更新要求、及び冗長化ブロック更新要求部２６２が生成した更新データを要求送信部２４６を介して送信する。次に、ブロック書込部２２０内のデータブロック書込部２２２は、当該書込データブロックを、当該書込データブロックを格納すべき記憶装置８０ａに書き込む（Ｓ４３０）。ここで、記憶システム１０がＲＡＩＤ５０構成を採る場合、データブロック書込部２２２は、ノード制御装置７０ａ内のセレクタ２７０及びノード制御装置７０ｂ内のセレクタ２７０を介して、データブロック書込部２２２を有する制御部２００が制御する記憶装置８０ａのミラーとなるミラー記憶装置である記憶装置８１ｂに、当該書込データブロックを更に書き込んでよい。
【００４６】
Ｓ４２５において、ノード制御装置７０ｄ内の要求受信部２１２は、ノード制御装置７０ａから冗長化ブロック更新要求及び更新データを受信する。冗長化ブロック更新要求により他の制御部２００から冗長化ブロックの更新を要求された場合に、ノード制御装置７０ｄ内の冗長化ブロック読出部２３４は、当該制御部２００が制御する記憶装置８０ｄに格納されている、更新前の冗長化ブロックを読み出す（Ｓ４３５）。
【００４７】
次に、ノード制御装置７０ｄ内の冗長化ブロック生成部２５４は、Ｓ４３５において読み出された更新前の冗長化ブロック、及びＳ４２０において生成された更新データに基づき、Ｓ４３０において記憶装置８０ａに書き込まれた書込データブロックと組となる新たな冗長化ブロックを生成する（Ｓ４４０）。ここで記憶システム１０がＲＡＩＤ５構成を採る場合、冗長化ブロック生成部２５４は、更新前の冗長化ブロック及び更新データをビット毎に排他的論理和演算することにより、新たな冗長化ブロックを生成してよい。
【００４８】
次に、冗長化ブロック更新部２２４は、冗長化ブロック更新要求を受けてＳ４４０において冗長化ブロック生成部２５４により生成された冗長化ブロックを、当該冗長化ブロックを格納すべき記憶装置８０ｄに書き込むことにより、当該冗長化ブロックを更新する（Ｓ４４５）。ここで記憶システム１０がＲＡＩＤ５０構成を採る場合、冗長化ブロック更新部２２４は、当該冗長化ブロック更新部２２４を有する制御部２００が制御する記憶装置８０ｄ及び記憶装置８０ｄのミラーとなるミラー記憶装置である記憶装置８１ｃのそれぞれに新たな冗長化ブロックを書き込むことにより、記憶装置８０ｄ及び記憶装置８１ｃのそれぞれに格納された冗長化ブロックをそれぞれ更新してもよい。
【００４９】
次に、冗長化ブロック更新部２２４は、冗長化ブロックを更新した場合に、冗長化ブロックを更新したことを示す冗長化ブロック更新通知を、冗長化ブロックの更新を要求したノード制御装置７０ａ内の制御部２００に送信する（Ｓ４５０）。ノード制御装置７０ａ内の制御部２００は、冗長化ブロック更新通知を受信し、かつ、当該冗長化ブロックと組となる書込データブロックをＳ４３０において記憶装置８０ａに書き込んだ場合に、転送部５０及びホスト接続部３０を介してホスト装置２０に書込完了通知を送信する（Ｓ４５５、Ｓ４６０）。これを受けて、ホスト装置２０は、Ｓ４００において発行した書込要求の処理が完了したことを知ることができる。
【００５０】
以上に示した様に、記憶システム１０は、書込要求を受けた場合に、書込データブロックを格納すべき記憶装置８０を制御する制御部２００に当該書込要求を転送し、当該制御部２００により書込処理に伴う更新データの生成（Ｓ４２０）を行なう。また、当該制御部２００は、冗長化ブロックを格納すべき他の記憶装置８０を制御する他の制御部２００に新たな冗長化ブロックを生成させる（Ｓ４４０）。この様にして、記憶システム１０は、書込要求を受けた場合に、書込要求を複数の制御部２００に分散して処理させることができる。このため、集中処理を行う制御装置に処理や通信が集中し、制御装置がボトルネックとなるのを防ぐことができる。
【００５１】
また、制御部２００は、Ｓ４２０において更新データを生成し、冗長化ブロックを格納すべき制御部２００に更新データを送信することにより、書込データブロック及び格納データブロックの双方を当該制御部２００に送信するのと比較し制御部２００間の通信オーバヘッドを低減することができる。
【００５２】
図５は、本実施形態に係る記憶システム１０において、図３に示したストライプ２のＤＢ１が故障している状態でＤＢ１を再生して読み出す場合を例として、データブロック再生読出処理の流れを示す。
まず、ホスト接続部３０は、故障したデータブロックの読出要求のコマンドをホスト装置２０から受信する（Ｓ５００）。次に、ホスト接続部３０内のホスト制御部３４は、故障したデータブロックと組となる冗長化ブロックを格納する記憶装置８０ａを制御するノード制御装置７０ａ内の制御部２００を選択し（Ｓ５０５）、転送部５０を介して当該制御部２００に読出要求を転送する（Ｓ５１０）。ここで、ホスト制御部３４は、複数の記憶装置８０のそれぞれについて、故障したブロックを示す故障ブロック情報を格納し、故障ブロック情報に基づき読出対象のデータブロックの故障を判断してよい。これに代えて、ホスト制御部３４は、複数の記憶装置８０のそれぞれが記憶装置単位で故障したか否かを示す故障記憶装置情報を格納し、故障記憶装置情報に基づき、故障した記憶装置８０に格納された全てのデータブロック又は冗長化ブロックが故障したと判断してもよい。
【００５３】
次に、ノード制御装置７０ａ内の要求受信部２１２が故障したデータブロックの読出要求を受信すると、ノード制御装置７０ａ内の冗長化ブロック読出部２３４は、故障したデータブロックと組となる冗長化ブロック（本例においてＰＢ）を、当該冗長化ブロックを格納する記憶装置８０ａから読み出す（Ｓ５２０）。また、ノード制御装置７０ａ内のブロック読出要求部２６４は、故障したデータブロック（本例においてＤＢ１）及びＳ５２０において読み出す冗長化ブロックＰＢと組となるデータブロックである正常データブロック（本例においてＤＢ２）の読み出しを、当該正常データブロックＤＢ２を格納する記憶装置８０ｃを制御するノード制御装置７０ｃ内の制御部２００に要求する（Ｓ５１５）。
【００５４】
次に、ノード制御装置７０ｃ内の要求受信部２１２は、ノード制御装置７０ａ内の制御部２００から転送部５０を介して読出要求を受け取る。これを受けて、ノード制御装置７０ｃ内のデータブロック読出部２３２は、当該読出要求により指定された正常データブロックＤＢ２を記憶装置８０ｃから読み出し（Ｓ５２５）、ブロック返送部２４４を介してノード制御装置７０ａ内の制御部２００に返送する（Ｓ５３０）。ここで、各ストライプが３以上のデータブロックを含む場合、ノード制御装置７０ａ内の制御部２００は、他の複数の制御部２００に対して正常データブロックの読み出しを要求し、他の複数の制御部２００のそれぞれは、ノード制御装置７０ａ内の制御部２００に対して読み出した正常データブロックをそれぞれ返送してもよい。
【００５５】
次に、ノード制御装置７０ａ内の応答受信部２１４は、正常データブロックＤＢ２を受信する。これを受けて、ノード制御装置７０ａ内のデータブロック再生部２５６は、ブロック読出要求部２６４の要求に基づいて他の制御部２００により読み出され、当該制御部２００に返送された正常データブロックＤＢ２と、Ｓ５２０において読み出された冗長化ブロックとに基づいて、故障したデータブロックを再生する（Ｓ５３５）。記憶システム１０がＲＡＩＤ５構成を採る場合、データブロック再生部２５６は、他の制御部２００により読み出された正常データブロック及び冗長化ブロックをビット毎に排他的論理和演算することにより、故障したデータブロックを再生してよい。次に、ブロック返送部２４４は、再生されたデータブロックを、転送部５０及びホスト接続部３０を介してホスト装置２０に返送する（Ｓ５４０、Ｓ５４５）。
【００５６】
次に、ホスト接続部３０内のキャッシュ制御部３６は、Ｓ５３５において再生されたデータブロックをキャッシュ記憶部３８に格納する（Ｓ５５０）。ここで、キャッシュ制御部３６は、再生されたデータブロックを、故障していないデータブロックと比較しキャッシュ記憶部３８に残留する優先度を高く設定する。
【００５７】
次にＳ５００と同一のデータブロックの読出要求をホスト装置２０から受けると（Ｓ５５５）、キャッシュ制御部３６は、キャッシュ記憶部３８に格納された、再生された当該データブロックを読み出し（Ｓ５６０）、ホスト装置２０に返送する（Ｓ５７０）。
【００５８】
以上に示した通り、本実施形態に係る記憶システム１０によれば、故障したデータブロックに対して読出要求を受けた場合に、当該データブロックと組となる冗長化ブロックを格納する記憶装置８０を制御する、当該データブロックを格納するノード６０以外のノード６０が有する制御部２００にデータブロックの再生を行なわせる。これにより、一のノード６０が故障した場合においても、当該ノード６０以外のノード６０によりデータブロックの再生を行なうことができ、耐故障性を高めることができる。また、記憶システム１０は、故障したデータブロックに対する読出要求を、複数の制御部２００に分散して処理させることができる。このため、集中処理を行う制御装置に処理や通信が集中し、制御装置がボトルネックとなるのを防ぐことができる。
また、キャッシュ制御部３６は、再生されたデータブロックを故障していないデータブロックと比較し優先してキャッシュ記憶部３８に格納することにより、データブロックの再生に伴うオーバヘッドを低減することができる。
【００５９】
図６は、本実施形態に係る記憶システム１０において、図３に示したストライプ１のＤＢ１を再構築する場合を例として、データブロック再構築処理の流れを示す。
例えばノード制御装置７０ａ及び／又は記憶装置８０ａが故障した場合、ノード６０ａが記憶システム１０の筐体から取り外され、新たなノード６０ａに交換される。この場合、元の記憶装置８０ａに格納されていたデータブロック及び冗長化ブロックは失われる。記憶システム１０がＲＡＩＤ５０構成を採る場合、ノード６０ａの交換後に、例えばノード制御装置７０ａが記憶装置８１ｂの各ブロックを記憶装置８０ａにコピーし、ノード制御装置７０ｂが記憶装置８０ｂの各ブロックを記憶装置８１ａにコピーすることにより、ノード６０ａ内の記憶装置８０ａ及び記憶装置８１ａを再構築することができる。一方、ＲＡＩＤ５構成を採る場合、ノード６０ａの交換後に、ノード６０ｂ〜ｄに格納されたデータブロック及び／又は冗長化ブロックに基づき、以下に示す処理により記憶装置８０ａを再構築する。
【００６０】
まず、ホスト接続部３０は、故障したブロックを再生して当該ブロックを格納すべき記憶装置８０に書き込む再構築要求のコマンドをホスト装置２０から受信する（Ｓ６００）。次に、ホスト接続部３０内のホスト制御部３４は、故障したブロックＤＢ１を格納すべき記憶装置８０ａを制御するノード制御装置７０ａ内の制御部２００を選択し（Ｓ６０５）、故障したブロックＤＢ１の再構築要求を転送部５０を介して転送する（Ｓ６１０）。次に、ノード制御装置７０ａ内の要求受信部２１２が再構築要求を受信すると、ブロック読出要求部２６４は、故障したブロックＤＢ１と組となる他のデータブロックＤＢ２及び／又は冗長化ブロックＰＢを格納する記憶装置８０ｂ及び記憶装置８０ｄを制御する他の制御部２００のそれぞれに、これらのデータブロック及び／又は冗長化ブロックの読み出しを要求する読出要求コマンドを転送部５０を介して送信する（Ｓ６１５、Ｓ６２０）。
【００６１】
次に、ノード制御装置７０ｂ内の制御部２００は、要求受信部２１２により読出要求を受信すると、データブロック読出部２３２を介して記憶装置８０ｂからデータブロックＤＢ２を読み出し（Ｓ６２５）、ノード制御装置７０ａ内の制御部２００に返送する（Ｓ６３０）。同様に、ノード制御装置７０ｄ内の制御部２００は、要求受信部２１２により読出要求を受信すると、冗長化ブロック読出部２３４を介して記憶装置８０ｄから冗長化ブロックＰＢを読み出し（Ｓ６３５）、ノード制御装置７０ａ内の制御部２００に返送する（Ｓ６４０）。
【００６２】
次に、ノード制御装置７０ａ内のデータブロック再生部２５６は、ブロック読出要求部２６４の要求に応じて他の制御部２００から返送されたデータブロックＤＢ２及び冗長化ブロックＰＢに基づいて、故障したデータブロックＤＢ１を再生する（Ｓ６４５）。すなわち例えば記憶システム１０がＲＡＩＤ５構成を採る場合、データブロック再生部２５６は、データブロックＤＢ２及び冗長化ブロックＰＢをビット毎に排他的論理和演算することにより、データブロックＤＢ１を再生する。次に、データブロック書込部２２２は、データブロック再生部２５６により再生されたデータブロックＤＢ１を、当該データブロックを格納すべき記憶装置８０ａに書き込む（Ｓ６５０）。そして、完了通知部２４２は、転送部５０及びホスト接続部３０を介して、ホスト装置２０に再構築完了通知を返信する（Ｓ６５５、Ｓ６６０）。
【００６３】
以上に示した様に、記憶システム１０は、再構築要求を受けた場合に、再生されたデータブロックを格納すべき記憶装置８０を制御する制御部２００に当該再構築要求を転送し、当該制御部２００により再構築処理を行わせる。再構築処理を行う制御部２００は、再構築のために必要となるデータブロック及び／又は冗長化ブロックを他の制御部２００に読み出させ、読み出されたデータブロック及び／又は冗長化ブロックを用いてデータブロックを再構築する。これにより、記憶システム１０は、再構築要求を受けた場合において、複数の制御部２００により分散して再構築を行なうことができる。このため、集中処理を行う制御装置に処理や通信が集中し、制御装置がボトルネックとなるのを防ぐことができる。
【００６４】
図７は、本実施形態に係る記憶システム１０において、ノード６０ａの故障時に、図３に示したストライプ１のデータブロックＤＢ１を読み出す場合を例として、ミラー記憶装置からデータブロックを読み出す読出処理の流れを示す。
【００６５】
本例において、記憶システム１０は、例えばＲＡＩＤ５０構成を採る。より具体的には、複数のノード６０が故障していない状態において、ノード制御装置７０ａ内のセレクタ２７０及びノード制御装置７０ｂ内のセレクタ２７０は、ノード制御装置７０ａ内の制御部２００を記憶装置８０ａ及び記憶装置８１ｂに電気的に接続し、ノード制御装置７０ｂ内の制御部２００を記憶装置８０ｂ及び記憶装置８１ａに電気的に接続する。
【００６６】
この状態において、ノード制御装置７０ａ内の制御部２００は、データブロックＤＢ１を格納する記憶装置８０ａ及びデータブロックＤＢ１のミラーとなるミラーブロックＤＢ１’を格納する記憶装置８１ｂを制御する。また、ノード制御装置７０ｂ内の制御部２００は、データブロックＤＢ２を格納する記憶装置８０ｂ及びデータブロックＤＢ２のミラーとなるミラーブロックＤＢ２’を格納する記憶装置８１ａを制御する。ここで、ノード制御装置７０ａ内の制御部２００と、記憶装置８０ａと、記憶装置８１ａとはノード６０ａのサブ筐体に実装され、ノード制御装置７０ｂ内の制御部２００と、記憶装置８０ｂと、記憶装置８１ｂとはノード６０ｂのサブ筐体に実装される。
【００６７】
ここで、ストライプ１のデータブロックＤＢ１に対する書込要求をホスト装置２０から受信すると、記憶システム１０は、図４に示したＳ４００からＳ４６０と同様にして、書込処理を行う。ここで、Ｓ４３０において、ノード制御装置７０ａ内のデータブロック書込部２２２は、ノード制御装置７０ａ内のセレクタ２７０及びノード制御装置７０ｂ内のセレクタ２７０を介して、当該書込データブロックを記憶装置８１ｂに更に書き込んでよい。
【００６８】
この状態において、ホスト接続部３０は、データブロックＤＢ１の読出要求をホスト装置２０から受けた場合、ノード制御装置７０ａの制御部２００により記憶装置８０ａからデータブロックＤＢ１を読み出してホスト装置２０に返送する。一方、データブロックＤＢ２の読出要求をホスト装置２０から受けた場合、ノード制御装置７０ｂの制御部２００により記憶装置８０ｂからデータブロックＤＢ２を読み出してホスト装置２０に返送する。
【００６９】
ノード制御装置７０ａ及び／又は記憶装置８０ａが故障した場合（Ｓ７００）、ホスト接続部３０は、複数のノード制御装置７０が複数の記憶装置８０及び複数の記憶装置８１のいずれを制御するかを変更する構成変更を行なう（Ｓ７０２）。本例において、ノード制御装置７０ｂ内のセレクタ２７０は、ホスト接続部３０から構成変更の指示を受けて（Ｓ７０４）、ノード制御装置７０ｂ内の制御部２００と記憶装置８１ａとを電気的に接続するのに代えて、ノード制御装置７０ｂ内の制御部２００と記憶装置８１ｂとを電気的に接続する様に接続形態を切り替える。
【００７０】
ノード制御装置７０ａ及び記憶装置８０ａが故障した状態において記憶装置８０ａが格納するデータブロックＤＢ１の読出要求を受けた場合（Ｓ７１０）、ホスト接続部３０内のホスト制御部３４は、ノード制御装置７０ｂ内の制御部２００を選択し（Ｓ７１５）、データブロックＤＢ１の読出要求を転送する（Ｓ７２０）。ノード制御装置７０ｂ内の制御部２００は、当該読出要求を要求受信部２１２により受信すると、セレクタ２７０により電気的に接続された記憶装置８１ｂからデータブロックＤＢ１のミラーブロックＤＢ１’をデータブロック読出部２３２により読み出し（Ｓ７２５）、ホスト接続部３０に返送する（Ｓ７３０）。ホスト接続部３０内のホスト制御部３４は、Ｓ７２０、Ｓ７２５、及びＳ７３０においてノード制御装置７０ｂ内の制御部２００により読み出したミラーブロックＤＢ１’を、読出対象のデータブロックとしてホスト装置２０に返信する（Ｓ７３５）。
【００７１】
以上に示した記憶システム１０によれば、ＲＡＩＤ５０構成を用いた場合、一のノード６０が故障した状態においてもミラー記憶装置からミラーブロックを読み出すことができ、耐故障性を高めることができる。なお、以上において、対となるノード６０のそれぞれに設けられたセレクタ２７０は、両方同時にストレート接続形態又はクロス接続形態のいずれかに設定されてよい。
【００７２】
図８は、本実施形態に係るホスト装置２０のハードウェア構成の一例を示す。本実施形態に係るホスト装置２０は、ホスト・コントローラ８８２により相互に接続されるＣＰＵ８００、ＲＡＭ８２０、グラフィック・コントローラ８７５、及び表示装置８８０を有するＣＰＵ周辺部と、入出力コントローラ８８４によりホスト・コントローラ８８２に接続される通信インターフェイス８３０、ハードディスク・ドライブ８４０、及びＣＤ−ＲＯＭドライブ８６０を有する入出力部と、入出力コントローラ８８４に接続されるＲＯＭ８１０、フレキシブルディスク・ドライブ８５０、及び入出力チップ８７０を有するレガシー入出力部とを備える。
【００７３】
ホスト・コントローラ８８２は、ＲＡＭ８２０と、高い転送レートでＲＡＭ８２０をアクセスするＣＰＵ８００及びグラフィック・コントローラ８７５とを接続する。ＣＰＵ８００は、ＲＯＭ８１０及びＲＡＭ８２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ８７５は、ＣＰＵ８００等がＲＡＭ８２０内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置８８０上に表示させる。これに代えて、グラフィック・コントローラ８７５は、ＣＰＵ８００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００７４】
入出力コントローラ８８４は、ホスト・コントローラ８８２と、比較的高速な入出力装置である通信インターフェイス８３０、ハードディスク・ドライブ８４０、ＣＤ−ＲＯＭドライブ８６０を接続する。通信インターフェイス８３０は、ネットワークを介して他の装置と通信する。ハードディスク・ドライブ８４０は、記憶システム１０内のホスト接続部３０及び複数のノード制御装置７０が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ８６０は、ＣＤ−ＲＯＭ８９５からプログラム又はデータを読み取り、ＲＡＭ８２０及び／又はハードディスク・ドライブ８４０と通信インターフェイス８３０とを介して記憶システム１０に提供する。
【００７５】
また、入出力コントローラ８８４には、ＲＯＭ８１０と、フレキシブルディスク・ドライブ８５０や入出力チップ８７０等の比較的低速な入出力装置とが接続される。ＲＯＭ８１０は、ホスト装置２０が起動時に実行するブート・プログラムや、ホスト装置２０のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ８５０は、フレキシブルディスク８９０からプログラム又はデータを読み取り、ＲＡＭ８２０及び／又はハードディスク・ドライブ８４０と通信インターフェイス８３０とを介して記憶システム１０に提供する。入出力チップ８７０は、フレキシブルディスク８９０や、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を接続する。
【００７６】
ＲＡＭ８２０及び／又はハードディスク・ドライブ８４０を介して記憶システム１０に提供されるプログラムは、フレキシブルディスク８９０、ＣＤ−ＲＯＭ８９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、入出力コントローラ８８４及びＲＡＭ８２０を介して記憶システム１０内のホスト接続部３０及び複数のノード６０にインストールされ、ＣＰＵ８００において実行される。
【００７７】
記憶システム１０内のホスト接続部３０及び複数のノード制御装置７０にインストールされて実行されるプログラムは、ホスト接続部３０及び複数のノード制御装置７０を、キャッシュ制御モジュールを有するホスト制御モジュールと、要求受信モジュールと、応答受信モジュールと、データブロック書込モジュールと、冗長化ブロック書込モジュールと、データブロック読出モジュールと、冗長化ブロック読出モジュールと、完了通知モジュールと、ブロック返送モジュールと、要求送信モジュールと、更新データ生成モジュールと、冗長化ブロック生成モジュールと、データブロック生成モジュールと、冗長化ブロック更新要求モジュールと、ブロック読出要求モジュールとを備える。これらのプログラム又はモジュールは、ホスト接続部３０及び複数のノード制御装置７０を、キャッシュ制御部３６を有するホスト制御部３４と、要求受信部２１２と、応答受信部２１４と、データブロック書込部２２２と、冗長化ブロック更新部２２４と、データブロック読出部２３２と、冗長化ブロック読出部２３４と、完了通知部２４２と、ブロック返送部２４４と、要求送信部２４６と、更新データ生成部２５２と、冗長化ブロック生成部２５４と、データブロック再生部２５６と、冗長化ブロック更新要求部２６２と、ブロック読出要求部２６４としてそれぞれ機能させる。
【００７８】
以上に示したプログラム又はモジュールは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク８９０、ＣＤ−ＲＯＭ８９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを記憶システム１０に提供してもよい。
【００７９】
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更または改良を加えることができる。そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００８０】
以上に説明した実施形態によれば、以下の各項目に示す記憶システム、制御装置、制御方法、及び、そのプログラムと記録媒体が実現される。
【００８１】
（項目１）  データブロックと、当該データブロックの故障時に当該データブロックを再生するための冗長データである冗長化ブロックとの組を、複数の記憶装置にブロック単位で分散して格納する記憶システムであって、それぞれが前記複数の記憶装置のそれぞれを制御する複数の制御部と、当該記憶システムに格納すべきデータブロックである書込データブロックを外部のホスト装置から受信し、前記書込データブロックを格納すべき前記記憶装置を制御する前記制御部を選択するホスト接続部と、受信した前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置を制御する前記制御部に転送する転送部とを備え、前記複数の制御部のそれぞれは、前記転送部により転送された前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置に書き込むデータブロック書込部と、前記書込データブロックと組となる前記冗長化ブロックを格納すべき前記記憶装置を制御する前記制御部に、前記冗長化ブロックの更新を要求する冗長化ブロック更新要求部と、他の前記制御部から前記冗長化ブロックの更新を要求された場合に、当該制御部が制御する前記記憶装置に格納された前記冗長化ブロックを更新する冗長化ブロック更新部とを有する記憶システム。
【００８２】
（項目２）  前記複数の制御部のそれぞれは、前記転送部により転送された前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置に書き込む前に、当該書込データブロックを書き込むべき記憶領域に格納されている格納データブロックを読み出すデータブロック読出部と、前記転送部により転送された前記書込データブロック及び前記格納データブロックに基づき、前記冗長化ブロックの更新に用いる更新データを生成する更新データ生成部と、他の前記制御部から前記冗長化ブロックの更新を要求された場合に、当該制御部が制御する前記記憶装置に格納されている、更新前の前記冗長化ブロックを読み出す冗長化ブロック読出部と、更新前の前記冗長化ブロック及び前記更新データ生成部が生成した前記更新データに基づき、前記書込データブロックと組となる新たな前記冗長化ブロックを生成する冗長化ブロック生成部とを有し、前記冗長化ブロック更新部は、前記冗長化ブロック生成部により生成された前記冗長化ブロックを、当該冗長化ブロックを格納すべき前記記憶装置に書き込む項目１記載の記憶システム。
【００８３】
（項目３）  前記更新データ生成部は、前記書込データブロック及び前記格納データブロックをビット毎に排他的論理和演算することにより、前記更新データを生成し、前記冗長化ブロック生成部は、更新前の前記冗長化ブロック及び前記更新データをビット毎に排他的論理和演算することにより、前記書込データブロックと組となる新たな前記冗長化ブロックを生成する項目２記載の記憶システム。
（項目４）  前記データブロック書込部は、前記転送部により転送された前記書込データブロックを、当該データブロック書込部を有する前記制御部が制御する前記記憶装置及び当該記憶装置のミラーとなるミラー記憶装置に書き込み、他の前記制御部から前記冗長化ブロックの更新を要求された場合に、前記冗長化ブロック更新部は、当該冗長化ブロック更新部を有する前記制御部が制御する前記記憶装置及び当該記憶装置のミラーとなるミラー記憶装置のそれぞれに格納された前記冗長化ブロックをそれぞれ更新する項目２記載の記憶システム。
【００８４】
（項目５）  第１の前記制御部と、前記第１の制御部が制御する前記記憶装置と、第２の前記制御部が制御する前記記憶装置のミラーとなる第２の前記ミラー記憶装置とは、前記記憶システムの筐体に着脱可能に実装される第１のサブ筐体に実装され、前記第２の制御部と、前記第２の制御部が制御する前記記憶装置と、前記第１の制御部が制御する前記記憶装置のミラーとなる第１の前記ミラー記憶装置とは、前記記憶システムの筐体に着脱可能に実装される第２のサブ筐体に実装される項目４記載の記憶システム。
（項目６）  前記第１の制御部を、前記第１のミラー記憶装置及び前記第２のミラー記憶装置のいずれに電気的に接続するかを切り替える第１のセレクタと、前記第２の制御部を、前記第２のミラー記憶装置及び前記第１のミラー記憶装置のいずれに電気的に接続するかを切り替える第２のセレクタとを更に備える項目５記載の記憶システム。
【００８５】
（項目７）  前記第１のセレクタは、前記第１の制御部を前記第２のミラー記憶装置に電気的に接続するか、又は、前記第１の制御部を前記第１のセレクタ及び前記第２のセレクタを介して前記第１のミラー記憶装置に電気的に接続するかを選択し、前記第２のセレクタは、前記第２の制御部を前記第１のミラー記憶装置に電気的に接続するか、又は、前記第２の制御部を前記第２のセレクタ及び前記第１のセレクタを介して前記第２のミラー記憶装置に電気的に接続するかを選択する項目６記載の記憶システム。
（項目８）  前記第１の記憶装置及び／又は前記第１の制御部が故障した場合に、前記第２のセレクタは、前記第２の制御部を前記第１のミラー記憶装置に電気的に接続し、前記第１の記憶装置及び／又は前記第１の制御部が故障した状態において、前記第１の記憶装置が格納するデータブロックの読出要求をホスト装置から受けた場合に、前記ホスト接続部は、前記第１のミラー記憶装置から当該データブロックのミラーであるデータブロックを前記第２の制御部により読み出し、前記ホスト装置に返信する項目６記載の記憶システム。
【００８６】
（項目９）  当該記憶システムは、複数のデータブロックと、前記複数のデータブロックの少なくとも１つのデータブロックの故障時に、故障した当該データブロックを再生するための冗長データである冗長化ブロックとの組を、前記複数の記憶装置に分散して格納し、故障したデータブロックの読出要求を外部のホスト装置から受信した場合に、前記ホスト接続部は、前記転送部を介して、故障した当該データブロックと組となる前記冗長化ブロックを格納する前記記憶装置を制御する前記制御部に前記読出要求を転送し、前記複数の制御部のそれぞれは、故障した前記データブロックの前記読出要求を受けた場合に、故障した前記データブロックと組となる前記冗長化ブロックを、当該冗長化ブロックを格納する前記記憶装置から読み出す冗長化ブロック読出部と、故障した前記データブロックの前記読出要求を受けた場合に、故障した前記データブロック及び前記冗長化ブロックと組となるデータブロックである正常データブロックを格納する前記記憶装置を制御する他の前記制御部に、前記正常データブロックの読み出しを要求するブロック読出要求部と、前記ブロック読出要求部の要求に基づいて他の前記制御部により読み出された前記正常データブロック及び前記冗長化ブロックに基づいて、故障した前記データブロックを再生するデータブロック再生部と、再生された前記データブロックを、前記ホスト接続部を介して前記ホスト装置に返送するデータブロック返送部とを更に有する項目１記載の記憶システム。
【００８７】
（項目１０）  前記ホスト接続部は、ホスト装置から読出要求を受けて読み出されたデータブロックを格納するキャッシュ記憶部と、前記キャッシュ記憶部に格納されたデータブロックを対象とする読出要求をホスト装置から受けた場合に、前記キャッシュ記憶部から当該データブロックを当該ホスト装置に返送するキャッシュ制御部とを有し、前記キャッシュ制御部は、故障したデータブロックであって、前記データブロック再生部により再生されたデータブロックを、故障していないデータブロックと比較し当該キャッシュ記憶部に残留する優先度を高く設定する項目６記載の記憶システム。
【００８８】
（項目１１）  当該記憶システムは、複数のデータブロックと、前記複数のデータブロックの少なくとも１つのデータブロックの故障時に、故障した当該データブロックを再生するための冗長データである冗長化ブロックとの組を、前記複数の記憶装置に分散して格納し、故障したデータブロックを再生して当該データブロックを格納すべき前記記憶装置に書き込む再構築要求を外部のホスト装置から受信した場合に、前記ホスト接続部は、当該データブロックを格納すべき前記記憶装置を制御する前記制御部に、故障したデータブロックの再構築要求を転送し、前記複数の制御部のそれぞれは、故障した前記データブロックと組となる他の前記データブロック又は前記冗長化ブロックを格納する前記記憶装置を制御する他の前記制御部のそれぞれに、故障した前記データブロックと組となる他の前記データブロック又は前記冗長化ブロックの読出しを要求するブロック読出要求部と、前記ブロック読出要求部の要求に応じて他の前記制御部から返送された前記データブロック及び前記冗長化ブロックに基づいて、故障した前記データブロックを再生するデータブロック再生部とを更に有し、前記データブロック書込部は、前記データブロック再生部により再生された前記データブロックを、当該データブロックを格納すべき前記記憶装置に書き込む項目１記載の記憶システム。
【００８９】
（項目１２）  前記冗長化ブロック更新部は、前記冗長化ブロックを更新した場合に、冗長化ブロック更新通知を当該冗長化ブロックの更新を要求した前記制御部に送信し、当該冗長化ブロックの更新を要求した前記制御部は、前記冗長化ブロック更新通知を受信し、かつ、当該冗長化ブロックと組となる前記書込データブロックを格納すべき前記記憶装置に当該書込データブロックを書き込んだ場合に、前記ホスト接続部を介して前記ホスト装置に書込完了通知を送信する完了通知部を更に有する項目１記載の記憶システム。
【００９０】
（項目１３）  データブロックと、当該データブロックのミラーとなるミラーブロックとの組を、前記複数の記憶装置にブロック単位で分散して格納する記憶システムであって、第１のデータブロックを格納する第１の前記記憶装置及び前記第１のデータブロックのミラーとなる第１の前記ミラーブロックを格納する第２の前記記憶装置を制御する第１の制御部と、第２のデータブロックを格納する第３の前記記憶装置及び前記第２のデータブロックのミラーとなる第２の前記ミラーブロックを格納する第４の前記記憶装置を制御する第２の制御部と、前記第１のデータブロックの読出要求を外部のホスト装置から受けた場合に、前記第１の制御部により前記第１の記憶装置から前記第１のデータブロックを読み出して前記ホスト装置に返送し、前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記第２の制御部により前記第２の記憶装置から前記第２のデータブロックを読み出して前記ホスト装置に返送するホスト接続部と、前記第２の制御部又は前記第１の記憶装置が故障した場合に、前記第１の制御部と前記第２の記憶装置とを電気的に接続するのに代えて、前記第１の制御部と前記第４の記憶装置とを電気的に接続するセレクタとを備え、前記第２の制御部が故障した状態において前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記ホスト接続部は、前記第１の制御部に前記第２のデータブロックの読出要求を転送し、前記第２のデータブロックの読出要求を受けた前記第１の制御部は、前記セレクタにより電気的に接続された前記第４の記憶装置から前記第２のミラーブロックを読み出し、前記ホスト接続部に返送する記憶システム。
【００９１】
（項目１４）  データブロックと、当該データブロックの故障時に当該データブロックを再生するための冗長データである冗長化ブロックとの組を、複数の記憶装置にブロック単位で分散して格納する記憶システムの制御装置であって、前記記憶システムは、それぞれが複数の記憶装置のそれぞれを制御する複数の当該制御装置と、当該記憶システムに格納すべきデータブロックである書込データブロックを外部のホスト装置から受信し、前記書込データブロックを格納すべき前記記憶装置を制御する前記制御装置を選択するホスト接続部と、受信した前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置を制御する前記制御装置に転送する転送部とを備え、前記複数の制御装置のそれぞれは、前記転送部により転送された前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置に書き込むデータブロック書込部と、前記書込データブロックと組となる前記冗長化ブロックを格納すべき前記記憶装置を制御する前記制御装置に、前記冗長化ブロックの更新を要求する冗長化ブロック更新要求部と、他の前記制御装置から前記冗長化ブロックの更新を要求された場合に、当該制御部が制御する前記記憶装置に格納された前記冗長化ブロックを更新する冗長化ブロック更新部とを有する制御装置。
【００９２】
（項目１５）  データブロックと、当該データブロックのミラーとなるミラーブロックとの組を、前記複数の記憶装置にブロック単位で分散して格納する記憶システムの制御装置であって、前記記憶システムは、第１のデータブロックを格納する第１の前記記憶装置及び前記第１のデータブロックのミラーとなる第１の前記ミラーブロックを格納する第２の前記記憶装置を制御する当該制御装置と、第２のデータブロックを格納する第３の前記記憶装置及び前記第２のデータブロックのミラーとなる第２の前記ミラーブロックを格納する第４の前記記憶装置を制御する他の制御装置と、前記第１のデータブロックの読出要求を外部のホスト装置から受けた場合に、当該制御装置により前記第１の記憶装置から前記第１のデータブロックを読み出して前記ホスト装置に返送し、前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記他の制御装置により前記第２の記憶装置から前記第２のデータブロックを読み出して前記ホスト装置に返送するホスト接続部とを備え、前記他の制御装置又は前記第３の記憶装置が故障した状態において前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記ホスト接続部は、当該制御装置に前記第２のデータブロックの読出要求を転送し、当該制御装置は、前記他の制御装置又は前記第３の記憶装置が故障した場合に、当該制御装置と前記第２の記憶装置とを電気的に接続するのに代えて、当該制御装置と前記第４の記憶装置とを電気的に接続するセレクタと、前記他の制御装置が故障した状態において前記第２のデータブロックの読出要求を受けた場合に、前記セレクタにより電気的に接続された前記第４の記憶装置から前記第２のミラーブロックを読み出し、前記ホスト接続部に返送する制御部とを有する制御装置。
【００９３】
（項目１６）  データブロックと、当該データブロックの故障時に当該データブロックを再生するための冗長データである冗長化ブロックとの組を、複数の記憶装置にブロック単位で分散して格納する記憶システムの制御方法であって、前記記憶システムは、それぞれが複数の記憶装置のそれぞれを制御する複数の当該制御装置と、当該記憶システムに格納すべきデータブロックである書込データブロックを外部のホスト装置から受信し、前記書込データブロックを格納すべき前記記憶装置を制御する前記制御装置を選択するホスト接続部と、受信した前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置を制御する前記制御装置に転送する転送部とを備え、前記複数の制御装置のそれぞれに、前記転送部により転送された前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置に書き込ませるデータブロック書込段階と、前記書込データブロックと組となる前記冗長化ブロックを格納すべき前記記憶装置を制御する前記制御装置に、前記冗長化ブロックの更新を要求させる冗長化ブロック更新要求段階と、他の前記制御装置から前記冗長化ブロックの更新を要求された場合に、当該制御部が制御する前記記憶装置に格納された前記冗長化ブロックを更新させる冗長化ブロック更新段階とを有する制御方法。
【００９４】
（項目１７）  データブロックと、当該データブロックのミラーとなるミラーブロックとの組を、前記複数の記憶装置にブロック単位で分散して格納する記憶システムの制御方法であって、前記記憶システムは、第１のデータブロックを格納する第１の前記記憶装置及び前記第１のデータブロックのミラーとなる第１の前記ミラーブロックを格納する第２の前記記憶装置を制御する第１の前記制御装置と、第２のデータブロックを格納する第３の前記記憶装置及び前記第２のデータブロックのミラーとなる第２の前記ミラーブロックを格納する第４の前記記憶装置を制御する第２の前記制御装置と、前記第１のデータブロックの読出要求を外部のホスト装置から受けた場合に、前記第１の制御装置により前記第１の記憶装置から前記第１のデータブロックを読み出して前記ホスト装置に返送し、前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記第２の制御装置により前記第２の記憶装置から前記第２のデータブロックを読み出して前記ホスト装置に返送するホスト接続部とを備え、前記第２の制御装置又は前記第３の記憶装置が故障した状態において前記第２のデータブロックの読出要求を前記ホスト装置から受けた場合に、前記ホスト接続部から、当該制御装置に前記第２のデータブロックの読出要求を転送する転送段階と、前記第２の制御装置又は前記第３の記憶装置が故障した場合に、前記第１の制御装置と前記第２の記憶装置とを電気的に接続するのに代えて、前記第１の制御装置と前記第４の記憶装置とを電気的に接続するセレクタ段階と、前記第２の制御装置が故障した状態において前記第２のデータブロックの読出要求を受けた場合に、前記第１の制御装置が、前記セレクタ段階により電気的に接続された前記第４の記憶装置から前記第２のミラーブロックを読み出し、前記ホスト接続部に返送する制御段階とを有する制御方法。
【００９５】
（項目１８）  データブロックと、当該データブロックの故障時に当該データブロックを再生するための冗長データである冗長化ブロックとの組を、複数の記憶装置にブロック単位で分散して格納する記憶システムを制御するプログラムであって、前記記憶システムは、それぞれが前記複数の記憶装置のそれぞれを制御する複数の制御部と、当該記憶システムに格納すべきデータブロックである書込データブロックを外部のホスト装置から受信し、前記書込データブロックを格納すべき前記記憶装置を制御する前記制御部を選択するホスト接続部と、受信した前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置を制御する前記制御部に転送する転送部とを備え、当該プログラムは、前記複数の制御部のそれぞれを、前記転送部により転送された前記書込データブロックを、当該書込データブロックを格納すべき前記記憶装置に書き込むデータブロック書込部と、前記書込データブロックと組となる前記冗長化ブロックを格納すべき前記記憶装置を制御する前記制御部に、前記冗長化ブロックの更新を要求する冗長化ブロック更新要求部と、他の前記制御部から前記冗長化ブロックの更新を要求された場合に、当該制御部が制御する前記記憶装置に格納された前記冗長化ブロックを更新する冗長化ブロック更新部として機能させるプログラム。
（項目１９）  項目１８記載のプログラムを記録した記録媒体。
【００９６】
【発明の効果】
上記説明から明らかなように、本発明によれば、大規模な記憶システムにおいて生じる制御装置のボトルネックを解消することにより、記憶システムの性能向上を図ることができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係る記憶システム１０の構成を示す。
【図２】本発明の実施形態に係るノード制御装置７０ａの構成を示す。
【図３】本発明の実施形態に係る記憶システム１０に格納されるデータの配置を示す。
【図４】本発明の実施形態に係る記憶システム１０のデータブロック書込処理の流れを示す。
【図５】本発明の実施形態に係る記憶システム１０のデータブロック再生読出処理の流れを示す。
【図６】本発明の実施形態に係る記憶システム１０のデータブロック再構築処理の流れを示す。
【図７】本発明の実施形態に係る記憶システム１０の、故障時におけるデータブロック読出処理の流れを示す。
【図８】本発明の実施形態に係るホスト装置２０のハードウェア構成の一例を示す。
【符号の説明】
１０  記憶システム
２０  ホスト装置
３０  ホスト接続部
３２  ホストインターフェイス
３４  ホスト制御部
３６  キャッシュ制御部
３８  キャッシュ記憶部
４０ａ〜ｂ  インターフェイス
５０ａ〜ｂ  転送部
６０ａ〜ｄ  ノード
７０ａ〜ｄ  ノード制御装置
８０ａ〜ｄ  記憶装置
８１ａ〜ｄ  記憶装置
２００  制御部
２１０  受信インターフェイス
２１２  要求受信部
２１４  応答受信部
２２０  ブロック書込部
２２２  データブロック書込部
２２４  冗長化ブロック更新部
２３０  ブロック読出部
２３２  データブロック読出部
２３４  冗長化ブロック読出部
２４０  送信インターフェイス
２４２  完了通知部
２４４  ブロック返送部
２４６  要求送信部
２５０  演算部
２５２  更新データ生成部
２５４  冗長化ブロック生成部
２５６  データブロック再生部
２６０  フロー制御部
２６２  冗長化ブロック更新要求部
２６４  ブロック読出要求部
２７０  セレクタ
８００  ＣＰＵ
８１０  ＲＯＭ
８２０  ＲＡＭ
８３０  通信インターフェイス
８４０  ハードディスク・ドライブ
８５０  フレキシブルディスク・ドライブ
８６０  ＣＤ−ＲＯＭドライブ
８７０  入出力チップ
８７５  グラフィック・コントローラ
８８０  表示装置
８８２  ホスト・コントローラ
８８４  入出力コントローラ
８９０  フレキシブルディスク
８９５  ＣＤ−ＲＯＭ
【図１】
2004334706.tif 000003
【図２】
2004334706.tif 000004
【図３】
2004334706.tif 000005
【図４】
2004334706.tif 000006
【図５】
2004334706.tif 000007
【図６】
2004334706.tif 000008
【図７】
2004334706.tif 000009
【図８】
2004334706.tif 000010