(57)【要約】【課題】ストレージ装置の復旧を高速化すること。【解決手段】ストレージ装置１００は、ストレージ装置１００内の制御装置１０１がダウンしたことを検出する。次に、ストレージ装置１００は、ダウンした制御装置１０１が有する揮発性メモリ１０２のデータと、揮発性メモリ１０２のデータのバックアップ先となる不揮発性メモリ１０３のバックアップデータと、のいずれが有効であるかを判定する。そして、ストレージ装置１００は、不揮発性メモリ１０３のバックアップデータが有効である場合には、ダウンした制御装置１０１に、制御装置１０１の動作制御のためのソフトウェアを再起動させる。さらに、ストレージ装置１００は、ソフトウェアを再起動した制御装置１０１に、不揮発性メモリ１０３のバックアップデータを用いて、揮発性メモリ１０２のデータを復元させる。【選択図】図１
2014106567.tif 000002
【特許請求の範囲】
【請求項１】
ストレージへのアクセスを制御する制御装置と、
前記制御装置が有し、前記制御装置の動作制御のための制御データを含むデータを記憶する揮発性メモリと、
前記制御装置が有し、前記データのバックアップ先となる不揮発性メモリと、
前記制御装置に障害が発生したことを検出する検出部と、
前記検出部によって前記制御装置に障害が発生したことが検出された場合に、前記不揮発性メモリに記憶されているバックアップデータが有効か否かを判定する判定部と、
前記判定部によって前記不揮発性メモリのバックアップデータが有効であると判定された場合には、前記揮発性メモリのデータをバックアップせずに再起動した後に、前記不揮発性メモリのバックアップデータを前記揮発性メモリに復元する第１の処理を前記制御装置に実行させる制御部と、
を有することを特徴とするストレージ装置。
【請求項２】
前記制御部は、
前記判定部によって前記不揮発性メモリのバックアップデータが有効ではないと判定された場合には、前記揮発性メモリを初期化せずに再起動した後に、前記揮発性メモリのデータを前記不揮発性メモリにバックアップする第２の処理と、前記揮発性メモリのデータを前記不揮発性メモリにバックアップして再起動した後に、前記不揮発性メモリのバックアップデータを前記揮発性メモリに復元する第３の処理とを、前記制御装置に順次実行させることを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記制御装置は、
前記不揮発性メモリのバックアップデータが有効であるか否かを示すフラグを有し、前記揮発性メモリを初期化した場合、または前記揮発性メモリのデータを前記不揮発性メモリにバックアップした場合に、前記フラグを有効に設定し、前記不揮発性メモリのバックアップデータを前記揮発性メモリに復元した場合、または前記揮発性メモリのデータを更新した場合に、前記フラグを無効に設定し、
前記判定部は、
前記フラグを参照して、前記フラグが有効である場合に、前記不揮発性メモリのバックアップデータが有効であると判定することを特徴とする請求項１または２に記載のストレージ装置。
【請求項４】
前記判定部は、
前記制御装置が複数存在する時には、前記検出部によって複数の制御装置に障害が発生したことが検出された場合に、前記複数の制御装置の各々の制御装置について、当該制御装置が有する不揮発性メモリのバックアップデータが有効か否かを判定し、
前記制御部は、
前記判定部によって前記各々の制御装置について有効であると判定された場合には、前記第１の処理を前記各々の制御装置に実行させることを特徴とする請求項１〜３のいずれか一つに記載のストレージ装置。
【請求項５】
前記制御部は、
前記判定部によって前記各々の制御装置について有効ではないと判定された場合には、前記第２の処理と、前記第３の処理と、を前記各々の制御装置に順次実行させることを特徴とする請求項４に記載のストレージ装置。
【請求項６】
コンピュータが、
ストレージへのアクセスを制御する制御装置に障害が発生したことを検出し、
前記制御装置に障害が発生したことを検出した場合に、揮発性メモリに記憶されている前記制御装置の動作制御のための制御データを含むデータのバックアップ先となる不揮発性メモリに記憶されているバックアップデータが有効か否かを判定し、
前記不揮発性メモリのバックアップデータが有効であると判定した場合には、前記揮発性メモリのデータをバックアップせずに再起動した後に、前記不揮発性メモリのバックアップデータを前記揮発性メモリに復元する第１の処理を前記制御装置に実行させる、
処理を実行することを特徴とする復旧方法。
【請求項７】
コンピュータに、
ストレージへのアクセスを制御する制御装置に障害が発生したことを検出し、
前記制御装置に障害が発生したことを検出した場合に、揮発性メモリに記憶されている前記制御装置の動作制御のための制御データを含むデータのバックアップ先となる不揮発性メモリに記憶されているバックアップデータが有効か否かを判定し、
前記不揮発性メモリのバックアップデータが有効であると判定した場合には、前記揮発性メモリのデータをバックアップせずに再起動した後に、前記不揮発性メモリのバックアップデータを前記揮発性メモリに復元する第１の処理を前記制御装置に実行させる、
処理を実行させることを特徴とする復旧プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、復旧方法、および復旧プログラムに関する。
【背景技術】
【０００２】
従来、ストレージ装置内のストレージへのアクセスを制御する制御装置に障害が発生した場合に、制御装置のファームウェアを再起動して揮発性メモリのデータを不揮発性メモリにバックアップすることにより、揮発性メモリのデータの損失を防ぐ技術がある。その後、制御装置の電源をＯＦＦ／ＯＮして、バックアップしたデータを用いて揮発性メモリのデータを復元することにより、ストレージ装置が復旧される。
【０００３】
関連する先行技術としては、継電装置が電源ＯＮで不揮発性メモリから記憶媒体にデータを読み出す処理が完了したか否かをチェックし、電源ＯＦＦ時に読み出す処理が完了していない場合は記憶媒体のデータで不揮発性メモリのデータを上書きしないものがある。また、プロセッサが、ディスクアレイに対するアレイ制御アルゴリズムおよびディスクアレイに関する構成情報を共通化してディスクアレイに対して異なる複数のファイル制御プログラムで少なくともデータの分割処理および結合処理を行う技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１９１５４７号公報
【特許文献２】特開平８−１４７１１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、ストレージ装置内の制御装置に障害が発生した場合に、制御装置のファームウェアを再起動したり制御装置の電源をＯＦＦ／ＯＮしたりすることになり、ストレージ装置を復旧するまでに時間がかかる。
【０００６】
１つの側面では、本発明は、ストレージ装置の復旧を高速化することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、ストレージへのアクセスを制御する制御装置に障害が発生したことを検出し、制御装置に障害が発生したことを検出した場合に、揮発性メモリに記憶されている制御装置の動作制御のための制御データを含むデータのバックアップ先となる不揮発性メモリに記憶されているバックアップデータが有効か否かを判定し、不揮発性メモリのバックアップデータが有効であると判定した場合には、揮発性メモリのデータをバックアップせずに再起動した後に、不揮発性メモリのバックアップデータを揮発性メモリに復元する第１の処理を制御装置に実行させるストレージ装置、復旧方法、および復旧プログラムが提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、ストレージ装置の復旧を高速化することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかるストレージ装置における制御装置の復旧処理の一実施例を示す説明図である。
【図２】図２は、ストレージ装置１００のハードウェア構成例を示すブロック図である。
【図３】図３は、ストレージ装置１００の機能的構成例を示すブロック図である。
【図４】図４は、ＣＭ２１０の動作の一例を示す説明図である。
【図５】図５は、第３の期間において両方のＣＭ２１０がダウンした場合のＣＭ復旧の動作の一例を示す説明図である。
【図６】図６は、第４の期間において両方のＣＭ２１０がダウンした場合のＣＭ復旧の動作の一例を示す説明図である。
【図７】図７は、第３の期間において一方のＣＭ２１０がダウンして、第４の期間において他方のＣＭ２１０がダウンした場合のＣＭ復旧の動作の一例を示す説明図（その１）である。
【図８】図８は、第３の期間において一方のＣＭ２１０がダウンして、第４の期間において他方のＣＭ２１０がダウンした場合のＣＭ復旧の動作の一例を示す説明図（その２）である。
【図９】図９は、監視モジュール２２０によるＣＭ復旧処理手順の一例を示すフローチャートである。
【図１０】図１０は、ＣＭ２１０によるリカバリ処理手順の一例を示すフローチャートである。
【図１１】図１１は、ＣＭ２１０によるパワーオフ処理手順の一例を示すフローチャートである。
【図１２】図１２は、ＣＭ２１０によるパワーオン処理手順の一例を示すフローチャートである。
【図１３】図１３は、ＣＭ２１０による短縮リカバリ処理手順の一例を示すフローチャートである。
【図１４】図１４は、ＣＭ２１０による組み込み処理手順の一例を示すフローチャートである。
【図１５】図１５は、ＣＭ２１０によるデータコピー処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、この発明にかかるストレージ装置、復旧方法、および復旧プログラムの実施の形態を詳細に説明する。
【００１１】
（ストレージ装置における制御装置の復旧処理の内容）
図１は、実施の形態にかかるストレージ装置における制御装置の復旧処理の一実施例を示す説明図である。図１において、ストレージ装置１００は、制御装置１０１を有する。制御装置１０１は、ストレージ装置１００が有するストレージへのアクセスを制御する装置であり、揮発性メモリ１０２と不揮発性メモリ１０３とを有する。
【００１２】
揮発性メモリ１０２は、制御データを含むデータを記憶する記憶媒体である。制御データとは、制御装置１０１の動作制御のためのデータであって、例えば、コピーセッションの進捗状況を示すデータやストレージの構成を示すデータなどである。不揮発性メモリ１０３は、揮発性メモリ１０２のデータのバックアップ先となる記憶媒体である。
【００１３】
ストレージ装置１００は、電源を切断する場合には、揮発性メモリ１０２のデータを複製した複製データを、不揮発性メモリ１０３にバックアップデータとして記憶してから、電源を切断する。また、ストレージ装置１００は、電源を投入した場合には、揮発性メモリ１０２を初期化し、不揮発性メモリ１０３のバックアップデータを用いて揮発性メモリ１０２のデータを復元する。
【００１４】
また、ストレージ装置１００は、制御装置１０１がソフトウェア異常またはハードウェア異常によってダウンした場合には、制御装置１０１がダウンした時点での制御装置１０１の状態に応じて、異なる手順で制御装置１０１を復旧する。ここで、ソフトウェア異常とは、例えば、ゼロ除算、ページフォルト、論理矛盾などである。ハードウェア異常とは、例えば、制御装置１０１の温度異常などである。ダウンとは、ソフトウェア異常またはハードウェア異常によって、制御装置１０１のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が停止し、制御装置１０１が応答を受け付けなくなることである。
【００１５】
まず、制御装置１０１が、電源を投入して不揮発性メモリ１０３のバックアップデータを用いて揮発性メモリ１０２のデータを復元してから、電源を切断するまでの間（以下の説明では、「第１の期間」と表記する場合がある）に、ダウンした場合を例に挙げて、制御装置１０１の復旧処理の内容について説明する。
【００１６】
＜制御装置１０１が第１の期間にダウンした場合の制御装置１０１の復旧処理の一例＞
この場合、制御装置１０１の不揮発性メモリ１０３のバックアップデータは有効ではない。不揮発性メモリ１０３のバックアップデータが有効ではないとは、制御装置１０１を復旧する際に揮発性メモリ１０２に記憶するべきデータが、ダウンした時点での不揮発性メモリ１０３のバックアップデータではないことを示す。
【００１７】
換言すれば、不揮発性メモリ１０３のバックアップデータが有効ではないとは、制御装置１０１を復旧する際に揮発性メモリ１０２に記憶するべきデータが、ダウンした時点での揮発性メモリ１０２のデータであることを示す。そのため、ストレージ装置は、制御装置１０１に、電源を切断する前に揮発性メモリ１０２のデータを不揮発性メモリ１０３のバックアップデータに上書きさせておき、電源を投入し直してから揮発性メモリ１０２のデータを復元させることになる。
【００１８】
（１）ストレージ装置１００は、制御装置１０１にリカバリ処理を実行させる。リカバリ処理では、制御装置１０１は、電源を切断せずに制御装置１０１を制御するソフトウェアを再起動し、揮発性メモリ１０２のデータを複製した複製データを不揮発性メモリ１０３にバックアップデータとして記憶する。ソフトウェアとは、例えば、ファームウェアである。これにより、ストレージ装置１００は、制御装置１０１に、揮発性メモリ１０２のデータを初期化せずに動作可能な状態に移行して、ダウン時の揮発性メモリ１０２のデータをバックアップさせることができる。
【００１９】
（２）ストレージ装置１００は、制御装置１０１にパワーオフ処理を実行させる。パワーオフ処理では、制御装置１０１は、揮発性メモリ１０２のデータを複製した複製データを不揮発性メモリ１０３にバックアップデータとして記憶してから、電源を切断する。これにより、ストレージ装置１００は、制御装置１０１に、パワーオフ処理を実行する時の揮発性メモリ１０２のデータをバックアップさせることができる。
【００２０】
（３）ストレージ装置１００は、制御装置１０１にパワーオン処理を実行させる。パワーオン処理では、制御装置１０１は、電源を投入し、揮発性メモリ１０２を初期化し、不揮発性メモリ１０３のバックアップデータを用いて揮発性メモリ１０２のデータを復元する。これにより、ストレージ装置１００は、制御装置１０１を、ダウンする前の状態に復旧することができる。
【００２１】
次に、制御装置１０１が、電源を投入して揮発性メモリ１０２を初期化してから不揮発性メモリ１０３のバックアップデータを用いて揮発性メモリ１０２のデータを復元するまでの間（以下の説明では、「第２の期間」と表記する場合がある）に、ダウンした場合を例に挙げて、制御装置１０１の復旧処理の内容について説明する。
【００２２】
＜制御装置１０１が第２の期間にダウンした場合の制御装置１０１の復旧処理の一例＞
この場合、制御装置１０１の不揮発性メモリ１０３のバックアップデータは有効である。不揮発性メモリ１０３のバックアップデータが有効であるとは、制御装置１０１を復旧する際に揮発性メモリ１０２に記憶すべきデータが、ダウンした時点での不揮発性メモリ１０３のバックアップデータであることを示す。
【００２３】
換言すれば、不揮発性メモリ１０３のバックアップデータが有効であるとは、ダウンした時点での揮発性メモリ１０３のデータが損失してもよいデータであることを示す。そのため、制御装置１０１は、揮発性メモリ１０２を初期化して、不揮発性メモリ１０３のバックアップデータを用いて揮発性メモリ１０２のデータを復元することになる。
【００２４】
（４）ストレージ装置１００は、制御装置１０１に短縮リカバリ処理を実行させる。短縮リカバリ処理では、制御装置１０１は、電源を切断せずに制御装置１０１を制御するソフトウェアを再起動し、揮発性メモリ１０２を初期化し、不揮発性メモリ１０３のバックアップデータを用いて揮発性メモリ１０２のデータを復元する。これにより、ストレージ装置１００は、制御装置１０１を、ダウンする前の状態に復旧することができる。
【００２５】
このように、ストレージ装置１００は、第１および第２の期間のいずれの期間にダウンしたかに応じて、復旧の手順を変更する。これにより、ストレージ装置１００は、第１の期間にダウンした場合には、制御装置１０１に揮発性メモリ１０２のデータをバックアップさせておき、制御装置１０１を、ダウンする前の状態に復旧することができる。
【００２６】
一方で、ストレージ装置１００は、第２の期間にダウンした場合には、制御装置１０１に揮発性メモリ１０２のデータをバックアップさせないため、不揮発性メモリ１０３のバックアップデータが初期化データで上書きされることを防止することができる。結果として、ストレージ装置１００は、制御装置１０１を、ダウンする前の状態に復旧することができる。また、ストレージ装置１００は、制御装置１０１に揮発性メモリ１０２のデータをバックアップする処理を実行させないため、制御装置１０１の復旧を高速化することができる。
【００２７】
図１の例では、第１および第２の期間のいずれの期間に制御装置１０１がダウンしたかに応じて、復旧の手順を変更したが、これに限らない。例えば、揮発性メモリ１０２のデータを更新してから電源を切断するまでの間、および揮発性メモリ１０２を初期化してから揮発性メモリ１０２のデータを更新するまでの間のいずれの期間に制御装置１０１がダウンしたかに応じて、復旧の手順を変更してもよい。
【００２８】
（ストレージ装置１００のハードウェア構成例）
次に、実施の形態にかかるストレージ装置１００のハードウェア構成例について説明する。図２は、ストレージ装置１００のハードウェア構成例を示すブロック図である。図２において、ストレージ装置１００は、ＣＭ（Ｃｏｎｔｒｏｌ  Ｍｏｄｕｌｅ）２１０＃０，２１０＃１と、監視モジュール２２０＃０，２２０＃１と、ストレージ２３０と、を有する。また、ストレージ装置１００は、ホスト装置２４０と接続されている。以下の説明では、任意のＣＭを「ＣＭ２１０」と表記する場合がある。また、任意の監視モジュールを「監視モジュール２２０」と表記する場合がある。
【００２９】
ストレージ装置１００は、ホスト装置２４０から入力されたデータをストレージ２３０に記憶したり、ストレージ２３０のデータをホスト装置２４０に出力したりするコンピュータである。
【００３０】
ＣＭ２１０＃０は、図１に示した制御装置１０１の一例であり、ストレージ２３０へのアクセスを制御する装置である。また、ＣＭ２１０は、起動済ではないＣＭ２１０がある場合は、起動済ではないＣＭ２１０を起動させる。
【００３１】
ＣＭ２１０＃０は、ＣＰＵ２１１＃０と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２１２＃０と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２１３＃０と、バックアップ媒体２１４＃０と、通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２１５＃０を有する。また、ＣＭ２１０＃０の各構成部は、例えば、バス（不図示）によってそれぞれ接続されている。
【００３２】
ここで、ＣＰＵ２１１＃０は、ＣＭ２１０＃０の全体の制御を司る。以下の説明では、任意のＣＭ２１０が有するＣＰＵを「ＣＰＵ２１１」と表記する場合がある。ＲＯＭ２１２＃０は、ブートプログラムなどのプログラムを記憶している。以下の説明では、任意のＣＭ２１０が有するＲＯＭを「ＲＯＭ２１２」と表記する場合がある。
【００３３】
ＲＡＭ２１３＃０は、図１に示した揮発性メモリ１０２の一例であり、ＣＭ２１０＃０の動作制御のための制御データを含むデータを記憶する。制御データとは、例えば、コピーセッションの進捗状況を示すデータやストレージ２３０の構成を示すデータなどである。また、ＲＡＭ２１３＃０は、バックアップ媒体２１４＃０のバックアップデータが有効か否かを示すフラグを記憶する。また、ＲＡＭ２１３＃０は、ＣＰＵ２１１＃０のワークエリアとして使用される。以下の説明では、任意のＣＭ２１０が有するＲＡＭを「ＲＡＭ２１３」と表記する場合がある。
【００３４】
バックアップ媒体２１４＃０は、図１に示した不揮発性メモリ１０３の一例であり、ＲＡＭ２１３＃０のデータのバックアップ先として使用される。以下の説明では、任意のＣＭ２１０が有するバックアップ媒体を「バックアップ媒体２１４」と表記する場合がある。
【００３５】
通信Ｉ／Ｆ２１５＃０は、監視モジュール２２０＃０，２２０＃１と、ストレージ２３０と、ホスト装置２４０と、の通信を司る。以下の説明では、任意のＣＭ２１０が有する通信Ｉ／Ｆを「通信Ｉ／Ｆ２１５」と表記する場合がある。ＣＭ２１０＃１の説明は、ＣＭ２１０＃０と同様のため省略する。
【００３６】
監視モジュール２２０＃０は、ＣＭ２１０＃０と接続され、ＣＭ２１０＃０がダウンしたことを検出する装置である。また、監視モジュール２２０＃０は、監視モジュール２２０＃１と接続され、監視モジュール２２０＃１からＣＭ２１０＃１がダウンしたことを示す通知を受信する。監視モジュール２２０＃０は、すべてのＣＭ２１０がダウンした場合には、図１に示した復旧処理を実行して、ＣＭ２１０＃０に、リカバリ処理、パワーオフ処理、パワーオン処理、または短縮リカバリ処理を実行させて、ＣＭ２１０＃０を復旧する。
【００３７】
監視モジュール２２０＃０は、ＣＰＵ２２１＃０と、メモリ２２２＃０と、通信Ｉ／Ｆ２２３＃０と、を有する。また、監視モジュール２２０＃０の各構成部は、例えば、バス（不図示）によってそれぞれ接続されている。ここで、ＣＰＵ２２１＃０は、監視モジュール２２０＃０の全体の制御を司る。以下の説明では、任意の監視モジュール２２０が有するＣＰＵを「ＣＰＵ２２１」と表記する場合がある。
【００３８】
メモリ２２２＃０は、ブートプログラムや復旧プログラムなどのプログラムを記憶している。以下の説明では、任意の監視モジュール２２０が有するメモリを「メモリ２２２」と表記する場合がある。通信Ｉ／Ｆ２２３＃０は、ＣＭ２１０＃０との通信を司る。以下の説明では、任意の監視モジュール２２０が有する通信Ｉ／Ｆを「通信Ｉ／Ｆ２２３」と表記する場合がある。監視モジュール２２０＃１の説明は、監視モジュール２２０＃０と同様のため省略する。
【００３９】
ストレージ２３０は、磁気ディスクであり、ＣＭ２１０の制御で書き込まれたデータを記憶する。ストレージ２３０は、複数の磁気ディスクであってもよく、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）技術が適用されていてもよい。ホスト装置２４０は、ストレージ装置１００に対して、ストレージ２３０へのデータの格納要求や、ストレージ２３０のデータの読み出し要求を送信するコンピュータである。
【００４０】
図２の説明では、ＣＭ２１０が２台の場合を例に挙げたが、これに限らない。例えば、ＣＭ２１０は、１台であってもよいし、３台以上であってもよい。また、図２の説明では、監視モジュール２２０が２台の場合を例に挙げたが、これに限らない。例えば、監視モジュール２２０は、１台であってもよいし、３台以上であってもよい。また、図２の説明では、ストレージ２３０が磁気ディスクである場合を例に挙げたが、これに限らない。例えば、ストレージ２３０は、光ディスクであってもよいし、磁気テープであってもよい。
【００４１】
（ストレージ装置１００の機能的構成例）
次に、図３を用いて、ストレージ装置１００の機能的構成例について説明する。図３は、ストレージ装置１００の機能的構成例を示すブロック図である。ストレージ装置１００は、検出部３０１と、判定部３０２と、制御部３０３と、を含む。検出部３０１と、判定部３０２と、制御部３０３とは、例えば、図２に示した監視モジュール２２０のメモリ２２２などの記憶装置に記憶されたプログラムをＣＰＵ２２１に実行させることにより、または、通信Ｉ／Ｆ２２３により、その機能を実現する。
【００４２】
また、ストレージ装置１００は、上述したように、制御装置１０１を有する。制御装置１０１とは、ストレージ２３０へのアクセスを制御する装置であって、例えば、図２に示したＣＭ２１０である。ＣＭ２１０は、複数存在してもよい。ＣＭ２１０は、揮発性メモリ１０２と、不揮発性メモリ１０３と、を有する。
【００４３】
揮発性メモリ１０２とは、ＣＭ２１０の動作制御のための制御データを含むデータを記憶する記憶媒体であって、例えば、図２に示したＲＡＭ２１３である。また、揮発性メモリとは、ＣＭ２１０の外部に存在し、ＣＭ２１０がアクセス可能な記憶媒体であってもよい。不揮発性メモリ１０３とは、揮発性メモリ１０２のデータのバックアップ先となる記憶媒体であって、例えば、図２に示したバックアップ媒体２１４である。不揮発性メモリとは、ＣＭ２１０の外部に存在し、ＣＭ２１０がアクセス可能なメモリであってもよい。
【００４４】
ＣＭ２１０は、自装置に障害が発生してダウンする場合、ダウンする直前に、ダウンすることを示す通知を検出部３０１に送信する。また、ＣＭ２１０は、自装置に障害が発生してダウンする場合、ダウンする直前に、ダウンすることを示す情報をＲＯＭ２１２に記憶してもよい。
【００４５】
ＣＭ２１０は、バックアップ媒体２１４のバックアップデータが有効であるか否かを示すフラグを有する。ＣＭ２１０は、例えば、ＲＡＭ２１３を初期化した場合、またはＲＡＭ２１３のデータをバックアップ媒体２１４にバックアップした場合に、フラグを有効に設定する。また、ＣＭ２１０は、例えば、バックアップ媒体２１４のバックアップデータをＲＡＭ２１３に復元した場合、またはＲＡＭ２１３のデータを更新した場合に、フラグを無効に設定する。
【００４６】
また、起動済のＣＭ２１０は、起動済ではないＣＭ２１０を検出した場合には、起動済ではないＣＭ２１０を再起動させ、起動済ではないＣＭ２１０に自装置が有するＲＡＭ２１３のデータを送信する。また、起動済ではないＣＭ２１０は、他のＣＭ２１０から再起動させられた場合には、他の２１０からデータを受信し、受信したデータを自装置が有するＲＡＭ２１３に記憶する。
【００４７】
検出部３０１は、ＣＭ２１０に障害が発生したことを検出する。検出部３０１は、例えば、接続されているＣＭ２１０からダウンしたことを示す情報の通知を受けることにより、ＣＭ２１０がダウンしたことを検出する。また、検出部３０１は、一定時間間隔で、ＣＭ２１０が有するＲＯＭ２１２にダウンしたことを示す情報があるか否かを確認することにより、ＣＭ２１０がダウンしたことを検出してもよい。
【００４８】
検出部３０１は、ＣＭ２１０が複数存在する時は、複数のＣＭ２１０の各々のＣＭ２１０について、当該ＣＭ２１０がダウンしたことを検出する。検出部３０１は、例えば、接続されているＣＭ２１０からダウンしたことを示す情報の通知を受け、他の監視モジュール２２０から当該監視モジュール２２０が接続されているＣＭ２１０がダウンしたことを示す情報の通知を受ける。これにより、検出部３０１は、複数のＣＭ２１０がダウンしたことを検出する。検出結果は、例えば、監視モジュール２２０内のメモリ２２２に記憶される。これにより、検出部３０１は、ＣＭ２１０を復旧させるトリガを発生させることができる。
【００４９】
判定部３０２は、検出部３０１によってＣＭ２１０に障害が発生したことが検出された場合に、バックアップ媒体２１４に記憶されているバックアップデータが有効か否かを判定する。また、ＣＭ２１０が複数存在する時には、検出部３０１によって複数のＣＭ２１０に障害が発生したことが検出される場合がある。この場合には、判定部３０２は、複数のＣＭ２１０の各々のＣＭ２１０について、当該ＣＭ２１０が有するバックアップ媒体２１４のバックアップデータが有効か否かを判定する。
【００５０】
判定部３０２は、例えば、検出部３０１によってＣＭ２１０がダウンしたことが検出された場合に、ダウンしたＣＭ２１０が有するＲＯＭ２１２のフラグを参照する。そして、判定部３０２は、フラグが有効である場合に、バックアップ媒体２１４のバックアップデータが有効であると判定する。また、判定部３０２は、例えば、他の監視モジュール２２０から当該監視モジュール２２０が接続されているＣＭ２１０が有するＲＯＭ２１２のフラグが有効であるか否かを示す情報の通知を受ける。これにより、判定部３０２は、複数のＣＭ２１０のバックアップデータが有効であるか否かを判定する。判定結果は、例えば、監視モジュール２２０内のメモリ２２２に記憶される。これにより、制御部３０３は、判定部３０２による判定結果に応じて、ＣＭ２１０の復旧手順を選択することができる。
【００５１】
制御部３０３は、判定部３０２によってバックアップ媒体２１４のバックアップデータが有効であると判定された場合には、第１の処理をＣＭ２１０に実行させる。ここで、第１の処理とは、例えば、ＲＡＭ２１３のデータをバックアップせずに再起動した後に、バックアップ媒体２１４のバックアップデータをＲＡＭ２１３に復元する処理である。第１の処理とは、例えば、図１に示した短縮リカバリ処理である。
【００５２】
また、制御部３０３は、判定部３０２によってバックアップ媒体２１４のバックアップデータが有効ではないと判定された場合には、第２の処理と、第３の処理とを、ＣＭ２１０に順次実行させる。ここで、第２の処理とは、例えば、ＲＡＭ２１３を初期化せずに再起動した後に、ＲＡＭ２１３のデータをバックアップ媒体２１４にバックアップする処理である。第２の処理とは、例えば、図１に示したリカバリ処理である。
【００５３】
第３の処理とは、例えば、ＲＡＭ２１３のデータをバックアップ媒体２１４にバックアップして再起動した後に、バックアップ媒体２１４のバックアップデータをＲＡＭ２１３に復元する処理である。第３の処理とは、例えば、図１に示したパワーオフ処理およびパワーオン処理である。
【００５４】
また、制御部３０３は、ＣＭ２１０が複数存在する時に、判定部３０２によって各々のＣＭ２１０について有効であると判定された場合には、第１の処理を各々のＣＭ２１０に実行させる。また、制御部３０３は、ＣＭ２１０が複数存在する時に、判定部３０２によって各々のＣＭ２１０について有効ではないと判定された場合には、第２の処理と、第３の処理と、を各々のＣＭ２１０に順次実行させる。
【００５５】
また、複数のＣＭ２１０の中に、バックアップ媒体２１４のバックアップデータが有効であると判定された第１のＣＭ２１０と、バックアップ媒体２１４のバックアップデータが有効ではないと判定された第２のＣＭ２１０と、が存在する場合がある。ここで、第１のＣＭ２１０がＣＭ２１０＃０であり、第２のＣＭ２１０がＣＭ２１０＃１であるとして、以下の説明を行う。この場合には、制御部３０３は、第２の処理と第３の処理とをＣＭ２１０＃０に順次実行させる。
【００５６】
ここで、ＣＭ２１０＃０は、第３の処理を実行した後に、起動済ではないＣＭ２１０＃１を検出する。また、ＣＭ２１０＃０は、起動済ではないＣＭ２１０＃１を示す情報を監視モジュール２２０から受信することにより、起動済ではないＣＭ２１０＃１を検出してもよい。ＣＭ２１０＃０は、起動済ではないＣＭ２１０＃１を検出すると、ＣＭ２１０＃１にソフトウェアを再起動させて、ＣＭ２１０＃１に自装置が有するＲＡＭ２１３＃０のデータを送信する。
【００５７】
一方で、ＣＭ２１０＃１は、ＣＭ２１０＃０によって再起動された後に、ＣＭ２１０＃０から受信したデータを自装置が有するＲＡＭ２１３＃１に記憶する。これにより、制御部３０３は、ＣＭ２１０を復旧し、ストレージ装置を復旧することができる。
【００５８】
（ストレージ装置１００におけるＣＭ復旧の動作の一例）
次に、図４〜図８を用いて、ストレージ装置１００におけるＣＭ復旧の動作の一例について説明する。以下の説明では、ＣＭ２１０の動作の一例を図４に示し、図４に示した動作の最中にＣＭ２１０がダウンした場合について、どの期間にＣＭ２１０がダウンしたかに応じて実行されるＣＭ復旧の動作の一例を図５〜図８に示す。
【００５９】
＜ＣＭ２１０の動作の一例＞
まず、図４を用いて、ＣＭ２１０の動作の一例について説明する。図４は、ＣＭ２１０の動作の一例を示す説明図である。図４において、（１１）各ＣＭ２１０は、電源を投入して、パワーオン処理を開始する。ここで、ＲＡＭ２１３には、電源が切断されていたためデータは記憶されていない。バックアップ媒体２１４には、バックアップデータ「ＡＡ」が記憶されている。フラグは、設定されていない。
【００６０】
（１２）各ＣＭ２１０は、ＲＡＭ２１３を初期化する。ここで、ＲＡＭ２１３には、初期化データ「００」が記憶される。（１３）各ＣＭ２１０は、ＲＡＭ２１３にバックアップ媒体２１４のバックアップデータを上書きすべき状態であるため、バックアップデータが有効であるとして、フラグを初期化する。ここで、フラグには、初期化により「ＯＦＦ」が設定される。ここで、「ＯＦＦ」は、バックアップデータが有効であることを示す。
【００６１】
（１４）各ＣＭ２１０は、バックアップ媒体２１４のバックアップデータ「ＡＡ」を用いて、ＲＡＭ２１３のデータを復元する。ここで、ＲＡＭ２１３には、データ「ＡＡ」が記憶される。（１５）各ＣＭ２１０は、ＲＡＭ２１３にバックアップ媒体２１４のバックアップデータを上書きするべきではない状態であるため、バックアップデータが有効ではないとして、フラグに「ＯＮ」を設定する。ここで、フラグには、「ＯＮ」が設定される。ここで、「ＯＮ」は、バックアップデータが有効ではないことを示す。（１６）各ＣＭ２１０は、パワーオン処理を終了する。これにより、各ＣＭ２１０は、ストレージ２３０へのアクセスを制御する通常動作に移行する。
【００６２】
（１７）各ＣＭ２１０は、通常動作の最中において、ＲＡＭ２１３のデータを更新する。ここで、ＲＡＭ２１３には、データ「ＣＣ」が記憶されたとする。（１８）各ＣＭ２１０は、パワーオフ処理を開始する。（１９）各ＣＭ２１０は、ＲＡＭ２１３のデータを複製した複製データを、バックアップ媒体２１４にバックアップデータとして記憶する。ここで、バックアップ媒体２１４には、バックアップデータ「ＣＣ」が記憶される。
【００６３】
（２０）各ＣＭ２１０は、電源を切断して、パワーオフ処理を終了する。ここで、ＲＡＭ２１３のデータ「ＣＣ」は、ＲＡＭ２１３が揮発性であって、電源が切断されたため、消去される。フラグの設定も、同様に消去される。
【００６４】
ストレージ装置１００は、図４に示した動作の最中にＣＭ２１０がダウンした場合、ダウンした時点でのバックアップ媒体２１４のバックアップデータが有効であるか否かに基づいて、ＣＭ２１０の復旧手順を変更する。具体的には、ストレージ装置１００内の監視モジュール２２０により、ＣＭ２１０が復旧される。
【００６５】
図４に示す第３の期間は、バックアップデータがＲＡＭ２１３のデータより有効ではない期間であり、フラグが「ＯＮ」に設定されている期間である。一方で、図４に示す第４の期間は、バックアップデータがＲＡＭ２１３のデータより有効である期間であり、フラグが「ＯＦＦ」に設定されている期間である。
【００６６】
第３の期間の始点および第４の期間の終点は、（１７）のデータ更新が終了した時点であってもよい。第３の期間の終点および第４の期間の始点は、（１９）のバックアップが終了した時点であってもよい。この場合は、例えば、電源切断後もフラグを保持するために、フラグはＲＯＭ２１２などの不揮発性の記憶領域によって実現される。
【００６７】
＜第３の期間において両方のＣＭ２１０がダウンした場合のＣＭ復旧の動作の一例＞
次に、図５を用いて、図４に示した第３の期間において両方のＣＭ２１０がダウンした場合のＣＭ復旧の動作について説明する。
【００６８】
図５は、第３の期間において両方のＣＭ２１０がダウンした場合のＣＭ復旧の動作の一例を示す説明図である。図５において、図４に示した（１７）のデータ更新が終了した後に、（２１）各ＣＭ２１０がダウンした場合を例に挙げる。この場合、監視モジュール２２０は、各ＣＭ２１０がダウンしたことを検出し、各ＣＭのフラグをチェックする。監視モジュール２２０は、各ＣＭのフラグが「ＯＮ」であるため、各ＣＭ２１０にリカバリ処理の開始指示を送信する。
【００６９】
（２２）各ＣＭ２１０は、リカバリ処理の開始指示を受信して、リカバリ処理を開始する。（２３）各ＣＭ２１０は、ソフトウェアを再起動する。ここで、各ＣＭ２１０は電源の切断を行わないため、ＲＡＭ２１３のデータ「ＣＣ」は消去されない。
【００７０】
（２４）各ＣＭ２１０は、ＲＡＭ２１３のデータを複製した複製データを、バックアップ媒体２１４にバックアップデータとして記憶する。ここで、バックアップ媒体２１４には、バックアップデータ「ＣＣ」が記憶される。（２５）各ＣＭ２１０は、リカバリ処理を終了し、終了通知を監視モジュール２２０に送信する。
【００７１】
監視モジュール２２０は、各ＣＭ２１０がリカバリ処理を終了したことを検出し、各ＣＭ２１０にパワーオフ処理の開始指示を送信する。（２６）各ＣＭ２１０は、パワーオフ処理を開始する。（２７）各ＣＭ２１０は、ＲＡＭ２１３のデータを複製した複製データを、バックアップ媒体２１４にバックアップデータとして記憶する。ここで、バックアップ媒体２１４には、バックアップデータ「ＣＣ」が記憶される。（２８）各ＣＭ２１０は、電源を切断して、パワーオフ処理を終了し、終了通知を監視モジュール２２０に送信する。ここで、ＲＡＭ２１３のデータ「ＣＣ」は、電源が切断されたため、消去される。フラグの設定も、同様に消去される。
【００７２】
監視モジュール２２０は、各ＣＭ２１０がパワーオフ処理を終了したことを検出し、各ＣＭ２１０にパワーオン処理の開始指示を送信する。（２９）各ＣＭ２１０は、パワーオン処理の開始指示を受信すると、電源を投入して、パワーオン処理を開始する。ここで、ＲＡＭ２１３には、電源が切断されていたためデータは記憶されていない。バックアップ媒体２１４には、バックアップデータ「ＣＣ」が記憶されている。フラグは、設定されていない。
【００７３】
（３０）各ＣＭ２１０は、ＲＡＭ２１３を初期化する。ここで、ＲＡＭ２１３には、初期化データ「００」が記憶される。（３１）各ＣＭ２１０は、バックアップデータが有効であるとして、フラグを初期化する。ここで、フラグには、初期化により「ＯＦＦ」が設定される。（３２）各ＣＭ２１０は、バックアップ媒体２１４のバックアップデータ「ＣＣ」を用いて、ＲＡＭ２１３のデータを復元する。ここで、ＲＡＭ２１３には、データ「ＣＣ」が記憶される。
【００７４】
（３３）各ＣＭ２１０は、バックアップデータが有効ではないとして、フラグに「ＯＮ」を設定する。ここで、フラグには、「ＯＮ」が設定される。（３４）各ＣＭ２１０は、パワーオン処理を終了する。これにより、監視モジュール２２０は、各ＣＭ２１０に揮発性メモリ１０２のデータをバックアップさせておき、各ＣＭ２１０を、ダウンする前の状態に復旧することができる。
【００７５】
＜第４の期間において両方のＣＭ２１０がダウンした場合のＣＭ復旧の動作の一例＞
次に、図６を用いて、図４に示した第４の期間において両方のＣＭ２１０がダウンした場合のＣＭ復旧の動作について説明する。
【００７６】
図６は、第４の期間において両方のＣＭ２１０がダウンした場合のＣＭ復旧の動作の一例を示す説明図である。図６において、図４に示した（１３）のフラグ初期化が終了した後に、（４１）各ＣＭ２１０がダウンした場合を例に挙げる。この場合、監視モジュール２２０は、各ＣＭ２１０がダウンしたことを検出し、各ＣＭのフラグをチェックする。監視モジュール２２０は、各ＣＭのフラグが「ＯＦＦ」であるため、各ＣＭ２１０に短縮リカバリ処理の開始指示を送信する。
【００７７】
（４２）各ＣＭ２１０は、短縮リカバリ処理の開始指示を受信すると、短縮リカバリ処理を開始する。（４３）各ＣＭ２１０は、ソフトウェア（例えば、ファームウェア）を再起動する。ここで、ＲＡＭ２１３には、データ「００」が記憶されている。バックアップ媒体２１４には、バックアップデータ「ＡＡ」が記憶されている。フラグには、「ＯＦＦ」が設定されている。
【００７８】
（４４）各ＣＭ２１０は、ＲＡＭ２１３を初期化する。ここで、ＲＡＭ２１３には、初期化データ「００」が記憶される。（４５）各ＣＭ２１０は、フラグを初期化する。ここで、フラグには、初期化により「ＯＦＦ」が設定される。
【００７９】
（４６）各ＣＭ２１０は、バックアップ媒体２１４のバックアップデータ「ＡＡ」を用いて、ＲＡＭ２１３のデータを復元する。ここで、ＲＡＭ２１３には、データ「ＡＡ」が記憶される。（４７）各ＣＭ２１０は、フラグに「ＯＮ」を設定する。ここで、フラグには、「ＯＮ」が設定される。（４８）各ＣＭ２１０は、短縮リカバリ処理を終了する。
【００８０】
これにより、監視モジュール２２０は、各ＣＭ２１０に揮発性メモリ１０２のデータをバックアップさせないため、不揮発性メモリ１０３のバックアップデータが初期化データで上書きされることを防止することができる。結果として、監視モジュール２２０は、各ＣＭ２１０を、ダウンする前の状態に復旧することができる。また、監視モジュール２２０は、各ＣＭ２１０に揮発性メモリ１０２のデータをバックアップさせないため、ＣＭ２１０の復旧を高速化することができる。
【００８１】
＜第３の期間において一方のＣＭ２１０がダウンして、第４の期間において他方のＣＭ２１０がダウンした場合のＣＭ復旧の動作の一例＞
次に、図７および図８を用いて、図４に示した第３の期間において一方のＣＭ２１０がダウンして、図４に示した第４の期間において他方のＣＭ２１０がダウンした場合のＣＭ復旧の動作について説明する。
【００８２】
図７および図８は、第３の期間において一方のＣＭ２１０がダウンして、第４の期間において他方のＣＭ２１０がダウンした場合のＣＭ復旧の動作の一例を示す説明図である。図７において、（５１）図４に示した（１５）のフラグ「ＯＮ」設定が終了した時にＣＭ２１０＃０がダウンし、（５２）図４に示した（１４）のリストアが終了し（１５）のフラグ「ＯＮ」設定が終了する前にＣＭ２１０＃１がダウンした場合を例に挙げる。
【００８３】
この場合、監視モジュール２２０は、各ＣＭ２１０がダウンしたことを検出し、各ＣＭのフラグをチェックする。監視モジュール２２０は、各ＣＭのフラグに「ＯＮ」と「ＯＦＦ」が混在しているため、フラグが「ＯＦＦ」であるＣＭ２１０＃１の起動を抑止し、フラグが「ＯＮ」であるＣＭ２１０＃０にリカバリ処理の開始指示を送信する。
【００８４】
（５３）ＣＭ２１０＃１は、起動抑止される。（５４）ＣＭ２１０＃０は、リカバリ処理の開始指示を受信して、リカバリ処理を開始する。（５５）ＣＭ２１０＃０は、ソフトウェアを再起動する。ここで、ＣＭ２１０＃０は電源の切断を行わないため、ＲＡＭ２１３のデータ「ＡＡ」は消去されない。
【００８５】
（５６）ＣＭ２１０＃０は、ＲＡＭ２１３のデータを複製した複製データを、バックアップ媒体２１４にバックアップデータとして記憶する。ここで、バックアップ媒体２１４には、バックアップデータ「ＡＡ」が記憶される。（５７）ＣＭ２１０＃０は、リカバリ処理を終了し、終了通知を監視モジュール２２０に送信する。
【００８６】
監視モジュール２２０は、ＣＭ２１０＃０がリカバリ処理を終了したことを検出し、ＣＭ２１０＃０にパワーオフ処理の開始指示を送信する。（５８）ＣＭ２１０＃０は、パワーオフ処理を開始する。（５９）ＣＭ２１０＃０は、ＲＡＭ２１３のデータを複製した複製データを、バックアップ媒体２１４にバックアップデータとして記憶する。ここで、バックアップ媒体２１４には、バックアップデータ「ＡＡ」が記憶される。（６０）ＣＭ２１０＃０は、電源を切断して、パワーオフ処理を終了し、終了通知を監視モジュール２２０に送信する。ここで、ＲＡＭ２１３のデータ「ＡＡ」は、電源が切断されたため、消去される。フラグの設定も、同様に消去される。
【００８７】
監視モジュール２２０は、ＣＭ２１０＃０がパワーオフ処理を終了したことを検出し、ＣＭ２１０＃０にパワーオン処理の開始指示を送信する。（６１）ＣＭ２１０＃０は、電源を投入して、パワーオン処理を開始する。ここで、ＲＡＭ２１３には、電源が切断されていたためデータは記憶されていない。バックアップ媒体２１４には、バックアップデータ「ＡＡ」が記憶されている。フラグは、設定されていない。
【００８８】
（６２）ＣＭ２１０＃０は、ＲＡＭ２１３を初期化する。ここで、ＲＡＭ２１３には、初期化データ「００」が記憶される。（６３）ＣＭ２１０＃０は、バックアップデータが有効であるとして、フラグを初期化する。ここで、フラグには、初期化により「ＯＦＦ」が設定される。
【００８９】
（６４）ＣＭ２１０＃０は、バックアップ媒体２１４のバックアップデータ「ＡＡ」を用いて、ＲＡＭ２１３のデータを復元する。ここで、ＲＡＭ２１３には、データ「ＡＡ」が記憶される。（６５）ＣＭ２１０＃０は、バックアップデータが有効ではないとして、フラグに「ＯＮ」を設定する。ここで、フラグには、「ＯＮ」が設定される。（６６）ＣＭ２１０＃０は、パワーオン処理を終了する。
【００９０】
これにより、監視モジュール２２０は、ＣＭ２１０＃０に揮発性メモリ１０２のデータをバックアップさせておき、ＣＭ２１０＃０を、ダウンする前の状態に復旧することができる。次に、各ＣＭ２１０は、図８に示す動作に移行する。
【００９１】
図８において、（６７）ＣＭ２１０＃０は、起動済ではないＣＭ２１０＃１を検出すると、組み込み処理を開始する。（６８）ＣＭ２１０＃０は、データコピー処理の開始指示を送信する。（６９）ＣＭ２１０＃１は、データコピー処理の開始指示を受信すると、データコピー処理を開始する。（７０）ＣＭ２１０＃１は、ソフトウェアを再起動する。（７１）ＣＭ２１０＃１は、フラグを初期化する。ここで、フラグは、「ＯＦＦ」が設定される。
【００９２】
（７２）ＣＭ２１０＃０は、ＲＡＭ２１３のデータをＣＭ２１０＃１に送信する。一方で、ＣＭ２１０＃１は、ＣＭ２１０＃０からデータを受信し、受信したデータをＲＡＭ２１３に記憶する。（７３）ＣＭ２１０＃０は、組み込み処理を終了する。
【００９３】
（７４）ＣＭ２１０＃１は、フラグに「ＯＮ」を設定する。ここで、フラグには、「ＯＮ」が設定される。（７５）ＣＭ２１０＃１は、データコピー処理を終了する。これにより、監視モジュール２２０は、各ＣＭ２１０のうち、ＲＡＭ２１３のデータが新しい方のＣＭ２１０を復旧させることができる。結果として、ＲＡＭ２１３のデータが新しい方のＣＭ２１０により、ＲＡＭ２１３のデータが古い方のＣＭ２１０が復旧されて、各ＣＭ２１０の制御データが同一になる。
【００９４】
（ＣＭ復旧処理手順）
次に、図９を用いて、監視モジュール２２０によるＣＭ復旧処理手順の一例について説明する。
【００９５】
図９は、監視モジュール２２０によるＣＭ復旧処理手順の一例を示すフローチャートである。図９において、監視モジュール２２０は、すべてのＣＭ２１０がダウンしているか否かを判定する（ステップＳ９０１）。
【００９６】
ここで、ダウンしていないＣＭ２１０がある場合（ステップＳ９０１：Ｎｏ）、監視モジュール２２０は、ステップＳ９０１の処理に戻る。一方で、すべてのＣＭ２１０がダウンしている場合（ステップＳ９０１：Ｙｅｓ）、監視モジュール２２０は、すべてのＣＭ２１０のフラグをチェックする（ステップＳ９０２）。
【００９７】
次に、監視モジュール２２０は、チェックした、すべてのＣＭ２１０のフラグが一致しているか否かを判定する（ステップＳ９０３）。ここで、すべてのＣＭ２１０のフラグが一致している場合（ステップＳ９０３：Ｙｅｓ）、監視モジュール２２０は、フラグが「ＯＮ」で一致しているか否かを判定する（ステップＳ９０４）。
【００９８】
ここで、フラグが「ＯＮ」で一致している場合（ステップＳ９０４：Ｙｅｓ）、監視モジュール２２０は、すべてのＣＭ２１０に、リカバリ処理の開始指示を送信して、リカバリ処理を実行させる（ステップＳ９０５）。
【００９９】
次に、監視モジュール２２０は、すべてのＣＭ２１０に、パワーオフ処理の開始指示を送信して、パワーオフ処理を実行させ（ステップＳ９０６）、パワーオン処理の開始指示を送信して、パワーオン処理を実行させる（ステップＳ９０７）。そして、監視モジュール２２０は、ＣＭ復旧処理を終了する。
【０１００】
上述したステップＳ９０１〜Ｓ９０７を経由する処理により、図５に示したＣＭ復旧の動作が実現される。これにより、監視モジュール２２０は、各ＣＭ２１０に揮発性メモリ１０２のデータをバックアップさせておき、各ＣＭ２１０を、ダウンする前の状態に復旧することができる。
【０１０１】
一方、ステップＳ９０４において、フラグが「ＯＦＦ」で一致している場合（ステップＳ９０４：Ｎｏ）、監視モジュール２２０は、すべてのＣＭ２１０に、短縮リカバリ処理の開始指示を送信して、短縮リカバリ処理を実行させる（ステップＳ９０８）。そして、監視モジュール２２０は、ＣＭ復旧処理を終了する。
【０１０２】
上述したステップＳ９０１〜Ｓ９０４，ステップＳ９０８を経由する処理により、図６に示したＣＭ復旧の動作が実現される。これにより、監視モジュール２２０は、各ＣＭ２１０に揮発性メモリ１０２のデータをバックアップさせないため、不揮発性メモリ１０３のバックアップデータが初期化データで上書きされることを防止することができる。結果として、監視モジュール２２０は、各ＣＭ２１０を、ダウンする前の状態に復旧することができる。また、監視モジュール２２０は、各ＣＭ２１０に揮発性メモリ１０２のデータをバックアップさせないため、ＣＭ２１０の復旧を高速化することができる。
【０１０３】
一方、ステップＳ９０３において、すべてのＣＭ２１０のフラグが一致していない場合（ステップＳ９０３：Ｎｏ）、監視モジュール２２０は、フラグが「ＯＦＦ」に設定されているＣＭ２１０の起動を抑止する（ステップＳ９０９）。次に、監視モジュール２２０は、フラグが「ＯＮ」に設定されているＣＭ２１０に、リカバリ処理の開始指示を送信して、リカバリ処理を実行させる（ステップＳ９１０）。
【０１０４】
そして、監視モジュール２２０は、フラグが「ＯＮ」に設定されているＣＭ２１０に、パワーオフ処理の開始指示を送信して、パワーオフ処理を実行させる（ステップＳ９１１）。次に、監視モジュール２２０は、フラグが「ＯＮ」に設定されているＣＭ２１０に、パワーオン処理の開始指示を送信して、パワーオン処理を実行させ（ステップＳ９１２）、ＣＭ復旧処理を終了する。
【０１０５】
上述したステップＳ９０１〜Ｓ９０３，ステップＳ９０９〜Ｓ９１２を経由する処理により、図７に示したＣＭ復旧の動作が実現される。これにより、監視モジュール２２０は、各ＣＭ２１０のうち、ＲＡＭ２１３のデータが新しい方のＣＭ２１０を復旧させることができる。結果として、図８に示したように、ＲＡＭ２１３のデータが新しい方のＣＭ２１０により、ＲＡＭ２１３のデータが古い方のＣＭ２１０が復旧されて、各ＣＭ２１０の制御データが同一になる。
【０１０６】
（リカバリ処理手順）
次に、図１０を用いて、ＣＭ２１０によるリカバリ処理手順の一例について説明する。リカバリ処理は、監視モジュール２２０からリカバリ処理の開始指示を受信した場合に実行される処理である。
【０１０７】
図１０は、ＣＭ２１０によるリカバリ処理手順の一例を示すフローチャートである。図１０において、まず、ＣＭ２１０は、リカバリ処理の開始指示を受信したか否かを判定する（ステップＳ１００１）。ここで、リカバリ処理の開始指示を受信していない場合（ステップＳ１００１：Ｎｏ）、ＣＭ２１０は、ステップＳ１００１に戻る。
【０１０８】
一方、リカバリ処理の開始指示を受信した場合（ステップＳ１００１：Ｙｅｓ）、ＣＭ２１０は、ＲＡＭ２１３を初期化せずに、ソフトウェアを再起動する（ステップＳ１００２）。次に、ＣＭ２１０は、ＲＡＭ２１３のデータを複製した複製データを、バックアップ媒体２１４にバックアップデータとして記憶する（ステップＳ１００３）。そして、ＣＭ２１０は、リカバリ処理を終了する。これにより、ＣＭ２１０は、ＲＡＭ２１３のデータを初期化せずに、ＲＡＭ２１３のデータをバックアップすることができる。
【０１０９】
（パワーオフ処理手順）
次に、図１１を用いて、ＣＭ２１０によるパワーオフ処理手順の一例について説明する。パワーオフ処理は、監視モジュール２２０からパワーオフ処理の開始指示を受信した場合に実行される処理である。
【０１１０】
図１１は、ＣＭ２１０によるパワーオフ処理手順の一例を示すフローチャートである。図１１において、まず、ＣＭ２１０は、パワーオフ処理の開始指示を受信したか否かを判定する（ステップＳ１１０１）。ここで、パワーオフ処理の開始指示を受信していない場合（ステップＳ１１０１：Ｎｏ）、ＣＭ２１０は、ステップＳ１１０１に戻る。
【０１１１】
一方、パワーオフ処理の開始指示を受信した場合（ステップＳ１１０１：Ｙｅｓ）、ＣＭ２１０は、ＲＡＭ２１３のデータを複製した複製データを、バックアップ媒体２１４にバックアップデータとして記憶する（ステップＳ１１０２）。そして、ＣＭ２１０は、電源を切断して（ステップＳ１１０３）、パワーオフ処理を終了する。これにより、ＣＭ２１０は、ＲＡＭ２１３のデータをバックアップした上で、電源を切断することができる。
【０１１２】
（パワーオン処理手順）
次に、図１２を用いて、ＣＭ２１０によるパワーオン処理手順の一例について説明する。パワーオン処理は、監視モジュール２２０からパワーオン処理の開始指示を受信した場合に実行される処理である。
【０１１３】
図１２は、ＣＭ２１０によるパワーオン処理手順の一例を示すフローチャートである。図１２において、まず、ＣＭ２１０は、パワーオン処理の開始指示を受信したか否かを判定する（ステップＳ１２０１）。ここで、パワーオン処理の開始指示を受信していない場合（ステップＳ１２０１：Ｎｏ）、ＣＭ２１０は、ステップＳ１２０１に戻る。
【０１１４】
一方、パワーオン処理の開始指示を受信した場合（ステップＳ１２０１：Ｙｅｓ）、ＣＭ２１０は、ＲＡＭ２１３を初期化する（ステップＳ１２０２）。次に、ＣＭ２１０は、フラグを初期化する（ステップＳ１２０３）。そして、ＣＭ２１０は、バックアップ媒体２１４に記憶されているバックアップデータを用いて、ＲＡＭ２１３のデータを復元する（ステップＳ１２０４）。
【０１１５】
次に、ＣＭ２１０は、フラグを「ＯＮ」に設定する（ステップＳ１２０５）。そして、ＣＭ２１０は、パワーオン処理を終了する。これにより、ＣＭ２１０は、運用を開始することができる。
【０１１６】
（短縮リカバリ処理手順）
次に、図１３を用いて、ＣＭ２１０による短縮リカバリ処理手順の一例について説明する。短縮リカバリ処理は、監視モジュール２２０から短縮リカバリ処理の開始指示を受信した場合に実行される処理である。
【０１１７】
図１３は、ＣＭ２１０による短縮リカバリ処理手順の一例を示すフローチャートである。図１３において、まず、ＣＭ２１０は、短縮リカバリ処理の開始指示を受信したか否かを判定する（ステップＳ１３０１）。ここで、短縮リカバリ処理の開始指示を受信していない場合（ステップＳ１３０１：Ｎｏ）、ＣＭ２１０は、ステップＳ１３０１に戻る。
【０１１８】
一方、短縮リカバリ処理の開始指示を受信した場合（ステップＳ１３０１：Ｙｅｓ）、ＣＭ２１０は、ソフトウェアを再起動する（ステップＳ１３０２）。次に、ＣＭ２１０は、フラグを初期化する（ステップＳ１３０３）。
【０１１９】
そして、ＣＭ２１０は、バックアップ媒体２１４に記憶されているバックアップデータを用いて、ＲＡＭ２１３のデータを復元する（ステップＳ１３０４）。次に、ＣＭ２１０は、フラグを「ＯＮ」に設定する（ステップＳ１３０５）。そして、ＣＭ２１０は、短縮リカバリ処理を終了する。これにより、ＣＭ２１０は、運用を開始することができる。
【０１２０】
（組み込み処理手順）
次に、図１４を用いて、ＣＭ２１０による組み込み処理手順の一例について説明する。組み込み処理は、起動済ではないＣＭ２１０を検出した場合に実行される処理である。
【０１２１】
図１４は、ＣＭ２１０による組み込み処理手順の一例を示すフローチャートである。図１４において、まず、ＣＭ２１０は、起動済ではないＣＭ２１０があるか否かを判定する（ステップＳ１４０１）。ここで、起動済ではないＣＭ２１０がない場合（ステップＳ１４０１：Ｎｏ）、ＣＭ２１０は、ステップＳ１４０１に戻る。
【０１２２】
一方、起動済ではないＣＭ２１０がある場合（ステップＳ１４０１：Ｙｅｓ）、ＣＭ２１０は、起動済ではないＣＭ２１０に、図１５に示すデータコピー処理の開始指示を送信し、データコピー処理を実行させる（ステップＳ１４０２）。次に、ＣＭ２１０は、起動済ではないＣＭ２１０に、ＲＡＭ２１３のデータを送信する（ステップＳ１４０３）。そして、ＣＭ２１０は、組み込み処理を終了する。これにより、ＣＭ２１０は、他のＣＭ２１０に、自装置のデータを用いて復旧させることができる。
【０１２３】
（データコピー処理手順）
次に、図１５を用いて、ＣＭ２１０によるデータコピー処理手順の一例について説明する。データコピー処理は、他のＣＭ２１０からデータコピー処理の開始指示を受信した場合に実行される処理である。
【０１２４】
図１５は、ＣＭ２１０によるデータコピー処理手順の一例を示すフローチャートである。図１５において、まず、ＣＭ２１０は、ソフトウェアを再起動する（ステップＳ１５０１）。次に、ＣＭ２１０は、フラグを初期化する（ステップＳ１５０２）。そして、ＣＭ２１０は、起動済ＣＭ２１０からデータを受信して、受信したデータをＲＡＭ２１３に記憶する（ステップＳ１５０３）。次に、ＣＭ２１０は、フラグを「ＯＮ」に設定する（ステップＳ１５０４）。そして、ＣＭ２１０は、データコピー処理を終了する。これにより、ＣＭ２１０は、他のＣＭ２１０のデータを用いて復旧することができる。
【０１２５】
以上説明したように、ストレージ装置は、制御装置がダウンした時に、制御装置の不揮発性メモリのバックアップデータが有効か否かに基づいて、制御装置の復旧の手順を変更する。ストレージ装置は、例えば、バックアップデータが有効である場合には、制御装置に、ソフトウェアを再起動させ、不揮発性メモリのバックアップデータを用いて揮発性メモリのデータを復元させる。これにより、ストレージ装置は、制御装置の復旧を高速化することができる。また、ストレージ装置は、有効ではない揮発性メモリのデータで、不揮発性メモリのバックアップデータが上書きされることを防止することができる。
【０１２６】
また、ストレージ装置は、例えば、バックアップデータが有効ではない場合には、制御装置に、ソフトウェアを再起動させ、揮発性メモリのデータを不揮発性メモリにバックアップさせる。そして、ストレージ装置は、制御装置に、電源を投入し直させて、不揮発性メモリのバックアップデータを用いて揮発性メモリのデータを復元させる。これにより、ストレージ装置は、制御装置を最新の状態に復旧することができる。
【０１２７】
また、ストレージ装置は、すべての制御装置がダウンした場合に、各々の制御装置においてバックアップデータが有効である場合には、すべての制御装置に、ソフトウェアを再起動させ、揮発性メモリのデータを復元させる。これにより、ストレージ装置は、制御装置の復旧を高速化することができる。また、ストレージ装置は、有効ではない揮発性メモリのデータで、不揮発性メモリのバックアップデータが上書きされることを防止することができる。
【０１２８】
また、ストレージ装置は、すべての制御装置がダウンした場合に、各々の制御装置においてバックアップデータが有効ではない場合には、すべての制御装置に、ソフトウェアを再起動させ、揮発性メモリのデータを不揮発性メモリにバックアップさせる。そして、ストレージ装置は、すべての制御装置に、電源を投入し直させて、不揮発性メモリのバックアップデータを用いて揮発性メモリのデータを復元させる。これにより、ストレージ装置は、制御装置を最新の状態に復旧することができる。
【０１２９】
また、すべての制御装置がダウンした場合に、バックアップデータが有効である制御装置と、バックアップデータが有効ではない制御装置と、が混在する場合がある。この場合は、ストレージ装置は、バックアップデータが有効ではない制御装置に、ソフトウェアを再起動させ、揮発性メモリのデータを不揮発性メモリにバックアップさせ、電源を投入し直させて、揮発性メモリのデータを復元させる。そして、バックアップデータが有効である制御装置は、起動済の制御装置の揮発性メモリのデータをコピーする。これにより、ストレージ装置は、すべての制御装置を同一の状態に復旧することができる。
【０１３０】
また、制御装置は、バックアップデータが有効であるか否かを示すフラグを記憶する。これにより、ストレージ装置は、フラグに基づいて制御装置のバックアップデータが有効か否かを判定することができ、制御装置のバックアップデータが有効か否かを監視する作業を削減することができる。
【０１３１】
なお、本実施の形態で説明した復旧方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本復旧プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本復旧プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１３２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１３３】
（付記１）ストレージへのアクセスを制御する制御装置と、
前記制御装置が有し、前記制御装置の動作制御のための制御データを含むデータを記憶する揮発性メモリと、
前記制御装置が有し、前記データのバックアップ先となる不揮発性メモリと、
前記制御装置に障害が発生したことを検出する検出部と、
前記検出部によって前記制御装置に障害が発生したことが検出された場合に、前記不揮発性メモリに記憶されているバックアップデータが有効か否かを判定する判定部と、
前記判定部によって前記不揮発性メモリのバックアップデータが有効であると判定された場合には、前記揮発性メモリのデータをバックアップせずに再起動した後に、前記不揮発性メモリのバックアップデータを前記揮発性メモリに復元する第１の処理を前記制御装置に実行させる制御部と、
を有することを特徴とするストレージ装置。
【０１３４】
（付記２）前記制御部は、
前記判定部によって前記不揮発性メモリのバックアップデータが有効ではないと判定された場合には、前記揮発性メモリを初期化せずに再起動した後に、前記揮発性メモリのデータを前記不揮発性メモリにバックアップする第２の処理と、前記揮発性メモリのデータを前記不揮発性メモリにバックアップして再起動した後に、前記不揮発性メモリのバックアップデータを前記揮発性メモリに復元する第３の処理とを、前記制御装置に順次実行させることを特徴とする付記１に記載のストレージ装置。
【０１３５】
（付記３）前記制御装置は、
前記不揮発性メモリのバックアップデータが有効であるか否かを示すフラグを有し、前記揮発性メモリを初期化した場合、または前記揮発性メモリのデータを前記不揮発性メモリにバックアップした場合に、前記フラグを有効に設定し、前記不揮発性メモリのバックアップデータを前記揮発性メモリに復元した場合、または前記揮発性メモリのデータを更新した場合に、前記フラグを無効に設定し、
前記判定部は、
前記フラグを参照して、前記フラグが有効である場合に、前記不揮発性メモリのバックアップデータが有効であると判定することを特徴とする付記１または２に記載のストレージ装置。
【０１３６】
（付記４）前記判定部は、
前記制御装置が複数存在する時には、前記検出部によって複数の制御装置に障害が発生したことが検出された場合に、前記複数の制御装置の各々の制御装置について、当該制御装置が有する不揮発性メモリのバックアップデータが有効か否かを判定し、
前記制御部は、
前記判定部によって前記各々の制御装置について有効であると判定された場合には、前記第１の処理を前記各々の制御装置に実行させることを特徴とする付記１〜３のいずれか一つに記載のストレージ装置。
【０１３７】
（付記５）前記制御部は、
前記判定部によって前記各々の制御装置について有効ではないと判定された場合には、前記第２の処理と、前記第３の処理と、を前記各々の制御装置に順次実行させることを特徴とする付記４に記載のストレージ装置。
【０１３８】
（付記６）前記制御部は、
前記複数の制御装置の中に、前記判定部によって前記不揮発性メモリのバックアップデータが有効であると判定された第１の制御装置と、前記判定部によって前記不揮発性メモリのバックアップデータが有効ではないと判定された第２の制御装置と、が存在する場合には、前記第２の処理と前記第３の処理とを前記第１の制御装置に順次実行させ、
前記第１の制御装置は、
前記第３の処理を実行した後に、前記第２の制御装置を再起動させ、前記第２の制御装置に自装置が有する揮発性メモリのデータを送信し、
前記第２の制御装置は、
再起動した後に、前記第１の制御装置から受信したデータを自装置が有する揮発性メモリに記憶する、
ことを特徴とする付記４または５に記載のストレージ装置。
【０１３９】
（付記７）コンピュータが、
ストレージへのアクセスを制御する制御装置に障害が発生したことを検出し、
前記制御装置に障害が発生したことを検出した場合に、揮発性メモリに記憶されている前記制御装置の動作制御のための制御データを含むデータのバックアップ先となる不揮発性メモリに記憶されているバックアップデータが有効か否かを判定し、
前記不揮発性メモリのバックアップデータが有効であると判定した場合には、前記揮発性メモリのデータをバックアップせずに再起動した後に、前記不揮発性メモリのバックアップデータを前記揮発性メモリに復元する第１の処理を前記制御装置に実行させる、
処理を実行することを特徴とする復旧方法。
【０１４０】
（付記８）コンピュータに、
ストレージへのアクセスを制御する制御装置に障害が発生したことを検出し、
前記制御装置に障害が発生したことを検出した場合に、揮発性メモリに記憶されている前記制御装置の動作制御のための制御データを含むデータのバックアップ先となる不揮発性メモリに記憶されているバックアップデータが有効か否かを判定し、
前記不揮発性メモリのバックアップデータが有効であると判定した場合には、前記揮発性メモリのデータをバックアップせずに再起動した後に、前記不揮発性メモリのバックアップデータを前記揮発性メモリに復元する第１の処理を前記制御装置に実行させる、
処理を実行させることを特徴とする復旧プログラム。
【符号の説明】
【０１４１】
１００  ストレージ装置
１０１  制御装置
２１０＃０，２１０＃１  ＣＭ
２２０＃０，２２０＃１  監視モジュール
３０１  検出部
３０２  判定部
３０３  制御部
【図１】
2014106567.tif 000003
【図２】
2014106567.tif 000004
【図３】
2014106567.tif 000005
【図４】
2014106567.tif 000006
【図５】
2014106567.tif 000007
【図６】
2014106567.tif 000008
【図７】
2014106567.tif 000009
【図８】
2014106567.tif 000010
【図９】
2014106567.tif 000011
【図１０】
2014106567.tif 000012
【図１１】
2014106567.tif 000013
【図１２】
2014106567.tif 000014
【図１３】
2014106567.tif 000015
【図１４】
2014106567.tif 000016
【図１５】
2014106567.tif 000017