(57)【要約】【課題】被監視装置においてリード応答が無い障害が発生した場合であっても、処理装置の動作を継続したまま、状態情報を確実に取得する。【解決手段】監視装置３は、被監視装置５と前記被監視装置５に対する処理を行なう処理装置２との間に介設され、前記被監視装置５において発生した障害を検出する検出部３１と、前記検出部３１が検出した障害の内容を示す障害情報を生成し、生成した障害情報と前記障害の発生とを前記処理装置２へ通知する通知部３１と、前記障害の発生に応じて、前記被監視装置５から前記被監視装置５の前記障害の発生後の状態情報を取得して記憶部２２，４へ格納する取得部３２と、を有する。【選択図】図１
2014026567.tif 000002
【特許請求の範囲】
【請求項１】
被監視装置を監視する監視装置であって、
前記被監視装置と前記被監視装置に対する処理を行なう処理装置との間に介設され、
前記被監視装置において発生した障害を検出する検出部と、
前記検出部が検出した障害の内容を示す障害情報を生成し、生成した障害情報と前記障害の発生とを前記処理装置へ通知する通知部と、
前記障害の発生に応じて、前記被監視装置から前記被監視装置の前記障害の発生後の状態情報を取得して記憶部へ格納する取得部と、
を有することを特徴とする、監視装置。
【請求項２】
前記取得部は、前記被監視装置から定期的に状態情報を取得して前記記憶部の第１領域へ格納し、前記障害の発生に応じて、前記定期的な状態情報の取得を抑止するとともに、前記障害の発生後の状態情報を取得して前記記憶部の第２領域へ格納することを特徴とする、請求項１記載の監視装置。
【請求項３】
前記取得部は、前記取得した定期的な状態情報を、前記処理装置がアクセス可能な不揮発性メモリである前記記憶部の第１領域へ格納するとともに、前記取得した障害の発生後の状態情報を、前記不揮発性メモリの第２領域へ格納することを特徴とする、請求項２記載の監視装置。
【請求項４】
前記取得部は、前記取得した定期的な状態情報を、前記処理装置が有するメモリである前記記憶部の第１領域へ格納するとともに、前記取得した障害の発生後の状態情報を、前記メモリの第２領域へ格納することを特徴とする、請求項２又は請求項３記載の監視装置。
【請求項５】
前記取得部は、前記処理装置からの前記被監視装置の状態情報の取得要求を受けると、前記取得要求により指示された前記被監視装置から状態情報を取得して、前記メモリの第３領域へ格納することを特徴とする、請求項４記載の監視装置。
【請求項６】
前記検出部は、前記通知部が前記生成した障害情報と前記障害の発生とを前記処理装置へ通知すると、前記障害が発生した被監視装置をシステムから切り離すことを特徴とする、請求項１〜５のいずれか１項記載の監視装置。
【請求項７】
前記検出部は、前記被監視装置と障害の発生を通知するための信号線で接続され、前記被監視装置から前記信号線を介した通知を受けると、前記障害を検出することを特徴とする、請求項１〜６のいずれか１項記載の監視装置。
【請求項８】
前記通知部は、生成した障害情報を前記記憶部の所定の領域に格納するとともに、前記処理装置に対して前記障害の発生を割り込みで通知することを特徴とする、請求項１〜７のいずれか１項記載の監視装置。
【請求項９】
被監視装置と、
前記被監視装置に対する処理を行なう処理装置と、
前記被監視装置を監視する監視装置と、
前記監視装置による監視結果を格納する記憶部と、を有し、
前記監視装置は、
前記被監視装置と前記処理装置との間に介設され、
前記被監視装置において発生した障害を検出する検出部と、
前記検出部が検出した障害の内容を示す障害情報を生成し、生成した障害情報と前記障害の発生とを前記処理装置へ通知する通知部と、
前記障害の発生に応じて、前記被監視装置から前記被監視装置の前記障害の発生後の状態情報を取得して前記記憶部へ格納する取得部と、
を有することを特徴とする、情報処理装置。
【請求項１０】
被監視装置と前記被監視装置に対する処理を行なう処理装置との間に介設され、前記被監視装置を監視する監視装置における監視方法であって、
前記被監視装置において発生した障害を検出し、
前記検出した障害の内容を示す障害情報を生成し、
生成した障害情報と前記障害の発生とを前記処理装置へ通知し、
前記障害の発生に応じて、前記被監視装置から前記被監視装置の前記障害の発生後の状態情報を取得して記憶部へ格納する、
ことを特徴とする、監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視装置、情報処理装置、及び監視方法に関する。
【背景技術】
【０００２】
冗長性を持つシステムにおいて、システムを構成する部品が故障した場合、システムは、故障部品の切り離しを行なうことで障害の封じ込めを行なう。故障部品の切り離しの手法としては、例えば故障部品の電源切断や高速伝送路バスのスイッチ切断が挙げられる。
上記システムのファームウェアは、システム内部異常を検出した場合、正しく故障部品の特定を行なうことが要求される。冗長性を持つシステムでは、片方のモジュールが動作すればシステムは動作継続が可能であるため、このような障害の封じ込めが非常に重要である。
【０００３】
図７は、情報処理装置１００の構成例を示す図である。図７に示すように、情報処理装置１００は、ＣＰＵ（Central Processing Unit）２００、監視ＦＰＧＡ（Field Programmable Gate Array）３００、不揮発性メモリ４００、及びデバイス５００Ａ〜５００Ｃを有している。
ＣＰＵ２００は、情報処理装置１００における種々の制御や演算を行なう装置であり、コア２１０、ＲＡＭ（Random Access Memory）２２０、高速ＩＦ（Interface）２３０、及び低速ＩＦ２４０を有する。
【０００４】
コア２１０は、ＣＰＵ２００としての各種処理を行なうものである。例えば、コア２１０は、高速ＩＦ２３０により、高速伝送路７００ａを介してデバイス５００Ａの制御を行なうとともに、デバイス５００Ａを経由して、デバイス５００Ｂ及び５００Ｃの制御を行なう。また、コア２１０は、ログ採取用の低速ＩＦ２４０により、低速伝送路７００ｂを介して、各デバイス５００Ａ〜５００Ｃと接続されている。
【０００５】
デバイス５００Ａ〜５００Ｃは、情報処理装置１００を構成する各種装置である。デバイス５００Ａは例えばスイッチモジュールであり、配下のデバイス５００Ｂ及び５００Ｃと高速伝送路７００ａを介して接続されるとともに、二重化した他系モジュールと高速伝送路７００ａを介して接続される。デバイス５００Ｂ及び５００Ｃは、二重化された装置であり、例えばディスク装置又はホスト装置等の装置との通信を行なうアダプタである。
【０００６】
ＣＰＵ２００（コア２１０）は、高速ＩＦ２３０を通じてデバイス５００Ａ〜５００Ｃの異常を検出すると、低速ＩＦ２４０を介して、低速伝送路７００ｂ経由で各デバイス５００Ａ〜５００Ｃからレジスタダンプ等のログ（状態情報）を取得する。また、ＣＰＵ２００は、取得したログをＲＡＭ２２０のログ領域２２０ａに格納する。
そして、ＣＰＵ２００は、取得したレジスタダンプに基づいて障害の発生個所を特定するとともに、例えば障害の発生個所がデバイス５００Ａであると、障害をシステムから切り離すため、デバイス５００Ａに対して、二重化した他系モジュールとの接続を切断させる。この場合、当該ＣＰＵ２００を含む情報処理装置１００は他系モジュールと切り離され、他系モジュールによりシステムは動作継続する。
【０００７】
なお、監視ＦＰＧＡ３００は、情報処理装置１００におけるＬＥＤや電源、リセット処理等の監視・制御を行なうハードウェアであり、不揮発性メモリ４００は、監視ＦＰＧＡ３００による監視・制御に係る情報等を保持するメモリである。
また、関連する技術として、プロセッサが、障害等の発生に応じて、チャネル装置やエラーログ制御回路のメモリ等の内容を主メモリに転送させる技術が知られている（例えば、特許文献１又は２参照）。
【０００８】
さらに、ハードウェア構成のロギング回路や論理回路により、通常時やエラー検出時等のログを内部のバッファ等に蓄積する技術が知られている（例えば、特許文献３又は４参照）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開昭５７−６９５１号公報
【特許文献２】特開昭５８−９６３２６号公報
【特許文献３】特開２００４−３４８３０６号公報
【特許文献４】特開平１０−２０７７９０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
図７に示す例では、ＣＰＵ２００は、レジスタダンプの取得においてデバイス５００Ａ〜５００Ｃからのリード応答が無いと、例外処理に入りハングアップしてしまうというリスクがある。
図８は、図７に示すデバイス５００Ｃで障害が発生した場合の情報処理装置１００の動作例を示すシーケンス図である。図８に示すように、情報処理装置１００の電源投入後（ステップＴ１１０）、デバイス５００Ｃで故障が発生すると（ステップＴ１２０）、デバイス５００Ｃから高速伝送路７００ａ経由でＣＰＵ２００へエラーが通知される（ステップＴ１３０）。エラー通知を受けると、ＣＰＵ２００により低速伝送路７００ｂ経由でデバイス５００Ｃのレジスタ（図７において図示省略）からダンプが取得（リード）される（ステップＴ１４０）。
【００１１】
ここで、デバイス５００Ｃにおいて発生した障害の影響で、デバイス５００Ｃがリード応答できない場合（ステップＴ１５０）、ＣＰＵ２００は、レジスタリードの完了待ち状態でハングアップしてしまう（ステップＴ１６０）。この場合、ＣＰＵ２００は、障害発生時のレジスタダンプが採取できず故障個所の判定ができないだけでなく、ＣＰＵ２００による故障部品であるデバイス５００Ｃの切り離しにも失敗するため、エラーの封じ込めに失敗する。
【００１２】
また、ＣＰＵ２００がデバイス５００Ｃの切り離しに失敗すると、デバイス５００Ｃの障害状態が、高速伝送路７００ａを通じてデバイス５００Ａに伝播する虞がある（ステップＴ１７０）。この場合、さらに、デバイス５００Ａに伝播した障害状態が、モジュール間のバス（高速伝送路７００ａ）を通じて他方のモジュールにも伝播し、二重化したモジュールの両方が動作停止して、システムが継続不可能（マシンダウン）となる場合があった。
【００１３】
このケースでは、ログ採取中にＣＰＵ２００が動作不能に陥るため、現象発生時のデバイス５００Ｃからのレジスタダンプの採取も行なうことができない。また、レジスタダンプが採取できないため、故障したモジュールを交換し、例えば工場に引き取った後に原因調査をすることも困難となる。
なお、上述した関連する各技術では、上述した問題については考慮されていない。
【００１４】
１つの側面では、本発明は、被監視装置においてリード応答が無い障害が発生した場合であっても、処理装置の動作を継続したまま、状態情報を確実に取得することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００１５】
本件の監視装置は、被監視装置を監視する監視装置であって、前記被監視装置と前記被監視装置に対する処理を行なう処理装置との間に介設され、前記被監視装置において発生した障害を検出する検出部と、前記検出部が検出した障害の内容を示す障害情報を生成し、生成した障害情報と前記障害の発生とを前記処理装置へ通知する通知部と、前記障害の発生に応じて、前記被監視装置から前記被監視装置の前記障害の発生後の状態情報を取得して記憶部へ格納する取得部と、を有する。
【発明の効果】
【００１６】
一実施形態によれば、被監視装置においてリード応答が無い障害が発生した場合であっても、処理装置の動作を継続したまま、状態情報を確実に取得することができる。
【図面の簡単な説明】
【００１７】
【図１】一実施形態に係る情報処理装置の構成例を示すブロック図である。
【図２】図１に示す障害検出部が生成するエラーコードの例を示す図である。
【図３】図１に示す情報処理装置を適用可能なストレージシステムの構成例を示すブロック図である。
【図４】図１に示すデバイスから高速伝送路経由でＣＰＵへエラー通知があった場合の情報処理装置の動作例を説明するシーケンス図である。
【図５】図１に示すデバイスから専用伝送路経由で監視ＦＰＧＡへエラー通知があった場合の情報処理装置の動作例を説明するシーケンス図である。
【図６】図１に示す監視ＦＰＧＡによるレジスタダンプの動作例を説明するフローチャートである。
【図７】情報処理装置の構成例を示す図である。
【図８】図７に示すデバイスで障害が発生した場合の情報処理装置の動作例を示すシーケンス図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して実施の形態を説明する。
〔１〕一実施形態
〔１−１〕情報処理装置の説明
図１は、一実施形態に係る情報処理装置１の構成例を示すブロック図である。図１に示すように、情報処理装置１は、ＣＰＵ２、監視ＦＰＧＡ３、不揮発性メモリ４、デバイス５Ａ〜５Ｃ、及びバススイッチ６Ａ〜６Ｃを有している。なお、本実施形態に係る情報処理装置１は、バススイッチ６Ａを介して接続された他系モジュールとの間で二重化されており、情報処理装置１及び他系モジュールにより情報処理システム（システム）として動作する。
【００１９】
ＣＰＵ（処理部，処理装置）２は、デバイス５Ａ〜５Ｃを含む情報処理装置１における種々の制御や演算等の処理を行なう装置であり、コア２１、ＲＡＭ２２、高速ＩＦ２３、及び低速ＩＦ２４を有している。
コア２１は、ＣＰＵ２としての各種処理を行なうものであり、図示しないＲＡＭやＲＯＭ（Read Only Memory）等に格納されたプログラムを実行することにより、種々の機能を実現する。
【００２０】
本実施形態において、デバイス５Ａ〜５Ｃからレジスタダンプ等のログ（状態情報）を取得する処理は、監視ＦＰＧＡ３により行なわれる。このため、コア２１は、ログの採取を行なう配下デバイスの採取アドレスや採取するデータ長を、監視ＦＰＧＡ３の内部のテーブル３４ａに書き込むことができる。また、コア２１は、ＣＰＵ２において各デバイス５Ａ〜５Ｃのログを採取したい場合に、監視ＦＰＧＡ３に対して、ログの採取を指示することができる。
【００２１】
ＲＡＭ（記憶部，メモリ）２２は、監視ＦＰＧＡ３により採取された各デバイス５Ａ〜５Ｃのログ等を格納する記憶装置である。ＲＡＭ２２は、後述する定期ダンプのログを格納する第１領域２２ａ、トリガダンプのログを格納する第２領域２２ｂ、バイパスダンプのログを格納する第３領域２２ｃ、及び発生した障害の内容を示すエラーコードを格納するコード領域２２ｄをそなえる。これらの領域２２ａ〜２２ｄの詳細については、監視ＦＰＧＡ３の説明において詳述する。なお、ＲＡＭ２２としては、例えばＳＲＡＭ（Static RAM）等が挙げられる。
【００２２】
高速ＩＦ２３は、高速伝送路７ａを介してデバイス５Ａと接続され、デバイス５Ａとの通信を制御するとともに、デバイス５Ａを経由して、デバイス５Ｂ及び５Ｃとの通信を制御するインタフェースである。なお、高速伝送路７ａとしては、例えばＰＣＩｅＸ（Peripheral Component Interconnect eXpress）又はＳＡＳ（Serial Attached SCSI（Small Computer System Interface））等が挙げられる。コア２１は、デバイス５Ａ〜５Ｃとの間で、高速ＩＦ２３を介してユーザデータや制御情報等の伝送を行なう。
【００２３】
低速ＩＦ２４は、低速伝送路７ｂを介して監視ＦＰＧＡ３と接続され、監視ＦＰＧＡ３との間で、デバイス５Ａ〜５Ｃのレジスタダンプ等のログ（状態情報）に関する情報の通信を制御するインタフェースである。なお、低速伝送路７ｂとしては、例えばＩ２Ｃ（Inter-Integrated Circuit）、ＳＧＰＩＯ（Serial General Purpose Input/Output）、又はＳＰＩ（Serial Peripheral Interface）等が挙げられる。コア２１は、監視ＦＰＧＡ３に対して低速伝送路７ｂを介してログの採取を指示するとともに、監視ＦＰＧＡ３から低速伝送路７ｂを介して受信したログをＲＡＭ２２の所定の領域に格納する。
【００２４】
監視ＦＰＧＡ（監視部，監視装置）３は、デバイス５Ａ〜５Ｃからログを取得するハードウェアであり、デバイス５Ａ〜５ＣとＣＰＵ２との間に介設される。また、監視ＦＰＧＡ３は、図７に示す監視ＦＰＧＡ３００と同様に、情報処理装置１におけるＬＥＤや電源、リセット処理等の監視・制御を行なうことができる。なお、監視ＦＰＧＡ３としては、ＦＰＧＡ、ＰＬＤ（Programmable Logic Device）、ＬＳＩ（Large Scale Integration）、マイクロコンピュータ等のＩＣ（集積回路）が挙げられる。
【００２５】
本実施形態に係る監視ＦＰＧＡ３は、複数の配下デバイス５Ａ〜５Ｃの複数のレジスタ５３の内容を読み出し、監視ＦＰＧＡ３、不揮発性メモリ４、及びＣＰＵ２内のＲＡＭ２２に書き込むレジスタダンプの機能を持つ。監視ＦＰＧＡ３によるレジスタダンプの態様としては、例えば、通常の状態（障害が検出されていない状態）で定期的に行なわれる定期ダンプ、障害が検出された後に行なわれるトリガダンプ、及びＣＰＵ２からの指示により行なわれるバイパスダンプが挙げられる。監視ＦＰＧＡ３の詳細については後述する。
【００２６】
不揮発性メモリ（記憶部）４は、ＣＰＵ２がアクセス可能な不揮発性のメモリであり、フラッシュメモリ等の種々のメモリを用いることができる。不揮発性メモリ４は、定期ダンプのログを格納する第１領域４１ａ、トリガダンプのログを格納する第２領域４１ｂ、並びに監視ＦＰＧＡ３（及びＣＰＵ２）との通信を制御するインタフェースであるＩＦ４２を有している。また、不揮発性メモリ４は、監視ＦＰＧＡ３によるＬＥＤ、電源、及びリセット処理等の監視・制御に係る情報等をさらに保持しても良い。
【００２７】
デバイス５Ａ〜５Ｃは、情報処理装置１を構成する各種装置である。以下、デバイス５Ａ〜５Ｃを区別しない場合には、単にデバイス５という。また、図中、デバイス５Ａ〜５ＣをそれぞれデバイスＡ〜Ｃと表記する場合がある。
デバイス５Ａは、例えばスイッチモジュールであり、配下のデバイス５Ｂ及び５Ｃと高速伝送路７ａを介して接続されるとともに、二重化した他系モジュールと高速伝送路７ａを介して接続される。デバイス５Ｂ及び５Ｃは、二重化された装置であって、例えばディスク装置又はホスト装置等の装置との通信を行なうアダプタである。
【００２８】
デバイス５はそれぞれ、エラー通知部５１、低速ＩＦ５２、レジスタ５３、及び高速ＩＦ５４を有している。また、デバイス５Ａは、さらに高速ＩＦ５５ａ〜５５ｃを有している。
各デバイス５が有するエラー通知部５１は、障害の発生を通知するための専用伝送路（信号線）７ｃを介して監視ＦＰＧＡ３と接続される。各デバイス５は、所定の通知条件に合致する障害が発生した場合、この専用伝送路７ｃを経由して、エラー通知（ＦＡＴＡＬ＿ＥＲＲＯＲ信号による通知）を行なう。デバイス５Ａ〜５ＣによるＦＡＴＡＬ＿ＥＲＲＯＲ信号による通知は、例えば正常時には“０”、異常時には“１”を出力する等の簡素且つ高速な手法で行なわれることが好ましい。なお、所定の通知条件としては、デバイス５内の所定の部品で故障が発生したことや、発生した障害が所定の障害の程度以上であること等、既知の種々の通知条件とすることが可能であり、その詳細な説明は省略する。
【００２９】
低速ＩＦ５２は、低速伝送路７ｂを介して監視ＦＰＧＡ３と接続され、監視ＦＰＧＡ３からのレジスタダンプのリード要求に応じて、レジスタ５３のダンプを送信する（リード応答）。高速ＩＦ５４は、高速伝送路７ａを介して上流（ＣＰＵ２側）の装置との通信を制御するインタフェースである。
また、デバイス５Ａが有する高速ＩＦ５５ａ〜５５ｃはそれぞれ、高速伝送路７ａを介してバススイッチ６Ａ〜６Ｃと接続される。高速ＩＦ５５ａは、バススイッチ６ａを介して二重化した他系モジュールと接続され、高速ＩＦ５５ｂは、バススイッチ６Ｂを介してデバイス５Ｂの高速ＩＦ５４と接続され、高速ＩＦ５５ｃは、バススイッチ６Ｃを介してデバイス５Ｃの高速ＩＦ５４と接続される。
【００３０】
各デバイス５が有するレジスタ５３は、内部の動作状態又は設定情報等を保持するものであり、監視ＦＰＧＡ３によるレジスタダンプが行なわれる対象のレジスタである。このレジスタ５３の内容が、監視ＦＰＧＡ３によりデバイス５の障害発生前後のログ（状態情報）として用いられる。
バススイッチ６Ａ〜６Ｃはそれぞれ、情報処理装置１と他系モジュールとの間の接続状態、デバイス５Ａと５Ｂとの間の接続状態、及びデバイス５Ａと５Ｃとの間の接続状態を切り替えるスイッチである。バススイッチ６Ａ〜６Ｃは、それぞれ監視ＦＰＧＡ３と制御線７ｄを介して接続され、監視ＦＰＧＡ３により接続状態が切り替えられる。
【００３１】
例えば、デバイス５において障害が発生していない場合、バススイッチ６Ａは情報処理装置１と他系モジュールとを相互に接続し、二重化状態を維持する。また、この場合、バススイッチ６Ｂはデバイス５Ａと５Ｂとを相互に接続し、バススイッチ６Ｃはデバイス５Ａと５Ｃとを相互に接続し、デバイス５Ｂと５Ｃとの二重化状態を維持する。
一方、デバイス５Ｂ又は５Ｃにおいて障害が発生すると、監視ＦＰＧＡ３は、障害が発生した方のバススイッチ６Ｂ又は６Ｃを制御してオフ状態（切断状態）とし、障害が発生したデバイス５Ｂ又は５Ｃをシステムから切り離す。また、デバイス５Ａにおいて障害が発生すると、監視ＦＰＧＡ３は、バススイッチ６Ａを制御してオフ状態（切断状態）とし、障害が発生したデバイス５Ａと配下のデバイス５Ｂ及び５Ｃとをシステムから切り離す。なお、バススイッチ６Ａをオフ状態とすると、デバイス５だけでなくＣＰＵ２を含む情報処理装置１全体が二重化した他系モジュールと切り離される。この場合、他系モジュールによりシステムは動作継続する。
【００３２】
〔１−２〕監視ＦＰＧＡの説明
監視ＦＰＧＡ３は、障害検出部３１、ダンプ取得部３２、及び各ＩＦ３６〜３８を有している。
ダンプ取得部（取得部）３２は、レジスタダンプ等のログの採取を実行するものであり、第１ＲＡＭ３３、第２ＲＡＭ３４、及びアービタ３５を有している。
【００３３】
第２ＲＡＭ３４は、定期ダンプ又はトリガダンプにおいてログを採取する対象（レジスタダンプの対象箇所）を示すテーブル３４ａを格納する。テーブル３４ａは、例えば採取アドレスと採取データ長とが対応付けられる。採取アドレス及び採取データ長は、既述のように、ＣＰＵ２により予め低速伝送路７ｂを介して指示される。具体的には、ＣＰＵ２は、情報処理装置１の起動時等の所定のタイミングで、監視ＦＰＧＡ３内の第２ＲＡＭ３４に対して、採取アドレス及び採取データ長を対応付けたテーブル３４ａを生成又は更新する。以下、テーブル３４ａには、デバイス５Ａ〜５Ｃが有する各レジスタ５３のアドレスと所定のデータ長とが対応付けられて保持されているものとする。
【００３４】
ダンプ取得部３２は、テーブル３４ａの設定情報に基づいて、デバイス５が有する各レジスタ５３から定期的に所定のデータ長のログを取得する（定期ダンプ）。なお、定期ダンプは、所定の周期又は所定のタイミングで実行される。この所定の周期又は所定のタイミングは、例えばＣＰＵ２により決定され通知されても良いし、製造・出荷時や起動時等に予め設定されても良い。
【００３５】
また、ダンプ取得部３２は、障害の発生等のトリガの検出に応じて、障害の発生後の所定のデータ長のログを取得する（トリガダンプ）。このとき、ダンプ取得部３２は、障害の発生以降の定期ダンプの実行を抑止する。なお、トリガの検出については、後述する。
ここで、ダンプ取得部３２は、定期ダンプを行なう場合、取得したログを第１ＲＡＭ３３内の第１領域３３ａに格納する。そして、ダンプ取得部３２は、第１領域３３ａに格納したログを、ＣＰＵ２のＲＡＭ２２内の第１領域２２ａ、及び、不揮発性メモリ４内の第１領域４１ａにそれぞれ転送し、格納させる。
【００３６】
一方、ダンプ取得部３２は、トリガダンプを行なう場合、取得したログを第１ＲＡＭ３３内の第２領域３３ｂに格納する。そして、ダンプ取得部３２は、第２領域３３ｂに格納したログを、ＣＰＵ２のＲＡＭ２２内の第２領域２２ｂ、及び、不揮発性メモリ４内の第２領域４１ｂにそれぞれ転送し、格納させる。
なお、ダンプ取得部３２は、第１ＲＡＭ３３内の第１領域３３ａ及び第２領域３３ｂを作業領域として用いている。
【００３７】
このように、ダンプ取得部３２により、定期ダンプにより障害の発生前に採取したログと、トリガダンプにより障害の発生後に採取したログとが異なる領域に格納される。また、ダンプ取得部３２により、障害の発生に応じてトリガダンプが実行される際に、定期ダンプの実行が抑止されるため、障害の発生後に定期ダンプが実行されて、障害の発生前の定期ダンプによるログが障害の発生後のログにより上書きされることを防止できる。
【００３８】
従って、情報処理装置１において、障害の発生前後のログを確実に保持しておくことができ、障害原因の特定等の発生した障害の解析を容易に行なうことができる。
また、ダンプ取得部３２は、ＣＰＵ２からの低速伝送路７ｂに対するアクセスを、配下の各デバイス５に直接伝えるバイパス機能を持つ。具体的には、ダンプ取得部３２は、ＣＰＵ２からのデバイス５のレジスタダンプ要求（ログの取得要求，以下、ダンプ要求という）を受けると、ダンプ要求により指示されたデバイス５からログを取得する（バイパスダンプ）。このとき、ダンプ取得部３２は、取得したログをＣＰＵ２のＲＡＭ２２内の第３領域２２ｃに転送し、格納させる。
【００３９】
このようなバイパスダンプにより、監視ＦＰＧＡ３による定期ダンプ又はトリガダンプ中も、ＣＰＵ２は、バイパス機能を使って任意の配下デバイス５のステータスリードを行なうことができる。
なお、ＣＰＵ２からのダンプ要求は、監視ＦＰＧＡ３の配下のデバイスのうちのテーブル３４ａに設定されていない採取アドレスから任意のデータ長分のログを取得することを示す要求であっても良く、この場合、ダンプ要求には採取アドレス及び任意のデータ長が含まれる。また、ダンプ要求は、テーブル３４ａに設定された全て又は一部の採取アドレスから採取データ長分のログを取得することを示す要求であっても良く、この場合、ダンプ要求には、テーブル３４ａの全て又は任意のレコードを特定する情報が含まれても良い。
【００４０】
このように、ダンプ取得部３２は、定期ダンプ、トリガダンプ、及びバイパスダンプのいずれのレジスタダンプの場合にも、ＣＰＵ２によるリード処理を発生させない。つまり、実際には、レジスタダンプは、デバイス５からログをリードする処理であるが、ＣＰＵ２から見た場合、監視ＦＰＧＡ３に対してログ採取の指示を行ない（バイパスダンプの場合）、内部のＲＡＭ２２に対する監視ＦＰＧＡ３のライト処理の完了を待つことになる。
【００４１】
すなわち、本実施形態に係るレジスタダンプは、ＣＰＵ２から見た場合、レジスタダンプの指示、監視ＦＰＧＡ３によるライト処理、及び当該ライト処理の完了待ちの流れで実施される。従って、ＣＰＵ２は、デバイス５にリード応答無しの障害が発生した場合であっても、リード処理が発生しないため例外処理に入ることを回避でき、ＲＡＭ２２を参照することで安全にレジスタダンプ等のログを取得することができる。
【００４２】
アービタ３５は、定期ダンプ又はトリガダンプとダンプ要求に応じたダンプとを所定のポリシーに従って調停するものである。このポリシーは、定期ダンプ又はトリガダンプ、及び、バイパスダンプのうちのいずれかのレジスタダンプを優先して実行するものであっても良い。アービタ３５は、このようなポリシーに従って、実行する上記いずれかのレジスタダンプを選択して、レジスタのリード要求を対象のデバイス５へ発行する。
【００４３】
ＩＦ３６〜３８は、それぞれ接続先のＩＦとの間で、ログ等の情報の通信を制御するインタフェースである。
低速ＩＦ３６は、ＣＰＵ２が有する低速ＩＦ２４と低速伝送路７ｂを介して接続される。低速ＩＦ３６は、コア２１から低速ＩＦ２４を介して送信された、バイパスダンプのダンプ要求又はテーブル３４ａに設定する採取アドレス及び採取データ長等の情報を受信して、ダンプ取得部３２に渡す。また、低速ＩＦ３６は、ダンプ取得部３２が採取したログ又は障害検出部３１が生成した後述するエラーコードを、低速ＩＦ２４へ送信する。なお、低速ＩＦ２４は、低速ＩＦ３６から受信したログ又はエラーコードを、ＲＡＭ２２に格納する。
【００４４】
低速ＩＦ３７は、各デバイス５が有する低速ＩＦ５２と低速伝送路７ｂを介して接続される。低速ＩＦ３７は、レジスタダンプに係るリード要求を低速ＩＦ５２へ送信する一方、低速ＩＦ５２から送信されたリード要求への応答であるレジスタダンプを受信して、ダンプ取得部３２に渡す。
ＩＦ３８は、不揮発性メモリ４が有するＩＦ４２と伝送路を介して接続される。ＩＦ３８は、ダンプ取得部３２が採取したログをＩＦ４２へ送信する。
【００４５】
障害検出部３１は、ダンプ取得部３２にトリガダンプを実行させるためのトリガを検出するとともに、トリガの検出をＣＰＵ２に通知するものである。
ここで、トリガとしては、例えば配下のデバイス５において障害が発生したことが挙げられる。また、トリガの検出とは、障害検出部３１が、ＣＰＵ２からデバイス５Ａ〜５Ｃで発生した障害を通知されたこと、又は、監視ＦＰＧＡ３において、デバイス５Ａ〜５Ｃで発生した障害を検出したこと、等を示す。以下、障害検出部３１がトリガを検出したと判断する場合を、具体例を挙げて説明する。
【００４６】
〔１−２−１〕トリガの検出について
障害検出部３１は、以下の（ｉ）〜（iii）の少なくとも１つの事象が発生した場合に、障害を検出（トリガを検出）したと判断し、ＣＰＵ２及びダンプ取得部３２に対して通知を行なう。
（ｉ）ＣＰＵ２がＣＰＵ２内部、高速伝送路７ａ、又はデバイス５等の異常を検出し、監視ＦＰＧＡ３にエラー通知したこと。
【００４７】
具体的には、ＣＰＵ２は、ＣＰＵ２内部でエラーが検出された場合、ＣＰＵ２において異常が発生したと判断する。また、ＣＰＵ２は、高速伝送路７ａにおいて異常が検出された場合、高速伝送路７ａ自体に障害が発生したと判断する。さらに、ＣＰＵ２は、高速伝送路７ａを経由してデバイス５からエラー通知を受けたり、デバイス５との間の通信がタイムアウト等した場合、デバイス５において異常が発生したと判断する。これらの場合、ＣＰＵ２は、例えば低速伝送路７ｂを経由して監視ＦＰＧＡ３にエラーの発生とその内容とを通知する。障害検出部３１は、低速ＩＦ３６又はダンプ取得部３２を介して、ＣＰＵ２からエラーの発生の通知を受けた場合に、トリガを検出したと判断する。
【００４８】
なお、ＣＰＵ２は、高速伝送路７ａを通じてデバイス５において異常が発生したと判断した場合、ダンプ取得部３２によるトリガダンプに先立って、ダンプ取得部３２に対して障害の発生個所（デバイス５）に対するバイパスダンプを指示して実行させても良い。この場合、監視ＦＰＧＡ３は、バイパスダンプを通じて、デバイス５において発生した障害を検出することになる。従って、ＣＰＵ２は、デバイス５の異常を検出し、監視ＦＰＧＡ３にバイパスダンプの実行を指示する場合には、監視ＦＰＧＡ３に対してエラーの通知を行なわなくても良い。
【００４９】
（ii）監視ＦＰＧＡ３（ダンプ取得部３２）によるレジスタダンプにおいて、配下デバイス５の異常を検出したこと。
例えば、ダンプ取得部３２は、取得したログのステータスから、デバイス５が正常か否かの判断を行なうことができる。従って、ダンプ取得部３２が、レジスタダンプにより取得したログから配下のデバイス５のエラーステータス（異常状態）を検出する場合がある。この場合、障害検出部３１は、ダンプ取得部３２を介してデバイス５のエラーステータスを検出し、トリガを検出したと判断する。
【００５０】
また、ダンプ取得部３２が、定期ダンプ等のレジスタダンプのために低速伝送路７ｂを経由して各デバイス５へリード要求を発行した場合、障害の発生によりデバイス５からリード応答が来ないと、ダンプ取得部３２ではタイムアウトが発生する。この場合、障害検出部３１は、低速ＩＦ３７又はダンプ取得部３２を介してリード不能に陥ったことを検出し、トリガを検出したと判断する。
【００５１】
（iii）配下デバイス５から、専用伝送路７ｃを介したエラー通知、或いは、低速伝送路７ｂを介したエラーメッセージ通信によるエラー通知があったこと。
障害検出部３１は、専用伝送路７ｃを介して、デバイス５かからエラー通知（ＦＡＴＡＬ＿ＥＲＲＯＲ通知）を受けると、トリガを検出したと判断する。
また、各デバイス５は、障害が発生した場合に、低速伝送路７ｂを介してエラーメッセージを送信することができる（エラーメッセージ通信）。そこで、障害検出部３１は、デバイス５からエラーメッセージ通信によるエラー通知があった場合に、トリガを検出したと判断しても良い。
【００５２】
障害検出部３１は、上述のようにトリガを検出すると、ダンプ取得部３２へ障害の発生を通知して、トリガダンプを実行させる。
また、障害検出部３１は、上述のようにトリガを検出すると、上記（ｉ）〜（iii）に示すうちの検出された事象に基づいて、障害の内容をコード（異常情報）化して自身のコード領域３１ａに生成する。そして、障害検出部３１は、生成したエラーコードを低速伝送路７ｂを介してＣＰＵ２のＲＡＭ２２内のコード領域２２ｄに転送し、格納させる。また、障害検出部３１は、障害の発生を割り込みによってＣＰＵ２へ通知する。以下、障害検出部３１が生成するエラーコードについて説明する。
【００５３】
〔１−２−２〕エラーコードについて
図２は、図１に示す障害検出部３１が生成するエラーコードの例を示す図である。
図２に示すように、障害検出部３１は、障害の検出経路、障害の発生個所、及びエラー種別を含むエラーコードを作成する。
例えば、エラーコードには、図２の“大項目”に示すように、障害の検出経路として、ＣＰＵ２からの通知（上記（ｉ）に相当）の場合には“0x0”、監視ＦＰＧＡ３による検出（上記（ii）に相当）の場合には“0x1”、配下デバイス５からの通知（上記（iii）に相当）の場合には“0x2”が含まれる。
【００５４】
また、エラーコードには、図２の“中項目”に示すように、障害の発生個所として、ＣＰＵ内部の場合には“000”、配下デバイス５の場合には“0yy”又は“1yy”、伝送路（高速伝送路７ａ）の場合には“1zz”等が含まれる。なお、エラーコードに含まれる“yy”及び“zz”は、それぞれデバイス５及び伝送路を特定するＩＤ等の識別子である。
さらに、エラーコードには、図２の“コード例”に示すように、エラー種別として、タイムアウトである場合には“0001”、その他各種エラー種別である“xxxx”が含まれる。なお、“xxxx”は、監視ＦＰＧＡ３が検出可能な障害の種別、及びＣＰＵ２やデバイス５が監視ＦＰＧＡ３に通知可能な障害の種別ごとに、予め定められている。
【００５５】
このように、障害検出部３１は、トリガを検出すると、検出された事象に基づいて、エラーコードを生成する。一例として、障害検出部３１は、配下デバイスからエラーを通知された場合には、“0x2_1yy_xxxx”のエラーコードをコード領域３１ａに生成する。そして、障害検出部３１は、生成したエラーコードをＣＰＵ２のコード領域２２ｄに転送し、格納させるとともに、ＣＰＵ２へ障害の発生を割り込み通知する。
【００５６】
以上のように、障害検出部３１から割り込み通知を受けたＣＰＵ２（コア２１）は、コード領域２２ｄに格納された異常状態を示すエラーコード（障害の内容）を参照して、発生した障害の内容を知ることができる。これにより、ＣＰＵ２は、例えば障害の発生によりリード応答が返せないデバイス５に対するリード要求等の発行を抑止できる。
以上のことから、本実施形態に係る障害検出部３１は、デバイス５Ａ〜５Ｃにおいて発生した障害を検出する検出部としての機能を有する。また、障害検出部３１は、検出部が検出した障害の内容を示すエラーコードを生成し、生成したエラーコードと障害の発生とをＣＰＵ２へ通知する通知部としての機能を有する。
【００５７】
なお、障害検出部３１は、生成したエラーコードと障害の発生とをＣＰＵ２へ通知すると、障害の発生個所（デバイス５）をリセットするとともに、上述のように、制御線７ｄを介してバススイッチ６Ａ〜６Ｃを制御することにより、障害が発生したデバイス５をシステムから切り離す。なお、ＣＰＵ２により高速伝送路７ａを通じてデバイス５の異常が検出された場合には、ＣＰＵ２が障害検出部３１に対して障害の発生個所のリセット及びシステムからの切り離しを指示しても良い。
【００５８】
以上のように、本実施形態に係る情報処理装置１によれば、デバイス５においてリード応答が無い障害が発生した場合であっても、ＣＰＵ２の動作を継続したまま、監視ＦＰＧＡ３はログを確実に取得することができるとともに、デバイス５において発生した障害が他系のモジュールへ伝播することを確実に抑止することができる。
〔１−３〕ログ及びエラーコードの格納先について
なお、上述のように、ダンプ取得部３２は、レジスタダンプにより取得したログを、監視ＦＰＧＡ３の第１ＲＡＭ３３、ＣＰＵ２のＲＡＭ２２、及び不揮発性メモリ４に格納する。また、障害検出部３１は、トリガの検出に応じて生成したエラーコードを、監視ＦＰＧＡ３のダンプ取得部３２及びＣＰＵ２のＲＡＭ２２に格納する。ここで、ダンプ取得部３２によるログの格納先及び障害検出部３１によるエラーコードの格納先は、以下の理由により、ＣＰＵ２のＲＡＭ２２及び不揮発性メモリ４の少なくとも一方のみとしても良い。
【００５９】
不揮発性メモリ４は、情報処理装置１がシステムダウンとなった場合でも、格納する情報を保持し続けることができる。つまり、ダンプ取得部３２は、第１領域４１ａ及び第２領域４１ｂにレジスタダンプのログを格納することで、障害の発生による情報処理装置１の電源切断を挟んだとしても、ログを残すことができる。
従って、ＣＰＵ２のＲＡＭ２２及び監視ＦＰＧＡ３の第１ＲＡＭ３３内にレジスタダンプのログを格納しない態様とした場合であっても、少なくともＣＰＵ２からアクセス可能な不揮発性メモリ４にログが格納されていれば良い。例えば不揮発性メモリ４にのみログが格納される場合、ＣＰＵ２は、不揮発性メモリ４にアクセスをすれば障害の発生前後のログを採取することができる。また、電源切断によるログの消失のリスクを低下させることができる。
【００６０】
また、障害検出部３１は、トリガ検出により生成したエラーコードを、ＣＰＵ２のコード領域２２ｄとともに／又は代えて、不揮発性メモリ４のコード領域４１ｃ（図１中破線で示す）に格納しても良い。この場合、障害検出部３１は、不揮発性メモリ４のコード領域４１ｃにエラーコードを格納することで、障害の発生による情報処理装置１の電源切断を挟んだとしても、ＣＰＵ２は不揮発性メモリ４からエラーコードを取得することで、電源切断前に発生した障害の内容を容易に知ることができる。
【００６１】
なお、エラーコードを不揮発性メモリ４のコード領域４１ｃにのみ格納する場合であっても、障害検出部３１は、障害の発生の通知をＣＰＵ２に対して行なう。また、少なくともログ又はエラーコードの格納先として不揮発性メモリ４が用いられる場合、ＣＰＵ２は、不揮発性メモリ４のＩＦ４２と通信するためのＩＦ２５（図１中破線で示す）をさらに有する。また、障害検出部３１は、生成したエラーコードを不揮発性メモリ４のコード領域４１ｃへ格納するために、図１中破線で示すようにＩＦ３８と接続される。
【００６２】
ここまで、レジスタダンプのログ及びエラーコードを不揮発性メモリ４に格納することの利点について説明したが、ＣＰＵ２に対してログ及びエラーコードを格納することによる利点もある。例えば、ＣＰＵ２は、不揮発性メモリ４にアクセスするよりも、ログやエラーコードの解析を高速に実施することができ、障害が発生したデバイス５Ａ〜５Ｃに対してアクセス（リード等）の要求をしてしまうリスクを低下させることができる。
【００６３】
以上のように、本実施形態に係る監視ＦＰＧＡ３は、レジスタダンプ等のログ（状態情報）と発生した障害の内容を示すエラーコードとを含む監視結果を、ＣＰＵ２のＲＡＭ２２及び不揮発性メモリ４の少なくとも一方である記憶部に格納する。
〔１−４〕情報処理システムの構成例
上述した情報処理装置１は、例えば図３に示すストレージシステム１０に適用することができる。図３は、図１に示す情報処理装置１を適用可能なストレージシステム１０の構成例を示すブロック図である。
【００６４】
図３に示すように、ストレージシステム（情報処理システム）１０は、コントローラエンクロージャ（Controller Enclosure；以下、ＣＥという）１０Ａ、ホスト装置８−１及び８−２を有している。ホスト装置８−１及び８−２は、ＣＥ１０Ａに対して各種要求を行なうホストコンピュータである。ＣＥ１０Ａは、ホスト装置８−１及び８−２からの各種要求に係る制御を行なうものである。ＣＥ１０Ａは、コントローラモジュール（Controller Module；以下、ＣＭという）１′−１及び１′−２、パネル４Ａ、ＰＳＵ（Power Supply Unit)１５、及びバックプレーン（Back Plane；以下、ＢＰという）１６を有している。
【００６５】
ＣＭ１′−１及び１′−２（以下、これらを区別しない場合には単にＣＭ１′という）はそれぞれ、本実施形態に係る情報処理装置１の一例である。ＣＭ１′−１及び１′−２は、二重化されている。パネル４Ａは、ＣＥ１０Ａにおける各種の設定情報等を管理するものであり、ＣＭ１′で共用される。なお、パネル４Ａは、本実施形態に係る不揮発性メモリ４の一例である不揮発性メモリを有する。ＰＳＵ１５は、外部からの交流電圧を直流電圧に変換し、ＣＥ１０Ａ内の各装置へ供給するコンポーネントである。ＢＰ１６は、複数のディスク装置１６ａを有する回路基板である。なお、ディスク装置１６ａとしては、ＨＤＤ（Hard Disk Drive）等の磁気ディスク装置やＳＳＤ（Solid State Drive）等の半導体ドライブ装置等の各種デバイスが挙げられる。
【００６６】
ＣＭ１′は、ホスト装置８−１及び８−２等からの要求に応じて、ディスク装置１６ａに対するデータアクセス要求等の処理を行なうものである。ＣＭ１′は、ＣＰＵ２、監視ＦＰＧＡ３、ＦＣ（Fibre Channel）コントローラ５Ｄ、エクスパンダ５Ｅ、バススイッチ６Ａ、キャッシュメモリ１１、専用ＬＳＩ１２、フラッシュメモリ１３、及びＳＣＵ（System Capacity Unit）１４を有している。
【００６７】
ＣＰＵ２及び監視ＦＰＧＡ３は、図１に示す本実施形態に係るＣＰＵ２及び監視ＦＰＧＡ３の一例である。なお、ＣＰＵ２は、ＣＭ１′における各種処理を行なうものであり、例えばディスク装置１６ａに対するデータアクセス要求等に係る処理を行なう。また、ＣＭ１′−１内の監視ＦＰＧＡ３とＣＭ１′−２内の監視ＦＰＧＡ３とは、互いに通信可能に接続されており、ＣＭ１′の二重化状態に関する制御を行なう。
【００６８】
ＦＣコントローラ５Ｄは、ファイバケーブルを介してホスト装置８−１及び８−２と接続され、ホスト装置８−１及び８−２との間の通信を制御するアダプタである。エクスパンダ５Ｅは、例えばＳＡＳケーブル等の通信線を介してＢＰ１６と接続され、ＣＰＵ２からの指示によりディスク装置１６ａに対する各種アクセスを制御するアダプタである。ＦＣコントローラ５Ｄ及びエクスパンダ５Ｅは、本実施形態に係るデバイス５の一例である。
【００６９】
バススイッチ６Ａは、ＣＭ１′−１とＣＭ１′−２との間の接続状態を切り替えるスイッチである。バススイッチ６Ａは、図１に示すバススイッチ６Ａの一例である。なお、監視ＦＰＧＡ３は、自身のＣＭ１′内のＦＣコントローラ５Ｄにおける障害を検出すると、バススイッチ６Ａをオフ状態に切り替え、自身のＣＭ１′をストレージシステム１０から切り離す。
【００７０】
キャッシュメモリ１１は、ディスク装置１６ａに対するアクセスに係るデータ等をキャッシュするメモリであり、ＣＰＵ２によるディスク装置１６ａへのアクセスにおいて用いられる。専用ＬＳＩ１２は、ＣＭ１′のシステム制御を行なう処理装置である。フラッシュメモリ１３は、専用ＬＳＩ１２による制御に用いられる制御情報を保持するＮＡＮＤ型のフラッシュメモリである。ＳＣＵ１４は、停電等によりＣＭ１′への電力供給が断たれた際に一時的な電力供給源として用いられるものであり、例えば電気二重層コンデンサ等が挙げられる。
【００７１】
なお、ＣＰＵ２及びＦＣコントローラ５Ｄ間、ＣＰＵ２及びエクスパンダ５Ｅ間、２つのＣＭ１′（バススイッチ６Ａ）間等は、高速伝送路７ａにより接続され、ＣＰＵ２及び監視ＦＰＧＡ３間、２つの監視ＦＰＧＡ３間等は、低速伝送路７ｂにより接続される。その他の装置間における図３中の接続バスについては、説明の簡略化のため省略する。なお、図３においては、図の簡略化のため、一部の装置間の結線を省略している。
【００７２】
なお、図３において、エクスパンダ５Ｅを１つのみ記載しているが、図１に示すデバイス５Ｂ及び５Ｃのように、各ＣＭ１′がバススイッチ６Ｂ及び６Ｃ、並びに二重化した２つのエクスパンダ５Ｅをそなえ、監視ＦＰＧＡ３により二重化状態に関する制御が行なえるように構成しても良い。
以上のように、図３に示すストレージシステム１０のＣＭ１′に対して、図１に示す本実施形態に係る情報処理装置１を適用することで、例えばＦＣコントローラ５Ｄにおいてリード応答が無い障害が発生した場合であっても、上述の如く監視ＦＰＧＡ３によるログ採取や障害個所の切り離しが行なわれる。従って、ＣＰＵ２の動作を継続したまま、監視ＦＰＧＡ３はログを確実に取得することができるとともに、一方のＣＭ１′のＦＣコントローラ５Ｄにおいて発生した障害が他方のＣＭ１′へ伝播することを確実に抑止することができる。
【００７３】
〔１−５〕情報処理装置の動作例
次に、上述の如く構成された図１に示す情報処理装置１の動作例を、図４〜図６を参照して説明する。図４は、図１に示すデバイス５Ｃから高速伝送路７ａ経由でＣＰＵ２へエラー通知があった場合の情報処理装置１の動作例を説明するシーケンス図であり、図５は、デバイス５Ｃから専用伝送路７ｃ経由で監視ＦＰＧＡ３へエラー通知があった場合の情報処理装置１の動作例を説明するシーケンス図である。図６は、監視ＦＰＧＡ３によるレジスタダンプの動作例を説明するフローチャートである。
【００７４】
〔１−５−１〕デバイス５Ｃから高速伝送路７ａ経由でＣＰＵ２へエラー通知があった場合
はじめに、図４及び図６を参照して、デバイス５Ｃから高速伝送路７ａ経由でＣＰＵ２へエラー通知があった場合の情報処理装置１の動作例を説明する。
図４に示すように、情報処理装置１の電源投入後（ステップＴ１）、ＣＰＵ２により、ダンプ取得部３２の第２ＲＡＭ３４に対して、ダンプ個所を示すテーブル３４ａが設定される（ステップＴ２）。
【００７５】
そして、監視ＦＰＧＡ３により、一定時間待機後（図６のステップＳ１）、エラーが検出されたか（上記（ｉ）〜（iii）の事象が発生したか）否かが判定される（図６のステップＳ２）。エラーが検出されていない場合（図６のステップＳ２のＮｏルート）、監視ＦＰＧＡ３により、定期的に配下デバイス５のレジスタダンプ（定期ダンプ）が行なわれる（図６のステップＳ３）。
【００７６】
具体的には、ダンプ取得部３２により、テーブル３４ａに基づきダンプ対象のデバイス５Ａ〜５Ｃに対して、リード要求が発行され、各デバイス５からリード応答としてレジスタダンプ（ログ）が返される（ステップＴ３）。このとき、ダンプ取得部３２は、第１ＲＡＭ３３内の第１領域３３ａに取得したログを格納する。次いで、ダンプ取得部３２により、取得したログが、不揮発性メモリ４の第１領域４１ａ（ステップＴ４）及びＣＰＵ２のＲＡＭ２２内の第１領域２２ａへ転送され、格納される（ステップＴ５）。
【００７７】
監視ＦＰＧＡ３は、上記ステップＴ３〜Ｔ５（図６のステップＳ１、Ｓ２のＮｏルート、及びＳ３）の処理を、図６のステップＳ２においてエラーが検出されるまで繰り返す（ステップＴ６〜Ｔ８）。
ここで、デバイス５Ｃで故障が発生し（ステップＴ９）、デバイス５Ｃにより、高速伝送路７ａ経由でＣＰＵ２へエラーが通知された場合を考える（ステップＴ１０）。この場合、例えばＣＰＵ２により、監視ＦＰＧＡ３に対してデバイス５Ｃからのバイパスリード（バイパスダンプ）が指示される（ステップＴ１１）。なお、この指示は、実際にはデバイス５Ｃからログをリードする処理であるが、ＣＰＵ２から見た場合、監視ＦＰＧＡ３により、採取したログをＣＰＵ２の第３領域２２ｃへ書き込む処理となる。
【００７８】
次いで、ダンプ取得部３２により、デバイス５Ｃに対してリード要求が行なわれるが、デバイス５Ｃがリード応答不可の状態であるため（ステップＴ１２）、一定時間経過後に、ダンプ取得部３２においてリードタイムアウトが発生する（ステップＴ１３）。このとき、障害検出部３１により、デバイス５Ｃにおける障害の発生が検出され（上記（ii）によるトリガの検出，図６のステップＳ２のＹｅｓルート）、“0x1_1yy_xxxx”のエラーコードが生成される（ステップＴ１４、図２参照）。
【００７９】
そして、障害検出部３１により、生成したエラーコードがＣＰＵ２のＲＡＭ２２内のコード領域２２ｄ（及び／又は不揮発性メモリ４のコード領域４１ｃ）へ格納される（ステップＴ１５、図６のステップＳ４）。また、障害検出部３１により、エラーコードの格納と併せて、ＣＰＵ２へ割り込みによる障害の発生の通知が行なわれる（ステップＴ１６、図６のステップＳ５）。なお、障害検出部３１は、ＣＰＵ２への割り込み通知とともに、ダンプ取得部３２に対して、障害の発生を通知する。
【００８０】
エラーコードの格納及び割り込み通知が行なわれると、ＣＰＵ２により、ＲＡＭ２２内に格納されたログ及びエラーコードに基づき故障個所が判定され（ステップＴ１７）、エラーの封じ込めが行なわれる。具体的には、ＣＰＵ２により、監視ＦＰＧＡ３に対して、故障個所であるデバイス５Ｃのリセットの指示（ステップＴ１８）及びデバイス５Ｃの上流（ＣＰＵ２側）のバススイッチ６Ｃのオフ制御の指示が行なわれる（ステップＴ２０）。監視ＦＰＧＡ３では、この指示に応じて、デバイス５Ｃのリセット（ステップＴ１９）及びバススイッチ６Ｃのオフ制御が行なわれ（ステップＴ２１）、障害個所がシステムから切り離される。
【００８１】
また、ダンプ取得部３２により、ステップＴ１６において障害検出部３１から通知された障害の発生に応じて、トリガダンプが実行される（図６のステップＳ６）。具体的には、ダンプ取得部３２により、テーブル３４ａに基づき、ダンプ対象のデバイス５Ａ〜５Ｃに対してリード要求が発行され、各デバイス５からリード応答としてレジスタダンプ（ログ）が返される（ステップＴ２２）。このとき、ダンプ取得部３２は、第１ＲＡＭ３３内の第２領域３３ｂに取得したログを格納する。次いで、ダンプ取得部３２により、取得したログが、不揮発性メモリ４の第２領域４１ｂ（ステップＴ２３）及びＣＰＵ２のＲＡＭ２２内の第２領域２２ｂへ転送され、格納される（ステップＴ２４）。
【００８２】
以上の処理により、デバイス５Ｃから高速伝送路７ａ経由でＣＰＵ２へエラー通知があった場合の情報処理装置１の動作が完了する。
〔１−５−２〕デバイス５Ｃから専用伝送路７ｃ経由で監視ＦＰＧＡ３へエラー通知があった場合
次に、図５及び図６を参照して、デバイス５Ｃから専用伝送路７ｃ経由で監視ＦＰＧＡ３へエラー通知があった場合の情報処理装置１の動作例を説明する。
【００８３】
なお、図５のステップＴ１〜Ｔ９の処理は、図４のステップＴ１〜Ｔ９の処理と共通しているため、重複した説明を省略する。
ステップＴ９において、デバイス５Ｃで故障が発生し、デバイス５Ｃにより、専用伝送路７ｃ経由で監視ＦＰＧＡ３（障害検出部３１）へＦＡＴＡＬ＿ＥＲＲＯＲ信号による通知がされた場合を考える（ステップＴ２５）。このとき、障害検出部３１により、デバイス５Ｃにおける障害の発生が検出され（上記（iii）によるトリガの検出，図６のステップＳ２のＹｅｓルート）、“0x2_1yy_xxxx”のエラーコードが生成される（ステップＴ２６、図２参照）。
【００８４】
そして、障害検出部３１により、生成したエラーコードがＣＰＵ２のＲＡＭ２２内のコード領域２２ｄ（及び／又は不揮発性メモリ４のコード領域４１ｃ）へ格納される（ステップＴ２７、図６のステップＳ４）。また、障害検出部３１により、エラーコードの格納と併せて、ＣＰＵ２へ割り込みによる障害の発生の通知が行なわれる（ステップＴ２８、図６のステップＳ５）。なお、障害検出部３１は、ＣＰＵ２への割り込み通知とともに、ダンプ取得部３２に対して、障害の発生を通知する。
【００８５】
また、障害検出部３１により、障害の発生に応じたエラーの封じ込め（バス閉塞）が実施される。具体的には、監視ＦＰＧＡ３により、デバイス５Ｃのリセット（ステップＴ２９）及びバススイッチ６Ｃのオフ制御が行なわれ（ステップＴ３０）、障害個所がシステムから切り離される。
また、ダンプ取得部３２により、ステップＴ２８において障害検出部３１から通知された障害の発生に応じて、トリガダンプが実行される（図６のステップＳ６）。具体的には、ダンプ取得部３２により、テーブル３４ａに基づき、ダンプ対象のデバイス５Ａ〜５Ｃに対してリード要求が発行され、各デバイス５からリード応答としてレジスタダンプ（ログ）が返される（ステップＴ３１）。このとき、ダンプ取得部３２は、第１ＲＡＭ３３内の第２領域３３ｂに取得したログを格納する。次いで、ダンプ取得部３２により、取得したログが、不揮発性メモリ４の第２領域４１ｂ（ステップＴ３２）及びＣＰＵ２のＲＡＭ２２内の第２領域２２ｂへ転送され、格納される（ステップＴ３３）。
【００８６】
以上の処理により、デバイス５Ｃから専用伝送路７ｃ経由で監視ＦＰＧＡ３へエラー通知があった場合の情報処理装置１の動作が完了する。
上述のように、本実施形態に係る監視ＦＰＧＡ３によれば、デバイス５で障害が発生した際に、ログの採取結果がＣＰＵ２が有するＲＡＭ２２及び不揮発性メモリ４の少なくとも一方に書き込まれる。これにより、デバイス５においてリード応答が無い故障が発生した場合であっても、ＣＰＵ２がデバイス５からログを採取せずに済むため、ＣＰＵ２以外のデバイス５の要因により、ＣＰＵ２が例外処理に入りハングアップしてしまうことを防止できる。また、ＣＰＵ２がデバイス５のログを参照したい場合には、配下デバイス５をリードせずに、自身のＲＡＭ２２又は不揮発性メモリ４を参照すれば良い。
【００８７】
また、監視ＦＰＧＡ３により、発生した障害の内容が現象別にコード化されてＣＰＵ２に通知される。これにより、ＣＰＵ２は、例えば障害が発生したデバイス５がリード応答可能か否かを判断することができ、リード応答不可である場合に当該デバイス５へのアクセスを抑止できるため、ログの採取以外の目的によるデバイス５へのアクセスで、ＣＰＵ２がハングアップしてしまうことを防止できる。
【００８８】
さらに、監視ＦＰＧＡ３による定期ダンプにより、定期的に配下デバイス５のログが採取され、ＣＰＵ２が有するＲＡＭ２２及び不揮発性メモリ４の少なくとも一方に書き込まれる。さらに、監視ＦＰＧＡ３によるトリガダンプにより、トリガの検出を契機に、定期ダンプによるログの格納領域とは別の領域にログが格納される。これにより、ＣＰＵ２は、デバイス５における障害発生直前及び障害発生後の両方のログを参照することができ、ログの解析に効果的である。
【００８９】
また、レジスタダンプやトリガの検出は、ハードウェアである監視ＦＰＧＡ３により実行されるため、ＣＰＵ２において、ソフトウェアによりレジスタダンプやトリガの検出を行なう場合と比べて、非常に高速に処理を行なうことができる。
なお、リード応答が無い場合等におけるＣＰＵ２のハングアップの発生は、ＣＰＵ２が汎用ＣＰＵである場合により顕著である。従って、本実施形態に係る情報処理装置１は、図３に示すストレージシステム１０のように、ＣＰＵ２として汎用ＣＰＵが採用されることが多いシステムに用いて好適である。
【００９０】
〔２〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、上述した一実施形態では、不揮発性メモリ４がフラッシュメモリ等のメモリであるものとして説明したが、これに限定されるものではない。例えば不揮発性メモリ４は、ＨＤＤやＳＳＤ等のディスク装置であっても良く、その他のデバイスであっても良い。また、バッテリ等の補助電源から給電可能であれば、不揮発性メモリ４に代えて揮発性メモリが用いられても良い。
【００９１】
また、上述した一実施形態では、ＣＰＵ２の配下のデバイス５が３つである場合を例に挙げて説明したが、これに限定されるものではなく、デバイス５の数は３未満或いは４以上であっても良い。また、情報処理装置１やデバイス５の冗長性の有無は、一実施形態に係る情報処理装置１の適用に影響を与えるものではない。
さらに、上述した一実施形態では、情報処理装置１がバススイッチ６Ａ〜６Ｃをそなえるものとして説明したが、これに限定されるものではない。例えば、デバイス５Ａ〜５Ｃがスイッチとしての機能を持つ場合には、バススイッチ６Ａ〜６Ｃを省略して、監視ＦＰＧＡ３が制御線の代わりに低速伝送路７ｂを介してスイッチの機能の制御を行なっても良い。
【００９２】
また、図４に示すシーケンス図において、ＣＰＵ２は、ステップＴ１０で高速伝送路７ａ経由でデバイス５Ｃからのエラー通知を受けた場合、ステップＴ１１のバイパスリードの指示を行なわずに、デバイス５Ｃでエラーが発生したことの通知を監視ＦＰＧＡ３にしても良い。この場合、ステップＴ１２及びＴ１３は行なわれず、監視ＦＰＧＡ３は、上記（ｉ）によるトリガの検出に基づき、“0x0_0yy_xxxx”のエラーコードを生成して、図５のステップＴ２７〜Ｔ３３の処理を実行することになる。
【００９３】
〔３〕付記
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
被監視装置を監視する監視装置であって、
前記被監視装置と前記被監視装置に対する処理を行なう処理装置との間に介設され、
前記被監視装置において発生した障害を検出する検出部と、
前記検出部が検出した障害の内容を示す障害情報を生成し、生成した障害情報と前記障害の発生とを前記処理装置へ通知する通知部と、
前記障害の発生に応じて、前記被監視装置から前記被監視装置の前記障害の発生後の状態情報を取得して記憶部へ格納する取得部と、
を有することを特徴とする、監視装置。
【００９４】
（付記２）
前記取得部は、前記被監視装置から定期的に状態情報を取得して前記記憶部の第１領域へ格納し、前記障害の発生に応じて、前記定期的な状態情報の取得を抑止するとともに、前記障害の発生後の状態情報を取得して前記記憶部の第２領域へ格納することを特徴とする、付記１記載の監視装置。
【００９５】
（付記３）
前記取得部は、前記取得した定期的な状態情報を、前記処理装置がアクセス可能な不揮発性メモリである前記記憶部の第１領域へ格納するとともに、前記取得した障害の発生後の状態情報を、前記不揮発性メモリの第２領域へ格納することを特徴とする、付記２記載の監視装置。
【００９６】
（付記４）
前記取得部は、前記取得した定期的な状態情報を、前記処理装置が有するメモリである前記記憶部の第１領域へ格納するとともに、前記取得した障害の発生後の状態情報を、前記メモリの第２領域へ格納することを特徴とする、付記２又は付記３記載の監視装置。
（付記５）
前記取得部は、前記処理装置からの前記被監視装置の状態情報の取得要求を受けると、前記取得要求により指示された前記被監視装置から状態情報を取得して、前記メモリの第３領域へ格納することを特徴とする、付記４記載の監視装置。
【００９７】
（付記６）
前記検出部は、前記通知部が前記生成した障害情報と前記障害の発生とを前記処理装置へ通知すると、前記障害が発生した被監視装置をシステムから切り離すことを特徴とする、付記１〜５のいずれか１項記載の監視装置。
（付記７）
前記検出部は、前記被監視装置と障害の発生を通知するための信号線で接続され、前記被監視装置から前記信号線を介した通知を受けると、前記障害を検出することを特徴とする、付記１〜６のいずれか１項記載の監視装置。
【００９８】
（付記８）
前記検出部は、前記処理装置から障害の発生の通知を受けた場合、前記取得部による前記定期的な状態情報の取得において障害が発生した場合、及び、前記被監視装置から前記信号線を介した通知を受けた場合、の少なくとも１つの場合に、前記障害を検出することを特徴とする、付記７記載の監視装置。
【００９９】
（付記９）
前記通知部は、生成した障害情報を前記記憶部の所定の領域に格納するとともに、前記処理装置に対して前記障害の発生を割り込みで通知することを特徴とする、付記１〜８のいずれか１項記載の監視装置。
（付記１０）
被監視装置と、
前記被監視装置に対する処理を行なう処理装置と、
前記被監視装置を監視する監視装置と、
前記監視装置による監視結果を格納する記憶部と、を有し、
前記監視装置は、
前記被監視装置と前記処理装置との間に介設され、
前記被監視装置において発生した障害を検出する検出部と、
前記検出部が検出した障害の内容を示す障害情報を生成し、生成した障害情報と前記障害の発生とを前記処理装置へ通知する通知部と、
前記障害の発生に応じて、前記被監視装置から前記被監視装置の前記障害の発生後の状態情報を取得して前記記憶部へ格納する取得部と、
を有することを特徴とする、情報処理装置。
【０１００】
（付記１１）
被監視装置と前記被監視装置に対する処理を行なう処理装置との間に介設され、前記被監視装置を監視する監視装置における監視方法であって、
前記被監視装置において発生した障害を検出し、
前記検出した障害の内容を示す障害情報を生成し、
生成した障害情報と前記障害の発生とを前記処理装置へ通知し、
前記障害の発生に応じて、前記被監視装置から前記被監視装置の前記障害の発生後の状態情報を取得して記憶部へ格納する、
ことを特徴とする、監視方法。
【０１０１】
（付記１２）
前記格納する処理において、
前記被監視装置から定期的に状態情報を取得して前記記憶部の第１領域へ格納し、
前記障害の発生に応じて、前記定期的な状態情報の取得を抑止するとともに、前記障害の発生後の状態情報を取得して前記記憶部の第２領域へ格納することを特徴とする、付記１１記載の監視方法。
【０１０２】
（付記１３）
前記格納する処理において、
前記取得した定期的な状態情報を、前記処理装置がアクセス可能な不揮発性メモリである前記記憶部の第１領域へ格納するとともに、
前記取得した障害の発生後の状態情報を、前記不揮発性メモリの第２領域へ格納することを特徴とする、付記１２記載の監視方法。
【０１０３】
（付記１４）
前記格納する処理において、
前記取得した定期的な状態情報を、前記処理装置が有するメモリである前記記憶部の第１領域へ格納するとともに、
前記取得した障害の発生後の状態情報を、前記メモリの第２領域へ格納することを特徴とする、付記１２又は付記１３記載の監視方法。
【０１０４】
（付記１５）
前記処理装置からの前記被監視装置の状態情報の取得要求を受けると、前記取得要求により指示された前記被監視装置から状態情報を取得して、前記メモリの第３領域へ格納することを特徴とする、付記１４記載の監視方法。
（付記１６）
前記検出する処理において、
前記通知する処理において前記生成した障害情報と前記障害の発生とを前記処理装置へ通知すると、前記障害が発生した被監視装置をシステムから切り離すことを特徴とする、付記１１〜１５のいずれか１項記載の監視方法。
【０１０５】
（付記１７）
前記検出する処理において、
前記被監視装置から障害の発生を通知するための信号線を介した通知を受けると、前記障害を検出することを特徴とする、付記１１〜１６のいずれか１項記載の監視方法。
（付記１８）
前記検出する処理において、
前記処理装置から障害の発生の通知を受けた場合、前記格納する処理による前記定期的な状態情報の取得において障害が発生した場合、及び、前記被監視装置から前記信号線を介した通知を受けた場合、の少なくとも１つの場合に、前記障害を検出することを特徴とする、付記１７記載の監視方法。
【０１０６】
（付記１９）
前記通知する処理において、
生成した障害情報を前記記憶部の所定の領域に格納するとともに、
前記処理装置に対して前記障害の発生を割り込みで通知することを特徴とする、付記１１〜１８のいずれか１項記載の監視方法。
【０１０７】
（付記２０）
被監視装置を監視する集積回路であって、
前記被監視装置と前記被監視装置に対する処理を行なう処理装置との間に介設され、
前記被監視装置において発生した障害を検出し、
前記検出した障害の内容を示す障害情報を生成し、
生成した障害情報と前記障害の発生とを前記処理装置へ通知し、
前記障害の発生に応じて、前記被監視装置から前記被監視装置の前記障害の発生後の状態情報を取得して記憶部へ格納する、
ことを特徴とする、集積回路。
【符号の説明】
【０１０８】
１    情報処理装置
１′−１，１′−２    ＣＭ（情報処理装置）
１０    ストレージシステム（情報処理システム）
１０Ａ    ＣＥ
１１    キャッシュメモリ
１２    専用ＬＳＩ
１３    フラッシュメモリ
１４    ＳＣＵ
１５    ＰＳＵ
１６    バックプレーン
１６ａ    ディスク装置
１００    情報処理装置
２    ＣＰＵ（処理部，処理装置）
２１，２１０    コア
２２    ＲＡＭ（記憶部，メモリ）
２２ａ，３３ａ，４１ａ    第１領域
２２ｂ，３３ｂ，４１ｂ    第２領域
２２ｃ    第３領域
２２ｄ，３１ａ，４１ｃ    コード領域
２３，５４，５５ａ〜５５ｃ，２３０    高速ＩＦ
２４，３６，３７，５２，２４０    低速ＩＦ
２５，３８，４２    ＩＦ
２００    ＣＰＵ
２２０    ＲＡＭ
２２０ａ    ログ領域
３    監視ＦＰＧＡ（監視部，監視装置）
３１    障害検出部（検出部，通知部）
３２    ダンプ取得部（取得部）
３３    第１ＲＡＭ
３４    第２ＲＡＭ
３４ａ    テーブル
３５    アービタ
３００    監視ＦＰＧＡ
４    不揮発性メモリ（記憶部）
４Ａ    パネル
４００    不揮発性メモリ
５，５Ａ〜５Ｃ    デバイス（非監視部，非監視装置）
５Ｄ    ＦＣコントローラ
５Ｅ    エクスパンダ
５１    エラー通知部
５３    レジスタ（状態情報）
５００Ａ〜５００Ｃ    デバイス
６Ａ〜６Ｃ    バススイッチ
７ａ，７００ａ    高速伝送路
７ｂ，７００ｂ    低速伝送路
７ｃ    専用伝送路（伝送路）
７ｄ    制御線
８−１，８−２    ホスト装置
【図１】
2014026567.tif 000003
【図２】
2014026567.tif 000004
【図３】
2014026567.tif 000005
【図４】
2014026567.tif 000006
【図５】
2014026567.tif 000007
【図６】
2014026567.tif 000008
【図７】
2014026567.tif 000009
【図８】
2014026567.tif 000010