(57)【要約】【課題】、一の制御装置において生じたエラーの伝播を阻止できるようにする。【解決手段】第１の制御装置１１Ａが、第１通信路５０ａを介して複数の制御装置１１のうち第２の制御装置１１Ｂに接続される第１ポートと、第２通信路５０ｂを介して第２の制御装置１１Ｂに接続される第２ポートとを備えるとともに、処理デバイス１９Ａが接続されるスイッチデバイス２１Ａと、制御装置１１Ａにおけるエラーを検知する検知部１４と、スイッチデバイス２１Ａに備えられた第１ポートのポートリセットを行なう第１リセット処理部１５と、第２の制御装置１１Ｂに対して、リセット指示を送信する送信部１７とを備える。【選択図】図１
2015099487.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御装置を冗長化して備える情報処理装置であって、
前記複数の制御装置のうち第１の制御装置が、
第１通信路を介して前記複数の制御装置のうち第２の制御装置に接続される第１ポートと、第２通信路を介して前記第２の制御装置に接続される第２ポートとを備えるとともに、処理デバイスが接続されるスイッチデバイスと、
当該制御装置におけるエラーを検知する検知部と、
前記スイッチデバイスに備えられた前記第１ポートのポートリセットを行なう第１リセット処理部と、
前記第２の制御装置に対して、リセット指示を送信する送信部と
を備えることを特徴とする、情報処理装置。
【請求項２】
前記送信部が、前記第１通信路及び第２通信路とは異なる第３通信路を介して前記リセット指示を送信することを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記第２の制御装置が、
前記リセット指示通知を受信すると、当該第２の制御装置のスイッチデバイスに備えられた、前記第１の制御装置の前記第２ポートと前記第２通信路を介して接続される第３ポートのポートリセットを行なう第２リセット処理部を備えることを特徴とする、請求項１又は２記載の情報処理装置。
【請求項４】
前記第２の制御装置が、
前記第１の制御装置における前記第１リセット処理部による前記第１ポートのポートリセットに基づき、当該第２の制御装置の前記スイッチデバイスにおいて生成される通信エラー検出通知を受信する受信部と、
前記受信部が前記通信エラー検出通知を受信すると、前記第３通信路を介して前記他の制御装置にエラー発生要因を確認する確認部と、
前記確認部による確認の結果に基づき、保守作業対象を決定する決定部と
を備えることを特徴とする、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第１の制御装置が、当該第１の制御装置において検知されたエラーの発生要因を示す要因情報を通知する要因情報通知部を備え、
前記決定部が、前記要因情報通知部から通知される前記要因情報に基づいて前記エラー発生要因を確認することを特徴とする、請求項４記載の情報処理装置。
【請求項６】
前記受信部が当該第２の制御装置が縮退要因であることを示す前記通信エラー検出通知を受信した場合において、前記要因情報通知部から通知される前記要因情報が、前記第１の制御装置が要因であることを示す場合に、
前記決定部が、前記第１の制御装置を保守作業対象と決定することを特徴とする、請求項５記載の情報処理装置。
【請求項７】
前記受信部が前記第１の処理装置が縮退要因であることを示す前記通信エラー検出通知を受信した場合において、前記要因情報通知部から通知される前記要因情報が、前記第１の制御装置が要因であることを示すものではない場合に、
前記決定部が、前記複数の制御装置のうちスレーブの制御装置を保守作業対象と決定することを特徴とする、請求項５記載の情報処理装置。
【請求項８】
前記受信部が前記第１の処理装置が縮退要因であることを示す前記通信エラー検出通知と、前記第２の処理装置が縮退要因であることを示す前記通信エラー検出通知とを受信した場合において、
前記要因情報通知部から通知される前記要因情報が、前記第１の制御装置が要因であることを示す場合に、前記決定部が、前記第１の制御装置を保守作業対象と決定し、
前記要因情報通知部から通知される前記要因情報が、前記第１の制御装置が要因であることを示すものではない場合に、前記決定部が、前記第２の制御装置を保守作業対象と決定することを特徴とする、請求項５記載の情報処理装置。
【請求項９】
他の制御装置と冗長化して備えられる制御装置であって、
第１通信路を介して前記他の制御装置に接続される第１ポートと、第２通信路を介して前記他の制御装置に接続される第２ポートとを備えるとともに、処理デバイスが接続されるスイッチデバイスと、
当該制御装置におけるエラーを検知する検知部と、
前記スイッチデバイスに備えられた前記第１ポートのポートリセットを行なうリセット処理部と、
前記他の制御装置に対して、リセット指示を送信する送信部と
を備えることを特徴とする、制御装置。
【請求項１０】
他の制御装置と冗長化して備えられる制御装置の制御プログラムであって、
前記第１の制御装置における前記第１ポートのポートリセットに基づき、当該第２の制御装置の前記スイッチデバイスにおいて生成される通信エラー検出通知を受信し、
前記通信エラー検出通知を受信すると、前記第１通信路及び第２通信路とは異なる第３通信路を介して前記他の制御装置にエラー発生要因を確認し、
前記確認の結果に基づき、保守作業対象を決定する
処理をコンピュータに実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置，制御装置及び制御プログラムに関する。
【背景技術】
【０００２】
ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置等のストレージ装置においては、一般に、当該装置を制御するＣＭ（Controller Module）が冗長化されて搭載されている。又、これらの複数のＣＭ間は、PCI Express（以下、ＰＣＩｅという）等の汎用インタフェースやメーカ独自のインタフェースを介して通信可能に接続され、相互に通信を行なっている。
【０００３】
いずれかのＣＭにおいて異常が発生した場合は、異常が発生したＣＭ（異常ＣＭ）を切り離し（縮退させ）、他方の正常なＣＭを用いてＲＡＩＤ装置の運用を継続する。このため、異常が発生したＣＭから他方の正常なＣＭへの異常の伝播を阻止するために、異常検出時には、即座にＣＭ間の接続を切り離すことが望ましい。
図５は従来のストレージ装置１００の構成を示す図である。
【０００４】
この図５に示すストレージ装置１００は、２つのＣＭ１１０Ａ，１１０Ｂ及びストレージユニット２０１を備える。
ストレージユニット２０１は、１以上の図示しない記憶装置を備え、これらの記憶装置の記憶領域を、ＣＡ（Communication Adapter）１３０，１３０を介して接続される図示しないホスト装置に対して提供する。
【０００５】
ＣＭ１１０Ａ，１１０Ｂは種々の制御を行なうものであり、ホスト装置からのストレージアクセス要求（アクセス制御信号：以下、ホストＩ／Ｏという）に従って、ストレージユニット２０へのアクセス制御等、各種制御を行なう。又、ＣＭ１１０Ａ，１１０Ｂは互いにほぼ同様の構成を有している。
なお、以下、ＣＭを示す符号としては、複数のＣＭのうち１つを特定する必要があるときには符号１１０Ａ，１１０Ｂを用いるが、任意のＣＭを指すときには符号１１０を用いる。
【０００６】
ＣＭ１１０は、図５に示すように、ＣＰＵ（Central Processing Unit）１１２，ＦＰＧＡ（Field-Programmable Gate Array）１１３，デバイス１２１Ａ，１２１Ｂ（Device#0），デバイス１６０（Device#1），デバイス１２２（Device#2）及びディスク用インタフェース１２３を備える。
ＣＰＵ１１２は、種々の制御や演算を行なう処理装置であり、図示しないメモリ等に格納されたプログラムを実行することにより、ＲＡＩＤ制御等の種々の機能を実現する。
【０００７】
ディスク用インタフェース１２３は、ストレージユニット２０１における記憶装置等と通信可能に接続する、例えばＳＡＳ｛Serial Attached SCSI（Small Computer System Interface）｝インタフェースである。また、ディスク用インタフェース１２３は、通信路１５１に接続され、この通信路１５１による通信を制御するインタフェース部としても機能する。通信路１５１は、ＣＭ１１０Ａのディスク用インタフェース１２３とＣＭ１１０Ｂのディスク用ＳＡＳインタフェース部１２３との間を通信可能に接続する。
【０００８】
デバイス１２２は、ＣＡ１３０とＣＰＵ１１２とディスク用インタフェース１２３との間をつなぐブリッジとして機能するスイッチデバイスであり、例えばＰＣＩｅスイッチである。
このデバイス１２２を介して、ＣＰＵ１１２とホスト装置とストレージユニット２０１とが通信可能に接続される。つまり、ＣＰＵ１１２による制御の下、デバイス１２２およびディスク用インタフェース１２３を介してホスト装置からのＩ／Ｏ要求に応じたデータの書き込みや読み出しがストレージユニット２０１に対して行なわれる。これにより、ストレージユニット２０１には、ＣＭ１１０Ａ，１１０Ｂのいずれからもデータの書き込みや読み出しを行なうことができる。
【０００９】
デバイス１２１Ａ，１２１Ｂは、それぞれ通信路１５２に接続され、この通信路１５２による通信を制御するインタフェース部である。デバイス１２１ＡはＣＭ１１０Ａに備えられ、デバイス１２１ＢはＣＭ１１０Ｂに備えられる。これらのデバイス１２１Ａ，１２１Ｂは、例えば、ＰＣＩｅスイッチであり、以下、これらのデバイス１２１Ａ，１２１ＢをＰＣＩｅスイッチ１２１Ａ，１２１Ｂという場合がある。
【００１０】
ＰＣＩｅスイッチ１２１Ａ，１２１ＢはＣＭ１１０ＡとＣＭ１１０Ｂとの間で通信路１５２を介してＰＣＩｅの規格に従ったデータ通信を行なう。
これらのＰＣＩｅスイッチ１２１Ａ，１２１Ｂは同様の構成を備える。以下、ＰＣＩｅスイッチを示す符号としては、複数のＰＣＩｅスイッチのうち１つを特定する必要があるときには符号１２１Ａ，１２１Ｂを用いるが、任意のＰＣＩｅスイッチを指すときには符号１２１を用いる。
【００１１】
また、ＰＣＩｅスイッチ１２１Ａ，１２１Ｂは、ＣＰＵ１１２と通信路１５２とデバイス１６０との間をつなぐブリッジとしても機能する。
通信路１５２は、ＣＭ１１０ＡのＰＣＩｅスイッチ１２１ＡとＣＭ１１０ＢのＰＣＩｅスイッチ１２１Ｂとの間を通信可能に接続する。
また、各ＣＭ１１０Ａ，１１０Ｂにおいて、ＰＣＩｅスイッチ１２１Ａ，１２１ＢとＣＰＵ１１２との間は、それぞれＰＣＩｅの通信路１４１によって通信可能に接続される。
【００１２】
デバイス１６０は例えばＳＳＤ（Solid State Drive）であり、ＣＰＵ１１２の２次キャッシュとして使用される。各ＣＭ１１０Ａ，１１０Ｂにおいて、デバイス１６０は、デバイス１２１Ａ，１２１Ｂに接続されており、ＣＰＵ１１２はデバイス１２１Ａ，１２１Ｂを介してデバイス１６０にアクセスする。
ＦＰＧＡ１１３は、プログラミングすることができる集積回路（ＬＳＩ：Large Scale Integration）であり、ＣＭ１１０Ａ，１１０Ｂにおいてエラーが検知された時にＣＭ間の接続を切り離す機能を実現する。
【００１３】
ＦＰＧＡ１１３は、図５に示すように、エラー検出ロジック１１４，ＦＰＧＡ間通信制御部１１７，リセットレジスタ１１５及び要因レジスタ１１６を備える。
要因レジスタ１１６は、発生したエラーの要因を特定する情報が記録されるレジスタであり、デバイス１２１，１２２及びＣＰＵ１１２のいずれかを示す情報が記録される。
リセットレジスタ１１５は、デバイス＃０のリセット状態を制御するレジスタであり、このリセットレジスタ１１５に“１”が記録されるとデバイス＃０がリセットされる。すなわち、リセットレジスタ１１５に“１”が記録されると、デバイス１２１に設けられたリセット端子にリセット命令として“１”が入力され、デバイス１２１がリセット状態となる。これによりＣＭ間インタフェースが切断される。又、リセットレジスタ１１５に“０”が記録されると、デバイス＃０のリセットが解除された状態になる。
【００１４】
エラー検出ロジック１１４は、デバイス１２１，１２２やＣＰＵ１２からのエラー通知信号を監視する。デバイス１２１においてエラーが検知されるとDevice#0エラー通知信号が、又、デバイス１２２においてエラーが検知されるとDevice#2エラー通知信号が、それぞれエラー検出ロジック１１４に通知される。又、ＣＰＵ１１２においてエラーが検知されるとＣＰＵエラー通知信号がエラー検出ロジック１１４に通知される。
【００１５】
また、エラー検出ロジック１１４は、デバイス１２１，１２２及びＣＰＵ１１２のいずれかからエラーが通知されると、リセットレジスタ１１５に“１”をセットするとともに、当該エラー通知の送信元を特定する情報を、要因レジスタ１１６に記録する。
このような従来のストレージ装置１００のＣＭ１１０においてエラーが検知され、ＣＭ間の接続を切り離す手法を説明する。
【００１６】
例えば、図５に示す例においてＣＭ１１０ＡのＣＰＵ１１２においてエラーが発生すると（符号Ａ１参照）、ＣＰＵ１１２はエラー検出ロジック１１４にＣＰＵエラー通知信号を送信する。
エラー検出ロジック１１４は、リセットレジスタ１１５に“１”を記録するとともに、要因レジスタ１１６にエラー要因がＣＰＵ１１２であることを記録する（符号Ａ２参照）。リセットレジスタ１１５に“１”が記録されることにより、デバイス１２１Ａがリセットされ（符号Ａ３参照）、ＣＭ１１０ＡとＣＭ１１０Ｂとの間のＣＭ間通信が切断される（符号Ａ４参照）。
【００１７】
また、このようにＣＭ間通信が切断されることにより、ＣＭ１１０Ｂのデバイス１２１ＢにおいてＣＭ間通信の切断がエラーとして検知される（符号Ａ５参照）。デバイス１２１Ｂは、ＣＭ１１０ＢのＦＰＧＡ１１３のエラー検出ロジック１１４にDevice#0エラー通知信号を送信する（符号Ａ６参照）。このＣＭ１１０Ｂにおいても、エラー検出ロジック１１４が、リセットレジスタ１１５に“１”を記録するとともに、要因レジスタ１１６にエラー要因がＣＰＵ１１２であることを記録する（符号Ａ７参照）。
【００１８】
ＣＭ１１０Ｂにおいても、リセットレジスタ１１５に“１”が記録されることにより、デバイス１２１Ｂがリセットされる（符号Ａ８参照）。すなわち、自身にエラーが発生していないＣＭ１１０Ｂにおいて、ＣＭ間通信が切断されることにより検出されたエラーに基づいてデバイス１２１Ｂがリセットされる。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特開平１０−１８７４７３号公報
【特許文献２】特開２００８−５９５５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００２０】
しかしながら、このような従来のストレージ装置１００においては、ＣＭ１１０Ｂにおいてもデバイス１２１Ｂがリセットされるので、ＣＰＵ１１２は、このデバイス１２１Ｂの配下に接続されているデバイス１６０を使用できなくなる（符号Ａ９参照）。すなわち、ＣＭ１１０Ａにおいて発生したエラーにより、正常なＣＭ１１０Ｂでデバイス１２１Ｂを使用できなくなるという課題がある。
【００２１】
１つの側面では、本発明は、一の制御装置において生じたエラーの伝播を阻止できるようにすることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００２２】
このため、この情報処理装置は、複数の制御装置を冗長化して備える情報処理装置であって、前記複数の制御装置のうち第１の制御装置が、第１通信路を介して前記複数の制御装置のうち第２の制御装置に接続される第１ポートと、第２通信路を介して前記第２の制御装置に接続される第２ポートとを備えるとともに、処理デバイスが接続されるスイッチデバイスと、当該制御装置におけるエラーを検知する検知部と、前記スイッチデバイスに備えられた前記第１ポートのポートリセットを行なう第１リセット処理部と、前記第２の制御装置に対して、リセット指示を送信する送信部とを備える。
【発明の効果】
【００２３】
一実施形態によれば、一の制御装置において生じたエラーの伝播を阻止することができる。
【図面の簡単な説明】
【００２４】
【図１】実施形態の一例としてのストレージ制御装置を含むストレージ装置のハードウェア構成および機能構成を示すブロック図である。
【図２】実施形態の一例としてのストレージ装置のエラー発生時におけるデータの流れを示す図である。
【図３】実施形態の一例としてのストレージ装置のエラー発生時における処理を示すシーケンス図である。
【図４】実施形態の一例としてのストレージ装置における被疑ＣＭの判定手法を示すシーケンス図である。
【図５】従来のストレージ装置の構成を示す図である。
【発明を実施するための形態】
【００２５】
以下、図面を参照して本情報処理装置，制御装置及び制御プログラム実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形（実施形態及び各変形例を組み合わせる等）して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００２６】
図１は、実施形態の一例としてのストレージ装置１のハードウェア構成および機能構成を示すブロック図である。
図１に示すストレージ装置１は、ストレージユニット２０に格納された一以上の記憶装置（物理ディスク；図示略）を仮想化して、仮想ストレージ環境を形成する。そして、ストレージ装置１は、仮想ボリュームを、上位装置である図示しないホスト装置に提供する。
【００２７】
ストレージ装置１は、１以上のホスト装置（図示省略）に対して通信可能に接続されている。図１に示す例では、ストレージ装置１における一対のＣＡ３０Ａ，３０Ｂにそれぞれホスト装置が接続されている。
ホスト装置は、例えば、サーバ機能を備えた情報処理装置であり、本ストレージ装置１との間において、ＮＡＳ（Network Attached Storage）やＳＡＮ（Storage Area Network）のコマンドを送受信する。ホスト装置は、例えば、ストレージ装置１に対してリード／ライト等のディスクアクセスコマンドを送信することにより、ストレージ装置１が提供するボリュームにデータの書き込みや読み出しを行なう。
【００２８】
ストレージ装置１は、ホスト装置からボリュームに対して行なわれる入出力要求（例えば、リードコマンドやライトコマンド）に応じて、このボリュームに対応する実ストレージに対して、データの読み出しや書き込み等の処理を行なう。なお、ホスト装置からの入出力要求のことをＩ／Ｏ要求もしくはＩ／ＯコマンドもしくはホストＩ／Ｏという場合がある。
【００２９】
ストレージ装置１は、１つ以上（図１に示す例では２つ）のＣＭ１１Ａ，１１Ｂ及びストレージユニット２０を備える。
ストレージユニット２０は、１以上の図示しない記憶装置を備え、これらの記憶装置の記憶領域を、ＣＡ３０Ａ，３０Ｂを介して接続されるホスト装置に対して提供する。なお、複数の記憶装置を用いてＲＡＩＤを構成することができる。
【００３０】
ＣＭ１１Ａ，１１Ｂは種々の制御を行なう制御装置（ストレージ制御装置）であり、ホスト装置からのホストＩ／Ｏに従って、ストレージユニット２０へのアクセス制御等、各種制御を行なう。なお、以下、ＣＭを示す符号としては、複数のＣＭのうち１つを特定する必要があるときには符号１１Ａ，１１Ｂを用いるが、任意のＣＭを指すときには符号１１を用いる。
【００３１】
ＣＭ１１Ａ，１１Ｂは互いにほぼ同様の構成を有しており、冗長化されている。すなわち、ＣＭ１１Ａ，１１Ｂは二重化されており、通常は、例えばＣＭ１１Ａがプライマリ（
マスタ）として各種制御を行なう。しかし、このプライマリＣＭ１１Ａの故障時等には、セカンダリ（スレーブ）のＣＭ１１ＢがプライマリとしてＣＭ１１Ａの動作を引き継ぐ。
以下では、ＣＭ１１Ａ（ＣＭ＃０）がプライマリである場合の動作について説明するが、ＣＭ１１Ｂ（ＣＭ＃１）がプライマリである場合も、ＣＭ１１Ａがプライマリである場合と同様に動作することはいうまでもない。このため、ＣＭ１１Ｂがプライマリである場合の動作についての詳細な説明は省略する。
【００３２】
ＣＭ１１Ａは、図１に示すように、ＣＰＵ１２Ａ，ＦＰＧＡ１３Ａ，デバイス２１Ａ（Device#0），デバイス１９Ａ（Device#1），デバイス２２Ａ（Device#2）及びディスク用インタフェース２３を備える。又、ＣＭ１１Ｂは、図１に示すように、ＣＰＵ１２Ｂ，ＦＰＧＡ１３Ｂ，デバイス２１Ｂ（Device#0），デバイス１９Ｂ（Device#1），デバイス２２Ｂ（Device#2）及びディスク用インタフェース２３を備える。
【００３３】
なお、以下、ＣＰＵを示す符号としては、複数のＣＰＵのうち１つを特定する必要があるときには符号１２Ａ，１２Ｂを用いるが、任意のＣＰＵを指すときには符号１２を用いる。同様に、以下、ＦＰＧＡを示す符号としては、複数のＦＰＧＡのうち１つを特定する必要があるときには符号１３Ａ，１３Ｂを用いるが、任意のＦＰＧＡを指すときには符号１３を用いる。又、以下、デバイスを示す符号としては、複数のデバイスのうち１つを特定する必要があるときには符号２１Ａ，２２Ａ，１９Ａ，２１Ｂ，２２Ｂ，１９Ｂを用いるが、任意のデバイスを指すときには符号２１，２２，１９を用いる。
【００３４】
ＣＰＵ１２は、種々の制御や演算を行なう処理装置であり、図示しないメモリ等に格納されたプログラムを実行することにより、ＲＡＩＤ制御等の種々の機能を実現する。又、このＣＰＵ１２は、被疑ＣＭ判断プログラム（ファームウェア）を実行することにより、本ストレージ装置１に備えられたＣＭ１１でエラー発生が検知された場合に、複数のＣＭ１１の中から補修作業対象である被疑ＣＭ１１を特定する機能を実現する。
【００３５】
なお、この被疑ＣＭ１１を特定する機能についての詳細は、図４を用いて後述する。
ディスク用インタフェース２３は、例えばＳＡＳインタフェースであり、ストレージユニット２０における記憶装置等と通信可能に接続する。又、ディスク用インタフェース２３は、通信路５１に接続され、この通信路５１を介した通信を制御するインタフェース部としても機能する。通信路５１は、ＣＭ１１Ａのディスク用インタフェース２３とＣＭ１１Ｂのディスク用ＳＡＳインタフェース部２３との間を通信可能に接続する。
【００３６】
デバイス１９は、例えばＳＳＤ（Solid State Drive）であり、ＣＰＵ１２の２次キャッシュとして使用される。各ＣＭ１１において、デバイス１９は、デバイス２１に接続されている。
デバイス２２は、ＣＭ１１において、ＣＡ３０とＣＰＵ１２とディスク用インタフェース２３との間をつなぐブリッジとして機能するスイッチデバイスであり、例えばＰＣＩｅスイッチである。
【００３７】
このデバイス２２を介して、ＣＰＵ１２とホスト装置とストレージユニット２０とが通信可能に接続される。つまり、ＣＰＵ１２による制御の下、デバイス２２およびディスク用インタフェース２３を介して、ホスト装置からのＩ／Ｏ要求に応じたデータの書き込みや読み出しがストレージユニット２０に対して行なわれる。これにより、ストレージユニット２０には、ＣＭ１１Ａ，１１Ｂのいずれからもデータの書き込みや読み出しを行なうことができる。
【００３８】
デバイス２１Ａ，２１Ｂは、通信路５０，４１に接続され、これらの通信路５０，４１による通信を制御するインタフェース部であり、例えば、ＰＣＩｅスイッチである。デバイス２１ＡはＣＭ１１Ａに備えられ、デバイス２１ＢはＣＭ２１Ｂに備えられる。以下、これらのデバイス２１Ａ，２１ＢをＰＣＩｅスイッチ２１Ａ，２１Ｂという場合がある。これらのＰＣＩｅスイッチ２１Ａ，２１Ｂは互いに同様の構成を備える。以下、ＰＣＩｅスイッチを示す符号としては、複数のＰＣＩｅスイッチのうち１つを特定する必要があるときには符号２１Ａ，２１Ｂを用いるが、任意のＰＣＩｅスイッチを指すときには符号２１を用いる。
【００３９】
通信路（ＰＣＩｅＳＷ間通信路；第１通信路）５０は、通信路（第１通信路）５０ａと通信路（第２通信路）５０ｂとを備え、ＣＭ１１ＡのＰＣＩｅスイッチ２１ＡとＣＭ１１ＢのＰＣＩｅスイッチ２１Ｂとの間を通信可能に接続する。
ＰＣＩｅスイッチ２１Ａ，２１Ｂはそれぞれポート＃０（PORT#0）及びポート＃１（PORT#1）を備える。そして、ＰＣＩｅスイッチ２１Ａのポート＃０（第１ポート）は、通信路５０ａを介してＰＣＩｅスイッチ２１Ｂのポート＃１に接続されている。又、ＰＣＩｅスイッチ２１Ａのポート＃１（第２ポート）は、通信路５０ｂを介してＰＣＩｅスイッチ２１Ｂのポート＃０（第３ポート）に接続されている。
【００４０】
また、各ＣＭ１１において、ＰＣＩｅスイッチ２１は、ＣＰＵ１２とデバイス１９との間をつなぐブリッジとして機能する。
ＰＣＩｅスイッチ２１の図示しないポートを備え、このポートにデバイス１９が接続される。又、各ＣＭ１１において、ＰＣＩｅスイッチ２１とＣＰＵ１２との間は、それぞれＰＣＩｅの通信路（ＣＰＵ−ＰＣＩｅＳＷ間通信路）４１によって通信可能に接続される。これにより、各ＣＭ１１においては、ＣＰＵ１２は、通信路１４１及びＰＣＩｅスイッチ２１を介して、デバイス１９と通信可能に接続される。
【００４１】
また、ＰＣＩｅスイッチ２１は図示しないポート＃０用リセット信号入力端子を備えており、このポート＃０用リセット信号入力端子にリセット命令として例えば“１（Device#0 Port#0リセット信号）”が入力されると、そのポート＃０だけがリセット状態となる。すなわち、ＰＣＩｅスイッチ２１は、ポート単位で当該ＰＣＩｅスイッチ２１をリセット可能なポート単位リセット信号（Device#0 Port#0リセット信号）が入力可能に構成されている。
【００４２】
なお、以下、ＰＣＩｅスイッチ２１のポート＃０用リセット信号入力端子にDevice#0 Port#0リセット信号を入力することを、単に、ＰＣＩｅスイッチ２１にDevice#0 Port#0リセット信号を入力するという場合がある。又、以下、ＰＣＩｅスイッチ２１において、そのポート＃０だけがリセット状態になることをポートリセット状態という場合がある。
例えば、ＰＣＩｅスイッチ２１ＡにDevice#0 Port#0リセット信号が入力されると、そのポート＃０がリセットされ、このポート＃０に接続された通信路５０ａによる通信が遮断される。又、この際、ＰＣＩｅスイッチ２１において、ポート＃１やデバイス１９が接続されるポートの通信は遮断されない。
【００４３】
なお、ポート＃０用リセット信号入力端子に “０”が記録されると、ポート＃０のリセットが解除された状態になる。
同様に、ＰＣＩｅスイッチ２１ＢにDevice#0 Port#0リセット信号が入力されると、そのポート＃０がリセットされ、このポート＃０に接続された通信路５０ｂによる通信が遮断される。
【００４４】
そして、通信路５０においては、ＰＣＩｅスイッチ２１Ａ及びＰＣＩｅスイッチ２１Ｂの双方にDevice#0 Port#0リセット信号が入力されて、それぞれのポート＃０がリセットされることで、通信路５０ａ及び通信路５０ｂが遮断され、通信路５０が遮断される。
なお、以下、本ストレージ装置１において、ＰＣＩｅスイッチ２１Ａ，２１Ｂ及び通信路５０をＣＭ間インタフェースという場合がある。
【００４５】
ただし、ＰＣＩｅスイッチ２１においては、Device#0 Port#0リセット信号が入力されると、ＰＣＩｅスイッチ２１全体がリセットされた状態とは異なりポート＃０のみがリセットされる。このため、デバイス＃１が接続される図示しないポートは正常動作を継続する。すなわち、ポート＃０が遮断された状態であってもデバイス＃１は継続して使用することができる。
【００４６】
ＦＰＧＡ１３は、プログラミングすることができる集積回路（ＬＳＩ）であり、ＣＭ１１０Ａ，１１０Ｂにおいてエラーが検知された時にＣＭ間の接続を切り離す機能を実現する。
ＦＰＧＡ１３は、図１に示すように、エラー検出ロジック１４，リセットレジスタ１５，要因レジスタ１６，ＯＲ回路１８ａ，１８ｂ及び複数（図１に示す例では３つ）のＦＰＧＡ間通信制御ブロック１７を備える。
【００４７】
リセットレジスタ１５は、ＰＣＩｅスイッチ２１のポートリセット状態を制御するレジスタであり、このリセットレジスタ１５に“１”が記録されると、ＰＣＩｅスイッチ２１のポート＃０がリセットされる。すなわち、リセットレジスタ１５に“１”が記録されると、Device#0 Port#0リセット信号（“１”）がＰＣＩｅスイッチ２１のポート＃０用リセット信号入力端子にリセット命令として入力される。これにより、ＰＣＩｅスイッチ２１がポートリセット状態となる。
【００４８】
従って、このリセットレジスタ１５は、同一ＣＭ１１に搭載されたＰＣＩｅスイッチ２１Ａに備えられたポート＃０のポートリセットを行なうリセット処理部として機能する。
なお、リセットレジスタ１５に“０”が記録されると、ＰＣＩｅスイッチ２１のポートリセットが解除された状態になる。
このリセットレジスタ１５には、後述するエラー検出ロジック１４により“１”もしくは“０”が記録され、更に、後述するＯＲ回路１８ａからも“１”もしくは“０”が記録される。
【００４９】
要因レジスタ１６は、発生したエラーの要因を特定する情報が記録されるレジスタであり、エラー要因として、デバイス２１，２２及びＣＰＵ１２のいずれかを示す識別情報、もしくは他系ＣＭ１１からのDevice#0 Port#0リセット要求通知を受信したことを示す情報が記録される。
例えば、要因レジスタ１６には、各デバイス２１，２２及びＣＰＵ１２の各エラー要因候補にそれぞれ対応する複数の格納領域（領域）が備えられるとともに、他系ＣＭ１１からのDevice#0 Port#0リセット要求通知に対応する領域が備えられている。これらの領域には、例えばフラグ（識別情報：例えば“１”）が格納される。
【００５０】
そして、後述するエラー検出ロジック１４が、要因レジスタ１６においてデバイス２１，２２及びＣＰＵ１２にそれぞれ対応して備えられた領域の内、エラー通知元に対応する領域にフラグ“１”を設定する。
また、後述するＯＲ回路１８ｂが、要因レジスタ１６における、他系ＣＭ１１からのDevice#0 Port#0リセット要求通知に対応する領域にフラグ（例えば“１”）を設定する。
【００５１】
これらにより、要因レジスタ１６において、そのいずれかの領域に記録されるフラグ“１”が、エラー要因であるデバイス２１，２２及びＣＰＵ１２のいずれかを示す識別情報、もしくは他系ＣＭ１１からのDevice#0 Port#0リセット要求通知を受信したことを示す識別情報として機能する。すなわち、ＰＣＩｅスイッチ２１のポートリセット状態において、要因レジスタ１６における“１”が記録されている領域を確認することにより、ポートリセット状態が生じた要因（エラー要因）を特定することができる。以下、要因レジスタ１６の各領域に記録される情報をエラー要因情報という。
【００５２】
ＰＣＩｅスイッチ２１のポートリセット状態において、このエラー要因情報を確認することにより、ポートリセット状態が生じた要因を特定することができる。すなわち、デバイス２１，２２及びＣＰＵ１２のいずれかでエラーが生じたことによりＰＣＩｅスイッチ２１のポートリセット状態となったのか、他系ＣＭ１１からDevice#0 Port#0リセット要求通知を受信したことによりＰＣＩｅスイッチ２１のポートリセット状態となったのかを特定することができる。
【００５３】
エラー検出ロジック１４は、同一ＣＭ１１内のデバイス２１，２２やＣＰＵ１２からのエラー通知信号を監視する。例えばＰＣＩｅスイッチ２１においてエラーが検知されるとDevice#0エラー通知信号が、又、デバイス２２においてエラーが検知されるとDevice#2エラー通知信号が、それぞれエラー検出ロジック１４に通知される。又、ＣＰＵ１２においてエラーが検知されるとＣＰＵエラー通知信号がエラー検出ロジック１４に通知される。従って、このエラー検出ロジック１４は、当該ＣＭ１１Ａにおけるエラーを検知する検知部として機能する。
【００５４】
また、エラー検出ロジック１４は、デバイス２１，２２及びＣＰＵ１２のいずれかからエラーが通知されると、リセットレジスタ１５に“１”をセットする。
さらに、エラー検出ロジック１４は、デバイス２１，２２及びＣＰＵ１２のいずれかからエラーが通知されると、要因レジスタ１６においてエラー通知の送信元に対応する領域に“１”を設定する。すなわち、エラー検出ロジック１４は、エラー通知の送信元を特定する情報をエラー要因として要因レジスタ１６に記録する。
【００５５】
なお、エラー検出ロジック１４は、要因レジスタ１６にエラー要因情報が記録されている場合、すなわち、要因レジスタ１６のいずれかの領域に既に“１”が設定されている場合には、この既に記録されているエラー要因情報の更新は行なわない。
すなわち、エラー検出ロジック１４は、デバイス２１，２２及びＣＰＵ１２のいずれかから１度エラー通知を受信した後には、他のデバイス等からエラー通知を受信しても要因レジスタ１６を更新しない。
【００５６】
従って、要因レジスタ１６には、１番最初に行なわれたエラー通知のエラー要因が記録される。これにより、要因レジスタ１６を参照することで、本ストレージ装置１内における最初のエラー要因を特定することができる。
また、エラー検出ロジック１４は、デバイス２１，２２及びＣＰＵ１２のいずれかからエラーが通知されると、各ＦＰＧＡ間通信制御ブロック１７に対して、エラー検出通知を送信する。
【００５７】
ＦＰＧＡ間通信制御ブロック１７は、ＣＭ１１ＡとＣＭ１１Ｂとの間でデータ通信を行なう。ＣＭ１１ＡのＦＰＧＡ１３Ａには１つ以上（図１に示す例では＃０〜＃２の３つ）のＦＰＧＡ間通信制御ブロック１７が備えられ、又、ＣＭ１１ＢのＦＰＧＡ１３Ｂにも同数（図１に示す例では＃０〜＃２の３つ）のＦＰＧＡ間通信制御ブロック１７が備えられている。
【００５８】
ＣＭ１１Ａの各ＦＰＧＡ間通信制御ブロック１７は、ＣＭ１１ＢのＦＰＧＡ間通信制御ブロック１７とそれぞれ通信路（第３通信路）５２を介して１対１で通信可能に接続されている。なお、通信路５２は上述した通信路５０と異なるプロトコルの通信を行なうことが望ましい。
ＦＰＧＡ間通信制御ブロック１７は、同一ＣＭ１１（同一ＦＰＧＡ１３）内のエラー検出ロジック１４からエラー検出通知を受信すると、他ＣＭ１１のＦＰＧＡ間通信制御ブロック１７に対して通信路５２を介してそれぞれDevice#0 Port#0リセット要求信号を送信する。
【００５９】
また、各ＦＰＧＡ間通信制御ブロック１７は、他ＣＭ１１のＦＰＧＡ間通信制御ブロック１７から通信路５２を介してDevice#0 Port#0リセット要求信号を受信すると、ＯＲ回路１８ａ及びＯＲ回路１８ｂに対してそれぞれ“１”を入力する。
ＯＲ回路１８ａには、同一ＦＰＧＡ１３内に備えられた各ＦＰＧＡ間通信制御ブロック１７からの出力信号（リセット指示信号）が入力され、これらの入力信号の論理和をとり、その結果をリセットレジスタ１５に設定する。すなわち、ＯＲ回路１８ａは、同一ＦＰＧＡ１３内に備えられたいずれかのＦＰＧＡ間通信制御ブロック１７から“１”が入力されると、リセットレジスタ１５に“１”を設定する。これにより同一ＣＭ１１内のＰＣＩｅスイッチ２１のポート＃０をリセットさせる。
【００６０】
ＯＲ回路１８ｂには、同一ＦＰＧＡ１３内に備えられた各ＦＰＧＡ間通信制御ブロック１７からの出力信号（リセット指示信号）が入力され、これらの入力信号の論理和をとり、その結果を要因レジスタ１６に設定する。すなわち、ＯＲ回路１８ｂは、いずれかのＦＰＧＡ間通信制御ブロック１７から“１”が入力されると、要因レジスタ１６における他系ＣＭ１１からのDevice#0 Port#0リセット要求通知に対応する格納領域に、エラー要因情報として“１”を設定する。
【００６１】
なお、要因レジスタ１６には、既にエラー要因情報が格納されている場合には、更新されることを阻止する機能を備えている。従って、エラー要因情報を記録する際に、この要因レジスタ１６に既に他のエラー要因情報が記録されている場合には、要因レジスタ１６への更新が抑止される。
上述の如く構成された実施形態の一例としてのストレージ装置１におけるエラー発生時の処理を、図２及び図３を参照しながら説明する。
【００６２】
図２は実施形態の一例としてのストレージ装置１のエラー発生時におけるデータの流れを示す図、図３はそのエラー発生時における処理を示すシーケンス図である。これらの図２及び図３中における符号Ｂ１〜Ｂ１０は対応した処理を示す。
以下、ＣＭ１１ＡのＣＰＵ１２Ａにおいてエラーが生じた例について示す。
初期状態においては、要因レジスタ１６の各領域にはエラー要因を示す情報は記録されておらず（要因なし）、又、リセットレジスタ１５には“０”が記録されている。
【００６３】
例えば、ＣＭ１１ＡのＣＰＵ１２Ａにおいてエラーが発生すると、ＣＰＵ１２Ａは同一ＣＭ１１Ａ内に備えられたＦＰＧＡ１３Ａのエラー検出ロジック１４に対してＣＰＵエラー通知信号を送信する。エラー検出ロジック１４はこのエラー通知信号を受信することでエラーの発生を検知する（符号Ｂ１参照）。
エラー検出ロジック１４は、エラーを検知すると、リセットレジスタ１５に“１”をセットするとともに、要因レジスタ１６においてエラー通知の送信元であるＣＰＵ１２に対応する領域に“１”を設定する（符号Ｂ２参照）。
【００６４】
リセットレジスタ１５に“１”が記録されると、Device#0 Port#0リセット信号（“１”）がＰＣＩｅスイッチ２１Ａのポート＃０用リセット信号入力端子にリセット命令として入力され、ＰＣＩｅスイッチ２１Ａのポート＃０（第１ポート）がポートリセット状態となる（符号Ｂ３参照）。これにより、このポート＃０に接続された通信路５０ａによる通信が遮断される（符号Ｂ４参照）。
【００６５】
また、エラー検出ロジック１４は、各ＦＰＧＡ間通信制御ブロック１７に対して、それぞれエラー検出通知を送信する（符号Ｂ５参照）。
各ＦＰＧＡ間通信制御ブロック１７は、同一ＣＭ１１Ａ（同一ＦＰＧＡ１３Ａ）内のエラー検出ロジック１４からエラー検出通知を受信すると、ＣＭ１１ＢのＦＰＧＡ間通信制御ブロック１７に対してそれぞれDevice#0 Port#0リセット要求信号を送信する（符号Ｂ６参照）。
【００６６】
ＣＭ１１Ｂにおいては、各ＦＰＧＡ間通信制御ブロック１７が、ＣＭ１１ＡのＦＰＧＡ間通信制御ブロック１７からDevice#0 Port#0リセット要求信号を受信すると、ＯＲ回路１８ａ及びＯＲ回路１８ｂに対してそれぞれ“１”を入力する（符号Ｂ７参照）。
ＯＲ回路１８ａは、少なくともいずれかのＦＰＧＡ間通信制御ブロック１７から“１”が入力されると、リセットレジスタ１５に“１”を記録する。又、ＯＲ回路１８ｂは、少なくともいずれかのＦＰＧＡ間通信制御ブロック１７から“１”が入力されると、要因レジスタ１６における、他系ＣＭ１１ＡからのDevice#0 Port#0リセット要求通知に対応する領域に “１”を設定する。
【００６７】
ＣＭ１１Ｂにおいて、リセットレジスタ１５に“１”が記録されると、Device#0 Port#0リセット信号（“１”）がＰＣＩｅスイッチ２１Ｂのポート＃０用リセット信号入力端子にリセット命令として入力され、ＰＣＩｅスイッチ２１Ｂのポート＃０（第３ポート）がポートリセット状態となる（符号Ｂ８参照）。これにより、このポート＃０に接続された通信路５０ｂによる通信が遮断される（符号Ｂ９参照）。
【００６８】
そして、通信路５０ａ，５０ｂが遮断されることにより通信路５０が遮断され、通信路５０を介したＣＭ１１Ａ，１１Ｂ間の通信が遮断される。又、この際、ＣＭ１１Ｂにおいては、ＰＣＩｅスイッチ２１Ｂは、ポート＃０のみがリセットされ、ＰＣＩｅスイッチ２１Ｂ全体のリセット状態とはならない。このため、デバイス１９Ｂが接続される図示しないポートは正常動作を継続し、ポート＃０が遮断された状態であっても、ＰＣＩｅスイッチ２１Ｂに接続されたデバイス１０９Ｂを継続して使用することができる。
【００６９】
すなわち、ＣＭ１１Ｂにおいて、ＣＰＵ１２Ｂはデバイス１９Ｂを継続して使用することができる（符号Ｂ１０参照）。
次に、本ストレージ装置１において、複数のＣＭ１１の中から保守作業対象の被疑ＣＭ１１を特定する方法について説明する。
上述の如く、複数備えられたＣＭ１１のうち、一方のＣＭ１１（例えばＣＭ１１Ａ）のＰＣＩｅスイッチ２１をポートリセット状態にすることにより、他方のＣＭ１１（例えばＣＭ１１Ｂ）のＰＣＩｅスイッチ２１で検出されるエラーには複数種類がある。
【００７０】
例えば、ＵＲ（Unsupportable Request）エラーは自ＣＭ１１内において生じたエラーが原因でＰＣＩｅスイッチ２１において生成されるエラーメッセージである。又、リンクダウン（Linkdown）エラーは、他系において生じたエラーが原因でＰＣＩｅスイッチ２１において生成されるエラーメッセージである。これらのエラーメッセージ（通信エラー検出通知）はＰＣＩｅの仕様に基づいて生成される。
【００７１】
これらのエラーメッセージが示すように、エラー要因によっては、被疑箇所、すなわち、エラーを解消するための保守作業の対象となる部品が、ＣＭ１１Ａとなる場合と、ＣＭ１１Ｂとなるものが混在することになる。
ここで、被疑箇所が他ＣＭ１１と判断されるものに関しては、一般に、元々異常が検出された側のＣＭ１１を縮退させるよう指示するため、被疑箇所と縮退対象とが一致するので問題ない。
【００７２】
しかしながら、例えばＣＭ１１Ａにおいてエラーが発生し、このエラーに基づき上述の如くＰＣＩｅスイッチ２１Ａのポートリセットが行なわれると、その結果、ＣＭ間インタフェースでＵＲエラーやリンクダウンエラーが生成される。このようにＣＭ１１Ａにおいてエラーが発生した場合に、ＣＭ１１Ｂにおいて、ＣＭ間インタフェースからのエラーメッセージに基づき被疑箇所が自ＣＭ１１Ｂであると誤判断される場合がある。
【００７３】
ＣＭ１１Ｂにおいてこのような誤判断が行なわれると、本来であれば不要なＣＭ１１Ｂの縮退処理が行なわれ、その結果、ＣＭ１１Ａ，１１Ｂの両方が縮退することになり、本ストレージ装置１が停止してしまう。
そこで、本ストレージ装置１においては、ＣＰＵ１２が被疑ＣＭ判断プログラム（ファームウェア）を実行することにより、被疑ＣＭ判断部１２０としての機能を実現する。
【００７４】
この被疑ＣＭ判断部１２０は、ＣＭ間インタフェースで生成されるエラーメッセージ（通信エラー検出通知）を受信すると、このエラーメッセージに応じて、保守作業対象である被疑ＣＭ１１を特定する。
具体的には、他のＣＭ１１においてエラーが検知され、上述の如くそのＰＣＩｅスイッチ２１がポートリセット状態になり、このポートリセットを検知してＣＭ間インタフェースがエラーメッセージを生成し、被疑ＣＭ判断部１２０がこのエラーメッセージを受信する。
【００７５】
被疑ＣＭ判断部１２０は、この受信したエラーメッセージに応じて以下のケース（１−１）〜（３−２）のいずれかの判断を行なう。
（１）エラーメッセージがＵＲエラーを通知する場合
エラーメッセージがＵＲエラーを通知する場合、すなわち、自ＣＭ（第２の処理装置）１１が縮退要因であることを示す場合には、被疑ＣＭ判断部（要因情報取得部）１２０は、他ＣＭ（第１の制御装置）１１に対して、ＣＭ１１の縮退発生の原因が他ＣＭ１１にあるか否かを確認する。
【００７６】
ここで、各ＣＭ１１のファームウェアは、自ＣＭ１１においてエラー発生が検知された場合に、同一ＣＭ１１内のＦＰＧＡ１３に備えられた要因レジスタ１６の内容を読み取る。そして、この要因レジスタ１６に、エラー要因として、同一ＣＭ１１内のデバイス２１，２２及びＣＰＵ１２のいずれかを示す識別情報が記録されている場合には、ファームウェアは、図示しないメモリ等に、自ＣＭ１１Ａが縮退する要因が、自ＣＭ１１にあることを示す“自ＣＭ縮退要因有”との情報（要因情報）を記憶するようになっている。
【００７７】
被疑ＣＭ判断部（確認部，）１２０は、受信したエラーメッセージがＵＲエラーを通知する場合には、他ＣＭ（第１の制御装置）１１に対して、“自ＣＭ縮退要因有”との情報が記憶されているか否かを確認する。
他ＣＭ１１のファームウェア（要因情報通知部）は、この確認要求を受信すると、“自ＣＭ縮退要因有”との情報が記憶されているか否かを応答する。
【００７８】
（１−１）確認の結果、他ＣＭ１１において“自ＣＭ縮退要因有”との情報が記憶されている場合に、この他ＣＭ１１のエラーが原因であると判断される。すなわち、自ＣＭ１１において検知されたエラーは、他ＣＭ１１において発生したエラーが原因で生じたものであると判断されるので、被疑ＣＭ判断部１２０は他ＣＭ１１を保守作業対象と決定する。
【００７９】
（１−２）一方、確認の結果、他ＣＭ１１において“自ＣＭ縮退要因有”との情報が記憶されていない場合には、この他ＣＭ１１のエラーが原因ではないと判断される。すなわち、自ＣＭ１１のエラーが原因であると判断されるので、被疑ＣＭ判断部１２０は自ＣＭ１１を保守作業対象と決定する。
（２）エラーメッセージがリンクダウンエラーを通知する場合
エラーメッセージが、リンクダウンエラーを通知する場合、すなわち、他ＣＭ（第１の処理装置）１１が縮退要因であることを示す場合には、被疑ＣＭ判断部１２０は、この他ＣＭ１１に対して、“自ＣＭ縮退要因有”との情報が記憶されているか否かを確認する。
【００８０】
（２−１）確認の結果、他ＣＭ１１において“自ＣＭ縮退要因有”との情報が記憶されていない場合には、この他ＣＭ１１のエラーが原因ではないと判断される。例えば、通信路５０において断線等の障害原因がある場合が相当する。
この場合には、被疑ＣＭ判断部１２０は、２つのＣＭ１１の内、スレーブ側のＣＭ１１（例えば、ＣＭ１１Ｂ）を保守作業対象と決定する。
【００８１】
（２−２）一方、確認の結果、他ＣＭ１１において“自ＣＭ縮退要因有”との情報が記憶されている場合には、この他ＣＭ１１のエラーが原因であると判断される。すなわち、自ＣＭ１１において検知されたエラーは、他ＣＭ１１において発生したエラーが原因で生じたものであると判断されるので、被疑ＣＭ判断部１２０は他ＣＭ１１を保守作業対象と決定する。
【００８２】
（３）エラーメッセージがＵＲエラー及びリンクダウンエラーを通知する場合
エラーメッセージが、ＵＲエラー及びリンクダウンエラーを通知する場合、すなわち、他ＣＭ１１及び自ＣＭ１１が縮退要因であることを示す場合には、いずれに原因があるか判断できないので、被疑ＣＭ判断部１２０は、他ＣＭ１１に対して、“自ＣＭ縮退要因有”との情報が記憶されているか否かを確認する。
【００８３】
（３−１）確認の結果、他ＣＭ１１において“自ＣＭ縮退要因有”との情報が記憶されていない場合には、この他ＣＭ１１のエラーが原因ではないと判断される。すなわち、自ＣＭ１１のエラーが原因であると判断されるので、被疑ＣＭ判断部１２０は自ＣＭ１１を保守作業対象と決定する。
（３−２）一方、この確認の結果、他ＣＭ１１において“自ＣＭ縮退要因有”との情報が記憶されている場合には、この他ＣＭ１１のエラーが原因であると判断される。すなわち、自ＣＭ１１において検知されたエラーは、他ＣＭ１１において発生したエラーが原因で生じたものであると判断されるので、被疑ＣＭ判断部１２０は他ＣＭ１１を保守作業対象と決定する。
【００８４】
なお、上述した被疑ＣＭ判断部１２０としての機能を実現するためのプログラム（ファームウェア）は、例えば図示しない記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００８５】
被疑ＣＭ判断部１２０としての機能を実現する際には、内部記憶装置（本実施形態では図示しないメモリ）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１２）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
実施形態の一例としてのストレージ装置１における被疑ＣＭの判定手法を、図４に示すシーケンス図を参照しながら説明する。
【００８６】
以下、ＣＭ１１ＡのＣＰＵ１２Ａにおいてエラーが生じた例について示す。又、図４中において既述の符号と同一の符号は同様の処理を示す。
例えばＣＭ１１ＡのＣＰＵ１２Ａにおいてエラーが発生すると、ＣＰＵ１２Ａは同一ＣＭ１１Ａ内に備えられたＦＰＧＡ１３Ａのエラー検出ロジック１４に対してＣＰＵエラー通知信号を送信する。エラー検出ロジック１４はこのエラー通知信号を受信することでエラーの発生を検知する（符号Ｂ１参照）。
【００８７】
エラー検出ロジック１４は、エラーを検知すると、リセットレジスタ１５に“１”をセットするとともに、要因レジスタ１６においてエラー通知の送信元であるＣＰＵ１２Ａに対応する領域に“１”を設定する（符号Ｂ２参照）。
ファームウェアは、要因レジスタ１６の内容を読み取る（符号Ｃ１参照）。ここで、ＣＭ１１Ａの要因レジスタ１６に、エラー要因として、デバイス２１，２２及びＣＰＵ１２のいずれかを示す識別情報が記録されている場合には、ファームウェアは、図示しないメモリ等に、自ＣＭ１１Ａが縮退する要因が、ＣＭ１１Ａ（自ＣＭ１１Ａ）にあることを示す“自ＣＭ縮退要因有”との情報を記憶する。
【００８８】
本例においては、要因レジスタ１６には、エラー要因がＣＰＵ１２であることを示すエラー要因情報が記録されているので、ファームウェアは、図示しないメモリ等に“自ＣＭ縮退要因有”との情報を記憶する。
ＣＭ１１Ａにおいて、リセットレジスタ１５に“１”が記録されると、Device#0 Port#0リセット信号（“１”）がＰＣＩｅスイッチ２１Ａのポート＃０用リセット信号入力端子にリセット命令として入力され、ＰＣＩｅスイッチ２１Ａのポート＃０がポートリセット状態となる（符号Ｂ３参照）。これにより、このポート＃０に接続された通信路５０ａによる通信が遮断される（符号Ｂ４参照）。
【００８９】
このポートリセットにより通信路５０ａによる通信が遮断されることで、ＣＭ間インタフェース（ＰＣＩｅスイッチ２１Ｂ）においてエラーが検知され、リンクダウンエラーもしくはＵＲエラーのエラーメッセージが生成される（符号Ｃ２参照）。なお、このエラーメッセージは、例えばＰＣＩｅの規格に基づいて生成されるので、その生成方法や通知方法についての説明は省略する。
【００９０】
生成されたエラーメッセージは、ＣＭ１１Ｂのファームウェア（被疑ＣＭ判断部１２０）に通知され、これにより、被疑ＣＭ判断部（受信部）１２０はエラーの発生を検知する（符号Ｃ３参照）。
被疑ＣＭ判断部１２０は、エラーメッセージを確認するとともに（符号Ｃ４参照）、他ＣＭ１１Ａに対してエラー要因がそのＣＭ１１Ａにあるか否かを確認する。具体的には、被疑ＣＭ判断部（確認部）１２０は、ＣＭ１１Ａのファームウェアに対して、ＣＭ１１Ａの生存確認を行ない、ファームウェアにより“自ＣＭ縮退要因有”を示す情報が記録されているか否かを確認する（符号Ｃ５参照）。
【００９１】
本例においては、前述の如く、リセットレジスタ１５には“１”が設定されており（符号Ｃ６参照）、又、要因レジスタ１６にはＣＰＵ１２がエラー要因であることを示すフラグが設定されている（符号Ｃ７参照）。又、前述の符号Ｃ１で示したように、ＣＭ１１Ａのファームウェアは、要因レジスタ１６の内容を読み取り、“自ＣＭ縮退要因有”を図示しないメモリ等に記憶している（符号Ｃ８参照）。ＣＭ１１Ａのファームウェア（要因情報通知部）は、ＣＭ１１Ｂの被疑ＣＭ判断部１２０からの問い合わせに応じて、“自ＣＭ縮退要因有”を記録している旨の応答を行なう（符号Ｃ９参照）。
【００９２】
ＣＭ１１Ｂにおいては、被疑ＣＭ判断部（要因情報取得部，決定部）１２０は、この応答を受信し、この確認の結果に基づいて、上述したケース（１−１）〜（３−２）の手法に従って保守作業対象のＣＭ１１を特定する。図４に示す例においては、ＣＭ１１Ａにおいて“自ＣＭ縮退要因有”が記録されているので、ＣＭ１１Ｂの被疑ＣＭ判断部（決定部）１２０は、ＣＭ１１Ａを保守作業対象と決定し、ＣＭ１１Ｂの縮退処理を破棄（抑止）する（符号Ｃ１０参照）。
【００９３】
このように、実施形態の一例としてのストレージ装置１によれば、複数備えられたＣＭ１１の内いずれかにおいてエラーが発生した場合に、当該エラーが検知されたＣＭ１１（例えば、ＣＭ１１Ａ）において、そのＰＣＩｅスイッチ２１にDevice#0 Port#0リセット信号を入力してそのポート＃０をポートリセット状態にする。又、ＦＰＧＡ間通信制御ブロック１７から通信路５２を介して他方のＣＭ１１（例えばＣＭ１１Ｂ）にDevice#0 Port#0リセット要求信号を送信する。このDevice#0 Port#0リセット要求信号を受信したＣＭ１１Ｂにおいても、そのＰＣＩｅスイッチ２１にDevice#0 Port#0リセット信号を入力してそのポート＃０をポートリセット状態にする。これらにより、ＣＭ１１Ａ，１１Ｂ間において通信路５０が遮断され、ＣＭ１１Ａにおいて生じたエラーが通信路５０を介してＣＭ１１Ｂに伝播することを阻止することができる。
【００９４】
また、ＣＭ１１Ａ，１１Ｂにおいて、ＰＣＩｅスイッチ２１にDevice#0 Port#0リセット信号を入力してそのポート＃０をポートリセット状態にすることで、ＰＣＩｅスイッチ２１に接続されたデバイス１９とＣＰＵ１２との通信を阻害することなくＣＭ間通信を遮断することができる。
すなわち、例えば、ＣＭ間通信を遮断した状態で、ＣＭ１２Ｂにおいて、ＰＣＩｅスイッチ２１に接続されたＳＳＤ１９を継続して使用することができる。
【００９５】
また、ＣＭ１１ＡとＣＭ１１Ｂとの間において、各ＣＭ１１に備えられた複数のＦＰＧＡ間通信制御ブロック１７を用いて、複数の通信路５２で並行してDevice#0 Port#0リセット要求信号を送信する。これにより、ＣＭ１１Ａ，１１Ｂ間において確実にDevice#0 Port#0リセット要求信号を送受信し、受信側のＣＭ１１において、確実にＰＣＩｅスイッチ２１をポートリセット状態にすることができる。すなわち、ＣＭ１１間通信を確実に遮断することができる。
【００９６】
さらに、ＣＭ間インタフェースで検知されたエラーに関するエラーメッセージを受信したＣＭ１１（例えばＣＭ１１Ｂ）において、被疑ＣＭ判断部１２０が、他方のＣＭ１１（例えばＣＭ１１Ａ）に“自ＣＭ縮退要因有”との情報が記憶されているか確認する。
他ＣＭ１１Ａに“自ＣＭ縮退要因有”との情報が記憶されている場合には、そのＣＭ１１Ａが縮退する要因が、他ＣＭ１１Ａにあるので、ＣＭ１１Ｂを縮退させずにＣＭ１１Ａだけを保守対象ＣＭ１１として決定し、ＣＭ１１Ｂの縮退は阻止する。これにより、ＣＭ１１Ｂの不必要な縮退処理を行なうことがなく、ストレージ装置１を継続して機能させることができる。
【００９７】
なお、上述した実施形態に関わらず、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態においては、図１に示すように、各ＣＭ１１に３つのＦＰＧＡ間通信制御ブロック１７がそれぞれ備えられているが、これに限定されるものではなく、２つ以下もしくは４つ以上のＦＰＧＡ間通信制御ブロック１７を備えてもよい。
【００９８】
また、上述した実施形態においては、２つのＣＭ１１Ａ，１１Ｂを備えているが、これに限定されるものではなく、３つ以上のＣＭ１１を備えてもよい。
さらに、上述した実施形態においては、ＣＭ１１において、エラー検出ロジック１４に対して、デバイス２１，２２及びＣＰＵ１２がエラー通知を行なっているが、これに限定されるものではなく、他の要素に関してもエラー検出ロジック１４にエラー通知を行なってもよい。
【００９９】
また、上述した実施形態においては、ＣＭ１１ＡのＣＰＵ１２Ａにおいてエラーが生じた例について示しているが、これに限定されるものではなく、他のデバイス２１，２２等においてエラー発生した場合にも同様に処理することができる。
さらに、上述した実施形態においては、ＣＭ１１Ａ，１１Ｂを備えたストレージ装置１において検出されたエラーについて説明しているが、これに限定されるものではない。
【０１００】
すなわち、複数モジュールによる冗長構成を有している各種システムや複数のモジュールを接続して構成するシステムに適用することで、エラーが生じたモジュールからのエラーの伝播を阻止し、又、保守作業対象のモジュールを特定することができる。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１０１】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
複数の制御装置を冗長化して備える情報処理装置であって、
前記複数の制御装置のうち第１の制御装置が、
第１通信路を介して前記複数の制御装置のうち第２の制御装置に接続される第１ポートと、第２通信路を介して前記第２の制御装置に接続される第２ポートとを備えるとともに、処理デバイスが接続されるスイッチデバイスと、
当該制御装置におけるエラーを検知する検知部と、
前記スイッチデバイスに備えられた前記第１ポートのポートリセットを行なう第１リセット処理部と、
前記第２の制御装置に対して、リセット指示を送信する送信部と
を備えることを特徴とする、情報処理装置。
【０１０２】
（付記２）
前記送信部が、前記第１通信路及び第２通信路とは異なる第３通信路を介して前記リセット指示を送信することを特徴とする、付記１記載の情報処理装置。
（付記３）
前記第２の制御装置が、
前記リセット指示通知を受信すると、当該第２の制御装置のスイッチデバイスに備えられた、前記第１の制御装置の前記第２ポートと前記第２通信路を介して接続される第３ポートのポートリセットを行なう第２リセット処理部を備えることを特徴とする、付記１又は２記載の情報処理装置。
【０１０３】
（付記４）
前記第２の制御装置が、
前記第１の制御装置における前記第１リセット処理部による前記第１ポートのポートリセットに基づき、当該第２の制御装置の前記スイッチデバイスにおいて生成される通信エラー検出通知を受信する受信部と、
前記受信部が前記通信エラー検出通知を受信すると、前記第３通信路を介して前記他の制御装置にエラー発生要因を確認する確認部と、
前記確認部による確認の結果に基づき、保守作業対象を決定する決定部と
を備えることを特徴とする、付記１〜３のいずれか１項に記載の情報処理装置。
【０１０４】
（付記５）
前記第１の制御装置が、当該第１の制御装置において検知されたエラーの発生要因を示す要因情報を通知する要因情報通知部を備え、
前記決定部が、前記要因情報通知部から通知される前記要因情報に基づいて前記エラー発生要因を確認することを特徴とする、付記４記載の情報処理装置。
【０１０５】
（付記６）
前記受信部が当該第２の制御装置が縮退要因であることを示す前記通信エラー検出通知を受信した場合において、前記要因情報通知部から通知される前記要因情報が、前記第１の制御装置が要因であることを示す場合に、
前記決定部が、前記第１の制御装置を保守作業対象と決定することを特徴とする、付記５記載の情報処理装置。
【０１０６】
（付記７）
前記受信部が前記第１の処理装置が縮退要因であることを示す前記通信エラー検出通知を受信した場合において、前記要因情報通知部から通知される前記要因情報が、前記第１の制御装置が要因であることを示すものではない場合に、
前記決定部が、前記複数の制御装置のうちスレーブの制御装置を保守作業対象と決定することを特徴とする、付記５記載の情報処理装置。
【０１０７】
（付記８）
前記受信部が前記第１の処理装置が縮退要因であることを示す前記通信エラー検出通知と、前記第２の処理装置が縮退要因であることを示す前記通信エラー検出通知とを受信した場合において、
前記要因情報通知部から通知される前記要因情報が、前記第１の制御装置が要因であることを示す場合に、前記決定部が、前記第１の制御装置を保守作業対象と決定し、
前記要因情報通知部から通知される前記要因情報が、前記第１の制御装置が要因であることを示すものではない場合に、前記決定部が、前記第２の制御装置を保守作業対象と決定することを特徴とする、付記５記載の情報処理装置。
【０１０８】
（付記９）
他の制御装置と冗長化して備えられる制御装置であって、
第１通信路を介して前記他の制御装置に接続される第１ポートと、第２通信路を介して前記他の制御装置に接続される第２ポートとを備えるとともに、処理デバイスが接続されるスイッチデバイスと、
当該制御装置におけるエラーを検知する検知部と、
前記スイッチデバイスに備えられた前記第１ポートのポートリセットを行なうリセット処理部と、
前記他の制御装置に対して、リセット指示を送信する送信部と
を備えることを特徴とする、制御装置。
【０１０９】
（付記１０）
前記送信部が、前記第１通信路及び第２通信路とは異なる第３通信路を介して前記リセット指示を送信することを特徴とする、付記９記載の制御装置。
（付記１１）
前記スイッチデバイスにおいて生成される通信エラー検出通知を受信する受信部と、
前記受信部が前記通信エラー検出通知を受信すると、前記第１通信路及び第２通信路とは異なる第３通信路を介して前記他の制御装置にエラー発生要因を確認する確認部と
前記確認部による確認の結果に基づき、保守作業対象を決定する決定部と
を備えることを特徴とする、付記９又は１０記載の制御装置。
【０１１０】
（付記１２）
前記他の制御装置から、当該他の制御装置において検知されたエラーの発生要因を示す要因情報を取得する要因情報取得部を備え、
前記決定部が、前記要因情報取得部が取得する前記要因情報に基づいて前記エラー発生要因を確認することを特徴とする、付記１１記載の制御装置。
【０１１１】
（付記１３）
前記受信部が当該制御装置が縮退要因であることを示す前記通信エラー検出通知を受信した場合において、前記要因情報取得部が取得する前記要因情報が、前記他の制御装置が要因であることを示す場合に、
前記決定部が、前記他の制御装置を保守作業対象と決定することを特徴とする、付記１２記載の制御装置。
【０１１２】
（付記１４）
前記受信部が前記他の処理装置が縮退要因であることを示す前記通信エラー検出通知を受信した場合において、前記要因情報取得部が取得する前記要因情報が、前記他の制御装置が要因であることを示すものではない場合に、
前記決定部が、スレーブの制御装置を保守作業対象と決定することを特徴とする、付記１２記載の制御装置。
【０１１３】
（付記１５）
前記受信部が前記他の処理装置が縮退要因であることを示す前記通信エラー検出通知と、当該処理装置が縮退要因であることを示す前記通信エラー検出通知とを受信した場合において、
前記要因情報取得部が取得する前記要因情報が、前記他の制御装置が要因であることを示す場合に、前記決定部が、前記他の制御装置を保守作業対象と決定し、
前記要因情報取得部が取得する前記要因情報が、前記他の制御装置が要因であることを示すものではない場合に、前記決定部が、当該制御装置を保守作業対象と決定することを特徴とする、付記１２記載の制御装置。
【０１１４】
（付記１６）
他の制御装置と冗長化して備えられる制御装置の制御プログラムであって、
前記第１の制御装置における前記第１ポートのポートリセットに基づき、当該第２の制御装置の前記スイッチデバイスにおいて生成される通信エラー検出通知を受信し、
前記通信エラー検出通知を受信すると、前記第１通信路及び第２通信路とは異なる第３通信路を介して前記他の制御装置にエラー発生要因を確認し、
前記確認の結果に基づき、保守作業対象を決定する
処理をコンピュータに実行させることを特徴とする制御プログラム。
【０１１５】
（付記１７）
前記第１の制御装置が、当該第１の制御装置において検知されたエラーの発生要因を示す要因情報を通知し、
前記要因情報に基づいて前記エラー発生要因を確認する
処理をコンピュータに実行させることを特徴とする、付記１６記載の制御プログラム。
【０１１６】
（付記１８）
当該第２の制御装置が縮退要因であることを示す前記通信エラー検出通知を受信した場合において、前記要因情報が、前記第１の制御装置が要因であることを示す場合に、
前記第１の制御装置を保守作業対象と決定する
処理をコンピュータに実行させることを特徴とする、付記１７記載の制御プログラム。
【０１１７】
（付記１９）
前記第１の処理装置が縮退要因であることを示す前記通信エラー検出通知を受信した場合において、前記要因情報が、前記第１の制御装置が要因であることを示すものではない場合に、
前記複数の制御装置のうちスレーブの制御装置を保守作業対象と決定する処理をコンピュータに実行させることを特徴とする、付記１７記載の制御プログラム。
【０１１８】
（付記２０）
前記第１の処理装置が縮退要因であることを示す前記通信エラー検出通知と、前記第２の処理装置が縮退要因であることを示す前記通信エラー検出通知とを受信した場合において、
前記要因情報が、前記第１の制御装置が要因であることを示す場合に、前記第１の制御装置を保守作業対象と決定し、
前記要因情報が、前記第１の制御装置が要因であることを示すものではない場合に、前記第２の制御装置を保守作業対象と決定する
処理をコンピュータに実行させることを特徴とする、付記１７記載の制御プログラム。
【符号の説明】
【０１１９】
１    ストレージ装置
１１Ａ，１１Ｂ，１１    ＣＭ（制御装置）
１２ａ，１２Ｂ，１２    ＣＰＵ
１３ａ，１３Ｂ，１３    ＦＰＧＡ
１４    エラー検出ロジック
１５    リセットレジスタ
１６    要因レジスタ
１７    ＦＰＧＡ間通信制御ブロック
１８ａ，１８ｂ    ＯＲ回路
１９Ａ，１９Ｂ    デバイス（スイッチデバイス）
２０    ストレージユニット
２１ａ，２１Ｂ，２１    デバイス，ＰＣＩｅスイッチ
２２Ａ，２２Ｂ    デバイス
２３    ディスク用インタフェース
３０    ＣＡ
４１，５０ａ，５０ｂ，５０，５１，５２    通信路
１２０    被疑ＣＭ判断部
【図１】
2015099487.tif 000003
【図２】
2015099487.tif 000004
【図３】
2015099487.tif 000005
【図４】
2015099487.tif 000006
【図５】
2015099487.tif 000007