(57)【要約】【課題】複数のストレージノードに分散してデータを格納するストレージシステムにおいて、定期的に実行される高負荷処理がある場合、書き込み・読み出しに関する一定の性能要求水準を満たしつつ、高負荷処理の効率化を図ることができる冗長性を持った分散ストレージシステムを提供する。【解決手段】高負荷処理を実行するストレージノードでは、その他のストレージノードとは非同期で完了を待たない方式のアクセスを行い、その他のストレージノードでは、その他のストレージノード間で同期させて完了を待つ方式のアクセスを行う。また、高負荷処理を実行するストレージノードは、書き込まれたデータのハッシュ値を保存し、その他のストレージノードのうちいずれかは、高負荷処理を実行するストレージノードに書き込まれたデータの複製とともにデータのハッシュ値を保存する。【選択図】      図１
2014149625.tif 000002
【特許請求の範囲】
【請求項１】
複数のストレージノードに分散してデータを格納するストレージシステムであって、
複数の前記ストレージノードのうち少なくとも一つの前記ストレージノードにおいて高負荷処理を実行する場合、
前記高負荷処理を実行する前記ストレージノードにおいては、その他の前記ストレージノードとは非同期で完了を待たない方式のアクセスを行い、
その他の前記ストレージノードにおいては、その他の前記ストレージノード間で同期させて完了を待つ方式のアクセスを行うことを特徴とするストレージシステム。
【請求項２】
その他の前記ストレージノードのうちいずれかは、
前記高負荷処理を実行する前記ストレージノードに書き込まれた前記データの複製を保存することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記高負荷処理を実行する前記ストレージノードは、
前記高負荷処理を実行する前記ストレージノードに書き込まれた前記データのハッシュ値を保存し、
その他の前記ストレージノードのうちいずれかは、
前記高負荷処理を実行する前記ストレージノードに書き込まれた前記データの複製とともに、前記データのハッシュ値を保存することを特徴とする請求項１に記載のストレージシステム。
【請求項４】
複数の前記ストレージノードとデータ通信可能に接続されたアクセスノードを備え、
前記アクセスノードは、
外部からのデータの読み出し・書き込みを処理して前記データの転送を行う外部アクセス部と、
前記外部アクセス部から転送された前記データを複数のデータブロック及びパリティブロックからなるブロックに分割するデータ分割部と、
前記データ分割部によって分割された前記ブロックの分散先となる前記ストレージノードを決定するデータ分散部と、
前記データ分散部の決定に応じて前記ブロックを前記分散先となる前記ストレージノードへ転送する書き込み転送部と、
前記高負荷処理を行う前記ストレージノードを管理する高負荷ノード管理部と、
前記高負荷処理を行う前記ストレージノードを記憶する第１の高負荷ノード記憶部と、
前記第１の高負荷ノード記憶部を参照し、前記高負荷処理を行う前記ストレージノードの有無に応じて前記ブロックの書き込み方法を制御する書き込み方法制御部と、を有し、
前記外部アクセス部によって受信された前記データを前記ブロックに分割し、前記高負荷処理を実行しているストレージに書き込まれる前記ブロックを前記パリティブロックとしてその他の前記ストレージノードのうちいずれかに格納することを特徴とする請求項１乃至３のいずれか一項に記載のストレージシステム。
【請求項５】
前記アクセスノードは、
前記ストレージノードから前記ブロックを収集する読み出し部と、
前記読み出し部によって収集された前記ブロックを前記データとして再構築するデータ結合部と、を有し、
前記読み出し部は、収集した前記データを構成する前記ブロックを前記データ結合部に転送し、
前記データ結合部は、再構築した前記データを前記外部アクセス部へ転送し、
前記外部アクセス部は、前記データ結合部によって再構築された前記データを外部へ送信することを特徴とする請求項４に記載のストレージシステム。
【請求項６】
前記ストレージノードは、
前記ブロックを格納するブロック記憶部と、
前記アクセスノードから受信したアクセス要求に応じて前記ブロック記憶部へのアクセスを行う書き込み・読み出し処理部と、
前記ブロックのハッシュエントリを作成して前記ハッシュエントリをハッシュテーブルに登録するハッシュエントリ登録部と、
前記高負荷処理を実行する前記ストレージノードへ前記ハッシュエントリ登録部によって登録された前記ハッシュエントリを転送するハッシュエントリ転送部と、
前記ハッシュエントリ転送部により転送された前記ハッシュエントリと自身の前記ハッシュエントリとを照合して整合性のチェックを行うハッシュエントリ照合部と、
前記ハッシュエントリ照合部によって整合性が確認された前記ハッシュエントリを削除するハッシュエントリ削除部と、
前記ブロックの書き込み完了後に前記ブロックの整合性を確認するために前記ハッシュエントリ転送部と前記ハッシュエントリ照合部と前記ハッシュエントリ削除部とを動作させるデータ検証部と、
前記アクセスノードが有する前記高負荷ノード管理部から取得した前記高負荷処理を実行する前記ストレージノードに関する情報を格納する第２の高負荷ノード記憶部と、を有することを特徴とする請求項４または５に記載のストレージシステム。
【請求項７】
前記高負荷処理を実行しているストレージノードの前記データ検証部は、
その他の前記ストレージノードから前記高負荷処理を実行している前記ストレージノードに関する前記ハッシュエントリを前記ハッシュエントリ転送部によって収集させ、
その他の前記ストレージノードから収集した前記ハッシュエントリと前記高負荷処理を実行している前記ストレージノードの前記ハッシュエントリとを前記ハッシュエントリ照合部によって照合させ、
前記ハッシュエントリ照合部によって整合性があると判断された場合、
全ての前記ストレージノード上にある対象となる前記ブロックに関する前記ハッシュエントリを前記ハッシュエントリ削除部によって削除させ、
前記ハッシュエントリ照合部によって整合性がないと判断された場合、
整合性がないと判断された前記ハッシュエントリに関する前記ブロックを前記ハッシュエントリ転送部によって取得させた後に、全ての前記ストレージノード上にある対象となる前記ハッシュエントリを前記ハッシュエントリ削除部によって削除させることを特徴とする請求項６に記載のストレージシステム。
【請求項８】
前記高負荷処理を実行する前記ストレージノードにおいて前記高負荷処理が終了すると、前記高負荷処理を実行する前記ストレージノードをその他の前記ストレージノードのいずれかに変更し、複数の前記ストレージノードにおいて前記高負荷処理を順次実行することを特徴とする請求項１乃至７のいずれか一項に記載のストレージシステム。
【請求項９】
複数のディスクに分散してデータを格納するディスクアレイ装置であって、
前記複数のディスクのうち少なくとも一つのディスクにおいて高負荷処理を実行する場合、
前記高負荷処理を実行するディスクにおいては、その他の前記複数のディスクとは非同期で完了を待たない方式のアクセスを行い、
その他の前記複数のディスクにおいては、その他の前記複数のディスク間で同期させて完了を待つ方式のアクセスを行うことを特徴とするディスクアレイ装置。
【請求項１０】
複数のストレージノードに分散してデータを格納するストレージシステムの制御方法であって、
前記複数のストレージノードのうち少なくとも一つのストレージノードにおいて高負荷処理を実行する場合、
前記高負荷処理を実行するストレージノードにおいては、その他の前記複数のストレージノードとは非同期で完了を待たない方式のアクセスを行い、
その他の前記複数のストレージノードにおいては、その他の前記複数のストレージノード間で同期させて完了を待つ方式のアクセスを行うことを特徴とするストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数ノードにデータを分散して格納するストレージシステム、ディスクアレイ装置及びストレージシステムの制御方法に関する。
【背景技術】
【０００２】
分散ストレージ装置などのストレージ装置では、日次や週次などの定期的メインテナンス処理を行う必要がある。一般に、このようなメインテナンス処理は、ＣＰＵや、ディスク、その他の装置へ与える負荷が無視できない大きさになることが多い（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）。その結果、メインテナンス処理の実施中は、ストレージ装置の本来の提供機能である入出力処理に多大な影響を与える。
【０００３】
例えば、一般的な重複排除型ストレージ装置では、定期的に領域解放処理を行う必要がある。そのような定期的な領域開放処理においては、全ノードで領域解放を行い、領域解放と書き込み・読み出しのリソース配分は動的に行っている。しかしながら、書き込み・読み出しは事前に予測できないため、書き込み・読み出しの開始・終了付近ではリソース配分が間に合わず、性能劣化や、領域解放の非効率化を招いている。
【０００４】
このため、そのようなメインテナンス処理は、本業の負荷が比較的軽い時間帯などに行われるような方策がとられる。しかしながら、それでもやはりメインテナンス処理が行われている間にストレージ装置を利用する必要がある場合には、著しい性能劣化を被ることになる。
【０００５】
このような状況に対応して、メインテナンス処理などに与えるＣＰＵ等の資源や優先度を制約し、本来の機能に影響を与えないレベルでストレージ装置を動かすように制御する技術がある。また、本来の機能の負荷状況に応じてメインテンス処理に与える資源や優先度を調整し、メインテナンス処理の実行が、高負荷時にはより抑制され、低負荷時には空きリソースの範囲内で迅速に行われるようにする工夫もある。
【０００６】
一般に、上位アプリケーションからの書き込み・読み出しと、ノードに対して定期的に実施するメインテナンス処理における高負荷処理とが同時に存在する場合、書き込み・読み出しの性能を確保するためには、以下のような方法をとっている（図１０）。
【０００７】
まず、図１０（Ａ）に示したように書き込み・読み出しが無い場合、全ノードで同時に高負荷処理を行う。その場合、高負荷処理のリソース配分（ディスクＩ／Ｏの帯域幅）は、例えば全ノードにおいて１００％とすることができる（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）。また、図１０（Ｂ）に示したように書き込み・読み出しがある場合、書き込み・読み出しと高負荷処理のリソース配分を動的に行う。例えば、書き込み・読み出しに対して７５％、高負荷処理に対して２５％のリソースを配分することができる。
【０００８】
この方法では、以下の２つの問題がある（図１１）。
【０００９】
一つ目の問題は、上位アプリケーションからの書き込み・読み出しが始まる時刻が予測できないため、書き込み・読み出しの開始部分ではリソース配分が間に合わず、メインテナンス処理における高負荷処理と重なり、性能劣化が発生することである。そのため、書き込み・読み出しの開始部分で性能要求を満たせないことがある。このような性能劣化は、図１１に示した区間ａのように、高負荷処理中に書き込み・読み出し処理が実行された場合など、高負荷処理と書き込み・読み出し処理とが重なることで生じる。
【００１０】
似たつめの問題は、上位アプリケーションの書き込み・読み出しが終わり高負荷処理を再開する場合、リソースを使っていない区間が存在する。そのため、断続的な書き込み・読み出しによってリソースを使っていない区間が増大することである。このようなリソースを使っていない区間は、図１１に示した区間ｂのように示される。区間ｂにおいては、高負荷処理において書き込み・読み出し処理にもリソースが使われていない場合を示す。
【００１１】
また、特許文献１には、特別のＲＡＩＤ５を適用した冗長データ管理方法について開示されている（ＲＡＩＤ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  ＤｉｓｋｓまたはＲｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）。特許文献１の冗長データ管理方法では、書き込み時には性能の高い物理ディスクに、読み出し時には性能の低い物理ディスクに冗長データを移動する。このようにすると、書き込み時には、アクセス頻度が増大する冗長データの書き込みを性能の高いディスクに実行させ、読み出し時には、参照する必要がない冗長データを性能の低いディスクに実行させることになる。また、特許文献１では、物理ディスクの静的な性能のみならず、性能相違度というパラメータによって動的な性能を把握し、動的な性能の高い物理ディスクにおいて書き込みアクセスが多くなるように冗長データを配置する。以上のようにして、読み出し性能の低いディスクへのアクセスの頻度を減らし、論理ディスクの性能低下を防止することができる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１１−１３９０８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上述したように、メインテナンス処理に与える資源や優先度の動的調整では、負荷変動に対するタイムラグが生じる。例えば、突発的にＩ／Ｏが発生した場合などでは、高負荷状態になったことを認識するまでの統計情報収集の時間分やメインテナンス処理の低優先度状態への移行を開始させてから実際にＩ／Ｏ処理などが収束するまでの時間などがタイムラグとなる。すなわち、メインテナンス処理に与える資源や優先度の動的調整における負荷変動に対するタイムラグは、ストレージ装置を構成するシステムにおいて無視できない性能劣化の時間帯として観測され、システムの動作に影響を与えるという問題点が生じる。
【００１４】
特許文献１の冗長データ管理方法では、性能相違度というパラメータを算出し、動的な性能差に応じて冗長データを最適なディスクに配置できるものの、常にディスクへのリードリクエスト又はライトリクエスト要求に対する応答状況を監視する。しかしながら、メインテナンス時などの高負荷処理時にライト・リードを実行した場合、高負荷処理を行っているディスクへのアクセスが必要となる可能性があり、やはりシステムの動作に影響が及ぶことになる。
【００１５】
本発明は、上述の問題点を解決するため、冗長性を持った分散ストレージシステムにおいて、定期的に全ノードで実行される高負荷処理がある場合、書き込み・読み出しに関する一定の性能要求水準を満たしつつ、高負荷処理の効率化を図ることを目的とする。
【課題を解決するための手段】
【００１６】
本発明のストレージシステムは、複数のストレージノードに分散してデータを格納するストレージシステムであって、複数のストレージノードのうち少なくとも一つのストレージノードにおいて高負荷処理を実行する場合、高負荷処理を実行するストレージノードにおいては、その他のストレージノードとは非同期で完了を待たない方式のアクセスを行い、その他のストレージノードにおいては、その他のストレージノード間で同期させて完了を待つ方式のアクセスを行う。
【００１７】
本発明のディスクアレイ装置は、複数のディスクに分散してデータを格納するディスクアレイ装置であって、複数のディスクのうち少なくとも一つのディスクにおいて高負荷処理を実行する場合、高負荷処理を実行するディスクにおいては、その他の複数のディスクとは非同期で完了を待たない方式のアクセスを行い、その他の複数のディスクにおいては、その他の複数のディスク間で同期させて完了を待つ方式のアクセスを行う。
【００１８】
本発明のストレージシステムの制御方法は、複数のストレージノードに分散してデータを格納するストレージシステムの制御方法であって、複数のストレージノードのうち少なくとも一つのストレージノードにおいて高負荷処理を実行する場合、高負荷処理を実行するストレージノードにおいては、その他の複数のストレージノードとは非同期で完了を待たない方式のアクセスを行い、その他の複数のストレージノードにおいては、その他の複数のストレージノード間で同期させて完了を待つ方式のアクセスを行う。
【発明の効果】
【００１９】
本発明によれば、ストレージシステム全体の性能劣化を防ぐことができ、書き込み・読み出しに関する一定の性能要求を満たしつつ、高負荷処理の効率化を図ることができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態に関する図である。
【図２】本発明の実施形態に係るストレージシステムの構成を示すブロック図である。
【図３】本発明の実施形態に係るストレージシステムの書き込み・読み出し動作に関する図である。
【図４】本発明の実施形態に係るストレージシステムのアクセスノードにおける書き込み動作に関する図である。
【図５】本発明の実施形態に係るストレージシステムのストレージノードにおける書き込み動作に関する図である。
【図６】本発明の実施形態に係るストレージシステムにおける書き込み方式に関する模式図である。
【図７】本発明の実施形態に係るストレージシステムにおける書き込み完了後のデータ検証に関するフローチャートである。
【図８】本発明の実施形態に係るストレージシステムにおける読み出し動作に関する図である。
【図９】本発明の実施形態の変形例に係るディスクアレイシステムの構成を示すブロック図である。
【図１０】関連技術における書き込み・読み出しと高負荷処理との関係を説明するための図である。
【図１１】関連技術の問題点を説明するための図である。
【発明を実施するための形態】
【００２１】
以下に、本発明を実施するための形態について図面を用いて説明する。但し、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
【００２２】
（実施形態）
まず、図１を用いて本発明の実施形態について説明する。図１においては、データを複数のブロックに分割し、その複数のブロックを各ストレージノードに割り当てるように図示している。しかしながら、データをブロックに分割する必要がない場合は、図１においてデータをブロックに分割するプロセスを省略し、ブロックと記載したところをデータと読み替えてもよい。以下の明細書中の記載において、特に断りが無い限りブロックとはブロック化されたデータを意味しており、ブロック自体がデータ構造を有するものとする。
【００２３】
本発明の実施形態は、複数のストレージノードに分散してデータを格納するストレージシステムに関する。なお、本発明の実施形態においては、メインテナンス処理などの高負荷処理を行うストレージノードとその他のストレージノードとにおいて、書き込み・読み出し時のアクセス方法を異なるものとする。また、図１において、ブロックとストレージノードを結ぶ矢印を持つ線分に関して、実線は「完了を待つ書き込み・読み出し」、破線は「完了を待たない書き込み・読み出し」を示す。
【００２４】
まず、図１（Ａ）を用いて高負荷処理を実行する場合について説明する。
【００２５】
高負荷処理を行うストレージノードにおいては、図１（Ａ）に破線で示した「完了を待たない書き込み」をその他のストレージノードとは非同期で行う。それに対し、その他のストレージノードにおいては、図１（Ａ）に実線で示した「完了を待つ書き込み」をその他のストレージノード間で同期させて行う。
【００２６】
また、図１（Ａ）の高負荷処理を行うストレージノードにおいては、ブロックとともにハッシュ値を保存する。さらに、図１（Ａ）のその他のストレージノードにおいては、高負荷処理を行うストレージノードに保存されたブロックの複製をコピーするとともに、ハッシュ値を保存する。
【００２７】
データの読み出し時には、高負荷処理を行うストレージノードからのデータの読み出しを待たずに、その他のストレージノードから読み出したブロックを基にデータの再構築を行う。すなわち、高負荷処理を行うストレージノードにおいては、図１（Ａ）に破線で示した「完了を待たない読み出し」を非同期で行う。また、その他のストレージノードにおいては、図１（Ａ）に実線で示した「完了を待つ読み出し」を同期させて行う。
【００２８】
次に、図１（Ｂ）を用いて高負荷処理を実行しない場合について説明する。
【００２９】
高負荷処理を実行しない場合は、全てのストレージノードにおいて、図１（Ｂ）に実線で示した「完了を待つ書き込み・読み出し」を同期させて行う。
【００３０】
このように、本発明の実施形態においては、図１（Ａ）で示すような高負荷処理を実行する場合、高負荷処理を実行するストレージノードにおいては完了を待たない方式によるアクセスを非同期で行い、その他のストレージノードにおいては完了を待つ方式によるアクセスを同期させて行う。また、図１（Ｂ）で示すような高負荷処理を実行しない場合、全てのストレージノードにおいて完了を待つ方式によるアクセスを同期させて行う。
【００３１】
以上が、図１に示した本発明の実施形態に係る説明である。なお、図１に示した本発明の実施形態は一例であって、本発明の範囲を限定するものではない。
【００３２】
以下において、具体的なストレージシステムの構成を示すことによって、本発明の実施形態について詳細に説明する。
【００３３】
（ストレージシステム）
次に、図２を用いて本発明の実施形態に係るストレージシステムの構成について説明する。
【００３４】
図２は、本発明の実施形態に係るストレージシステム１の構成を示すブロック図である。
【００３５】
本発明の実施形態に係るストレージシステム１は、１台のアクセスノード１０とＮ台のストレージノード２０(２０−１〜２０−Ｎ)を備えている。なお、Ｎは任意の自然数であり、２以上であることを想定している。また、データ書き込み・読み出し手段４０は、本発明の実施形態に係るストレージシステム１の構成に含めなくてもよく、必要に応じて追加される構成要素とする。
【００３６】
アクセスノード１０は、外部から取得したデータをブロックに分割し、複数のストレージノード２０にブロックの書き込み・読み出しを実行するとともに、高負荷処理を行っているストレージノード２０を管理する。アクセスノード１０とＮ台のストレージノード２０とは、バス３０を介してデータ授受できるように接続されている。なお、バス３０は、一般的なインターネット回線や電話回線などの共用ネットワークでもよく、イントラネットなどとして構築された専用ネットワークであってもよい。
【００３７】
（アクセスノード）
アクセスノード１０は、外部アクセス部１１と、データ分割部１２と、データ分散部１３と、書き込み方法制御部１４と、書き込み転送部１５と、高負荷ノード管理部１６と、データ結合部１９と、読み出し部１８と、高負荷ノード記憶部１７とを備えている。
【００３８】
外部アクセス部１１は、外部からのデータの読み出し・書き込みを処理し、下位部となるアクセスノード１０の内部へのデータの転送および外部へのデータの返信を行う。
【００３９】
図２に示した本発明の実施形態に係るストレージシステム１においては、データ書き込み・読み出し手段４０によって外部アクセス部１１にアクセスできる構成としている。データ書き込み・読み出し手段４０は、例えばデータの書き込み・読み出しを実行するソフトウェアなどのプログラムで構成することができる。なお、データ書き込み・読み出し手段４０は、本発明の実施形態に係るストレージシステム１に含まれていなくてもよく、外部アクセス部１１がクラウドやインターネット、上位システム、ユーザなどからのインターフェースとして機能すればよい。
【００４０】
データ分割部１２は、外部アクセス部１１からの書き込みデータを複数のデータブロック及びパリティブロックからなるブロックに分割する。データ分割部１２は、例えば、書き込みデータを９つのデータブロックと３つのパリティブロックの計１２ブロックに分割する。なお、データブロック及びパリティブロックの分割の仕方はここであげて限りではなく、１２ブロック未満に分割してもよく、１２ブロック以上に分割してもよい。また、これ以降、データブロックとパリティブロックとを区別しない場合は、単にブロックと表記する。
【００４１】
データ分散部１３は、データ分割部１２によって分割された各ブロックを取得し、各ブロックの分散先を決定する。各ブロックの分散先は、いずれかのストレージノード２０に決定される。
【００４２】
書き込み方法制御部１４は、後述する高負荷ノード記憶部１７を参照し、高負荷ノードの有無に応じてデータ分散部１３から取得した各ブロックの書き込み方法を決定する。なお、高負荷ノードとは、メインテナンス処理などによって負荷が高くなっているストレージノード２０を意味する。また、具体的な書き込み方法については、後ほど詳細に説明する。
【００４３】
書き込み転送部１５は、書き込み方法制御部１４を経由した各ブロックを各ストレージノード２０へ転送する。なお、書き込み転送部１５は、各ストレージノード２０が備える書き込み・読み出し処理部２１と、データ授受できるように接続されている。
【００４４】
高負荷ノード管理部１６は、高負荷ノード記憶部１７と接続されており、高負荷処理を行うストレージノード２０を管理する。高負荷ノード管理部１６は、例えば高負荷処理を実行するノードの決定・変更などを行う。なお、高負荷ノード管理部１６は、各ストレージノード２０が備える高負荷ノード記憶部２７とも、データ授受できるように接続されている。
【００４５】
本発明の実施形態において、高負荷処理とは、データの書き込み・読み出し処理とは異なり、メインテナンス処理などのように負荷が大きな処理のことを意味する。なお、高負荷処理を行うストレージノード２０は必ずしも一つに限定しなくてもよく、多数のストレージノード２０で構成される場合は、そのうちのいくつかのストレージノード２０において高負荷処理を行うようにしてもよい。また、高負荷処理としては、ネットワーク接続、ウイルススキャン処理、ソフトウェアのアップデートやダウンロード、コンピュータのバックグラウンド処理等を含むような処理をあげることができ、必ずしもメインテナンス処理に限定するわけではない。
【００４６】
第１の高負荷ノード記憶部である高負荷ノード記憶部１７は、高負荷処理を実行中のストレージノード２０を記憶する。高負荷ノード記憶部１７に記憶された高負荷処理実行中のストレージノード２０に関する情報は、書き込み方法制御部１４によって参照される。
【００４７】
読み出し部１８は、各ストレージノード２０に対して読み出し処理を要求し、各ストレージノード２０からデータを構成する各ブロックを収集する。読み出し部１８は、各ストレージノード２０が備える書き込み・読み出し処理部２１と、データ授受できるように接続されている。また、読み出し部１８は、各ストレージノード２０から収集したブロックをデータ結合部１９に送る。
【００４８】
データ結合部１９は、読み出し部１８によって読み出された各ストレージノード２０からのブロックを結合してデータを再構築し、外部アクセス部１１へ転送する。外部アクセス部１１に転送されたデータは、データ書き込み・読み出し手段４０によって外部に読み出される。
【００４９】
（ストレージノード）
ストレージノード２０は、書き込み・読み出し処理部２１と、ハッシュエントリ登録部２２と、データ検証部２３と、ハッシュエントリ転送部２４と、ハッシュエントリ照合部２５と、ハッシュエントリ削除部２６と、高負荷ノード記憶部２７と、ディスク２８とを備える。
【００５０】
図２においては、バス３０を介して、Ｎ個のストレージノード２０（２０−１、２０−２、・・・、２０−Ｎ）がアクセスノード１０及びその他のストレージノード２０と接続されている様子を示している。なお、Ｎ個のストレージノード２０（２０−１、２０−２、・・・、２０−Ｎ）は、全て同様の構成要素を有する。
【００５１】
書き込み・読み出し処理部２１は、アクセスノード１０から送信された書き込み・読み出し要求に応じ、ディスク２８へのアクセス（書き込み処理・読み出し処理）を行う。なお、書き込み・読み出し処理部２１は、アクセスノード１０の読み出し部１８及び書き込み転送部１５とデータ授受ができるように接続されている。
【００５２】
ハッシュエントリ登録部２２は、書き込み・読み出し処理部２１と接続され、書き込みブロックのハッシュエントリを作成し、作成したハッシュエントリをハッシュテーブルに登録する。ハッシュテーブルは、キーと値の組であるハッシュエントリを複数個格納し、キーに対応する値を迅速に参照するためのデータ構造である。なお、本実施形態において、キーはノード番号に対応し、値はブロック化されたデータに対応する。ハッシュテーブルは、例えばディスク２８に格納することができ、必要に応じて図示しない別の記憶部に格納してもよい。
【００５３】
データ検証部２３は、書き込み・読み出し処理部２１と接続され、ブロックの書き込み完了後にデータの整合性を確認するため、その下位部となるハッシュエントリ転送部２４、ハッシュエントリ照合部２５、ハッシュエントリ削除部２６を動作させる。
【００５４】
ハッシュエントリ転送部２４は、ハッシュエントリ登録部２２によって登録されたハッシュエントリを高負荷ノードであるストレージノード２０へ転送する。
【００５５】
ハッシュエントリ照合部２５は、高負荷ノード上で、自ノードのハッシュエントリと他のストレージノード２０のハッシュエントリ転送部２４により転送されてきたハッシュエントリを照合し、整合性のチェックを行う。
【００５６】
ハッシュエントリ削除部２６は、ハッシュエントリ照合部２５によってハッシュエントリの整合性を確認した後に、当該のハッシュエントリを削除する。
【００５７】
第２の高負荷ノード記憶部である高負荷ノード記憶部２７は、高負荷処理実行中のノードを記憶する。なお、高負荷ノード記憶部２７は、アクセスノード１０の高負荷ノード管理部１６と、バス３０を介してデータ授受ができるように接続されている。
【００５８】
ブロック記憶部であるディスク２８は、書き込み・読み出し対象のブロックが格納されるディスク領域である。なお、ディスク２８はブロック以外のデータを格納してもよい。
【００５９】
以上が、本発明の実施形態にかかるストレージシステム１の構成である。ただし、上述の構成は一例に過ぎず、種々の変形・追加を行ったものについても本発明の範囲に含むものとする。
【００６０】
（動作）
ここで、本発明の実施形態に係るストレージシステム１の動作のフローについて説明する。
【００６１】
（アクセスノードの動作）
まず、高負荷処理を行うストレージノード２０の管理に関する動作について図を用いずに説明する。
【００６２】
図２に示したアクセスノード１０の有する高負荷ノード管理部１６は、高負荷処理を行うストレージノード２０を決定し、そのストレージノード２０において高負荷処理を実行する。また、高負荷ノード管理部１６は、高負荷処理を実行しているストレージノード２０をアクセスノード１０の有する高負荷ノード記憶部１７と、ストレージノード２０の有する高負荷ノード記憶部２７とに記憶させる。このとき、高負荷処理を実行するストレージノード２０を状態Ｈとして記憶し、その他のストレージノード２０を状態Ｌとして記憶する。
【００６３】
図３には、ブロックの書き込み・読み出しの動作例を示した。なお、図３においては、図３（Ａ）左上図、図３（Ｂ）右上図、図３（Ｃ）左下図、図３（Ｄ）右下図の順で状態Ｈのストレージノード２０が遷移する様子を示している。また、図３において、アクセスノード１０とストレージノード２０を結ぶ矢印を持つ線分に関して、実線は「完了を待つ書き込み・読み出し」、破線は「完了を待たない書き込み・読み出し」を示す。
【００６４】
例えば、図３において、左上図の図３（Ａ）の状態ではストレージノード２０−１が高負荷処理を実行しているため、ストレージノード２０−１が状態Ｈとして記憶される。状態Ｈのノード（ストレージノード２０−１）における高負荷処理が終わると、高負荷ノード管理部１６は、次のストレージノード（ストレージノード２０−２）で高負荷処理を実行し、高負荷ノード記憶部１７及び２７に記憶されている状態を更新する。すなわち、右上図の図３（Ｂ）に示したように、ストレージ２０−２を状態Ｈに変更するとともに、ストレージ２０−１を状態Ｌに変更する。
【００６５】
同様に、ストレージノード２０−２における高負荷処理が終了すると、左下図の図３（Ｃ）に示したようにストレージノード２０−３を高負荷処理に移行する。さらに、ストレージノード２０−３における高負荷処理が終了すると、その他のストレージノード２０を状態Ｈに変更し、同様に高負荷処理を実行する。このような一連の動作を全ストレージノード２０で高負荷処理が終わるまで繰り返す。
【００６６】
ただし、状態Ｈのストレージノード２０の遷移は、図３に示した順番に限定するわけではない。例えば、あるストレージノード２０で高負荷処理が終了したら、ノード番号が連続するストレージノード２０を次に状態Ｈとするように設定してもよい。また、ノード番号が一つおきや二つおきとなるような特定の規則で状態Ｈとするストレージノード２０を設定してもよい。さらには、ディスク２８の容量や、空き容量、性能などに応じた順に状態Ｈとなるストレージノード２０を設定してもよい。
【００６７】
ここで、図４及び図５のフローチャートと、図６の模式図を用いてデータ書き込み時における動作を説明する。なお、図４はアクセスノード１０の動作に関し、図５はストレージノード２０の動作に関する。
【００６８】
まず、図４において、データ分割部１２は、外部アクセス部１１が受信した書き込みデータを複数のブロックに分割する（ステップ４１）。これは、図６に示したデータ分割部１２において、データをブロック１、ブロック２、・・・、ブロックＮに分割する様子で示している。なお、データをブロックに分割せずにストレージノード２０に格納する場合は、そのデータをブロックとみなして次のステップ４２に進む。
【００６９】
次に、データ分散部１３は、分割された複数のブロックに宛先ノード情報を付与する（ステップ４２）。これは、図６に示したデータ分散部１３において、ブロック１、ブロック２、・・・、ブロックＮのそれぞれに、ノード１、ノード２、・・・、ノードＮを付加する様子で示している。
【００７０】
書き込み方法制御部１４は、高負荷ノード記憶部１７を参照し、状態Ｈのストレージノード２０の有無を調べる（ステップ４３）。
【００７１】
ここで、状態Ｈのストレージノード２０が存在しない場合（ステップ４３でＮｏ）、書き込み方法制御部１４は、各ブロックに同期書き込み情報を付加する（ステップ４７）。
【００７２】
書き込み転送部１５は、いずれかのストレージノード２０にブロックを転送する（ステップ４９）。
【００７３】
ステップ４９の後、図５のステップ５１に進む。
【００７４】
ここで、状態Ｈのストレージノード２０が存在する場合（ステップ４３でＹｅｓ）について、図６を用いて説明する。なお、図６においては、ブロックＮが高負荷ノードである場合を示す。
【００７５】
各ブロック（ブロック１、ブロック２、・・・、ブロックＮ）に対し、状態Ｌのストレージノード２０が宛先となるブロック（ステップ４４でＮｏ）には、同期書き込み情報を付加する（ステップ４７）。また、状態Ｈのストレージノード２０が宛先となるブロックには、非同期書き込み情報を付加する（ステップ４５）。
【００７６】
書き込み方法制御部１４は、高負荷ノード管理部１６の指定に応じて、状態Ｈのストレージノード２０が宛先となるブロックを複製する。また、高負荷ノード管理部１６は、宛先ノードを状態Ｌのストレージノード２０のいずれかに変更する（ステップ４６）。なお、宛先ノードの変更においては、任意の状態Ｌのストレージノード２０を指定してもよく、特定の規則（例えば、隣接するノードに振り分けるなど）でノードに振り分けるようにしてもよい。また、単一の状態Ｌのノードに振り分けるのみならず、複数の状態Ｌのノードに振り分けることによって冗長性を持たせてもよい。
【００７７】
その後、状態Ｌのノードに振り分けられるブロック（図６ではブロックＮ’）に、同期書き込み情報と本来の宛先情報を付加する（ステップ４８）。
【００７８】
最後に、書き込み転送部１５は、それぞれのストレージノード２０の書き込み・読み出し処理部２１に、対応する書き込みデータを転送する（ステップ４９）。
【００７９】
以上が図４に示したアクセスノード１０の動作の説明である。なお、図４に示した動作順などは状況に応じて変更してもよい。
【００８０】
（ストレージノードの動作）
次に、図５を用いてストレージノード２０の動作のフローについて説明する。
【００８１】
まず、図５のフローチャートにおいて、ストレージノード２０の書き込み・読み出し処理部２１は、書き込みデータとなるブロックを受信すると、そのブロックをディスク２８に書き込む（ステップ５１）。
【００８２】
ハッシュエントリ登録部２２は、非同期書き込みがある場合（ステップ５２でＹｅｓ）、本来の宛先情報の有無を検証する（ステップ５３）。なお、ハッシュエントリ登録部２２は、非同期書き込みがない場合（ステップ５２でＮｏ）、そのままステップ５６に進む。
【００８３】
ステップ５２でＹｅｓであって、かつ本来の宛先情報がある場合（ステップ５３でＹｅｓ）、ハッシュエントリ登録部２２は、非同期書き込みブロックおよび本来の宛先ノード情報があるブロックをハッシュ化する（ステップ５４）。
【００８４】
なお、本来の宛先情報が無い場合（ステップ５３でＮｏ）、そのままステップ５６に進む。
【００８５】
ステップ５３でＹｅｓの場合、さらに、ハッシュテーブルに状態Ｈのノード番号をキーとしてハッシュ値を登録する（ステップ５５）。なお、ハッシュテーブルは、ディスク２８に格納されてもよいし、ストレージノード２０内部の図示しない記憶部に格納されてもよい。
【００８６】
同期書き込み完了が全て返った時点で１つの書き込みの完了とする（ステップ５６）。
【００８７】
以上が、図５に示したストレージノード２０の動作の説明である。なお、図５に示した動作順などは状況に応じて変更してもよい。
【００８８】
（データ検証処理）
次に、図７のフローチャートを用いて、書き込み完了後のデータ検証処理のフローについて説明する。
【００８９】
図４及び図５に示したフローチャートによって、１つの書き込みが完了したら、データ検証部２３が起動され、高負荷ノード記憶部２７から自ノードの状態を調べる。自ノードが状態Ｈであれば、ハッシュエントリ転送部２４を起動する。
【００９０】
状態Ｈのストレージノード２０のハッシュエントリ転送部２４は、状態Ｌのストレージノード２０のハッシュエントリ転送部２４へ、当該書き込み分のブロックのうち、本来の宛先情報を持つブロックのハッシュエントリを転送するよう要求を出す。本来の宛先情報とは、状態Ｈのストレージノード２０のノード番号に相当する。これは、状態Ｈであった際に保存したブロックの適正を確認するための処理である。
【００９１】
図７において、状態Ｈのストレージノード２０のハッシュエントリ転送部２４は、この要求に応じて転送されてきたハッシュエントリを自ノードへ収集する（ステップ７１）。
【００９２】
状態Ｈのストレージノード２０のハッシュエントリ照合部２５は、収集したハッシュエントリと自ノードのハッシュエントリの整合性を確認する（ステップ７２）。
【００９３】
次に、収集したハッシュエントリと自ノードのハッシュエントリを照合し、整合性を判断する（ステップ７３）。
【００９４】
整合性があると判断された場合（ステップ７３でＹｅｓ）、ハッシュエントリ削除部２６は、全ストレージノード２０上において、現在データ検証の対象となっている書き込みに関するハッシュエントリを削除する（ステップ７５）。これは、整合性があると判断された場合は、状態Ｈのストレージノード２０が保存したブロックが適正であることが確認されたことになる。
【００９５】
整合性がないと判断された場合（ステップ７３でＮｏ）、整合がないと判断されたハッシュエントリに関するブロックを、状態Ｌのストレージノード２０から状態Ｈのストレージノード２０へ転送し、状態Ｈのストレージノード２０の有するディスク２８に書き込む（ステップ７４）。これは、整合性がないと判断された場合、状態Ｈのストレージノード２０に保存したブロックが不適正であるため、状態Ｈのストレージノード２０が適正なブロックを取得するためである。
【００９６】
その後、ハッシュエントリ削除部２６は、全ストレージノード２０上において、現在データ検証の対象となっている書き込みに関するハッシュエントリを削除する（ステップ７５）。
【００９７】
ステップ７５におけるハッシュエントリの削除は、それぞれのストレージノード２０が有するハッシュエントリ削除部２６によって実行される。なお、状態Ｈのストレージノード２０の有するハッシュエントリ削除部２６の削除機能が他のストレージノード２０にも有効である場合は、状態Ｈのストレージノード２０のハッシュエントリ削除部２６によって実行されるとしてもよい。
【００９８】
以上が、書き込み完了後のデータ検証フローについての説明である。
【００９９】
（データ読み出し時の動作）
最後に、図８を参照しながらデータ読み出し時の動作について説明する。なお、図８の動作フローにおいては、アクセスノード１０とストレージノード２０の動作を同じ図にまとめている。
【０１００】
図８において、データ読み出しの際には、アクセスノード１０の読み出し部１８は、全ストレージノード２０に対して読み出し対象となるデータを構成するためのブロックの読み出しを要求する（ステップ８１）。
【０１０１】
各ストレージノード２０の書き込み・読み出し処理部２１は、ディスク２８からブロックを読み出し、アクセスノード１０の読み出し部１８へブロックの転送を開始する（ステップ８２）。
【０１０２】
アクセスノード１０のデータ結合部１９は、アクセスノード１０に転送されたブロックが元のデータを再構成できる分だけ集まった段階で、データを再構成する（ステップ８３）。なお、状態Ｈのストレージノード２０からの読み出しが完了する前に、その他のストレージノード２０から読み出されたブロックによってデータの再構築が可能となるのであれば、状態Ｈのストレージノード２０からの読み出しの完了を待つ必要はない。
【０１０３】
再構築されたデータは、アクセスノード１０の外部アクセス部１１に転送される（ステップ８４）。
【０１０４】
外部アクセス部１１によって外部に転送され（ステップ８５）、読み出しは完了する。
【０１０５】
以上が、データ読み出し時の動作の説明である。
【０１０６】
以上が本発明の実施形態に係るストレージシステムに係る動作の一例の説明である。なお、上記の動作は本発明の実施形態の一例であり、本発明の範囲を限定するものではない。
【０１０７】
本発明の実施形態に係るストレージシステムでは、分散ストレージシステムを構成する一部のノードで高負荷処理を起動することによって、一時的に書き込み・読み出しに関するノードの応答性能等の劣化を予想する。そして、高負荷処理を行うノードと、それ以外のノードで書き込み・読み出しの方式を変える。この点は、以下のようにまとめられる。
【０１０８】
（１）書き込み・読み出しを扱うノード（以下、状態Ｌのノードとよぶ）と高負荷処理を扱うノード（以下、状態Ｈのノードとよぶ）をあらかじめ区別し、書き込み・読み出し方式を状態Ｌのノードと状態Ｈのノードとで変える。このように、書き込み・読み出し方式を状態Ｌと状態Ｈとで変えることによって、性能と冗長性を確保する。
【０１０９】
（２）分散ストレージシステムを構成するノードのうち一台を状態Ｈに割り当て、それ以外のノードを状態Ｌに割り当てる。状態Ｈのノードで高負荷処理が終わったら、他のいずれかのノードを状態Ｈに割り当て、それまで状態Ｈであったノードを状態Ｌに割り当てる。以降、全ノードの高負荷処理が終わるまで、状態Ｈとするノードの変更を繰り返す。
【０１１０】
ここで、本発明の実施形態における書き込み方式について以下にまとめる。
【０１１１】
性能と冗長性を確保するため、状態Ｌのノードと状態Ｈのノードとで書き込み方式を以下のように変える。
【０１１２】
状態Ｈのノードでは、ディスク書き込みの完了を待たない方式でデータを書き込み、書いたデータのハッシュ値を保存する。
【０１１３】
状態Ｌのノードでは、通常の完了を待つ方式での書き込みを行い、同時に状態Ｈのノードで書いたデータと同じ内容のデータを、いくつかの状態Ｌのノードで分散するように完了を待つ方式で書き込み、ハッシュ値も保存する。
【０１１４】
これは、状態Ｈのノードで書いたデータは保証されていないので、状態Ｌのノードに完了を待つ方式で書き込むことによりデータを保証するためである。
【０１１５】
完了を待つ方式での書き込みが全て完了したら、書き込み完了とする。
【０１１６】
書き込み完了後、状態Ｈのノードは、各々の状態Ｌのノードに保存されたハッシュ値を状態Ｈのノードへ転送させる。
【０１１７】
状態Ｈのノードに保存されたハッシュ値と、各々の状態Ｌのノードに保存されたハッシュ値との整合性を確かめる。
【０１１８】
整合性が取れている場合は、全ノードで当該のハッシュ値を削除する。整合性が取れていない場合は、状態Ｌのノードに書かれたデータを状態Ｈのノードに移動させた後、全ノードで当該のハッシュ値を削除する。
【０１１９】
次に、本発明の実施形態に係る読み出し方式について以下にまとめる。
【０１２０】
本発明の実施形態に係るストレージシステムは、冗長性を持った分散ストレージシステムである。そのため、高負荷処理によりデータ読み出しに時間がかかると予想される状態Ｈのノードから読み出しを待たなくても、状態Ｌのノードだけの読み出しでユーザが必要なデータは再構成できる。
【０１２１】
データは、例えば、ｎ個のパリティブロックとｍ個のデータブロックに分割されたｍ＋ｎ個のブロックとして複数のノードに分散格納される（ｍ、ｎは自然数）。そして、パリティブロックとデータブロックの中からｍ個のブロックが揃えば読み出し対象のデータは再構成できる。そのため、一台のノードに格納されるブロック数がｎ個以下ならば、その一台の読み出しを待たなくても、読み出し対象データは再構成できることになる。
【０１２２】
以上の方法により、書き込み・読み出しの開始部分と高負荷処理が重なることを防ぐことができる。すなわち、上位アプリケーションからの書き込み・読み出しが始まる時刻が予測できないために起こるような、書き込み・読み出しの開始部分においてリソース配分が間に合わずにメインテナンス処理おける高負荷処理と重なり性能劣化を防止できる。そのため、書き込み・読み出しの開始部分で性能要求が満たされることになる。
【０１２３】
また、断続的な書き込み・読み出しによってもリソースを使っていない区間は増大しないため、上位アプリケーションの書き込み・読み出しが終わって高負荷処理を再開する場合、リソースを使っていない区間をなくすことができる。そのため、断続的な書き込み・読み出しによってリソースを使っていない区間が増大するということがなくなる。
【０１２４】
さらに、一般的な分散ストレージ装置と本発明に係るストレージシステムとの性能劣化の違いについて以下のように説明する。
【０１２５】
一般的な分散ストレージ装置は、複数ノードで構成することによって読み書きするデータに冗長性を付加したうえで分割し、Ｉ／Ｏ処理の並列実行を行い、性能向上を図っている（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）。それとともに、冗長性が付加されたデータを複数ノードで分担して持つことで耐障害性の向上も図っている。
【０１２６】
このような一般的な構成にすれば、一部のノードが故障して機能を喪失するような場合への耐性のみならず、一部のノードがなんらかの理由で性能劣化した場合への対応能力をも備えている。
【０１２７】
それに対し、本発明においては、故障やデータ配置のようなものに起因する性能劣化とは異なり、メインテナンス処理のようにその実行がスケジュール化され、実行することによる性能劣化が予測可能である処理を好適な対象とする。
【０１２８】
したがって、上記のような分散ストレージ装置の特徴とメインテナンス処理の特徴とを利用して、次に述べるようなメインテナンス処理中でもシステム全体の性能劣化を抑える手段を構成することができる。
【０１２９】
（１）分散ストレージが複数ノードで構成されていることを利用し、メインテナンス処理を行う時間帯をノードごとにずらして、性能劣化するノードを一時的に一部のノードだけに限定させる。
【０１３０】
（２）性能劣化が予想されるノードについては、応答性能の劣化が予測されるため、データの確実な書き込みを保証するような同期的書き込みを避ける。データの保証は、メインテナンス処理を行っていない残りのノードにおいて、同期的書き込み等を行うことによって確保する。これは、分散ストレージが冗長性を備えたデータ分割を行っているという特徴と、性能劣化ノードが事前に予測可能であることを用いて書き込みの性質をあらかじめ変えることが可能になるという本発明の着眼点から導かれる。
【０１３１】
（３）同様に、読み込みに関しても、性能劣化が予想されるノード以外からデータを組み立てる。これもデータの冗長性と性能劣化ノードの予測から可能となる。
【０１３２】
以上のように、本発明の実施形態においては、冗長性を持った分散ストレージにおいて、メインテナンスタスクなどの定期的に全ノードで実行される高負荷処理がある場合、高負荷処理を行うノードを事前に決定する。さらに、前もってユーザの書き込み・読み出しの方式を決定したノードとそれ以外のノードで変える。その結果、書き込み・読み出しに関する一定の性能要求水準を満たすこと、および高負荷処理の効率化を図ることができる。
【０１３３】
本発明の実施形態に示した構成・方法をとることによれば、高負荷処理ノードとそれ以外のノードで書き込み・読み出しの質を事前に決定することができる。そのため、本発明の実施形態に係るストレージシステムによれば、メインテナンスタスクを行うような高負荷処理ノードがある分散ストレージシステムであっても、システム全体の性能劣化を防ぎ、シビアな性能要求を満たすことができる。
【０１３４】
（変形例）
本発明の実施形態においては、データ分散を複数のストレージノードで行う構成について説明した。その他にも、複数のストレージノードではなく、一台のディスクアレイ装置内において複数のディスクにデータ分散を行う構成でも、実施形態と同等の効果を得られる。
【０１３５】
図９には、本発明の実施形態に係る変形例の一例を示した。図９に示した変形例には、複数のディスク９２（９２−１、９２−２、９２−３、・・・）がコントローラ９１によって制御されるディスクアレイ装置９０を示した。なお、図９において、コントローラ９１と複数のディスク９２を結ぶ矢印を持つ線分に関して、実線は「完了を待つ書き込み・読み出し」、破線は「完了を待たない書き込み・読み出し」を示す。
【０１３６】
コントローラ９１は、図２に示したアクセスノード１０の構成・機能を有するとともに、図２に示したストレージノード２０においてディスク２８を除いた構成・機能を有している。コントローラ９１は、複数のディスク９２への書き込み・読み出しの制御を行なう。すなわち、図２の構成において、アクセスノード１０に加えて、ディスク２８の替わりに図９に示した複数のディスク９２が設けられた単一のストレージノード２０を有する構成となる。なお、図２のディスク２８を除くストレージノード２０の構成・機能は、図９の複数のディスク９２それぞれに対して設けられていてもよく、図９の複数のディスク９２全てに対して一つだけ設けられていてもよい。
【０１３７】
また、複数のディスク２８としては、それぞれのディスクが複数のハードディスクで構成されてもよく、単一のハードディスクで構成されてもよい。また、記憶機能を有しさえすれば、必ずしもハードディスクである必要はなく、任意の記憶装置をディスク９２として用いることができる。
【０１３８】
複数のディスク９２は、例えば、ＲＡＩＤの構成とすることができる（ＲＡＩＤ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ、または、Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）。例えば、ＲＡＩＤ４として複数のディスク９２のうちいずれかをパリティ専用にしてもよい。また、ＲＡＩＤ５として複数のディスク９２にパリティブロックを分散させてもよい。さらには、ＲＡＩＤ６として複数のディスク９２に複数のパリティブロックを分散させてもよい。なお、ＲＡＩＤレベルについてここに挙げたものに限定するわけではなく、また、複数のディスク９２をＲＡＩＤとして構成しなくてもかまわない。
【０１３９】
図９には、図３のストレージノード２０の書き込み・読み込み動作と同様のアクセス動作を、ディスクアレイ装置９０が行う様子を示している。なお、図９においては、図９（Ａ）左上図、図９（Ｂ）右上図、図９（Ｃ）左下図、図９（Ｄ）右下図の順で状態Ｈのノードが遷移している様子を示しているが、遷移の順番は図９に示した順に限らない。
【０１４０】
左上図の図９（Ａ）の状態ではディスク９２−１が高負荷処理を実行しているため、状態Ｈとして記憶される。状態Ｈのディスク９２−１における高負荷処理が終わると、図２の高負荷ノード管理部１６と同様の機能を有するコントローラ９１の高負荷ノード管理部（図示しない）は、次のディスク９２−２で高負荷処理を実行し、図２の高負荷ノード記憶部１７及び２７と同様の高負荷ノード記憶部（図示しない）に記憶されている状態を更新する。すなわち、右上図の図９（Ｂ）に示したように、図９のディスク９２−２を状態Ｈに変更するとともに、ディスク９２−１を状態Ｌに変更する。
【０１４１】
同様に、ディスク９２−２における高負荷処理が終了すると、左下図の図９（Ｃ）のようにディスク９２−３を高負荷処理に移行する。さらに、右下図の図９（Ｄ）のようにディスク９２−１〜３以外のディスクについて、高負荷処理を実行するディスク９２を遷移させる動作を全ディスク９２で高負荷処理が終わるまで繰り返す。
【０１４２】
なお、図９に示した状態の遷移は、複数のディスク９２を単位で行ってもよく、複数のディスク９２を構成するハードディスク単位で行ってもよい。
【０１４３】
以上が変形例の一例についての説明である。なお、上述の変形例の説明は一例であって、種々の変形・追加を行った構成も本発明の範囲に含まれる。
【０１４４】
以上、実施形態を参照して本願発明を説明してきたが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１４５】
１    ストレージシステム
１０    アクセスノード
１１    外部アクセス部
１２    データ分割部
１３    データ分散部
１４    書き込み方法制御部
１５    書き込み転送部
１６    高負荷ノード管理部
１９    データ結合部
１８    読み出し部
１７    高負荷ノード記憶部
２０    ストレージノード
２１    書き込み・読み出し処理部
２２    ハッシュエントリ登録部
２３    データ検証部
２４    ハッシュエントリ転送部
２５    ハッシュエントリ照合部
２６    ハッシュエントリ削除部
２７    高負荷ノード記憶部
２８    ディスク
３０    バス
４０    データ書き込み・読み出し手段
９０    ディスクアレイ装置
９１    コントローラ
９２    ディスク
【図１】
2014149625.tif 000003
【図２】
2014149625.tif 000004
【図３】
2014149625.tif 000005
【図４】
2014149625.tif 000006
【図５】
2014149625.tif 000007
【図６】
2014149625.tif 000008
【図７】
2014149625.tif 000009
【図８】
2014149625.tif 000010
【図９】
2014149625.tif 000011
【図１０】
2014149625.tif 000012
【図１１】
2014149625.tif 000013