(57)【要約】【課題】停電時のバックアップ処理によるバッテリの放電量が抑制される可能性を高める。【解決手段】マスタ装置の制御部１３は、電源２が停電すると、ストレージ制御装置１０，２０，３０のそれぞれにおいて、キャッシュ領域１１ａ，２１ａ，３１ａにそれぞれ記憶されたダーティデータ全体を、不揮発性メモリ１２，２２，３２に格納するのではなく、それらのダーティデータの一部を、隣接するストレージ制御装置２０，３０，１０のミラーキャッシュ領域２１ｂ，３１ｂ，１１ｂからそれぞれ不揮発性メモリ２２，３２，１２に格納する。このとき、不揮発性メモリ１２，２２，３２への格納量の差が所定範囲内に収まるように、キャッシュ領域１１ａ，２１ａ，３１ａからの格納量とミラーキャッシュ領域２１ｂ，３１ｂ，１１ｂからの格納量との比率が決定される。【選択図】図１
2018010557.tif 000002
【特許請求の範囲】
【請求項１】
電源と、循環的に配列され、前記電源から供給される電力によって動作する複数のストレージ制御装置とを有し、
前記複数のストレージ制御装置のそれぞれは、
キャッシュ領域およびミラーキャッシュ領域を含む揮発性メモリと、
不揮発性メモリと、
前記キャッシュ領域のデータを、前記複数のストレージ制御装置の配列において所定方向側に隣接する他のストレージ制御装置の前記ミラーキャッシュ領域にミラーリングする制御部と、
前記電源の停電時に、前記揮発性メモリから前記不揮発性メモリへデータを格納するための電力を供給するバッテリと、
を有し、
前記複数のストレージ制御装置のうち、あらかじめ決められたマスタ装置の前記制御部は、
前記電源が停電すると、前記複数のストレージ制御装置のそれぞれにおいて、前記キャッシュ領域に記憶されたダーティデータを第１のデータと第２のデータとに分類し、前記キャッシュ領域に記憶された前記第１のデータを第１のバックアップデータに指定するとともに、前記所定方向側に隣接する前記他のストレージ制御装置の前記ミラーキャッシュ領域に記憶された、前記第２のデータのミラーデータを第２のバックアップデータに指定し、前記分類では、前記複数のストレージ制御装置のそれぞれにおいて、前記キャッシュ領域に指定された前記第１のバックアップデータと前記ミラーキャッシュ領域に指定された前記第２のバックアップデータとの合計データ量の差が所定範囲内に収まるように、前記複数のストレージ制御装置のそれぞれにおける前記第１のデータと前記第２のデータとのデータ量の比率を決定し、
前記複数のストレージ制御装置のそれぞれにおいて、前記第１のバックアップデータと前記第２のバックアップデータとが前記不揮発性メモリに格納されるように制御する、
ストレージシステム。
【請求項２】
前記マスタ装置の前記制御部は、前記電源が停電したとき、
前記複数のストレージ制御装置のそれぞれにおいて、前記第１のバックアップデータと前記第２のバックアップデータとが前記不揮発性メモリに格納されるように制御する第１の制御処理と、
前記複数のストレージ制御装置のそれぞれにおける前記キャッシュ領域のダーティデータのデータ量が均等になるように、前記複数のストレージ制御装置のそれぞれの前記キャッシュ領域間でダーティデータを移動させ、移動後における前記複数のストレージ制御装置のそれぞれにおける前記キャッシュ領域のダーティデータが前記不揮発性メモリに格納されるように制御する第２の制御処理とを、
前記複数のストレージ制御装置のそれぞれについての前記合計データ量に基づいて、選択的に実行する、
請求項１記載のストレージシステム。
【請求項３】
前記マスタ装置の前記制御部は、前記複数のストレージ制御装置のそれぞれについての前記合計データ量の差が、前記複数のストレージ制御装置のそれぞれにおける前記キャッシュ領域のダーティデータの平均データ量に基づく閾値範囲内に収まるように、前記比率を決定できたか否かの判定結果に基づいて、前記第１の制御処理と前記第２の制御処理とを選択的に実行する、
請求項２記載のストレージシステム。
【請求項４】
前記電源からの電力供給が再開されると、前記複数のストレージ制御装置のそれぞれにおいて、前記制御部は、前記不揮発性メモリに格納されたダーティデータを読み出し、読み出したダーティデータを所定の記憶装置にライトバックするための復旧処理を実行し、前記復旧処理が完了し、かつ、前記電源からの電力による前記バッテリの充電が完了すると、前記キャッシュ領域を用いた前記所定の記憶装置に対するライトバック方式による書き込み制御を開始する、
請求項１乃至３のいずれか１項に記載のストレージシステム。
【請求項５】
循環的に配列され、電源から供給される電力によって動作する複数のストレージ制御装置を管理する管理装置であって、前記複数のストレージ制御装置のそれぞれは、キャッシュ領域およびミラーキャッシュ領域を含む揮発性メモリと、不揮発性メモリと、前記キャッシュ領域のデータを、前記複数のストレージ制御装置の配列において所定方向側に隣接する他のストレージ制御装置の前記ミラーキャッシュ領域にミラーリングする制御部と、前記電源の停電時に、前記揮発性メモリから前記不揮発性メモリへデータを格納するための電力を供給するバッテリと、を有する、管理装置において、
前記電源が停電すると、前記複数のストレージ制御装置のそれぞれにおいて、前記キャッシュ領域に記憶されたダーティデータを第１のデータと第２のデータとに分類し、前記キャッシュ領域に記憶された前記第１のデータを第１のバックアップデータに指定するとともに、前記所定方向側に隣接する前記他のストレージ制御装置の前記ミラーキャッシュ領域に記憶された、前記第２のデータのミラーデータを第２のバックアップデータに指定し、前記分類では、前記複数のストレージ制御装置のそれぞれにおいて、前記キャッシュ領域に指定された前記第１のバックアップデータと前記ミラーキャッシュ領域に指定された前記第２のバックアップデータとの合計データ量の差が所定範囲内に収まるように、前記複数のストレージ制御装置のそれぞれにおける前記第１のデータと前記第２のデータとのデータ量の比率を決定し、
前記複数のストレージ制御装置のそれぞれにおいて、前記第１のバックアップデータと前記第２のバックアップデータとが前記不揮発性メモリに格納されるように制御する、バックアップ制御部、
を有する管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムおよび管理装置に関する。
【背景技術】
【０００２】
一般的に、ストレージ制御装置は、ホスト装置からの要求に応じた記憶装置へのアクセスを、キャッシュを用いて制御する。また、キャッシュを用いた書き込み制御にライトバック方式が用いられる場合、キャッシュ内のデータのうち、記憶装置に格納されていない「ダーティデータ」について、ストレージ制御装置の意図しない停止時に損失を防ぐための措置が必要となる。
【０００３】
複数のストレージ制御装置を備えたストレージシステムでは、例えば、あるストレージ制御装置のキャッシュのデータを他のストレージ制御装置のメモリに二重化することで、上記のようなダーティデータの損失を防止できる。このようなストレージシステムの一例として、各ストレージ制御装置がローカルキャッシュとミラーキャッシュを有し、あるストレージ制御装置のローカルキャッシュが隣接するストレージ制御装置のミラーキャッシュと二重化されて、キャッシュがサイクリックに二重化されたシステムが提案されている。
【０００４】
また、ダーティデータの保護に関する他の技術として、複数の制御モジュールを備える次のようなストレージシステムが提案されている。このストレージシステムでは、第１の制御モジュール内の第１のキャッシュメモリに記憶されている１以上のダーティデータ要素が、第２の制御モジュール内の第２のキャッシュメモリにコピーされる。また、第２のキャッシュメモリに記憶された１以上のダーティデータ要素が、不揮発性の記憶資源にバックアップされる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２００４／１１４１１５号
【特許文献２】特開２００９−０４８５４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上記のようにキャッシュがサイクリックに二重化されたストレージシステムには、停電発生時にキャッシュ内のダーティデータを不揮発性記憶装置にバックアップするための電力を供給するバッテリが搭載されている場合がある。以下、ストレージ制御装置ごとにこのようなバッテリが１台ずつ搭載されているものとする。
【０００７】
キャッシュ内のダーティデータのデータ量は、ストレージ制御装置ごとに異なる。このため、停電発生後にキャッシュ内のすべてのダーティデータがバックアップされるまでにかかる時間は、ストレージ制御装置ごとに異なる。そして、バッテリの放電量はバックアップ時間に依存することから、ダーティデータのバックアップが完了した時点でのバッテリの残量も、ストレージ制御装置ごとに異なる。
【０００８】
また、電源供給が再開されると、各ストレージ制御装置は、不揮発性記憶装置にバックアップされたデータを、バックエンドの記憶装置にライトバックするか、またはキャッシュに書き戻す。さらに、各ストレージ制御装置は、バッテリが満充電になった後、キャッシュを用いた記憶装置へのアクセス制御処理を再開する。これは、再開後にキャッシュ内のダーティデータを再度バックアップできるようにするためである。
【０００９】
ここで、上記のように、ダーティデータのバックアップ完了時点でのバッテリの残量がストレージ制御装置ごとに異なる場合には、復電後にバッテリが満充電になるまでの時間もストレージ制御装置ごとに異なる。このため、復電後にすべてのストレージ制御装置がアクセス制御処理を再開できるまでの時間は、バックアップ完了時点で残量が最も少ないバッテリが満充電になるまでの時間となる。
【００１０】
すなわち、最も多くのダーティデータを有するストレージ制御装置におけるバックアップ時間が、システム全体のバックアップ時間を決定付ける。そして、このバックアップ時間が、復電後にシステム全体としてアクセス制御処理を再開できるまでの時間に影響を与える。したがって、ダーティデータの格納量が多く、停電時のバックアップ処理が長くなるストレージ制御装置があると、復電後にシステム全体としてアクセス制御処理を再開できるまでの時間が長くなってしまうという問題がある。
【００１１】
１つの側面では、本発明は、停電時のバックアップ処理によるバッテリの放電量が抑制される可能性を高めたストレージシステムおよび管理装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
１つの案では、電源と、循環的に配列され、電源から供給される電力によって動作する複数のストレージ制御装置とを有するストレージシステムが提供される。このストレージシステムにおいて、複数のストレージ制御装置のそれぞれは、キャッシュ領域およびミラーキャッシュ領域を含む揮発性メモリと、不揮発性メモリと、キャッシュ領域のデータを、複数のストレージ制御装置の配列において所定方向側に隣接する他のストレージ制御装置のミラーキャッシュ領域にミラーリングする制御部と、電源の停電時に、揮発性メモリから不揮発性メモリへデータを格納するための電力を供給するバッテリと、を有する。
【００１３】
また、複数のストレージ制御装置のうち、あらかじめ決められたマスタ装置の制御部は、電源が停電すると、複数のストレージ制御装置のそれぞれにおいて、キャッシュ領域に記憶されたダーティデータを第１のデータと第２のデータとに分類し、キャッシュ領域に記憶された第１のデータを第１のバックアップデータに指定するとともに、所定方向側に隣接する他のストレージ制御装置のミラーキャッシュ領域に記憶された、第２のデータのミラーデータを第２のバックアップデータに指定し、分類では、複数のストレージ制御装置のそれぞれにおいて、キャッシュ領域に指定された第１のバックアップデータとミラーキャッシュ領域に指定された第２のバックアップデータとの合計データ量の差が所定範囲内に収まるように、複数のストレージ制御装置のそれぞれにおける第１のデータと第２のデータとのデータ量の比率を決定する。そして、マスタ装置の制御部は、複数のストレージ制御装置のそれぞれにおいて、第１のバックアップデータと第２のバックアップデータとが不揮発性メモリに格納されるように制御する。
【００１４】
また、１つの案では、上記のマスタ装置と同様の処理を実行する管理装置が提供される。
【発明の効果】
【００１５】
１つの側面では、停電時のバックアップ処理によるバッテリの放電量が抑制される可能性を高めることができる。
【図面の簡単な説明】
【００１６】
【図１】第１の実施の形態に係るストレージシステムの構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ＣＭのハードウェア構成例を示す図である。
【図４】キャッシュ領域とそのミラーリング先との関係を示す図である。
【図５】キャッシュ領域に格納されたダーティデータのサイズ比率の例を示す図である。
【図６】停電時および復電時におけるバッテリ残量の推移の例を示す図である。
【図７】ＣＭが備える処理機能の構成例を示す図である。
【図８】第１の平準化方法を用いた場合のバックアップ対象の設定例を示す図である。
【図９】停電時および復電時におけるバッテリ残量の推移の例を示す図である。
【図１０】各キャッシュ領域におけるバックアップ対象のデータ量の計算方法を示す図である。
【図１１】第２の平準化方法を用いた場合のバックアップ対象の設定例を示す図である。
【図１２】停電時および復電時におけるバッテリ残量の推移の例を示す図である。
【図１３】バックアップメモリに格納されるデータの構成例を示す図である。
【図１４】マスタＣＭによるバックアップ処理手順の例を示すフローチャート（その１）である。
【図１５】マスタＣＭによるバックアップ処理手順の例を示すフローチャート（その２）である。
【図１６】復電時のＣＭの復旧処理手順の例を示すフローチャート（その１）である。
【図１７】復電時のＣＭの復旧処理手順の例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るストレージシステムの構成例および処理例を示す図である。図１に示すストレージシステム１は、電源２と、電源２から供給される電力によって動作するストレージ制御装置１０，２０，３０とを有する。また、ストレージ制御装置１０，２０，３０は、循環的に配列されている。図１の例では、ストレージ制御装置１０、ストレージ制御装置２０、ストレージ制御装置３０、ストレージ制御装置１０、・・・という順に配列されている。なお、ストレージ制御装置の数は、２以上の任意の数とすることができる。
【００１８】
ストレージ制御装置１０は、図示しない記憶装置に対するアクセスを制御する制御装置である。同様に、ストレージ制御装置２０は、図示しない記憶装置に対するアクセスを制御する制御装置であり、ストレージ制御装置３０は、図示しない記憶装置に対するアクセスを制御する制御装置である。ストレージ制御装置１０，２０，３０のアクセス制御対象の記憶装置は、共通であってもよいし、それぞれ異なってもよい。
【００１９】
ストレージ制御装置１０は、揮発性メモリ１１と、不揮発性メモリ１２と、制御部１３と、バッテリ１４とを有する。ストレージ制御装置２０は、揮発性メモリ２１と、不揮発性メモリ２２と、制御部２３と、バッテリ２４とを有する。ストレージ制御装置３０は、揮発性メモリ３１と、不揮発性メモリ３２と、制御部３３と、バッテリ３４とを有する。ストレージ制御装置１０，２０，３０は同じ構成を有するので、ここでは代表してストレージ制御装置１０の構成について説明する。
【００２０】
揮発性メモリ１１は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）として実現される。揮発性メモリ１１は、キャッシュ領域１１ａとミラーキャッシュ領域１１ｂとを含む。キャッシュ領域１１ａは、ストレージ制御装置１０が記憶装置に対するアクセスを制御する際のキャッシュとして利用される。ミラーキャッシュ領域１１ｂには、他のストレージ制御装置が備えるキャッシュ領域（図１の例ではストレージ制御装置３０のキャッシュ領域３１ａ）のデータがミラーリングされる。
【００２１】
不揮発性メモリ１２は、例えば、フラッシュメモリとして実現される。不揮発性メモリ１２は、電源２が停電したときのデータのバックアップ領域として利用される。
制御部１３は、例えば、プロセッサとして実現される。制御部１３は、キャッシュ領域１１ａのデータを、ストレージ制御装置１０，２０，３０の配列において所定方向に隣接する他のストレージ制御装置のミラーキャッシュ領域にミラーリングする。図１の例では、ミラーリング先は、ストレージ制御装置２０のミラーキャッシュ領域２１ｂとなる。
【００２２】
バッテリ１４は、電源２の停電時に、揮発性メモリ１１から不揮発性メモリ１２へデータを格納するための電力を供給する。
ここで、ストレージシステム１では、あるストレージ制御装置のキャッシュ領域が、上記の配列において所定方向に隣接する他のストレージ制御装置のミラーキャッシュ領域にミラーリングされる。具体的には、ストレージ制御装置１０のキャッシュ領域１１ａのデータは、ストレージ制御装置２０のミラーキャッシュ領域２１ｂにミラーリングされる。ストレージ制御装置２０のキャッシュ領域２１ａのデータは、ストレージ制御装置３０のミラーキャッシュ領域３１ｂにミラーリングされる。ストレージ制御装置３０のキャッシュ領域３１ａのデータは、ストレージ制御装置１０のミラーキャッシュ領域１１ｂにミラーリングされる。
【００２３】
このようなミラーリングにより、上記配列において隣接する２つのストレージ制御装置の一方が故障した場合でも、キャッシュ領域とこれに対応するミラーキャッシュ領域のいずれかのデータが消去されずに残る。そして、他方のストレージ制御装置は、残ったデータを用いて記憶装置へのアクセス制御を引き継ぐことができる。
【００２４】
ところで、ストレージ制御装置１０，２０，３０のうちの１つは、停電時にマスタ装置として動作するように設定されている。ここでは、ストレージ制御装置１０がマスタ装置であるものとして説明する。ストレージ制御装置１０の制御部１３は、電源２が停電したとき、キャッシュ領域のダーティデータをバックアップするための次のような処理を実行する。
【００２５】
制御部１３は、ストレージ制御装置１０，２０，３０のそれぞれにおいて、キャッシュ領域に記憶されたダーティデータを第１のデータと第２のデータとに分類する。例えば、キャッシュ領域１１ａに記憶されたダーティデータは、第１のデータ１１ａ１と第２のデータ１１ａ２に分類される。キャッシュ領域２１ａに記憶されたダーティデータは、第１のデータ２１ａ１と第２のデータ２１ａ２に分類される。キャッシュ領域３１ａに記憶されたダーティデータは、第１のデータ３１ａ１と第２のデータ３１ａ２に分類される。
【００２６】
制御部１３は、ストレージ制御装置１０，２０，３０のそれぞれにおいて、キャッシュ領域に記憶された第１のデータを第１のバックアップデータに指定するとともに、上記配列の所定方向側に隣接する他のストレージ制御装置のミラーキャッシュ領域に記憶された、第２のデータのミラーデータを第２のバックアップデータに指定する。
【００２７】
具体的には、ストレージ制御装置１０のキャッシュ領域１１ａに記憶された第１のデータ１１ａ１が、第１のバックアップデータに指定される。これとともに、隣接するストレージ制御装置２０のミラーキャッシュ領域２１ｂに記憶された、第２のデータ１１ａ２に対応するミラーデータ２１ｂ２が、第２のデータ１１ａ２の代わりに第２のバックアップデータに指定される。
【００２８】
同様に、ストレージ制御装置２０のキャッシュ領域２１ａに記憶された第１のデータ２１ａ１が、第１のバックアップデータに指定される。これとともに、隣接するストレージ制御装置３０のミラーキャッシュ領域３１ｂに記憶された、第２のデータ２１ａ２に対応するミラーデータ３１ｂ２が、第２のデータ２１ａ２の代わりに第２のバックアップデータに指定される。
【００２９】
同様に、ストレージ制御装置３０のキャッシュ領域３１ａに記憶された第１のデータ３１ａ１が、第１のバックアップデータに指定される。これとともに、隣接するストレージ制御装置１０のミラーキャッシュ領域１１ｂに記憶された、第２のデータ３１ａ２に対応するミラーデータ１１ｂ２が、第２のデータ３１ａ２の代わりに第２のバックアップデータに指定される。
【００３０】
ここで、第１のデータと第２のデータとの分類処理では、次のようにしてストレージ制御装置ごとの第１のデータと第２のデータとのデータ量の比率が決定される。制御部１３は、ストレージ制御装置１０，２０，３０のそれぞれにおいて、キャッシュ領域に指定された第１のバックアップデータとミラーキャッシュ領域に指定された第２のバックアップデータとの合計データ量の差が所定範囲内に収まるように、各ストレージ制御装置での第１のデータと第２のデータとの比率が決定される。
【００３１】
具体的には、ストレージ制御装置１０については、第１のバックアップデータに指定された第１のデータ１１ａ１と、第２のバックアップデータに指定されたミラーデータ１１ｂ２との第１の合計データ量が算出される。ストレージ制御装置２０については、第１のバックアップデータに指定された第１のデータ２１ａ１と、第２のバックアップデータに指定されたミラーデータ２１ｂ２との第２の合計データ量が算出される。ストレージ制御装置３０については、第１のバックアップデータに指定された第１のデータ３１ａ１と、第２のバックアップデータに指定されたミラーデータ３１ｂ２との第３の合計データ量が算出される。そして、第１の合計データ量と第２の合計データ量と第３の合計データ量のそれぞれの差の最大値が所定範囲内に収まるように、次の比率が決定される。この比率とは、ストレージ制御装置１０における第１のデータ１１ａ１と第２のデータ１１ａ２との比率と、ストレージ制御装置２０における第１のデータ２１ａ１と第２のデータ２１ａ２との比率と、ストレージ制御装置３０における第１のデータ３１ａ１と第２のデータ３１ａ２との比率である。
【００３２】
その後、制御部１３は、ストレージ制御装置１０，２０，３０のそれぞれにおいて、第１のバックアップデータと第２のバックアップデータとが不揮発性メモリに格納されるように制御する。この制御により、ストレージ制御装置１０では、第１のバックアップデータに指定された第１のデータ１１ａ１と、第２のバックアップデータに指定されたミラーデータ１１ｂ２とが、不揮発性メモリ１２に格納される。ストレージ制御装置２０では、第１のバックアップデータに指定された第１のデータ２１ａ１と、第２のバックアップデータに指定されたミラーデータ２１ｂ２とが、不揮発性メモリ２２に格納される。ストレージ制御装置３０では、第１のバックアップデータに指定された第１のデータ３１ａ１と、第２のバックアップデータに指定されたミラーデータ３１ｂ２とが、不揮発性メモリ３２に格納される。
【００３３】
上記のような比率の計算により、不揮発性メモリ１２，２２，３２にそれぞれ格納されるデータ量は、ほぼ均等になる。このため、キャッシュ領域１１ａ，２１ａ，３１ａに記憶されたダーティデータを、それぞれ不揮発性メモリ１２，２２，３２に格納する場合と比較して、不揮発性メモリに格納されるデータ量の最大値が抑制される。図１の例では、キャッシュ領域１１ａ，２１ａ，３１ａのうち、キャッシュ領域１１ａに最も多くのダーティデータが格納されている。このケースでは、キャッシュ領域１１ａ内のすべてのダーティデータを不揮発性メモリ１２に格納する場合のデータ量より、制御部１３による上記制御によって格納処理が行われた場合に不揮発性メモリへ格納されるデータ量の最大値の方が小さくなる。
【００３４】
不揮発性メモリに格納されるデータ量は、その格納時間と比例関係にあり、これはさらに、バッテリの放電時間とも比例関係にある。キャッシュ領域１１ａ，２１ａ，３１ａに記憶されたダーティデータを、それぞれ不揮発性メモリ１２，２２，３２に格納した場合には、ストレージ制御装置１０のバッテリ１４の放電量が最も多くなる。しかし、キャッシュ領域１１ａ内のすべてのダーティデータを不揮発性メモリ１２に格納する場合より、制御部１３による上記制御によって格納処理が行われる方が、ストレージ制御装置１０のバッテリ１４の放電量が抑制される。
【００３５】
すなわち、停電時の制御部１３の制御により、バッテリ１４，２４，３４の最大放電量が抑制される可能性を高めることができる。その結果、電源２からの電力供給が再開されてバッテリ１４，２４，３４の充電が開始されてから、それらのすべての充電が完了するまでの時間が短縮される可能性を高めることができる。バッテリ１４，２４，３４のすべての充電が完了するまでの時間が短縮されることで、ストレージ制御装置１０，２０，３０のすべてがライトバック方式で記憶装置へのアクセス制御を再開するまでの時間が短縮される。
【００３６】
〔第２の実施の形態〕
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。ストレージシステムは、ＣＥ（Controller Enclosure）１００，２００，３００と、ＤＥ（Device Enclosure）４１０，４２０，４３０と、スイッチ５００と、ホスト装置６００とを含む。なお、ＣＥ１００，２００，３００は、図１に示したストレージ制御装置１０，２０，３０の一例である。
【００３７】
ＣＥ１００は、ＣＭ（Controller Module）１１０，１２０と、ＰＳＵ（Power Supply Unit）１３０と、バッテリ１４０とを有する。ＣＥ２００は、ＣＭ２１０，２２０と、ＰＳＵ２３０と、バッテリ２４０とを有する。ＣＥ３００は、ＣＭ３１０，３２０と、ＰＳＵ３３０と、バッテリ３４０とを有する。
【００３８】
ＣＭ１１０，１２０，２１０，２２０，３１０，３２０には、ホスト装置６００が接続されている。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０とホスト装置６００とは、例えば、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）を介して接続される。なお、図２では例として１台のホスト装置６００がＣＭ１１０，１２０，２１０，２２０，３１０，３２０に接続されているが、例えば、複数台のホスト装置のそれぞれが１台以上のＣＭに接続されてもよい。
【００３９】
ＤＥ４１０，４２０，４３０のそれぞれには、ホスト装置６００からのアクセス対象となる複数台の記憶装置が搭載されている。本実施の形態では例として、ＤＥ４１０，４２０，４３０は、記憶装置としてＨＤＤ（Hard Disk Drive）を備えたディスクアレイ装置である。なお、ＤＥ４１０，４２０，４３０に搭載される記憶装置は、ＳＳＤ（Solid State Drive）などの他の種類の記憶装置であってもよい。
【００４０】
ＣＭ１１０，１２０には、ＤＥ４１０が接続されている。ＣＭ１１０，１２０は、それぞれキャッシュ領域を実装するメモリを有し、ホスト装置６００からの要求に応じて、ＤＥ４１０に搭載されたＨＤＤに対するアクセスを、それぞれに実装されたキャッシュ領域を用いて制御する。ＣＭ２１０，２２０には、ＤＥ４２０が接続されている。ＣＭ２１０，２２０は、それぞれキャッシュ領域を実装するメモリを有し、ホスト装置６００からの要求に応じて、ＤＥ４２０に搭載されたＨＤＤに対するアクセスを、それぞれに実装されたキャッシュ領域を用いて制御する。ＣＭ３１０，３２０には、ＤＥ４３０が接続されている。ＣＭ３１０，３２０は、それぞれキャッシュ領域を実装するメモリを有し、ホスト装置６００からの要求に応じて、ＤＥ４３０に搭載されたＨＤＤに対するアクセスを、それぞれに実装されたキャッシュ領域を用いて制御する。
【００４１】
なお、ＣＥ１００とＤＥ４１０とは、例えば、１つの筐体に搭載されるストレージ装置として実現される。ＣＥ２００とＤＥ４２０、および、ＣＥ３００とＤＥ４３０についても同様である。図２のストレージシステムは、このようなストレージ装置をスケールアウトした構成となっている。
【００４２】
また、ストレージシステムに含まれるＣＥの数は３台に限定されるものではなく、各ＣＥに含まれるＣＭの数も２台に限定されるものではない。例えば、ストレージシステムには、それぞれ２台のＣＭを備えるＤＥが１２台含まれてもよい。また、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０のそれぞれは、ホスト装置６００からの要求に応じて、他のＣＭに接続されたＤＥ内のＨＤＤに対するアクセスを制御してもよい。
【００４３】
ＰＳＵ１３０は、外部からの電力の供給を受けて、ＣＥ１００内の各部に電力を供給する。バッテリ１４０は、ＰＳＵ１３０への外部からの電力供給が途絶えた停電時に、ＣＭ１１０，１２０に対して電力を供給する。バッテリ１４０は、ＣＭ１１０，１２０に対して、停電時にＣＭ１１０，１２０が実行するバックアップ処理に必要な電力を供給する。このバックアップ処理とは、キャッシュ領域に格納されたダーティデータを不揮発性の記憶装置に退避する処理である。
【００４４】
ＰＳＵ２３０は、外部からの電力の供給を受けて、ＣＥ２００内の各部に電力を供給する。バッテリ２４０は、停電時において、ＣＭ２１０，２２０が実行するバックアップ処理に必要な電力を供給する。ＰＳＵ３３０は、外部からの電力の供給を受けて、ＣＥ３００内の各部に電力を供給する。バッテリ３４０は、停電時において、ＣＭ３１０，３２０が実行するバックアップ処理に必要な電力を供給する。
【００４５】
なお、ＰＳＵ１３０，２３０，３３０は、図１に示した電源２の一例である。
スイッチ５００は、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０と接続し、ＣＭ間で伝送される信号を中継する。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０は、スイッチ５００を介して相互に通信を行うことができる。
【００４６】
次に、ＣＭ１１０，１２０，２１０，２２０，３１０，３３０のハードウェア構成を、ＣＭ１１０の場合で説明する。
図３は、ＣＭのハードウェア構成例を示す図である。ここでは例として、ＣＭ１１０について説明する。
【００４７】
ＣＭ１１０は、プロセッサ１０１と、ＲＡＭ１０２と、ＳＳＤ１０３と、バックアップメモリ１０４と、ＣＡ（Channel Adapter）１０５と、ＤＩ（Device Interface）１０６と、ＣＭインタフェース１０７とを有する。
【００４８】
プロセッサ１０１は、ＣＭ１１０の情報処理を制御する。プロセッサ１０１は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。
ＲＡＭ１０２は、ＣＭ１１０の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。また、ＲＡＭ１０２の所定の領域にキャッシュが実装される。
【００４９】
ＳＳＤ１０３は、ＣＭ１１０の補助記憶装置である。ＳＳＤ１０３は、不揮発性の半導体メモリである。ＳＳＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ＣＭ１１０は、補助記憶装置として、ＳＳＤ１０３の代わりにＨＤＤを備えていてもよい。
【００５０】
バックアップメモリ１０４は、不揮発性の半導体メモリである。バックアップメモリ１０４には、停電発生時にＲＡＭ１０２に格納されているデータの一部が保存される。
ＣＡ１０５は、ホスト装置６００と通信するためのインタフェースである。ＤＩ１０６は、ＤＥ４１０と通信するためのインタフェースである。ＤＩ１０６は、例えば、ＳＡＳ（Serial Attached SCSI）インタフェースとして実装される。
【００５１】
ＣＭインタフェース１０７は、スイッチ５００を介して他のＣＭと通信するためのインタフェースである。ＣＭインタフェース１０７は、例えば、ＰＣＩｅ（Peripheral Component Interconnect express）バスのインタフェース回路である。また、ＣＭインタフェース１０７には、ＲＡＭ１０２と他のＣＭのＲＡＭとの間のデータ転送をプロセッサ１０１の介在なしに実行するＤＭＡ（Direct Memory Access）コントローラが実装されている。
【００５２】
なお、ＣＭ１２０，２１０，２２０，３１０，３２０もＣＭ１１０と同様のハードウェア構成により実現できる。
図４は、キャッシュ領域とそのミラーリング先との関係を示す図である。本実施の形態のストレージシステムでは、ＣＭとホスト装置６００との間のデータの読み書きはＬＵ（Logical Unit）と呼ばれる論理記憶領域を単位として行われる。ストレージシステム内には複数のＬＵが設定され、各ＬＵにはそのＬＵに対するホスト装置６００からのアクセスを制御するＣＭが割り当てられる。ＣＭは、自装置に割り当てられたＬＵに対するアクセスを、自装置内のＲＡＭに確保したキャッシュ領域を用いて制御する。ＲＡＭには、キャッシュ領域がＬＵ毎に確保される。
【００５３】
図４では、説明を簡単にするために、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０はそれぞれ、ホスト装置６００からのアクセス要求に応じて、１つの論理ボリュームに対するアクセスを制御するものとする。この場合、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０の各ＲＡＭには、１つのキャッシュ領域（後述するローカルキャッシュ）が確保される。
【００５４】
あるＣＭがアクセス制御を担当するＬＵに対応する物理記憶領域は、ＤＥ４１０，４２０，４３０に搭載された１台以上のＨＤＤによって実現される。最も簡単な例では、あるＣＭがアクセス制御を担当するＬＵに対応する物理領域は、そのＣＭに接続されたＤＥ内の１台以上のＨＤＤによって実現される。例えば、ＣＭ１１０がアクセス制御を担当するＬＵに対応する物理記憶領域として、ＤＥ４１０内の１台以上のＨＤＤが割り当てられる。また、通常、１つのＬＵには複数のＨＤＤが割り当てられ、それらのＨＤＤに対するデータの読み書きがＲＡＩＤ（Redundant Arrays of Inexpensive Disks）によって制御される。
【００５５】
図４に示すように、ＣＭ１１０では、ＲＡＭ１０２に確保された記憶領域に、ローカルキャッシュ１１１とミラーキャッシュ１１２とが実装される。ＣＭ１２０では、ＣＭ１２０が有するＲＡＭに確保された記憶領域に、ローカルキャッシュ１２１とミラーキャッシュ１２２とが実装される。ＣＭ２１０では、ＣＭ２１０が有するＲＡＭに確保された記憶領域に、ローカルキャッシュ２１１とミラーキャッシュ２１２とが実装される。ＣＭ２２０では、ＣＭ２２０が有するＲＡＭに確保された記憶領域に、ローカルキャッシュ２２１とミラーキャッシュ２２２とが実装される。ＣＭ３１０では、ＣＭ３１０が有するＲＡＭに確保された記憶領域に、ローカルキャッシュ３１１とミラーキャッシュ３１２とが実装される。ＣＭ３２０では、ＣＭ３２０が有するＲＡＭに確保された記憶領域に、ローカルキャッシュ３２１とミラーキャッシュ３２２とが実装される。
【００５６】
ローカルキャッシュは、対応するＣＭが、ホスト装置６００からの要求に応じて当該ＣＭが担当するＬＵにアクセスする際に、キャッシュ領域として用いられる。例えば、ＣＭ１１０は、ホスト装置６００からの要求に応じたＬＵへのアクセスを、ローカルキャッシュ１１１をキャッシュ領域として用いて制御する。また、ＣＭ２１０は、ホスト装置６００からの要求に応じたＬＵへのアクセスを、ローカルキャッシュ２１１をキャッシュ領域として用いて制御する。
【００５７】
ミラーキャッシュには、他のローカルキャッシュのミラーデータが格納される。例えば、ＣＭ１１０は、ローカルキャッシュ１１１に格納されたデータを、ＣＭ２１０のミラーキャッシュ２１２にミラーリングする。ＣＭ２１０は、ローカルキャッシュ２１１に格納されたデータを、ＣＭ３１０のミラーキャッシュ３１２にミラーリングする。ＣＭ３１０は、ローカルキャッシュ３１１に格納されたデータを、ＣＭ１２０のミラーキャッシュ１２２にミラーリングする。ＣＭ１２０は、ローカルキャッシュ１２１に格納されたデータを、ＣＭ２２０のミラーキャッシュ２２２にミラーリングする。ＣＭ２２０は、ローカルキャッシュ２２１に格納されたデータを、ＣＭ３２０のミラーキャッシュ３２２にミラーリングする。ＣＭ３２０は、ローカルキャッシュ３２１に格納されたデータを、ＣＭ１１０のミラーキャッシュ１１２にミラーリングする。
【００５８】
このように、あるＣＭのローカルキャッシュは、隣接するＣＥ内のＣＭにサイクリックにミラーリングされる。このとき、あるＣＭのローカルキャッシュは、必ず、そのＣＭが搭載されたＣＥとは異なるＣＥ内のＣＭにミラーリングされる。このような構成により、ＣＥ単位で動作が停止した場合でも、どのＬＵに対応するキャッシュのデータについても元データとミラーデータの少なくとも一方が消失せずに維持される。
【００５９】
例えば、ＣＭ１１０のローカルキャッシュ１１１がＣＭ１２０のミラーキャッシュ１２２にミラーリングされたと仮定する。この構成で、ＣＥ１００の動作が停止した場合、ローカルキャッシュ１１１に格納されたデータと、ミラーキャッシュ１２２に格納されたそのミラーデータの両方が消失してしまう。これに対して、図４の例では、ＣＭ１１０のローカルキャッシュ１１１がＣＭ２１０のミラーキャッシュ２１２にミラーリングされている。このため、ＣＥ１００の動作が停止したとしても、ミラーキャッシュ２１２のミラーデータが確実に残り、逆にＣＥ２００の動作が停止したとしても、ローカルキャッシュ１１１の元データが確実に残る。
【００６０】
このように、ＣＥ単位で動作が停止した場合には、ローカルキャッシュとミラーキャッシュのどちらかのデータが消去されずに残る。一方、停電によって全ＣＥの動作が停止すると、ローカルキャッシュとミラーキャッシュのどちらのデータも失われてしまう。このような事態を防止するために、各ＣＭはキャッシュのデータをバックアップするための不揮発性のバックアップメモリ（図３のバックアップメモリ１０４に対応）を備えている。停電発生時には、バッテリから供給される電力により、キャッシュ領域内のダーティデータがバックアップメモリに格納される。例えば、ＣＭ１１０は、バッテリ１４０からの供給電力により、ＲＡＭ１０２に確保されたキャッシュ領域内のダーティデータをバックアップメモリ１０４に格納する。
【００６１】
ここで、図５、図６を用いて、キャッシュ領域のデータのバックアップに関する問題点を説明する。
図５は、キャッシュ領域に格納されたダーティデータのサイズ比率の例を示す図である。なお、図５においては、あるＣＥのローカルキャッシュとは、そのＣＥ内の各ＣＭのローカルキャッシュ全体を指し、あるＣＥのミラーキャッシュとは、そのＣＥ内の各ＣＭのミラーキャッシュ全体を指す。また、各ＣＭのローカルキャッシュおよびミラーキャッシュの容量は同じであるものとする。
【００６２】
図５の例では、ＣＥ１００のローカルキャッシュには、最大容量の９０％のダーティデータが格納されている。ＣＥ２００のローカルキャッシュには、最大容量の５０％のダーティデータが格納されている。ＣＥ３００のローカルキャッシュには、最大容量の３０％のダーティデータが格納されている。この場合、ＣＥ１００，２００，３００のミラーキャッシュには、それぞれ最大容量の３０％、９０％、５０％のダーティデータが格納されている。
【００６３】
ここで、図５の状態で停電が発生したとき、ＣＥ１００，２００，３００のそれぞれにおいて、ローカルキャッシュ内のダーティデータがバックアップメモリにバックアップされるものとする。この場合、ＣＥ１００，２００，３００では、それぞれ最大容量の９０％、５０％、３０％のダーティデータが、対応するバックアップメモリに格納される。
【００６４】
図６は、停電時および復電時におけるバッテリ残量の推移の例を示す図である。この図６では、図５の状態からタイミングＴ１１で停電が発生したときに、ＣＥ１００，２００，３００のそれぞれにおいて、ローカルキャッシュ内のダーティデータがバックアップメモリに格納されるケースを示している。各バックアップメモリへの書き込み速度が同じとすると、バックアップメモリへのダーティデータの格納にかかる時間（バックアップ時間）は、ダーティデータのデータ量に比例する。図６の例では、ダーティデータのバックアップ時間は長い順にＣＥ１００、ＣＥ２００、ＣＥ３００となり、タイミングＴ１２においてＣＥ１００でのバックアップ処理が完了する。
【００６５】
ここで、各ＣＥが備えるバッテリの放電量は、各ＣＥでのバックアップ時間にほぼ比例する。このため、バックアップ処理による各ＣＥのバッテリの残量は、少ない順にＣＥ１００、ＣＥ２００、ＣＥ３００となる。
【００６６】
なお、各ＣＥは２つのＣＭを備えており、ＣＥ内の各ＣＭが並行してバックアップ処理を実行する。このため、図６に示すバックアップ処理時のバッテリ充電率の推移は、実際の推移とは必ずしも一致しない。しかし、ＣＥ内のバッテリの放電量は、ＣＥ内の各ＣＭでのバックアップ処理時間の和に比例するので、バックアップ処理完了時における各ＣＥのバッテリの残量に関しては、図６に記載の通りである。この点は、後述する図９、図１２についても同様である。
【００６７】
次に、タイミングＴ１３で復電すると、各ＣＥは、バックアップメモリからダーティデータを読み出し、キャッシュ領域またはバックエンドの記憶装置に書き込む復旧処理を開始する。これとともに、各ＣＥでは、ＰＳＵからの電力によってバッテリが充電される。バックアップ処理完了時における上記のようなバッテリの残量の違いから、バッテリが満充電になるまでの時間はＣＥごとに異なる。図６に示すように、まずタイミングＴ１４でＣＥ３００のバッテリが満充電になり、次にタイミングＴ１５でＣＥ２００のバッテリが満充電になり、最後にタイミングＴ１６でＣＥ１００のバッテリが満充電になる。すなわち、復電からバッテリが満充電になるまでの時間は、ダーティデータのバックアップ量が最も多いＣＥ１００において最も長くなる。
【００６８】
ここで、各ＣＥは、上記の復旧処理が完了し、さらにバッテリが満充電になると、ホスト装置６００からの要求に応じたＬＵへのアクセス制御処理を再開する。このアクセス制御処理では、ライトバック方式が用いられる。このため、バッテリが満充電になった後にアクセス制御処理が再開されることで、ＣＥは、再開後にキャッシュ内のダーティデータを再度バックアップできるようになる。
【００６９】
図６の例のように、バックアップ処理完了時におけるバッテリの残量がＣＥごとに異なる場合には、復電からシステム全体としてアクセス制御処理が開始されるまでの時間Ｌ１は、バックアップデータ量が最も大きいＣＥでの充電時間によって決まる。このため、ＣＥごとのダーティデータの格納量にバラツキがあり、ダーティデータの格納量が多いＣＥがあると、復電後にシステム全体としてアクセス制御処理を再開できるまでの時間Ｌ１が長くなってしまうという問題がある。
【００７０】
このような問題に対して、第２の実施の形態に係るストレージシステムでは、停電が発生したとき、各ＣＥでのダーティデータのバックアップメモリへの格納量が平準化されるように、バックアップ処理が制御される。これにより、各ＣＥでのダーティデータのバックアップ量の最大値が減少する可能性を高め、その結果として、復電後にシステム全体としてアクセス制御処理を再開できるまでの時間が短縮される可能性を高める。
【００７１】
この制御では、第１の平準化方法と第２の平準化方法とが選択的に用いられる。第１の平準化方法は、ローカルキャッシュとこれに対応するミラーキャッシュとが別のＣＥに存在することに着目した方法である。この方法では、あるＣＥのローカルキャッシュ内のダーティデータの一部を、隣接するＣＥのミラーキャッシュからそのＣＥのバックアップメモリに格納するようにして、各ＣＥでのバックアップメモリへのバックアップ量を平準化する。一方、第２の平準化方法は、ローカルキャッシュ間でダーティデータを移動させることで、各ＣＥでのバックアップメモリへのバックアップ量を平準化するものである。
【００７２】
以下、第２の実施の形態のＣＥ１００，２００，３００について詳しく説明する。
図７は、ＣＭが備える処理機能の構成例を示す図である。本実施の形態では、停電時および復電時の処理に関して、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０のうち、１台がマスタとして動作し、それ以外はスレーブとして動作する。以下の説明では例として、ＣＭ１１０がマスタであり、ＣＭ１２０，２１０，２２０，３１０，３２０がスレーブであるものとする。なお、以下の説明では、ＣＭ１１０を「マスタＣＭ」、ＣＭ１２０，２１０，２２０，３１０，３２０を「スレーブＣＭ」と記載する場合がある。
【００７３】
ＣＭ１１０は、アクセス制御部１１３と、バックアップ制御部１１４と、復旧制御部１１５とを有する。アクセス制御部１１３、バックアップ制御部１１４および復旧制御部１１５の処理は、例えば、ＣＭ１１０が備えるプロセッサ１０１が所定のアプリケーションプログラムを実行することで実現される。
【００７４】
アクセス制御部１１３は、ローカルキャッシュ１１１をキャッシュとして利用しながら、ホスト装置６００からの要求に応じて所定のＬＵに対するアクセスを制御する。また、アクセス制御部１１３は、ローカルキャッシュ１１１に格納したデータをＣＭ２１０のミラーキャッシュ２１２にミラーリングする。
【００７５】
ここで、アクセス制御部１１３は、ＬＵに対する書き込みをライトバック方式で制御する。ホスト装置６００からＬＵに対する書き込みが要求された場合、アクセス制御部１１３は、書き込みデータをローカルキャッシュ１１１とミラーキャッシュ２１２とに格納した後、ホスト装置６００に書き込み完了の応答を行う。そして、アクセス制御部１１３は、その後の所定のタイミングで、ローカルキャッシュ１１１に書き込んだ書き込みデータを、ＬＵに対応する物理記憶領域にライトバックする。
【００７６】
なお、図示しないが、ＣＭ１１０の記憶部（例えば、ＳＳＤ１０３）には、ＬＵの識別情報（ＬＵＮ：Logical Unit Number）と、ローカルキャッシュおよびミラーキャッシュの割り当て先ＣＭを示す情報とが対応付けられた管理情報が記憶されている。ローカルキャッシュの割り当て先ＣＭは、そのローカルキャッシュを用いて対応するＬＵへのアクセス制御を行う担当ＣＭを示す。アクセス制御部１１３は、この管理情報に基づいて、ＣＭ１１０がアクセス制御を担当するＬＵや、ミラーキャッシュがどのＣＭに割り当てられているかを判定する。また、この管理情報は、ローカルキャッシュと対応するミラーキャッシュとの位置関係によって生じるサイクリックなＣＭ（またはＣＥ）の配列を定義する定義情報としての役割も果たす。
【００７７】
バックアップ制御部１１４は、マスタとしての処理機能である。バックアップ制御部１１４は、停電が発生したとき、ローカルキャッシュ１１１に格納されたダーティデータを保護するためのバックアップ処理の実行を制御する。具体的には、バックアップ制御部１１４は、停電が発生すると、すべてのＣＭからローカルキャッシュ内のダーティデータのデータ量を収集する。バックアップ制御部１１４は、収集されたデータ量に基づいて、前述の第１の平準化方法と第２の平準化方法のどちらを利用する方がＣＭごとのバックアップ量を小さくできるかを判定する。バックアップ制御部１１４は、この判定結果に基づき、いずれかの方法を用いたバックアップ処理の実行を制御する。
【００７８】
第１の平準化方法が利用される場合、バックアップ制御部１１４は、ローカルキャッシュやミラーキャッシュのどの領域のダーティデータをバックアップ対象とするかを、各スレーブＣＭに通知して、バックアップメモリへの格納を指示する。これとともに、バックアップ制御部１１４は、ＣＭ１１０のローカルキャッシュ１１１およびミラーキャッシュ１１２におけるバックアップ対象のダーティデータを、バックアップメモリ１０４に格納する。
【００７９】
第２の平準化方法が利用される場合、バックアップ制御部１１４は、ローカルキャッシュ間でのデータ移動を実行させる。データ移動の完了後、バックアップ制御部１１４は、ローカルキャッシュのどの領域のダーティデータをバックアップ対象とするかを、各スレーブＣＭに通知して、バックアップメモリへの格納を指示する。これとともに、バックアップ制御部１１４は、ＣＭ１１０のローカルキャッシュ１１１におけるバックアップ対象のダーティデータを、バックアップメモリ１０４に格納する。
【００８０】
復旧制御部１１５は、バックアップメモリ１０４にバックアップされたダーティデータを読み出し、読み出されたダーティデータを所定の記憶装置にライトバックするための処理を実行する。この処理では、復旧制御部１１５は、読み出したダーティデータのうち、ＣＭ１１０が担当するＬＵのデータをこのＬＵに対応するバックエンド側の記憶装置に格納する。また、復旧制御部１１５は、読み出したダーティデータのうち、他のＣＭが担当するＬＵのデータを、他のＣＭに送信する。さらに、復旧制御部１１５は、ＣＭ１１０が担当するＬＵのダーティデータのうち、他のＣＭのバックアップメモリにバックアップされたデータを、他のＣＭから受信し、このＬＵに対応するバックエンド側の記憶装置に格納する。
【００８１】
ＣＭ１２０は、アクセス制御部１２３と、バックアップ制御部１２４と、復旧制御部１２５とを有する。アクセス制御部１２３、バックアップ制御部１２４および復旧制御部１２５の処理は、例えば、ＣＭ１２０が備えるプロセッサが所定のアプリケーションプログラムを実行することで実現される。
【００８２】
アクセス制御部１２３および復旧制御部１２５は、アクセス制御部１１３および復旧制御部１１５と同様の処理を実行するので、ここでは説明を省略する。
バックアップ制御部１２４は、スレーブとしての処理機能である。バックアップ制御部１２４は、停電が発生したとき、マスタＣＭからの指示に応じて、ローカルキャッシュ１２１に格納されたダーティデータのデータ量を判別可能な情報を、マスタＣＭに送信する。その後、バックアップ制御部１２４は、マスタＣＭからの指示に応じて、ローカルキャッシュ１２１やミラーキャッシュ１２２から指定されたダーティデータを読み出し、ＣＭ１２０のバックアップメモリに格納する。また、第２の平準化方法が利用される場合には、バックアップ制御部１２４は、バックアップメモリへのデータの格納の前に、ローカルキャッシュ１２１から他のＣＭへのダーティデータの送信や、他のＣＭからのダーティデータの受信を行う。
【００８３】
なお、図示しないが、スレーブとして動作するＣＭ２１０，２２０，３１０，３２０は、ＣＭ１２０と同様の処理機能を有する。
次に、図８〜図１０を用いて、第１の平準化方法について説明する。
【００８４】
図８は、第１の平準化方法を用いた場合のバックアップ対象の設定例を示す図である。この図８では、図５のように各ローカルキャッシュおよび各ミラーキャッシュにダーティデータが格納されていた場合を想定する。
【００８５】
なお、以下の説明では、ダーティデータのデータ量を、便宜的にローカルキャッシュおよびミラーキャッシュの最大容量に対する割合（％）を用いて示す。例えば、ローカルキャッシュに最大容量の９０％のダーティデータが格納されている場合、ローカルキャッシュにデータ量「９０」のダーティデータが格納されている、と記載する。
【００８６】
第１の平準化方法では、あるＣＥのローカルキャッシュ内のダーティデータの一部を、隣接するＣＥのミラーキャッシュからそのＣＥのバックアップメモリに格納するようにして、各ＣＥでのバックアップメモリへのバックアップ量を平準化する。図８の例では、ＣＥ１００のローカルキャッシュに格納されているデータ量「９０」のダーティデータのうち、データ量「３０」のダーティデータは、ＣＥ２００のローカルキャッシュからＣＥ２００のバックアップメモリにバックアップされる。また、ＣＥ２００のローカルキャッシュに格納されているデータ量「５０」のダーティデータのうち、データ量「２０」のダーティデータは、ＣＥ３００のローカルキャッシュからＣＥ３００のバックアップメモリにバックアップされる。ＣＥ３００のローカルキャッシュに格納されているデータ量「３０」のダーティデータについては、その全量がＣＥ３００のバックアップメモリにバックアップされる。
【００８７】
このようなバックアップ処理が行われることで、ＣＥ１００，２００，３００のそれぞれにおけるバックアップメモリへのバックアップ量は、「６０」、「６０」、「５０」となり、それぞれが略均等な値となる。また、ＣＥ１００では、ローカルキャッシュ内のダーティデータをすべてＣＥ１００のバックアップメモリにバックアップした場合より、バックアップ量が２／３に低減される。
【００８８】
図９は、停電時および復電時におけるバッテリ残量の推移の例を示す図である。この図９では、図８のようにバックアップ対象が設定された場合を想定する。なお、説明を簡単にするために、バックアップメモリに対する書き込みによるバッテリの放電だけに注目している。
【００８９】
タイミングＴ１１で停電が発生した後、図８に示したようにダーティデータがバックアップされる。この場合、図６のタイミングＴ１２より早いタイミングＴ１１ａにおいて、ＣＥ１００，２００，３００のすべてにおいてバックアップ処理が完了する。したがって、バックアップ処理完了時でのＣＥ１００，２００，３００の各バッテリの残量は、最小でも４０％となり、１０％である図６の場合より明らかに多くなる。
【００９０】
そして、タイミングＴ１３で復電し、ＣＥ１００，２００，３００の各バッテリの充電が開始されると、タイミングＴ１３ａでＣＥ３００のバッテリが満充電になり、タイミングＴ１３ｂでＣＥ１００，２００の各バッテリが満充電になる。上記のように、バックアップ処理完了時におけるバッテリ残量の最小値が図６の場合より大きいことから、復電からすべてのバッテリが満充電になるタイミングＴ１３ｂまでの時間Ｌ２は、図６の場合の時間Ｌ１より短くなる。したがって、復電からすべてのＣＭがライトバック方式でのアクセス制御を開始できるまでの時間、すなわちシステム全体の復旧時間を短縮することができる。
【００９１】
図１０は、各キャッシュ領域におけるバックアップ対象のデータ量の計算方法を示す図である。第１の平準化方法を用いる場合、各キャッシュ領域におけるバックアップ対象のデータ量は次のような方法で計算される。
【００９２】
ＣＥ１００，２００，３００の各ローカルキャッシュに格納されたダーティデータのデータ量を、それぞれ「ａ」、「ｂ」、「ｃ」とする。この場合、ＣＥ１００，２００，３００の各ミラーキャッシュに格納されたダーティデータのデータ量は、それぞれ「ｃ」、「ａ」、「ｂ」となる。また、ＣＥ１００のローカルキャッシュのダーティデータのうち、バックアップ対象データの比率をαとする。ＣＥ２００のローカルキャッシュのダーティデータのうち、バックアップ対象データの比率をβとする。ＣＥ３００のローカルキャッシュのダーティデータのうち、バックアップ対象データの比率をγとする。ただし、α，β，γは、いずれも０以上１以下の値をとる。
【００９３】
この場合、マスタＣＭは、「α・ａ＋ｃ・（１−γ）」と、「β・ｂ＋ａ・（１−α）」と、「γ・ｃ＋ｂ・（１−β）」とがほぼ一致する（例えば、これらの差が一定範囲内に収まる）ようなα，β，γの解を求める。実際には、「α・ａ＋ｃ・（１−γ）」と、「β・ｂ＋ａ・（１−α）」と、「γ・ｃ＋ｂ・（１−β）」とが、ダーティデータの平均データ量である「（ａ＋ｂ＋ｃ）／３」とほぼ等しくなるような解を求めることで、より適切な解の組み合わせが得られる。
【００９４】
そして、得られたα，β，γを用いて、次のようにダーティデータがバックアップされる。ＣＥ１００では、ローカルキャッシュのデータ量「α・ａ」のダーティデータと、ミラーキャッシュのデータ量「ｃ・（１−γ）」のダーティデータとが、ＣＥ１００のバックアップメモリに格納される。ＣＥ２００では、ローカルキャッシュのデータ量「β・ｂ」のダーティデータと、ミラーキャッシュのデータ量「ａ・（１−α）」のダーティデータとが、ＣＥ２００のバックアップメモリに格納される。ＣＥ３００では、ローカルキャッシュのデータ量「γ・ｃ」のダーティデータと、ミラーキャッシュのデータ量「ｂ・（１−β）」のダーティデータとが、ＣＥ３００のバックアップメモリに格納される。
【００９５】
なお、ＣＥ内のローカルキャッシュまたはミラーキャッシュからの上記のバックアップ量は、そのＣＥ内の各ＣＭのローカルキャッシュまたはミラーキャッシュからのバックアップ量の総量となる。１つのＣＥ内の各ＣＭのローカルキャッシュまたはミラーキャッシュからのバックアップ量の比率は、任意に決定されればよい。例えば、ＣＥ１００のローカルキャッシュからデータ量「α・ａ」のダーティデータをバックアップする場合、ＣＭ１１０のローカルキャッシュ１１１からダーティデータを優先的にバックアップし、バックアップ量がデータ量「α・ａ」に達していない場合に、ＣＭ１２０のローカルキャッシュ１２１からダーティデータをさらにバックアップしてもよい。
【００９６】
また、以上の第１の平準化方法は、第２の平準化方法を用いた場合よりバックアップ処理時間が短くなると判定された場合にのみ、利用される。また、データ量「ａ」、「ｂ」、「ｃ」の値によっては、上記の計算方法でα，β，γの有効な解（例えば、０以上となる解）が得られない場合もあり、この場合にも第２の平準化方法が利用される。
【００９７】
次に、図１１、図１２を用いて、第２の平準化方法について説明する。
図１１は、第２の平準化方法を用いた場合のバックアップ対象の設定例を示す図である。第２の平準化方法では、各ＣＥのローカルキャッシュ間でダーティデータを移動させることで、各ＣＥでのバックアップメモリへのバックアップ量が平準化される。例えば、図１１の左側のようにＣＥ１００，２００，３００のローカルキャッシュおよびミラーキャッシュにダーティデータが格納されているとする。この場合、あるＣＥのローカルキャッシュから、各ローカルキャッシュ内のダーティデータの平均データ量を超える分のダーティデータが、ダーティデータのデータ量が平均データ量に達していない他のＣＥのローカルキャッシュに移動される。なお、平均データ量は「（ａ＋ｂ＋ｃ）／３」と計算される。
【００９８】
図１１の例では、ＣＥ１００のローカルキャッシュのダーティデータのうち、平均データ量を超える分のダーティデータが、ＣＥ３００のローカルキャッシュに移動される。これとともに、ＣＥ２００のローカルキャッシュのダーティデータのうち、平均データ量を超える分のダーティデータも、ＣＥ３００のローカルキャッシュに移動される。そして、ＣＥ１００，２００，３００の各ローカルキャッシュから、平均データ量分のダーティデータが対応するバックアップメモリに格納される。これにより、ＣＥごとの最大バックアップ量が平均データ量まで抑制される。
【００９９】
図１２は、停電時および復電時におけるバッテリ残量の推移の例を示す図である。この図１２では、図１１の右側に示すようにローカルキャッシュのダーティデータが移動された場合を想定する。
【０１００】
タイミングＴ１１で停電が発生した後、図１１に示したようにデータ移動が行われ、ダーティデータがバックアップされる。この場合、図６のタイミングＴ１２より早いタイミングＴ１１ｂにおいて、ＣＥ１００，２００，３００のすべてにおいてバックアップ処理が完了する。したがって、バックアップ処理完了時でのＣＥ１００，２００，３００の各バッテリの残量は、最小でも３０％となる。この値は、図１１の左側に示す状態からＣＥ１００，２００の各ローカルキャッシュのダーティデータをバックアップメモリに格納した場合の１０％より、明らかに多い。
【０１０１】
そして、タイミングＴ１３で復電し、ＣＥ１００，２００，３００の各バッテリの充電が開始されると、タイミングＴ１３ｃでＣＥ１００，２００，３００のバッテリが満充電になる。復電からすべてのバッテリが満充電になるタイミングＴ１３ｃまでの時間は、図１１の左側に示す状態から各ローカルキャッシュのダーティデータをバックアップした場合より短くなる。したがって、復電からすべてのＣＭがライトバック方式でのアクセス制御を開始できるまでの時間、すなわちシステム全体の復旧時間を短縮することができる。
【０１０２】
図１３は、バックアップメモリに格納されるデータの構成例を示す図である。図１３では例として、ＣＭ１１０のバックアップメモリ１０４に格納されるデータの構成例を示す。
【０１０３】
本実施の形態では、キャッシュ領域は一定サイズのページに分割されて管理されている。各ページには、所定数のデータブロックを書き込むことが可能である。また、各ページには、ＣＢＥ（Cache Bandle Element）と呼ばれるページ管理情報が対応付けて記憶されている。ＣＢＥには、ページの識別番号、ページに含まれるデータブロックについてのＬＵＮおよびＬＢＡ（Logical Block Address）、各データブロックがダーティデータであるか否かを示すステータスフラグなどが登録される。なお、ＬＢＡは、ＬＵＮにおけるデータブロックの論理アドレスである。また、１つのページには同一のＬＵＮのデータブロックが格納される。
【０１０４】
マスタＣＭは、各スレーブＣＭおよびマスタＣＭ自身からＣＢＥを収集することで、各ローカルキャッシュ内のダーティデータのデータ量を算出する。マスタＣＭは、ステータスフラグがダーティデータであることを示すデータブロックが１つでも含まれるページのデータを、ダーティデータと判別する。したがって、マスタＣＭは、ダーティデータのデータ量をページ単位で算出する。そして、マスタＣＭは、ローカルキャッシュやミラーキャッシュにおけるバックアップ対象の領域を、ページ単位で指定する。
【０１０５】
図１３に示すように、バックアップメモリ１０４においては、例えば、ページデータ、ＣＢＥ、担当フラグおよびＣＭ  ＩＤが１つのセットとして格納される。ページデータは、ページに含まれるデータブロックである。なお、ページデータがバックアップメモリ１０４に格納されない場合もある。ＣＢＥは、ページデータが格納されていたページに対応するページ管理情報である。担当フラグは、ページデータが含まれるＬＵが、自装置（図１３ではＣＭ１１０）がアクセス制御を担当するＬＵであるか否かを示すフラグ情報である。ここでは、自装置が担当ＣＭである場合、担当フラグは「１」に設定され、他のＣＭが担当ＣＭである場合、担当フラグは「０」に設定されるものとする。ＣＭ  ＩＤは、ページデータがどのＣＭのキャッシュ領域に格納されていたものかを示すＣＭの識別番号である。
【０１０６】
例えば、ＣＭ１１０のローカルキャッシュ１１１からバックアップされたページデータについては、担当フラグは「１」に設定され、ＣＭ  ＩＤはＣＭ１１０を示す。この場合、復電後には、ページデータ内のダーティデータはＣＭ１１０によって対応する記憶装置にライトバックされる。
【０１０７】
また、ＣＭ１１０のミラーキャッシュ１１２からバックアップされたページデータについては、担当フラグは「０」に設定され、ＣＭ  ＩＤはＣＭ３２０を示す。この場合、復電後には、ページデータはＣＭ３２０に転送され、ページデータ内のダーティデータはＣＭ３２０によって対応する記憶装置にライトバックされる。
【０１０８】
また、他のＣＭからＣＭ１１０に移動された後にバックアップされたページデータについては、担当フラグは「０」に設定され、ＣＭ  ＩＤは移動元のＣＭを示す。この場合、復電後には、ページデータはＣＭ  ＩＤが示す他のＣＭに転送され、ページデータ内のダーティデータは、転送先のＣＭによって対応する記憶装置にライトバックされる。
【０１０９】
また、ＣＭ１１０のローカルキャッシュ１１１内のダーティデータを含むページデータのうち、他のＣＭにおいてバックアップされたページデータについては、バックアップメモリ１０４にはＣＢＥ、担当フラグおよびＣＭ  ＩＤだけが格納される。この場合、担当フラグは「１」に設定され、ＣＭ  ＩＤはＣＭ１１０を示す。このようにページデータが対応付けられていないＣＢＥは、復電後に、他のＣＭからＣＭ１１０に対して必要なページデータがすべて転送されたか否かの確認のために用いられる。
【０１１０】
次に、ＣＭの処理についてフローチャートを用いて説明する。
図１４、図１５は、マスタＣＭによるバックアップ処理手順の例を示すフローチャートである。マスタＣＭであるＣＭ１１０のバックアップ制御部１１４が、停電の発生を検知した場合に、図１４の処理が開始される。停電の発生は、例えば、電力供給元がＰＳＵ１３０からバッテリ１４０に切り替えられたことによって検知される。
【０１１１】
なお、図１４、図１５において、ステップＳ１６，Ｓ１７，Ｓ２１〜Ｓ２３は、第１の平準化方法の処理に対応し、ステップＳ１４，Ｓ１５，Ｓ２４，Ｓ２５は、第２の平準化方法の処理に対応する。
【０１１２】
［ステップＳ１１］バックアップ制御部１１４は、ＣＥ１００，２００，３００の各ローカルキャッシュに格納されたダーティデータのデータ量を収集する。具体的には、バックアップ制御部１１４は、各スレーブＣＭからＣＢＥをすべて収集する。また、ＣＭ１１０に登録されたＣＢＥもすべて収集する。バックアップ制御部１１４は、ＣＥごとに収集されたＣＢＥ内のステータスフラグに基づいて、ダーティデータ量を算出する。
【０１１３】
［ステップＳ１２］バックアップ制御部１１４は、ＣＥ１００，２００，３００の各ローカルキャッシュに格納されたダーティデータの平均データ量Ｈを計算する。前述のように、ＣＥ１００，２００，３００の各ローカルキャッシュに格納されたダーティデータのデータ量をそれぞれ「ａ」、「ｂ」、「ｃ」とすると、平均データ量Ｈは、「（ａ＋ｂ＋ｃ）／３」と計算される。
【０１１４】
［ステップＳ１３］バックアップ制御部１１４は、１つのＣＥにおいて平均データ量Ｈだけのダーティデータをバックアップした場合のバックアップ時間Ｔ0を計算する。ここで、ＲＡＭ１０２からバックアップメモリ１０４へのデータ転送速度をＳBMとすると、バックアップ時間Ｔ0は「Ｈ／ＳBM」として計算される。
【０１１５】
［ステップＳ１４］バックアップ制御部１１４は、第２の平準化方法を利用した場合におけるＣＥ間でのＤＭＡ転送にかかる転送時間ＴDMAを計算する。この処理では、バックアップ制御部１１４は、まず、ローカルキャッシュ内のダーティデータのデータ量が平均データ量Ｈ以上であるＣＥを選択する。バックアップ制御部１１４は、選択した各ＣＥにおけるローカルキャッシュ内のダーティデータについて、平均データ量Ｈを超える分のデータ量を算出し、各ＣＥについて算出されたデータ量を合計する。バックアップ制御部１１４は、データ量の合計値をＤＭＡ転送の転送速度で除算することで、転送時間ＴDMAを計算する。
【０１１６】
［ステップＳ１５］バックアップ制御部１１４は、第２の平準化方法を利用した場合の処理時間Ｔ2を計算する。処理時間Ｔ2は、「Ｔ0＋ＴDMA」と計算される。
［ステップＳ１６］バックアップ制御部１１４は、第１の平準化方法を利用した場合に用いる平準化閾値ＴＨを設定する。平準化閾値ＴＨは、「ＳBM・Ｔ2」と計算される。
【０１１７】
［ステップＳ１７］バックアップ制御部１１４は、第１の平準化方法を利用した場合のローカルキャッシュとミラーキャッシュのそれぞれからのバックアップ量の比率を計算する。この計算は、図１０に示したα，β，γを求める計算である。図１０の例のようにＣＥが３台の場合には、「α・ａ＋ｃ・（１−γ）」と、「β・ｂ＋ａ・（１−α）」と、「γ・ｃ＋ｂ・（１−β）」とが、平均データ量Ｈとほぼ等しくなる（例えば、平均データ量Ｈを中心とした一定範囲に収まる）ような解を求める。ここではこの条件に加えて、「α・ａ＋ｃ・（１−γ）」と、「β・ｂ＋ａ・（１−α）」と、「γ・ｃ＋ｂ・（１−β）」とが、ステップＳ１６で算出された平準化閾値ＴＨを超えないような解が求められる。
【０１１８】
この後、図１５のステップＳ２１の処理が実行される。
［ステップＳ２１］バックアップ制御部１１４は、ステップＳ１７で条件に合致する解を求めることができたかを判定する。解が求められた場合、すべてのＣＥにおいて第１の平準化方法を用いた方がバックアップ処理時間が短い（バッテリの放電量が少ない）と判断される。この場合、ステップＳ２２の処理が実行される。一方、解が求められなかった場合、第２の平準化方法を用いた方がバックアップ処理時間が短くなる（バッテリの放電量が少なくなる）ＣＥが存在すると判断される。この場合、ステップＳ２４の処理が実行される。
【０１１９】
［ステップＳ２２］バックアップ制御部１１４は、ステップＳ１７で条件に合致する解が複数組得られた場合には、それらの中からバックアップ処理時間が最小となる解の組を選択する。
【０１２０】
［ステップＳ２３］バックアップ制御部１１４は、求められた解に基づいて、各スレーブＣＭに対してローカルキャッシュおよびミラーキャッシュのそれぞれにおけるバックアップ対象領域を通知する。本実施の形態では、バックアップ対象領域はページ単位で指定される。また、バックアップ制御部１１４は、マスタのＣＭ１１０におけるバックアップ対象領域を、ＣＭ１１０のメモリ領域に設定する。
【０１２１】
［ステップＳ２４］バックアップ制御部１１４は、ＣＭ間のデータ転送を指示する。この処理では、ローカルキャッシュ内のダーティデータのデータ量が平均データ量Ｈを超えるＣＥ内の一方または両方のＣＭに対して、転送対象のページと転送先ＣＭとを通知する。なお、この通知先にはマスタのＣＭ１１０も含まれる。通知を受けたＣＭは、通知されたページのデータと対応するＣＢＥとを、通知された転送先ＣＭにＤＭＡ転送する。
【０１２２】
［ステップＳ２５］バックアップ制御部１１４は、各スレーブＣＭに対してローカルキャッシュにおけるバックアップ対象領域を通知する。ステップＳ２３と同様に、バックアップ対象領域はページ単位で指定される。また、バックアップ制御部１１４は、マスタのＣＭ１１０におけるバックアップ対象領域を、ＣＭ１１０のメモリ領域に設定する。
【０１２３】
［ステップＳ２６］バックアップ制御部１１４は、各スレーブＣＭに対してバックアップメモリへのバックアップを開始するように指示する。指示を受けたスレーブＣＭのバックアップ制御部は、例えば、次のようにしてバックアップを実行する。
【０１２４】
バックアップ制御部は、ステップＳ２３またはステップＳ２５で指定されたローカルキャッシュのページのページデータを、対応するＣＢＥ、担当フラグおよびＣＭ  ＩＤとともにバックアップメモリに格納する。担当フラグには「１」が設定され、ＣＭ  ＩＤにはこのスレーブＣＭを示すＩＤが設定される。
【０１２５】
また、バックアップ制御部は、このスレーブＣＭのローカルキャッシュのページの中からダーティデータを含むページを抽出する。バックアップ制御部は、ダーティデータを含むページのうち、ステップＳ２３またはステップＳ２５で指定されなかったページに対応するＣＢＥ、担当フラグおよびＣＭ  ＩＤを、バックアップメモリに格納する。担当フラグには「１」が設定され、ＣＭ  ＩＤにはこのスレーブＣＭを示すＩＤが設定される。このページについてはページデータはバックアップされず、格納された情報は、復電後において対応するページデータを他のＣＭから受信する際の受信確認のために利用される。
【０１２６】
また、バックアップ制御部は、ステップＳ２３でミラーキャッシュのページが指定された場合、そのページのページデータを、対応するＣＢＥ、担当フラグおよびＣＭ  ＩＤとともにバックアップメモリに格納する。担当フラグには「０」が設定され、ＣＭ  ＩＤにはミラーデータの元データが記憶されている隣接ＣＭのＩＤが設定される。
【０１２７】
また、バックアップ制御部は、ステップＳ２４で他のＣＭからページデータおよびＣＢＥを受信した場合には、受信したページデータおよびＣＢＥを担当フラグおよびＣＭ  ＩＤとともにバックアップメモリに格納する。担当フラグには「０」が設定され、ＣＭ  ＩＤにはページデータの送信元ＣＭのＩＤが設定される。
【０１２８】
また、マスタＣＭのバックアップ制御部１１４は、スレーブＣＭのバックアップ制御部と同様の手順で、ＣＭ１１０のバックアップメモリ１０４へのバックアップを実行する。
［ステップＳ２７］バックアップ制御部１１４は、すべてのＣＭでのバックアップ処理が完了するまで待機する。そして、バックアップ制御部１１４は、すべてのＣＭでのバックアップ処理が完了すると、処理を終了する。
【０１２９】
以上の図１４、図１５の処理によれば、第１の平準化方法と第２の平準化方法のどちらを用いた場合に、各ＣＥのバッテリの最大放電量を小さくできるかが判定される。そして、その判定結果に基づいて、適切な平準化方法を用いたバックアップ処理が実行される。これにより、各ＣＥのバッテリの最大放電量を可能な限り小さくすることができる。その結果、復電後にすべてのＣＥのバッテリが満充電になるまでの時間が短縮される可能性を高めることができ、システム全体を早期に復旧できる可能性を高めることができる。
【０１３０】
図１６、図１７は、復電時のＣＭの復旧処理手順の例を示すフローチャートである。なお、ここでは例として、ＣＭ１２０での復旧処理について説明する。ＣＭ１２０の復旧制御部１２５は、ＰＳＵ１３０からの電源供給が再開されてＣＭ１２０が起動すると、図１６の処理を開始する。
【０１３１】
［ステップＳ４１］復旧制御部１２５は、ＣＭ１２０のバックアップメモリに格納されたＣＢＥのうち、次の条件を満たすすべてのＣＢＥについて、ステップＳ４２，Ｓ４３の処理を実行する。この条件とは、対応する担当フラグが「１」であり、対応するＣＭ  ＩＤがＣＭ１２０を示し、対応するページデータがバックアップメモリに格納されていることである。
【０１３２】
［ステップＳ４２］復旧制御部１２５は、ＣＢＥに対応するページデータをバックアップメモリから読み出す。
［ステップＳ４３］復旧制御部１２５は、読み出したページデータ内のダーティデータを、所定の記憶装置にライトバックする。
【０１３３】
ステップＳ４１に記載の条件を満たすすべてのＣＢＥについてステップＳ４２，Ｓ４３の処理が実行されると、ステップＳ４４〜Ｓ４６の処理と、ステップＳ４７〜Ｓ４９の処理と、ステップＳ５０〜Ｓ５２の処理とが並行して実行される。
【０１３４】
［ステップＳ４４］復旧制御部１２５は、ＣＭ１２０のバックアップメモリに格納されたＣＢＥのうち、次の条件を満たすすべてのＣＢＥについて、ステップＳ４５，Ｓ４６の処理を実行する。この条件とは、対応する担当フラグが「０」であり、対応するＣＭ  ＩＤがＣＭ１２０以外の他のＣＭを示すことである。この条件を満たすＣＢＥが存在しない場合、ステップＳ４５，Ｓ４６はスキップされる。
【０１３５】
［ステップＳ４５］復旧制御部１２５は、ＣＢＥに対応するページデータをバックアップメモリから読み出す。なお、読み出したページデータは、第１の平準化方法を用いてミラーキャッシュからバックアップされたページデータ、または第２の平準化方法を用いて他のＣＭから転送されたページデータに相当する。
【０１３６】
［ステップＳ４６］復旧制御部１２５は、読み出したページデータと対応するＣＢＥとを、対応するＣＭ  ＩＤが示す他のＣＭにＤＭＡ転送する。
［ステップＳ４７］復旧制御部１２５は、ＣＭ１２０のバックアップメモリに格納されたＣＢＥのうち、次の条件を満たすすべてのＣＢＥについて、ステップＳ４８，Ｓ４９の処理を実行する。この条件とは、対応する担当フラグが「１」であり、対応するＣＭ  ＩＤがＣＭ１２０を示し、対応するページデータがＣＭ１２０のバックアップメモリに格納されていないことである。この条件を満たすＣＢＥが存在しない場合、ステップＳ４８，Ｓ４９はスキップされる。
【０１３７】
［ステップＳ４８］復旧制御部１２５は、他のＣＭからページデータおよびＣＢＥを受信する。なお、受信したページデータは、第１の平準化方法を用いて、隣接する他のＣＭにおいてミラーキャッシュからバックアップメモリにバックアップされたページデータに相当する。
【０１３８】
［ステップＳ４９］復旧制御部１２５は、受信したＣＢＥ内のＬＵＮおよびＬＢＡが、ステップＳ４７に記載の条件を満たすＣＢＥの１つに登録されたＬＵＮおよびＬＢＡと合致する場合に、受信したページデータを所定の記憶装置にライトバックする。
【０１３９】
［ステップＳ５０］復旧制御部１２５は、ＣＭ１２０のバックアップメモリに格納されたＣＢＥのうち、次の条件を満たすすべてのＣＢＥについて、ステップＳ５１，Ｓ５２の処理を実行する。この条件とは、対応する担当フラグが「１」であり、対応するＣＭ  ＩＤがＣＭ１２０以外の他のＣＭを示すことである。この条件を満たす場合、ＣＢＥに対応するページデータはＣＭ１２０のバックアップメモリには格納されていない。また、この条件を満たすＣＢＥが存在しない場合、ステップＳ５１，Ｓ５２はスキップされる。
【０１４０】
［ステップＳ５１］復旧制御部１２５は、他のＣＭからページデータおよびＣＢＥを受信する。なお、受信したページデータは、第２の平準化方法を用いて、ＣＭ１２０から他のＣＭに転送され、他のＣＭにおいてバックアップメモリにバックアップされたページデータに相当する。
【０１４１】
［ステップＳ５２］復旧制御部１２５は、受信したＣＢＥ内のＬＵＮおよびＬＢＡが、ステップＳ５０に記載の条件を満たすＣＢＥの１つに登録されたＬＵＮおよびＬＢＡと合致する場合に、受信したページデータを所定の記憶装置にライトバックする。
【０１４２】
［ステップＳ５３］復旧制御部１２５は、ＣＥ１００に搭載されたバッテリ１４０の充電が完了したか否かを判定する。充電が完了していない場合、一定時間後にステップＳ５３の処理が再度実行される。充電が完了した場合、ステップＳ５４の処理が実行される。
【０１４３】
［ステップＳ５４］復旧制御部１２５は、ローカルキャッシュ１２１を用いたライトバック方式でのＬＵに対するアクセス制御を開始する。
なお、以上の図１６、図１７では、復電後に各ＣＭが自律的に復旧処理を実行する例について示した。しかし、例えば、復旧処理がマスタＣＭの制御の下で実行される態様も考えられる。この場合、停電時にどのＣＭのどのページデータがどのＣＭにバックアップされたかを示す管理情報が、マスタＣＭのバックアップメモリに保存される。そして、マスタＣＭは復電後、保存した管理情報を参照しながら、バックアップメモリから読み出されたページデータのＣＭ間の転送や、ＣＭでのページデータのライトバックの実行を制御する。
【０１４４】
また、上記の各実施の形態に示した装置（例えば、ストレージ制御装置１０，２０，３０、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１４５】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４６】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【０１４７】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  電源と、循環的に配列され、前記電源から供給される電力によって動作する複数のストレージ制御装置とを有し、
前記複数のストレージ制御装置のそれぞれは、
キャッシュ領域およびミラーキャッシュ領域を含む揮発性メモリと、
不揮発性メモリと、
前記キャッシュ領域のデータを、前記複数のストレージ制御装置の配列において所定方向側に隣接する他のストレージ制御装置の前記ミラーキャッシュ領域にミラーリングする制御部と、
前記電源の停電時に、前記揮発性メモリから前記不揮発性メモリへデータを格納するための電力を供給するバッテリと、
を有し、
前記複数のストレージ制御装置のうち、あらかじめ決められたマスタ装置の前記制御部は、
前記電源が停電すると、前記複数のストレージ制御装置のそれぞれにおいて、前記キャッシュ領域に記憶されたダーティデータを第１のデータと第２のデータとに分類し、前記キャッシュ領域に記憶された前記第１のデータを第１のバックアップデータに指定するとともに、前記所定方向側に隣接する前記他のストレージ制御装置の前記ミラーキャッシュ領域に記憶された、前記第２のデータのミラーデータを第２のバックアップデータに指定し、前記分類では、前記複数のストレージ制御装置のそれぞれにおいて、前記キャッシュ領域に指定された前記第１のバックアップデータと前記ミラーキャッシュ領域に指定された前記第２のバックアップデータとの合計データ量の差が所定範囲内に収まるように、前記複数のストレージ制御装置のそれぞれにおける前記第１のデータと前記第２のデータとのデータ量の比率を決定し、
前記複数のストレージ制御装置のそれぞれにおいて、前記第１のバックアップデータと前記第２のバックアップデータとが前記不揮発性メモリに格納されるように制御する、
ストレージシステム。
【０１４８】
（付記２）  前記マスタ装置の前記制御部は、前記電源が停電したとき、
前記複数のストレージ制御装置のそれぞれにおいて、前記第１のバックアップデータと前記第２のバックアップデータとが前記不揮発性メモリに格納されるように制御する第１の制御処理と、
前記複数のストレージ制御装置のそれぞれにおける前記キャッシュ領域のダーティデータのデータ量が均等になるように、前記複数のストレージ制御装置のそれぞれの前記キャッシュ領域間でダーティデータを移動させ、移動後における前記複数のストレージ制御装置のそれぞれにおける前記キャッシュ領域のダーティデータが前記不揮発性メモリに格納されるように制御する第２の制御処理とを、
前記複数のストレージ制御装置のそれぞれについての前記合計データ量に基づいて、選択的に実行する、
付記１記載のストレージシステム。
【０１４９】
（付記３）  前記マスタ装置の前記制御部は、前記複数のストレージ制御装置のそれぞれについての前記合計データ量の差が、前記複数のストレージ制御装置のそれぞれにおける前記キャッシュ領域のダーティデータの平均データ量に基づく閾値範囲内に収まるように、前記比率を決定できたか否かの判定結果に基づいて、前記第１の制御処理と前記第２の制御処理とを選択的に実行する、
付記２記載のストレージシステム。
【０１５０】
（付記４）  前記電源からの電力供給が再開されると、前記複数のストレージ制御装置のそれぞれにおいて、前記制御部は、前記不揮発性メモリに格納されたダーティデータを読み出し、読み出したダーティデータを所定の記憶装置にライトバックするための復旧処理を実行し、前記復旧処理が完了し、かつ、前記電源からの電力による前記バッテリの充電が完了すると、前記キャッシュ領域を用いた前記所定の記憶装置に対するライトバック方式による書き込み制御を開始する、
付記１乃至３のいずれか１つに記載のストレージシステム。
【０１５１】
（付記５）  循環的に配列され、電源から供給される電力によって動作する複数のストレージ制御装置を管理する管理装置であって、前記複数のストレージ制御装置のそれぞれは、キャッシュ領域およびミラーキャッシュ領域を含む揮発性メモリと、不揮発性メモリと、前記キャッシュ領域のデータを、前記複数のストレージ制御装置の配列において所定方向側に隣接する他のストレージ制御装置の前記ミラーキャッシュ領域にミラーリングする制御部と、前記電源の停電時に、前記揮発性メモリから前記不揮発性メモリへデータを格納するための電力を供給するバッテリと、を有する、管理装置において、
前記電源が停電すると、前記複数のストレージ制御装置のそれぞれにおいて、前記キャッシュ領域に記憶されたダーティデータを第１のデータと第２のデータとに分類し、前記キャッシュ領域に記憶された前記第１のデータを第１のバックアップデータに指定するとともに、前記所定方向側に隣接する前記他のストレージ制御装置の前記ミラーキャッシュ領域に記憶された、前記第２のデータのミラーデータを第２のバックアップデータに指定し、前記分類では、前記複数のストレージ制御装置のそれぞれにおいて、前記キャッシュ領域に指定された前記第１のバックアップデータと前記ミラーキャッシュ領域に指定された前記第２のバックアップデータとの合計データ量の差が所定範囲内に収まるように、前記複数のストレージ制御装置のそれぞれにおける前記第１のデータと前記第２のデータとのデータ量の比率を決定し、
前記複数のストレージ制御装置のそれぞれにおいて、前記第１のバックアップデータと前記第２のバックアップデータとが前記不揮発性メモリに格納されるように制御する、バックアップ制御部、
を有する管理装置。
【０１５２】
（付記６）  前記バックアップ制御部は、前記電源が停電したとき、
前記複数のストレージ制御装置のそれぞれにおいて、前記第１のバックアップデータと前記第２のバックアップデータとが前記不揮発性メモリに格納されるように制御する第１の制御処理と、
前記複数のストレージ制御装置のそれぞれにおける前記キャッシュ領域のダーティデータのデータ量が均等になるように、前記複数のストレージ制御装置のそれぞれの前記キャッシュ領域間でダーティデータを移動させ、移動後における前記複数のストレージ制御装置のそれぞれにおける前記キャッシュ領域のダーティデータが前記不揮発性メモリに格納されるように制御する第２の制御処理とを、
前記複数のストレージ制御装置のそれぞれについての前記合計データ量に基づいて、選択的に実行する、
付記５記載の管理装置。
【０１５３】
（付記７）  前記バックアップ制御部は、前記複数のストレージ制御装置のそれぞれについての前記合計データ量の差が、前記複数のストレージ制御装置のそれぞれにおける前記キャッシュ領域のダーティデータの平均データ量に基づく閾値範囲内に収まるように、前記比率を決定できたか否かの判定結果に基づいて、前記第１の制御処理と前記第２の制御処理とを選択的に実行する、
付記６記載の管理装置。
【符号の説明】
【０１５４】
１  ストレージシステム
２  電源
１０，２０，３０  ストレージ制御装置
１１，２１，３１  揮発性メモリ
１１ａ，２１ａ，３１ａ  キャッシュ領域
１１ａ１，２１ａ１，３１ａ１  第１のデータ
１１ａ２，２１ａ２，３１ａ２  第２のデータ
１１ｂ，２１ｂ，３１ｂ  ミラーキャッシュ領域
１１ｂ２，２１ｂ２，３１ｂ２  ミラーデータ
１２，２２，３２  不揮発性メモリ
１３，２３，３３  制御部
１４，２４，３４  バッテリ
【図１】
2018010557.tif 000003
【図２】
2018010557.tif 000004
【図３】
2018010557.tif 000005
【図４】
2018010557.tif 000006
【図５】
2018010557.tif 000007
【図６】
2018010557.tif 000008
【図７】
2018010557.tif 000009
【図８】
2018010557.tif 000010
【図９】
2018010557.tif 000011
【図１０】
2018010557.tif 000012
【図１１】
2018010557.tif 000013
【図１２】
2018010557.tif 000014
【図１３】
2018010557.tif 000015
【図１４】
2018010557.tif 000016
【図１５】
2018010557.tif 000017
【図１６】
2018010557.tif 000018
【図１７】
2018010557.tif 000019