(57)【要約】【課題】適切なログ情報を格納する。【解決手段】第１の制御装置３が、第２の制御装置３から受信したログを蓄積したログ情報３６２であって前記第２の制御装置３により実行された一連の複数の処理に係る前記ログ情報３６２を記憶するメモリ部３６と、前記ログ情報３６２に前記複数の処理が正常に終了したことを示す情報が含まれる場合、当該複数の処理による処理前の状態と当該複数の処理の実行により予測される処理後の状態とを含む予め設定された期待情報３６３と、前記ログ情報３６２とに基づき、前記複数の処理が正常に終了したか否かを判定する判定部３８と、前記判定部３８が前記複数の処理の異常終了を判定した場合、前記ログ情報３６２を前記メモリ部３６から前記メモリ部３６とは異なる記憶部４１に書き込む書込部３９と、をそなえる。【選択図】図３
2017054415.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御装置をそなえるシステムにおける第１の制御装置であって、
前記システムにおける第２の制御装置から受信したログを蓄積したログ情報であって前記第２の制御装置により実行された一連の複数の処理に係る前記ログ情報を記憶するメモリ部と、
前記ログ情報に前記複数の処理が正常に終了したことを示す情報が含まれる場合、当該複数の処理による処理前の状態と当該複数の処理の実行により予測される処理後の状態とを含む予め設定された期待情報と、前記ログ情報とに基づき、前記複数の処理が正常に終了したか否かを判定する判定部と、
前記判定部が前記複数の処理の異常終了を判定した場合、前記ログ情報を前記メモリ部から前記メモリ部とは異なる記憶部に書き込む書込部と、をそなえる
ことを特徴とする、制御装置。
【請求項２】
前記ログ情報には、前記第２の制御装置による前記複数の処理の実行後の状態が含まれ、
前記判定部は、前記ログ情報から前記複数の処理による処理前の状態を抽出し、抽出した処理前の状態に基づき前記期待情報に含まれる対応する処理後の状態を取得し、前記期待情報から取得した処理後の状態と、前記ログ情報に含まれる前記複数の処理の実行後の状態とが一致しない場合に、前記複数の処理の異常終了を判定する、
ことを特徴とする、請求項１記載の制御装置。
【請求項３】
前記複数の処理は、処理対象の状態の取得処理と、前記処理対象の状態の変更処理とを含み、
前記ログ情報は、前記取得処理に係る第１のログと、前記変更処理に係る第２のログとを含み、
前記判定部は、前記ログ情報に含まれる前記第１のログに基づき前記複数の処理による処理前の状態を抽出し、前記ログ情報に含まれる前記第２のログに基づき前記複数の処理の実行後の状態を取得する、
ことを特徴とする、請求項２記載の制御装置。
【請求項４】
前記第２の制御装置から受信する前記複数の処理の各々のログには、前記第２の制御装置により、前記複数の処理の各々の内容と識別子とを対応付けた識別子情報に基づき、前記ログに対応する識別子が付加され、
前記判定部は、前記識別子情報に基づき、前記ログ情報から前記第１のログ及び前記第２のログを抽出する、
ことを特徴とする、請求項３記載の制御装置。
【請求項５】
前記書込部は、前記判定部が前記複数の処理の正常終了を判定した場合、前記ログ情報を前記メモリ部から前記記憶部に書き込む処理を抑止することを特徴とする、請求項１〜４のいずれか１項記載の制御装置。
【請求項６】
前記書込部は、前記ログ情報に、前記複数の処理が異常終了したことを示す情報が含まれる場合、前記ログ情報を前記メモリ部から前記記憶部に書き込むことを特徴とする、請求項１〜５のいずれか１項記載の制御装置。
【請求項７】
第１及び第２の制御装置をそなえ、
前記第２の制御装置は、
前記第２の制御装置が実行した一連の複数の処理の各々のログを前記第１の制御装置へ送信し、
前記第１の制御装置は、
前記第２の制御装置から受信したログを蓄積したログ情報を記憶するメモリ部をそなえ、
前記ログ情報に前記複数の処理が正常に終了したことを示す情報が含まれる場合、当該複数の処理による処理前の状態と当該複数の処理の実行により予測される処理後の状態とを含む予め設定された期待情報と、前記ログ情報とに基づき、前記複数の処理が正常に終了したか否かを判定し、
前記複数の処理の異常終了を判定した場合、前記ログ情報を前記メモリ部から前記メモリ部とは異なる記憶部に書き込む、
ことを特徴とする、情報処理システム。
【請求項８】
複数のコンピュータをそなえるシステムにおける第１のコンピュータに、
前記システムにおける第２のコンピュータから受信したログを蓄積したログ情報であって前記第２のコンピュータにより実行された一連の複数の処理に係る前記ログ情報をメモリ部に記憶し、
前記ログ情報に前記複数の処理が正常に終了したことを示す情報が含まれる場合、当該複数の処理による処理前の状態と当該複数の処理の実行により予測される処理後の状態とを含む予め設定された期待情報と、前記ログ情報とに基づき、前記複数の処理が正常に終了したか否かを判定し、
前記複数の処理の異常終了を判定した場合、前記ログ情報を前記メモリ部から前記メモリ部とは異なる記憶部に書き込む
処理を実行させることを特徴とする、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、情報処理システム、及び制御プログラムに関する。
【背景技術】
【０００２】
ストレージ装置をはじめとする種々の情報処理システムでは、制御装置、例えばストレージ装置のController Module（ＣＭ）において、種々のログを蓄積し、不揮発性の記憶装置に格納することが知られている。情報処理システムに障害が発生した場合、記憶装置に格納されたログから調査情報が抽出され、障害原因の調査又は解析が行なわれる。
【０００３】
また、制御装置においては、保守又は管理等を行なうサーバやPersonal Computer（ＰＣ）等の端末装置から種々の操作（オペレーション）が行なわれ、制御装置は、このような操作に係るログ（操作ログ）の情報も、記憶装置に格納する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１４６０７４号公報
【特許文献２】特開２０１４−１０２７１７号公報
【特許文献３】国際公開第２００７／０７４６８０号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ログの格納領域の容量にも限りがあるため、調査又は解析に用いるデータを常に格納し続けることは難しい。このため、情報処理システムに障害が発生した場合、障害原因の調査又は解析に用いられるデータが失われている場合があり、原因を特定するのが困難となるケースが多い。障害原因の調査又は解析に用いられるデータとしては、ユーザのオペレーション内容、他モジュールとの通信データ内容、内部制御データ等が挙げられる。
【０００６】
なお、調査又は解析に用いるデータを一旦メモリ領域に蓄積し、障害が発生したときに、蓄積したデータをログの格納領域に書き込むことで、調査又は解析に用いるデータの喪失を回避することは可能である。しかしながら、このようなデータをメモリに蓄積しておくことは、メモリ領域を圧迫し、通常運用の処理に影響を与える可能性がある。従って、データを蓄積しておくためのメモリ領域を拡張する等、装置のハードウェアに変更を加えることになる。
【０００７】
また、端末装置から制御装置への操作の過程で、例えば端末装置のGraphical User Interface（ＧＵＩ）画面で表示している内容が異常である場合には、端末装置のオペレータが目視で異常か否かを判断する。この場合、制御装置においては処理自体が正常に終了するため、メモリに蓄積した調査又は解析に用いるデータをログの格納領域に書き込む処理が行なわれず、障害原因の調査又は解析に用いられるデータが失われることもある。
【０００８】
１つの側面では、本発明は、適切なログ情報を格納することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、本件の制御装置は、複数の制御装置をそなえるシステムにおける第１の制御装置であって、メモリ部と、判定部と、書込部とをそなえる。前記メモリ部は、前記システムにおける第２の制御装置から受信したログを蓄積したログ情報であって前記第２の制御装置により実行された一連の複数の処理に係るログ情報を記憶する。前記判定部は、前記ログ情報に前記複数の処理が正常に終了したことを示す情報が含まれる場合、当該複数の処理による処理前の状態と当該複数の処理の実行により予測される処理後の状態とを含む予め設定された期待情報と、前記ログ情報とに基づき、前記複数の処理が正常に終了したか否かを判定する。さらに、前記書込部は、前記判定部が前記複数の処理の異常終了を判定した場合、前記ログ情報を前記メモリ部から前記メモリ部とは異なる記憶部に書き込む。
【発明の効果】
【００１０】
１つの側面では、適切なログ情報を格納することができる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態の一例としてのストレージシステムの構成例を示す図である。
【図２】ＣＭのハードウェア構成例を示す図である。
【図３】ＣＭの機能構成例を示す図である。
【図４】識別子情報のデータ構造の一例を示す図である。
【図５】ログ情報のデータ構造の一例を示す図である。
【図６】正常性確認情報のデータ構造の一例を示す図である。
【図７】マスタＣＭの動作例を説明するフローチャートである。
【図８】マスタＣＭによる転送先選択処理の動作例を説明するフローチャートである。
【図９】スレーブＣＭの動作例を説明するフローチャートである。
【図１０】スレーブＣＭによる操作正常性の確認処理の動作例を説明するフローチャートである。
【図１１】適用例に係る識別子情報の一例を示す図である。
【図１２】適用例に係るログ情報の一例を示す図である。
【図１３】適用例に係るログ情報の一例を示す図である。
【図１４】適用例に係るログ情報の一例を示す図である。
【図１５】適用例に係る正常性確認情報の一例を示す図である。
【図１６】適用例に係る期待結果の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１３】
〔１〕一実施形態
〔１−１〕ストレージシステムの構成例
図１は一実施形態の一例としてのストレージシステム１の構成例を示す図である。図１に示すように、ストレージシステム１は、例示的に、ストレージ装置２、操作端末５、及びホスト装置６をそなえる。
【００１４】
ストレージシステム１は、ストレージ装置２に図示しない複数の記憶装置を搭載し、ホスト装置６に対して記憶装置の記憶領域を提供することができる。例えばストレージシステム１は、Redundant Arrays of Inexpensive Disks（ＲＡＩＤ）を用いて複数の記憶装置にデータを分散又は冗長化した状態で保存することができる。
【００１５】
ストレージ装置２は、例えば複数の記憶装置を搭載するDrive Enclosure（ＤＥ）（図示省略）等の筐体と接続され、操作端末５又はホスト装置６からの要求に応じて種々の制御を行なう。
【００１６】
図１に示すように、ストレージ装置２は、例示的に、複数（図１では２つ）のＣＭ３−１及び３−２、及び複数（図１では２つ）の記憶装置４−１及び４−２をそなえる。なお、以下の説明において複数の装置を区別しない場合には、符号のハイフン“−”以降の数字を省略して表記する場合がある。例えばＣＭ３−１及び３−２を区別しない場合には単にＣＭ３と表記する。
【００１７】
なお、図１の例において、ＣＭ３はController Enclosure（ＣＥ）等の制御筐体に設けられてもよく、記憶装置４はＣＥ又はＤＥ等の筐体に設けられてもよい。換言すれば記憶装置４は、ストレージ装置２のＣＥに搭載される記憶装置の少なくとも１つであってもよいし、ＤＥに搭載される記憶装置の少なくとも１つであってもよい。
【００１８】
ＣＭ３は、ホスト装置６から発行されるＤＥへのアクセス要求に対する制御を行なうとともに、操作端末５から発行される種々の操作要求に対する制御を行なう制御装置の一例である。ＣＭ３としてはコンピュータ、例えばサーバやＰＣ等の情報処理装置が挙げられる。
【００１９】
図１に例示するように、ＣＭ３は、他のＣＭ３との間で冗長化（例えば二重化）されている。ＣＭ３のうちの１つのＣＭ３（例えば＃０が付されたＣＭ３−１）は、主にストレージ装置２を制御するマスタＣＭ３としての役割を持つ。また、マスタＣＭ３以外のＣＭ３（例えば＃１が付されたＣＭ３−２）は、マスタＣＭ３に異常が発生したときや切り離されたときにマスタに切り替わるスレーブＣＭ３としての役割を持つ。マスタ及びスレーブは、ストレージ装置２が起動するときに決定されてもよい。
【００２０】
ＣＭ３同士は、ＣＭ３間を接続するケーブル、例えばＳＡＳケーブルを介して通信を行なってもよい。ＳＡＳはSerial Attached SCSI (Small Computer System Interface)の略称である。また、複数のＣＭ３は、相互に情報の通信を行なうことで、ストレージシステム１の制御やＤＥへのアクセス等に関する情報、又は、ログに関する情報の共有（同期）又は通知等を行なうことができる。
【００２１】
記憶装置４は、種々のデータやプログラム等を格納するハードウェアの一例である。記憶装置４としては、例えばHard Disk Drive（ＨＤＤ）等の磁気ディスク装置や、Solid State Drive（ＳＳＤ）等の半導体ドライブ装置、フラッシュメモリ等の不揮発性の各種記憶装置が挙げられる。
【００２２】
操作端末５は、ＣＭ３に接続された端末装置の一例である。操作端末５は、ＣＭ３に対して種々の操作を行なうための操作要求を発行することができる。
【００２３】
一例として、操作端末５は、Ｗｅｂブラウザ等によってマスタＣＭ３のUniform Resource Indicator（ＵＲＩ）、例えばHyper Text Transform Protocol（ＨＴＴＰ）のスキームを用いるUniform Resource Locator（ＵＲＬ）へアクセスし、操作要求を発行することができる。
【００２４】
ホスト装置６は、ＣＭ３に接続された上位装置の一例である。ホスト装置６は、ＤＥ（記憶装置）に対して種々のアクセスを行なうためのアクセス要求を発行することができる。
【００２５】
操作端末５及びホスト装置６の各々としては、コンピュータ、例えばサーバやＰＣ等の情報処理装置が挙げられる。
【００２６】
なお、図１の例では図示を省略しているが、操作端末５及びホスト装置６はそれぞれ、ＣＭ３−２とも接続されてもよい。また、操作端末５及びホスト装置６はそれぞれ、操作端末５又はホスト装置６と複数のＣＭ３との間の経路を切り替えるスイッチや、Local Area Network（ＬＡＮ）やインターネット等のネットワーク等を介して複数のＣＭ３と接続されてもよい。
【００２７】
以下、ストレージシステム１におけるＣＭ３の詳細について説明する。
【００２８】
〔１−２〕ＣＭのハードウェア構成例
まず、図１及び図２を参照して、図１に示すＣＭ３のハードウェア構成例について説明する。図２はＣＭ３のハードウェア構成例を示す図である。図２に示すように、ＣＭ３は、例示的に、Central Processing Unit（ＣＰＵ）３ａ、メモリ３ｂ、記憶部３ｃ、インタフェース部３ｄ、及び入出力部３ｅをそなえることができる。
【００２９】
ＣＰＵ３ａは、種々の制御や演算を行なう演算処理装置（プロセッサ）の一例である。ＣＰＵ３ａは、ＣＭ３内の各ブロックとバスで相互に通信可能に接続されてもよい。なお、演算処理装置としては、ＣＰＵ３ａに代えて、電子回路、例えばMicro Processing Unit（ＭＰＵ）、Application Specific Integrated Circuit（ＡＳＩＣ）、Field Programmable Gate Array（ＦＰＧＡ）等の集積回路（ＩＣ）が用いられてもよい。
【００３０】
メモリ３ｂは、種々のデータやプログラムを格納するハードウェアの一例である。メモリ３ｂは、ＤＥに対するアクセス等に用いられるデータやプログラムを一時的に記憶するキャッシュメモリとしても用いられてもよい。メモリ３ｂとしては、例えばRandom Access Memory（ＲＡＭ）等の揮発性メモリが挙げられる。
【００３１】
記憶部３ｃは、種々のデータやプログラム等を格納するハードウェアの一例である。記憶部３ｃとしては、例えばＨＤＤ等の磁気ディスク装置、ＳＳＤ等の半導体ドライブ装置、フラッシュメモリやRead Only Memory（ＲＯＭ）等の不揮発性メモリ等の各種記憶装置が挙げられる。
【００３２】
例えば記憶部３ｃは、ＣＭ３の各種機能の全部若しくは一部を実現する制御プログラム３０を格納することができる。ＣＰＵ３ａは、例えば記憶部３ｃに格納された制御プログラム３０をメモリ３ｂに展開して実行することにより、ＣＭ３の機能を実現することができる。
【００３３】
インタフェース部３ｄは、他のＣＭ３、操作端末５、ホスト装置６、ＤＥ等との間の接続及び通信の制御等を行なう通信インタフェースの一例である。例えばインタフェース部３ｄは、図１に示すＩＦ３ｄ−１及び３ｄ−２をそなえてもよい。なお、制御プログラム３０は、図示しないネットワークからインタフェース部３ｄを介してＣＭ３にダウンロードされてもよい。
【００３４】
図１に示す例において、ＩＦ３ｄ−１は、操作端末５又はホスト装置６との間の接続及び通信の制御等を行なう通信インタフェース（ホストインタフェース）の一例である。ＩＦ３ｄ−１としては、例えばＬＡＮ、ＳＡＳ、Fibre Channel（ＦＣ）、InfiniBand（インフィニバンド）等に準拠したアダプタをそなえる１以上のChannel Adapter（ＣＡ）が挙げられる。ＩＦ３ｄ−１は、これらに準拠したケーブル等によって操作端末５又はホスト装置６と接続されてもよい。
【００３５】
ＩＦ３ｄ−２は、ＤＥ（記憶装置）との間の接続及び通信の制御等を行なう通信インタフェースの一例である。ＩＦ３ｄ−２は、例えば複数のInput Output Controller（ＩＯＣ）及びExpander（ＥＸＰ）をそなえてもよい。ＩＯＣは、ＤＥへのアクセス（Ｉ／Ｏ）を制御するＩ／Ｏ制御部の一例であり、ＥＸＰは、ＣＭ３配下に接続（例えばＳＡＳ接続）可能なデバイス数の拡張を行なうためのモジュールの一例である。
【００３６】
図２の説明に戻り、インタフェース部３ｄは、記録媒体３ｆに記録されたデータやプログラムを読み出す読取部をそなえてもよい。読取部は、コンピュータ読取可能な記録媒体３ｆを接続又は挿入可能な接続端子又は装置を含んでよい。読取部としては、例えばUniversal Serial Bus（ＵＳＢ）等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、ＳＤカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体３ｆには制御プログラム３０が格納されてもよい。
【００３７】
入出力部３ｅは、マウス、キーボード、操作ボタン等の入力部、並びにディスプレイ等の出力部の少なくとも一部を含むことができる。例えば入力部は、使用者又はオペレータ等による設定の登録や変更、システムのモード選択（切替）等の各種操作やデータの入力等の作業に用いられてもよく、出力部は、作業者等による設定の確認や各種通知等の出力に用いられてもよい。
【００３８】
上述したＣＭ３のハードウェア構成は例示である。従って、他のＣＭ３間、又は、ＣＭ３内でのハードウェアの増減（例えば任意のブロックの追加や省略）、分割、任意の組み合わせでの統合、バスの追加又は省略等は適宜行なわれてもよい。
【００３９】
〔１−３〕ＣＭの機能構成例
次に、図３を参照して、一実施形態に係るＣＭ３の機能構成例について説明する。図３は図１に示すＣＭ３の機能構成例を示す図である。なお、図３の例では、図１に示すストレージシステム１における一部の装置やケーブル等を省略して示している。
【００４０】
以下、二重化構成でマスタＣＭ３及びスレーブＣＭ３により冗長運転するストレージ装置２における、ログ採取及び蓄積の処理について説明する。一例として、マスタＣＭ３−１が操作端末５から受信する操作要求及び種々の情報に応じた処理並びにログの採取を行ない、スレーブＣＭ３がマスタＣＭ３による処理に係るログを蓄積及び格納する場合を説明する。
【００４１】
図３に示すように、マスタＣＭ３としてのＣＭ３−１（ＣＭ＃０）は、例示的に、保持部３１、通信部３２、操作処理部３３、ログ転送部３４、及び転送先選択部３５をそなえる。また、スレーブＣＭ３としてのＣＭ３−２（ＣＭ＃１）は、例示的に、保持部３６、通信部３７、確認処理部３８、及びログ格納処理部３９をそなえる。さらに、スレーブＣＭ３としてのＣＭ３−２に接続された記憶装置４−２は、例示的に、ログ格納部４１をそなえる。
【００４２】
なお、図３の例では、ストレージ装置２がそなえる複数のＣＭ３のうち、ＣＭ３−１がマスタＣＭ３としての役割を持ち、ＣＭ３−２がスレーブＣＭ３としての役割を持つ場合を示すが、これに限定されるものではない。例えばＣＭ３−１及び３−２は、いずれも符号３１〜３９に示すマスタ及びスレーブ双方の機能ブロックをそなえてもよい。
【００４３】
保持部３１及び３６の各々は、メモリ部の一例であり、例えば図１及び図２に示すメモリ３ｂの少なくとも一部の記憶領域により実現されてもよい。また、ログ格納部４１は、保持部３６とは異なる記憶部の一例であり、例えば図２に示す記憶部３ｃの少なくとも一部の記憶領域により実現されてもよい。
【００４４】
また、通信部３２及び３７の各々は、図２に示すインタフェース部３ｄ及び制御プログラム３０を実行するＣＰＵ３ａの少なくとも一部の機能により実現されてもよい。操作処理部３３、ログ転送部３４、転送先選択部３５、確認処理部３８、及びログ格納処理部３９の各々は、制御プログラム３０を実行するＣＰＵ３ａの少なくとも一部の機能により実現されてもよい。
【００４５】
マスタＣＭ３の保持部３１は、識別子情報３１１の情報を記憶する記憶領域を有する。また、スレーブＣＭ３の保持部３６は、識別子情報３６１、ログ情報３６２、及び正常性確認情報３６３の各情報を記憶する記憶領域を有する。さらに、スレーブＣＭ３のログ格納部４１は、ログ情報４１１の情報を記憶する記憶領域を有する。なお、ログ情報３６２及び４１１は、操作要求に対してマスタＣＭ３が実行する一連の複数の処理に係るログを蓄積した情報である。保持部３１及び３６並びにログ格納部４１が保持するこれらの情報の詳細については後述する。
【００４６】
マスタＣＭ３の通信部３２は、操作端末５及びスレーブＣＭ３との間で種々の通信を行なう。
【００４７】
マスタＣＭ３の操作処理部３３は、操作端末５から受信した操作要求並びに操作対象やパラメータ等の情報に応じた種々の処理を行なう。操作要求には、例えばＲＡＩＤやディスク（ＤＥの記憶装置）等に対するＲＡＩＤの容量拡張、ＲＡＩＤ上へのボリューム作成、ＲＡＩＤからのディスクの切り離し、異常により縮退したディスク、コントローラ、又はＣＭ３等のモジュールの組み込み等が挙げられる。このように、操作要求には、論理的又は物理的な種々の操作を行なうための要求が含まれてもよい。
【００４８】
操作処理部３３は、例えば通信部３２を介して操作端末５のＷｅｂブラウザに操作対象の特定やパラメータの入力等を行なうための画面を表示させ、操作端末５から画面に入力又は選択された情報を受信すると、操作要求に係る処理を実行する。
【００４９】
なお、操作処理部３３は、操作要求に対する一連の複数の処理が完了した後、スレーブＣＭ３から当該処理が異常である旨を通知されると、操作端末５に異常の発生を表示させ、異常発生をオペレータに通知してもよい。この場合、マスタＣＭ３又は操作対象の装置が予期せぬ異常な状態となっている可能性があるため、操作端末５による以降の設定操作を行なえないようにガード、例えば操作不能な状態として管理してもよい。
【００５０】
なお、操作要求に伴いマスタＣＭ３により実行される一連の複数の処理には、処理対象の状態の取得処理と、処理対象の状態の変更処理とが含まれ得る。例えば、処理対象の状態の取得処理としては、操作端末５からの処理対象の情報又は入力パラメータ等の受信の処理が挙げられ、処理対象の状態の変更処理としては、処理対象に対する実際の設定処理が挙げられる。
【００５１】
マスタＣＭ３のログ転送部３４は、操作端末５から受信した情報、及び操作処理部３３による処理に係る情報等を採取し、オペレーションログ（以下、単にログと表記する場合がある）として通信部３２を介してスレーブＣＭ３へ転送する。オペレーションログは、障害が発生した場合の調査及び解析に用いるデータの一例であり、例えば操作データ、制御データ、処理結果等が挙げられる。
【００５２】
一例として、「操作データ」は、操作端末５から要求された操作に関する操作対象や入力パラメータ等の入力情報である。「制御データ」は、「コマンドデータ」及び「内部制御データ」を含む情報である。「コマンドデータ」は操作要求において要求される操作内容に係るコマンドであり、「内部制御データ」はＣＭ３における内部的な制御データであり、例えばテーブル構築等を行なうための制御データである。「処理結果」は、操作端末５からの一連の操作要求について、正常終了したか異常終了したかをマスタＣＭ３が判定した結果を含む情報である。
【００５３】
ここで、ログ転送部３４によるスレーブＣＭ３へのログの転送において、転送されるログには識別子が付加されてよい。識別子は、機能、操作、データ内容等を特定する一意の情報である。ログに付加される識別子は、識別子情報３１１及び３６１として、マスタＣＭ３及びスレーブＣＭ３間で共有されていることが好ましい。
【００５４】
識別子情報３１１及び３６１には、図４に示すように、例示的に、操作内容、操作正常性確認の処理、及び識別子が設定される。操作内容は、例えばＲＡＩＤ容量拡張やディスク切り離し等の、操作端末５から発行され得る操作要求の内容（機能）である。操作正常性確認の処理は、操作内容で示される操作要求に応じてマスタＣＭ３が行なう一連の複数の処理の各々の内容を表す情報である。
【００５５】
なお、識別子としては、例えば操作内容Ａの処理１に対しては“01000001”（操作データ１）、操作内容Ａの処理２に対しては“01000002”（制御データ１）、操作内容Ｂの処理１に対しては“02010001”等が設定され得る。識別子には、例えば操作内容を特定する領域と処理を特定する領域とが分かれていることが好ましい。例えば、先頭の２桁が処理内容を示し、残りが処理を示すように設定することが挙げられる。これにより、例えば“01”がＲＡＩＤ容量拡張であり、“02”がディスク切り離しであるというように、スレーブＣＭ３において識別子から容易に操作内容を特定することができる。
【００５６】
ログ転送部３４は、例えば識別子情報３１１を参照して、転送するログに係る「操作内容」及び「操作正常性確認の処理」に対応する識別子をログに付加し、スレーブＣＭ３へ転送することができる。
【００５７】
また、ログ転送部３４は、スレーブＣＭ３に対して処理結果を転送する際に、併せてマスタＣＭ３−１が保持する現在の装置の状態情報をスレーブＣＭ３に転送してもよい。なお、現在の装置の状態情報としては、ストレージ装置２の総合的な状態、操作対象の装置、例えばＲＡＩＤやディスク等の個々の部品のハードウェア的な状態又は論理的な（フォーマット中等の）状態等の、種々の一以上の情報が含まれてもよい。
【００５８】
マスタＣＭ３の転送先選択部３５は、ストレージ装置２に複数のスレーブＣＭ３がそなえられる場合、ログ転送部３４による転送先のスレーブＣＭ３を選択する。
【００５９】
ここで、一実施形態に係るストレージ装置２は、複数のスレーブＣＭ３をそなえてもよい。ストレージ装置２内に複数のスレーブＣＭ３が存在する場合、ログ転送部３４は、全てのスレーブＣＭ３に操作データ及び制御データを転送して冗長性を保つことで、操作要求に対する処理中にスレーブＣＭ３の故障が発生した場合でも、他のスレーブＣＭ３により操作正常性の確認処理を継続することが可能となる。
【００６０】
しかし、全てのスレーブＣＭ３で記憶装置４のログ格納部４１へログ情報４１１の書き込みを実施すると、複数のスレーブＣＭ３において同一のログ情報４１１が書き込まれることとなり、ログ格納領域を無駄に消費してしまう。また、操作要求に対する処理中に、スレーブＣＭ３が故障状態から復旧した場合や、マスタＣＭ３からスレーブＣＭ３へ変更があった場合は、当該スレーブＣＭ３の保持部３６のログ蓄積領域には、ログ情報３６２が十分に蓄積されていない可能性もある。
【００６１】
そこで、転送先選択部３５は、ログ転送部３４が操作データ又は制御データを転送した場合に、スレーブＣＭ３から受信する応答データを記憶する。応答データには、スレーブＣＭ３におけるログ情報３６２の蓄積状況を示す情報が含まれる。そして、転送先選択部３５は、ログ転送部３４が処理結果を転送するときに、状態が正常なスレーブＣＭ３の中から、応答データに基づき１つのスレーブＣＭ３を転送先のＣＭ３として選択し、ログ転送部３４に対して、選択した１つのスレーブＣＭ３へ処理結果を転送させる。
【００６２】
例えば、スレーブＣＭ３は、保持部３６のログ蓄積領域に蓄積しているデータ量を応答データに含めてマスタＣＭ３に通知することができる。この場合、転送先選択部３５は、ログ蓄積領域に蓄積されているデータ量が最も多いスレーブＣＭ３を選択してもよい。
【００６３】
他の例として、スレーブＣＭ３は、マスタＣＭ３から受信した一連のログ情報３６２のうちの最も古い（最初に受信した）ログのタイムスタンプを応答データに含めてマスタＣＭ３に通知してもよい。この場合、転送先選択部３５は、タイムスタンプの最も古いスレーブＣＭ３を選択してもよい。
【００６４】
なお、データ量が最も多い又はタイムスタンプが最も古いスレーブＣＭ３が複数存在する場合（選択対象のスレーブＣＭ３が複数存在する場合）には、転送先選択部３５は、例えば部品番号が最若番であるＣＭ３を選択してもよい。或いは、記憶装置４の故障に備えて、選択対象のスレーブＣＭ３が複数存在する場合には、これら複数のスレーブＣＭ３を転送先として選択してもよい。
【００６５】
このように、操作要求に対する処理中にスレーブＣＭ３の故障が発生した場合でも、他のスレーブＣＭ３において処理を継続し、操作正常性の確認を実施することが可能となる。また、複数のスレーブＣＭ３においてログ格納部４１のログ格納領域が無駄に消費されることも防止でき、リソースを効率的に利用することができる。
【００６６】
なお、ログ転送部３４による操作データ及び制御データの転送先のスレーブＣＭ３は、上述したものに限定されるものではない。例えば、ストレージ装置２に複数のスレーブＣＭ３が存在しても、転送先はこれらのスレーブＣＭ３のうちの一部のＣＭ３に制限されてもよい。
【００６７】
また、ストレージ装置２においてスレーブＣＭ３が１つだけ存在する場合や、スレーブＣＭ３が複数存在しても操作データ及び制御データの転送先が１つのスレーブＣＭ３である場合には、マスタＣＭ３において転送先選択部３５の機能を省略してもよい。
【００６８】
スレーブＣＭ３の通信部３７は、マスタＣＭ３との間で種々の通信を行なう。
【００６９】
また、通信部３７は、マスタＣＭ３からログを受信すると、受信したログをログ情報３６２として保持部３６に蓄積することができる。ログ情報３６２には、図５に例示するように、ログに付加された識別子、ログの受信時刻、及び当該ログのデータが設定される。
【００７０】
さらに、通信部３７は、マスタＣＭ３からログを受信すると、応答データとして、上述したログ情報３６２の蓄積状況に関する情報を送信してもよい。
【００７１】
なお、マスタＣＭ３からの一連の複数の処理に係るログ情報３６２は、操作端末５による操作要求に伴いマスタＣＭ３により実行される複数の処理の各々のログを含み得る。これらのログには、上述のようにマスタＣＭ３により識別子が付加される。
【００７２】
確認処理部３８は、マスタＣＭ３から処理結果に係るログを受信すると、ログ情報３６２に基づいて、操作要求に対してマスタＣＭ３において実施された一連の処理が正常に完了したか否かの確認を行なう。
【００７３】
ログ格納処理部３９は、確認処理部３８による確認結果に応じて、保持部３６に蓄積されたログ情報３６２をログ情報４１１としてログ格納部４１に格納する。
【００７４】
ここで、確認処理部３８による確認では、受信した処理結果に係るログに応じて、以下の処理が行なわれる。
【００７５】
（ａ）処理結果が異常終了の場合。
この場合、マスタＣＭ３において操作要求に対する一連の処理が異常終了したと判断されたため、確認処理部３８は、ログ格納処理部３９に対して、当該操作要求に係るログ情報３６２をログ格納部４１へ格納させる。また、確認処理部３８は、通信部３７を介してマスタＣＭ３に対して異常終了を示す応答データを送信する。
【００７６】
（ｂ）処理結果が正常終了の場合。
この場合、マスタＣＭ３において操作要求に対する一連の処理が正常に終了したと判断されている。しかし、例えばマスタＣＭ３においては処理自体が正常に終了していても、操作端末５のＧＵＩ画面で表示されている内容が異常の場合もある。そこで、確認処理部３８は、処理結果が正常を示す場合には、識別子情報３６１、ログ情報３６２、及び正常性確認情報３６３に基づき、正常性確認処理を実施する。
【００７７】
正常性確認情報３６３には、図６に示すように、例示的に、操作端末５のＧＵＩ操作（オペレーション）による操作対象ごとに、操作内容、操作前の状態、及び操作後の状態が設定される。正常性確認情報３６３は、例えば識別子情報３１１及び３６１とともに、操作端末５によるＧＵＩ操作が行なわれる前に予めストレージ装置２に設定されることが好ましい。
【００７８】
このように、正常性確認情報３６３は、マスタＣＭ３により実行される一連の複数の処理について、当該複数の処理による処理前の状態と、当該複数の処理の実行により予測される処理後の状態とを含む予め設定された期待情報の一例である。
【００７９】
正常性確認処理において、確認処理部３８は、例えば以下の（ｉ）〜（iv）の処理を行なうことができる。
【００８０】
（ｉ）ログ情報３６２から、操作要求に係る一連のログを抽出する。
なお、確認処理部３８は、ログ情報３６２に含まれる識別子のうちの先頭の２桁が操作内容に係る操作内容、例えば“01”である識別子に対応するログを操作要求に係るログとして抽出してもよい。或いは、確認処理部３８は、ログ情報３６２に含まれる識別子を用いて、識別子情報３６１の識別子に対応する操作内容を検索し、検索した操作内容が操作要求に係るものであるか否かを判定することで、当該識別子に対応するログが操作要求に係るログであるか否かを判定してもよい。
【００８１】
（ii）抽出したログから得られる操作対象の装置状態を用いて、正常性確認情報３６３内の該当するエントリを検索し、検索したエントリの「操作後の状態」を期待結果として取得する。
【００８２】
（iii）ログ情報３６２に含まれる、マスタＣＭ３による処理後の操作対象に係る「現在の装置状態」と、上記（ii）で取得した正常性確認情報３６３内の「操作後の状態」（期待結果）とを比較する。
【００８３】
（iii−１）比較の結果、両者が一致すれば、ログ情報３６２のログ格納部４１への格納を抑止する。
この場合、確認処理部３８は、保持部３６に蓄積されたログ情報３６２を上書き可能な状態として管理してもよい。或いは、確認処理部３８は、保持部３６に蓄積されたログ情報３６２を破棄してもよい。
【００８４】
（iii−２）比較の結果、両者が不一致の場合、マスタＣＭ３における操作要求に対する一連の処理が異常であると判定し、ログ格納処理部３９に対して、ログ情報３６２のログ格納部４１への格納を指示する。
【００８５】
（iv）上記（iii）の判定結果（正常又は異常）をマスタＣＭ３へ応答する。
【００８６】
上記（ｉ）〜（iv）の処理により、確認処理部３８は、ログ情報３６２から複数の処理による処理前の状態を抽出し、抽出した処理前の状態に基づき正常性確認情報３６３に含まれる対応する処理後の状態を取得することができる。そして、確認処理部３８は、正常性確認情報３６３から取得した処理後の状態と、ログ情報３６２に含まれる複数の処理の実行後の状態とが一致するか否かに応じて、複数の処理の正常終了又は異常終了を判定することができる。
【００８７】
これにより、予め予測された正常性確認情報３６３に基づきログ情報３６２の正常性が判定されるため、マスタＣＭ３における一連の複数の処理の正常性を正確に判定することができる。
【００８８】
また、ログ情報３６２に含まれる識別子に基づき、ログ情報３６２から正常性確認情報３６３を検索するためのキーを抽出することができるため、確認処理部３８は正常性確認処理を容易に実行することができる。
【００８９】
なお、スレーブＣＭ３から異常を通知されたマスタＣＭ３は、異常な応答結果を操作端末５へ提示することができ、操作端末５からの要求に応じて、スレーブＣＭ３がログ格納部４１に格納したログ情報４１１を取得してもよい。このログ情報４１１は、例えばマスタＣＭ３又は操作端末５において、発生した障害の調査又は解析に用いられる。
【００９０】
このように、確認処理部３８は、ログ情報３６２に、マスタＣＭ３による一連の複数の処理が正常に終了したことを示す情報が含まれる場合、ログ情報３６２と正常性確認情報３６３とに基づき、複数の処理が正常に終了したか否かを判定する判定部の一例である。
【００９１】
また、ログ格納処理部３９は、判定部の一例としての確認処理部３８が複数の処理の異常終了を判定した場合、ログ情報３６２を保持部３６とは異なるログ格納部４１に書き込む書込部の一例である。
【００９２】
以上のように、一実施形態に係るストレージ装置２によれば、マスタＣＭ３が採取したログをスレーブＣＭ３−２に転送し、スレーブＣＭ３が転送されたログを保持部３６に蓄積し、選択的にログ情報３６２をログ格納部４１に格納することができる。
【００９３】
従って、マスタＣＭ３の処理に影響を与えずに、障害が発生した場合の調査又は解析に用いるデータを、スレーブＣＭ３に接続された記憶装置４にログ情報４１１として格納することができる。また、ＣＭ３のメモリ３ｂ等のハードウェアを変更せずに済み、コストの増加を抑制できる。換言すれば、操作の正常又は異常を判断するために用いる情報を一時的に退避しておくマスタＣＭ３の保持部３１の記憶領域不足を回避することができる。
【００９４】
また、マスタＣＭ３が正常終了と判断した操作（一連の処理）についても、スレーブＣＭ３が正常性の確認を行なうことで、実際には異常なログ情報４１１を確実にログ格納部４１に蓄積することができる。換言すれば、マスタＣＭ３における処理結果の正常又は異常を、マスタＣＭ３だけでなくスレーブＣＭ３においても判断することができるため、マスタＣＭ３が単独で処理結果を判定する場合よりも精度良く、障害の調査又は解析に用いる適切なログ情報４１１を格納することができる。
【００９５】
〔１−４〕ストレージシステムの動作例
次に、上述の如く構成されたストレージシステム１の動作例について説明する。以下の説明では、ＣＭ３−１がマスタＣＭ３であり、ＣＭ３−２及び図示しない他のＣＭ３（以下、単にスレーブＣＭ３−２と表記する）が複数のスレーブＣＭ３であるものとする。
【００９６】
〔１−４−１〕マスタＣＭの動作例
はじめに、図７及び図８を参照して、マスタＣＭ３−１の動作例について説明する。
【００９７】
まず、図７に示すように、マスタＣＭ３−１の通信部３２が操作端末５から操作データをマスタＣＭ３−１のＧＵＩタスクで受信すると（ステップＳ１）、ログ転送部３４が、受信した操作データを通信部３２を介して全てのスレーブＣＭ３−２へ転送する（ステップＳ２）。
【００９８】
操作処理部３３は、操作端末５からの操作データを解析し、操作内容に従って操作対象の装置の状態取得及び装置への設定反映等の処理を実施する（ステップＳ３）。ログ転送部３４は、ステップＳ３の処理中に発生した、他のモジュールとのやり取りに係るコマンドデータや、内部テーブルの生成又は変更等に係る内部制御データ等の制御データを、通信部３２を介してスレーブＣＭ３−２へ転送する（ステップＳ４）。
【００９９】
なお、ステップＳ２及びＳ４の各々において、ログ転送部３４は、転送するデータ（操作データ又は制御データ）に対応する識別子を識別子情報３１１から取得し、転送するデータ（操作ログ）に付加する。また、ステップＳ２及びＳ４の各々において、転送先選択部３５は、スレーブＣＭ３から受信した応答データに含まれる、スレーブＣＭ３−２におけるログ情報３６２の蓄積状況を示す情報を保持部３１等に記憶する。
【０１００】
ステップＳ１〜Ｓ４の処理は、操作端末５からの操作要求に係る一連の処理が完了するまで繰り返し実施され（ステップＳ５及びステップＳ５のＮｏルート）、処理中に発生した操作データ及び制御データがスレーブＣＭ３−２に転送される。一連の処理が完了すると（ステップＳ５のＹｅｓルート）、転送先選択部３５が転送先選択処理を行ない（ステップＳ６）、ログ転送部３４は、転送先選択部３５が選択したスレーブＣＭ３−２へ、識別子を付加した処理結果を転送する（ステップＳ７）。なお、処理結果の転送の際には、操作対象の装置に係る現在の状態情報も併せて転送される。
【０１０１】
次いで、マスタＣＭ３−１は、スレーブＣＭ３−２から処理結果に対する応答データを受信すると、スレーブＣＭ３−２における操作正常性の確認結果が正常であるか否かを判定する（ステップＳ８）。確認結果が正常である場合（ステップＳ８のＹｅｓルート）、操作処理部３３は、操作端末５の画面上に正常終了を表示させ（ステップＳ９）、処理が終了する。なお、ステップＳ９の処理は省略してもよい。
【０１０２】
一方、確認結果が異常である場合（ステップＳ８のＮｏルート）、操作処理部３３は、操作端末５の画面上に異常終了を表示させてオペレータに異常の発生を通知し、以降の設定操作をガードして（ステップＳ１０）、処理が終了する。
【０１０３】
次に、図８を参照して、転送先選択部３５による転送先選択処理（図７のステップＳ６参照）について説明する。
【０１０４】
転送先選択部３５は、ストレージ装置２にスレーブＣＭ３−２が複数存在するか否かを、例えばストレージ装置２の構成情報を参照して判定する（ステップＳ１１）。スレーブＣＭ３−２が複数存在しない場合（ステップＳ１１のＮｏルート）、転送先選択部３５は、１つだけ存在するスレーブＣＭ３−２を選択し（ステップＳ１２）、転送先選択処理が終了する。
【０１０５】
一方、スレーブＣＭ３−２が複数存在する場合（ステップＳ１１のＹｅｓルート）、転送先選択部３５は、図７のステップＳ２及びＳ４において保持部３１等へ記憶した応答データに基づき、スレーブＣＭ３−２を１つ選択し（ステップＳ１３）、転送先選択処理が終了する。一例として、転送先選択部３５は、応答データに含まれるスレーブＣＭ３におけるログ情報３６２の蓄積状況を示す情報に基づき、全ての操作ログを記憶する正常なスレーブＣＭ３−２を１つ選択する。
【０１０６】
なお、ログ情報３６２によるログの転送先のスレーブＣＭ３−２が１つだけである場合、上述した処理のうち、ステップＳ２及びＳ４における応答データの保持部３１への記憶と、ステップＳ６の処理とは省略してもよい。
【０１０７】
〔１−４−２〕スレーブＣＭの動作例
次に、図９及び図１０を参照して、スレーブＣＭ３−２の動作例について説明する。
【０１０８】
まず、図９に示すように、スレーブＣＭ３−２の通信部３７は、マスタＣＭ３−１から転送されたデータを受信すると（ステップＳ２１）、受信したデータをログ情報３６２として保持部３６のログ蓄積領域に蓄積する（ステップＳ２２）。なお、保持部３６へのログ情報３６２の格納では、通信部３７は、保持部３６における操作データ用の記憶領域の先頭から順に使用していき、領域の最後まで使用した場合は、再度先頭から使用すればよい。
【０１０９】
スレーブＣＭ３−２は、受信したデータが処理結果か否かを判定し（ステップＳ２３）、受信したデータが処理結果以外である場合（ステップＳ２３のＮｏルート）、通信部３７は、マスタＣＭ３−１への応答として、スレーブＣＭ３におけるログ情報３６２の蓄積状況を示す情報を送信し（ステップＳ２４）、処理が終了する。そして、スレーブＣＭ３−２は、マスタＣＭ３−１からの新たなデータの受信を待ち受ける。なお、ログ転送部３４によるログの転送先のスレーブＣＭ３−２が１つだけである場合には、ステップＳ２４の処理は省略してもよい。
【０１１０】
一方、受信したデータが処理結果である場合（ステップＳ２３のＹｅｓルート）、通信部３７は、処理結果が正常を示すか否かを判定する（ステップＳ２５）。処理結果が正常を示す場合（ステップＳ２５のＹｅｓルート）、確認処理部３８は、操作正常性の確認処理を行ない（ステップＳ２６）、確認結果が正常か否かを判定する（ステップＳ２７）。
【０１１１】
確認結果が正常である場合（ステップＳ２７のＹｅｓルート）、確認処理部３８は、通信部３７を介してマスタＣＭ３−１へ操作正常性の確認結果（この場合は正常）を送信し（ステップＳ２８）、処理が終了する。
【０１１２】
一方、確認結果が異常である場合（ステップＳ２７のＮｏルート）、確認処理部３８は、ログ格納処理部３９に対してログ情報３６２のログ格納部４１への格納を指示し、ログ格納処理部３９は、ログ情報３６２をログ情報４１１としてログ格納部４１へ格納し（ステップＳ２９）、処理がステップＳ２８に移行する。なお、ステップＳ２９経由でのステップＳ２８では、確認処理部３８は、通信部３７を介してマスタＣＭ３−１へ操作正常性の確認結果（この場合は異常）を送信する。
【０１１３】
次に、図１０を参照して、確認処理部３８による操作正常性の確認処理（図９のステップＳ２６参照）について説明する。
【０１１４】
操作正常性の確認処理では、確認処理部３８は、ログ蓄積領域内のログ情報３６２の操作データ及び制御データを検索し、「操作対象」、「操作内容」、及び「操作前の状態」を特定する（ステップＳ３１）。
【０１１５】
次いで、確認処理部３８は、ステップＳ３１で特定した「操作対象」、「操作内容」、「操作前の状態」をキーにして、正常性確認情報３６３を検索し、「操作後の状態」を期待結果として特定する（ステップＳ３２）。
【０１１６】
そして、確認処理部３８は、期待結果として特定した「操作後の状態」と、マスタＣＭ３−１から処理結果とともに受信した「現在の装置状態」とを比較する（ステップＳ３３）。
【０１１７】
比較結果が一致した場合（ステップＳ３３のＹｅｓルート）、確認処理部３８は、マスタＣＭ３における操作（オペレーション）が正常である、例えば操作が正常終了したと判定し（ステップＳ３４）、確認処理が終了する。
【０１１８】
一方、比較結果が一致しなかった場合（ステップＳ３３のＮｏルート）、確認処理部３８は、マスタＣＭ３における操作（オペレーション）が異常である、例えば操作が異常終了したと判定し（ステップＳ３５）、確認処理が終了する。
【０１１９】
〔１−５〕適用例
次に、上述の如く構成されたストレージシステム１の適用例について説明する。以下、操作端末５からマスタＣＭ３−１に対して、ＲＡＩＤ容量拡張の操作要求が発行され、マスタＣＭ３−１がＲＡＩＤ容量拡張に係る一連の処理を実施する場合を例に挙げて説明する。
【０１２０】
なお、ＲＡＩＤ容量拡張の機能は、既存のＲＡＩＤに新規のディスクを追加して、ＲＡＩＤの記憶容量を拡張する機能である。また、マスタＣＭ３−１及びスレーブＣＭ３−２が予め記憶する識別子情報３１１及び３６１は図１１に示すものであるとする。さらに、スレーブＣＭ３−２が生成（蓄積）するログ情報３６２は図１２〜図１４に示すものであり、スレーブＣＭ３−２が予め記憶する正常性確認情報３６３は図１５に示すものであるとする。
【０１２１】
以上のような前提において、ユーザ（オペレータ）がマスタＣＭ３−１と接続された操作端末５のＧＵＩ画面から、操作対象のＲＡＩＤ（例えば“RAID No. 0”）を選択して、ＲＡＩＤ容量拡張の操作を開始した場合を想定する。
【０１２２】
この場合、マスタＣＭ３−１は、操作端末５から操作対象（ＲＡＩＤ選択情報）としてＲＡＩＤ番号“０”を受信する。操作対象の情報は、識別子情報３１１における「操作内容」の“ＲＡＩＤ容量拡張”、「操作正常性確認の処理」の“操作対象ＲＡＩＤの特定”に設定されており、対応する「識別子」は“01030001”である。従って、マスタＣＭ３−１は、操作対象（ＲＡＩＤ選択情報）として“RAID No. 0”を識別子“01030001”とともにスレーブＣＭ３−２へ送信する。
【０１２３】
スレーブＣＭ３−２は、マスタＣＭ３−１から受信した識別子“01030001”、操作対象の情報、及びタイムスタンプをログ情報３６２として保持部３６に格納する（図１２の識別子“01030001”のエントリを参照）。
【０１２４】
次いで、マスタＣＭ３−１は、マスタＣＭ３−１が保持する、操作対象ＲＡＩＤの操作前の状態であるＲＡＩＤ情報、操作対象ディスクの操作前の状態であるディスク情報をそれぞれ取得し、パラメータの入力画面を生成して操作端末５の画面に表示させる。この場合、マスタＣＭ３−１は、ＲＡＩＤ情報には識別子“01030002”を、ディスク情報には識別子“01030003”を、入力画面の生成には内部制御データとして識別子“01030004”を、それぞれ識別子情報３１１に基づき付加して、スレーブＣＭ３−２へ転送する。
【０１２５】
スレーブＣＭ３−２は、マスタＣＭ３−１から受信した識別子“01030002”〜“01030004”、対応する各情報、及びタイムスタンプをログ情報３６２として保持部３６に格納する（図１２の識別子“01030002”〜“01030004”のエントリを参照）。なお、図１２の識別子“01030002”及び“01030003”のエントリに含まれるＲＡＩＤ情報及びディスク情報のテーブルは操作端末５にも表示されてもよい。
【０１２６】
次に、ユーザが操作端末５の入力画面から、追加ディスク、ＲＡＩＤレベル、ＲＡＩＤ名等の情報を入力して、ＲＡＩＤ容量拡張の操作を実行する。
【０１２７】
この場合、マスタＣＭ３−１は、ＲＡＩＤレベル、ＲＡＩＤ名等の情報をＲＡＩＤ容量拡張パラメータ（識別子“01030005”）として取得し、追加ディスクを操作対象ディスク（識別子“01030006”）として特定する。そして、マスタＣＭ３−１は、識別子情報３１１に基づき、これらのＲＡＩＤ容量拡張パラメータ及び操作対象ディスクの情報に識別子“01030005”及び“01030006”を付加して、スレーブＣＭ３−２へ転送する。なお、これらの情報は、識別子ごとに別々に転送されてもよい。
【０１２８】
スレーブＣＭ３−２は、マスタＣＭ３−１から受信した識別子“01030005”及び“01030006”、対応する各情報、及びタイムスタンプをログ情報３６２として保持部３６に格納する（図１２の識別子“01030005”及び“01030006”のエントリを参照）。なお、図１２の識別子“01030005”及び“01030006”のエントリに含まれるＲＡＩＤ容量拡張パラメータ及び操作対象ディスクのテーブルは操作端末５にも表示されてもよい。
【０１２９】
また、マスタＣＭ３−１は、操作端末５において入力された情報に従って、操作対象の装置に設定変更を指示する。この場合、マスタＣＭ３−１は、内部制御データには識別子“01030007”を、コマンドデータには識別子“01030008”を、それぞれ識別子情報３１１に基づき付加して、スレーブＣＭ３−２へ転送する。
【０１３０】
スレーブＣＭ３−２は、マスタＣＭ３−１から受信した識別子“01030007”及び“01030008”、対応する各情報、及びタイムスタンプをログ情報３６２として保持部３６に格納する（図１３の識別子“01030007”及び“01030008”のエントリを参照）。
【０１３１】
次に、マスタＣＭ３−１は、識別子情報３１１に基づき、操作対象の装置への設定変更指示の処理結果（正常又は異常）、及び設定変更指示後の装置状態に識別子“01030009”を付加してスレーブＣＭ３−２へ送信する。
【０１３２】
スレーブＣＭ３−２は、マスタＣＭ３−１から受信した識別子“01030009”、対応する情報、及びタイムスタンプをログ情報３６２として保持部３６に格納する（図１３又は図１４の識別子“01030009”のエントリを参照）。
【０１３３】
また、スレーブＣＭ３−２は、識別子情報３６１に基づき受信した識別子“01030009”が処理結果であることを特定する。この場合、スレーブＣＭ３−２は、識別子“01030009”のログ情報３６２を参照し、処理結果が正常であるため（図１３又は図１４参照）、確認処理部３８による操作正常性の確認処理を実施する。
【０１３４】
以下、スレーブＣＭ３−２が図１３に示す識別子“01030009”のログを受信した場合の確認処理について説明する。
【０１３５】
スレーブＣＭ３−２の確認処理部３８は、ログ蓄積領域のログ情報３６２を検索し、識別子“01030009”に対応する操作要求に係る最初の識別子のデータ、例えばＲＡＩＤ容量拡張機能に係る“01”で始まる識別子のうちの最初の操作データを参照する。この場合、確認処理部３８は、識別子“01030001”を参照して、操作対象“ＲＡＩＤ”、及び“RAID No. 0”の操作データを特定する。
【０１３６】
なお、最初の識別子としては、例えば識別子情報３６１に定義された最若番の識別子が挙げられる。また、識別子を参照する際には、同一の識別子の情報について操作端末５から複数回の入力があった場合も想定して、参照する識別子のうちの最も時刻の新しい識別子のデータを参照することが好ましい。
【０１３７】
続いて、確認処理部３８は、“RAID No. 0”の操作前の状態として、ログ情報３６２の識別子“01030002”、“01030003”の操作データから“Status = 通常状態”、“構成ディスク = 0000、0001”を特定する。これにより、正常性確認情報３６３を検索するためのキーは、操作対象“ＲＡＩＤ”、操作内容“RAID容量拡張”、操作前の状態“Status = 通常状態”となる。
【０１３８】
そして、確認処理部３８は、上記の処理によって求めたキーにより、正常性確認情報３６３を検索し、対応するエントリの操作後の状態“Status = 容量拡張中”、“RAIDレベル = 入力値”、“構成DISK No.= 操作前の状態（0000、0001） + 入力値”、“RAID名 = 入力値”を期待結果として特定する（図１５参照）。
【０１３９】
図１２及び図１３に示す例では期待結果の中に入力値が含まれているため、確認処理部３８は、ログ蓄積領域のログ情報３６２を検索し、識別子“01030005”及び“01030006”に係る最も時刻の新しい操作データを参照して、期待結果を以下のように特定する。
【０１４０】
＜“RAID No. 0”の期待結果＞
・“Status = 容量拡張中”
・“RAIDレベル = RAID5”
・“構成DISK No.= 0000、0001、0002、0003”
・“RAID名 = Name_X”
【０１４１】
また、確認処理部３８は、上記と同様の手順で、操作対象がディスクである場合についても、以下のように期待結果を特定する。
【０１４２】
＜“DISK No. 2”の期待結果＞
・“Status = 通常状態”
【０１４３】
＜“DISK No. 3”の期待結果＞
・“Status = 通常状態”
【０１４４】
以上の処理により、確認処理部３８による操作正常性確認の期待結果としては、図１６に例示する状態となる。
【０１４５】
そして、確認処理部３８は、以上のように得られた期待結果と、マスタＣＭ３−１から受信した処理結果（識別子“01030009”）に格納された現在の装置の状態情報（図１３参照）とを比較し、一致しているため、操作が正常である（正常終了した）と判断する。この場合、確認処理部３８は、マスタＣＭ３−１に対して操作正常性の確認結果として正常終了を通知する。
【０１４６】
なお、スレーブＣＭ３−２は、マスタＣＭ３−１における操作が正常終了したと判断したため、ログ情報３６２をログ格納部４１に書き込むことを抑止する。この場合、保持部３６に記憶されたログ情報３６２は、その後のログ蓄積領域に対する新たなログの蓄積等により上書きされることになる。
【０１４７】
一方、マスタＣＭ３−１から受信した処理結果（識別子“01030009”）に格納された現在の装置の状態情報の他の例を図１４に示す。図１４では、現在の装置の状態情報のうちの“RAID No. 0（0000）”において“Status = 通常状態”となっている。
【０１４８】
図１４に示す場合、期待結果と現在の装置の状態情報とが一致しないため、確認処理部３８は、操作が異常である（異常終了した）と判断する。この場合、確認処理部３８は、ログ格納処理部３９に対して、ログ蓄積領域内のログ情報３６２をログ格納部４１に書き込ませ、マスタＣＭ３−１に対して、操作正常性の確認結果として異常終了を通知する。
【０１４９】
なお、マスタＣＭ３−１は、操作正常性の確認結果を受信すると、操作端末５に対して確認結果に応じた正常終了又は異常終了を表示させるとともに、異常終了を通知された場合には、以降の設定操作を行なえないようにガードを行ない、処理が終了する。
【０１５０】
このように、一実施形態に係る手法をマスタＣＭ３−１及びスレーブＣＭ３−２に適用することで、スレーブＣＭ３−２は、マスタＣＭ３−１が正常と判断した一連の処理について、正常か否かを判断し、異常と判断した場合に、関連するログ情報３６２をログ格納部４１に格納することができる。従って、障害原因の調査又は解析に用いられ得る適切なログ情報４１１を消失させずに、ログ格納部４１に格納することができる。
【０１５１】
〔２〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【０１５２】
例えば、図３に示すＣＭ３の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
【０１５３】
また、ストレージシステム１が２つのＣＭ３をそなえるものとしたが、これに限定されるものではなく、ストレージシステム１には、Ｎ個（Ｎは任意の自然数）のＣＭ３がそなえられてもよい。
【０１５４】
さらに、操作端末５がＧＵＩによりマスタＣＭ３−１に対してアクセスを行なうものとして説明したが、これに限定されるものではなく、操作端末５は、Character User Interface（ＣＵＩ）等によってマスタＣＭ３−１にアクセスを行なってもよい。
【０１５５】
また、一実施形態においては、マスタＣＭ３−１が操作端末５からの操作要求に応じた処理を行なう場合のマスタＣＭ３−１及びスレーブＣＭ３−２の動作例を説明したが、これに限定されるものではない。例えばマスタＣＭ３−１がホスト装置６からのアクセス要求に応じた処理を行なう場合等、他の装置から他の種々の要求に応じた処理を行なう場合にも、同様に一実施形態に係る手法を適用することができる。
【０１５６】
さらに、一実施形態においては、マスタＣＭ３−１が一連の複数の処理を実行し、スレーブＣＭ３−２がログ情報３６２を蓄積及び格納する場合について説明したが、これに限定されるものではない。例えば、スレーブＣＭ３−２が一連の複数の処理を実行し、マスタＣＭ３−１がログ情報３６２を蓄積及び格納する態様であっても、同様に一実施形態に係る手法を適用することができる。或いは、複数のＣＭ３が対等な関係の場合にも、これらのＣＭ３間（例えば複数のスレーブＣＭ３間）に対して、同様に一実施形態に係る手法を適用することができる。
【０１５７】
また、一実施形態に係る手法は、ストレージ装置２における複数のＣＭ３に限らず、種々の情報処理システムにおける複数の制御装置に対して適用することができる。
【０１５８】
〔３〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【０１５９】
（付記１）
複数の制御装置をそなえるシステムにおける第１の制御装置であって、
前記システムにおける第２の制御装置から受信したログを蓄積したログ情報であって前記第２の制御装置により実行された一連の複数の処理に係る前記ログ情報を記憶するメモリ部と、
前記ログ情報に前記複数の処理が正常に終了したことを示す情報が含まれる場合、当該複数の処理による処理前の状態と当該複数の処理の実行により予測される処理後の状態とを含む予め設定された期待情報と、前記ログ情報とに基づき、前記複数の処理が正常に終了したか否かを判定する判定部と、
前記判定部が前記複数の処理の異常終了を判定した場合、前記ログ情報を前記メモリ部から前記メモリ部とは異なる記憶部に書き込む書込部と、をそなえる
ことを特徴とする、制御装置。
【０１６０】
（付記２）
前記ログ情報には、前記第２の制御装置による前記複数の処理の実行後の状態が含まれ、
前記判定部は、前記ログ情報から前記複数の処理による処理前の状態を抽出し、抽出した処理前の状態に基づき前記期待情報に含まれる対応する処理後の状態を取得し、前記期待情報から取得した処理後の状態と、前記ログ情報に含まれる前記複数の処理の実行後の状態とが一致しない場合に、前記複数の処理の異常終了を判定する、
ことを特徴とする、付記１記載の制御装置。
【０１６１】
（付記３）
前記複数の処理は、処理対象の状態の取得処理と、前記処理対象の状態の変更処理とを含み、
前記ログ情報は、前記取得処理に係る第１のログと、前記変更処理に係る第２のログとを含み、
前記判定部は、前記ログ情報に含まれる前記第１のログに基づき前記複数の処理による処理前の状態を抽出し、前記ログ情報に含まれる前記第２のログに基づき前記複数の処理の実行後の状態を取得する、
ことを特徴とする、付記２記載の制御装置。
【０１６２】
（付記４）
前記第２の制御装置から受信する前記複数の処理の各々のログには、前記第２の制御装置により、前記複数の処理の各々の内容と識別子とを対応付けた識別子情報に基づき、前記ログに対応する識別子が付加され、
前記判定部は、前記識別子情報に基づき、前記ログ情報から前記第１のログ及び前記第２のログを抽出する、
ことを特徴とする、付記３記載の制御装置。
【０１６３】
（付記５）
前記書込部は、前記判定部が前記複数の処理の正常終了を判定した場合、前記ログ情報を前記メモリ部から前記記憶部に書き込む処理を抑止することを特徴とする、付記１〜４のいずれか１項記載の制御装置。
【０１６４】
（付記６）
前記書込部は、前記ログ情報に、前記複数の処理が異常終了したことを示す情報が含まれる場合、前記ログ情報を前記メモリ部から前記記憶部に書き込むことを特徴とする、付記１〜５のいずれか１項記載の制御装置。
【０１６５】
（付記７）
第１及び第２の制御装置をそなえ、
前記第２の制御装置は、
前記第２の制御装置が実行した一連の複数の処理の各々のログを前記第１の制御装置へ送信し、
前記第１の制御装置は、
前記第２の制御装置から受信したログを蓄積したログ情報を記憶するメモリ部をそなえ、
前記ログ情報に前記複数の処理が正常に終了したことを示す情報が含まれる場合、当該複数の処理による処理前の状態と当該複数の処理の実行により予測される処理後の状態とを含む予め設定された期待情報と、前記ログ情報とに基づき、前記複数の処理が正常に終了したか否かを判定し、
前記複数の処理の異常終了を判定した場合、前記ログ情報を前記メモリ部から前記メモリ部とは異なる記憶部に書き込む、
ことを特徴とする、情報処理システム。
【０１６６】
（付記８）
前記ログ情報には、前記第２の制御装置による前記複数の処理の実行後の状態が含まれ、
前記第１の制御装置は、前記ログ情報から前記複数の処理による処理前の状態を抽出し、抽出した処理前の状態に基づき前記期待情報に含まれる対応する処理後の状態を取得し、前記期待情報から取得した処理後の状態と、前記ログ情報に含まれる前記複数の処理の実行後の状態とが一致しない場合に、前記複数の処理の異常終了を判定する、
ことを特徴とする、付記７記載の情報処理システム。
【０１６７】
（付記９）
前記複数の処理は、処理対象の状態の取得処理と、前記処理対象の状態の変更処理とを含み、
前記ログ情報は、前記取得処理に係る第１のログと、前記変更処理に係る第２のログとを含み、
前記第１の制御装置は、前記ログ情報に含まれる前記第１のログに基づき前記複数の処理による処理前の状態を抽出し、前記ログ情報に含まれる前記第２のログに基づき前記複数の処理の実行後の状態を取得する、
ことを特徴とする、付記８記載の情報処理システム。
【０１６８】
（付記１０）
前記第２の制御装置は、前記複数の処理の各々の内容と識別子とを対応付けた識別子情報に基づき、前記複数の処理の各々のログに、前記ログに対応する識別子を付加して前記第１の制御装置へ送信し、
前記第１の制御装置は、前記識別子情報に基づき、前記ログ情報から前記第１のログ及び前記第２のログを抽出する、
ことを特徴とする、付記９記載の情報処理システム。
【０１６９】
（付記１１）
前記第１の制御装置は、前記複数の処理の正常終了を判定した場合、前記ログ情報を前記メモリ部から前記記憶部に書き込む処理を抑止することを特徴とする、付記７〜１０のいずれか１項記載の情報処理システム。
【０１７０】
（付記１２）
前記第１の制御装置は、前記ログ情報に、前記複数の処理が異常終了したことを示す情報が含まれる場合、前記ログ情報を前記メモリ部から前記記憶部に書き込むことを特徴とする、付記７〜１１のいずれか１項記載の情報処理システム。
【０１７１】
（付記１３）
前記第１の制御装置を複数そなえ、
前記第２の制御装置は、前記複数の処理の実行の過程で、実行した処理に係るログを前記複数の第１の制御装置へ送信し、
前記複数の第１の制御装置の各々は、前記第１の制御装置から受信したログを前記メモリ部の前記ログ情報に蓄積し、前記ログ情報の蓄積状況に係る情報を前記第１の制御装置へ応答し、
前記第２の制御装置は、前記ログ情報の蓄積状況に係る情報に基づき１以上の第１の制御装置を選択し、選択した前記１以上の第１の制御装置に対して、前記複数の処理が正常終了又は異常終了したことを示す情報を送信し、
前記１以上の第１の制御装置は、前記第２の制御装置から受信した前記複数の処理が正常終了又は異常終了したことを示す情報を前記ログ情報に蓄積するとともに、前記ログ情報と前記期待情報とに基づき、前記複数の処理が正常に終了したか否かを判定する、
ことを特徴とする、付記７〜１２のいずれか１項記載の情報処理システム。
【０１７２】
（付記１４）
複数のコンピュータをそなえるシステムにおける第１のコンピュータに、
前記システムにおける第２のコンピュータから受信したログを蓄積したログ情報であって前記第２のコンピュータにより実行された一連の複数の処理に係る前記ログ情報をメモリ部に記憶し、
前記ログ情報に前記複数の処理が正常に終了したことを示す情報が含まれる場合、当該複数の処理による処理前の状態と当該複数の処理の実行により予測される処理後の状態とを含む予め設定された期待情報と、前記ログ情報とに基づき、前記複数の処理が正常に終了したか否かを判定し、
前記複数の処理の異常終了を判定した場合、前記ログ情報を前記メモリ部から前記メモリ部とは異なる記憶部に書き込む
処理を実行させることを特徴とする、制御プログラム。
【０１７３】
（付記１５）
前記ログ情報には、前記第２のコンピュータによる前記複数の処理の実行後の状態が含まれ、
前記第１のコンピュータに、
前記ログ情報から前記複数の処理による処理前の状態を抽出し、
抽出した処理前の状態に基づき前記期待情報に含まれる対応する処理後の状態を取得し、
前記期待情報から取得した処理後の状態と、前記ログ情報に含まれる前記複数の処理の実行後の状態とが一致しない場合に、前記複数の処理の異常終了を判定する、
処理を実行させることを特徴とする、付記１４記載の制御プログラム。
【０１７４】
（付記１６）
前記複数の処理は、処理対象の状態の取得処理と、前記処理対象の状態の変更処理とを含み、
前記ログ情報は、前記取得処理に係る第１のログと、前記変更処理に係る第２のログとを含み、
前記第１のコンピュータに、
前記ログ情報に含まれる前記第１のログに基づき前記複数の処理による処理前の状態を抽出し、前記ログ情報に含まれる前記第２のログに基づき前記複数の処理の実行後の状態を取得する、
処理を実行させることを特徴とする、付記１５記載の制御プログラム。
【０１７５】
（付記１７）
前記第２のコンピュータから受信する前記複数の処理の各々のログには、第２のコンピュータにより、前記複数の処理の各々の内容と識別子とを対応付けた識別子情報に基づき、前記ログに対応する識別子が付加され、
前記第１のコンピュータに、
前記識別子情報に基づき、前記ログ情報から前記第１のログ及び前記第２のログを抽出する、
処理を実行させることを特徴とする、付記１６記載の制御プログラム。
【０１７６】
（付記１８）
前記第１のコンピュータに、
前記複数の処理の正常終了を判定した場合、前記ログ情報を前記メモリ部から前記記憶部に書き込む処理を抑止する
処理を実行させることを特徴とする、付記１４〜１７のいずれか１項記載の制御プログラム。
【０１７７】
（付記１９）
前記第１のコンピュータに、
前記ログ情報に、前記複数の処理が異常終了したことを示す情報が含まれる場合、前記ログ情報を前記メモリ部から前記記憶部に書き込む
処理を実行させることを特徴とする、付記１４〜１８のいずれか１項記載の制御プログラム。
【０１７８】
（付記２０）
複数の制御装置をそなえるシステムにおける第１の制御装置であって、
プロセッサと、メモリとをそなえ、
前記メモリは、
前記システムにおける第２の制御装置から受信したログを蓄積したログ情報であって前記第２の制御装置により実行された一連の複数の処理に係る前記ログ情報を記憶し、
前記プロセッサは、
前記ログ情報に前記複数の処理が正常に終了したことを示す情報が含まれる場合、当該複数の処理による処理前の状態と当該複数の処理の実行により予測される処理後の状態とを含む予め設定された期待情報と、前記ログ情報とに基づき、前記複数の処理が正常に終了したか否かを判定し、
前記複数の処理の異常終了を判定した場合、前記ログ情報を前記メモリから前記メモリとは異なるストレージに書き込む
ことを特徴とする、制御装置。
【符号の説明】
【０１７９】
１    ストレージシステム
２    ストレージ装置
３、３−１、３−２    コントローラモジュール
３ａ    ＣＰＵ
３ｂ    メモリ
３ｃ    記憶部
３ｄ    インタフェース部
３ｄ−１、３ｄ−２    インタフェース
３ｅ    入出力部
３ｆ    記録媒体
３１、３６    保持部
３２、３７    通信部
３３    操作処理部
３４    ログ転送部
３５    転送先選択部
３８    確認処理部
３９    ログ格納処理部
３１１、３６１    識別子情報
３６２、４１１    ログ情報
３６３    正常性確認情報
４    記憶装置
４１    ログ格納部
５    操作端末
６    ホスト装置
【図１】
2017054415.tif 000003
【図２】
2017054415.tif 000004
【図３】
2017054415.tif 000005
【図４】
2017054415.tif 000006
【図５】
2017054415.tif 000007
【図６】
2017054415.tif 000008
【図７】
2017054415.tif 000009
【図８】
2017054415.tif 000010
【図９】
2017054415.tif 000011
【図１０】
2017054415.tif 000012
【図１１】
2017054415.tif 000013
【図１２】
2017054415.tif 000014
【図１３】
2017054415.tif 000015
【図１４】
2017054415.tif 000016
【図１５】
2017054415.tif 000017
【図１６】
2017054415.tif 000018