(57)【特許請求の範囲】
【請求項１】
キャッシュ領域を有する第１のメモリと、前記第１のメモリに電力を供給する第１の電源と、前記第１の電源を監視し、停電を検知すると第１の停電信号を出力する第１の制御部と、を備える第１の情報処理装置と、
前記キャッシュ領域に記憶されたデータのミラーデータを記憶するミラーキャッシュ領域を有する第２のメモリと、前記第２のメモリに電力を供給する第２の電源と、前記第２の電源を監視し、停電を検知すると第２の停電信号を出力する第２の制御部と、を備える第２の情報処理装置と、
前記第１の停電信号の有無と前記第２の停電信号の有無とに基づく停電監視情報を記憶する記憶部と、
前記第１の情報処理装置と前記第２の情報処理装置の動作を監視し、その両方の動作停止を検知したとき、前記停電監視情報に基づいて前記第１の情報処理装置と前記第２の情報処理装置の停電状態を判定し、いずれも停電していない場合には、前記第１のメモリのデータを保持した状態で前記第１の情報処理装置を再起動させるとともに、前記第２のメモリのデータを保持した状態で前記第２の情報処理装置を再起動させる第３の情報処理装置と、
を有する情報処理システム。
【請求項２】
前記第１の停電信号の有無と前記第２の停電信号の有無とに基づいて、前記停電監視情報として、前記第１の情報処理装置と前記第２の情報処理装置のうち停電した装置を示す情報を前記記憶部に記憶する監視部をさらに有する、
請求項１記載の情報処理システム。
【請求項３】
前記第３の情報処理装置は、前記第１の情報処理装置が停電しており、前記第２の情報処理装置が停電していないと判定した場合、前記第２の情報処理装置に対し、停電時に行う停電処理の実行を指示する、
請求項１または２記載の情報処理システム。
【請求項４】
前記第２の情報処理装置は、前記第２のメモリのバックアップ用の不揮発性記憶装置をさらに有し、
前記第２の制御部は、前記停電処理の実行指示に応じて、前記第２のメモリに記憶されたデータを前記不揮発性記憶装置へ転送した後、前記第２の電源による電力供給を停止させる、
請求項３記載の情報処理システム。
【請求項５】
前記第１の情報処理装置は、当該第１の情報処理装置が前記第１のメモリのデータを保持した状態で再起動した後、前記キャッシュ領域に記憶されたデータと前記ミラーキャッシュ領域に記憶されたデータとを照合し、照合に成功した場合に、前記キャッシュ領域を用いた所定記憶装置へのアクセス制御処理を開始する第３の制御部をさらに有する、
請求項１乃至４のいずれか１項に記載の情報処理システム。
【請求項６】
前記第３の情報処理装置は、
前記第１の情報処理装置に第１の監視信号を送信し、前記第１の監視信号に対する応答の有無に基づいて前記第１の情報処理装置が動作しているかを判定し、
前記第２の情報処理装置に第２の監視信号を送信し、前記第２の監視信号に対する応答の有無に基づいて前記第２の情報処理装置が動作しているかを判定する、
請求項１乃至５のいずれか１項に記載の情報処理システム。
【請求項７】
キャッシュ領域を有する第１のメモリを備える第１の情報処理装置と、前記キャッシュ領域に記憶されたデータのミラーデータを記憶するミラーキャッシュ領域を有する第２のメモリを備える第２の情報処理装置と、記憶部と通信するインタフェースと、
前記第１の情報処理装置と前記第２の情報処理装置の動作を監視し、その両方の動作停止を検知したとき、前記第１のメモリに電力を供給する第１の電源が停電したことを示す第１の停電信号の、前記第１の情報処理装置からの出力の有無と、前記第２のメモリに電力を供給する第２の電源が停電したことを示す第２の停電信号の、前記第２の情報処理装置からの出力の有無とに基づく停電監視情報を、前記記憶部から取得し、取得した前記停電監視情報に基づいて、前記第１の情報処理装置と前記第２の情報処理装置の停電状態を判定し、いずれも停電していない場合には、前記第１のメモリのデータを保持した状態で前記第１の情報処理装置を再起動させるとともに、前記第２のメモリのデータを保持した状態で前記第２の情報処理装置を再起動させる制御部と、
を有する制御装置。
【請求項８】
コンピュータに、
キャッシュ領域を有する第１のメモリを備える第１の情報処理装置と、前記キャッシュ領域に記憶されたデータのミラーデータを記憶するミラーキャッシュ領域を有する第２のメモリを備える第２の情報処理装置の動作を監視し、
前記第１の情報処理装置と前記第２の情報処理装置の動作停止を検知したとき、前記第１のメモリに電力を供給する第１の電源が停電したことを示す第１の停電信号の、前記第１の情報処理装置からの出力の有無と、前記第２のメモリに電力を供給する第２の電源が停電したことを示す第２の停電信号の、前記第２の情報処理装置からの出力の有無とに基づく停電監視情報を、記憶部から取得し、取得した前記停電監視情報に基づいて、前記第１の情報処理装置と前記第２の情報処理装置の停電状態を判定し、
いずれも停電していない場合には、前記第１のメモリのデータを保持した状態で前記第１の情報処理装置を再起動させるとともに、前記第２のメモリのデータを保持した状態で前記第２の情報処理装置を再起動させる、
処理を実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、制御装置および制御プログラムに関する。
【背景技術】
【０００２】
データのミラーリングは、データの損失を防止するために広く利用されている。例えば、複数の情報処理装置を備えたシステムでは、ある情報処理装置のキャッシュメモリの内容を、別の情報処理装置のキャッシュメモリへミラーリングするものがある。
【０００３】
ミラーリング技術の一例として、複数のストレージ制御装置それぞれがローカルキャッシュとミラーキャッシュとを有し、あるストレージ制御装置のローカルキャッシュが隣接するストレージ制御装置のミラーキャッシュと二重化されて、キャッシュがサイクリックに二重化されたストレージシステムが提案されている。
【０００４】
また、データ保護に関する他の技術として、ストレージ装置が停電を検出すると、実行中の処理を中止し、電力停止で消失するキャッシュデータの保護を図る技術がある。例えば、停電から一定の期間は、バッテリから供給される電力によってキャッシュデータをそのまま保持する。そして、一定時間経過しても停電が継続しているときは、キャッシュデータを不揮発性メモリに書き込み保護を図る。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２００４／１１４１１５号
【特許文献２】特開２０１４−２１５６６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、情報処理装置のダウンは、停電ばかりでなく、情報処理装置の動作を制御するＣＰＵ（Central Processing Unit）に不整合なデータが入力することなどに起因する「ソフトエラー」によっても発生する。ソフトエラーによるダウンでは、メモリの内容を保持した状態で情報処理装置を再起動する「マシンダウンリカバリ」という方法により、情報処理装置が回復する可能性がある。特に、キャッシュデータとそのミラーデータとをそれぞれ記憶する２台の情報処理装置がともにソフトエラーによってダウンした場合、各情報処理装置にマシンダウンリカバリを実行させることで、キャッシュデータが二重化された状態を保ったままシステムを早期に復旧させることが可能になる。
【０００７】
一方、複数の情報処理装置を有するシステムでは、各情報処理装置が互いの状態を監視し、ダウンした他の情報処理装置を検出可能になっているものがある。しかし、ダウンした他の情報処理装置のダウン要因を特定することは難しい。ダウンした情報処理装置に上記のマシンダウンリカバリの実行を指示したとき、その情報処理装置のダウン要因が停電である場合には、マシンダウンリカバリが実行されない。この場合、ダウンした情報処理装置のメモリに記憶されていたキャッシュデータやミラーデータが消失し、その情報処理装置の動作の信頼性が保証できなくなる可能性がある。
【０００８】
一つの側面では、本発明は、情報処理装置の復旧時のデータ消失の可能性を抑制する情報処理システム、制御装置および制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
一つの態様では、第１の情報処理装置と、第２の情報処理装置と、第３の情報処理装置とを有する情報処理システムが提供される。この情報処理システムにおいて、第１の情報処理装置は、キャッシュ領域を有する第１のメモリと、第１のメモリに電力を供給する第１の電源と、第１の電源を監視し、停電を検知すると第１の停電信号を出力する第１の制御部と、を備える。第２の情報処理装置は、キャッシュ領域に記憶されたデータのミラーデータを記憶するミラーキャッシュ領域を有する第２のメモリと、第２のメモリに電力を供給する第２の電源と、第２の電源を監視し、停電を検知すると第２の停電信号を出力する第２の制御部と、を備える。第３の情報処理装置は、第１の情報処理装置と第２の情報処理装置の動作を監視し、その両方の動作停止を検知したとき、第１の停電信号の有無と第２の停電信号の有無とに基づいて第１の情報処理装置と第２の情報処理装置の停電状態を判定し、いずれも停電していない場合には、第１のメモリのデータを保持した状態で第１の情報処理装置を再起動させるとともに、第２のメモリのデータを保持した状態で第２の情報処理装置を再起動させる。
【００１０】
また、一つの態様では、インタフェースと制御部とを有する制御装置が提供される。この制御装置において、インタフェースは、キャッシュ領域を有する第１のメモリを備える第１の情報処理装置と、キャッシュ領域に記憶されたデータのミラーデータを記憶するミラーキャッシュ領域を有する第２のメモリを備える第２の情報処理装置と通信する。制御部は、第１の情報処理装置と第２の情報処理装置の動作を監視し、その両方の動作停止を検知したとき、第１のメモリに電力を供給する第１の電源が停電したことを示す第１の停電信号の、第１の情報処理装置からの出力の有無と、第２のメモリに電力を供給する第２の電源が停電したことを示す第２の停電信号の、第２の情報処理装置からの出力の有無とに基づいて、第１の情報処理装置と第２の情報処理装置の停電状態を判定し、いずれも停電していない場合には、第１のメモリのデータを保持した状態で第１の情報処理装置を再起動させるとともに、第２のメモリのデータを保持した状態で第２の情報処理装置を再起動させる。
【００１１】
さらに、一つの態様では、上記の制御装置と同様の処理をコンピュータに実行させる制御プログラムが提供される。
【発明の効果】
【００１２】
一つの側面では、情報処理装置の復旧時のデータ消失の可能性を抑制できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態の情報処理システムの構成例を示す図である。
【図２】第２の実施の形態のストレージシステムの構成例を示す図である。
【図３】ＣＭのハードウェア構成例を示す図である。
【図４】キャッシュ領域とそのミラーリング先との関係を示す図である。
【図５】ＣＭおよびＦＥの監視機能例を示す図である。
【図６】ＣＭの機能例を示すブロック図である。
【図７】ＣＭ監視テーブルの例を示す図である。
【図８】ＣＭによる停電監視処理の例を示すフローチャートである。
【図９】ＳＶＣによる停電監視処理の例を示すフローチャートである。
【図１０】マスタＣＭによる監視処理の例を示すフローチャートである。
【図１１】マスタＣＭが他のＣＭのダウンを検出したときの処理の例を示すフローチャートである。
【図１２】マスタＣＭがミラーリング関係にある２ＣＭのダウンを検出したときの処理の例を示すフローチャートである。
【図１３】ミラーリング関係にあるＣＭがともに停電したときの処理の例を示すシーケンス図である。
【図１４】ミラーリング関係にあるＣＭがともにソフトエラーでダウンしたときの処理の例を示すシーケンス図である。
【図１５】ソフトエラーの発生によりマシンダウンリカバリが実行されたＣＭでの復旧処理例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理システムの構成例を示す図である。図１に示す情報処理システムは、情報処理装置１０，２０，３０を有する。
【００１５】
情報処理装置１０は、制御部１１、メモリ１２および電源１３を有する。情報処理装置２０は、制御部２１、メモリ２２および電源２３を有する。情報処理装置３０は、制御部３１を有する。情報処理装置１０，２０，３０は、ネットワークやバスなどを介して互いに接続されている。
【００１６】
制御部１１，２１，３１は、例えば、ＣＰＵ、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得るプロセッサとして実装される。このプロセッサには、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。メモリ１２，２２は、ＲＡＭ（Random Access Memory）などの揮発性メモリである。電源１３は、情報処理装置１０内の構成要素のうち少なくともメモリ１２に電力を供給する。電源１３は、情報処理装置１０全体に電力を供給してもよい。電源２３は、情報処理装置２０内の構成要素のうち少なくともメモリ２２に電力を供給する。電源２３は、情報処理装置２０全体に電力を供給してもよい。
【００１７】
メモリ１２は、キャッシュ領域１２ａを有する。なお、情報処理装置１０は、その内部に搭載された、または外部に接続された記憶装置に対するアクセス制御を、キャッシュ領域１２ａを用いて実行する。一方、メモリ２２は、ミラーキャッシュ領域２２ａを有する。ミラーキャッシュ領域２２ａには、キャッシュ領域１２ａに記憶されたデータのミラーデータが格納される。例えば、キャッシュ領域１２ａのデータが更新されるたびに、その更新内容がミラーキャッシュ領域２２ａにも反映される。
【００１８】
制御部１１は、電源１３を監視し、停電を検知すると停電信号１１ａを出力する。制御部２１は、電源２３を監視し、停電を検知すると停電信号２１ａを出力する。停電信号１１ａ，２１ａの出力の有無は、情報処理装置３０が確認可能になっている。例えば、停電信号１１ａ，２１ａが出力されたことが、情報処理装置３０がアクセス可能な記憶装置に記憶される。この記憶装置は、図１に例示するような、情報処理装置１０，２０の外部に設けられた共通の記憶部４１であってもよいし、情報処理装置１０，２０にそれぞれ個別に設けられた不揮発性記憶装置であってもよい。前者の場合、記憶部４１には、例えば、監視部によって停電信号１１ａの受信の有無と停電信号２１ａの受信の有無とに基づく停電監視情報（図示せず）が記憶されてもよい。この場合、情報処理装置３０は、停電監視情報に基づいて停電信号１１ａ，２１ａの出力の有無を判定する。また、停電信号１１ａ，２１ａは、情報処理装置３０に対して送信されてもよい。
【００１９】
制御部３１は、情報処理装置１０，２０の動作を監視し、それぞれが動作しているかを判定する。例えば、制御部３１は、情報処理装置１０，２０のそれぞれに対して監視信号を送信し、監視信号に対する応答の有無に基づいてそれぞれが動作しているかを判定する。制御部３１は、情報処理装置１０，２０の両方の動作が停止したことを検知すると（ステップＳ１）、停電信号１１ａ，２１ａのそれぞれの出力の有無に基づいて、情報処理装置１０，２０のそれぞれの停電状態を判定する（ステップＳ２）。
【００２０】
制御部３１は、情報処理装置１０，２０のいずれも停電していない（すなわち、電源１３，２３のいずれも停電していない）場合には、メモリ１２のデータを保持した状態で情報処理装置１０を再起動させる。これとともに、制御部３１は、メモリ２２のデータを保持した状態で情報処理装置２０を再起動させる（ステップＳ３）。なお、メモリのデータを保持した状態で情報処理が再起動することを、「マシンダウンリカバリ」と呼ぶことにする。
【００２１】
ここで、情報処理装置１０の動作が停止しているものの、停電信号１１ａが出力されておらず情報処理装置１０が停電していない場合には、制御部３１は、情報処理装置１０がソフトエラーによってダウンしている状態と判断できる。同様に、情報処理装置２０の動作が停止しているものの、停電信号２１ａが出力されておらず情報処理装置２０が停電していない場合には、制御部３１は、情報処理装置２０がソフトエラーによってダウンしている状態と判断できる。
【００２２】
情報処理装置がソフトエラーによってダウンしている場合、その情報処理装置にマシンダウンリカバリを実行させることで、その実行前のメモリ内のデータをそのまま用いて情報処理装置を復旧させることができる可能性がある。しかし、マシンダウンリカバリは、停電した情報処理装置に実行させることはできない。
【００２３】
仮に、動作を停止した情報処理装置１０，２０の一方が停電している場合にそれらの両方にマシンダウンリカバリの実行を指示したとすると、停電した装置ではマシンダウンリカバリが実行されない。そのため、一方がメモリのデータを保持したまま再起動したとしても、キャッシュ領域１２ａとミラーキャッシュ領域２２ａの一方は使用可能な状態にならず、各領域のデータが二重化された状態で運用を再開することができない。さらに、停電した情報処理装置にマシンダウンリカバリの実行を指示した場合には、メモリの内容が失われる危険性もある。
【００２４】
本実施の形態では、制御部３１は、停電信号１１ａ，２１ａのそれぞれの出力の有無に基づいて、情報処理装置１０，２０のそれぞれの動作停止の要因がソフトエラーか否かを正確に判断できる。そして、制御部３１は、それら両方の動作停止の要因がソフトエラーと確認された場合に、それら両方にマシンダウンリカバリを実行させる。これにより、情報処理装置１０，２０の復旧時のデータ消失の可能性を抑制できる。換言すると、キャッシュ領域１２ａとミラーキャッシュ領域２２ａのデータを失うことなく、各領域のデータが二重化された状態で情報処理装置１０，２０の運用を再開できる可能性が高まる。すなわち、情報処理装置１０，２０がキャッシュデータの安全性を保った状態で正しく復旧できることの確実性を高めることができる。
【００２５】
［第２の実施の形態］
図２は、第２の実施の形態のストレージシステムの構成例を示す図である。ストレージシステムは、ＣＥ（Controller Enclosure）１００，２００，３００と、ＤＥ（Device Enclosure）４１０，４２０，４３０と、ＦＥ（Frontend Enclosure）５００と、ホスト装置６００とを有する。
【００２６】
ＣＥ１００は、ＣＭ（Controller Module）１１０と、ＣＭ１２０と、バッテリ１３０と、ＰＳＵ（Power Supply Unit）１４０とを有する。ＣＥ２００は、ＣＭ２１０と、ＣＭ２２０と、バッテリ２３０と、ＰＳＵ２４０とを有する。ＣＥ３００は、ＣＭ３１０と、ＣＭ３２０と、バッテリ３３０と、ＰＳＵ３４０とを有する。
【００２７】
ＣＭ１１０，１２０，２１０，２２０，３１０，３２０には、ホスト装置６００が接続されている。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０とホスト装置６００とは、例えば、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）を介して接続される。なお、図２では例として１台のホスト装置６００がＣＭ１１０，１２０，２１０，２２０，３１０，３２０に接続されているが、例えば、複数台のホスト装置のそれぞれが１台以上のＣＭに接続されてもよい。
【００２８】
ＤＥ４１０，４２０，４３０のそれぞれには、ホスト装置６００からのアクセス対象となる複数台の記憶装置が搭載されている。本実施の形態では、ＤＥ４１０，４２０，４３０は、記憶装置としてＨＤＤ（Hard Disk Drive）を備えたディスクアレイ装置である。なお、ＤＥ４１０，４２０，４３０に搭載される記憶装置は、ＳＳＤ（Solid State Drive）などの他の種類の記憶装置であってもよい。
【００２９】
ＣＭ１１０，１２０には、ＤＥ４１０が接続されている。ＣＭ１１０，１２０は、それぞれキャッシュ領域を実装するメモリを有し、ホスト装置６００からの要求に応じて、ＤＥ４１０に搭載されたＨＤＤに対するアクセスを、それぞれに実装されたキャッシュ領域を用いて制御する。ＣＭ２１０，２２０には、ＤＥ４２０が接続されている。ＣＭ２１０，２２０は、それぞれキャッシュ領域を実装するメモリを有し、ホスト装置６００からの要求に応じて、ＤＥ４２０に搭載されたＨＤＤに対するアクセスを、それぞれに実装されたキャッシュ領域を用いて制御する。ＣＭ３１０，３２０には、ＤＥ４３０が接続されている。ＣＭ３１０，３２０は、それぞれキャッシュ領域を実装するメモリを有し、ホスト装置６００からの要求に応じて、ＤＥ４３０に搭載されたＨＤＤに対するアクセスを、それぞれに実装されたキャッシュ領域を用いて制御する。
【００３０】
なお、ＣＥ１００とＤＥ４１０とは、例えば、１つの筐体に搭載されるストレージ装置として実現される。ＣＥ２００とＤＥ４２０、および、ＣＥ３００とＤＥ４３０についても同様である。図２のストレージシステムは、このようなストレージ装置をスケールアウトした構成となっている。
【００３１】
また、ストレージシステムに含まれるＣＥの数は３台に限定されるものではなく、各ＣＥに含まれるＣＭの数も２台に限定されるものではない。例えば、ストレージシステムには、それぞれ２台のＣＭを備えるＤＥが１２台含まれてもよい。また、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０のそれぞれは、ホスト装置６００からの要求に応じて、他のＣＭに接続されたＤＥ内のＨＤＤに対するアクセスを制御してもよい。
【００３２】
ＣＭ１１０，１２０，２１０，２２０，３１０，３２０についてさらに説明する。ＣＭ１１０，１２０は、それぞれに実装されたキャッシュ領域の管理や、バッテリ１３０、ＰＳＵ１４０の監視などの処理を行う。バッテリ１３０は、停電時にＣＭ１１０，１２０が有するキャッシュ領域が実装されるメモリに電力を供給する。また、バッテリ１３０は、停電時にＣＭ１１０，１２０が実行する停電処理に必要な電力を供給する。ＰＳＵ１４０は、ＣＥ１００全体に電力を供給する。
【００３３】
ＣＭ２１０，２２０は、それぞれに実装されたキャッシュ領域の管理と、バッテリ２３０、ＰＳＵ２４０の監視などの処理を行う。バッテリ２３０は、停電時にＣＭ２１０，２２０が必要とする電力を供給する。ＰＳＵ２４０は、ＣＥ２００全体に電力を供給する。ＣＭ３１０，３２０は、それぞれに実装されたキャッシュ領域の管理と、バッテリ３３０、ＰＳＵ３４０の監視などの処理を行う。バッテリ３３０は、停電時にＣＭ３１０，３２０が必要とする電力を供給する。ＰＳＵ３４０は、ＣＥ３００全体に電力を供給する。
【００３４】
ＦＥ５００は、ルータ５１０と、ＳＶＣ（SerVice Controller）５２０と、記憶部５３０とを有する。
ルータ５１０は、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０と接続し、ＣＭ間で伝送される信号を中継する。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０は、ルータ５１０を介して相互に通信を行うことができる。
【００３５】
ＳＶＣ５２０は、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０との間で個別に相互通信を行う。ＳＶＣ５２０は、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０のＰＳＵ１４０，２４０，３４０の監視結果を管理する。具体的には、ＳＶＣ５２０は、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０からＰＳＵ１４０，２４０，３４０の監視情報を取得し、停電監視情報を生成する。停電監視情報は、それぞれのＣＭ１１０，１２０，２１０，２２０，３１０，３２０が検出した停電発生の有無を示す情報である。ＳＶＣ５２０は、停電監視情報を記憶部５３０に格納し、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０からの要求に応じて提供する。記憶部５３０は、例えば、ＲＡＭ、フラッシュメモリなどの記憶装置として実装され、停電監視情報を記憶する。
【００３６】
次に、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０のハードウェア構成を、ＣＭ１１０の場合で説明する。
図３は、ＣＭのハードウェア構成例を示す図である。なお、図２と同じ構成要素には同じ番号を付し、説明は省略する。
【００３７】
ＣＭ１１０は、プロセッサ１０１と、ＲＡＭ１０２と、ＳＳＤ（Solid State Drive）１０３と、ＤＩ（Device Interface）１０４と、ＣＡ（Channel Adapter）１０５と、読み取り装置１０６と、ＣＭＩＦ（ＣＭ InterFace）１０７と、ＢＵＤ（Back Up Drive）１０８と、ＦＰＧＡ１０９とを有する。
【００３８】
プロセッサ１０１は、ＣＭ１１０の情報処理を制御する。プロセッサ１０１は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。
ＲＡＭ１０２は、ＣＭ１１０の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。また、ＲＡＭ１０２の所定の領域にキャッシュが実装される。
【００３９】
ＳＳＤ１０３は、ＣＭ１１０の補助記憶装置である。ＳＳＤ１０３は、不揮発性の半導体メモリである。ＳＳＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ＣＭ１１０は、補助記憶装置として、ＳＳＤ１０３の代わりにＨＤＤを備えていてもよい。
【００４０】
ＤＩ１０４は、ＤＥ４１０と通信するためのインタフェースである。ＤＩ１０４は、例えば、ＳＡＳ（Serial Attached SCSI）インタフェースとして実装される。ＣＡ１０５は、ホスト装置６００と通信するためのインタフェースである。
【００４１】
読み取り装置１０６は、可搬型の記録媒体１０６ａに記録されたプログラムやデータを読み取る装置である。記録媒体１０６ａとして、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１０６ａとして、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置１０６は、例えば、プロセッサ１０１からの命令にしたがって、記録媒体１０６ａから読み取ったプログラムやデータをプロセッサ１０１に送信する。
【００４２】
ＣＭＩＦ１０７は、ルータ５１０を介して、他のＣＭと通信するためのインタフェースである。
ＢＵＤ１０８は、停電発生時にＲＡＭ１０２のデータの保護に用いられる不揮発性の記録媒体である。記録媒体として、例えば、フラッシュメモリのような半導体メモリを使用することができる。停電発生時、ＦＰＧＡ１０９からの命令にしたがって、ＲＡＭ１０２のデータがＢＵＤ１０８に書き込まれる。なお、ＲＡＭ１０２およびＢＵＤ１０８は、停電発生後にバッテリ１３０から供給される電力によって駆動される。
【００４３】
ＦＰＧＡ１０９は、停電発生後、バッテリ１３０から供給される電力によって駆動可能である。ＦＰＧＡ１０９は、ＣＥ１００のＰＳＵ１４０の状態信号を監視し、停電の検出を行う。ＦＰＧＡ１０９は、ＳＶＣ５２０との間で通信を行う通信機能を有し、停電の検出結果をＳＶＣ５２０に通知する。また、ＦＰＧＡ１０９は、停電を検知すると、ＲＡＭ１０２のデータイメージをＢＵＤ１０８にコピーし、コピーが完了すると動作を停止する。
【００４４】
さらに、ＦＰＧＡ１０９は、ＳＶＣ５２０を介して他のＣＭから受信したマシンダウンリカバリの実行指示に応じて、ＲＡＭ１０２に格納されたデータを保持した状態のままプロセッサ１０１をリセットし、ＣＭ１１０を再起動させる。また、ＦＰＧＡ１０９は、ＳＶＣ５２０がＦＥ５００の停電を検出したときは、ＳＶＣ５２０から停電を検出した旨の通知を受信する。
【００４５】
なお、ＣＭ１２０，２１０，２２０，３１０，３２０もＣＭ１１０と同様のハードウェア構成により実現できる。
図４は、キャッシュ領域とそのミラーリング先との関係を示す図である。本実施の形態のストレージシステムでは、ＣＭとホスト装置６００との間のデータの読み書きはＬＵ（Logical Unit）と呼ばれる論理記憶領域を単位として行われる。ストレージシステム内には複数のＬＵが設定され、各ＬＵにはそのＬＵに対するホスト装置６００からのアクセスを制御するＣＭが割り当てられる。ＣＭは、自装置に割り当てられたＬＵに対するアクセスを、自装置内のＲＡＭに確保したキャッシュ領域を用いて制御する。ＲＡＭには、キャッシュ領域がＬＵ毎に確保される。
【００４６】
図４では、説明を簡単にするために、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０はそれぞれ、ホスト装置６００からのアクセス要求に応じて、１つの論理ボリュームに対するアクセスを制御するものとする。この場合、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０の各ＲＡＭには、１つのキャッシュ領域（後述するローカルキャッシュ）が確保される。
【００４７】
あるＣＭがアクセス制御を担当するＬＵに対応する物理記憶領域は、ＤＥ４１０，４２０，４３０に搭載された１台以上のＨＤＤによって実現される。最も簡単な例では、あるＣＭがアクセス制御を担当するＬＵに対応する物理領域は、そのＣＭに接続されたＤＥ内の１台以上のＨＤＤによって実現される。例えば、ＣＭ１１０がアクセス制御を担当するＬＵに対応する物理記憶領域として、ＤＥ４１０内の１台以上のＨＤＤが割り当てられる。また、通常、１つのＬＵには複数のＨＤＤが割り当てられ、それらのＨＤＤに対するデータの読み書きがＲＡＩＤ（Redundant Arrays of Inexpensive Disks）によって制御される。
【００４８】
図４に示すように、ＣＭ１１０では、ＲＡＭ１０２に確保した記憶領域にローカルキャッシュ１１１と、ミラーキャッシュ１１２が実装される。ＣＭ１２０では、ＣＭ１２０が有するＲＡＭに確保した記憶領域にローカルキャッシュ１２１およびミラーキャッシュ１２２が実装される。ＣＭ２１０では、ＣＭ２１０が有するＲＡＭに確保した記憶領域にローカルキャッシュ２１１およびミラーキャッシュ２１２が実装される。ＣＭ２２０では、ＣＭ２２０が有するＲＡＭに確保した記憶領域にローカルキャッシュ２２１およびミラーキャッシュ２２２が実装される。ＣＭ３１０では、ＣＭ３１０が有するＲＡＭに確保した記憶領域にローカルキャッシュ３１１およびミラーキャッシュ３１２が実装される。ＣＭ３２０では、ＣＭ３２０が有するＲＡＭに確保した記憶領域にローカルキャッシュ３２１およびミラーキャッシュ３２２が実装される。
【００４９】
ローカルキャッシュは、対応するＣＭが、ホスト装置６００からの要求に応じて当該ＣＭが担当するＬＵにアクセスする際に、キャッシュ領域として用いられる。例えば、ＣＭ１１０は、ホスト装置６００からの要求に応じたＬＵへのアクセスを、ローカルキャッシュ１１１をキャッシュ領域として用いて制御する。また、ＣＭ２１０は、ホスト装置６００からの要求に応じたＬＵへのアクセスを、ローカルキャッシュ２１１をキャッシュ領域として用いて制御する。
【００５０】
ミラーキャッシュには、他のローカルキャッシュのミラーデータが格納される。例えば、ＣＭ１１０は、ローカルキャッシュ１１１に格納されたデータを、ＣＭ２１０のミラーキャッシュ２１２にミラーリングする。ＣＭ２１０は、ローカルキャッシュ２１１に格納されたデータを、ＣＭ３１０のミラーキャッシュ３１２にミラーリングする。ＣＭ３１０は、ローカルキャッシュ３１１に格納されたデータを、ＣＭ１２０のミラーキャッシュ１２２にミラーリングする。ＣＭ１２０は、ローカルキャッシュ１２１に格納されたデータを、ＣＭ２２０のミラーキャッシュ２２２にミラーリングする。ＣＭ２２０は、ローカルキャッシュ２２１に格納されたデータを、ＣＭ３２０のミラーキャッシュ３２２にミラーリングする。ＣＭ３２０は、ローカルキャッシュ３２１に格納されたデータを、ＣＭ１１０のミラーキャッシュ１１２にミラーリングする。
【００５１】
このように、あるＣＭのローカルキャッシュは、隣接するＣＥ内のＣＭにサイクリックにミラーリングされる。ただし、あるＣＭのローカルキャッシュは、必ず、そのＣＭが搭載されたＣＥとは異なるＣＥ内のＣＭにミラーリングされる。このような構成により、ＣＥ単位で動作が停止した場合でも、どのローカルキャッシュについても元データとミラーデータの少なくとも一方が消失せずに維持される。
【００５２】
例えば、ＣＭ１１０のローカルキャッシュ１１１がＣＭ１２０のミラーキャッシュ１２２にミラーリングされた場合を考える。この構成で、ＣＥ１００の動作が停止した場合、ローカルキャッシュ１１１に格納されたデータと、ミラーキャッシュ１２２に格納されたそのミラーデータの両方が消失してしまう。これに対して、図４の例では、ＣＭ１１０のローカルキャッシュ１１１がＣＭ２１０のミラーキャッシュ２１２にミラーリングされている。このため、ＣＥ１００の動作が停止したとしても、ミラーキャッシュ２１２のミラーデータが確実に残り、逆にＣＥ２００の動作が停止したとしても、ローカルキャッシュ１１１の元データが確実に残る。
【００５３】
図５は、ＣＭおよびＦＥの監視機能例を示す図である。なお、図５においては、ＰＳＵ１４０は、ＣＥ１００全体の電力を供給することをわかりやすく示すためにＣＥ１００の外部に示しているが、実際にはＣＭ１００の内部に搭載される。ＰＳＵ２４０，３４０も、同様にそれぞれＣＥ２００，３００の内部に搭載される。
【００５４】
ＣＭ１１０は、ＣＭＩＦ１０７と、ＦＰＧＡ１０９とを有する。ＣＭ１２０，２１０，２２０，３１０，３２０も同様に、それぞれＣＭＩＦおよびＦＰＧＡを有する。一方、ＦＥ５００においては、ＳＶＣ５２０は、ＦＰＧＡ１０９を含む各ＣＭのＦＰＧＡと通信を行う監視ＦＰＧＡ５２１を有する。監視ＦＰＧＡ５２１は、ＣＭの停電情報を収集する。また、ＦＥ５００の記憶部５３０は、監視ＦＰＧＡ５２１によってＣＭから収集された停電情報をまとめた停電監視情報５３１を記憶する。停電監視情報５３１には、例えば、ＣＭごとに、停電が発生しているか否かを示す停電フラグを登録する領域が設けられている。
【００５５】
ＣＭＩＦ１０７は、ＦＥ５００のルータ５１０とのインタフェースであり、ルータ５１０を経由して同様にルータ５１０に接続する他のＣＭとの間でＣＭ間通信を行う。ＣＭ１１０のＣＰＵ１０１は、ＣＭＩＦ１０７およびルータ５１０を介して他のＣＭに監視コマンドを送信することで、他のＣＭがダウンしているかを認識することができる。
【００５６】
例えば、ＣＭ１１０がＣＭＩＦ１０７経由でＣＭ１２０に送信した監視コマンドは、ルータ５１０経由でＣＭ１２０に送られる。ＣＭ１２０から応答が返ってきたときは、ルータ５１０経由で応答を受信する。応答を受信した場合、ＣＭ１１０は、ＣＭ１２０が動作していると判定する。一方、ＣＭ１２０から一定時間以内に応答が返ってこなかった場合、ＣＭ１１０は、タイムアウトを検出する。ＣＭ１１０は、通信先のＣＭごとにタイムアウトを検出した回数に応じた統計加点値を記録している。ＣＭ１１０は、ＣＭ１２０のタイムアウトを検出したときは、ＣＭ１２０を異常と判定し、通信先のＣＭ１２０に対応する統計加点値に加点する。こうしてＣＭ１２０のタイムアウトを複数回検出し、統計加点値が所定の閾値を超えたときは、ＣＭ１１０は、ＣＭ１２０がダウンしたと判定する。ＣＭ１１０は、ダウンしたと判定したＣＭの切り離し制御や、そのＣＭの復旧またはシャットダウンのための制御を実行する。
【００５７】
なお、複数のＣＭ１１０，１２０，２１０，２２０，３１０，３３０のうちの１台が、マスタＣＭに設定されている。ダウンしたＣＭの切り離しや復旧またはシャットダウン制御は、マスタＣＭが実行する。ただし、マスタＣＭ以外の少なくとも１台のＣＭもマスタＣＭと同様の他のＣＭのダウン判定を行っている。そして、マスタＣＭがダウンしたときには、ＣＭのダウン判定を行っている所定の他のＣＭがマスタＣＭとなり、ダウンしたＣＭの切り離し制御や復旧またはシャットダウン制御を実行する。マスタＣＭを含む、ダウン判定を行っている複数台のＣＭでは、例えば、それぞれのＣＭで検出されたタイムアウトの回数が合算された統計加点値が共有される。
【００５８】
ＦＰＧＡ１０９は、ＣＭ１１０に電力を供給するＰＳＵ１４０の状態信号を監視する。ＦＰＧＡ１０９は、ＰＳＵ１４０の状態信号により停電を検出したときは、ＣＭ１１０のＲＡＭ１０２のデータイメージをＢＵＤ１０８にコピーし、コピーが完了した後にＣＭ１１０をシャットダウンする「停電処理」を実行する。この停電処理により、停電発生時でもＲＡＭ１０２に格納されたキャッシュデータやミラーキャッシュデータなどのデータの消失を防止できる。
【００５９】
ＣＭ１２０，２１０，２２０，３１０，３２０がそれぞれ有するＦＰＧＡも、ＦＰＧＡ１０９と同等の機能を備える。
ところで、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０がダウンする要因としては、それぞれが備えるＰＳＵが電力供給を停止する「停電」の他に、「ソフトエラー」があり得る。ソフトエラーは、ＣＰＵに不整合なデータが入力することなどに起因するエラーである。ソフトエラーによってダウンしたＣＭは、再起動させることによって復旧する可能性がある。
【００６０】
例えば、ＣＭ２１０がソフトエラーによってダウンした場合、他のマスタＣＭによってＣＭ２１０が再起動されることにより、ＣＭ２１０が復旧する可能性がある。ただし、ＣＭ２１０のメモリ内のデータは再起動により失われている。このため、ＣＭ２１０は、ＣＭ３１０のミラーキャッシュ３１２からローカルキャッシュ２１１にデータをコピーすることで、ローカルキャッシュ２１１を用いたアクセス制御処理を再開する。また、ＣＭ２１０のミラーキャッシュ２１２にＣＭ１１０のローカルキャッシュ１１１のデータがコピーされることで、ローカルキャッシュ１１１のデータが再度二重化される。
【００６１】
また、ソフトエラーによってダウンしたＣＭを復旧させる別の方法として、「マシンダウンリカバリ」がある。マシンダウンリカバリは、メモリの内容を保持した状態でＣＭを再起動する方法である。マシンダウンリカバリは、ダウンしたＣＭのＦＰＧＡが、他のＣＭからＳＶＣ５２０経由でマシンダウンリカバリの実行指示を受けたときに、ダウンしたＣＭのＦＰＧＡの制御によって実行される。
【００６２】
マシンダウンリカバリは、一方のローカルキャッシュのデータが他方にミラーリングされているという「ミラーリング関係」にある２台のＣＭがソフトエラーによってダウンした場合に、有用である。例えば、ＣＭ１１０，２１０がともにソフトエラーによってダウンしたケースを考える。このケースで、例えば、ＣＭ１１０，２１０の両方を単に再起動させてしまうと、ＣＭ１１０のローカルキャッシュ１１１と、ＣＭ２１０のミラーキャッシュ２１２の両方が消失してしまい、ＣＭ１１０の動作を元通りに復旧できない。これに対して、ＣＭ１１０，２１０の両方にマシンダウンリカバリを実行させることで、ＣＭ１１０のローカルキャッシュ１１１と、ＣＭ２１０のミラーキャッシュ２１２の両方が残った状態で、ＣＭ１１０，２１０の動作を再開できる可能性が生じる。ローカルキャッシュ１１１とミラーキャッシュ２１２の両方が残っていれば、動作を再開したＣＭ１１０は、ローカルキャッシュ１１１のデータが二重化された状態で、そのローカルキャッシュ１１１を用いたアクセス制御を即座に再開することができる。
【００６３】
しかしながら、マシンダウンリカバリによってミラーリング関係にある２台のＣＭを復旧させるためには、各ＣＭのダウンの要因が停電でなくソフトエラーであることを正確に判定できる必要がある。なぜなら、停電によってダウンしたＣＭは再起動することが不可能であり、このＣＭ内のローカルキャッシュまたはミラーキャッシュのデータを他のＣＭがすぐに利用することは不可能であるからである。また、停電によってダウンしたＣＭにマシンダウンリカバリが指示された場合、ダウンしたＣＭのＦＰＧＡが上記の停電処理でなくマシンダウンリカバリを実行させようとすることで、そのＣＭのＲＡＭに記憶されたデータが消失する可能性も高い。
【００６４】
ＣＭ間で監視コマンドを送信することでＣＭのダウンを検出するという前述の監視処理では、ＣＭがダウンしたことは検出できても、ダウンの要因までは特定できない。このため、監視コマンドを用いた監視結果だけでは、マシンダウンリカバリを用いてＣＭを正しく復旧させることができない可能性がある、という問題がある。
【００６５】
このような問題に対し、本実施の形態では、停電が発生したＣＭ（またはＣＥ）の情報が停電監視情報５３１に登録され、その停電監視情報５３１が、他のＣＭのダウンを検出したマスタＣＭによって参照される、という仕組みが設けられる。
【００６６】
例えば、ＣＭ１１０のＦＰＧＡ１０９は、ＰＳＵ１４０の状態信号により停電を検出したときは、監視ＦＰＧＡ５２１に対し、停電発生を通知する。監視ＦＰＧＡ５２１は、停電監視情報５３１のＣＭ１１０に対応する領域に停電フラグをセットする。また、ＦＰＧＡ１０９は、ＰＳＵ１４０の状態信号により、ＰＳＵ１４０が正常であることを検出したときは、監視ＦＰＧＡ５２１に対し、電源正常を通知する。監視ＦＰＧＡ５２１は、停電監視情報５３１のＣＭ１１０に対応する領域の停電フラグをリセットする。なお、ＣＭ１１０とＣＭ１２０とは、ＰＳＵ１４０が共通であるが、診断はそれぞれのＦＰＧＡで行う。監視ＦＰＧＡ５２１は、ＣＭごとの停電情報を停電監視情報５３１に登録する。他のＣＭのＦＰＧＡについても同様の処理が行われる。こうして、停電監視情報５３１には、ＣＭごとに停電情報が登録される。
【００６７】
マスタＣＭは、他のＣＭのダウンを検出すると、監視ＦＰＧＡ５２１に対してそのＣＭ１１０の停電情報を要求する。監視ＦＰＧＡ５２１は、停電監視情報５３１の該当ＣＭについての停電フラグに基づいて、該当ＣＭが停電していることを示す停電情報をマスタＣＭのＦＰＧＡ１０９に送信する。マスタＣＭは、受信した停電情報に基づいて、ダウンしたＣＭのダウン要因が停電か否かを判定することができる。このように、マスタＣＭは、ダウンしたＣＭのダウン要因を正確に判定することで、判定されたダウン要因に応じた適切な処理の実行をダウンしたＣＭに指示することができる。したがって、ソフトエラーによってダウンしたＣＭのローカルキャッシュおよびミラーキャッシュのデータが消失する可能性が低減する。そして、ソフトエラーによってダウンしたＣＭを、そのＣＭのローカルキャッシュが二重化された状態で短時間に復旧させることができる確率が高まる。
【００６８】
なお、監視ＦＰＧＡ５２１は、ＦＥ５００の電源ＦＰＳＵ５４０の状態信号を監視し、ＦＰＳＵ５４０の停電を検出する機能も備える。監視ＦＰＧＡ５２１は、ＦＰＳＵ５４０の停電を検出したときは、ＦＰＧＡ通信を介してＣＭ１１０，１２０，２１０，２２０，３１０，３２０にＦＥ５００の停電を通知する。
【００６９】
図６は、ＣＭの機能例を示すブロック図である。ＣＭ１１０は、ローカルキャッシュ１１１およびミラーキャッシュ１１２を有するキャッシュ部１１３と、制御部１１４と、監視部１１５と、テーブル記憶部１１６と、ＦＰＧＡ１０９とを有する。キャッシュ部１１３は、ＲＡＭ１０２の所定の記憶領域に実装される。制御部１１４および監視部１１５は、例えば、プロセッサ１０１が実行するプログラムのモジュールとして実装される。テーブル記憶部１１６は、例えば、ＲＡＭ１０２またはＳＳＤ１０３に確保した記憶領域として実装される。
【００７０】
制御部１１４は、ホスト装置６００からのアクセス要求に応じて、ローカルキャッシュ１１１を用いながら、アクセス要求先のＬＵに対するアクセスを制御する。また、制御部１１４は、ローカルキャッシュ１１１に新たなライトデータが格納されると、そのライトデータの複製データをミラーキャッシュ２１２に格納するようにＣＭ２１０に要求する。これにより、ローカルキャッシュ１１１とミラーキャッシュ２１２とをミラーリングする。また、制御部１１４は、ＣＭ３２０からの要求に応じて、ＣＭ３２０のローカルキャッシュ３２１に格納されたライトデータの複製データをミラーキャッシュ１１２に格納する。
【００７１】
監視部１１５は、監視コマンドの送信により他のＣＭの監視処理を実行する。また、ＣＭ１１０がマスタＣＭである場合、監視部１１５は、ダウンした他のＣＭを切り離す。また、監視部１１５は、ダウンした他のＣＭの停電情報の取得をＦＰＧＡ１０９に指示し、停電情報を取得させる。監視部１１５は、ダウンしたＣＭの数や、ダウンしたＣＭ間のミラーリング関係の有無、ダウンしたＣＭの停電情報から判別したダウン要因に基づいて、ダウンしたＣＭまたは全ＣＭに実行させる処理を決定し、決定した処理の実行を指示する。実行させる処理としては、再起動、マシンダウンリカバリ、疑似停電処理（後述）などがある。
【００７２】
ＦＰＧＡ１０９は、ＰＳＵ１４０の状態信号に基づいて、停電の発生および停電からの復旧を検出し、監視ＦＰＧＡ５２１に対し、検出された停電状態を示す停電情報を通知する。また、ＦＰＧＡ１０９は、ＰＳＵ１４０の停電を検出したとき、ＣＭ１１０の停電処理を実行する。また、ＦＰＧＡ１０９は、監視部１１５からの指示に応じて、ＳＶＣ５２０から他のＣＭの停電情報を取得する。また、ＦＰＧＡ１０９は、他のＣＭのＦＰＧＡからＳＶＣを通じた指示に応じて、ＣＭ１１０の再起動、マシンダウンリカバリ、疑似停電処理を実行する。
【００７３】
テーブル記憶部１１６は、ＣＭ監視テーブルを格納する。ＣＭ監視テーブルには、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０に関し、ダウン時に実行させる処理の判断などに用いる情報が登録される。
【００７４】
図７は、ＣＭ監視テーブルの例を示す図である。ＣＭ監視テーブル１１６ａは、テーブル記憶部１１６に格納される。
ＣＭ監視テーブル１１６ａには、監視部１１５が検出したストレージシステムのすべてのＣＭの状態が登録されている。ＣＭ監視テーブル１１６ａのＣＭの項目には、各ＣＭ１１０，１２０，２１０，２２０，３１０，３２０を識別する情報が登録されている。図７の例では、ＣＭに便宜的に割り当てた番号で識別している。具体的には、ＣＭ１１０に「ＣＭ０１」、ＣＭ１２０に「ＣＭ０２」、ＣＭ２１０に「ＣＭ０３」、ＣＭ２２０に「ＣＭ０４」、ＣＭ３１０に「ＣＭ０５」、ＣＭ３２０に「ＣＭ０６」を割り当てている。
【００７５】
状態の項目には、監視部１１５によって検出したＣＭ１１０，１２０，２１０，２２０，３１０，３２０の状態が登録されている。「正常」は、ＣＭが正常に動作している状態を示す。「ダウン」は、このＣＭとルータ５１０を介した通信ができなくなったことを示し、このＣＭが有するキャッシュを他のＣＭ上に再配置するなどの復旧処理が必要な状態を示す。なお、「ダウン」が検出された後、切り離されたＣＭの状態は、「切り離し」が登録されるとする。
【００７６】
ミラーキャッシュの項目には、このＣＭのローカルキャッシュのミラーリング先のＣＭを識別する情報が登録されている。例えば、「ＣＭ０１」（ＣＭ１１０）のローカルキャッシュ１１１のミラーリング先は、「ＣＭ０３」（ＣＭ２１０）であることが登録される。ダウン要因の項目には、監視部１１５がＳＶＣ５２０から取得した停電監視情報５３１に基づいて検出した「停電」または「ソフトエラー」のいずれかのダウン要因が登録されている。統計加点値の項目には、監視部１１５が他のＣＭに監視コマンドを送信して応答が得られなかったときに加点する加点値を積算した統計加点値が登録されている。
【００７７】
このＣＭ監視テーブル１１６ａは、マスタＣＭが保持し、他のＣＭがダウンしたか否かの判定や、他のＣＭがダウンしたときの復旧処理において参照する。なお、現在稼働中のマスタＣＭがダウンし、他のＣＭがマスタダウンとなる場合を想定し、ＣＭ監視テーブル１１６ａの少なくとも一部の情報をＣＭ間で共有するようにしてもよい。例えば、所定の周期でマスタＣＭから他のＣＭにＣＭ監視テーブル１１６ａの内容を通知するとしてもよい。
【００７８】
図８は、ＣＭによる停電監視処理の例を示すフローチャートである。図８に示す処理は、すべてのＣＭで実行する。図８では、ＣＭ１１０が実行する場合を示す。ＣＭ１１０による停電監視処理は、所定の周期で起動される。以下、図８に示す処理をステップ番号に沿って説明する。
【００７９】
（Ｓ１１）ＦＰＧＡ１０９は、停電監視処理を開始すると、電力の供給を受けるＰＳＵ１４０の状態信号を読み出す。状態信号は、ＰＳＵ１４０が正常であるか、異常（停電）であるかを示す。
【００８０】
（Ｓ１２）ＦＰＧＡ１０９は、ステップＳ１２で読み出したＰＳＵ１４０の状態信号に基づき、ＰＳＵ１４０に停電が発生しているか否かを判定する。停電が発生しているときは、処理をステップＳ１４に進め、停電が発生していないときは、処理をステップＳ１３に進める。
【００８１】
（Ｓ１３）ＦＰＧＡ１０９は、ＰＳＵ１４０が正常であることを確認したので、ＳＶＣ５２０の監視ＦＰＧＡ５２１にＰＳＵ１４０が正常である旨を通知する。ＦＰＧＡ１０９は、通知後、処理を終了する。
【００８２】
（Ｓ１４）ＦＰＧＡ１０９は、ＰＳＵ１４０に停電が発生しているときは、ＳＶＣ５２０の監視ＦＰＧＡ５２１にＰＳＵ１４０の停電を通知する。また、停電の発生を制御部１１４に通知する。
【００８３】
（Ｓ１５）ＦＰＧＡ１０９は、停電処理を実行する。停電処理では、ＲＡＭ１０２に格納されているデータを例えばデータイメージとしてＢＵＤ１０８に書き込み、キャッシュデータなどを保護する。書き込みが完了すると、ＦＰＧＡ１０９は動作を停止する。これにより、ＣＭ１１０はシャットダウンする。
【００８４】
このように、ＣＭ１１０では、ＦＰＧＡ１０９がＰＳＵ１４０を監視し、停電監視情報１５３を管理するＳＶＣ５２０にＰＳＵ１４０が停電しているか正常であるかのいずれかの状態を通知する。なお、図８では、所定の周期で上記処理が実行されるとしたが、例えば、ＰＳＵ１４０の状態信号に変化があったときに、ＦＰＧＡ１０９に割り込みが入るようにし、ＦＰＧＡ１０９がステップＳ１２以降の処理を実行してもよい。
【００８５】
図９は、ＳＶＣによる停電監視処理の例を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
（Ｓ２１）監視ＦＰＧＡ５２１は、ＦＥ５００に電力を供給するＦＰＳＵ５４０の状態信号を監視し、ＦＰＳＵ５４０に停電が発生したか否かを判定する。停電が発生していないときは、処理をステップＳ２２に進め、停電が発生しているときは処理をステップＳ２６に進める。
【００８６】
（Ｓ２２）ＳＶＣ５２０は、ＦＰＳＵ５４０が正常に動作しているときは、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０のＰＳＵ１４０，２４０，３４０の監視処理を行う。ＳＶＣ５２０は、監視ＦＰＧＡ５２１を介してＣＭ１１０，１２０，２１０，２２０，３１０，３２０の検出した停電情報を取得したか否かを判定する。ＳＶＣ５２０は、停電情報を取得したときは、処理をステップＳ２３に進め、停電情報を取得していないときは処理をステップＳ２１に戻す。
【００８７】
（Ｓ２３）ＳＶＣ５２０は、取得した停電情報に基づき、停電情報を送信したＣＭが停電しているか否かを判定する。ＣＭが停電であれば処理をステップＳ２４に進め、ＣＭが停電でなければ処理をステップＳ２５に進める。
【００８８】
（Ｓ２４）ＳＶＣ５２０は、ＣＭから停電の通知があったので、停電監視情報５３１の該当ＣＭに対応する停電フラグをセットし、処理をステップＳ２１に戻す。
（Ｓ２５）ＳＶＣ５２０は、ＣＭから正常の通知があったので、停電監視情報５３１の該当ＣＭに対応する停電フラグをリセットし、処理をステップＳ２１に戻す。
【００８９】
（Ｓ２６）ＳＶＣ５２０は、ＦＰＳＵ５４０に停電が発生しているので、全ＣＭ１１０，１２０，２１０，２２０，３１０，３２０に対し、ＦＰＧＡ通信を介してＦＥ５００の停電を通知する。
【００９０】
（Ｓ２７）ＳＶＣ５２０は、ＦＰＳＵ５４０が停電しているので、停電処理を行った後、動作を停止する。
このような処理により、ＦＥ５００には、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０が検出した停電状態が停電監視情報５３１に登録される。マスタＣＭは、必要に応じてＳＶＣ５２０に要求することによって、停電監視情報５３１に登録されている対象ＣＭの停電状態を取得することができる。なお、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０は、ＦＥ停電の通知を受けた場合には、停電処理を行って動作を停止する。なお、図９に示したフローチャートでは、ＳＶＣ停電監視処理において、ＣＭから停電情報を取得したか否かをチェックしているが、処理はこれに限定されない。例えば、停電情報の取得時にＳＶＣ５２０に割り込みを発生させ、割り込み処理によって停電情報を取得したときの処理を行うとしてもよい。
【００９１】
図１０は、マスタＣＭによる監視処理の例を示すフローチャートである。図１０では、ＣＭ１１０がマスタＣＭに設定されているものとする。図１０の処理は、一定時間ごとに実行される。以下、図１０に示す処理をステップ番号に沿って説明する。
【００９２】
（Ｓ３１）マスタＣＭ１１０の監視部１１５は、他のＣＭから対象ＣＭを選択し、選択した対象ＣＭに対して、ルータ５１０を経由して監視コマンドを送信する。
（Ｓ３２）マスタＣＭ１１０の監視部１１５は、対象ＣＭからの応答が所定の期間得られない応答タイムアウトを監視する。監視部１１５は、応答タイムアウトが発生したときは、処理をステップＳ３３に進める。応答が得られた場合は、処理をステップＳ３９に進める。
【００９３】
（Ｓ３３）マスタＣＭ１１０の監視部１１５は、応答タイムアウトを検出したときは、応答が得られなかった対象ＣＭに対応するＣＭ監視テーブル１１６ａの統計加点値に所定の点数を加点し、値を更新する。
【００９４】
（Ｓ３４）マスタＣＭ１１０の監視部１１５は、更新した統計加点値と、予め決められた閾値とを比較する。監視部１１５は、対象ＣＭの統計加点値が閾値を超えているときは、対象ＣＭがダウンしていると判定し、処理をステップＳ３５に進める。監視部１１５は、統計加点値が閾値を超えていないときは、対象ＣＭは正常であると判定し、処理をステップＳ３９に進める。
【００９５】
（Ｓ３５）マスタＣＭ１１０の監視部１１５は、ダウンと判定した対象ＣＭの停電情報の取得を、ＦＰＧＡ１０９に指示する。指示を受けたＦＰＧＡ１０９は、ＳＶＣ５２０に対し、ダウンと判定した対象ＣＭの停電情報を要求する。ＳＶＣ５２０は、記憶部５３０に格納された停電監視情報５３１から対象ＣＭの停電情報を抽出し、マスタＣＭ１１０に送信する。ＦＰＧＡ１０９は、受信した停電情報を監視部１１５に受け渡す。
【００９６】
（Ｓ３６）マスタＣＭ１１０の監視部１１５は、取得した停電情報に基づいて、ダウンと判定した対象ＣＭが停電しているか否かを判定する。監視部１１５は、対象ＣＭのダウン要因が停電であると判定したときは、処理をステップＳ３７に進める。監視部１１５は、対象ＣＭのダウン要因が停電ではないときは、ソフトエラーであると判定し、処理をステップＳ３８に進める。
【００９７】
（Ｓ３７）マスタＣＭ１１０の監視部１１５は、ダウンと判定した対象ＣＭに対応するＣＭ監視テーブル１１６ａの状態の項目に「ダウン」を登録し、ダウン要因の項目に「停電」を登録する。監視部１１５は、その後、処理をステップＳ３９に進める。
【００９８】
（Ｓ３８）マスタＣＭ１１０の監視部１１５は、ダウンと判定した対象ＣＭに対応するＣＭ監視テーブル１１６ａの状態の項目に「ダウン」を登録し、ダウン要因の項目に「ソフトエラー」を登録する。
【００９９】
（Ｓ３９）マスタＣＭ１１０の監視部１１５は、全ＣＭについて、監視コマンド送信によるＣＭのダウン検出処理が終了したか否かを判定する。監視部１１５は、全ＣＭについてダウン検出処理が終了したときは、処理をステップＳ４０に進める。監視部１１５は、全ＣＭについてダウン検出処理が終了していないときは、対象ＣＭを検出処理が終了していない他のＣＭとし、処理をステップＳ３１に戻す。
【０１００】
（Ｓ４０）マスタＣＭ１１０の監視部１１５は、更新したＣＭ監視テーブル１１６ａを参照し、ダウンを検出したＣＭが有るか否かを判定する。ダウンＣＭが検出されなかったときは、処理を終了する。ダウンＣＭが検出されたときは、処理を図１１のステップＳ５１に進める。
【０１０１】
以上の処理手順が実行されることにより、ＣＭ監視テーブル１１６ａが監視の結果に応じて更新される。なお、上記の処理手順では、統計加点値をマスタＣＭ１１０の監視コマンド送信結果によって算出するとしていたが、他のＣＭも同様に監視コマンドを送信し、自装置以外のＣＭの監視を行うとしてもよい。例えば、他のＣＭは、監視コマンドの送信結果によって統計加点値を算出し、これをマスタＣＭ３２０に通知する。マスタＣＭ１１０の監視部１１５は、他のＣＭから取得した統計加点値を自装置が検出した統計加点値に加算する。
【０１０２】
次に、更新したＣＭ監視テーブル１１６ａに基づき、ダウンを検出したＣＭが存在する場合の処理について説明する。図１１は、マスタＣＭが他のＣＭのダウンを検出したときの処理の例を示すフローチャートである。図１１では、図１０と同様に、ＣＭ１１０がマスタＣＭに設定されているものとする。以下、図１１に示す処理をステップ番号に沿って説明する。
【０１０３】
（Ｓ５１）マスタＣＭ１１０の制御部１１４は、ＣＭ監視テーブル１１６ａに基づき、状態の項目が「ダウン」となっている切り離し対象のＣＭの情報を抽出する。
（Ｓ５２）マスタＣＭ１１０の制御部１１４は、ＣＭ監視テーブル１１６ａに基づき、抽出した切り離し対象ＣＭとミラーリング関係にある他のＣＭの状態の項目をチェックする。例えば、切り離し対象ＣＭがＣＭ２１０（ＣＭ０３）であるとすると、ＣＭ２１０のローカルキャッシュ２１１のミラーリング先であるＣＭ３１０（ＣＭ０５）が、チェックの対象になる。また、ＣＭ２１０のミラーキャッシュ２１２に対応する元データが格納されたローカルキャッシュ１１１を有するＣＭ１１０（ＣＭ０１）も、チェックの対象になる。制御部１１４は、切り離し対象ＣＭとミラーリング関係にある少なくとも１つの他のＣＭがダウンしていれば、処理を図１２に示すフローチャートのステップＳ６１に進める。切り離し対象ＣＭとミラーリング関係にある他のＣＭがいずれもダウンしていなければ、処理をステップＳ５３に進める。
【０１０４】
（Ｓ５３）マスタＣＭ１１０の制御部１１４は、ＣＭ監視テーブル１１６ａに基づいて、切り離し対象ＣＭのダウン要因を特定する。ダウン要因が「停電」であるときは、処理をステップＳ５４に進める。ダウン要因が「停電」でないとき、すなわち「ソフトエラー」であるときは、処理をステップＳ５５に進める。
【０１０５】
（Ｓ５４）マスタＣＭ１１０の制御部１１４は、ＣＭ監視テーブル１１６ａの対象ＣＭに対応する状態の項目に「切り離し」を登録し、「停電」でダウンしている対象ＣＭをストレージシステムから切り離す。
【０１０６】
（Ｓ５５）マスタＣＭ１１０の制御部１１４は、ＣＭ監視テーブル１１６ａの対象ＣＭに対応する状態の項目に「切り離し」を登録し、「ソフトエラー」でダウンしている対象ＣＭをストレージシステムから切り離す。また、制御部１１４は、対象ＣＭを再起動させるようにＦＰＧＡ１０９に指示する。ＦＰＧＡ１０９は、ＳＶＣ５２０を介して対象ＣＭのＦＰＧＡに再起動の実行を指示する。
【０１０７】
なお、対象ＣＭは、再起動後に、ミラーリング関係にある他のＣＭのローカルキャッシュまたはミラーキャッシュの内容に基づいて、対象ＣＭのローカルキャッシュおよびミラーキャッシュを復元する。復元が完了すると、対象ＣＭは再度システムに組み込まれ、通常動作を再開する。
【０１０８】
（Ｓ５６）マスタＣＭ１１０の制御部１１４は、ダウンを検出したＣＭの中にステップＳ５１以降の処理が済んでいないＣＭが有るか否かを判定する。未処理のダウンＣＭが有るときは、処理をステップＳ５１に戻し、上記の処理を繰り返す。未処理のダウンＣＭがないときは、処理を終了する。
【０１０９】
以上の処理手順が実行されることにより、ダウンを検出したＣＭとミラーリング関係にある他のＣＭがダウンしていないときは、ダウンを検出したＣＭはシステムから切り離される。また、ソフトエラーによってダウンしたＣＭは、再起動されることで復旧することができる。
【０１１０】
次に、ミラーリング関係にあるＣＭがともにダウンしていた場合の処理について説明する。図１２は、マスタＣＭがミラーリング関係にある２ＣＭのダウンを検出したときの処理の例を示すフローチャートである。図１２では、図１０，１１と同様に、ＣＭ１１０がマスタＣＭに設定されているものとする。また、図１１に示したフローチャートの処理によって、ミラーリング関係にある２台のＣＭがともにダウンしていることが検出されているとする。便宜的に、ダウンを検出したミラーリング関係にある２台のＣＭをそれぞれ第１対象ＣＭ、第２対象ＣＭとする。以下、図１２に示す処理をステップ番号に沿って説明する。
【０１１１】
（Ｓ６１）マスタＣＭ１１０の制御部１１４は、第２対象ＣＭのダウン要因をＣＭ監視テーブル１１６ａから読み出す。なお、第２対象ＣＭは、図１１のステップＳ５２でダウンしていると判定された他のＣＭに相当する。
【０１１２】
（Ｓ６２）マスタＣＭ１１０の制御部１１４は、第２対象ＣＭのダウン要因がソフトエラーであるか否かを判定する。制御部１１４は、ダウン要因がソフトエラーであるときは、処理をステップＳ６３に進め、ダウン要因がソフトエラーでないときは、処理をステップＳ６５に進める。
【０１１３】
（Ｓ６３）マスタＣＭ１１０の制御部１１４は、第１対象ＣＭのダウン要因がソフトエラーであるか否かを判定する。制御部１１４は、ダウン要因がソフトエラーであるときは、処理をステップＳ６４に進め、ダウン要因がソフトエラーでないときは、処理をステップＳ６５に進める。
【０１１４】
（Ｓ６４）マスタＣＭ１１０の制御部１１４は、第１対象ＣＭおよび第２対象ＣＭのダウン要因がともにソフトエラーであるときは、全ＣＭにマシンダウンリカバリを実行させる。具体的には、制御部１１４は、全ＣＭにマシンダウンリカバリを実行させるようにＦＰＧＡ１０９に指示する。ＦＰＧＡ１０９は、ＳＶＣ５２０を介して他の全ＣＭに対してマシンダウンリカバリの実行を指示する。なお、他のＣＭのうちダウンしていないＣＭに対しては、監視部１１５がルータ５１０を介してマシンダウンリカバリの実行を指示してもよい。
【０１１５】
ＦＰＧＡ１０９は、他の全ＣＭへのマシンダウンリカバリの実行を指示した後、ＣＭ１１０にマシンダウンリカバリを実行させる。これにより、ＣＭ１１０は、ＲＡＭ１０２に格納されたデータを保持したまま、再起動する。
【０１１６】
（Ｓ６５）マスタＣＭ１１０の制御部１１４は、第１対象ＣＭまたは第２対象ＣＭのいずれかのダウン要因がソフトエラーでないときは、全ＣＭに対し、擬似停電処理を実行させる。疑似停電処理とは、停電していないＣＭが実行する、停電時の停電処理と同じ処理である。すなわち、疑似停電処理の実行を指示されたＣＭは、ＲＡＭのデータイメージをＢＵＤにコピーし、コピーが完了した後にシャットダウンする。
【０１１７】
制御部１１４は、他のＣＭのうち、停電していないすべてのＣＭに疑似停電処理を実行させるようにＦＰＧＡ１０９に指示する。ＰＰＧＡ１０９は、ＳＶＣ５２０を介して、停電していないすべてのＣＭに疑似停電処理の実行を指示する。なお、他のＣＭのうちダウンしていないＣＭに対しては、監視部１１５がルータ５１０を介して疑似停電処理の実行を指示してもよい。
【０１１８】
ＦＰＧＡ１０９は、他の停電していないすべてのＣＭに疑似停電処理の実行を指示した後、ＣＭ１１０に疑似停電処理を実行させる。すなわち、ＦＰＧＡ１０９は、ＲＡＭ１０２のデータイメージをＢＵＤ１０８にコピーし、コピーが完了すると動作を停止する。
【０１１９】
上記の処理手順が実行されることにより、ミラーリング関係にある第１対象ＣＭと第２対象ＣＭが同時にダウンしたときは、それぞれのダウン要因を確認し、ダウン要因に適したデータの保護処理を行うことができる。マスタＣＭは、第１対象ＣＭおよび第２対象ＣＭがともにソフトエラーであるとき、全ＣＭに対してマシンダウンリカバリを指示し、キャッシュ領域を含むメモリ内容を保持した状態での再起動を実行させる。
【０１２０】
これにより、少なくとも、ミラーリング関係にある両ＣＭのローカルキャッシュおよびミラーキャッシュのデータを消失することなく、両ＣＭの動作が再開される確実性を高めることができる。また、複数のＣＭでソフトエラーが発生している場合、その他のＣＭでも今後にソフトエラーが発生する可能性がある。そのため、ミラーリング関係にあるＣＭだけでなく、その他の全ＣＭにもマシンダウンリカバリを実行させることで、他のＣＭでのソフトエラーの発生を未然に防ぐことができる。
【０１２１】
一方、第１対象ＣＭまたは第２対象ＣＭのいずれかのダウンが停電である場合、マシンダウンリカバリによって復旧できるのは一方のＣＭだけである。このため、ミラーリング関係にあるローカルキャッシュとミラーキャッシュのうちの一方だけしかすぐに利用できるようにはならず、そのローカルキャッシュのデータが二重化された状態ですぐに運用を再開することはできない。さらに、停電していないＣＭのマシンダウンリカバリに失敗してしまうと、二重化された両方のデータを消失してしまうというリスクもある。
【０１２２】
このため、第１対象ＣＭまたは第２対象ＣＭのいずれかのダウンが停電である場合、停電していない全ＣＭに疑似停電処理を実行させる。これにより、少なくとも、ミラーリング関係にあるローカルキャッシュおよびミラーキャッシュの両方のデータを消失する可能性を低減することができる。また、ミラーリング関係にあるＣＭが停電しているということは、複数のＣＥで停電が発生していることになる。このため、その他のＣＥでも停電が発生する可能性があると考えられる。そこで、停電していないＣＭについても疑似停電処理を実行させることで、停電の発生を未然に防ぎ、データ消失の可能性を低減することができる。
【０１２３】
図１３は、ミラーリング関係にあるＣＭがともに停電したときの処理の例を示すシーケンス図である。図１３では、ＣＭ３２０がマスタＣＭに設定され、ＣＭ１１０，１２０，２１０，２２０が停電によってダウンしたとする。以下、図１３に示す処理をステップ番号に沿って説明する。
【０１２４】
（ＳＴ０１）ＣＥ１００の電源１４０がダウンし、ＣＭ１１０に停電が発生する。
（ＳＴ０２）ＣＭ１１０のＦＰＧＡ１０９は、電源１４０の状態信号を確認し、停電を検出する。ＦＰＧＡ１−９は、ＳＶＣ５２０に停電の発生を通知する。
【０１２５】
（ＳＴ０３）電源１４０がダウンし、ＣＭ１２０に停電が発生する。
（ＳＴ０４）ＣＭ１２０のＦＰＧＡは、電源１４０の状態信号を確認し、停電を検出する。ＣＭ１２０のＦＰＧＡは、ＳＶＣ５２０に停電の発生を通知する。
【０１２６】
（ＳＴ０５）ＣＥ３００の電源３４０がダウンし、ＣＭ２１０に停電が発生する。
（ＳＴ０６）ＣＭ２１０のＦＰＧＡは、電源２４０の状態信号を確認し、停電を検出する。ＣＭ２１０のＦＰＧＡは、ＳＶＣ５２０に停電の発生を通知する。
【０１２７】
（ＳＴ０７）電源２４０がダウンし、ＣＭ２２０に停電が発生する。
（ＳＴ０８）ＣＭ２２０のＦＰＧＡは、電源２４０の状態信号を確認し、停電を検出する。ＣＭ２２０のＦＰＧＡは、ＳＶＣ５２０に停電の発生を通知する。
【０１２８】
（ＳＴ０９）ＳＶＣ５２０の監視ＦＰＧＡ５２１は、ＣＭ１１０，１２０，２１０，２２０の停電通知を取得し、停電監視情報５３１に停電通知を行ったＣＭの停電を登録する。
【０１２９】
（ＳＴ１０）マスタＣＭであるＣＭ３２０は、ルータ５１０を介してＣＭ１１０，１２０，２１０，２２０に監視コマンドを送信し、監視コマンドに対する応答の有無によってＣＭダウンを検出するＣＭ間監視を行う。ＣＭ３２０は、ＣＭ１１０，１２０，２１０，２２０から応答が得られないことから、ＣＭ１１０，１２０，２１０，２２０のダウンを検出する。
【０１３０】
（ＳＴ１１）ＣＭ３２０は、ダウンを検出したＣＭ、例えば、ＣＭ１１０のダウン要因が停電であるか否かを確認する。ＣＭ３２０は、ＳＶＣ５２０に対し、ＣＭ１１０の停電情報を要求し、ＳＶＣ５２０から停電監視情報５３１に基づくＣＭ１１０の停電情報を取得する。図１３の例では、ＣＭ３２０には、ＣＭ１１０は停電でダウンしていることが通知される。
【０１３１】
（ＳＴ１２）ＣＭ３２０は、ダウンを検出したＣＭとミラーリング関係にある他のＣＭがダウンしているか否かを確認する。図１３の例では、ＣＭ１１０とミラーリング関係にあるＣＭ２１０も停電でダウンしていることが確認される。ＣＭ３２０は、ミラーリング関係にあるＣＭ２１０も停電でダウンしているので、全ＣＭに対し、擬似停電処理の実行を指示する。なお、図１３の例では、停電していないＣＭはＣＭ３１０のみであるので、ＣＭ３１０に疑似停電処理の実行が指示される。
【０１３２】
（ＳＴ１３）ＣＭ３２０は、自装置も擬似停電処理を実行する。
図１４は、ミラーリング関係にあるＣＭがともにソフトエラーでダウンしたときの処理の例を示すシーケンス図である。図１４では、ＣＭ３１０がマスタＣＭに設定され、ＣＭ１１０，１２０，２１０，２２０がソフトエラーによってダウンしたとする。以下、図１４に示す処理をステップ番号に沿って説明する。
【０１３３】
（ＳＴ２１）ＣＭ１１０にソフトエラーが発生する。ＣＭ１１０は、ソフトエラーのため、ＳＶＣ５２０や他のＣＭにエラーを通知することができない。
（ＳＴ２２）ＣＭ１２０にソフトエラーが発生する。ＣＭ１２０も同様に、エラーの通知はできない。
【０１３４】
（ＳＴ２３）ＣＭ２１０にソフトエラーが発生する。ＣＭ２１０も同様に、エラーの通知はできない。
（ＳＴ２４）ＣＭ２２０にソフトエラーが発生する。ＣＭ２２０も同様に、エラーの通知はできない。
【０１３５】
（ＳＴ２５）マスタＣＭであるＣＭ３２０は、ルータ５１０を介してＣＭ１１０，１２０，２１０，２２０に監視コマンドを送信し、監視コマンドに対する応答の有無によってＣＭダウンを検出するＣＭ間監視を行う。ＣＭ３２０は、ＣＭ１１０，１２０，２１０，２２０から応答が得られないことから、ＣＭ１１０，１２０，２１０，２２０のダウンを検出する。
【０１３６】
（ＳＴ２６）ＣＭ３２０は、ダウンを検出したＣＭ、例えば、ＣＭ１１０のダウン要因が停電であるか否かを確認する。ＣＭ３２０は、ＳＶＣ５２０に対し、ＣＭ１１０の停電情報を要求し、ＳＶＣ５２０から停電監視情報５３１に基づくＣＭ１１０の停電情報を取得する。図１４の例では、ＣＭ３２０には、ＣＭ１１０に停電が発生していないことが通知される。これにより、ＣＭ３２０は、ＣＭ１１０はソフトエラーが発生していると判定する。
【０１３７】
（ＳＴ２７）ＣＭ３２０は、ダウンを検出したＣＭとミラーリング関係にある他のＣＭがダウンしているか否かを確認する。図１４の例では、ＣＭ１１０とミラーリング関係にあるＣＭ２１０もソフトエラーでダウンしていることが確認される。ＣＭ３２０は、ミラーリング関係にあるＣＭ２１０もソフトエラーでダウンしているので、他の全ＣＭに対し、マシンダウンリカバリの実行を指示する。
【０１３８】
（ＳＴ２８）ＣＭ３２０は、自装置もマシンダウンリカバリを実行する。
このように、マスタＣＭは、ミラーリング関係にある２ＣＭが同時にダウンしたとき、ダウン要因がともにソフトエラーである場合は、全ＣＭに対してマシンダウンリカバリを実行するように指示する。これにより、ソフトエラーが発生したＣＭのキャッシュデータが保持されたまま復旧する可能性を高くすることができる。
【０１３９】
図１５は、ソフトエラーの発生によりマシンダウンリカバリが実行されたＣＭでの復旧処理例を示すフローチャートである。図１５では、図１４の例のように、ミラーリング関係にあるＣＭ１１０，２１０でソフトエラーが発生し、それに伴ってＣＭ１１０，２１０がマシンダウンリカバリを実行した場合のＣＭ１１０の処理について示す。以下、図１５に示す処理をステップ番号に沿って説明する。
【０１４０】
（Ｓ７１）ＣＭ１１０が再起動し、監視部１１５の処理が再開される。
（Ｓ７２）監視部１１５は、ＣＭ監視テーブル１１６ａに基づき、ＣＭ１１０のローカルキャッシュ１１１のミラーリング先のＣＭをＣＭ２１０と特定する。監視部１１５は、ＣＭ２１０に対してＣＭ２１０のミラーキャッシュ２１２のデータ読み出しを要求する。監視部１１５は、ミラーキャッシュ２１２から読み出されたデータと、ローカルキャッシュ１１１に格納されたデータとを照合し、これらの整合性を確認する。
【０１４１】
（Ｓ７３）監視部１１５は、これらのデータが整合しているかを判定する。整合している場合、処理をステップＳ７４に進める。整合していない場合、処理をステップＳ７６に進める。
【０１４２】
（Ｓ７４）監視部１１５は、ＣＭ監視テーブル１１６ａに基づき、ＣＭ１１０のミラーキャッシュ１１２の元データが格納されているＣＭをＣＭ３１０と特定する。監視部１１５は、ＣＭ３１０に対してＣＭ３１０のローカルキャッシュ３１１のデータ読み出しを要求する。監視部１１５は、ローカルキャッシュ３１１から読み出されたデータをミラーキャッシュ１１２に書き込み、ミラーキャッシュ１１２のデータを復元する。
【０１４３】
（Ｓ７５）監視部１１５は、ＣＭ１１０の動作を再開させる。すなわち、制御部１１４によるＬＵへのアクセス制御が再開される。
（Ｓ７６）データが整合していない場合、ＣＭ１１０がマシンダウンリカバリに失敗した可能性がある。この場合、監視部１１５は、他の装置（例えば、ＳＶＣ５２０）にＣＭ１１０で動作を継続不可能なエラーが発生したことを通知する。
【０１４４】
（Ｓ７７）監視部１１５は、ＣＭ１１０をシャットダウンする。
このように、ソフトエラーが発生し、マシンダウンリカバリが実行されたＣＭは、自装置内のローカルキャッシュがミラーリング先のデータと整合するかを確認し、整合した場合のみ通常の動作を再開する。これにより、正しく復旧したＣＭの動作だけを早急に開始させることができ、復旧時間を短縮しつつその信頼性を向上させることができる。
【０１４５】
なお、第１の実施の形態の情報処理は、情報処理装置１０，２０，３０に用いられるプロセッサに、プログラムを実行させることで実現できる。第２の実施の形態の情報処理は、ＣＭ１１０が有するプロセッサ１０１およびＣＭ１２０，２１０，２２０，３１０，３２０が有するプロセッサにプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体に記録できる。
【０１４６】
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、ＣＭ１１０が有する制御部１１４およびＣＭ１２０，２１０，２２０，３１０，３２０が有する制御部に相当する機能を実現するプログラムを別個のプログラムとし、各プログラムを別個に配布してもよい。ＣＭ１１０が有する制御部１１４およびＣＭ１２０，２１０，２２０，３１０，３２０が有する制御部の機能が別個のコンピュータにより実現されてもよい。コンピュータは、例えば、記録媒体に記録されたプログラムを、ＲＡＭ１０２やＳＳＤ１０３に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１４７】
１０，２０，３０  情報処理装置
１１，２１，３１  制御部
１１ａ，２１ａ  停電信号
１２，２２  メモリ
１２ａ  キャッシュ領域
１３，２３  電源
２２ａ  ミラーキャッシュ領域
４０  監視部
４１  記憶部
【図１】
0006540202.tif 000002
【図２】
0006540202.tif 000003
【図３】
0006540202.tif 000004
【図４】
0006540202.tif 000005
【図５】
0006540202.tif 000006
【図６】
0006540202.tif 000007
【図７】
0006540202.tif 000008
【図８】
0006540202.tif 000009
【図９】
0006540202.tif 000010
【図１０】
0006540202.tif 000011
【図１１】
0006540202.tif 000012
【図１２】
0006540202.tif 000013
【図１３】
0006540202.tif 000014
【図１４】
0006540202.tif 000015
【図１５】
0006540202.tif 000016