(57)【特許請求の範囲】
【請求項１】
第１のキャッシュが割り当てられた第１のメモリと、第１の記憶装置への書き込みを前記第１のキャッシュを用いてライトバック方式で制御する第１の制御部と、を有する第１の制御装置と、
第２のキャッシュと、前記第１のキャッシュのミラーデータが格納される第１のミラーキャッシュとが割り当てられた第２のメモリと、第２の記憶装置への書き込みを前記第２のキャッシュを用いてライトバック方式で制御する第２の制御部と、を有する第２の制御装置と、
前記第２のキャッシュのミラーデータが格納される第２のミラーキャッシュが割り当てられた第３のメモリを有する第３の制御装置と、
前記第１のメモリ、前記第２のメモリおよび前記第３のメモリに電力を供給する電源と、
前記電源が停電した場合に前記第１のメモリに電力を供給する第１のバッテリと、
前記電源が停電した場合に前記第２のメモリに電力を供給する第２のバッテリと、
前記電源が停電した場合に前記第３のメモリに電力を供給する第３のバッテリと、
前記第２のバッテリの異常が発生した場合に、前記第２のキャッシュの割り当て先を前記第１のメモリに変更し、前記第１のミラーキャッシュの割り当て先を前記第３のメモリに変更し、前記第１の制御装置に対して、前記第１の記憶装置への書き込みを前記第１のキャッシュを用いてライトバック方式で制御するとともに、前記第２の記憶装置への書き込みを、前記第２のキャッシュを用いてライトバック方式で制御するように指示する監視装置と、
を有するストレージシステム。
【請求項２】
前記第２の記憶装置が前記第２の制御装置に接続されている場合、前記第１の制御装置は、前記第１のメモリに割り当てられた前記第２のキャッシュに格納したデータを、前記第２の制御装置を通じて前記第２の記憶装置に書き込む、
請求項１記載のストレージシステム。
【請求項３】
複数の記憶装置と、
複数の制御装置であって、前記複数の制御装置のそれぞれは、キャッシュおよびミラーキャッシュが割り当てられたメモリと、前記複数の記憶装置のうち前記キャッシュに対応づけられた所定の記憶装置に対する書き込みを、前記キャッシュを用いてライトバック方式で制御し、前記複数の制御装置が循環的に配置されるように定義された前記複数の制御装置の配列において第１方向側に隣接する他の制御装置のメモリに割り当てられたミラーキャッシュに、前記キャッシュのデータをミラーリングする制御部と、を有する前記複数の制御装置と、
前記複数の制御装置がそれぞれ有するメモリに電力を供給する電源と、
前記複数の制御装置のうち、前記配列において少なくとも隣接する２つの制御装置に対して異なるバッテリが対応づけられるように設けられた複数のバッテリであって、前記複数のバッテリのそれぞれは、前記電源が停電したとき、対応するメモリに電力を供給する、前記複数のバッテリと、
を有し、
前記複数の制御装置のうち第１の制御装置の制御部は、
前記複数のバッテリのうち一のバッテリの異常が発生したとき、前記複数のバッテリのうち異常が発生したバッテリの台数を判定し、
前記台数が所定の閾値より小さい場合には、前記複数の制御装置のうち、前記一のバッテリに対応づけられた第２の制御装置のメモリに割り当てられている第１のキャッシュの割り当て先を、前記複数の制御装置のうち、前記配列において前記第２の制御装置の第２方向側に隣接する第３の制御装置のメモリに変更し、前記第２の制御装置のメモリに割り当てられている第１のミラーキャッシュの割り当て先を、前記複数の制御装置のうち、前記配列において前記第２の制御装置の前記第１方向側に隣接する第４の制御装置のメモリに変更し、前記第３の制御装置に対して、前記第１のミラーキャッシュにミラーデータが格納される第２のキャッシュに対応づけられた第１の記憶装置への書き込みを、前記第２のキャッシュを用いてライトバック方式で制御するとともに、前記第１のキャッシュに対応づけられた第２の記憶装置への書き込みを、前記第１のキャッシュを用いてライトバック方式で制御するように指示する、
ストレージシステム。
【請求項４】
前記第１の制御装置の制御部は、前記一のバッテリの異常が発生した後、前記複数のバッテリのうち前記一のバッテリとは異なる他のバッテリの異常が発生したとき、前記台数が前記閾値以上である場合には、前記第１のキャッシュの割り当て先を前記第２の制御装置のメモリに戻し、前記第２の制御装置に対して、前記第２の記憶装置への書き込みを前記第１のキャッシュを用いてライトスルー方式で制御するように指示する、
請求項３記載のストレージシステム。
【請求項５】
前記第１の制御装置の制御部は、前記一のバッテリの異常が発生したとき、前記台数が前記閾値以上である場合には、前記第２の制御装置に対して、前記第２の記憶装置への書き込みを、前記第１のキャッシュを用いてライトスルー方式で制御するように指示する、
請求項４記載のストレージシステム。
【請求項６】
複数の記憶装置と、複数の制御装置と、電源とを有するストレージシステムに接続する監視装置であって、前記複数の制御装置のそれぞれは、キャッシュおよびミラーキャッシュが割り当てられたメモリと、前記複数の記憶装置のうち前記キャッシュに対応づけられた所定の記憶装置に対する書き込みを、前記キャッシュを用いてライトバック方式で制御し、前記複数の制御装置が循環的に配置されるように定義された前記複数の制御装置の配列において第１方向側に隣接する他の制御装置のメモリに割り当てられたミラーキャッシュに、前記キャッシュのデータをミラーリングする制御部とを有し、前記電源は、前記複数の制御装置がそれぞれ有するメモリに電力を供給する、前記監視装置において、
前記配列を定義した定義情報を記憶する記憶部と、
複数のバッテリのそれぞれにおける異常の発生を監視する第１の処理であって、前記複数のバッテリは、前記配列において少なくとも隣接する２つの制御装置に対して異なるバッテリが対応づけられるように設けられ、前記複数のバッテリのそれぞれは、前記電源が停電したときに対応するメモリに電力を供給する、前記第１の処理と、
前記複数のバッテリのうち一のバッテリの異常が発生した場合に、前記定義情報に基づいて、前記複数の制御装置のうち、前記一のバッテリに対応づけられた第１の制御装置のメモリに割り当てられている第１のキャッシュの割り当て先を、前記複数の制御装置のうち、前記配列において前記第１の制御装置の第２方向側に隣接する第２の制御装置のメモリに変更し、前記第１の制御装置のメモリに割り当てられている第１のミラーキャッシュの割り当て先を、前記複数の制御装置のうち、前記配列において前記第１の制御装置の前記第１方向側に隣接する第３の制御装置のメモリに変更し、前記第２の制御装置に対して、前記第１のミラーキャッシュにミラーデータが格納される第２のキャッシュに対応づけられた第１の記憶装置への書き込みを、前記第２のキャッシュを用いてライトバック方式で制御するとともに、前記第１のキャッシュに対応づけられた第２の記憶装置への書き込みを、前記第１のキャッシュを用いてライトバック方式で制御するように指示する第２の処理と、
を実行する制御部と、
を有する監視装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージシステムおよび監視装置に関する。
【背景技術】
【０００２】
キャッシュを用いたデータの書き込み方式として、ライトバック方式が知られている。例えば、制御装置は、記憶装置に対する書き込みをライトバック方式で制御する際、ホストから送信されたライトデータをキャッシュに書き込んだ時点でホストに応答する。そして、制御装置は、その後の処理の空き時間など、キャッシュへの書き込みとは非同期のタイミングでキャッシュのライトデータを記憶装置に書き込む。
【０００３】
また、キャッシュを用いたデータの他の書き込み方式として、ライトスルー方式が知られている。例えば、制御装置は、記憶装置に対する書き込みをライトスルー方式で制御する際、ホストから送信されたライトデータをキャッシュと記憶装置とに書き込んだ後、ホストに応答する。このように、ライトスルー方式では、ホストに対する応答までに記憶装置に対する書き込みが発生するため、ライトバック方式と比べるとアクセス処理の性能が悪くなる。
【０００４】
ここで、キャッシュに関する技術の一例として、次のような技術が提案されている。この技術では、第１のキャッシュメモリに格納されているデータがミラーリングされている第２のキャッシュメモリに障害が発生した場合、当該データは、障害が発生していない第３のキャッシュメモリにミラーリングされる。
【０００５】
また、キャッシュに関する他の技術の一例として、複数の制御装置それぞれがローカルキャッシュとミラーキャッシュを有し、ある制御装置のローカルキャッシュが隣接する制御装置のミラーキャッシュと二重化されて、キャッシュがサイクリックに二重化されたストレージシステムが提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−４３９３０号公報
【特許文献２】国際公開第２００４／１１４１１５号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のようにキャッシュがサイクリックに二重化されたストレージシステムには、停電時に各制御装置のキャッシュに電力を供給する複数のバッテリが備えられている場合がある。このようなストレージシステムでは、バッテリに異常が発生すると、停電時にキャッシュのデータを消失する危険度が高くなる。そこで、例えば、ローカルキャッシュのデータを保護するための次のような動作を行うことが考えられる。異常が発生したバッテリから電力の供給を受ける対象であった制御装置は、データ書き込みをライトバック方式からライトスルー方式に切り替える。また、キャッシュの二重化が維持できなくなる可能性が高くなるため、当該制御装置のミラーキャッシュにキャッシュのデータをミラーリングしている制御装置も、データ書き込みをライトバック方式からライトスルー方式に切り替える。
【０００８】
しかし、この方法では、複数の制御装置がデータ書き込みをライトスルー方式で制御するため、ストレージシステムにおけるアクセス処理の性能が低下するという問題がある。
１つの側面では、本発明は、アクセス処理の性能の低下を防ぐことができるストレージシステムおよび監視装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、ストレージシステムが提供される。このストレージシステムは、第１の制御装置、第２の制御装置、第３の制御装置、電源、第１のバッテリ、第２のバッテリ、第３のバッテリ、監視装置を有する。第１の制御装置は、第１のキャッシュが割り当てられた第１のメモリと、第１の記憶装置への書き込みを第１のキャッシュを用いてライトバック方式で制御する第１の制御部と、を有する。第２の制御装置は、第２のキャッシュと、第１のキャッシュのミラーデータが格納される第１のミラーキャッシュとが割り当てられた第２のメモリと、第２の記憶装置への書き込みを第２のキャッシュを用いてライトバック方式で制御する第２の制御部と、を有する。第３の制御装置は、第２のキャッシュのミラーデータが格納される第２のミラーキャッシュが割り当てられた第３のメモリを有する。電源は、第１のメモリ、第２のメモリおよび第３のメモリに電力を供給する。第１のバッテリは、電源が停電した場合に第１のメモリに電力を供給する。第２のバッテリは、電源が停電した場合に第２のメモリに電力を供給する。第３のバッテリは、電源が停電した場合に第３のメモリに電力を供給する。監視装置は、第２のバッテリの異常が発生した場合に、第２のキャッシュの割り当て先を第１のメモリに変更し、第１のミラーキャッシュの割り当て先を第３のメモリに変更し、第１の制御装置に対して、第１の記憶装置への書き込みを第１のキャッシュを用いてライトバック方式で制御するとともに、第２の記憶装置への書き込みを、第２のキャッシュを用いてライトバック方式で制御するように指示する。
【００１０】
また、１つの態様では、ストレージシステムが提供される。このストレージシステムは、複数の記憶装置、複数の制御装置、電源、複数のバッテリを有する。複数の制御装置は、複数の制御装置のそれぞれは、キャッシュおよびミラーキャッシュが割り当てられたメモリと、複数の記憶装置のうちキャッシュに対応づけられた所定の記憶装置に対する書き込みを、キャッシュを用いてライトバック方式で制御し、複数の制御装置が循環的に配置されるように定義された複数の制御装置の配列において第１方向側に隣接する他の制御装置のメモリに割り当てられたミラーキャッシュに、キャッシュのデータをミラーリングする制御部と、を有する。電源は、複数の制御装置がそれぞれ有するメモリに電力を供給する。複数のバッテリは、複数の制御装置のうち、配列において少なくとも隣接する２つの制御装置に対して異なるバッテリが対応づけられるように設けられた複数のバッテリであって、複数のバッテリのそれぞれは、電源が停電したとき、対応するメモリに電力を供給する。複数の制御装置のうち第１の制御装置の制御部は、複数のバッテリのうち一のバッテリの異常が発生したとき、複数のバッテリのうち異常が発生したバッテリの台数を判定し、台数が所定の閾値より小さい場合には、複数の制御装置のうち、一のバッテリに対応づけられた第２の制御装置のメモリに割り当てられている第１のキャッシュの割り当て先を、複数の制御装置のうち、配列において第２の制御装置の第２方向側に隣接する第３の制御装置のメモリに変更し、第２の制御装置のメモリに割り当てられている第１のミラーキャッシュの割り当て先を、複数の制御装置のうち、配列において第２の制御装置の第１方向側に隣接する第４の制御装置のメモリに変更し、第３の制御装置に対して、第１のミラーキャッシュにミラーデータが格納される第２のキャッシュに対応づけられた第１の記憶装置への書き込みを、第２のキャッシュを用いてライトバック方式で制御するとともに、第１のキャッシュに対応づけられた第２の記憶装置への書き込みを、第１のキャッシュを用いてライトバック方式で制御するように指示する。
【００１１】
監視装置は、上記の監視装置と同様の処理をする。
【発明の効果】
【００１２】
１つの側面では、アクセス処理の性能の低下を防ぐことができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態のストレージシステムを示す図である。
【図２】第２の実施の形態のストレージシステムを示す図である。
【図３】ＣＭのハードウェア例を示す図である。
【図４】キャッシュ領域とそのミラーリング先との関係を示す図である。
【図５】ＣＭの機能例を示す図である。
【図６】ボリューム管理テーブルの例を示す図である。
【図７】構成管理テーブルの例を示す図である。
【図８】状態２におけるローカルキャッシュおよびミラーキャッシュの割り当て状態を示す図である。
【図９】状態１から状態２に遷移する際のテーブルの変化を示す図である。
【図１０】状態１から状態２に遷移する際の処理例（その１）を示すシーケンス図である。
【図１１】状態１から状態２に遷移する際の処理例（その２）を示すシーケンス図である。
【図１２】状態３におけるローカルキャッシュおよびミラーキャッシュの割り当て状態を示す図である。
【図１３】状態２から状態３に遷移する際の処理例（その１）を示すシーケンス図である。
【図１４】状態２から状態３に遷移する際の処理例（その２）を示すシーケンス図である。
【図１５】状態２から状態３に遷移する際の処理例（その３）を示すシーケンス図である。
【図１６】状態２から状態３に遷移する際のテーブルの変化を示す図である。
【図１７】ＣＥ内マスタによるバッテリ状態の監視処理例を示すフローチャートである。
【図１８】バッテリ異常通知を受信する場合のマスタＣＭの処理例を示すフローチャートである。
【図１９】運用切り替え処理の例を示すフローチャートである。
【図２０】割り当て変更処理時における各ＣＭの処理の例を示すフローチャートである。
【図２１】運用切り替え処理時における各ＣＭの処理例（その１）を示すフローチャートである。
【図２２】運用切り替え処理時における各ＣＭの処理例（その２）を示すフローチャートである。
【図２３】異常バッテリの数が閾値未満になった場合のマスタＣＭの処理例を示すフローチャートである。
【図２４】正常なバッテリがさらに増えた場合のマスタＣＭの処理例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のストレージシステムを示す図である。図１に示すストレージシステムは、制御装置１０，２０，３０、監視装置４０、電源５０および記憶装置６１，６２を有する。制御装置１０，２０，３０および監視装置４０は、例えばネットワークやバスなどを介して互いに接続されている。
【００１５】
制御装置１０は、メモリ１１、制御部１２およびバッテリ１３を有する。メモリ１１は、例えば、ＲＡＭ（Random Access Memory）などの揮発性の記憶装置である。制御部１２は、例えば、プロセッサである。メモリ１１には、キャッシュ１１ａが割り当てられている。制御部１２は、記憶装置６１への書き込みを、キャッシュ１１ａを用いてライトバック方式で制御する。なお、記憶装置６１は、例えば、ＨＤＤ（Hard Disk Drive）などの不揮発性の記憶装置である。バッテリ１３は、電源５０からメモリ１１への電力供給が停止した場合に、メモリ１１に電力を供給する。
【００１６】
制御装置２０は、メモリ２１、制御部２２およびバッテリ２３を有する。メモリ２１は、例えば、ＲＡＭなどの揮発性の記憶装置である。制御部２２は、例えば、プロセッサである。メモリ２１には、キャッシュ２１ａと、キャッシュ１１ａのミラーデータが格納されるミラーキャッシュ２１ｂとが割り当てられている。制御部２２は、記憶装置６２への書き込みを、キャッシュ２１ａを用いてライトバック方式で制御する。バッテリ２３は、電源５０からメモリ２１への電力供給が停止した場合に、メモリ２１に電力を供給する。
【００１７】
制御装置３０は、メモリ３１およびバッテリ３３を有する。メモリ３１は、例えば、ＲＡＭなどの揮発性の記憶装置である。メモリ３１には、キャッシュ２１ａのミラーデータが格納されるミラーキャッシュ３１ｂが割り当てられている。バッテリ３３は、電源５０からメモリ３１への電力供給が停止した場合に、メモリ３１に電力を供給する。
【００１８】
電源５０は、メモリ１１，２１，３１に対して電力を供給する。例えば、電源５０は、外部から商用電源の供給を受けて、メモリ１１，２１，３１に電力を供給する。
なお、図１の例では、バッテリ１３は制御装置１０内に搭載されているが、バッテリ１３は制御装置１０の外部に配置されてもよい。同様に、バッテリ２３は、制御装置２０の外部に配置されてもよく、バッテリ３３は、制御装置３０の外部に配置されてもよい。また、電源５０は、メモリ１１，２１，３１に対してそれぞれ個別に設けられていてもよい。
【００１９】
監視装置４０は、制御装置１０，２０，３０の動作を監視し、その動作状態に応じた処理を実行する装置である。監視装置４０は、例えば、バッテリ２３の異常が発生したか否かを監視する。
【００２０】
監視装置４０は、バッテリ２３の異常が発生した場合（ステップＳ１）、キャッシュ２１ａの割り当て先を、メモリ２１からメモリ１１に変更し、ミラーキャッシュ２１ｂの割り当て先を、メモリ２１からメモリ３１に変更する（ステップＳ２）。監視装置４０は、制御装置１０に対して、記憶装置６１への書き込みを、キャッシュ１１ａを用いてライトバック方式で制御するように指示する。これとともに、監視装置４０は、記憶装置６２への書き込みを、メモリ１１に割り当てられたキャッシュ２１ａを用いてライトバック方式で制御するように指示する（ステップＳ３）。
【００２１】
ここで、バッテリ２３の異常が発生した状態の制御装置２０では、もしその後に電源５０が停電すると、メモリ２１内のデータが失われる。このため、メモリ２１にキャッシュ２１ａを割り当てたままにしておくと、キャッシュ２１ａのデータが失われる危険性が高くなる。
【００２２】
このようにデータが失われる事態を回避する他の方法として、キャッシュ２１ａの割り当て先を変更せずに、制御部２２によるキャッシュ２１ａを用いた記憶装置６２への書き込みをライトスルー方式で制御するという方法が考えられる。この方法では、電源５０が停電した場合でもキャッシュ２１ａのデータが失われないが、その反面、キャッシュ２１ａを用いた記憶装置６２へのアクセス性能が低下する。さらに、ミラーキャッシュ２１ｂも電源５０の停電時に失われる状態になるので、制御部１２によるキャッシュ１１ａを用いた記憶装置６１への書き込みも、ライトスルー方式で制御する方が望ましい。しかし、この場合には、制御部１２によるキャッシュ１１ａを用いた記憶装置６１へのアクセス性能も低下してしまう。すなわち、この方法では、複数の制御装置でライトスルー方式の書き込み制御が行われ、複数の制御装置でのアクセス性能が低下してしまう。
【００２３】
これに対して、制御装置１０においては、バッテリ１３の異常が発生していないので、電源５０が停電した場合でもメモリ１１内のデータは維持される。したがって、上記のようにキャッシュ２１ａの割り当て先がメモリ１１に変更されることで、キャッシュ２１ａのデータが失われる可能性を低減できる。また、ミラーキャッシュ２１ｂについても同様に、割り当て先がメモリ３１に変更されることで、ミラーキャッシュ２１ｂのデータが失われる可能性を低減できる。
【００２４】
このため、上記の割り当て変更が行われることにより、その後に電源５０の停電が発生した場合でも、キャッシュ１１ａとミラーキャッシュ２１ｂの両方のデータは失われずに維持され、キャッシュ２１ａとミラーキャッシュ３１ｂの両方のデータも失われずに維持される。したがって、制御部１２は、キャッシュ１１ａを用いた記憶装置６１への書き込みと、キャッシュ２１ａを用いた記憶装置６２への書き込みの両方を、ライトスルー方式でなく、ライトバック方式で制御することが可能となる。これにより、これら両方の書き込み性能の低下を抑制でき、その結果、ストレージシステム全体としてのアクセス性能の低下を抑制できる。
【００２５】
［第２の実施の形態］
図２は、第２の実施の形態のストレージシステムを示す図である。図２に示すストレージシステムは、ＣＥ（Controller Enclosure）１００，２００，３００，４００、ＤＥ（Device Enclosure）５００，６００，７００，８００、ホスト装置９００およびスイッチ１０００を含む。
【００２６】
ＣＥ１００は、ＣＭ（Controller Module）１１０，１２０を有する。ＣＥ２００は、ＣＭ２１０，２２０を有する。ＣＥ３００は、ＣＭ３１０，３２０を有する。ＣＥ４００は、ＣＭ４１０，４２０を有する。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０は、スイッチ１０００を介して互いに接続されている。例えば、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０とスイッチ１０００とは、シリアルケーブルを介して接続される。
【００２７】
また、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０には、ホスト装置９００が接続されている。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０とホスト装置９００とは、例えば、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）を介して接続される。なお、図２では例として１台のホスト装置９００がＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０に接続されているが、例えば、複数台のホスト装置のそれぞれが１台以上のＣＭに接続されてもよい。
【００２８】
ＤＥ５００，６００，７００，８００には、それぞれ複数台の記憶装置が搭載されている。本実施の形態では、ＤＥ５００，６００，７００，８００は、記憶装置としてＨＤＤを備えたディスクアレイ装置である。なお、ＤＥ５００，６００，７００，８００に搭載される記憶装置は、ＳＳＤ（Solid State Drive）などの他の種類の記憶装置であってもよい。
【００２９】
ＣＭ１１０，１２０には、ＤＥ５００が接続されている。ＣＭ１１０，１２０は、ホスト装置９００または他のＣＭからの要求に応じて、ＤＥ５００に搭載されたＨＤＤに対するアクセスを制御する。ＣＭ２１０，２２０には、ＤＥ６００が接続されている。ＣＭ２１０，２２０は、ホスト装置９００または他のＣＭからの要求に応じて、ＤＥ６００に搭載されたＨＤＤに対するアクセスを制御する。ＣＭ３１０，３２０には、ＤＥ７００が接続されている。ＣＭ３１０，３２０は、ホスト装置９００または他のＣＭからの要求に応じて、ＤＥ７００に搭載されたＨＤＤに対するアクセスを制御する。ＣＭ４１０，４２０は、ホスト装置９００または他のＣＭからの要求に応じて、ＤＥ８００に搭載されたＨＤＤに対するアクセスを制御する。
【００３０】
なお、ＣＥ１００とＤＥ５００とは、例えば、１つの筐体に搭載されるストレージ装置として実現される。ＣＥ２００とＤＥ６００、ＣＥ３００とＤＥ７００、ＣＥ４００とＤＥ８００についても同様である。図２のストレージシステムは、このようなストレージ装置をスケールアウトした構成となっている。
【００３１】
また、ストレージシステムに含まれるＣＥの数は４台に限定されるものではなく、各ＣＥに含まれるＣＭの数も２台に限定されるものではない。例えば、ストレージシステムには、それぞれ２台のＣＭを備えるＣＥが１２台含まれてもよい。
【００３２】
図３は、ＣＭのハードウェア例を示す図である。ＣＭ１１０は、プロセッサ１１０ａ、ＲＡＭ１１０ｂ、ＳＳＤ１１０ｃ、ＣＡ（Channel Adapter）１１０ｄ、ＣＭインタフェース１１０ｅおよびＤＩ（Device Interface）１１０ｆを有する。
【００３３】
プロセッサ１１０ａは、ＣＭ１１０の情報処理を制御する。プロセッサ１１０ａは、複数のプロセッシング要素を含むマルチプロセッサであってもよい。
ＲＡＭ１１０ｂは、ＣＭ１１０の主記憶装置である。ＲＡＭ１１０ｂは、プロセッサ１１０ａに実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１１０ｂは、プロセッサ１１０ａによる処理に用いる各種データを記憶する。
【００３４】
ＳＳＤ１１０ｃは、ＣＭ１１０の補助記憶装置である。ＳＳＤ１１０ｃは、不揮発性の半導体メモリである。ＳＳＤ１１０ｃには、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ＣＭ１１０は、補助記憶装置として、ＳＳＤ１１０ｃの代わりにＨＤＤを備えていてもよい。
【００３５】
ＣＡ１１０ｄは、ホスト装置９００と通信するためのインタフェースである。ＣＭインタフェース１１０ｅは、スイッチ１０００を介して、他のＣＭと通信するためのインタフェースである。ＤＩ１１０ｆは、ＤＥ５００と通信するためのインタフェースである。
【００３６】
なお、ＣＭ１２０，２１０，２２０，３１０，３２０，４１０，４２０もＣＭ１１０と同様のハードウェアにより実現できる。
また、ＣＥ１００は、ＰＳＵ（Power Supply Unit）１３０およびバッテリ１４０を有する。ＰＳＵ１３０は、外部から電力の供給を受けて、ＣＥ１００全体に電力を供給する。バッテリ１４０は、ＰＳＵ１３０の停電時にＲＡＭ１１０ｂおよびＣＭ１２０が有するＲＡＭに電力を供給する。なお、ＰＳＵおよびバッテリは、各ＣＥに個別に設けられている。
【００３７】
図４は、キャッシュ領域とそのミラーリング先との関係を示す図である。本実施の形態のストレージシステムでは、ＣＭとホスト装置９００との間のデータの読み書きはＬＵ（Logical Unit）と呼ばれる論理記憶領域を単位として行われる。ストレージシステム内には複数のＬＵが設定され、各ＬＵにはそのＬＵに対するホスト装置９００からのアクセスを制御するＣＭが割り当てられる。
【００３８】
あるＬＵのアクセス制御担当として割り当てられたＣＭは、そのＬＵに対するアクセスを、自装置内のＲＡＭに確保したキャッシュ領域を用いて制御する。以下、ＬＵに対するアクセス制御の際に用いられるキャッシュ領域を、ローカルキャッシュと呼ぶ。ＲＡＭには、ローカルキャッシュがＬＵ毎に確保される。例えば、ＣＭが２つのＬＵに対するアクセス制御を担当する場合、そのＣＭのＲＡＭには２つのローカルキャッシュが確保される。
【００３９】
以下の説明では、ＣＭのＲＡＭにローカルキャッシュの領域が確保されることを、「ＣＭ（またはそのＲＡＭ）にローカルキャッシュが割り当てられる」と記載する場合がある。
【００４０】
図４では、説明を簡単にするために、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０はそれぞれ、ホスト装置９００からのアクセス要求に応じて、１つのＬＵに対するアクセスを制御するものとする。この場合、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０には、それぞれ１つのローカルキャッシュが割り当てられる。
【００４１】
本実施の形態のストレージシステムでは、ＬＵはＬＵＮ（Logical Unit Number）によって識別される。以下、識別番号が“ｘ”のＬＵを、“ＬＵＮ＃ｘ”と記載する。本実施の形態では例として、ＣＭ１１０，２１０，３１０，４１０，１２０，２２０，３２０，４２０は、それぞれＬＵＮ＃１，ＬＵＮ＃２，ＬＵＮ＃３，ＬＵＮ＃４，ＬＵＮ＃５，ＬＵＮ＃６，ＬＵＮ＃７，ＬＵＮ＃８に対するアクセスを制御する。
【００４２】
この場合、図４に示すように、ＣＭ１１０のＲＡＭ１１０ｂには、ＬＵＮ＃１に対応するローカルキャッシュＬＣ１が割り当てられる。ＣＭ２１０が有するＲＡＭには、ＬＵＮ＃２に対応するローカルキャッシュＬＣ２が割り当てられる。ＣＭ３１０が有するＲＡＭには、ＬＵＮ＃３に対応するローカルキャッシュＬＣ３が割り当てられる。ＣＭ４１０が有するＲＡＭには、ＬＵＮ＃４に対応するローカルキャッシュＬＣ４が割り当てられる。ＣＭ１２０が有するＲＡＭには、ＬＵＮ＃５に対応するローカルキャッシュＬＣ５が割り当てられる。ＣＭ２２０が有するＲＡＭには、ＬＵＮ＃６に対応するローカルキャッシュＬＣ６が割り当てられる。ＣＭ３２０が有するＲＡＭには、ＬＵＮ＃７に対応するローカルキャッシュＬＣ７が割り当てられる。ＣＭ４２０が有するＲＡＭには、ＬＵＮ＃８に対応するローカルキャッシュＬＣ８が割り当てられる。
【００４３】
また、各ＣＭのＲＡＭには、ミラーキャッシュが割り当てられる。ミラーキャッシュは、ローカルキャッシュに格納されたデータのミラーデータが格納される領域である。以下で説明するように、あるＣＭのＲＡＭに割り当てられたローカルキャッシュに対応するミラーデータは、必ず他のＣＭのＲＡＭに割り当てられる。これにより、ＣＭの故障時にキャッシュされていたデータを消失する危険性が低減される。
【００４４】
ここで、ストレージシステムには、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０がサイクリックに配列されるように、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０の相互関係が設定されている。図４では、ＣＭ１１０からＣＭ２１０、ＣＭ２１０からＣＭ３１０、ＣＭ３１０からＣＭ４１０、ＣＭ４１０からＣＭ１２０、ＣＭ１２０からＣＭ２２０、ＣＭ２２０からＣＭ３２０、ＣＭ３２０からＣＭ４２０、ＣＭ４２０からＣＭ１１０の順に配列されるように設定されている。
【００４５】
そして、あるＣＭは、ローカルキャッシュに格納されたデータを、上記の配列において次に位置するＣＭのミラーキャッシュにミラーリングする。換言すると、あるＣＭのＲＡＭに割り当てられたローカルキャッシュのデータは、次に位置するＣＭのＲＡＭに割り当てられる。
【００４６】
具体的には、図４に示すように、ＣＭ２１０が有するＲＡＭには、ＬＵＮ＃１に対応するミラーキャッシュＭＣ１が割り当てられる。そして、ＣＭ１１０は、ＬＵＮ＃１に対応するローカルキャッシュＬＣ１のデータを、ミラーキャッシュＭＣ１にミラーリングする。ＣＭ３１０が有するＲＡＭには、ＬＵＮ＃２に対応するミラーキャッシュＭＣ２が割り当てられる。そして、ＣＭ２１０は、ＬＵＮ＃２に対応するローカルキャッシュＬＣ２のデータを、ミラーキャッシュＭＣ２にミラーリングする。
【００４７】
ＣＭ４１０が有するＲＡＭには、ＬＵＮ＃３に対応するミラーキャッシュＭＣ３が割り当てられる。そして、ＣＭ３１０は、ＬＵＮ＃３に対応するローカルキャッシュＬＣ３のデータを、ミラーキャッシュＭＣ３にミラーリングする。ＣＭ１２０が有するＲＡＭには、ＬＵＮ＃４に対応するミラーキャッシュＭＣ４が割り当てられる。そして、ＣＭ４１０は、ＬＵＮ＃４に対応するローカルキャッシュＬＣ４のデータを、ミラーキャッシュＭＣ４にミラーリングする。
【００４８】
ＣＭ２２０が有するＲＡＭには、ＬＵＮ＃５に対応するミラーキャッシュＭＣ５が割り当てられる。そして、ＣＭ１２０は、ＬＵＮ＃５に対応するローカルキャッシュＬＣ５のデータを、ミラーキャッシュＭＣ５にミラーリングする。ＣＭ３２０が有するＲＡＭには、ＬＵＮ＃６に対応するミラーキャッシュＭＣ６が割り当てられる。そして、ＣＭ２２０は、ＬＵＮ＃６に対応するローカルキャッシュＬＣ６のデータを、ミラーキャッシュＭＣ６にミラーリングする。
【００４９】
ＣＭ４２０が有するＲＡＭには、ＬＵＮ＃７に対応するミラーキャッシュＭＣ７が割り当てられる。そして、ＣＭ３２０は、ＬＵＮ＃７に対応するローカルキャッシュＬＣ７のデータを、ミラーキャッシュＭＣ７にミラーリングする。ＣＭ１１０が有するＲＡＭ１１０ｂには、ＬＵＮ＃８に対応するミラーキャッシュＭＣ８が割り当てられる。そして、ＣＭ４２０は、ＬＵＮ＃８に対応するローカルキャッシュＬＣ８のデータを、ミラーキャッシュＭＣ８にミラーリングする。
【００５０】
このように、あるＣＭのローカルキャッシュのデータは、隣接するＣＭにサイクリックにミラーリングされる。なお、あるＣＭのローカルキャッシュデータは、必ず、そのＣＭが搭載されたＣＥとは異なるＣＥ内のＣＭにミラーリングされる。このような構成により、ＣＥ単位で動作が停止した場合でも、どのローカルキャッシュについても元データとミラーデータの少なくとも一方が消失せずに維持される。
【００５１】
例えば、仮に、ＣＭ１１０のローカルキャッシュＬＣ１のデータがＣＭ１２０のＲＡＭ上のミラーキャッシュにミラーリングされたとする。この構成で、ＣＥ１００の動作が停止した場合、ローカルキャッシュに格納されたデータと、ミラーキャッシュに格納されたそのミラーデータの両方が消失してしまう。これに対して、図４の例では、ＣＭ１１０のローカルキャッシュＬＣ１がＣＭ２１０のミラーキャッシュＭＣ１にミラーリングされている。このため、ＣＥ１００の動作が停止したとしても、ミラーキャッシュＭＣ１のミラーデータが確実に残り、逆にＣＥ２００の動作が停止したとしても、ローカルキャッシュＬＣ１の元データが確実に残る。
【００５２】
なお、本実施の形態では、図４に示すようなローカルキャッシュおよびミラーキャッシュの割り当て状態を、ストレージシステムの運用開始時における状態（初期状態）とする。また、初期状態では、各ＣＭは、ローカルキャッシュに対応するＬＵに対するデータの書き込みを、ライトバック方式で制御する。
【００５３】
例えば、ＣＭ１１０は次のようなアクセス制御を実行する。ＣＭ１１０は、ＬＵＮ＃１に対する書き込み要求およびライトデータをホスト装置９００から受信する。すると、ＣＭ１１０は、ライトデータをローカルキャッシュＬＣ１に格納するとともに、ライトデータをＣＭ２１０に転送して、ミラーキャッシュＭＣ１への格納をＣＭ２１０に要求する。ローカルキャッシュＬＣ１およびミラーキャッシュＭＣ１へのライトデータの格納が完了すると、ＣＭ１１０は、ホスト装置９００に対して書き込みの完了応答を送信する。そして、ＣＭ１１０は、その後の所定のタイミングで、ローカルキャッシュＬＣ１に格納されたライトデータを、ＬＵＮ＃１に対応する物理記憶領域（ＨＤＤ）に格納する。
【００５４】
ＬＵに対応する物理記憶領域としては、ＤＥ５００，６００，７００，８００内の１台以上の任意のＨＤＤの記憶領域を割り当てることができる。例えば、ＬＵＮ＃１に対応する物理記憶領域としてＤＥ５００内のＨＤＤが割り当てられている場合、ＣＭ１１０は、そのＨＤＤに直接的にライトデータの格納を要求する。また、ＬＵＮ＃１に対応する物理記憶領域としてＤＥ６００内のＨＤＤが割り当てられている場合、ＣＭ１１０は、そのＨＤＤへのライトデータの格納をスイッチ１０００およびＣＭ２１０を介して要求する。
【００５５】
なお、後述するように、ＣＭは、ＬＵに対する書き込み制御をライトスルー方式に変更することもできる。
ところで、ＣＥ１００は、バッテリ１４０を有する。バッテリ１４０は、ＣＥ１００に設けられたＰＳＵ１３０の停電時に、ＣＭ１１０内のＲＡＭ１１０ｂとＣＭ１２０内のＲＡＭに電力を供給する。これにより、初期状態においてＰＳＵ１３０が停電になった場合でも、ローカルキャッシュＬＣ１，ＬＣ５およびミラーキャッシュＭＣ８，ＭＣ４のデータが消去されずに維持され、これらのデータを不揮発性記憶装置に退避するなどの措置を施すことができるようになる。
【００５６】
ＣＥ２００も同様に、バッテリ２４０を有する。バッテリ２４０は、ＣＥ２００に設けられたＰＳＵの停電時に、ＣＭ２１０内のＲＡＭとＣＭ２２０内のＲＡＭに電力を供給する。ＣＥ３００も同様に、バッテリ３４０を有する。バッテリ３４０は、ＣＥ３００に設けられたＰＳＵの停電時に、ＣＭ３１０内のＲＡＭとＣＭ３２０内のＲＡＭに電力を供給する。ＣＥ４００も同様に、バッテリ４４０を有する。バッテリ４４０は、ＣＥ４００に設けられたＰＳＵの停電時に、ＣＭ４１０内のＲＡＭとＣＭ４２０内のＲＡＭに電力を供給する。
【００５７】
このような初期状態において、例えば、ＣＥ２００のバッテリ２４０が故障した場合を考える。なお、以下の説明では、ＣＭがライトバック方式でＬＵの書き込み制御を行っている状態を「ライトバック運用」、ＣＭがライトスルー方式でＬＵの書き込み制御を行っている状態を「ライトスルー運用」と記載する場合がある。
【００５８】
バッテリ２４０が故障した場合に、ＣＥ２００内のＣＭ２１０，２２０をライトバック運用からライトスルー運用に切り替える方法が考えられる。それは、その後にＣＭ２００内のＰＳＵが停電すると、ＣＭ２１０内のローカルキャッシュＬＣ２およびミラーキャッシュＭＣ１に格納されているデータと、ＣＭ２２０のローカルキャッシュＬＣ６およびミラーキャッシュＭＣ５に格納されているデータが消失するからである。ＣＭ２１０，２２０がライトスルー運用に切り替えることで、ローカルキャッシュＬＣ２，ＬＣ６のデータが対応する物理記憶領域（ＨＤＤ）に格納されるので、ＰＳＵの停電が発生してもデータの消失を防ぐことができる。
【００５９】
しかしながら、ＣＭ２１０，２２０だけをライトスルー運用に切り替えた後にＣＥ２００のＰＳＵが停電すると、ミラーキャッシュＭＣ１，ＭＣ５に格納されているデータは消失する。このとき、ローカルキャッシュＬＣ１，ＬＣ５のデータの二重化が実現されなくなり、ローカルキャッシュＬＣ１，ＬＣ５のデータの安全性も低下する。例えば、その後にローカルキャッシュＬＣ１，ＬＣ５に格納されているデータが消失した場合に、当該データを復元できなくなるという問題がある。
【００６０】
そこで、バッテリ２４０が故障した場合に、ＣＭ１１０，１２０もライトバック運用からライトスルー運用に切り替える方法も考えられる。この方法によれば、ローカルキャッシュＬＣ１，ＬＣ５のデータ消失の可能性も低減できる。しかし、この方法では、ＣＭ１１０，１２０，２１０，２２０でのＬＵに対するアクセスの応答速度が低下し、ストレージシステム全体のアクセス性能が極端に悪化するという問題がある。
【００６１】
そこで、第２の実施の形態では、バッテリ２４０が故障した場合、ローカルキャッシュＬＣ２，ＬＣ６の割り当て先のＣＭが、他のＣＥ内のＣＭに切り替えられる。また、ミラーキャッシュＭＣ１，ＭＣ５の割り当て先のＣＭも、さらに別のＣＥ内のＣＭに切り替えられる。そして、ローカルキャッシュＬＣ２，ＬＣ６が新たに割り当てられたＣＭにおいて、ライトバック運用が継続される。これにより、ローカルキャッシュおよびミラーキャッシュの割り当て先を変更せずにその割り当て先のＣＭをライトスルー運用に切り替える方法よりも、アクセス性能を向上させることができる。
【００６２】
図５は、ＣＭの機能例を示す図である。ＣＭ１１０は、ローカルキャッシュ領域１１１、ミラーキャッシュ領域１１２、テーブル記憶部１１３、アクセス制御部１１４、監視部１１５、指示制御部１１６および変更制御部１１７を有する。テーブル記憶部１１３は、例えば、ＲＡＭ１１０ｂまたはＳＳＤ１１０ｃに確保した記憶領域として実装される。アクセス制御部１１４、監視部１１５、指示制御部１１６および変更制御部１１７は、例えば、プロセッサ１１０ａが実行するプログラムのモジュールとして実装される。
【００６３】
ローカルキャッシュ領域１１１およびミラーキャッシュ領域１１２は、ＲＡＭ１１０ｂに確保される記憶領域である。ローカルキャッシュ領域１１１には、それぞれＬＵに対応する１以上のローカルキャッシュを割り当て可能であり、ミラーキャッシュ領域１１２には、それぞれＬＵに対応する１以上のミラーキャッシュを割り当て可能である。
【００６４】
テーブル記憶部１１３は、ボリューム管理テーブルを有する。ボリューム管理テーブルには、初期状態および現状のそれぞれについてのＬＵに対するローカルキャッシュおよびミラーキャッシュの割り当て先ＣＭを示す情報が登録される。
【００６５】
また、ＣＭ１１０が後述するマスタＣＭに設定されている場合、テーブル記憶部１１３は、構成管理テーブルを有する。構成管理テーブルには、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０の相互関係を示す情報が登録される。構成管理テーブルにより、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０がサイクリックに配列されることが定義される。また、後述するように、マスタＣＭは、構成管理テーブルを用いて、ＬＵに対応するローカルキャッシュおよびミラーキャッシュの割り当て変更先ＣＭを特定できる。
【００６６】
さらに、テーブル記憶部１１３は、各バッテリと各ＣＥとの対応関係を示す情報を記憶する。例えば、テーブル記憶部１１３は、バッテリ２４０とＣＥ２００との対応関係を示す情報を記憶する。マスタＣＭは、この情報からＣＥ２００がバッテリ２４０を有することを特定できる。
【００６７】
アクセス制御部１１４は、ホスト装置９００からのアクセス要求に応じてＬＵに対するアクセス制御を行う。このアクセス制御の際、アクセス制御部１１４は、ローカルキャッシュ領域１１１のうち、アクセスが要求されたＬＵに対応するローカルキャッシュとして割り当てられた領域をキャッシュ領域として使用する。また、アクセス制御部１１４は、ＬＵに対する書き込み制御の方式として、ライトバック方式とライトスルー方式とを切り替えることができる。
【００６８】
例えば、ローカルキャッシュ領域１１１にＬＵＮ＃１に対応するローカルキャッシュＬＣ１が割り当てられ、ＬＵＮ＃１に対する書き込みをライトバック方式で制御する場合、次のような処理が実行される。アクセス制御部１１４は、ホスト装置９００からＬＵＮ＃１へのデータの書き込み要求を受けると、受信したライトデータをローカルキャッシュ領域１１１内のローカルキャッシュＬＣ１に格納する。また、アクセス制御部１１４は、ローカルキャッシュＬＣ１に格納されたライトデータを複製してＣＭ２１０に転送するとともに、複製されたデータをＣＭ２１０のミラーキャッシュＭＣ１に書き込むようにＣＭ２１０に要求する。なお、ＣＭ２１０へのデータ転送はスイッチ１０００を介して行われる。複製されたデータがミラーキャッシュＭＣ１に書き込まれることで、ホスト装置９００から受信したライトデータは、ローカルキャッシュＬＣ１とミラーキャッシュＭＣ１で二重化される。アクセス制御部１１４は、二重化が完了すると、ホスト装置９００にライトデータの書き込みを完了した旨を通知する。その後、所定のタイミングで、アクセス制御部１１４は、ローカルキャッシュ領域１１１に格納されたライトデータを、ＬＵＮ＃１に対応するＨＤＤに格納する。
【００６９】
一方、ローカルキャッシュ領域１１１にＬＵＮ＃１に対応するローカルキャッシュＬＣ１が割り当てられ、ＬＵＮ＃１に対する書き込みをライトスルー方式で制御する場合、次のような処理が実行される。アクセス制御部１１４は、ホスト装置９００からＬＵＮ＃１へのデータの書き込み要求を受けると、受信したライトデータをローカルキャッシュ領域１１１内のローカルキャッシュＬＣ１に書き込むとともに、ライトデータをＬＵＮ＃１に対応するＨＤＤにも書き込む。アクセス制御部１１４は、ローカルキャッシュＬＣ１とＨＤＤにライトデータを格納した後に、ライトデータの書き込みを完了した旨をホスト装置９００に通知する。なお、ライトスルー方式が用いられる場合、アクセス制御部１１４がホスト装置９００に応答した時点でライトデータは不揮発性記憶装置に格納されることから、ライトデータの複製データは、ミラーキャッシュＭＣ１に書き込まれなくてよい。
【００７０】
また、アクセス制御部１１４は、ＣＭ４２０からの要求に応じて、ＣＭ４２０から転送された、ＣＭ４２０内のローカルキャッシュに対応するミラーデータを、ミラーキャッシュ領域１１２に格納する。
【００７１】
監視部１１５は、バッテリ１４０の状態を監視する。ただし、監視部１１５は、ＣＭ１１０が後述するＣＥ内マスタに設定されている場合のみ動作する。
指示制御部１１６は、変更制御部１１７および他のＣＭに動作の指示を行う。ただし、指示制御部１１６は、ＣＭ１１０がマスタＣＭに設定されている場合のみ動作する。
【００７２】
変更制御部１１７は、マスタＣＭの指示制御部の指示に応じた制御を行う。なお、ＣＭ１１０がマスタＣＭに設定されている場合、変更制御部１１７は、ＣＭ１１０の指示制御部１１６からの指示に応じた制御を行う。
【００７３】
例えば、マスタＣＭの指示制御部の指示に従って、ローカルキャッシュ領域１１１またはミラーキャッシュ領域１１２に格納しているデータを他のＣＭに転送する。また、変更制御部１１７は、マスタＣＭの指示制御部の指示に従って、ＬＵの書き込み制御をライトバック方式、または、ライトスルー方式に切り替えるようにアクセス制御部１１４に指示する。
【００７４】
ＣＭ１２０，２１０，２２０，３１０，３２０，４１０，４２０も、ＣＭ１１０と同様にローカルキャッシュ領域、ミラーキャッシュ領域、テーブル記憶部、アクセス制御部、監視部、指示制御部および変更制御部を有する。各機能はＣＭ１１０と同様なので説明を省略する。
【００７５】
ここで、ＣＥ内マスタおよびマスタＣＭについて説明する。各ＣＥが有するＣＭのうち、１つのＣＭがＣＥ内マスタに設定される。ＣＥ内マスタは、ＣＥ内のＣＭの動作状態を監視し、監視結果をマスタＣＭに通知する。また、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０のうち、１つのＣＭがマスタＣＭに設定される。マスタＣＭは、ＣＥ内マスタから通知される監視結果に基づいてストレージシステム内のＣＭの動作を制御する。なお、１つのＣＭにＣＥ内マスタとマスタＣＭの両方が設定されてもよい。
【００７６】
ＣＥ内マスタの機能を説明する。ＣＥ内マスタの機能は、ＣＥ内マスタに設定されたＣＭの監視部で実現される。ここでは、ＣＭ１１０がＣＥ内マスタに設定されているものとして説明する。監視部１１５は、バッテリ１４０の状態を監視する。例えば、監視部１１５は、バッテリ１４０に対して定期的にポーリングを実行して、バッテリ１４０の状態を監視する。監視部１１５は、バッテリ１４０が異常であることを検出した場合、マスタＣＭにバッテリ１４０が異常である旨を示すバッテリ異常通知を送信する。ここで、バッテリ１４０の異常とは、例えば、バッテリ１４０が故障した場合やバッテリ１４０の充電率が閾値未満になった場合をいう。また、ＣＥ内マスタに設定されているＣＭのテーブル記憶部には、どのＣＭがマスタＣＭであるかを示す情報が記憶される。監視部１１５は、バッテリ１４０が正常になったことを検出した場合、マスタＣＭにバッテリ１４０が正常になった旨を示すバッテリ正常通知を送信する。
【００７７】
次に、マスタＣＭの機能を説明する。マスタＣＭの機能は、マスタＣＭに設定されたＣＭの指示制御部で実現される。ここでは、ＣＭ１１０がマスタＣＭに設定されているものとして説明する。
【００７８】
指示制御部１１６は、ＣＥ内マスタからバッテリ異常通知またはバッテリ正常通知を受信した場合、ストレージシステムに存在するバッテリのうち、異常が発生したバッテリの数が閾値以上であるか否かを判定する。例えば、ストレージシステムに存在するバッテリのうち、正常なバッテリが残り１つになる数が閾値に設定される。なお、閾値を示す情報は、テーブル記憶部１１３に記憶される。指示制御部１１６は、異常が発生したバッテリの数が閾値未満の場合、割り当て変更処理を実行する。一方、指示制御部１１６は、異常が発生したバッテリの数が閾値以上の場合、運用切り替え処理を実行する。
【００７９】
割り当て変更処理において、指示制御部１１６は、構成管理テーブルを参照し、バッテリの異常が発生したＣＥ内のＣＭに割り当てられているローカルキャッシュを他のＣＭに割り当てるための割り当て変更指示を、割り当て変更前および変更後の各ＣＭへ出力する。この割り当て変更指示には、割り当て変更前のＣＭから割り当て変更後のＣＭへのローカルキャッシュのデータ転送指示も含まれる。
【００８０】
また、指示制御部１１６は、構成管理テーブルを参照し、バッテリの異常が発生したＣＥ内のＣＭに割り当てられているミラーキャッシュを他のＣＭに割り当てるための割り当て変更指示を、割り当て変更前および変更後の各ＣＭへ出力する。
【００８１】
一方、運用切り替え処理において、指示制御部１１６は、割り当て先が変更されたローカルキャッシュについて、割り当て先ＣＭを初期状態に戻す。指示制御部１１６は、バッテリの異常が発生したＣＥ内のＣＭに、アクセス制御を担当するＬＵの書き込み制御（すなわち、アクセス制御に用いるローカルキャッシュを用いた書き込み制御）をライトスルー方式へ切り替えるように指示する。指示制御部１１６は、ローカルキャッシュのミラーリング先のＣＭを有するＣＥのバッテリが異常な場合、当該ローカルキャッシュを有するＣＭに、ＬＵの書き込み制御をライトスルー方式へ切り替えるように指示する。
【００８２】
図６は、ボリューム管理テーブルの例を示す図である。ボリューム管理テーブル１１３ａは、テーブル記憶部１１３に格納される。また、他のＣＭ１２０，２１０，２２０，３１０，３２０，４１０，４２０の全てのテーブル記憶部には、ボリューム管理テーブル１１３ａと同じ内容のボリューム管理テーブルが記憶される。すなわち、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０の全てにおいてボリューム管理テーブルの内容が同期される。
【００８３】
ボリューム管理テーブル１１３ａは、ＬＵＮ、ＲＡＩＤレベル、物理記憶領域、ローカルキャッシュおよびミラーキャッシュの項目を含む。また、ローカルキャッシュおよびミラーキャッシュの項目は、初期状態と現状のそれぞれについて設けられる。
【００８４】
ＬＵＮの項目には、ＬＵを識別する情報が登録される。ＲＡＩＤレベルの項目には、ＬＵのアクセス制御で用いられるＲＡＩＤレベルが登録される。物理記憶領域の項目には、ＬＵに割り当てられた物理記憶領域を示す情報が登録される。例えば、物理記憶領域の項目には、ＬＵに割り当てられたＨＤＤの識別情報が登録される。また、物理記憶領域の項目には、割り当てられたＨＤＤ内の領域を示すアドレス範囲が登録されてもよい。
【００８５】
初期状態に対応するローカルキャッシュおよびミラーキャッシュの項目には、初期状態において、ＬＵに対応するローカルキャッシュおよびミラーキャッシュがそれぞれ割り当てられたＣＭの識別情報が登録される。現状に対応するローカルキャッシュおよびミラーキャッシュの項目には、現時点で、ＬＵに対応するローカルキャッシュおよびミラーキャッシュがそれぞれ割り当てられているＣＭの識別情報が登録される。現状に対応するローカルキャッシュおよびミラーキャッシュの項目は、割り当て先のＣＭが変更される度に更新される。
【００８６】
ここで、以下の説明では、ＣＭ１１０，２１０，３１０，４１０，１２０，２２０，３２０，４２０を識別する情報を、それぞれ“ＣＭ＃１”，“ＣＭ＃２”，“ＣＭ＃３”，“ＣＭ＃４”，“ＣＭ＃５”，“ＣＭ＃６”，“ＣＭ＃７”，“ＣＭ＃８”とする。なお、図６において初期状態に対応するローカルキャッシュおよびミラーキャッシュの項目に登録された情報は、図４に示した状態を表している。
【００８７】
図７は、構成管理テーブルの例を示す図である。構成管理テーブル１１３ｂは、マスタＣＭのテーブル記憶部に格納される。例えば、構成管理テーブル１１３ｂは、マスタＣＭが設定されているＣＭ１１０のテーブル記憶部１１３に格納される。また、構成管理テーブル１１３ｂが、マスタＣＭ以外のテーブル記憶部に、同期した状態で格納されていてもよい。マスタＣＭが故障したときに、構成管理テーブル１１３ｂを記憶しているＣＭがマスタＣＭとして動作することができるからである。
【００８８】
構成管理テーブル１１３ｂは、ＣＥ  ＩＤ（identifier）、ＣＭ  ＩＤ、Ｂａｃｋｗａｒｄ  ＣＭおよびＦｏｒｗａｒｄ  ＣＭの項目を含む。ＣＥ  ＩＤの項目には、ＣＥを識別する情報が登録される。ＣＭ  ＩＤの項目には、ＣＭを識別する情報が登録される。Ｂａｃｋｗａｒｄ  ＣＭの項目には、ＣＭ  ＩＤの項目に登録されているＣＭのミラーキャッシュに、ローカルキャッシュのデータをミラーリングしているＣＭの識別情報が登録される。Ｆｏｒｗａｒｄ  ＣＭの項目には、ＣＭ  ＩＤの項目に登録されているＣＭのローカルキャッシュに格納されているデータのミラーリング先のＣＭが登録される。
【００８９】
例えば、図７に示す構成管理テーブル１１３ｂには、ＣＥ  ＩＤの項目に“ＣＥ＃２”が、ＣＭ  ＩＤの項目に“ＣＭ＃２”が、Ｂａｃｋｗａｒｄ  ＣＭの項目に“ＣＭ＃１”が、Ｆｏｒｗａｒｄ  ＣＭの項目に“ＣＭ＃３”が、それぞれ登録されている。これは、ＣＭ１１０（ＣＭ＃１）のローカルキャッシュのミラーリング先がＣＥ２００（ＣＥ＃２）のＣＭ２１０（ＣＭ＃２）であることを示している。また、ＣＭ３１０（ＣＭ＃３）のミラーキャッシュのミラーリング元がＣＥ２００（ＣＥ＃２）のＣＭ２１０（ＣＭ＃２）であることを示している。
【００９０】
構成管理テーブル１１３ｂのＣＭ  ＩＤ、Ｂａｃｋｗａｒｄ  ＣＭおよびＦｏｒｗａｒｄ  ＣＭの項目に登録された情報によって、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０，４１０，４２０がサイクリックに配列されることが定義される。図７に示す構成管理テーブル１１３ｂは、図４に示した初期状態におけるＣＭの相互関係を示している。すなわち、ＣＭ１１０からＣＭ２１０、ＣＭ２１０からＣＭ３１０、ＣＭ３１０からＣＭ４１０、ＣＭ４１０からＣＭ１２０、ＣＭ１２０からＣＭ２２０、ＣＭ２２０からＣＭ３２０、ＣＭ３２０からＣＭ４２０、ＣＭ４２０からＣＭ１１０の順に配列されるように設定されている。Ｂａｃｋｗａｒｄ  ＣＭは、配列方向に対して後ろ側のＣＭを示し、Ｆｏｒｗａｒｄ  ＣＭは、配列方向に対して前側の（すなわち、次の）ＣＭを示す。
【００９１】
指示制御部１１６は、あるＣＭをサイクリックな配列から除外する場合、構成管理テーブル１１３ｂを更新する。また、指示制御部１１６は、あるＣＭに割り当てられていたローカルキャッシュおよびミラーキャッシュの割り当て先を変更する際、構成管理テーブル１１３ｂに基づいて割り当て先を決定することができる。
【００９２】
次に、バッテリの異常が発生した場合の処理について、具体例を挙げて説明する。
まず、図４に示す初期状態から、ＣＥ２００のバッテリ２４０に異常が発生した場合の処理例について、図８〜図１１を用いて説明する。以下の説明では、初期状態を「状態１」と記載し、バッテリ２４０の異常発生に応じた処理が完了した後の状態を「状態２」と記載する。なお、ＣＭ１１０，２１０，３１０，４１０がＣＥ内マスタに設定され、ＣＭ１１０がマスタＣＭに設定されているものとする。
【００９３】
図８は、状態２におけるローカルキャッシュおよびミラーキャッシュの割り当て状態を示す図である。ＣＥ２００におけるＣＥ内マスタであるＣＭ２１０は、状態１においてバッテリ２４０の異常が発生したことを検知すると、その旨をマスタＣＭであるＣＭ１１０に通知する。ＣＭ１１０は、バッテリに異常が発生したＣＥの数が閾値以上であるかを判定する。ここでは、閾値を２とする。この場合、ＣＭ１１０は、ＣＥ２００内のＣＭ２１０，２２０に割り当てられていたローカルキャッシュおよびミラーキャッシュを、他のＣＭに割り当てるための割り当て変更処理を実行する。
【００９４】
図４に示したように、バッテリ２４０の異常発生が検知された時点では、ローカルキャッシュＬＣ２とミラーキャッシュＭＣ１がＣＭ２１０に割り当てられ、ローカルキャッシュＬＣ６とミラーキャッシュＭＣ５がＣＭ２２０に割り当てられている。ＣＭ１１０による割り当て変更処理により、これらの割り当て先ＣＭは次のように変更される。
【００９５】
ローカルキャッシュＬＣ２，ＬＣ６の割り当て先は、現在のＣＭから、サイクリックな配列における後ろ側のＣＭに変更される。具体的には、図８に示すように、ローカルキャッシュＬＣ２の割り当て先はＣＭ２１０からＣＭ１１０に変更され、ローカルキャッシュＬＣ６の割り当て先はＣＭ２２０からＣＭ１２０に変更される。
【００９６】
一方、ミラーキャッシュＭＣ１，ＭＣ５の割り当て先は、現在のＣＭから、サイクリックな配列における前側のＣＭに変更される。具体的には、図８に示すように、ミラーキャッシュＭＣ１の割り当て先はＣＭ２１０からＣＭ３１０に変更され、ミラーキャッシュＭＣ５の割り当て先はＣＭ２２０からＣＭ３２０に変更される。
【００９７】
以上のように割り当てが変更された後、ストレージシステムの運用が再開される。このとき、ＣＭ１１０は、ローカルキャッシュＬＣ１を用いたＬＵＮ＃１へのアクセス制御に加えて、ローカルキャッシュＬＣ２を用いたＬＵＮ＃２へのアクセス制御を実行する。ＬＵＮ＃１およびＬＵＮ＃２への書き込み制御は、ライトバック方式で行われる。また、ＣＭ１１０は、ローカルキャッシュＬＣ２のデータを、ＣＭ３１０に割り当てられたミラーキャッシュＭＣ２にミラーリングする。
【００９８】
ＣＭ１１０に接続されたバッテリ１４０も、ＣＭ３１０に接続されたバッテリ３４０も、異常が発生していない。このため、ＣＭ１１０がローカルキャッシュＬＣ２を用いたＬＵＮ＃２への書き込みをライトバック方式で制御しても、ＬＵＮ＃２のデータが消失する可能性は、バッテリ２４０の故障が検知される前の状態１から変化しない。したがって、図８のような割り当て変更が行われることで、ＣＭ２１０にローカルキャッシュＬＣ２とミラーキャッシュＭＣ１を割り当てたままＣＭ２１０をライトスルー運用に切り替える方法と比較して、ＬＵＮ＃１，ＬＵＮ＃２へのアクセス速度を向上させることができる。
【００９９】
また、図８のように割り当てが変更されてストレージシステムの運用が再開されたとき、ＣＭ１２０は、ローカルキャッシュＬＣ５を用いたＬＵＮ＃５へのアクセス制御に加えて、ローカルキャッシュＬＣ６を用いたＬＵＮ＃６へのアクセス制御を実行する。ＬＵＮ＃５およびＬＵＮ＃６への書き込み制御は、ライトバック方式で行われる。また、ＣＭ１２０は、ローカルキャッシュＬＣ６のデータを、ＣＭ３２０に割り当てられたミラーキャッシュＭＣ６にミラーリングする。これにより、ＣＭ２２０にローカルキャッシュＬＣ６とミラーキャッシュＭＣ５を割り当てたままＣＭ２２０をライトスルー運用に切り替える方法と比較して、ＬＵＮ＃５，ＬＵＮ＃６へのアクセス速度を向上させることができる。
【０１００】
なお、状態２においては、ホスト装置９００からのＬＵＮ＃２へのアクセス要求は、状態１と同様にＣＭ２１０が受信する。ＣＭ２１０は、ホスト装置９００からＬＵＮ＃２へのアクセス要求を受信すると、アクセス要求をＣＭ１１０に転送する。ＣＭ１１０は、転送されたアクセス要求に応じてＬＵＮ＃２へのアクセス制御を実行する。アクセス制御の完了応答は、ＣＭ１１０からＣＭ２１０を介してホスト装置９００に送信される。同様に、ホスト装置９００からのＬＵＮ＃５へのアクセス要求は、ＣＭ２２０が受信してＣＭ１２０に転送する。
【０１０１】
また、ローカルキャッシュおよびミラーキャッシュの割り当てが解除されたＣＭ２１０，２２０は、ＣＭ２１０，２２０に接続されたＤＥ６００に対するアクセスパスとして引き続き機能する。例えば、ＬＵＮ＃２の物理記憶領域としてＤＥ６００内のＨＤＤが割り当てられているとする。状態２において、ＣＭ１１０は、ローカルキャッシュＬＣ２のデータをＤＥ６００内のＨＤＤに格納する際、ＤＥ６００内のＨＤＤへのデータ書き込み要求と書き込みデータとをＣＭ２１０に対して送信する。ＣＭ２１０は、受信した書き込みデータをＤＥ６００内のＨＤＤに書き込む。
【０１０２】
また、本実施の形態では、各ＣＭのＲＡＭにおいてローカルキャッシュおよびミラーキャッシュとしてそれぞれ使用可能な領域のサイズは、一定であるものとする。このため、図８のような割り当て変更が行われたとき、ローカルキャッシュＬＣ１，ＬＣ２，ＬＣ５，ＬＣ６の容量は１／２に変更される。ローカルキャッシュＬＣ１，ＬＣ２，ＬＣ５，ＬＣ６のそれぞれにおいては、例えば、最終アクセス時刻が遅い順に１／２の容量分のデータが残され、それ以外のデータは対応する物理記憶領域に退避される。
【０１０３】
図９は、状態１から状態２に遷移する際のテーブルの変化を示す図である。なお、図９における状態２でのボリューム管理テーブル１１３ａおよび構成管理テーブル１１３ｂでは、変更されたＣＭの識別番号に下線を付して示している。
【０１０４】
マスタＣＭであるＣＭ１１０の指示制御部１１６は、ローカルキャッシュおよびミラーキャッシュの割り当てをどのように変更するかを、以下のような処理によって判定する。
指示制御部１１６は、図９に示す状態１での構成管理テーブル１１３ｂに基づいて、ＣＥ２００内のＣＭ２１０（ＣＭ＃２），ＣＭ２２０（ＣＭ＃６）にそれぞれ割り当てられているローカルキャッシュおよびミラーキャッシュの割り当て変更先を特定する。具体的には、指示制御部１１６は、ＣＭ＃２に割り当てられていたＬＵＮ＃２のローカルキャッシュＬＣ２の割り当て変更先を、ＣＭ＃２のレコードにおいてＢａｃｋｗａｒｄ  ＣＭの項目に登録されているＣＭ＃１と特定する。また、指示制御部１１６は、ＣＭ＃２に割り当てられていたＬＵＮ＃１のミラーキャッシュＭＣ１の割り当て変更先を、ＣＭ＃２のレコードにおいてＦｏｒｗａｒｄ  ＣＭの項目に登録されているＣＭ＃３と特定する。また、指示制御部１１６は、ＣＭ＃６に割り当てられていたＬＵＮ＃６のローカルキャッシュＬＣ６の割り当て変更先を、ＣＭ＃６のレコードにおいてＢａｃｋｗａｒｄ  ＣＭの項目に登録されているＣＭ＃５と特定する。また、指示制御部１１６は、ＣＭ＃６に割り当てられていたＬＵＮ＃５のミラーキャッシュＭＣ５の割り当て変更先を、ＣＭ＃６のレコードにおいてＦｏｒｗａｒｄ  ＣＭの項目に登録されているＣＭ＃７と特定する。
【０１０５】
指示制御部１１６は、ローカルキャッシュおよびミラーキャッシュの割り当て先を上記のように変更するための後述する制御を実行した後、割り当て先の変更が反映されるようにボリューム管理テーブル１１３ａを更新する。
【０１０６】
さらに、指示制御部１１６は、構成管理テーブル１１３ｂを更新して、ＣＭ２１０（ＣＭ＃２），２２０（ＣＭ＃６）をサイクリックな配列から除外する。具体的には、指示制御部１１６は、状態１での構成管理テーブル１１３ｂに基づいて、ＣＭ＃２の後ろ側のＣＭ＃１に対応するＦｏｒｗａｒｄ  ＣＭを、ＣＭ＃２からその前側のＣＭ＃３に変更する。また、指示制御部１１６は、状態１での構成管理テーブル１１３ｂに基づいて、ＣＭ＃２の前側のＣＭ＃３に対応するＢａｃｋｗａｒｄ  ＣＭを、ＣＭ＃２からその後ろ側のＣＭ＃１に変更する。また、指示制御部１１６は、ＣＭ＃２に対応するＢａｃｋｗａｒｄ  ＣＭおよびＦｏｒｗａｒｄ  ＣＭの各項目から情報を削除する。
【０１０７】
図１０は、状態１から状態２に遷移する際の処理例（その１）を示すシーケンス図である。
（ＳＴ１０１）状態１において、ＣＭ２１０の監視部は、バッテリ２４０が異常であることを検出する。例えば、ＣＭ２１０の監視部は、バッテリ２４０が故障であることを検出する。
【０１０８】
（ＳＴ１０２）ＣＭ２１０の監視部は、バッテリ２４０が異常である旨を示すバッテリ異常通知をＣＭ１１０に送信する。
（ＳＴ１０３）ＣＭ１１０の監視部１１５は、バッテリ異常通知を受信する。ＣＭ１１０の監視部１１５は、ストレージシステムに存在するバッテリのうち、異常が発生したバッテリの数が閾値以上であるか否かを判定する。ここで、閾値には、２が設定されているものとする。ＣＭ１１０の監視部１１５は、異常が発生したバッテリの数が閾値未満であると判定する。
【０１０９】
次に、ＣＭ１１０の指示制御部１１６は、構成管理テーブル１１３ｂを参照し、ローカルキャッシュと物理記憶領域とを同期させるＣＭを特定する。具体的には、ＣＭ１１０の指示制御部１１６は、バッテリの異常が検出されたＣＥ２００内のＣＭ２１０，２２０と、ＣＭ２１０，２２０にローカルキャッシュのデータをミラーリングしているＣＭ１１０，１２０とを、ローカルキャッシュと物理記憶領域とを同期させるＣＭとして特定する。ＣＭ２１０，２２０にローカルキャッシュのデータをミラーリングしているＣＭ１１０，１２０は、サイクリックな配列においてＣＭ２１０，２２０の後ろ側に位置するＣＭとして特定される。
【０１１０】
（ＳＴ１０４）ＣＭ１１０の指示制御部１１６は、ＣＭ１２０に、ローカルキャッシュＬＣ５に格納されているデータを同期させるように指示をする。
（ＳＴ１０５）ＣＭ１１０の指示制御部１１６は、ＣＭ２１０に、ローカルキャッシュＬＣ２に格納されているデータを同期させるように指示をする。
【０１１１】
（ＳＴ１０６）ＣＭ１１０の指示制御部１１６は、ＣＭ２２０に、ローカルキャッシュＬＣ６に格納されているデータを同期させるように指示をする。
（ＳＴ１０７）ＣＭ１１０の指示制御部１１６は、ＣＭ１１０の変更制御部１１７に、ローカルキャッシュＬＣ１に格納されているデータを同期させるように指示する。ＣＭ１１０の変更制御部１１７は、ローカルキャッシュＬＣ１に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュＬＣ１と物理記憶領域とを同期させる。
【０１１２】
（ＳＴ１０８）ＣＭ１２０の変更制御部は、ローカルキャッシュＬＣ５に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュＬＣ５と物理記憶領域とを同期させる。
【０１１３】
（ＳＴ１０９）ＣＭ２１０の変更制御部は、ローカルキャッシュＬＣ２に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュＬＣ２と物理記憶領域とを同期させる。
【０１１４】
（ＳＴ１１０）ＣＭ２２０の変更制御部は、ローカルキャッシュＬＣ６に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュＬＣ２と物理記憶領域とを同期させる。
【０１１５】
ステップＳＴ１０７〜ＳＴ１１０の処理が完了すると、次の処理が実行される。
ＣＭ１１０の指示制御部１１６は、構成管理テーブル１１３ｂを参照し、ローカルキャッシュおよびミラーキャッシュの割り当てをどのように変更するかを判定する。この判定処理手順は、図９で説明した通りである。ＣＭ１１０の指示制御部１１６は、ＣＭ２１０に割り当てられていたＬＵＮ＃２のローカルキャッシュＬＣ２の割り当て変更先を、ＣＭ１１０と特定する。また、ＣＭ１１０の指示制御部１１６は、ＣＭ２１０に割り当てられていたＬＵＮ＃１のミラーキャッシュＭＣ１の割り当て変更先を、ＣＭ３１０と特定する。また、ＣＭ１１０の指示制御部１１６は、ＣＭ２２０に割り当てられていたＬＵＮ＃６のローカルキャッシュＬＣ６の割り当て変更先を、ＣＭ１２０と特定する。また、指示制御部１１６は、ＣＭ２２０に割り当てられていたＬＵＮ＃５のミラーキャッシュＭＣ５の割り当て変更先を、ＣＭ３２０と特定する。なお、上記の判定処理手順は、ステップＳＴ１０３の実行後から、ステップＳＴ１１１の実行前までのどのタイミングが実行されてもよい。
【０１１６】
（ＳＴ１１１）ＣＭ１１０の指示制御部１１６は、ＬＵＮ＃６のローカルキャッシュＬＣ６を新たに割り当てることを示す割り当て変更指示を、ＣＭ１２０に送信する。
（ＳＴ１１２）ＣＭ１１０の指示制御部１１６は、ＬＵＮ＃１のミラーキャッシュＭＣ１を新たに割り当てることを示す割り当て変更指示を、ＣＭ３１０に送信する。
【０１１７】
（ＳＴ１１３）ＣＭ１１０の指示制御部１１６は、ＬＵＮ＃５のミラーキャッシュＭＣ５を新たに割り当てることを示す割り当て変更指示を、ＣＭ３２０に送信する。
図１１は、状態１から状態２に遷移する際の処理例（その２）を示すシーケンス図である。以下、図１１に示す処理をステップ番号に沿って説明する。
【０１１８】
（ＳＴ１２１）ＣＭ１１０の指示制御部１１６は、ＬＵＮ＃２のローカルキャッシュＬＣ２を新たに割り当てることを示す割り当て変更指示を、ＣＭ１１０の変更制御部１１７に通知する。ＣＭ１１０の変更制御部１１７は、割り当て変更指示に応じて、ローカルキャッシュの割り当て変更を行う。
【０１１９】
具体的には、ＣＭ１１０の変更制御部１１７は、ＲＡＭ１１０ｂのローカルキャッシュ領域１１１に、ＬＵＮ＃１のローカルキャッシュＬＣ１とＬＵＮ＃２のローカルキャッシュＬＣ２の各領域を確保する。このとき、ＣＭ１１０の変更制御部１１７は、ＲＡＭ１１０ｂに格納されていたローカルキャッシュＬＣ１のデータのうち、最終アクセス時刻が遅い順に１／２の容量分のデータを、新たに確保されたローカルキャッシュＬＣ１の領域に格納する。
【０１２０】
（ＳＴ１２２）ＣＭ１２０の変更制御部は、ローカルキャッシュの割り当て変更を行う。具体的には、ＣＭ１２０の変更制御部は、ＣＭ１２０のＲＡＭのローカルキャッシュ領域に、ＬＵＮ＃５のローカルキャッシュＬＣ５とＬＵＮ＃６のローカルキャッシュＬＣ６の各領域を確保する。このとき、ＣＭ１２０の変更制御部は、ＣＭ１２０のＲＡＭに格納されていたローカルキャッシュＬＣ５のデータのうち、最終アクセス時刻が遅い順に１／２の容量分のデータを、新たに確保されたローカルキャッシュＬＣ５の領域に格納する。
【０１２１】
なお、本実施の形態では、各ＣＭのＲＡＭにおいては、ローカルキャッシュおよびミラーキャッシュとしてそれぞれ使用可能な領域のサイズは、一定とされる。しかし、他の例として、各ＣＭのＲＡＭにおいては、ローカルキャッシュとミラーキャッシュのどちらとしても使用可能な領域のサイズが、一定とされていてもよい。そして、１つのＣＭに割り当てられるローカルキャッシュとミラーキャッシュに対して、ＲＡＭの記憶領域が均等に割り当てられてもよい。この場合、ステップＳＴ１２５，ＳＴ１２６では、ＣＭ１１０，１２０のそれぞれに割り当てられるローカルキャッシュおよびミラーキャッシュの総数に基づいて、ステップＳＴ１２７，ＳＴ１２８で転送すべきデータ量が決定される。
【０１２２】
（ＳＴ１２３）ＣＭ３１０の変更制御部は、ミラーキャッシュの割り当て変更を行う。具体的には、ＣＭ３１０の変更制御部は、ＣＭ３１０のＲＡＭのミラーキャッシュ領域に、ＬＵＮ＃２のミラーキャッシュＭＣ２とＬＵＮ＃１のミラーキャッシュＭＣ１の各領域を確保する。
【０１２３】
（ＳＴ１２４）ＣＭ３２０の変更制御部は、ミラーキャッシュの割り当て変更を行う。具体的には、ＣＭ３２０の変更制御部は、ＣＭ３２０のＲＡＭのミラーキャッシュ領域に、ＬＵＮ＃６のミラーキャッシュＭＣ６とＬＵＮ＃５のミラーキャッシュＭＣ５の各領域を確保する。
【０１２４】
ステップＳＴ１２１〜ＳＴ１２４の処理が完了すると、次の処理が実行される。
（ＳＴ１２５）ＣＭ１１０の指示制御部１１６は、ＣＭ２１０に、ＣＭ２１０のＲＡＭに割り当てられているＬＵＮ＃２のローカルキャッシュＬＣ２のデータをＣＭ１１０に転送するように指示する。このとき、現状のローカルキャッシュＬＣ２のうち１／２の容量のデータを転送するように指示される。
【０１２５】
（ＳＴ１２６）ＣＭ１１０の指示制御部１１６は、ＣＭ２２０に、ＣＭ２２０のＲＡＭに割り当てられているＬＵＮ＃６のローカルキャッシュＬＣ６のデータをＣＭ１２０に転送するように指示する。このとき、現状のローカルキャッシュＬＣ６のうち１／２の容量のデータを転送するように指示される。
【０１２６】
（ＳＴ１２７）ＣＭ２１０の変更制御部は、ＬＵＮ＃２のローカルキャッシュＬＣ２に格納されているデータのうち、最終アクセス時刻が遅い順に１／２の容量のデータをＣＭ１１０に転送する。これにより、転送されたデータが、ＣＭ１１０に確保されたローカルキャッシュＬＣ２の領域に格納される。
【０１２７】
（ＳＴ１２８）ＣＭ２１０の変更制御部は、ＬＵＮ＃６のローカルキャッシュＬＣ６に格納されているデータのうち、最終アクセス時刻が遅い順に１／２の容量のデータをＣＭ１２０に転送する。これにより、転送されたデータが、ＣＭ１２０に確保されたローカルキャッシュＬＣ６の領域に格納される。
【０１２８】
ステップＳＴ１２７，ＳＴ１２８の処理が完了すると、次の処理が実行される。
（ＳＴ１２９）ＣＭ１１０の指示制御部１１６は、ライトバック運用を開始するようにＣＭ１２０に指示する。
【０１２９】
（ＳＴ１３０）ＣＭ１１０の指示制御部１１６は、ライトバック運用を開始するようにＣＭ３１０に指示する。
（ＳＴ１３１）ＣＭ１１０の指示制御部１１６は、ライトバック運用を開始するようにＣＭ３２０に指示する。
【０１３０】
（ＳＴ１３２）ＣＭ１１０の指示制御部１１６は、ライトバック運用を開始するようにＣＭ１１０のアクセス制御部１１４に指示する。ＣＭ１１０のアクセス制御部１１４は、ライトバック運用を開始する。このとき、ＣＭ１１０のアクセス制御部１１４は、ローカルキャッシュＬＣ１，ＬＣ２のデータを、ＣＭ３１０のミラーキャッシュＭＣ１，ＭＣ２にそれぞれコピーする。コピーが完了すると、ＣＭ１１０のアクセス制御部１１４は、ローカルキャッシュＬＣ１を用いたＬＵＮ＃１へのアクセス制御と、ローカルキャッシュＬＣ２を用いたＬＵＮ＃２へのアクセス制御を開始する。これらのアクセス制御では、ローカルキャッシュＬＣ１，ＬＣ２のデータが、ＣＭ３１０のミラーキャッシュＭＣ１，ＭＣ２にそれぞれミラーリングされる。また、ＬＵＮ＃１，ＬＵＮ＃２への書き込み制御は、ライトバック方式で行われる。
【０１３１】
（ＳＴ１３３）ＣＭ１２０のアクセス制御部は、ライトバック運用を開始する。このとき、ＣＭ２１０のアクセス制御部は、ローカルキャッシュＬＣ５，ＬＣ６のデータを、ＣＭ３２０のミラーキャッシュＭＣ５，ＭＣ６にそれぞれコピーする。コピーが完了すると、ＣＭ１２０のアクセス制御部は、ローカルキャッシュＬＣ５を用いたＬＵＮ＃５へのアクセス制御と、ローカルキャッシュＬＣ６を用いたＬＵＮ＃６へのアクセス制御を開始する。これらのアクセス制御では、ローカルキャッシュＬＣ５，ＬＣ６のデータが、ＣＭ３２０のミラーキャッシュＭＣ５，ＭＣ６にそれぞれミラーリングされる。また、ＬＵＮ＃５，ＬＵＮ＃６への書き込み制御は、ライトバック方式で行われる。
【０１３２】
（ＳＴ１３４）ＣＭ３１０のアクセス制御部は、ライトバック運用を開始する。すなわち、ＣＭ３１０のアクセス制御部は、ローカルキャッシュＬＣ３を用いたＬＵＮ＃３へのアクセス制御を再開する。ＬＵＮ＃３への書き込み制御は、ライトバック方式で行われる。
【０１３３】
（ＳＴ１３５）ＣＭ３２０のアクセス制御部は、ライトバック運用を開始する。すなわち、ＣＭ３２０のアクセス制御部は、ローカルキャッシュＬＣ７を用いたＬＵＮ＃７へのアクセス制御を再開する。ＬＵＮ＃７への書き込み制御は、ライトバック方式で行われる。
【０１３４】
次に、状態２からさらにＣＥ３００のバッテリ３４０に異常が発生した場合の処理例について、図１２〜図１６を用いて説明する。以下の説明では、バッテリ３４０の異常発生に応じた処理が完了した後の状態を「状態３」と記載する。
【０１３５】
図１２は、状態３におけるローカルキャッシュおよびミラーキャッシュの割り当て状態を示す図である。ＣＥ３００におけるＣＥ内マスタであるＣＭ３１０は、バッテリ３４０の異常が発生したことを検知すると、その旨をマスタＣＭであるＣＭ１１０に通知する。ＣＭ１１０は、バッテリに異常が発生したＣＥの数が閾値以上であるかを判定する。ここでは、バッテリに異常が発生したＣＥの数が閾値“２”以上であると判定される。この場合、次のような運用切り替え処理を実行する。運用切り替え処理では、ＣＭ１１０は、初期状態からローカルキャッシュまたはミラーキャッシュの割り当てが変更されたＣＭ１１０，１２０，２１０，２２０，３１０，３２０について、それらの割り当てを初期状態に戻す。そして、ＣＭ１１０は、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０の運用方式をライトバック運用からライトスルー運用に切り替える。
【０１３６】
ローカルキャッシュの割り当て先ＣＭは、図１２に示すように変更される。すなわち、ＬＵＮ＃２のローカルキャッシュＬＣ２の割り当て先は、ＣＭ１１０からＣＭ２１０に変更される。ＬＵＮ＃６のローカルキャッシュＬＣ６の割り当て先は、ＣＭ１２０からＣＭ２２０に変更される。
【０１３７】
そして、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０の運用方式が、ライトバック運用からライトスルー運用に変更される。すなわち、ＣＭ１１０は、ローカルキャッシュＬＣ１を用いたＬＵＮ＃１への書き込みを、ライトスルー方式で制御する。ＣＭ１２０は、ローカルキャッシュＬＣ５を用いたＬＵＮ＃５への書き込みを、ライトスルー方式で制御する。ＣＭ２１０は、ローカルキャッシュＬＣ２を用いたＬＵＮ＃２への書き込みを、ライトスルー方式で制御する。ＣＭ２２０は、ローカルキャッシュＬＣ６を用いたＬＵＮ＃６への書き込みを、ライトスルー方式で制御する。ＣＭ３１０は、ローカルキャッシュＬＣ３を用いたＬＵＮ＃３への書き込みを、ライトスルー方式で制御する。ＣＭ３２０は、ローカルキャッシュＬＣ７を用いたＬＵＮ＃７への書き込みを、ライトスルー方式で制御する。
【０１３８】
このような割り当て変更処理により、ＬＵＮ＃１，ＬＵＮ＃２，ＬＵＮ＃３，ＬＵＮ＃５，ＬＵＮ＃６，ＬＵＮ＃７のそれぞれのデータが消失する可能性を低減することができる。
【０１３９】
なお、書き込みがライトスルー方式で制御されることから、ＬＵＮ＃１，ＬＵＮ＃２，ＬＵＮ＃３，ＬＵＮ＃５，ＬＵＮ＃６，ＬＵＮ＃７にそれぞれ対応するローカルキャッシュのデータを、ミラーキャッシュにミラーリングする必要性は低い。このため、図１２に示すように、ＬＵＮ＃１，ＬＵＮ＃２，ＬＵＮ＃３，ＬＵＮ＃５，ＬＵＮ＃６，ＬＵＮ＃７にそれぞれ対応するミラーキャッシュＭＣ１，ＭＣ２，ＭＣ３，ＭＣ５，ＭＣ６，ＭＣ７は、ＣＭに割り当てられない。
【０１４０】
図１３は、状態２から状態３に遷移する際の処理例（その１）を示すシーケンス図である。以下、図１３に示す処理をステップ番号に沿って説明する。
（ＳＴ１４１）状態２において、ＣＭ３１０の監視部は、バッテリ３４０が異常であることを検出する。例えば、ＣＭ３１０の監視部は、バッテリ３４０が故障であることを検出する。
【０１４１】
（ＳＴ１４２）ＣＭ３１０の監視部は、バッテリ３４０が異常である旨を示すバッテリ異常通知をＣＭ１１０に送信する。
（ＳＴ１４３）ＣＭ１１０の監視部１１５は、バッテリ異常通知を受信する。ＣＭ１１０の監視部１１５は、ストレージシステムに存在するバッテリのうち、異常が発生したバッテリの数が閾値“２”以上であるか否かを判定する。ＣＭ１１０の監視部１１５は、異常が発生したバッテリの数が閾値“２”以上であると判定する。
【０１４２】
（ＳＴ１４４）ＣＭ１１０の指示制御部１１６は、ローカルキャッシュと物理記憶領域とを同期させるＣＭを特定する。ＣＭ１１０の指示制御部１１６は、まず、ステップＳＴ１４１でバッテリ３４０の異常が検出されたＣＥ３００に含まれるＣＭ３１０（ＣＭ＃３），ＣＭ３２０（ＣＭ＃７）を、同期させるＣＭとして特定する。
【０１４３】
ＣＭ１１０の指示制御部１１６はさらに、ボリューム管理テーブル１１３ａに基づいて、特定されたＣＭ３１０（ＣＭ＃３），ＣＭ３２０（ＣＭ＃７）にローカルキャッシュのデータをミラーリングしているＣＭを特定する。具体的には、ＣＭ１１０の指示制御部１１６は、ボリューム管理テーブル１１３ａから、現状に対応するミラーキャッシュの項目に、特定されたＣＭ３１０（ＣＭ＃３），ＣＭ３２０（ＣＭ＃７）が登録されているレコードを特定する。ここではＬＵＮ＃２とＬＵＮ＃６の各レコードが特定される。ＣＭ１１０の指示制御部１１６は、特定されたレコードの項目のうち、現状に対応するローカルキャッシュの項目に登録されているＣＭを、同期させるＣＭとして特定する。ここでは、ＣＭ＃１とＣＭ＃５が特定される。
【０１４４】
（ＳＴ１４５）ＣＭ１１０の指示制御部１１６は、ＣＭ１２０（ＣＭ＃５）に、ローカルキャッシュＬＣ５，ＬＣ６に格納されているデータを同期させるように指示する。
（ＳＴ１４６）ＣＭ１１０の指示制御部１１６は、ＣＭ３１０（ＣＭ＃３）に、ローカルキャッシュＬＣ３に格納されているデータを同期させるように指示する。
【０１４５】
（ＳＴ１４７）ＣＭ１１０の指示制御部１１６は、ＣＭ３２０（ＣＭ＃７）に、ローカルキャッシュＬＣ７に格納されているデータを同期させるように指示する。
（ＳＴ１４８）ＣＭ１１０の指示制御部１１６は、ＣＭ１１０の変更制御部１１７に、ローカルキャッシュＬＣ１，ＬＣ２に格納されているデータを同期させるように指示する。ＣＭ１１０の変更制御部１１７は、ローカルキャッシュＬＣ１，ＬＣ２に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュＬＣ１，ＬＣ２と物理記憶領域とを同期させる。
【０１４６】
（ＳＴ１４９）ＣＭ１２０の変更制御部は、ローカルキャッシュＬＣ５，ＬＣ６に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュＬＣ５，ＬＣ６と物理記憶領域とを同期させる。
【０１４７】
（ＳＴ１５０）ＣＭ３１０の変更制御部は、ローカルキャッシュＬＣ３に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュＬＣ３と物理記憶領域とを同期させる。
【０１４８】
（ＳＴ１５１）ＣＭ３２０の変更制御部は、ローカルキャッシュＬＣ７に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュＬＣ７と物理記憶領域とを同期させる。
【０１４９】
ステップＳＴ１４８〜ＳＴ１５１の処理が完了すると、次の処理が実行される。
（ＳＴ１５２）ＣＭ１１０の指示制御部１１６は、ローカルキャッシュの割り当てをどのように変更するかを判定する。具体的には、ＣＭ１１０の指示制御部１１６は、ボリューム管理テーブル１１３ａを参照し、初期状態に対応するローカルキャッシュの項目と現状に対応するローカルキャッシュの項目とを比較する。ＣＭ１１０の指示制御部１１６は、登録されている内容が異なるＬＵのレコードを特定する。図１２の例では、ＬＵＮ＃２，ＬＵＮ＃６の各レコードが特定される。ＣＭ１１０の指示制御部１１６は、特定されたレコードにおいて、現状および初期状態のそれぞれに対応するローカルキャッシュの項目に基づいて、ローカルキャッシュの割り当てを変更するＣＭを特定する。図１２の例では、ＬＵＮ＃２のローカルキャッシュＬＣ２の割り当て先をＣＭ１１０（ＣＭ＃１）からＣＭ２１０（ＣＭ＃２）に変更し、ＬＵＮ＃６のローカルキャッシュＬＣ６の割り当て先をＣＭ１２０（ＣＭ＃５）からＣＭ２２０（ＣＭ＃６）に変更することが判定される。
【０１５０】
また、ＣＭ１１０の指示制御部１１６は、ミラーキャッシュの割り当てを変更するＣＭを特定する。ここで特定されるＣＭとは、ミラーキャッシュが割り当てられなくなるＣＭであり、具体的には、バッテリの異常が発生したＣＥ内のＣＭと、サイクリックな配列においてこのＣＭの前側に位置するＣＭである。図１２の例では、前者としてはＣＭ２１０、２２０，３１０，３２０が特定され、後者としてはＣＭ３１０，３２０，４１０，４２０が特定される。
【０１５１】
図１４は、状態２から状態３に遷移する際の処理例（その２）を示すシーケンス図である。以下、図１４に示す処理をステップ番号に沿って説明する。
まず、図１３のステップＳＴ１５２での処理に基づき、まず、ローカルキャッシュが新たに割り当てられるＣＭと、ミラーキャッシュが割り当てられなくなるＣＭに対して、割り当て変更指示が送信される。
【０１５２】
（ＳＴ１６１）ＣＭ１１０の指示制御部１１６は、ＬＵＮ＃２のローカルキャッシュＬＣ２を新たに割り当てることを示す割り当て変更指示を、ＣＭ２１０に送信する。
（ＳＴ１６２）ＣＭ１１０の指示制御部１１６は、ＬＵＮ＃６のローカルキャッシュＬＣ６を新たに割り当てることを示す割り当て変更指示を、ＣＭ２２０に送信する。
【０１５３】
（ＳＴ１６３）ＣＭ１１０の指示制御部１１６は、ミラーキャッシュの割り当てがなくなることを示す割り当て変更指示を、ＣＭ３１０に送信する。
（ＳＴ１６４）ＣＭ１１０の指示制御部１１６は、ミラーキャッシュの割り当てがなくなることを示す割り当て変更指示を、ＣＭ３２０に送信する。
【０１５４】
（ＳＴ１６５）ＣＭ１１０の指示制御部１１６は、ミラーキャッシュの割り当てがなくなることを示す割り当て変更指示を、ＣＭ４１０に送信する。
（ＳＴ１６６）ＣＭ１１０の指示制御部１１６は、ミラーキャッシュの割り当てがなくなることを示す割り当て変更指示を、ＣＭ４２０に送信する。
【０１５５】
ステップＳＴ１６１〜ＳＴ１６６で送信された割り当て変更指示に応じて、ステップＳＴ１６７〜ＳＴ１７２のような割り当て変更が行われる。
（ＳＴ１６７）ＣＭ２１０の変更制御部は、ＣＭ２１０のＲＡＭのローカルキャッシュ領域に、ＬＵＮ＃２のローカルキャッシュＬＣ２の領域を確保する。
【０１５６】
（ＳＴ１６８）ＣＭ２２０の変更制御部は、ＣＭ２２０のＲＡＭのローカルキャッシュ領域に、ＬＵＮ＃６のローカルキャッシュＬＣ６の領域を確保する。
（ＳＴ１６９）ＣＭ３１０の変更制御部は、ミラーキャッシュＭＣ１，ＭＣ２のデータを消去し、ミラーキャッシュＭＣ１，ＭＣ２の割り当てを解除する。
【０１５７】
（ＳＴ１７０）ＣＭ３２０の変更制御部は、ミラーキャッシュＭＣ５，ＭＣ６のデータを消去し、ミラーキャッシュＭＣ５，ＭＣ６の割り当てを解除する。
（ＳＴ１７１）ＣＭ４１０の変更制御部は、ミラーキャッシュＭＣ３のデータを消去し、ミラーキャッシュＭＣ３の割り当てを解除する。
【０１５８】
（ＳＴ１７２）ＣＭ４２０の変更制御部は、ミラーキャッシュＭＣ８のデータを消去し、ミラーキャッシュＭＣ８の割り当てを解除する。
少なくともステップＳＴ１６７，ＳＴ１６８の処理が完了すると、次の処理が実行される。
【０１５９】
（ＳＴ１７３）ＣＭ１１０の指示制御部１１６は、ＣＭ１２０に、ＬＵＮ＃６のローカルキャッシュＬＣ６のデータをＣＭ２２０に転送するように指示する。
（ＳＴ１７４）ＣＭ１１０の指示制御部１１６は、ＣＭ１１０の変更制御部１１７に、ＬＵＮ＃２のローカルキャッシュＬＣ２のデータをＣＭ２１０に転送するように指示する。ＣＭ１１０の変更制御部１１７は、ローカルキャッシュＬＣ２のデータをＣＭ２１０に転送する。
【０１６０】
（ＳＴ１７５）ＣＭ１２０の変更制御部は、ＬＵＮ＃６のローカルキャッシュＬＣ６のデータをＣＭ２２０に転送する。
ステップＳＴ１７４，ＳＴ１７５の処理が完了すると、次の処理が実行される。
【０１６１】
（ＳＴ１７６）ＣＭ１１０の指示制御部１１６は、ローカルキャッシュＬＣ６の割り当てを解除することを示す割り当て変更指示を、ＣＭ１２０に送信する。
（ＳＴ１７７）ＣＭ１１０の指示制御部１１６は、ＣＭ１１０の変更制御部１１７に対して、ローカルキャッシュＬＣ２の割り当てを解除するように指示する。ＣＭ１１６の変更制御部１１７は、ローカルキャッシュＬＣ２のデータを消去してローカルキャッシュＬＣ２の割り当てを解除する。ＣＭ１１０の変更制御部１１７は、ローカルキャッシュＬＣ１の領域をＲＡＭ上のローカルキャッシュ領域全体に拡大する。
【０１６２】
（ＳＴ１７８）ＣＭ１２０の変更制御部は、ローカルキャッシュＬＣ６のデータを消去してローカルキャッシュＬＣ６の割り当てを解除する。ＣＭ１２０の変更制御部は、ローカルキャッシュＬＣ５の領域をＲＡＭ上のローカルキャッシュ領域全体に拡大する。
【０１６３】
図１５は、状態２から状態３に遷移する際の処理例（その３）を示すシーケンス図である。以下、図１５に示す処理をステップ番号に沿って説明する。
（ＳＴ１８１）ＣＭ１１０の指示制御部１１６は、運用方式をライトスルー運用に切り替えるＣＭを特定する。このＣＭは、バッテリの異常が発生したＣＥ内のＣＭと、サイクリックな配列においてこれらのＣＭの前側に位置するＣＭである。図１４の例では、前者としてはＣＭ２１０，２２０，３１０，３２０が特定され、後者としてはＣＭ３１０，３２０，４１０，４２０が特定される。
【０１６４】
（ＳＴ１８２）ＣＭ１１０の指示制御部１１６は、ＣＭ１２０に、ライトスルー運用の開始指示を行う。
（ＳＴ１８３）ＣＭ１１０の指示制御部１１６は、ＣＭ２１０に、ライトスルー運用の開始指示を行う。
【０１６５】
（ＳＴ１８４）ＣＭ１１０の指示制御部１１６は、ＣＭ２２０に、ライトスルー運用の開始指示を行う。
（ＳＴ１８５）ＣＭ１１０の指示制御部１１６は、ＣＭ３１０に、ライトスルー運用の開始指示を行う。
【０１６６】
（ＳＴ１８６）ＣＭ１１０の指示制御部１１６は、ＣＭ３２０に、ライトスルー運用の開始指示を行う。
（ＳＴ１８７）ＣＭ１１０の指示制御部１１６は、ＣＭ１１０のアクセス制御部１１４に、ライトスルー運用の開始を指示する。ＣＭ１１０のアクセス制御部１１４は、ライトスルー運用によるローカルキャッシュＬＣ１へのアクセス制御を開始する。このとき、ＣＭ１１０のアクセス制御部１１４は、ローカルキャッシュＬＣ１への書き込みをライトスルー方式で制御する。
【０１６７】
（ＳＴ１８８）ＣＭ１２０のアクセス制御部は、ライトスルー運用によるローカルキャッシュＬＣ５へのアクセス制御を開始する。このとき、ＣＭ１２０のアクセス制御部は、ローカルキャッシュＬＣ５への書き込みをライトスルー方式で制御する。
【０１６８】
（ＳＴ１８９）ＣＭ２１０のアクセス制御部は、ライトスルー運用によるローカルキャッシュＬＣ２へのアクセス制御を開始する。このとき、ＣＭ２１０のアクセス制御部は、ローカルキャッシュＬＣ２への書き込みをライトスルー方式で制御する。
【０１６９】
（ＳＴ１９０）ＣＭ２２０のアクセス制御部は、ライトスルー運用によるローカルキャッシュＬＣ６へのアクセス制御を開始する。このとき、ＣＭ２２０のアクセス制御部は、ローカルキャッシュＬＣ６への書き込みをライトスルー方式で制御する。
【０１７０】
（ＳＴ１９１）ＣＭ３１０のアクセス制御部は、ライトスルー運用によるローカルキャッシュＬＣ３へのアクセス制御を開始する。このとき、ＣＭ３１０のアクセス制御部は、ローカルキャッシュＬＣ３への書き込みをライトスルー方式で制御する。
【０１７１】
（ＳＴ１９２）ＣＭ３２０のアクセス制御部は、ライトスルー運用によるローカルキャッシュＬＣ７へのアクセス制御を開始する。このとき、ＣＭ３２０のアクセス制御部は、ローカルキャッシュＬＣ７への書き込みをライトスルー方式で制御する。
【０１７２】
図１６は、状態２から状態３に遷移する際のテーブルの変化を示す図である。図１５の処理が終了した後、以下のようにしてボリューム管理テーブル１１３ａと構成管理テーブル１１３ｂとが更新される。なお、図１６における状態３でのボリューム管理テーブル１１３ａおよび構成管理テーブル１１３ｂでは、変更されたＣＭの識別番号に下線を付して示している。
【０１７３】
ＣＭ１１０の指示制御部１１６は、ボリューム管理テーブル１１３ａにおける初期状態に対応するローカルキャッシュおよびミラーキャッシュの項目（図６参照）に基づいて、ボリューム管理テーブル１１３ａにおける現状に対応するローカルキャッシュおよびミラーキャッシュの割り当て先ＣＭを、初期状態に戻す。これにより、ボリューム管理テーブル１１３ａは図１６の右上に示すように更新される。
【０１７４】
なお、図１６の右上に示したボリューム管理テーブル１１３ａでは、実際には使用されないミラーキャッシュの割り当て先ＣＭを、括弧を付けて示している。実際の処理では、例えば、状態３では、ボリューム管理テーブル１１３ａにおける現状に対応する項目の登録内容は、初期状態に対応する項目の登録内容と同一とされる。これにより、異常が発生したバッテリのいずれかが正常なバッテリに交換された際に、ボリューム管理テーブル１１３ａをそのまま参照してローカルキャッシュやミラーキャッシュの割り当て変更先ＣＭを特定することができる。また、状態１３では、実際には使用されないミラーキャッシュの割り当て先ＣＭについては、ボリューム管理テーブル１１３ａとは別に管理されればよい。
【０１７５】
また、指示制御部１１６は、構成管理テーブル１１３ｂを更新する。この更新では、構成管理テーブル１１３ｂにおいてＢａｃｋｗａｒｄ  ＣＭ，Ｆｏｒｗａｒｄ  ＣＭの欄が空欄のＣＭが、サイクリックな配列に再度挿入されるように行われる。これにより、構成管理テーブル１１３ｂは、図１６の右下に示すように、初期状態と同様の状態に更新される。
【０１７６】
次に、ＣＭの処理についてフローチャートで説明する。
図１７は、ＣＥ内マスタによるバッテリ状態の監視処理例を示すフローチャートである。図１７では、ＣＭ１１０がＣＥ内マスタに設定されているものとする。以下、図１７に示す処理をステップ番号に沿って説明する。図１７の処理は、一定時間ごとに実行される。
【０１７７】
（Ｓ１１）監視部１１５は、バッテリ１４０に対してポーリングを実行する。
（Ｓ１２）監視部１１５は、バッテリ１４０の状態が正常状態から異常状態へ、または異常状態から正常状態へ変化したかを判定する。なお、監視部１１５は、例えば、バッテリ１４０が故障しているとき、または、バッテリ１４０の充電率が閾値未満であるとき、バッテリ１４０が異常状態であると判定する。バッテリ１４０の状態が変化した場合、処理をステップＳ１３に進める。バッテリ１４０の状態が変化していない場合、処理を終了する。
【０１７８】
（Ｓ１３）監視部１１５は、マスタＣＭにバッテリ１４０の状態を示す通知を送信する。ステップＳ１２でバッテリ１４０が異常状態に変化したと判定した場合、監視部１１５は、バッテリ１４０が異常である旨を示すバッテリ異常通知を送信する。また、ステップＳ１２でバッテリ１４０が正常状態に変化したと判定した場合、監視部１１５は、バッテリ１４０が正常である旨を示すバッテリ正常通知を送信する。そして、処理を終了する。
【０１７９】
なお、ＣＭ１１０がマスタＣＭである場合には、ステップＳ１３では、バッテリ異常通知またはバッテリ正常通知がＣＭ１１０の指示制御部１１６に対して通知される。
図１８は、バッテリ異常通知を受信する場合のマスタＣＭの処理例を示すフローチャートである。図１８では、マスタＣＭが、ＣＭ１１０に設定されているものとする。以下、図１８に示す処理をステップ番号に沿って説明する。
【０１８０】
（Ｓ２１）指示制御部１１６は、ＣＥ内マスタからバッテリ異常通知を受信する。バッテリ異常通知には、どのバッテリが異常であるかを示す情報が含まれている。なお、指示制御部１１６は、ＣＭ１１０の監視部１１５からバッテリ異常通知を受信する場合もある。
【０１８１】
（Ｓ２２）指示制御部１１６は、ストレージシステムに存在するバッテリのうち、異常が発生したバッテリの数が閾値以上であるか否かを判定する。閾値以上の場合、処理をステップＳ２８に進める。閾値未満の場合、処理をステップＳ２３に進める。ステップＳ２３に進むことで、割り当て変更処理が実行される。
【０１８２】
なお、ストレージシステムに含まれるバッテリの個数（すなわち、ＣＥの台数）をＮとすると、閾値は（Ｎ−１）以上の値に設定される。それは、バッテリが正常なＣＥの残り台数が１台になると、バッテリが正常な複数のＣＥ間でローカルキャッシュのデータを二重化しながらライトバック運用を行うことができなくなるからである。
【０１８３】
（Ｓ２３）指示制御部１１６は、構成管理テーブル１１３ｂを参照し、ローカルキャッシュと物理記憶領域とを同期させるＣＭを特定する。具体的には、指示制御部１１６は、バッテリの異常が検出されたＣＥ内のＣＭと、このＣＭにローカルキャッシュのデータをミラーリングしているＣＭとを、ローカルキャッシュと物理記憶領域とを同期させるＣＭとして特定する。
【０１８４】
指示制御部１１６は、特定されたＣＭに対して、ローカルキャッシュに格納されているデータを同期させるように指示する同期指示を送信する。指示制御部１１６は、同期指示を送信したＣＭから完了通知を受信すると、処理をステップＳ２４に進める。なお、特定されたＣＭがマスタＣＭである場合、指示制御部１１６は、同期指示をＣＭ１１０内の変更制御部１１７に通知する。
【０１８５】
（Ｓ２４）指示制御部１１６は、構成管理テーブル１１３ｂを参照し、ローカルキャッシュおよびミラーキャッシュの割り当てをどのように変更するかを判定する。
（Ｓ２５）指示制御部１１６は、ローカルキャッシュおよびミラーキャッシュが新たに割り当てられるＣＭに対して、割り当て変更指示を出力する。指示制御部１１６は、割り当て変更指示を送信したＣＭから完了通知を受信すると、処理をステップＳ２６に進める。なお、ローカルキャッシュおよびミラーキャッシュが新たに割り当てられるＣＭがマスタＣＭである場合、指示制御部１１６は、割り当て変更指示をＣＭ１１０内の変更制御部１１７に通知する。
【０１８６】
（Ｓ２６）指示制御部１１６は、割り当てられているローカルキャッシュの割り当て先が他のＣＭに変更されるＣＭに対して、そのローカルキャッシュのデータの転送指示を送信する。このとき、指示制御部１１６は、ローカルキャッシュの割り当て変更先ＣＭにおいて、このローカルキャッシュのために確保されるＲＡＭの容量を計算し、算出された容量分だけローカルキャッシュのデータを転送するように指示する。
【０１８７】
転送指示を送信したＣＭから完了通知を受信すると、処理をステップＳ２７に進める。なお、割り当てられているローカルキャッシュの割り当て先が他のＣＭに変更されるＣＭが、マスタＣＭである場合、指示制御部１１６は、転送指示をＣＭ１１０内の変更制御部１１７に通知する。
【０１８８】
（Ｓ２７）変更制御部１１７は、ボリューム管理テーブル１１３ａの現状に対応する項目を更新する。また、変更制御部１１７は、バッテリの異常が検出されたＣＥ内のＣＭがサイクリックな配列から除外されるように、構成管理テーブル１１３ｂを更新する。そして、処理をステップＳ２９に進める。
【０１８９】
（Ｓ２８）指示制御部１１６は、運用切り替え処理を実行する。
（Ｓ２９）変更制御部１１７は、更新したボリューム管理テーブル１１３ａを全てのＣＭに送信する。そして、処理を終了する。
【０１９０】
なお、ステップＳ２２の判定では、ローカルキャッシュの容量と閾値とが比較されてもよい。この容量とは、ステップＳ２４で判定されるようにローカルキャッシュの割り当て先ＣＭを変更したと仮定した場合に、割り当て変更先のＣＭにおいて１つのローカルキャッシュに割り当てられるＲＡＭの最少容量である。例えば、前述の状態１においてＣＥ２００のバッテリ２４０が故障した場合を考える。ここで、ローカルキャッシュＬＣ２の割り当て先をＣＭ２１０からＣＭ１１０に変更した場合、ＣＭ１１０においてローカルキャッシュＬＣ２に割り当てられるＲＡＭの容量は、割り当て変更前よりも小さくなる。ステップＳ２２では、このようにＣＭ１１０においてローカルキャッシュＬＣ２に割り当てられるＲＡＭの容量と、閾値とが比較される。
【０１９１】
容量が閾値以下の場合、ＬＵのアクセスのために使用可能なローカルキャッシュの容量が小さく、効率的なアクセス制御を行うことができないと推定される。また、容量が閾値以下の場合には、ＣＭがアクセス制御を担当するＬＵの数が多すぎるため、ＬＵ当たりのアクセス速度が著しく低いとも推定される。そこで、ステップＳ２２の判定では、容量が閾値以下の場合、ステップＳ２８の処理が実行され、容量が閾値より大きい場合、ステップＳ２３の処理が実行されてもよい。
【０１９２】
また、他の例として、ステップＳ２２の判定では、１つのＣＭがアクセス制御を担当するＬＵの数と閾値とが比較されてもよい。このＬＵの数とは、ステップＳ２４で判定されるようにローカルキャッシュの割り当て先ＣＭを変更したと仮定した場合に、割り当て変更先のＣＭがそのＣＭ内のローカルキャッシュを用いてアクセス制御を実行するＬＵの最大数である。この例でも、ＬＵの数が閾値以上の場合、ＬＵ当たりのアクセス速度が著しく低いと推定される。そこで、ステップＳ２２の判定では、ＬＵの数が閾値以上の場合、ステップＳ２８の処理が実行され、ＬＵの数が閾値より少ない場合、ステップＳ２３の処理が実行されてもよい。
【０１９３】
ローカルキャッシュの数と閾値とを比較する場合、あるいはＬＵの数と閾値とを比較する場合には、ステップＳ２２でこのような判定を行う前に、ステップＳ２４の処理を実行して、割り当てが変更された後の状態を指示制御部１１６が認識できるように、図１８の処理が変形される。
【０１９４】
図１９は、運用切り替え処理の例を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。図１９に示す処理はステップＳ２８の処理に対応する。
【０１９５】
（Ｓ３１）指示制御部１１６は、ローカルキャッシュと物理記憶領域とを同期させるＣＭを特定する。指示制御部１１６は、まず、バッテリの異常が検出されたＣＥに含まれるＣＭを、同期させるＣＭとして特定する。ＣＭ１１０の指示制御部１１６はさらに、ボリューム管理テーブル１１３ａに基づいて、特定されたＣＭにローカルキャッシュのデータをミラーリングしているＣＭを、同期させるＣＭとして特定する。
【０１９６】
指示制御部１１６は、特定されたＣＭに対して、ローカルキャッシュに格納されているデータを同期させるように指示する同期指示を送信する。指示制御部１１６は、同期指示を送信したＣＭから完了通知を受信すると、処理をステップＳ３２に進める。なお、特定されたＣＭがマスタＣＭである場合、指示制御部１１６は、同期指示をＣＭ１１０内の変更制御部１１７に通知する。
【０１９７】
（Ｓ３２）指示制御部１１６は、ボリューム管理テーブル１１３ａに基づいて、ローカルキャッシュの割り当てをどのように変更するかを判定する。また、指示制御部１１６は、ミラーキャッシュの割り当てを変更するＣＭ（ミラーキャッシュが割り当てられなくなるＣＭ）を特定する。
【０１９８】
（Ｓ３３）指示制御部１１６は、ローカルキャッシュが新たに割り当てられるＣＭと、ミラーキャッシュが割り当てられなくなるＣＭに対して、割り当て変更指示を送信する。また、指示制御部１１６は、割り当てられているローカルキャッシュの割り当て先が他のＣＭに変更されるＣＭに対して、そのローカルキャッシュのデータを割り当て変更先のＣＭに転送する転送指示を送信する。また、指示制御部１１６は、転送指示を送信したＣＭに対して、転送指示対象のローカルキャッシュのデータを消去して、その割り当てを解除するように指示する。
【０１９９】
（Ｓ３４）指示制御部１１６は、運用方式をライトスルー運用に切り替えるＣＭを特定する。指示制御部１１６は、特定されたＣＭに対して、ライトスルー運用の開始指示を送信する。
【０２００】
（Ｓ３５）変更制御部１１７は、ボリューム管理テーブル１１３ａの現状に対応する項目を更新する。
ここで、１つのＣＭに多くのローカルキャッシュを割り当ててしまうことで、そのＣＭにアクセスが集中して負荷が大きくなることが考えられる。第２の実施の形態によれば、閾値を設け、１つのＣＭに多くのローカルキャッシュが割り当てられることを回避させている（ステップＳ２２のＹｅｓ）。そして、閾値以上になった場合、指示制御部１１６は、ＬＵの書き込み制御をライトスルー方式に切り替えさせる。これにより、１つのＣＭにアクセスが集中して負荷が大きくなることを回避することができる。
【０２０１】
図２０は、割り当て変更処理時における各ＣＭの処理の例を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。図２０では、例としてＣＭ１１０が行う処理として説明する。
【０２０２】
（Ｓ４１）変更制御部１１７は、マスタＣＭから同期指示を受信したか否かを判定する。受信した場合、処理をステップＳ４２に進める。受信していない場合、処理をステップＳ４３に進める。
【０２０３】
また、自ＣＭがマスタＣＭに設定されている場合、変更制御部１１７は、指示制御部１１６から同期指示の通知を受ける。指示制御部１１６から同期指示の通知を受けた場合には、処理をステップＳ４２に進める。
【０２０４】
（Ｓ４２）変更制御部１１７は、ローカルキャッシュに格納されているデータのうち、ローカルキャッシュに割り当てられた物理記憶領域（ＨＤＤ）に未格納のデータを、物理記憶領域に書き込む。書き込みが完了すると、変更制御部１１７は、マスタＣＭに同期完了通知を送信する。
【０２０５】
（Ｓ４３）変更制御部１１７は、マスタＣＭから割り当て変更指示を受信したか否かを判定する。受信した場合、処理をステップＳ４４に進める。受信していない場合、処理をステップＳ４５に進める。
【０２０６】
また、自ＣＭがマスタＣＭに設定されている場合、変更制御部１１７は、指示制御部１１６から割り当て変更指示の通知を受ける。指示制御部１１６から割り当て変更指示を受けた場合には、処理をステップＳ４４に進める。
【０２０７】
（Ｓ４４）変更制御部１１７は、割り当て変更指示によって新たに割り当てが指示されたローカルキャッシュまたはミラーキャッシュの領域を、ＲＡＭ上に確保する。これにより、新たなローカルキャッシュまたはミラーキャッシュが割り当てられる。変更制御部１１７は、割り当て処理を完了すると、完了通知をマスタＣＭに送信する。
【０２０８】
（Ｓ４５）変更制御部１１７は、マスタＣＭから転送指示を受信したか否かを判定する。受信した場合、処理をステップＳ４６に進める。受信していない場合、処理をステップＳ４７に進める。
【０２０９】
また、自ＣＭがマスタＣＭに設定されている場合、変更制御部１１７は、指示制御部１１６から転送指示の通知を受ける。指示制御部１１６から転送指示の通知を受けた場合には、処理をステップＳ４６に進める。
【０２１０】
（Ｓ４６）変更制御部１１７は、ローカルキャッシュに格納されているデータを転送指示が指定するＣＭに転送する。変更制御部１１７は、転送が正常に完了すると、完了通知をマスタＣＭに送信して、処理をステップＳ４７に進める。
【０２１１】
（Ｓ４７）変更制御部１１７は、他のＣＭから転送されたローカルキャッシュのデータを受信したか否かを判定する。受信した場合、処理をステップＳ４８に進める。受信していない場合、処理をステップＳ４９に進める。
【０２１２】
（Ｓ４８）変更制御部１１７は、ステップＳ４４で確保したローカルキャッシュ領域に、転送されたデータを格納する。
（Ｓ４９）変更制御部１１７は、マスタＣＭから、更新されたボリューム管理テーブル１１３ａの内容を受信する。変更制御部１１７は、受信した内容によって、自装置が保持するボリューム管理テーブル１１３ａの内容を更新する。そして、処理を終了する。
【０２１３】
図２１は、運用切り替え処理時における各ＣＭの処理例（その１）を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。図２１では、ＣＭ１１０が行う処理として説明する。
【０２１４】
（Ｓ５１）変更制御部１１７は、マスタＣＭから同期指示を受信したか否かを判定する。受信した場合、処理をステップＳ５２に進める。受信していない場合、処理をステップＳ５３に進める。
【０２１５】
また、自ＣＭがマスタＣＭに設定されている場合、変更制御部１１７は、指示制御部１１６から同期指示の通知を受ける。指示制御部１１６から同期指示の通知を受けた場合には、処理をステップＳ５２に進める。
【０２１６】
（Ｓ５２）変更制御部１１７は、ローカルキャッシュ領域１１１に格納されているデータのうち、ローカルキャッシュ領域１１１に割り当てられた物理記憶領域（ＨＤＤ）に未格納のデータを、物理記憶領域に書き込む。書き込みが完了すると、変更制御部１１７は、マスタＣＭに同期完了通知を送信する。
【０２１７】
（Ｓ５３）変更制御部１１７は、マスタＣＭから割り当て変更指示を受信したか否かを判定する。受信した場合、処理をステップＳ５４に進める。受信していない場合、処理をステップＳ５８に進める。
【０２１８】
また、自ＣＭがマスタＣＭに設定されている場合、変更制御部１１７は、指示制御部１１６から割り当て変更指示の通知を受ける。指示制御部１１６から割り当て変更指示を受けた場合には、ステップＳ５８に進める。
【０２１９】
（Ｓ５４）変更制御部１１７は、割り当て変更指示によりローカルキャッシュの新規割り当てが指示されたか否かを判定する。ローカルキャッシュの新規割り当てが指示された場合、処理をステップＳ５５に進める。ローカルキャッシュの新規割り当てが指示されていない場合、処理をステップＳ５６に進める。
【０２２０】
（Ｓ５５）変更制御部１１７は、割り当て変更指示によって新たに割り当てが指示されたローカルキャッシュの領域を、ＲＡＭ上に確保する。これにより、新たなローカルキャッシュが割り当てられる。変更制御部１１７は、割り当て処理を完了すると、完了通知をマスタＣＭに送信する。
【０２２１】
（Ｓ５６）変更制御部１１７は、割り当て変更指示によってミラーキャッシュの解除が指示されたか否かを判定する。ミラーキャッシュの解除が指示された場合、処理をステップＳ５７に進める。ミラーキャッシュの解除が指示されていない場合、処理をステップＳ５８に進める。
【０２２２】
（Ｓ５７）変更制御部１１７は、ミラーキャッシュに格納されているデータを消去し、ミラーキャッシュの割り当てを解除する。
（Ｓ５８）変更制御部１１７は、マスタＣＭから転送指示を受信したか否かを判定する。受信した場合、処理をステップＳ５９に進める。受信していない場合、処理をステップＳ６３に進める。
【０２２３】
また、自ＣＭがマスタＣＭに設定されている場合、変更制御部１１７は、指示制御部１１６から転送指示の通知を受ける。指示制御部１１６から転送指示の通知を受けた場合には、処理をステップＳ５９に進める。
【０２２４】
（Ｓ５９）変更制御部１１７は、ローカルキャッシュに格納されているデータを転送指示が指定するＣＭに転送する。変更制御部１１７は、転送が正常に完了すると、完了通知をマスタＣＭに送信して、処理をステップＳ６１に進める。
【０２２５】
図２２は、運用切り替え処理時における各ＣＭの処理例（その２）を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。
（Ｓ６１）変更制御部１１７は、ローカルキャッシュの割り当てを解除するように指示する割り当て変更指示を、マスタＣＭから受信したか否かを判定する。受信した場合、処理をステップＳ６２に進める。受信していない場合、処理をステップＳ６３に進める。
【０２２６】
また、自ＣＭがマスタＣＭに設定されている場合、変更制御部１１７は、指示制御部１１６から割り当て変更指示の通知を受ける。指示制御部１１６から割り当て変更指示を受けた場合には、処理をステップＳ６２に進める。
【０２２７】
（Ｓ６２）変更制御部１１７は、ローカルキャッシュに格納されているデータを消去し、ローカルキャッシュの割り当てを解除する。
（Ｓ６３）変更制御部１１７は、他のＣＭから転送されたデータを受信したか否かを判定する。受信した場合、処理をステップＳ６４に進める。受信していない場合、処理をステップＳ６５に進める。
【０２２８】
（Ｓ６４）変更制御部１１７は、ステップＳ５５でＲＡＭに確保したローカルキャッシュの領域に、転送されたデータを格納する。
（Ｓ６５）変更制御部１１７は、ライトスルー運用の開始指示を受信したか否かを判定する。受信した場合、処理をステップＳ６６に進める。受信していない場合、処理をステップＳ６７に進める。
【０２２９】
また、自ＣＭがマスタＣＭに設定されている場合、変更制御部１１７は、指示制御部１１６からライトスルー運用の開始指示の通知を受ける。変更制御部１１７は、指示制御部１１６から開始指示を受けた場合には、処理をステップＳ６６に進める。
【０２３０】
（Ｓ６６）アクセス制御部１１４は、運用方式をライトバック運用からライトスルー運用に切り替え、ＬＵへのアクセス制御を開始する。このとき、アクセス制御部１１４は、ＬＵの書き込みをライトスルー方式で制御する。
【０２３１】
（Ｓ６７）変更制御部１１７は、マスタＣＭから、更新されたボリューム管理テーブル１１３ａの内容を受信する。変更制御部１１７は、受信した内容によって、自装置が保持するボリューム管理テーブル１１３ａの内容を更新する。そして、処理を終了する。
【０２３２】
次に、異常が発生したバッテリが正常なバッテリに交換され、異常が発生しているバッテリの数が閾値未満になった場合を説明する。
図２３は、異常バッテリの数が閾値未満になった場合のマスタＣＭの処理例を示すフローチャートである。図２３では、マスタＣＭがＣＭ１１０に設定されているものとする。以下、図２３に示す処理をステップ番号に沿って説明する。
【０２３３】
（Ｓ７１）指示制御部１１６は、ＣＥ内マスタからバッテリ正常通知を受信する。バッテリ正常通知には、どのバッテリが正常であるかを示す情報が含まれている。
（Ｓ７２）指示制御部１１６は、バッテリが異常であるＣＥを１つ選択する。
【０２３４】
（Ｓ７３）指示制御部１１６は、ステップＳ７２で選択したＣＥのバッテリに新たに異常が発生したものとみなして、ステップＳ２４〜Ｓ２６，Ｓ２９の処理を実行する。
（Ｓ７４）指示制御部１１６は、バッテリが異常であるすべてのＣＥを選択したか否かを判定する。未選択のＣＥがある場合、処理をステップＳ７２に進め、次のＣＥを選択する。すべてのＣＥを選択済みの場合、処理を終了する。
【０２３５】
以上の処理により、バッテリが異常であるＣＥ内のＣＭには、ローカルキャッシュおよびミラーキャッシュが割り当てられない状態となる。
（Ｓ７５）指示制御部１１６は、ローカルキャッシュが割り当てられているＣＭに対して、ライトバック運用を開始するように指示する。
【０２３６】
次に、異常が発生しているバッテリの数が閾値未満の状態で、異常が発生しているいずれかのバッテリが正常なバッテリ交換された場合について説明する。
図２４は、正常なバッテリがさらに増えた場合のマスタＣＭの処理例を示すフローチャートである。図２４では、マスタＣＭがＣＭ１１０に設定されているものとする。以下、図２４に示す処理をステップ番号に沿って説明する。
【０２３７】
（Ｓ８１）指示制御部１１６は、ＣＥ内マスタからバッテリ正常通知を受信する。バッテリ正常通知には、どのバッテリが正常であるかを示す情報が含まれている。
（Ｓ８２）指示制御部１１６は、バッテリが交換されたＣＥ内のＣＭがサイクリックな配列に挿入されるように、構成管理テーブル１１３ｂを更新する。
【０２３８】
（Ｓ８３）指示制御部１１６は、ローカルキャッシュまたはミラーキャッシュの割り当てを変更するＬＵを特定する。具体的には、指示制御部１１６は、ステップＳ８２で更新された構成管理テーブル１１３ｂに基づいて、サイクリックな配列において、バッテリが交換されたＣＥ内のＣＭの後ろ側のＣＭと前側のＣＭとを特定する。指示制御部１１６は、ボリューム管理テーブル１１３ａにおいて、特定された後ろ側のＣＭおよび前側のＣＭが、それぞれローカルキャッシュおよびミラーキャッシュの割り当て先として登録されているＬＵを特定する。
【０２３９】
（Ｓ８４）指示制御部１１６は、ステップＳ８３で特定されたＬＵについて、ローカルキャッシュとミラーキャッシュのいずれかの割り当て先を変更する。例えば、指示制御部１１６は、ボリューム管理テーブル１１３ａに基づき、ローカルキャッシュの割り当て先ＣＭが初期状態と同じであるＬＵについては、ミラーキャッシュの割り当て先ＣＭを、ステップＳ８３で特定した前側のＣＭに変更する。また、指示制御部１１６は、ボリューム管理テーブル１１３ａに基づき、ミラーキャッシュの割り当て先ＣＭが初期状態と同じであるＬＵについては、ローカルキャッシュの割り当て先ＣＭを、ステップＳ８３で特定した後ろ側のＣＭに変更する。また、指示制御部１１６は、ボリューム管理テーブル１１３ａに基づき、ローカルキャッシュとミラーキャッシュのどちらの割り当て先ＣＭも初期状態と異なるＬＵについては、ローカルキャッシュの割り当て先ＣＭをステップＳ８３で特定した後ろ側のＣＭに変更するか、または、ミラーキャッシュの割り当て先ＣＭをステップＳ８３で特定した前側のＣＭに変更する。
【符号の説明】
【０２４０】
１０，２０，３０  制御装置
１１，２１，３１  メモリ
１１ａ，２１ａ  キャッシュ
２１ｂ，３１ｂ  ミラーキャッシュ
１２，２２  制御部
１３，２３，３３  バッテリ
４０  監視装置
５０  電源
６１，６２  記憶装置
Ｓ１，Ｓ２，Ｓ３  ステップ
【図１】
0006524889.tif 000002
【図２】
0006524889.tif 000003
【図３】
0006524889.tif 000004
【図４】
0006524889.tif 000005
【図５】
0006524889.tif 000006
【図６】
0006524889.tif 000007
【図７】
0006524889.tif 000008
【図８】
0006524889.tif 000009
【図９】
0006524889.tif 000010
【図１０】
0006524889.tif 000011
【図１１】
0006524889.tif 000012
【図１２】
0006524889.tif 000013
【図１３】
0006524889.tif 000014
【図１４】
0006524889.tif 000015
【図１５】
0006524889.tif 000016
【図１６】
0006524889.tif 000017
【図１７】
0006524889.tif 000018
【図１８】
0006524889.tif 000019
【図１９】
0006524889.tif 000020
【図２０】
0006524889.tif 000021
【図２１】
0006524889.tif 000022
【図２２】
0006524889.tif 000023
【図２３】
0006524889.tif 000024
【図２４】
0006524889.tif 000025