(57)【要約】【課題】伝送経路上の故障箇所を特定すること。【解決手段】複数の接続デバイス４１、４２、４３に至る複数の伝送経路を切り替える接続制御装置２０に対し、複数の接続デバイス４１、４２、４３のうちアクセス先となる接続デバイス４１との間のコネクションを確立するためのフレームを送信する送信部１１と、接続制御装置２０と複数の接続デバイス４１、４２、４３との間で複数の伝送経路のうち指定された伝送経路における故障の有無を診断する診断デバイス５０に対し、フレームに対する応答がタイムアウトになったときにフレームの伝送経路を指定して故障の有無を診断させ、診断結果に応じて接続制御装置２０に故障があるか、フレームの伝送経路にある接続デバイス４１に故障があるかを判定する制御部１２とを有する、制御装置１０が提供される。【選択図】図１
2018005826.tif 000002
【特許請求の範囲】
【請求項１】
複数の接続デバイスに至る複数の伝送経路を切り替える接続制御装置に対し、前記複数の接続デバイスのうちアクセス先となる接続デバイスとの間のコネクションを確立するためのフレームを送信する送信部と、
前記接続制御装置と前記複数の接続デバイスとの間で前記複数の伝送経路のうち指定された伝送経路における故障の有無を診断する診断デバイスに対し、前記フレームに対する応答がタイムアウトになったときに前記フレームの伝送経路を指定して前記故障の有無を診断させ、診断結果に応じて前記接続制御装置に故障があるか、前記フレームの伝送経路にある接続デバイスに故障があるかを判定する制御部と
を有する、制御装置。
【請求項２】
前記接続制御装置は、前記複数の伝送経路のうち少なくとも１つの伝送経路を前記診断デバイスに至る代替経路に切り替えるスイッチを制御でき、
前記制御部は、前記フレームに対する応答がタイムアウトになったとき、前記接続制御装置を制御して前記フレームの伝送経路を前記代替経路に切り替えさせ、前記診断デバイスに対して前記代替経路におけるエラーの有無に基づいて前記故障の有無を診断させる
請求項１に記載の制御装置。
【請求項３】
前記判定する処理では、送信側及び受信側の少なくとも一方で内容に応じた処理が実行されるテストフレームが前記代替経路で伝送され、前記接続制御装置において前記テストフレームの内容に応じた処理が実行されない場合に前記代替経路におけるエラーが生じたと診断される
請求項２に記載の制御装置。
【請求項４】
前記接続制御装置は、前記複数の伝送経路のそれぞれで受信側から送信される受信エラーの数をカウントするエラーカウンタを有し、
前記制御部は、前記フレームの伝送経路について前記エラーカウンタのカウント結果が正常値である場合に前記診断デバイスに対して前記故障の有無を診断させる
請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
複数の記憶装置と、前記複数の記憶装置に対するデータの読み書きを制御する制御装置と、前記制御装置と前記複数の記憶装置との間を結ぶ複数の伝送経路を切り替える中継装置とを有するストレージ装置であって、
前記中継装置は、前記接続制御装置と前記複数の記憶装置との間で前記複数の伝送経路のうち指定された伝送経路における故障の有無を診断する診断デバイスを有し、
前記制御装置は、前記中継装置に対して、前記複数の記憶装置のうち接続先の記憶装置との間でコネクションを確立するためのフレームを送信し、前記フレームに対する応答がタイムアウトになったとき、前記診断デバイスに対して、前記フレームの伝送経路を指定して前記故障の有無を診断させ、診断結果に応じて前記中継装置に故障があるか、前記フレームの伝送経路にある記憶装置に故障があるかを判定する
ストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、及びストレージ装置に関する。
【背景技術】
【０００２】
コンピュータには、記憶装置、演算装置、出力装置などの接続デバイスを接続するための接続ポートがある。こうした接続デバイスを多数接続する場合、複数の接続ポートを搭載した拡張デバイスが利用される。拡張デバイスは、例えば、選択された接続ポートに接続されている接続デバイスとコンピュータとを接続する接続制御装置として機能する。
【０００３】
一例として、ストレージ装置においては、複数のＨＤＤ（Hard Disk Drive）やＲＡＩＤ（Redundant Arrays of Inexpensive Disks）装置などの記憶装置を多数接続するために、エキスパンダ（以下、ＥＸＰ（Expander））と呼ばれる拡張デバイスが利用される。
【０００４】
ＥＸＰは、接続ポートとして複数の物理ポート（以下、ＰＨＹ）を有する。ＰＨＹは、ＳｅｒＤｅｓ（Serializer/Deserializer）などのシリアルパラレル変換回路を有する。ＥＸＰは、記憶装置への入出力を制御するコントローラモジュール（以下、ＣＭ（Controller Module））とＰＨＹとの間の経路を切替えてアクセス先となる記憶装置とＣＭとを接続する。
【０００５】
上記のように、拡張デバイスを介してコンピュータと接続デバイスとが接続されている場合、接続デバイスへのアクセス時にエラーが生じたとき、そのエラーの発生源が拡張デバイスにあるのか、接続デバイスにあるのかを特定する作業が行われる。
【０００６】
上述したストレージ装置の場合、エラーの発生源を特定する方法として、ＣＭからアクセス先の記憶装置にデータフレームを送信し、そのデータフレームに対する応答を参照してエラーの発生源を特定するループバック診断が利用されうる。また、ループバック診断により障害が検知されたデバイスにコネクション系フレーム（デバイス間のコネクションを確立する際に利用されるフレーム）を送信し、そのコネクション系フレームの応答に含まれる障害情報をさらに調査する診断方法が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２０１３−５１５９８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
拡張デバイスは、アクセス先となる接続デバイスに向けてコンピュータが送信したフレームを解釈し、そのフレームの宛先となる接続デバイスが接続されている接続ポートを選択してフレームを転送する。接続デバイスは、転送されたフレームを受信し、受信したフレームを解釈して応答などの処理を実行する。そのため、拡張デバイス又は接続デバイスにおいてフレームを解釈する論理回路に故障があるとコンピュータに応答が返らない。
【０００９】
なお、エラーカウンタが搭載されている拡張デバイスや接続デバイスでは、論理回路が正常であれば、受信したフレームに含まれるＣＲＣ（Cyclic Redundancy Check）などを利用してビットエラーを検出することができる。そのため、ビットエラーの検出回数やフレームの再総回数などをエラーカウンタでカウントすることで、そのカウント数から伝送品質の悪化などに起因するエラーの発生を検知することができる。
【００１０】
しかしながら、上述したストレージ装置における診断方法や上記のエラーカウンタを利用するエラー検知方法は、いずれも論理回路が正常にフレームを解釈できることを前提としている。そのため、これらの方法をそのまま適用しても、フレームに対する応答がない場合にエラーの発生源を特定することは難しい。そこで、本件発明者は、論理回路の故障など、フレームを解釈する機能の不具合に起因するエラーの発生源を特定する新たな仕組みについて検討を行った。
【００１１】
１つの側面によれば、本開示の目的は、伝送経路上の故障箇所を特定することができる制御装置、及びストレージ装置を提供することにある。
【課題を解決するための手段】
【００１２】
一態様によれば、複数の接続デバイスに至る複数の伝送経路を切り替える接続制御装置に対し、複数の接続デバイスのうちアクセス先となる接続デバイスとの間のコネクションを確立するためのフレームを送信する送信部と、接続制御装置と複数の接続デバイスとの間で複数の伝送経路のうち指定された伝送経路における故障の有無を診断する診断デバイスに対し、フレームに対する応答がタイムアウトになったときにフレームの伝送経路を指定して故障の有無を診断させ、診断結果に応じて接続制御装置に故障があるか、フレームの伝送経路にある接続デバイスに故障があるかを判定する制御部とを有する、制御装置が提供される。
【発明の効果】
【００１３】
本発明によれば、伝送経路上の故障箇所を特定することができる。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態に係る制御システムの一例を示した図である。
【図２】第２実施形態に係るストレージ装置の一例を示した図である。
【図３】第２実施形態に係るＩＯＭの一例を示した図である。
【図４】コネクションの確立処理について説明するためのシーケンス図である。
【図５】ＯＡＦの一例を示した図である。
【図６】第２実施形態に係るストレージ装置が経路異常の発生時に実行する故障箇所の特定処理の流れを示したシーケンス図である。
【図７】第２実施形態の一変形例（変形例＃１）に係るＩＯＭの一例を示した図である。
【図８】第２実施形態の一変形例（変形例＃１）に係るストレージ装置が経路異常の発生時に実行する故障箇所の特定処理の流れを示したシーケンス図である。
【図９】第２実施形態の一変形例（変形例＃２）に係るＩＯＭの一例を示した図である。
【図１０】第２実施形態の一変形例（変形例＃２）に係るストレージ装置が経路異常の発生時に実行する故障箇所の特定処理の流れを示したシーケンス図である。
【図１１】第２実施形態の一応用例としてＩＯＭの多段接続形態を示した図である。
【図１２】第２実施形態の一応用例に係るストレージ装置が経路異常の発生時に実行する故障箇所の特定処理の流れを示したフロー図である。
【発明を実施するための形態】
【００１５】
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
【００１６】
＜１．第１実施形態＞
図１を参照しながら、第１実施形態について説明する。
第１実施形態は、フレームの伝送経路上における故障箇所を特定する仕組みに関し、フレームを解釈する論理回路に故障が生じている場合に故障箇所の特定を可能にする技術に関する。図１は、第１実施形態に係る制御システムの一例を示した図である。図１に例示した制御システム１は、第１実施形態に係る制御システムの一例である。なお、ＥＸＰを介してＣＭと記憶装置とを接続するストレージ装置は、制御システム１の一例である。
【００１７】
図１に示すように、制御システム１は、制御装置１０、接続制御装置２０、スイッチ３０、接続デバイス４１、４２、４３、及び診断デバイス５０を有する。制御装置１０は、送信部１１及び制御部１２を有する。接続制御装置２０は、演算部２１及び切替え部２２を有する。
【００１８】
制御部１２、演算部２１、及び診断デバイス５０は、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などのプロセッサである。制御装置１０、接続制御装置２０、及び診断デバイス５０は、例えば、ＲＡＭ（Random Access Memory）やフラッシュメモリなどのメモリ（非図示）を有していてもよい。制御部１２、演算部２１、及び診断デバイス５０はメモリに記憶されたプログラムを実行する。
【００１９】
ＣＭは、制御装置１０の一例である。フレームの送受信機能を提供するＣＭの入出力インターフェース（以下、ＩＯＣ（Input Output Controller））は送信部１１の一例である。ＥＸＰは、接続制御装置２０の一例である。ＨＤＤやＲＡＩＤ装置などの記憶装置は、接続デバイス４１、４２、４３の一例である。なお、複数のＥＸＰを多段接続するカスケード構成の場合、ＥＸＰが接続デバイス４１、４２、４３の一例となりうる。
【００２０】
接続制御装置２０の演算部２１は、伝送経路を切替える切替え部２２を制御して、複数の接続デバイス４１、４２、４３に至る複数の伝送経路を切り替える。送信部１１は、接続制御装置２０に対し、複数の接続デバイス４１、４２、４３のうちアクセス先となる接続デバイス４１との間のコネクションを確立するためのフレームを送信する。
【００２１】
なお、制御装置１０から接続デバイス４１、４２、４３までの伝送経路がＳＡＳ（Serial Attached Small Computer System Interface）接続の場合、送信部１１は、例えば、ＯＡＦ（Open Address Frame）を接続制御装置２０に対して送信する。
【００２２】
演算部２１は、接続制御装置２０と複数の接続デバイス４１、４２、４３との間で複数の伝送経路のうち指定された伝送経路における故障の有無を診断する診断デバイス５０の動作を制御する。また、制御部１２は、演算部２１を制御し、演算部２１を介して診断デバイス５０の動作を制御する。
【００２３】
例えば、送信部１１により送信されたフレームに対する応答がタイムアウトになったとき、制御部１２は、演算部２１を制御し、そのフレームの伝送経路を指定して故障の有無を診断デバイス５０に診断させる。また、制御部１２は、その診断結果に応じて接続制御装置２０に故障があるか、フレームの伝送経路にある接続デバイスに故障があるかを判定する。
【００２４】
図１の例は、フレームの送信先が接続デバイス４１に設定されている。この場合、診断デバイス５０は、接続制御装置２０と接続デバイス４１との間で、接続デバイス４１に至る伝送経路における故障の有無を診断する。つまり、診断デバイス５０は、制御装置１０の側からみて接続デバイス４１の前段で故障があるか否かを診断する。
【００２５】
診断対象の伝送経路における故障が検出された場合、制御部１２は、接続制御装置２０に故障があると判定する。一方、診断対象の伝送経路における故障が検出されない場合、制御部１２は、接続デバイス４１に故障があると判定する。この判定方法を適用すれば、接続デバイス４１がフレームに対する応答を返せない状態でも故障箇所を判定することができる。そのため、論理回路の故障に対して故障箇所の特定が可能になる。
【００２６】
なお、接続制御装置２０と接続デバイス４１、４２、４３との間で診断デバイス５０に診断を実施させるために、図１に示すように、伝送経路を切替えるスイッチ３０を設けてもよい。この場合、接続制御装置２０の演算部２１は、スイッチ３０を制御して、複数の伝送経路のうち少なくとも１つの伝送経路を診断デバイス５０に至る代替経路に切り替えることができる。
【００２７】
例えば、制御部１２は、フレームに対する応答がタイムアウトになったとき、演算部２１を制御して、そのフレームの伝送経路を代替経路に切り替えさせる（図１のＡ：経路変更）。そして、制御部１２は、演算部２１を制御し、診断デバイス５０に対して代替経路におけるエラーの有無に基づいて故障の有無を診断させる（図１のＢ：診断）。
【００２８】
故障の有無を診断する方法は任意である。例えば、演算部２１は、送信側で内容に応じた処理が実行されるテストフレームを代替経路で伝送する（図１のＢ１：診断Ｔｘ）。また、診断デバイス５０は、受信側で内容に応じた処理が実行されるテストフレームを代替経路で伝送する（図１のＢ２：診断Ｒｘ）。そして、診断デバイス５０は、接続制御装置２０においてテストフレームの内容に応じた処理が実行されない場合に代替経路におけるエラーが生じたと診断する。
【００２９】
なお、制御装置１０から接続デバイス４１、４２、４３までの伝送経路がＳＡＳ接続の場合、ＯＡＦをテストフレームとして利用することができる。ＯＡＦには、送信先アドレス（Destination SAS Address）、送信元アドレス（Source SAS Address）、ＣＲＣなどの内容が含まれている。接続制御装置２０の側でＯＡＦの内容が正しく解釈されれば、所定の時間（例えば、ＡＷＴ（Arbitration Wait Time））内に応答（例えば、ＡＩＰ（Arbitration In Progress））が得られる。そのため、応答の有無などを監視することで、上述した診断ができる。
【００３０】
上記の説明では、説明の都合上、ＳＡＳ接続の例を示したが、第１実施形態の技術はＳＡＳ接続以外の伝送経路について適用可能である。例えば、ＦＣ（Fibre Channel）やＮＶＭｅ（Non-Volatile Memory express）などのインターフェースプロトコルで規定される伝送経路においても適用可能である。また、テストフレームの一例としてＯＡＦを示したが、診断対象がテストフレームの内容を解釈しているか否かを判断するために利用可能な内容の任意のフレームをテストフレームとして利用することができる。このような変形についても当然に第１実施形態の技術的範囲に属する。
【００３１】
以上、第１実施形態について説明した。
＜２．第２実施形態＞
次に、第２実施形態について説明する。第２実施形態は、フレームの伝送経路上における故障箇所を特定する仕組みに関し、フレームを解釈する論理回路に故障が生じている場合に故障箇所の特定を可能にする技術に関する。
【００３２】
［２−１．ストレージ装置］
図２を参照しながら、ストレージ装置１００について説明する。なお、図２に例示したストレージ装置１００は、第２実施形態に係るストレージ装置の一例である。図２は、第２実施形態に係るストレージ装置の一例を示した図である。
【００３３】
図２に示すように、ストレージ装置１００は、コントローラモジュール（ＣＭ）１０１、及びドライブエンクロージャ（ＤＥ（Drive Enclosure））１０２を有する。ＣＭ１０１は、ＤＥ１０２に対するデータの読み書きを制御する。また、ＣＭ１０１は、ＤＥ１０２のデータにアクセスするサーバ２００に接続される。
【００３４】
ＣＭ１０１は、チャネルアダプタ（ＣＡ（Channel Adapter））１１１、ＣＰＵ１１２、メモリ１１３、入出力コントローラ（ＩＯＣ（Input Output Controller））１１４、及びエキスパンダ（ＥＸＰ）１１５を有する。ＣＰＵ１１２は、例えば、メモリ１１３に格納されているプログラムに基づいて処理を実行しうる。
【００３５】
ＣＡ１１１は、ＣＭ１０１とサーバ２００とを接続するための通信インターフェースである。例えば、ストレージ装置１００とサーバ２００とがＦＣで接続される場合、ＣＡ１１１は、サーバ２００のＨＢＡ（Host Bus Adapter）や、サーバ２００とストレージ装置１００との間にあるファブリック（非図示）に接続されるＣＭ１０１へのインターフェースとなる。
【００３６】
ＣＰＵ１１２は、ＣＭ１０１の動作を制御する。また、ＣＰＵ１１２は、ＤＥ１０２のアクセス先への伝送経路を確立する処理（以下、コネクションの確立処理）の中でエラーが検出された場合、ＤＥ１０２に故障箇所の診断を実施させる。メモリ１１３は、例えば、ＣＰＵ１１２の動作を規定するプログラムや、ＣＰＵ１１２の処理中に発生するデータなどを格納する。メモリ１１３は、ＲＡＭ、ＨＤＤ、ＳＳＤ（Solid State Drive）、フラッシュメモリなどである。
【００３７】
ＩＯＣ１１４は、ＣＰＵ１１２がＤＥ１０２のデータにアクセスする際に、アクセス先との間でコネクションの確立処理を実行する。なお、コネクションの確立処理については、ＳＡＳ接続の場合を例に後段（後述する図４の説明を参照）において、さらに説明する。ＥＸＰ１１５は、ＨＤＤやＲＡＩＤ装置などの記憶装置を接続する拡張デバイスであり、図２の例ではＤＥ１０２が接続されている。
【００３８】
ＤＥ１０２は、入出力モジュール（ＩＯＭ（Input Output Module））１２１、及び記憶装置１２３、１２４を有する。ＩＯＭ１２１は、エキスパンダ（ＥＸＰ）１２２を有する。ＣＭ１０１のＥＸＰ１１５は、ＤＥ１０２のＥＸＰ１２２に接続される。記憶装置１２３、１２４は、例えば、ＨＤＤ、ＳＳＤ、ＲＡＩＤ装置などである。
【００３９】
ここで、図３を参照しながら、ＩＯＭ１２１について、さらに説明する。図３は、第２実施形態に係るＩＯＭの一例を示した図である。
図３に示すように、ＩＯＭ１２１は、ＰＬＤ（Programmable Logic Device）１２１ａ、診断回路１２１ｂ、スイッチ（ＳＷ）１２１ｃ、１２１ｄ、及びＥＸＰ１２２を有する。なお、診断回路１２１ｂは、例えば、後述する診断機能を組み込んだＦＰＧＡや、診断機能を規定するプログラムに基づいて動作するＣＰＵなどのプロセッサである。
【００４０】
ＰＬＤ１２１ａは、診断回路１２１ｂ、及びＳＷ１２１ｃ、１２１ｄに接続されている。また、ＰＬＤ１２１ａは、ＥＸＰ１２２の指示に応じてＳＷ１２１ｃ、１２１ｄを制御する。ＳＷ１２１ｃは、記憶装置１２３に至る伝送経路を診断回路１２１ｂに至る伝送経路（以下、代替経路）に切替えるスイッチである。ＳＷ１２１ｄは、記憶装置１２４に至る伝送経路を診断回路１２１ｂに至る代替経路に切替えるスイッチである。
【００４１】
ＰＬＤ１２１ａは、ＳＷ１２１ｃ、１２１ｄの少なくとも一方を制御して、ＥＸＰ１２２に指定された伝送経路を代替経路に切替える。診断回路１２１ｂは、代替経路を介してテストフレームを送受信し、テストフレームが正しく送受信できたか否かを確認することでＥＸＰ１２２における故障の有無を診断する。なお、ＳＡＳ接続の場合、テストフレームとしては、例えば、ＯＡＦを利用することができる。
【００４２】
ＥＸＰ１２２は、ＣＰＵ１２２ａ、メモリ１２２ｂ、クロスバースイッチ１２２ｃ、カウンタ１２２ｄ、１２２ｅ、及び物理ポート（ＰＨＹ）１２２ｆ、１２２ｇを有する。ＣＰＵ１２２ａは、ＥＸＰ１２２の動作を制御する。また、ＣＰＵ１２２ａは、ＰＬＤ１２１ａ及び診断回路１２１ｂを制御して上記の代替経路による診断を実施する。
【００４３】
メモリ１２２ｂは、例えば、ＲＡＭやフラッシュメモリなどである。メモリ１２２ｂには、例えば、ＣＰＵ１２２ａの動作を規定するプログラムが格納されうる。また、メモリ１２２ｂには、ＰＨＹ１２２ｆ、１２２ｇに接続されている記憶装置１２３、１２４の情報（伝送経路の情報）が格納される。例えば、伝送経路の情報は、記憶装置１２３、１２４のアドレスと、ＰＨＹ１２２ｆ、１２２ｇの識別子とを対応付ける情報である。
【００４４】
クロスバースイッチ１２２ｃは、ＣＭ１０１とＰＨＹ１２２ｆとの間の伝送経路と、ＣＭ１０１とＰＨＹ１２２ｇとの間の伝送経路とを切替えるスイッチである。クロスバースイッチ１２２ｃの切替え動作はＣＰＵ１２２ａが制御する。
【００４５】
カウンタ１２２ｄは、ＰＨＹ１２２ｆと記憶装置１２３との間を結ぶ伝送経路で生じたエラーの回数をカウントする。カウンタ１２２ｅは、ＰＨＹ１２２ｇと記憶装置１２４との間を結ぶ伝送経路で生じたエラーの回数をカウントする。
【００４６】
例えば、ＰＨＹ１２２ｆと記憶装置１２３との間を結ぶ伝送経路の環境が悪化し、ＰＨＹ１２２ｆから送信されたフレームにビットエラーが生じると、例えば、記憶装置１２３からＰＨＹ１２２ｆに対して再送要求やエラー通知が送られる。カウンタ１２２ｄは、このような再送要求やエラー通知の回数をカウントする。記憶装置１２３からＰＨＹ１２２ｆへと送信されたフレームにビットエラーが生じた場合についても同様である。
【００４７】
上記のように、カウンタ１２２ｄ、１２２ｅを設けることで、伝送経路の環境悪化に起因するエラーの発生を検出することができる。但し、ＰＨＹ１２２ｆ、１２２ｇ、記憶装置１２３、１２４の論理回路が故障し、ＣＲＣなどによる誤り検出などが実施できない場合、その故障により実際には発生しているエラーがカウンタ１２２ｄ、１２２ｅのカウント値に反映されないことがある。
【００４８】
上記のような故障が生じた場合、フレームに対する応答がＣＭ１０１に返らないため、タイムアウトが発生する。タイムアウトが発生すると、ＣＭ１０１のＣＰＵ１１２は、ＩＯＭ１２１のＥＸＰ１２２を制御して診断回路１２１ｂによる診断を実施する。
【００４９】
例えば、ＣＰＵ１１２は、ＥＸＰ１２２のＣＰＵ１２２ａに対し、タイムアウトが発生した伝送経路の情報を指定し、その伝送経路について診断を実施するように指示する診断指示を送信する。この診断指示に応じてＣＰＵ１２２ａは、ＰＬＤ１２１ａを制御して診断対象の伝送経路を代替経路に切替え、診断回路１２１ｂを制御して診断を実施する。これら診断の実施に関する処理などについて、以下でさらに説明する。
【００５０】
［２−２．処理の流れ］
診断の実施に関する処理について説明するに先立ち、まず、図４を参照しながら、ＳＡＳ接続におけるコネクションの確立処理について説明する。その後、図６を参照しながら、診断の実施に関する処理による故障箇所の特定について説明する。
【００５１】
（コネクションの確立処理）
図４を参照する。図４は、コネクションの確立処理について説明するためのシーケンス図である。なお、図４に関する説明の中で、図５を参照しながら、ＯＡＦの構造について述べる。図５は、ＯＡＦの一例を示した図である。
【００５２】
（Ｓ１０１、Ｓ１０２）ＩＯＣ１１４は、ＯＡＦの送信から応答までの時間を計測するタイマー（Open Timeout timer）をスタートする。また、ＩＯＣ１１４は、ＯＡＦをＥＸＰ１２２に送信する。ＩＯＣ１１４が送信したＯＡＦは、ＥＸＰ１２２のＣＰＵ１２２ａにより受信される。
【００５３】
（Ｓ１０３）ＯＡＦを受信したＥＸＰ１２２のＣＰＵ１２２ａは、ＡＩＰ（Normal）をＩＯＣ１１４に送信する。ＣＰＵ１２２ａが送信したＡＩＰ（Normal）は、ＩＯＣ１１４により受信される。
【００５４】
ＩＯＣ１１４は、タイマーの値を参照し、ＯＡＦの送信からＡＩＰ（Normal）の受信までに経過した時間が閾値（例えば、1 ms）以内であるかを判定する。経過した時間が閾値を超過している場合、ＩＯＣ１１４は、タイムアウトによるエラーの発生をサーバ２００に通知し、コネクションの確立処理を終了する。
【００５５】
（Ｓ１０４、Ｓ１０５）ＥＸＰ１２２のＣＰＵ１２２ａは、ＯＡＦの内容を参照し、コネクションの対象となるデバイス（以下、対象デバイス；この例では記憶装置１２３）が接続されているＰＨＹ（以下、対象ＰＨＹ；この例ではＰＨＹ１２２ｆ）を決定する。
【００５６】
ＯＡＦには、図５に示すように、対象デバイスのアドレス情報（DESTINATION SAS ADDRESS）が含まれる。また、ＥＸＰ１２２のメモリ１２２ｂには、ＰＨＹ１２２ｆ、１２２ｇを識別する識別子と、ＰＨＹ１２２ｆ、１２２ｇにそれぞれ接続されているデバイス（記憶装置１２３、１２４）のアドレス情報とを対応付ける伝送経路の情報が格納されている。
【００５７】
そのため、ＣＰＵ１２２ａは、対象デバイスのアドレス情報をＯＡＦから読み出し、読み出したアドレス情報に対応するＰＨＹの識別子を伝送経路の情報から抽出することで対象ＰＨＹを決定することができる。なお、ＯＡＦには、ＯＡＦの送信元を示すアドレス情報（SOURCE SAS ADDRESS）、ＡＩＰのタイムアウトの判定に用いる閾値（ARBITRATION WAIT TIME）、ＯＡＦの誤り検出に用いるＣＲＣなどが含まれる。
【００５８】
対象ＰＨＹを決定したＣＰＵ１２２ａは、ＡＩＰ（Waiting on Device）をＩＯＣ１１４に送信する。ＩＯＣ１１４は、ＡＩＰ（Waiting on Device）の受信により、対象ＰＨＹの決定が完了したことを認識できる。
【００５９】
（Ｓ１０６）ＥＸＰ１２２のＣＰＵ１２２ａは、クロスバースイッチ１２２ｃを制御して伝送経路の対象ＰＨＹ（ＰＨＹ１２２ｆ）に切替える。また、ＣＰＵ１２２ａは、ＩＯＣ１１４から受信したＯＡＦをＰＨＹ１２２ｆに入力し、ＰＨＹ１２２ｆを通じて記憶装置１２３にＯＡＦを送信する。このとき、ＰＨＹ１２２ｆに故障がある場合には、ＯＡＦが記憶装置１２３に正しく送信されないことがある。また、記憶装置１２３の受信回路に故障がある場合には、記憶装置１２３でＯＡＦが正しく受信されないことがある。
【００６０】
（Ｓ１０７）ＯＡＦを正しく受信できた記憶装置１２３は、ＯＡＦに対する応答（ＯＡ（Open Accept））をＥＸＰ１２２に送信する。このとき、記憶装置１２３の送信回路に故障がある場合には、記憶装置１２３からＯＡが正しく送信されないことがある。また、ＰＨＹ１２２ｆに故障がある場合には、ＥＸＰ１２２でＯＡが正しく受信されないことがある。なお、ＣＲＣによる誤り検出の結果（ビットエラーの発生）などに応じて記憶装置１２３からＥＸＰ１２２に再送要求やエラー通知が送られることがある。
【００６１】
（Ｓ１０８、Ｓ１０９）ＯＡを正しく受信できたＥＸＰ１２２のＣＰＵ１２２ａは、記憶装置１２３から受信したＯＡをＩＯＣ１１４に送信する。ＯＡを受信したＩＯＣ１１４は、コネクションが完了したことを認識し、記憶装置１２３に対するデータの読み書き（Read/Write）処理を開始する。
【００６２】
上記のように、対象ＰＨＹ（ＰＨＹ１２２ｆ）の送信機能又は受信機能や、対象デバイス（記憶装置１２３）の送信回路又は受信回路に故障があると、ＯＡＦやＯＡが正しく送受信されないことがある。例えば、対象デバイスの送信回路や受信回路の中で、ＯＡＦやＯＡの内容を解釈する論理回路に故障がある場合、その内容に応じた処理が実行されず、待機（Idle）信号を送り続けるなどの処理が実行されることがある。
【００６３】
物理的な伝送路品質の悪化に伴うビットエラーが生じている場合、カウンタ１２２ｄのカウント値を参照すれば、エラーの原因を特定できる。一方、上記の例のように対象ＰＨＹが待機信号を受信し続けていてもカウンタ１２２ｄのカウント値はインクリメントされないため、カウンタ１２２ｄのカウント値を参照しても原因の特定には至らない。また、対象デバイスの論理回路が故障している場合、障害情報をＯＡＦの応答に含めて送信する処理を対象デバイスに要求しても、その応答は期待できない。
【００６４】
ＩＯＣ１１４は、ＯＡＦに対する対象デバイスからの応答としてＯＡの受信を期待する。また、ＩＯＣ１１４は、タイマーを用いてＯＡＦの送信からＯＡの受信までの経過時間を監視し、経過時間が所定の時間（例えば、20 ms）を経過した場合にタイムアウトと判定する。なお、経過時間は、ＩＯＣ１１４によるＡＩＰ（Waiting on Device）の受信時からＯＡの受信までの時間としてもよい。この場合、ＩＯＣ１１４は、ＡＩＰ（Waiting on Device）の受信時にタイマーをリセットし、ＯＡの受信までの経過時間を計測する。
【００６５】
ＯＡの受信についてタイムアウトが生じた場合、例えば、ＩＯＣ１１４は、カウンタ１２２ｄのカウント値をＥＸＰ１２２に問い合わせる。カウント値が所定の閾値（例えば、50回）を超過している場合、ＩＯＣ１１４は、ＥＸＰ１２２と記憶装置１２３との間の物理的な伝送路品質の悪化が原因であると特定できる。一方、カウント値が閾値を超過していない場合、ＩＯＣ１１４は、ＥＸＰ１２２の送信機能及び受信機能、記憶装置１２３の送信回路及び受信回路のいずれが故障しているかを直ちに特定することは困難である。
【００６６】
例えば、対象デバイスに至る経路を切り離して（閉塞して）故障箇所の診断を再実施する方法などを駆使して故障箇所の特定を行うことは可能であるが、不要な部品の交換が生じることや、故障箇所の特定に時間がかかるなどの弊害が生じうる。このような弊害を回避するため、第２実施形態に係るストレージ装置１００は、図６に示す故障箇所の特定処理を実行する。
【００６７】
（故障箇所の特定）
図６を参照しながら、ストレージ装置１００による故障箇所の特定処理について説明する。図６は、第２実施形態に係るストレージ装置が経路異常の発生時に実行する故障箇所の特定処理の流れを示したシーケンス図である。
【００６８】
（Ｓ１１１）ＯＡＦに対応する対象デバイス（この例では記憶装置１２３）の応答（ＯＡ）がタイムアウトになった場合（経路異常を検出した場合）、ＩＯＣ１１４は、Ｓ１１２以降に処理を進める。例えば、ＯＡを受信するまでに経過した経過時間ｔが予め設定された閾値ｔｈ（例えば、20 ms）を超過した場合、ＩＯＣ１１４は、Ｓ１１２以降に処理を進める。
【００６９】
（Ｓ１１２、Ｓ１１３）ＩＯＣ１１４は、タイムアウトが生じた伝送経路（以下、異常経路）の情報（以下、異常経路情報）をＥＸＰ１２２のＣＰＵ１２２ａに送信する。異常経路情報は、対象ＰＨＹの情報（ＰＨＹの識別子など）を含み、例えば、ＳＥＳ（SCSI Enclosure Service）情報を利用して送信される。この例では、ＰＨＹ１２２ｆの識別子が異常経路情報に含まれる。また、ＩＯＣ１１４は、異常経路情報と共に、異常経路における故障箇所の診断を指示する診断開始コマンドをＣＰＵ１２２ａに送信する。
【００７０】
（Ｓ１１４）診断開始コマンドを受信したＥＸＰ１２２のＣＰＵ１２２ａは、ＩＯＣ１１４から受信した異常経路情報を参照して対象ＰＨＹを特定する。そして、ＣＰＵ１２２ａは、異常経路（対象ＰＨＹ）を指定し、その異常経路に対応するスイッチ（この例ではＳＷ１２１ｃ）を診断回路１２１ｂに接続するようにＰＬＤ１２１ａに対して指示する（ＳＷ切替え指示）。
【００７１】
（Ｓ１１５、Ｓ１１６）ＳＷ切替え指示を受けたＰＬＤ１２１ａは、ＳＷ１２１ｃを制御し、対象ＰＨＹの経路（この例ではＰＨＹ１２２ｆと記憶装置１２３とを結ぶ伝送経路）を診断回路１２１ｂに接続する。そして、ＰＬＤ１２１ａは、ＳＷ１２１ｃの切替えが完了した旨（切替え完了）をＣＰＵ１２２ａに通知する。
【００７２】
（Ｓ１１７）ＰＬＤ１２１ａから切替え完了の通知を受けたＣＰＵ１２２ａは、診断回路１２１ｂに対して診断の開始を指示する（診断開始指示）。
（Ｓ１１８）診断開始指示を受けた診断回路１２１ｂは、テストフレームＡをＰＨＹ１２２ｆに送信する。テストフレームＡの内容は任意であるが、例えば、ＯＡＦを利用することができる。ＰＨＹ１２２ｆで正しく受信されたテストフレームＡは、ＰＨＹ１２２ｆからＣＰＵ１２２ａに入力される。なお、テストフレームＡの受信成功を示す通知がＰＨＹ１２２ｆからＣＰＵ１２２ａに入力される仕組みに変形してもよい。
【００７３】
（Ｓ１１９）ＰＨＹ１２２ｆでテストフレームＡが正しく受信された場合、ＣＰＵ１２２ａは、ＰＨＹ１２２ｆにテストフレームＢを入力する。ＰＨＹ１２２ｆは、ＣＰＵ１２２ａから入力されたテストフレームＢを診断回路１２１ｂに送信する。テストフレームＢの内容は任意であるが、例えば、ＯＡＦを利用することができる。
【００７４】
（Ｓ１２０）ＰＨＹ１２２ｆにおいてテストフレームＡの受信が正常にできない場合、テストフレームＢが診断回路１２１ｂに送信されない。ＰＨＹ１２２ｆにおいてテストフレームＢの送信が正常にできない場合も、テストフレームＢが診断回路１２１ｂに送信されない。これらの場合、診断回路１２１ｂは、テストフレームＢを受信できない。
【００７５】
診断回路１２１ｂは、テストフレームＢを受信できた場合、ＰＨＹ１２２ｆが故障箇所でない旨の診断結果（ＧＯＯＤ）をＥＸＰ１２２のＣＰＵ１２２ａに送信する。一方、テストフレームＢを受信できずに、テストフレームＡの送信からの経過時間が所定の時間（例えば、5 ms）を超過した場合、診断回路１２１ｂは、ＰＨＹ１２２ｆが故障箇所である旨の診断結果（ＮＧ）をＣＰＵ１２２ａに送信する。ＣＰＵ１２２ａは、診断回路１２１ｂから受信した診断結果をメモリ１２２ｂに保存する。
【００７６】
（Ｓ１２１、Ｓ１２２）ＩＯＣ１１４は、ＥＸＰ１２２のＣＰＵ１２２ａに対して診断結果を要求する（診断結果の要求）。例えば、ＩＯＣ１１４は、診断開始コマンドの送信から所定の時間（例えば、80 ms）が経過したタイミングでＣＰＵ１２２ａに診断結果を要求する。この要求を受けたＣＰＵ１２２ａは、メモリ１２２ｂに保存していた診断結果をＩＯＣ１１４に送信する。
【００７７】
（Ｓ１２３）ＩＯＣ１１４は、ＣＰＵ１２２ａから受信した診断結果がＧＯＯＤの場合、対象デバイスである記憶装置１２３を故障箇所として特定する。一方、ＣＰＵ１２２ａから受信した診断結果がＮＧの場合、ＩＯＣ１１４は、ＥＸＰ１２２のＰＨＹ１２２ｆを故障箇所として特定する。
【００７８】
（Ｓ１２４、Ｓ１２５）ＩＯＣ１１４は、特定した故障箇所の切り離しをＥＸＰ１２２のＣＰＵ１２２ａに要求する。この要求に応じて、ＣＰＵ１２２ａは、故障箇所を切り離す（切り離し制御）。なお、ＩＯＣ１１４は、特定した故障箇所の情報及び切り離し制御の完了を示す情報をＣＭ１０１のＣＰＵ１１２に入力する。ＣＰＵ１１２は、ＣＡ１１１を介してＩＯＣ１１４から入力された情報をサーバ２００に提供する。
【００７９】
以上、第２実施形態に係るストレージ装置１００及びストレージ装置１００が実行する処理の流れについて説明した。
［２−３．変形例等］
ここで、第２実施形態の変形例等について説明する。
【００８０】
（変形例＃１：未使用ＰＨＹの利用）
上記の説明では、説明の都合上、全てのＰＨＹ（ＰＨＹ１２２ｆ、１２２ｇ）にデバイス（記憶装置１２３、１２４）が接続されていた（図３を参照）。そのため、診断回路１２１ｂは、テストフレームＢの受信結果に応じて診断を実施し、その診断結果をＥＸＰ１２２のＣＰＵ１２２ａに返していた。
【００８１】
しかし、実際にはデバイスが接続されていないＰＨＹ（未使用ＰＨＹ）が存在することもある。例えば、図７に示すように、ＥＸＰ１２２に未使用ＰＨＹ（ＰＨＹ１２２ｙ）が存在することがある。図７は、第２実施形態の一変形例（変形例＃１）に係るＩＯＭの一例を示した図である。このように未使用ＰＨＹがある場合には、未使用ＰＨＹを利用して診断の流れを簡略化することができる。変形例＃１は、この簡略化した仕組みに関する。
【００８２】
なお、ＰＨＹ１２２ｙは、これまで説明してきたＰＨＹ１２２ｆ、１２２ｇと同じ機能を有する。また、ＰＨＹ１２２ｙとクロスバースイッチ１２２ｃとの間にはカウンタ１２２ｘが設けられる。カウンタ１２２ｘは、カウンタ１２２ｄ、１２２ｅと同じ機能を有する。また、ＰＨＹ１２２ｙのデバイス側には伝送経路を診断回路１２１ｂに切替えるＳＷ１２１ｚが設けられる。ＳＷ１２１ｚは、ＳＷ１２１ｃ、１２１ｄと同じ機能を有する。
【００８３】
図７に示したＩＯＭ１２１は、例えば、図８に示す処理の流れに沿って故障箇所を特定する。図８は、第２実施形態の一変形例（変形例＃１）に係るストレージ装置が経路異常の発生時に実行する故障箇所の特定処理の流れを示したシーケンス図である。なお、図８の例では、対象ＰＨＹをＰＨＹ１２２ｆ、未使用ＰＨＹをＰＨＹ１２２ｙとしている。
【００８４】
（Ｓ２０１）ＯＡＦに対応する対象デバイス（この例では記憶装置１２３）の応答（ＯＡ）がタイムアウトになった場合（経路異常を検出した場合）、ＩＯＣ１１４は、Ｓ２０２以降に処理を進める。例えば、ＯＡを受信するまでに経過した経過時間ｔが予め設定された閾値ｔｈ（例えば、20 ms）を超過した場合、ＩＯＣ１１４は、Ｓ２０２以降に処理を進める。
【００８５】
（Ｓ２０２、Ｓ２０３）ＩＯＣ１１４は、タイムアウトが生じた伝送経路（異常経路）の情報（異常経路情報）をＥＸＰ１２２のＣＰＵ１２２ａに送信する。異常経路情報は、対象ＰＨＹの情報（ＰＨＹの識別子など）を含み、例えば、ＳＥＳ情報を利用して送信される。この例では、ＰＨＹ１２２ｆの識別子が異常経路情報に含まれる。また、ＩＯＣ１１４は、異常経路情報と共に、異常経路における故障箇所の診断を指示する診断開始コマンドをＣＰＵ１２２ａに送信する。
【００８６】
（Ｓ２０４）診断開始コマンドを受信したＥＸＰ１２２のＣＰＵ１２２ａは、ＩＯＣ１１４から受信した異常経路情報を参照して対象ＰＨＹを特定する。そして、ＣＰＵ１２２ａは、異常経路（対象ＰＨＹ）を指定し、その異常経路に対応するスイッチ（この例ではＳＷ１２１ｃ）を診断回路１２１ｂに接続するようにＰＬＤ１２１ａに指示する（ＳＷ切替え指示）。
【００８７】
（Ｓ２０５、Ｓ２０６）ＳＷ切替え指示を受けたＰＬＤ１２１ａは、ＳＷ１２１ｃを制御し、対象ＰＨＹの経路（この例ではＰＨＹ１２２ｆと記憶装置１２３とを結ぶ伝送経路）を診断回路１２１ｂに接続する。また、ＰＬＤ１２１ａは、未使用ＰＨＹに対応するスイッチ（この例ではＳＷ１２１ｚ）を制御し、未使用ＰＨＹのデバイス側に位置する経路を診断回路１２１ｂに接続する。そして、ＰＬＤ１２１ａは、切替え完了をＣＰＵ１２２ａに通知する。
【００８８】
（Ｓ２０７、Ｓ２０８）ＰＬＤ１２１ａから切替え完了の通知を受けたＣＰＵ１２２ａは、診断回路１２１ｂに対して診断の開始を指示する（診断開始指示）。そして、ＣＰＵ１２２ａは、ＰＨＹ１２２ｆにテストフレームを入力する。ＰＨＹ１２２ｆは、ＣＰＵ１２２ａから入力されたテストフレームを診断回路１２１ｂに送信する。テストフレームの内容は任意であるが、例えば、ＯＡＦを利用することができる。
【００８９】
（Ｓ２０９）診断回路１２１ｂは、ＰＨＹ１２２ｆから受信したテストフレームを未使用ＰＨＹ（ＰＨＹ１２２ｙ）に送信する。このとき、診断回路１２１ｂは、テストフレームの内容を解釈せず、そのままＰＨＹ１２２ｙに転送する。ＰＨＹ１２２ｙで受信されたテストフレームは、ＰＨＹ１２２ｙからＣＰＵ１２２ａに入力される。なお、テストフレームの受信を示す通知がＰＨＹ１２２ｙからＣＰＵ１２２ａに入力される仕組みに変形してもよい。
【００９０】
ＣＰＵ１２２ａは、ＰＨＹ１２２ｙでテストフレームを受信できた場合、ＰＨＹ１２２ｆが故障箇所でない旨の診断結果（ＧＯＯＤ）をメモリ１２２ｂに保存する。一方、テストフレームの送信からの経過時間が所定の時間（例えば、5 ms）を超過してもテストフレームが受信できない場合、ＣＰＵ１２２ａは、ＰＨＹ１２２ｆが故障箇所である旨の診断結果（ＮＧ）をメモリ１２２ｂに保存する。
【００９１】
（Ｓ２１０、Ｓ２１１）ＩＯＣ１１４は、ＥＸＰ１２２のＣＰＵ１２２ａに対して診断結果を要求する（診断結果の要求）。例えば、ＩＯＣ１１４は、診断開始コマンドの送信から所定の時間（例えば、80 ms）が経過したタイミングでＣＰＵ１２２ａに診断結果を要求する。この要求を受けたＣＰＵ１２２ａは、メモリ１２２ｂに保存していた診断結果をＩＯＣ１１４に送信する。
【００９２】
（Ｓ２１２）ＩＯＣ１１４は、ＣＰＵ１２２ａから受信した診断結果がＧＯＯＤの場合、対象デバイスである記憶装置１２３を故障箇所として特定する。一方、ＣＰＵ１２２ａから受信した診断結果がＮＧの場合、ＩＯＣ１１４は、ＥＸＰ１２２のＰＨＹ１２２ｆを故障箇所として特定する。
【００９３】
（Ｓ２１３、Ｓ２１４）ＩＯＣ１１４は、特定した故障箇所の切り離しをＥＸＰ１２２のＣＰＵ１２２ａに要求する。この要求に応じて、ＣＰＵ１２２ａは、故障箇所を切り離す（切り離し制御）。なお、ＩＯＣ１１４は、特定した故障箇所の情報及び切り離し制御の完了を示す情報をＣＭ１０１のＣＰＵ１１２に入力する。ＣＰＵ１１２は、ＣＡ１１１を介してＩＯＣ１１４から入力された情報をサーバ２００に提供する。
【００９４】
以上、変形例＃１に係るストレージ装置１００及びストレージ装置１００が実行する処理の流れについて説明した。変形例＃１によれば、診断回路１２１ｂはテストフレームの内容を理解せずに未使用ＰＨＹに転送するだけで済むため、診断回路１２１ｂの機能を簡略化することができる。
【００９５】
（変形例＃２：インテリジェントスイッチ（ｉＳＷ）の利用）
次に、他の変形例（変形例＃２）について説明する。
変形例＃１は未使用ＰＨＹを利用して診断回路１２１ｂの機能を簡略化する仕組みであった。一方、変形例＃２は、診断回路１２１ｂに伝送経路を切替えるスイッチ（ＳＷ１２１ｃなど）にフレームの内容を解釈する機能を搭載し、診断回路１２１ｂを省略する仕組みに関する。以下、このような機能を搭載したスイッチをインテリジェントスイッチ（以下、ｉＳＷ）と呼ぶことにする。
【００９６】
変形例＃２に係るＩＯＭ１２１は、図９のように変形される。図９は、第２実施形態の一変形例（変形例＃２）に係るＩＯＭの一例を示した図である。変形例＃２に係るＩＯＭ１２１は、ＳＷ１２１ｃ、１２１ｄの代わりに、ｉＳＷ１２１ｖ、１２１ｗが設けられている点が図３のＩＯＭ１２１と異なる。
【００９７】
ｉＳＷ１２１ｖは、ＰＨＹ１２２ｆと記憶装置１２３との間の伝送経路に設けられ、通常の伝送経路とループバック経路とを切替える機能を有する。通常の伝送経路は、ＰＨＹ１２２ｆの送信（Ｔｘ）ポートと記憶装置１２３の受信ポートとを結ぶ経路、及び記憶装置１２３の送信ポートとＰＨＹ１２２ｆの受信（Ｒｘ）ポートとを結ぶ経路である。一方、ループバック経路は、ＰＨＹ１２２ｆの送信（Ｔｘ）ポートと受信（Ｒｘ）ポートとを直接結ぶ経路である。
【００９８】
ｉＳＷ１２１ｗは、ＰＨＹ１２２ｇと記憶装置１２４とを結ぶ通常の伝送経路と、ＰＨＹ１２２ｇの送信（Ｔｘ）ポートと受信（Ｒｘ）ポートとを結ぶループバック経路とを切替える機能を有する。ｉＳＷ１２１ｖ、１２１ｗにおける経路の切替えは、ＰＬＤ１２１ａが制御する。また、ＰＬＤ１２１ａによる経路の切替え制御は、ＥＸＰ１２２のＣＰＵ１２２ａによる指示に基づいて実施される。
【００９９】
図９に示したＩＯＭ１２１は、例えば、図１０に示す処理の流れに沿って故障箇所を特定する。図１０は、第２実施形態の一変形例（変形例＃２）に係るストレージ装置が経路異常の発生時に実行する故障箇所の特定処理の流れを示したシーケンス図である。なお、図１０の例では、対象ＰＨＹをＰＨＹ１２２ｆとしている。
【０１００】
（Ｓ３０１）ＯＡＦに対応する対象デバイス（この例では記憶装置１２３）の応答（ＯＡ）がタイムアウトになった場合（経路異常を検出した場合）、ＩＯＣ１１４は、Ｓ３０２以降に処理を進める。例えば、ＯＡを受信するまでに経過した経過時間ｔが予め設定された閾値ｔｈ（例えば、20 ms）を超過した場合、ＩＯＣ１１４は、Ｓ３０２以降に処理を進める。
【０１０１】
（Ｓ３０２、Ｓ３０３）ＩＯＣ１１４は、タイムアウトが生じた伝送経路（異常経路）の情報（異常経路情報）をＥＸＰ１２２のＣＰＵ１２２ａに送信する。異常経路情報は、対象ＰＨＹの情報（ＰＨＹの識別子など）を含み、例えば、ＳＥＳ情報を利用して送信される。この例では、ＰＨＹ１２２ｆの識別子が異常経路情報に含まれる。また、ＩＯＣ１１４は、異常経路情報と共に、異常経路における故障箇所の診断を指示する診断開始コマンドをＣＰＵ１２２ａに送信する。
【０１０２】
（Ｓ３０４）診断開始コマンドを受信したＥＸＰ１２２のＣＰＵ１２２ａは、ＩＯＣ１１４から受信した異常経路情報を参照して対象ＰＨＹを特定する。そして、ＣＰＵ１２２ａは、異常経路（対象ＰＨＹ）を指定し、その異常経路に対応するスイッチ（この例ではｉＳＷ１２１ｖ）をループバック経路に切替えるようにＰＬＤ１２１ａに指示する（ＳＷ切替え指示）。
【０１０３】
（Ｓ３０５、Ｓ３０６）ＳＷ切替え指示を受けたＰＬＤ１２１ａは、ｉＳＷ１２１ｖを制御し、対象ＰＨＹの経路（この例ではＰＨＹ１２２ｆと記憶装置１２３とを結ぶ伝送経路）をループバック経路に切替える。そして、ＰＬＤ１２１ａは、切替え完了をＣＰＵ１２２ａに通知する。
【０１０４】
（Ｓ３０７、Ｓ３０８）ＰＬＤ１２１ａから切替え完了の通知を受けたＣＰＵ１２２ａは、ｉＳＷ１２１ｖに対して診断の開始を指示する（診断開始指示）。そして、ＣＰＵ１２２ａは、ＰＨＹ１２２ｆにテストフレームを入力する。ＰＨＹ１２２ｆは、ＣＰＵ１２２ａから入力されたテストフレームをｉＳＷ１２１ｖに送信する。テストフレームの内容は任意であるが、例えば、ＯＡＦを利用することができる。
【０１０５】
（Ｓ３０９）ｉＳＷ１２１ｖは、ＰＨＹ１２２ｆから送信されたテストフレームを受信できた場合、ＰＨＹ１２２ｆが故障箇所でない旨の診断結果（ＧＯＯＤ）をＥＸＰ１２２のＣＰＵ１２２ａに送信する。一方、診断開始指示を受けてからの経過時間が所定の時間（例えば、5 ms）を超過してもテストフレームが受信できない場合、ｉＳＷ１２１ｖは、ＰＨＹ１２２ｆが故障箇所である旨の診断結果（ＮＧ）をＣＰＵ１２２ａに送信する。ＣＰＵ１２２ａは、ｉＳＷ１２１ｖから受信した診断結果をメモリ１２２ｂに保存する。
【０１０６】
（Ｓ３１０、Ｓ３１１）ＩＯＣ１１４は、ＥＸＰ１２２のＣＰＵ１２２ａに対して診断結果を要求する（診断結果の要求）。例えば、ＩＯＣ１１４は、診断開始コマンドの送信から所定の時間（例えば、80 ms）が経過したタイミングでＣＰＵ１２２ａに診断結果を要求する。この要求を受けたＣＰＵ１２２ａは、メモリ１２２ｂに保存していた診断結果をＩＯＣ１１４に送信する。
【０１０７】
（Ｓ３１２）ＩＯＣ１１４は、ＣＰＵ１２２ａから受信した診断結果がＧＯＯＤの場合、対象デバイスである記憶装置１２３を故障箇所として特定する。一方、ＣＰＵ１２２ａから受信した診断結果がＮＧの場合、ＩＯＣ１１４は、ＥＸＰ１２２のＰＨＹ１２２ｆを故障箇所として特定する。
【０１０８】
（Ｓ３１３、Ｓ３１４）ＩＯＣ１１４は、特定した故障箇所の切り離しをＥＸＰ１２２のＣＰＵ１２２ａに要求する。この要求に応じて、ＣＰＵ１２２ａは、故障箇所を切り離す（切り離し制御）。なお、ＩＯＣ１１４は、特定した故障箇所の情報及び切り離し制御の完了を示す情報をＣＭ１０１のＣＰＵ１１２に入力する。ＣＰＵ１１２は、ＣＡ１１１を介してＩＯＣ１１４から入力された情報をサーバ２００に提供する。
【０１０９】
以上、変形例＃２に係るストレージ装置１００及びストレージ装置１００が実行する処理の流れについて説明した。変形例＃２によれば、ｉＳＷがＳＡＳプロトコルに従ってフレームの内容を解釈するため、診断回路１２１ｂを設けずに済み、回路規模の低減などに寄与する。なお、Ｓ３０９で診断結果をＣＰＵ１２２ａに返す代わりに、テストフレームに対する応答をＰＨＹ１２２ｆに返し、ＰＨＹ１２２ｆによる応答の受信成否に応じてＣＰＵ１２２ａが診断する仕組みに変形してもよい。
【０１１０】
（応用例：多段接続への応用）
これまで、説明の都合上、ＥＸＰ１２２に記憶装置１２３、１２４を直接接続する形態を例に説明を進めてきたが、ＤＥを多段接続するカスケード接続型のシステムに第２実施形態の技術を応用することもできる。一応用例として、図１１にＩＯＭを多段接続する形態を示した。図１１は、第２実施形態の一応用例としてＩＯＭの多段接続形態を示した図である。
【０１１１】
図１１の例は、これまで説明してきたＩＯＭ１２１のＥＸＰ１２２に対し、記憶装置１２４の代わりにＩＯＭ２２１を接続するカスケード接続型のシステムを示している。なお、ＩＯＭ２２１は、ＰＬＤ２２１ａ、診断回路２２１ｂ、ＳＷ２２１ｃ、２２１ｄ、及びＥＸＰ２２２を有する。また、ＰＬＤ２２１ａ、診断回路２２１ｂ、ＳＷ２２１ｃ、２２１ｄ、及びＥＸＰ２２２は、それぞれＰＬＤ１２１ａ、診断回路１２１ｂ、ＳＷ１２１ｃ、１２１ｄ、及びＥＸＰ１２２と同じ機能を有する。ＥＸＰ２２２には、記憶装置２２３、２２４が接続されている。
【０１１２】
図１１に例示したシステムの場合、故障箇所の特定処理は図１２のようになる。図１２は、第２実施形態の一応用例に係るストレージ装置が経路異常の発生時に実行する故障箇所の特定処理の流れを示したフロー図である。
【０１１３】
（Ｓ４０１、Ｓ４０２）タイムアウトが発生すると、ＩＯＣ１１４は、診断対象の経路（以下、対象経路）の最下段にあるＥＸＰ（最下段ＥＸＰ；この例ではＥＸＰ２２２）に診断の実施を指示する（診断指示）。この診断指示を受けた最下段ＥＸＰは診断（図６のＳ１１４からＳ１２２を参照）を実施する。
【０１１４】
（Ｓ４０３）ＩＯＣ１１４は、最下段ＥＸＰから受けた診断結果に基づいて最下段ＥＸＰに異常があるか（故障箇所が最下段ＥＸＰであるか）否かを判定する。最下段ＥＸＰに異常がある場合、処理はＳ４０４へと進む。一方、最下段ＥＸＰに異常がない場合、処理はＳ４０５へと進む。
【０１１５】
（Ｓ４０４）ＩＯＣ１１４は、故障箇所が最下段ＥＸＰ（ＥＸＰ２２２）であると判定する。Ｓ４０４の処理が完了すると、図１２に示した一連の処理は終了する。
（Ｓ４０５、Ｓ４０６）ＩＯＣ１１４は、対象経路の次段にあるＥＸＰ（次段ＥＸＰ；この例ではＥＸＰ１２２）に診断の実施を指示する（診断指示）。つまり、対象経路に沿ってカスケード接続された最下段のＥＸＰから順に、１つずつ上位の段にあるＥＸＰに診断対象を移しながら処理が進められる。この診断指示を受けた次段ＥＸＰは診断（図６のＳ１１４からＳ１２２を参照）を実施する。
【０１１６】
（Ｓ４０７）ＩＯＣ１１４は、次段ＥＸＰから受けた診断結果に基づいて次段ＥＸＰに異常があるか（故障箇所が現在の次段ＥＸＰであるか）否かを判定する。次段ＥＸＰに異常がある場合、処理はＳ４０８へと進む。一方、次段ＥＸＰに異常がない場合、処理はＳ４０９へと進む。
【０１１７】
（Ｓ４０８）ＩＯＣ１１４は、故障箇所が現在の次段ＥＸＰ（ＥＸＰ１２２）であると判定する。Ｓ４０８の処理が完了すると、図１２に示した一連の処理は終了する。
（Ｓ４０９）ＩＯＣ１１４は、経路上の全ＥＸＰを診断し終えたか否かを判定する。対象経路にある全てのＥＸＰについて診断が終了している場合、処理はＳ４１０へと進む。一方、未診断のＥＸＰが存在する場合、処理はＳ４０５へと進む。
【０１１８】
（Ｓ４１０）ＩＯＣ１１４は、故障箇所が最下段ＥＸＰ（ＥＸＰ２２２）に接続されている記憶装置（例えば、記憶装置２２３）であると判定する。Ｓ４１０の処理が完了すると、図１２に示した一連の処理は終了する。
【０１１９】
以上、カスケード接続型のシステムへの応用例について説明した。なお、上述した変形例＃１、＃２をこの応用例に適用することもできる。その場合、図１１のシステムにおけるスイッチ、及び図１２における診断の実施方法が主に変形される。
【０１２０】
（その他：他のインターフェースへの適用）
これまで、説明の都合上、ＳＡＳ接続の伝送経路における故障箇所の診断方法について説明してきたが、例えば、ＦＣやＮＶＭｅなどのプロトコルで規定される接続形態の伝送経路についても同様に第２実施形態の技術を適用できる。この場合、適用するプロトコルで規定されるフレーム構造のテストフレームを用いて診断を行うことになる。しかし、いずれのプロトコルでもフレーム構造の解釈や宛先アドレスの読み込みなどは実施され、その実施結果に応じて送信時及び受信時の処理が実行される。従って、上記のような各種プロトコルに対しても第２実施形態及びその変形例に係る技術を適用することができる。
【０１２１】
以上、第２実施形態について説明した。
【符号の説明】
【０１２２】
１  制御システム
１０  制御装置
１１  送信部
１２  制御部
２０  接続制御装置
２１  演算部
２２  切替え部
３０  スイッチ
４１、４２、４３  接続デバイス
５０  診断デバイス
【図１】
2018005826.tif 000003
【図２】
2018005826.tif 000004
【図３】
2018005826.tif 000005
【図４】
2018005826.tif 000006
【図５】
2018005826.tif 000007
【図６】
2018005826.tif 000008
【図７】
2018005826.tif 000009
【図８】
2018005826.tif 000010
【図９】
2018005826.tif 000011
【図１０】
2018005826.tif 000012
【図１１】
2018005826.tif 000013
【図１２】
2018005826.tif 000014