(57)【特許請求の範囲】
【請求項１】
外部装置から送られてくるデータ入出力要求に応じて記憶ドライブに対するデータの書き込み又はデータの読み出しを行うコントローラと、一つ以上の物理ポートを有するスイッチ回路を備える一つ以上のエキスパンダとを備え、前記コントローラと前記記憶ドライブとが前記スイッチ回路を介して通信可能に接続される、ストレージ装置であって、
前記コントローラは、
前記エキスパンダを対象としてループバック診断を行い、
前記ループバック診断にて障害が検知されている装置であるターゲットデバイスにコネクション系フレームを送信して行うコネクション系診断を行い、
前記コネクション系フレームに対する応答に障害を示す情報が含まれていた場合に、前記ターゲットデバイスが接続している前記物理ポート、又は当該コントローラから前記ターゲットデバイスに至る経路に存在する前記スイッチ回路の前記物理ポートを閉塞し、
前記コントローラは、前記コントローラから前記ターゲットデバイスに至る経路にワイドリンクが存在する場合、前記ワイドリンクに含まれる特定の経路を残し前記ワイドリンクの前記特定の経路以外の経路を閉塞してから前記コネクション系診断を開始し、
前記コントローラは、前記コネクション系フレームに対する応答に障害を示す情報が含まれていなかった場合に、前記コントローラから前記コネクション系フレームを送信した前記ターゲットデバイスに至る経路に存在する、前記コネクション系フレームを未送信の前記スイッチ回路にコネクション系フレームを送信して前記コネクション系診断をさらに行い、
前記コネクション系フレームに対する応答に障害を示す情報が含まれていた場合は前記スイッチ回路の前記物理ポートを閉塞し、
前記コントローラは、前記ターゲットデバイスを特定する情報又は前記閉塞した前記物理ポートを特定する情報を前記外部装置に送信し、
前記コントローラは、リンクの異常を通知してきた前記エキスパンダを対象として前記ループバック診断のコマンドを送信し、
前記エキスパンダは、前記物理ポートにＳＡＴＡデバイスが接続されている場合にそのＳＡＴＡデバイスをＳＡＳデバイスとしてアクセスできるようにする機能である仮想接続機能を提供するＳＴＰ／ＳＡＴＡブリッジを備え、
前記コントローラは、前記エキスパンダの前記物理ポートにＳＡＴＡデバイスが接続されていない場合は前記仮想接続機能を活性化させてから前記ループバック診断及び／又は前記コネクション系診断を行い、
前記コントローラは、前記エキスパンダの前記物理ポートにＳＡＴＡデバイスが接続されておらず、かつ、前記エキスパンダに未使用の前記物理ポートが存在しない場合は、前記エキスパンダの使用中の前記物理ポートを閉塞した後に前記仮想接続機能を活性化させてから前記ループバック診断及び／又は前記コネクション系診断を行い、
前記コントローラは、前記外部装置と通信する通信インタフェース、前記記憶ドライブと通信するドライブインタフェース、キャッシュメモリ、及び前記コントローラと前記キャッシュメモリとの間又は前記キャッシュメモリと前記記憶ドライブとの間のデータ転送を行うデータコントローラを備え、
前記エキスパンダは、プロセッサ、メモリ、前記コントローラ又は他の前記エキスパンダと通信する通信インタフェース、前記物理ポートとして機能するＰｈｙを有する前記スイッチ回路、ルーティング設定又はゾーニング設定を行うＥＣＭ（Expander Connection Manager）、前記ルーティング設定又はゾーニング設定に従い前記Ｐｈｙ間のデータ転送を制御するＥＣＲ（Expander Connection Router）、及び前記Ｐｈｙの夫々の装置の接続状態又は前記Ｐｈｙの夫々の障害の有無の監視を行うＢＰＰ（Broadcast Primitive Processor）を備える
ストレージ装置。
【請求項２】
請求項１に記載のストレージ装置であって、
前記コントローラは、リンクの異常を通知してきた前記エキスパンダを対象として前記ループバック診断のコマンドを送信する
ストレージ装置。
【請求項３】
請求項１に記載のストレージ装置であって、
前記エキスパンダは、前記物理ポートにＳＡＴＡデバイスが接続されている場合にそのＳＡＴＡデバイスをＳＡＳデバイスとしてアクセスできるようにする機能である仮想接続機能を提供するＳＴＰ／ＳＡＴＡブリッジを備え、
前記コントローラは、前記エキスパンダの前記物理ポートにＳＡＴＡデバイスが接続されていない場合は前記仮想接続機能を活性化させてから前記ループバック診断及び／又は前記コネクション系診断を行う
ストレージ装置。
【請求項４】
請求項３に記載のストレージ装置であって、
前記コントローラは、前記エキスパンダの前記物理ポートにＳＡＴＡデバイスが接続されておらず、かつ、前記エキスパンダに未使用の前記物理ポートが存在しない場合は、前記エキスパンダの使用中の前記物理ポートを閉塞した後に前記仮想接続機能を活性化させてから前記ループバック診断及び／又は前記コネクション系診断を行う
ストレージ装置。
【請求項５】
外部装置から送られてくるデータ入出力要求に応じて記憶ドライブに対するデータの書き込み又はデータの読み出しを行うコントローラと、一つ以上の物理ポートを有するスイッチ回路を備える一つ以上のエキスパンダとを備え、前記コントローラと前記記憶ドライブとが前記スイッチ回路を介して通信可能に接続される、ストレージ装置の制御方法であって、
前記コントローラが、
前記エキスパンダを対象としてループバック診断を行い、
前記ループバック診断にて障害が検知されている装置であるターゲットデバイスにコネクション系フレームを送信して行うコネクション系診断を行い、
前記コネクション系フレームに対する応答に障害を示す情報が含まれていた場合に、前記ターゲットデバイスが接続している前記物理ポート、又は当該コントローラから前記ターゲットデバイスに至る経路に存在する前記スイッチ回路の前記物理ポートを閉塞し、
前記エキスパンダは、前記物理ポートにＳＡＴＡデバイスが接続されている場合にそのＳＡＴＡデバイスをＳＡＳデバイスとしてアクセスできるようにする機能である仮想接続機能を提供するＳＴＰ／ＳＡＴＡブリッジを備え、
前記コントローラは、前記エキスパンダの前記物理ポートにＳＡＴＡデバイスが接続されていない場合は前記仮想接続機能を活性化させてから前記ループバック診断及び／又は前記コネクション系診断を行う
ストレージ装置の制御方法。
【請求項６】
請求項５に記載のストレージ装置の制御方法であって、
前記コントローラは、前記エキスパンダの前記物理ポートにＳＡＴＡデバイスが接続されておらず、かつ、前記エキスパンダに未使用の前記物理ポートが存在しない場合は、前記エキスパンダの使用中の前記物理ポートを閉塞した後に前記仮想接続機能を活性化させてから前記ループバック診断及び／又は前記コネクション系診断を行う
ストレージ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、及びストレージ装置の制御方法に関し、とくに障害が発生した場合に障害部位を精確に特定するための技術に関する。
【背景技術】
【０００２】
特許文献１には、ハードディスクドライブを接続するインタフェースとしてＳＡＳ（Serial Attached SCSI）のエキスパンダを備え、ストレージコントローラに複数のエキスパンダをカスケード接続したストレージシステムに関し、拡張性や高可用性を確保するための構成が開示されている。
【０００３】
特許文献２には、計算機と、計算機に接続される第１記憶装置と、第１記憶装置に外部接続される第２記憶装置とを備え、第１記憶装置が第１記憶領域を計算機に提供し、第２記憶装置が第１記憶領域に対応する第２記憶領域を備える計算機システムに関し、経路障害による業務の停止を防ぐべく第１経路から第４経路の少なくとも一つに障害が発生したか否かを判定し、判定結果に基づき第１記憶領域又は第２記憶領域へのアクセスに使用される経路を選択し、選択された経路を用いて第１記憶領域又は第２記憶領域へのアクセス要求を送信することが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２１１１４０号公報
【特許文献２】特開２００９−２５９０３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
カスケード接続されたエキスパンダを用いてストレージコントローラに接続されたハードディスクドライブを備えるストレージシステムにおいて、障害が発生した際の障害部位を特定する方法としてストレージコントローラからデータフレームを送信してその応答を参照するループバック診断がある。
【０００６】
しかしデータフレームを送信する上記ループバック診断では、例えばエキスパンダのコネクション系のフレームの処理を行っているハードウエア又はソフトウエアについては障害の有無を判断することができない。そのため、障害発生時に障害部位以外の正常な部位も停止又は閉塞する必要があり、障害の影響が不必要に拡大する場合がある。またエキスパンダはその通信ポートに実際に装置が接続されていないと活性化しない機能を備えていることがあり、通信ポートに装置が接続されていない場合はそのような機能について生じている障害を検知することができない。
【０００７】
本発明はこのような背景に鑑みてなされたもので、障害が発生した場合に障害部位を精確に特定することが可能なストレージ装置、及びストレージ装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するための本発明の一つは、外部装置から送られてくるデータ入出力要求に応じて記憶ドライブに対するデータの書き込み又はデータの読み出しを行うコントローラと、一つ以上の物理ポートを有するスイッチ回路を備える一つ以上のエキスパンダとを備え、前記コントローラと前記記憶ドライブとが前記スイッチ回路を介して通信可能に接続される、ストレージ装置であって、前記コントローラは、前記エキスパンダを対象としてループバック診断を行い、前記ループバック診断にて障害が検知されている装置であるターゲットデバイスにコネクション系フレームを送信して行うコネクション系診断を行い、前記コネクション系フレームに対する応答に障害を示す情報が含まれていた場合に、前記ターゲットデバイスが接続している前記物理ポート、又は当該コントローラから前記ターゲットデバイスに至る経路に存在する前記スイッチ回路の前記物理ポートを閉塞し、前記コントローラは、前記コントローラから前記ターゲットデバイスに至る経路にワイドリンクが存在する場合、前記ワイドリンクに含まれる特定の経路を残し前記ワイドリンクの前記特定の経路以外の経路を閉塞してから前記コネクション系診断を開始し、前記コントローラは、前記コネクション系フレームに対する応答に障害を示す情報が含まれていなかった場合に、前記コントローラから前記コネクション系フレームを送信した前記ターゲットデバイスに至る経路に存在する、前記コネクション系フレームを未送信の前記スイッチ回路にコネクション系フレームを送信して前記コネクション系診断をさらに行い、前記コネクション系フレームに対する応答に障害を示す情報が含まれていた場合は前記スイッチ回路の前記物理ポートを閉塞し、前記コントローラは、前記ターゲットデバイスを特定する情報又は前記閉塞した前記物理ポートを特定する情報を前記外部装置に送信し、前記コントローラは、リンクの異常を通知してきた前記エキスパンダを対象として前記ループバック診断のコマンドを送信し、前記エキスパンダは、前記物理ポートにＳＡＴＡデバイスが接続されている場合にそのＳＡＴＡデバイスをＳＡＳデバイスとしてアクセスできるようにする機能である仮想接続機能を提供するＳＴＰ／ＳＡＴＡブリッジを備え、前記コントローラは、前記エキスパンダの前記物理ポートにＳＡＴＡデバイスが接続されていない場合は前記仮想接続機能を活性化させてから前記ループバック診断及び／又は前記コネクション系診断を行い、前記コントローラは、前記エキスパンダの前記物理ポートにＳＡＴＡデバイスが接続されておらず、かつ、前記エキスパンダに未使用の前記物理ポートが存在しない場合は、前記エキスパンダの使用中の前記物理ポートを閉塞した後に前記仮想接続機能を活性化させてから前記ループバック診断及び／又は前記コネクション系診断を行い、前記コントローラは、前記外部装置と通信する通信インタフェース、前記記憶ドライブと通信するドライブインタフェース、キャッシュメモリ、及び前記コントローラと前記キャッシュメモリとの間又は前記キャッシュメモリと前記記憶ドライブとの間のデータ転送を行うデータコントローラを備え、前記エキスパンダは、プロセッサ、メモリ、前記コントローラ又は他の前記エキスパンダと通信する通信インタフェース、前記物理ポートとして機能するＰｈｙを有する前記スイッチ回路、ルーティング設定又はゾーニング設定を行うＥＣＭ（Expander Connection Manager）、前記ルーティング設定又はゾーニング設定に従い前記Ｐｈｙ間のデータ転送を制御するＥＣＲ（Expander Connection Router）、及び前記Ｐｈｙの夫々の装置の接続状態又は前記Ｐｈｙの夫々の障害の有無の監視を行うＢＰＰ（Broadcast Primitive Processor）を備えることとする。
【０００９】
その他本願が開示する課題やその解決方法については、発明の実施形態の欄及び図面により明らかにされる。
【発明の効果】
【００１０】
本発明によれば、ストレージ装置に障害が発生した場合に障害部位を精確に特定することができる。
【図面の簡単な説明】
【００１１】
【図１】ストレージシステム１の概略的な構成を示す図である。
【図２】ストレージ装置１０のハードウエア構成を示す図である。
【図３】コントローラ１１及びエンクロージャ１２の主な機能を示す図である。
【図４】ストレージ装置１０の基本的な動作を説明する図である。
【図５】ストレージ装置１０の基本的な動作を説明する図である。
【図６】障害監視部１１１３が備える機能及びデータを示す図である。
【図７】装置情報管理テーブル６２１を示す図である。
【図８】エキスパンダ１１２，１２１のハードウエア構成を示す図である。
【図９】エキスパンダ１１２，１２１が備える主な機能及びデータを示す図である。
【図１０】接続装置管理テーブル７２１を示す図である。
【図１１】ループバック診断処理Ｓ１１００を説明するフローチャートである。
【図１２】コネクション系診断処理Ｓ１２００を説明するフローチャートである。
【図１３】コントローラ１１及びエキスパンダ１１２，１２１の接続状態の一例である。
【図１４】コントローラ１１が保持する装置情報管理テーブル６２１の一例である。
【図１５】「Ｅｘｐａｎｄｅｒ１」が保持する接続装置管理テーブル７２１の一例である。
【図１６】「Ｅｘｐａｎｄｅｒ２」が保持する接続装置管理テーブル７２１の一例である。
【図１７】「Ｅｘｐａｎｄｅｒ３」が保持する接続装置管理テーブル７２１の一例である。
【図１８】障害部位特定処理Ｓ１８００を説明するフローチャートである。
【図１９】メイン処理Ｓ１９００を説明するフローチャートである。
【図２０】診断処理Ｓ２０００を説明するフローチャートである。
【発明を実施するための形態】
【００１２】
以下、実施形態について説明する。
第１実施形態
図１に第１実施形態として説明するストレージシステム１の概略的な構成を示している。同図に示すように、ストレージシステム１は、ストレージ装置１０と、このストレージ装置１０と通信ネットワーク５を介して通信可能に接続している一台以上の外部装置２（ホスト装置）とを含んで構成されている。
【００１３】
通信ネットワーク５は、例えばＬＡＮ（Local Area Network）、ＳＡＮ（Storage Area Network）、インターネット、公衆通信網等である。外部装置２とストレージ装置１０との間の通信は、例えばＴＣＰ／ＩＰ、ｉＳＣＳＩ（internet Small Computer System Interface）、ファイバーチャネルプロトコル（Fibre Channel Protocol）、ＦＩＣＯＮ（Fibre Connection）（登録商標）、ＥＳＣＯＮ（Enterprise System Connection） （登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture）（登録商標）、ＦＩＢＡＲＣ（Fibre Connection Architecture）（登録商標）等のプロトコルを用いて行われる。
【００１４】
外部装置２は、ストレージ装置１０が提供する記憶領域をデータの格納場所として利用する情報処理装置（コンピュータ）であり、例えばパーソナルコンピュータ、メインフレーム（Mainframe）、オフィスコンピュータ等である。外部装置２は、上記記憶領域にアクセスする際、ストレージ装置１０にデータ入出力要求（以下、データＩ／Ｏ要求と称する。）を送信する。
【００１５】
ストレージ装置１０は、基本筐体１０１と、基本筐体１０１にカスケード接続される一台以上の増設筐体１０２とを備える。このうち基本筐体１０１は、２つのコントローラ１１Ａ，１１Ｂと、これらコントローラ１１Ａ，１１Ｂと通信可能に接続される一台以上の記憶ドライブ１７１とを備えている。コントローラ１１Ａ，１１Ｂの間は、バス等の通信線１５を介して通信可能に接続している。
【００１６】
コントローラ１１Ａ，１１Ｂ並びに記憶ドライブ１７１はいずれもユニット化されており、これらは基本筐体１０１に設けられている装着スロットに沿って挿抜されることにより基本筐体１０１に脱着される。図示していないが、基本筐体１０１には、さらに記憶ドライブ１７１等の発熱体を冷却するための冷却装置（冷却ファン等）、コントローラ１１Ａ，１１Ｂ、記憶ドライブ１７１、冷却装置等を駆動するための電源装置などの各種の装置が付設されている。
【００１７】
増設筐体１０２は、２つのエンクロージャ１２Ａ，１２Ｂ（Enclosure）とこれらエンクロージャ１２Ａ，１２Ｂと通信可能に接続される一台以上の記憶ドライブ１７１を備えている。エンクロージャ１２Ａ，１２Ｂは、バス等の通信線１５を介して互いに通信可能に接続している。エンクロージャ１２Ａ，１２Ｂはいずれもユニット化されており、増設筐体１０２に設けられている装着スロットに沿って挿抜されることにより増設筐体１０２に脱着することができる。図示していないが、増設筐体１０２には、さらに記憶ドライブ１７１等の発熱体を冷却するための冷却装置（冷却ファン等）、記憶ドライブ１７１、冷却装置等を駆動するための電源装置などの各種の装置が付設されている。
【００１８】
基本筐体１０１もしくは増設筐体１０２に設けられる記憶ドライブ１７１は、ＳＡＳ（Serial Attached SCSI）、ＳＡＴＡ（Serial ATA）、ＦＣ（Fibre Channel）、ＰＡＴＡ（Parallel ATA）、ＳＣＳＩ（Small Computer System Interface）等のハードディスクドライブ（Hard Disk Drive）、半導体記憶装置（ＳＳＤ（Solid State Drive））などである。
【００１９】
図２にストレージ装置１０のハードウエア構成を示している。同図に示すように、基本筐体１０１が備えるコントローラ１１Ａ，１１Ｂは、夫々、通信Ｉ／Ｆ３１Ａ，３１Ｂ、データコントローラ３２Ａ，３２Ｂ（ＤＣＴＬ）、ドライブＩ／Ｆ３３Ａ，３３Ｂ（記憶媒体制御部）、キャッシュメモリ３４Ａ，３４Ｂ（ＣＭ）、ブリッジ３５Ａ，３５Ｂ、ＣＰＵ３６Ａ，３６Ｂ、ローカルメモリ３７Ａ，３７Ｂ（ＬＭ）、及びエキスパンダ１１２Ａ，１１２Ｂを備える。尚、キャッシュメモリ３４Ａ（又はキャッシュメモリ３４Ｂ）の記憶領域の全部又は一部は２つのコントローラ１１Ａ，１１Ｂ間で共有されており、コントローラ１１Ａ，１１Ｂの一方に障害が発生した場合や一方が過負荷となった場合は、フェールオーバや負荷分散のために一方が保持している情報を他方に引き継ぐことができるようになっている。
【００２０】
増設筐体１０２はエキスパンダ１２１Ａ，１２１Ｂを備えている。基本筐体１０１又は増設筐体１０２に設けられる記憶ドライブ１７１は、エキスパンダ１１２Ａ，１１２Ｂ，１２１Ａ，１２１Ｂによって構成されるファイバチャネルループ１０６を介して互いに通信可能に接続されている。尚、以下ではコントローラ１１Ａ，１１Ｂと記憶ドライブ１７１との間の通信手段がファイバチャネルループ１０６であることを前提として説明するが、コントローラ１１Ａ，１１Ｂと記憶ドライブ１７１との間の通信手段は必ずしもファイバチャネルループ１０６に限られない。
【００２１】
図３にコントローラ１１（１１Ａ，１１Ｂ）及びエンクロージャ１２（１２Ａ，１２Ｂ）が備える主な機能を示している。以下の説明において、例えばコントローラ１１Ａとコントローラ１１Ｂが備える機能のように、両者で共通する機能について説明する場合には、「１１Ａ」や「１１Ｂ」のように符号に後続して付している「Ａ」や「Ｂ」の符号を省略して「１１」のように単に数字の符号のみを表記している。
【００２２】
コントローラ１１のドライブ制御部１１１は、Ｉ／Ｏ処理部１１１１、記憶ドライブ制御部１１１２、及び障害監視部１１１３の各機能を備えている。尚、ドライブ制御部１１１の機能は、ＣＰＵ３６がコントローラ１１のローカルメモリ３７に格納されているプログラムを読み出して実行することにより実現される。
【００２３】
Ｉ／Ｏ処理部１１１１は、ストレージ装置１０が外部装置２との間で行う通信に際して主にデータ転送プロトコルに関する制御を行う。Ｉ／Ｏ処理部１１１１は、外部装置２から送られてくるデータＩ／Ｏ要求（データ書き込み要求、データ読み出し要求等）を受け付けると、エキスパンダ１１２，１２１に対し、記憶ドライブ１７１へのアクセス要求を送信する。またＩ／Ｏ処理部１１１１は、データＩ／Ｏ要求に応じて実行した処理についての応答（読み出したデータ、読み出し完了報告、書き込み完了報告等）を外部装置２に送信する。
【００２４】
Ｉ／Ｏ処理部１１１１は、データＩ／Ｏ要求に関する処理に際し、例えば記憶ドライブ１７１に書き込むデータ（以下、書き込みデータと称する。）や記憶ドライブ１７１から読み出したデータ（以下、読み出しデータと称する。）について、記憶ドライブ１７１からキャッシュメモリ３４（ＣＭ）へのデータの読み出し（ステージング（Staging ））やキャッシュメモリ３４（ＣＭ）から記憶ドライブ１７１へのデータの書き出し（デステージング(Destaging））を行う。またＩ／Ｏ処理部１１１１は、エキスパンダ１１２，１２１に対して記憶ドライブ１７１へのアクセス要求（以下、ドライブアクセス要求と称する。）を送信し、エキスパンダ１１２，１２１が上記ドライブアクセス要求に応じて送信する応答（記憶ドライブ１７１から読み出したデータ、記憶ドライブ１７１からの読み出し完了報告、記憶ドライブ１７１への書き込み完了報告等）を受信する。
【００２５】
ドライブ制御部１１１の記憶ドライブ制御部１１１２は、記憶ドライブ１７１の制御（例えばＲＡＩＤ（Redundant Arrays of Inexpensive （or Independent) Disks））方式（ＲＡＩＤ０〜６）に関する制御）や、記憶ドライブ１７１の構成情報の管理（記憶ドライブ１７１の接続状態の管理、ＲＡＩＤの構成情報の管理）などを行う。
【００２６】
ドライブ制御部１１１の障害監視部１１１３は、基本筐体１０１のコントローラ１１が備えるエキスパンダ１１２、増設筐体１０２のエンクロージャ１２が備えるエキスパンダ１２１、及び基本筐体１０１や増設筐体１０２に接続されている記憶ドライブ１７１等の障害監視や障害対応に関する処理を行う。
【００２７】
エキスパンダ１１２,１２１は、コントローラ１１のドライブ制御部１１１と、記憶ドライブ１７１との間で行われる通信（Interconnect）を実現する中継装置（データ転送スイッチ）として機能する。エキスパンダ１１２，１２１は、複数の記憶ドライブ１７１を通信可能に接続するデバイス拡張スイッチとしての役割を有する。エキスパンダ１１２，１２１は、ＳＭＰ（Serial Management Protocol）、ＳＳＰ（Serial SCSI Protocol）、ＳＴＰ（Serial ATA tunneling Protocol）等のプロトコルにおけるイニシエータ（Initiator）又はターゲット（Target）として機能する。エキスパンダ１１２，１２１は、例えばコントローラ１１のドライブ制御部１１１を基点（ルート）とするツリー型のネットワークトポロジーを構成する。
【００２８】
図４はストレージ装置１０の基本的な動作を説明する図であり、ストレージ装置１０が外部装置２からデータ書き込み要求を含んだフレームを受信した場合に、Ｉ／Ｏ処理部１１１１によって行われる処理（以下、データ書き込み処理Ｓ４００と称する。）を説明するフローチャートである。以下、同図とともにデータ書き込み処理Ｓ４００について説明する。尚、以下の説明において、符号の前に付している「Ｓ」の文字はステップを意味する。
【００２９】
外部装置２から送信されてくるフレームは、まずストレージ装置１０の通信Ｉ／Ｆ３１によって受信される（Ｓ４１１，Ｓ４１２）。通信Ｉ／Ｆ３１は、フレームを受信するとその旨をデータコントローラ３２に通知する（Ｓ４１３）。
【００３０】
データコントローラ３２は、通信Ｉ／Ｆ３１から上記通知を受信すると（Ｓ４２１）、当該フレームのデータ書き込み要求に基づくドライブ書き込み要求を生成し、書き込みデータをキャッシュメモリ３４に格納する。そしてデータコントローラ３２は、生成したドライブ書き込み要求をドライブＩ／Ｆ３３に送信する（Ｓ４２２，Ｓ４２３）。通信Ｉ／Ｆ３１は、外部装置２に完了報告を送信し（Ｓ４１４）、外部装置２は完了報告を受信する（Ｓ４１５）。
【００３１】
ドライブＩ／Ｆ３３は、ドライブ書き込み要求を受信すると、受信したドライブ書き込み要求を図示しない書き込み処理待ちキューに登録する（Ｓ４２４）。ドライブＩ／Ｆ３３は、書き込み処理待ちキューからドライブ書き込み要求を随時読み出す（Ｓ４２５）。ドライブＩ／Ｆ３３は、読み出したドライブ書き込み要求に指定されている書き込みデータをキャッシュメモリ３４から読み出し、読み出した書き込みデータを記憶ドライブ１７１に書き込む（Ｓ４２６）。
【００３２】
次にドライブＩ／Ｆ３３は、ドライブ書き込み要求について書き込みデータの書き込みが完了した旨の報告（完了報告）をデータコントローラ３２に通知し（Ｓ４２７）、データコントローラ３２は、送られてきた完了報告を受信する（Ｓ４２８）。
【００３３】
図５はストレージ装置１０の基本的な動作を説明する図であり、ストレージ装置１０が外部装置２からデータ読み出し要求を含んだフレームを受信した場合にストレージ装置１０のＩ／Ｏ処理部１１１１によって行われるＩ／Ｏ処理（以下、データ読み出し処理Ｓ５００と称する。）を説明するフローチャートである。以下、同図とともにデータ読み出し処理Ｓ５００について説明する。
【００３４】
外部装置２から送信されてくるフレームは、ストレージ装置１０の通信Ｉ／Ｆ３１によって受信される（Ｓ５１１，Ｓ５１２）。通信Ｉ／Ｆ３１は、外部装置２からフレームを受信すると、その旨をデータコントローラ３２に通知する（Ｓ５１３）。データコントローラ３２は、フレームを受信した旨の通知を受けると、ドライブＩ／Ｆ３３に、フレームを受信した旨を通知する（Ｓ５１４）。
【００３５】
ドライブＩ／Ｆ３３は、通信Ｉ／Ｆ３１から上記通知を受信すると（Ｓ５１５）、当該フレームに含まれているデータ読み出し要求に指定されているデータ（例えばＬＢＡ（Logical Block Address）によって指定される）を記憶装置１７（記憶ドライブ１７１）から読み出す（Ｓ５１６）。尚、キャッシュメモリ３４に読み出しデータが存在する場合（キャッシュヒットした場合）は記憶装置１７からの読み出し処理（Ｓ５１６）は通常は省略される。データコントローラ３２は、ドライブＩ／Ｆ３３によって読み出されたデータをキャッシュメモリ３４に書き込む（Ｓ５１７）。データコントローラ３２は、キャッシュメモリ３４に書き込んだデータを通信Ｉ／Ｆ３１に随時転送する（Ｓ５１８）。
【００３６】
通信Ｉ／Ｆ３１は、データコントローラ３２から送られてくる読み出しデータを外部装置２に順次送信する（Ｓ５１９）。読み出しデータの送信が完了すると、通信Ｉ／Ｆ３１は外部装置２に完了報告を送信する（Ｓ５２０）。外部装置２は送られてきた読み出しデータ及び完了報告を受信する（Ｓ５２１，Ｓ５２２）。
【００３７】
図６に障害監視部１１１３が備える主な機能及びデータを示している。同図に示すように、障害監視部１１１３は、ブロードキャスト処理部６１１、ディスカバー処理部６１２、ループバック診断処理部６１３、及び仮想接続設定処理部６１４の各機能を備える。また障害監視部１１１３は、装置情報管理テーブル６２１を管理（記憶）している。
【００３８】
このうちブロードキャスト処理部６１１は、エキスパンダ１１２，１２１のＰｈｙ１１２１が送信したブロードキャストフレームを受信すると、ディスカバー処理部６１２にその旨を通知する。
【００３９】
ディスカバー処理部６１２は、ブロードキャスト処理部６１１から上記通知を受信すると、コントローラ１１、エキスパンダ１１２，１２１、及び記憶ドライブ１７１を結ぶ通信経路にディスカバーコマンド（Discover Command）を送信する。
【００４０】
ディスカバーコマンドは、エキスパンダ１１２，１２１の構成や状態を示す情報、エキスパンダ１１２，１２１の各Ｐｈｙ１１２１に現在どのような装置が接続されているのかを示す情報、接続されている装置の状態（障害の有無等）や通信状態（Ｌｉｎｋ異常の有無等）を示す情報（以下、構成情報と称する。）を取得する際に発行されるコマンドである。ディスカバーコマンドの具体例として、前述したＳＭＰが発行する「Discover」、ＳＳＰが発行する「SSP Discover Extended」などがある。ディスカバー処理部６１２はディスカバーコマンドに応じてエキスパンダ１１２，１２１が返送する構成情報に基づき装置情報管理テーブル６２１の内容を随時更新する。
【００４１】
ループバック診断処理部６１３は、エキスパンダ１１２，１２１にループバックテスト（Loopback Test）の実行を指示するループバック診断コマンドを送信する。ループバック診断コマンドとして、例えば「SAS Buffer Loopback」などがある。例えばループバック診断処理部６１３は、ディスカバー処理部６１２がエキスパンダ１１２，１２１から受信した構成情報に通信異常を示す情報が含まれていたことを契機としてループバック診断コマンドを送信する。
【００４２】
仮想接続設定処理部６１４は、後述する接続装置管理テーブル７２１のＳＡＴＡデバイス仮想接続フラグ７２１６に「オン」又は「オフ」を設定することによりＳＴＰ／ＳＡＴＡブリッジ７１４の機能の活性／非活性を制御する。
【００４３】
装置情報管理テーブル６２１には、エキスパンダ１１２，１２１及びエキスパンダ１１２，１２１のＰｈｙ１１２１に現在接続している装置（例えば記憶ドライブ１７１）に関する情報が管理される。ディスカバー処理部６１２は、ディスカバーコマンドに対する応答としてエキスパンダ１１２，１２１から通知される構成情報に基づき、装置情報管理テーブル６２１の内容を更新する。
【００４４】
図７に障害監視部１１１３が管理する装置情報管理テーブル６２１の一例を示している。同図に示すように、装置情報管理テーブル６２１は、装置ＩＤ６２１１、障害情報６２１２、及びＰｈｙ状態６２１３の各項目を有する１つ以上のレコードからなる。
【００４５】
装置ＩＤ６２１１には、エキスパンダ１１２，１２１の識別子、又はエキスパンダ１１２，１２１が備えるＰｈｙ１１２１に接続している装置（例えば記憶ドライブ１７１）の識別子（以下、装置ＩＤと称する。）が設定される。障害情報６２１２には、その装置の障害の有無を示す情報（障害有り／障害無し）が設定される。Ｐｈｙ状態６２１３には、エキスパンダ１１２，１２１のＰｈｙ１１２１の状態を示す情報（利用可（Enable）／閉塞中（Disable））が設定される。
【００４６】
図８にエキスパンダ１１２，１２１のハードウエア構成を示している。同図に示すように、エキスパンダ１１２，１２１は、複数の通信ポート（以下、Ｐｈｙ１１２１と称する。）、スイッチ回路１１２２、プロセッサ１１２３、メモリ１１２４、及び通信インタフェース１１２５を備える。
【００４７】
同図に示すＰｈｙ１１２１はＳｅｒＤｅｓ（Serializer/DeSerializer）等のシリアルパラレル変換回路を備える。スイッチ回路１１２２は、メモリ１１２４に格納されているルーティング（Routing）やゾーニング（Zoning）の設定に従いＰｈｙ１１２１間のデータ転送を制御するＥＣＲ（Expander Connection Router）、ルーティングやゾーニングの設定を行うＥＣＭ（Expander Connection Manager）、及びＢＰＰ（Broadcast Primitive Processor）等を備える。
【００４８】
ＢＰＰはＰｈｙ１１２１に接続されている記憶ドライブ１７１の挿抜状態、リンクの有無（Linkup/Linkdown）、通信障害の有無等、スイッチ回路１１２２及びスイッチ回路１１２２に接続する装置や通信の状態変化を監視する。またＢＰＰは上記状態変化を検知するとＰｈｙ１１２１からブロードキャストフレーム（Broadcast frame）を送信する。
【００４９】
図９にエキスパンダ１１２，１２１が備える主な機能及びデータを示している。同図に示すように、エキスパンダ１１２，１２１は、ルーティング処理部７１１、ループバック診断実行部７１２、ディスカバー応答処理部７１３、ＳＴＰ／ＳＡＴＡブリッジ７１４、及びブロードキャスト制御部７１５の各機能を備える。またエキスパンダ１１２，１２１は、接続装置管理テーブル７２１を管理（記憶）する。
【００５０】
ルーティング処理部７１１は、ルーティングやゾーニングの設定情報に従い、Ｐｈｙ１１２１間のデータ転送制御（ルーティング制御）を行う。ルーティング処理部７１１の機能は例えば前述したＥＣＲ及びＥＣＭによって実現される。
【００５１】
ループバック診断実行部７１２は、コントローラ１１から送信されるループバック診断コマンドに応じてループバック診断を実行し、その結果をコントローラ１１に送信する。また後述するように、ループバック診断実行部７１２は、ループバック診断により所定の種類の異常を見つけるとエキスパンダ１１２，１２１のＰｈｙ１１２１を閉塞する。ループバック診断実行部７１２は、エキスパンダ１１２，１２１が備えるハードウエアによって、もしくはエキスパンダ１１２，１２１のプロセッサ１１２３が、メモリ１１２４に格納されているプログラムを読み出して実行することによって実現される。
【００５２】
ディスカバー応答処理部７１３は、ディスカバーコマンドを受信すると、コントローラ１１に前述した構成情報を送信する。ディスカバー応答処理部７１３は、エキスパンダ１１２，１２１が備えるハードウエアによって、もしくはエキスパンダ１１２，１２１のプロセッサ１１２３が、メモリ１１２４に格納されているプログラムを読み出して実行することによって実現される。
【００５３】
ＳＴＰ／ＳＡＴＡブリッジ７１４は、ＳＡＴＡ規格の記憶ドライブ１７１（以下、「ＳＡＴＡデバイス」と称する。）とＳＡＳ規格の記憶ドライブ１７１（以下、「ＳＡＳデバイス」と称する。）との間のプロトコル変換層として機能する。尚、ＳＴＰ／ＳＡＴＡブリッジ７１４は複数のイニシエータによる並行アクセスができず（マルチイニシエータ非対応）、セッションが確立されている間はアフィリエーション（Affiliation）を維持することにより排他制御を行う。ＳＴＰ／ＳＡＴＡブリッジ７１４の機能は、エキスパンダ１１２，１２１が備えるハードウエアによって、もしくはエキスパンダ１１２，１２１のプロセッサ１１２３が、メモリ１１２４に格納されているプログラムを読み出して実行することによって実現される。
【００５４】
ＳＴＰ／ＳＡＴＡブリッジ７１４は、Ｐｈｙ１１２１にＳＡＴＡデバイスが接続されるとそのＳＡＴＡデバイスにＳＡＳの識別子を付与し、そのＳＡＴＡデバイスをＳＡＳデバイスとしてコントローラ１１からアクセスできるようにする機能（以下、仮想接続機能と称する。）を備える。
【００５５】
ＳＴＰ／ＳＡＴＡブリッジ７１４は、Ｐｈｙ１１２１にＳＡＴＡデバイスが接続されていない場合は仮想接続機能を停止し、Ｐｈｙ１１２１にＳＡＴＡデバイスが接続されていることを検知すると自動的に仮想接続機能を開始する。またＳＴＰ／ＳＡＴＡブリッジ７１４は、後述するＳＡＴＡデバイス仮想接続フラグ７２１６の内容を随時参照し、ＳＡＴＡデバイス仮想接続フラグ７２１６に「オン」が設定されていることを検知するとＰｈｙ１１２１にＳＡＴＡデバイスが接続されているか否かに拘わらず仮想接続機能を開始する。
【００５６】
ブロードキャスト制御部７１５は、各Ｐｈｙ１１２１に接続されている記憶ドライブ１７１の挿抜状態、リンクの有無（Linkup/Linkdown）、通信障害の有無等、各Ｐｈｙ１１２１の状態変化の有無を監視し、状態変化を検知するとＰｈｙ１１２１からブロードキャストフレームを送信する。ブロードキャスト制御部７１５は、例えば、前述したＢＰＰによって、もしくはプロセッサ１１２３がメモリ１１２４に格納されているプログラムを読み出して実行することによって実現される。
【００５７】
図１０に接続装置管理テーブル７２１の一例を示している。接続装置管理テーブル７２１にはエキスパンダ１１２，１２１が備えるＰｈｙ１１２１に関する情報が管理される。同図に示すように、接続装置管理テーブル７２１は、ＰｈｙＩＤ７２１１、接続装置ＩＤ７２１２、接続ドライブ種別７２１３、Ｐｈｙ状態７２１４、ループバック診断結果７２１５、及びＳＡＴＡデバイス仮想接続フラグ７２１６の各項目を有する１つ以上のレコードからなる。
【００５８】
ＰｈｙＩＤ７２１１には、エキスパンダ１１２，１２１が備えるＰｈｙ１１２１の識別子（以下、ＰｈｙＩＤと称する。）が設定される。接続装置ＩＤ７２１２には、そのＰｈｙ１１２１に接続している装置（例えば記憶ドライブ１７１）の装置ＩＤが設定される。
【００５９】
接続ドライブ種別７２１３には、そのＰｈｙ１１２１に接続している装置の種類を示す情報が設定される。例えばＳＡＳに準拠したハードディスクドライブが接続している場合は接続ドライブ種別７２１３に「ＳＡＳ」が、ＳＡＴＡに準拠したハードディスクドライブが接続している場合は接続ドライブ種別７２１３に「ＳＡＴＡ」が設定される。
【００６０】
Ｐｈｙ状態７２１４には、Ｐｈｙ１１２１の現在の状態を示す情報（利用可（Enable）／閉塞中（Disable））が設定される。ループバック診断結果７２１５には、ループバック診断実行部７１２によって行われたループバック診断の結果（正常／異常）が設定される。ＳＡＴＡデバイス仮想接続フラグ７２１６には、ＳＴＰ／ＳＡＴＡブリッジ７１４を強制的に機能させるか否かを制御するためのフラグが設定される。強制的に機能させる場合は「オン」を、それ以外は「オフ」を設定する。
【００６１】
次に記憶ドライブ１７１に関する障害が発生した場合に、コントローラ１１のドライブ制御部１１１と、エキスパンダ１１２，１２１との間で行われる処理について説明する。尚、上記障害は、例えば記憶ドライブ１７１の障害、記憶ドライブ１７１と当該記憶ドライブ１７１が接続しているＰｈｙ１１２１との間の通信経路の障害、記憶ドライブ１７１が接続するエキスパンダ１１２，１２１の障害等、前述したブロードキャストフレームが送信される契機となる障害である。
【００６２】
図１１は記憶ドライブ１７１に関する障害が発生した場合にドライブ制御部１１１又はエキスパンダ１１２，１２１によって行われる処理（以下、ループバック診断処理Ｓ１１００と称する。）を説明するフローチャートである。尚、以下の説明において、符号の前に付した「Ｓ」の文字はステップを意味する。以下、同図とともにループバック診断処理Ｓ１１００について説明する。
【００６３】
エキスパンダ１１２，１２１は、記憶ドライブ１７１に関する障害が発生したか否かを随時監視している（Ｓ１１１１）。障害の発生を検知すると（Ｓ１１１１：ＹＥＳ）、エキスパンダ１１２，１２１はＰｈｙ１１２１からブロードキャストフレームを送信する（Ｓ１１１２）。
【００６４】
コントローラ１１のドライブ制御部１１１は、エキスパンダ１１２，１２１からブロードキャストフレームを受信すると（Ｓ１１１３）、ディスカバーコマンドを送信する（Ｓ１１１４）。エキスパンダ１１２，１２１は、ディスカバーコマンドを受信すると（Ｓ１１１５）、前述した構成情報をドライブ制御部１１１に送信する（Ｓ１１１６）。ドライブ制御部１１１は、送られてきた構成情報を受信する（Ｓ１１１７）。このようにドライブ制御部１１１はブロードキャストフレームを受信するとディスカバーコマンドを送信する。
【００６５】
次にドライブ制御部１１１は、受信した上記構成情報にＰｈｙ１１２１のリンク（Link）の異常（例えばファイバチャネルのポート間のリンクの異常）を示す情報が含まれているか否かを判定する（Ｓ１１１８）。受信した構成情報にＰｈｙ１１２１のリンク異常を示す情報が含まれていない場合は（Ｓ１１１８：ＮＯ）処理が終了する。一方、受信した構成情報にＰｈｙ１１２１のリンク異常を示す情報が含まれている場合には（Ｓ１１１８：ＹＥＳ）、ドライブ制御部１１１はその構成情報を送信してきたエキスパンダ１１２，１２１にループバック診断コマンドを送信する（Ｓ１１１９）。    
【００６６】
エキスパンダ１１２，１２１は、ループバック診断コマンドを受信すると（Ｓ１１２１）、リンクの異常が生じているＰｈｙ１１２１についてループバック診断を実行し（Ｓ１１２２）、診断結果を接続装置管理テーブル７２１に反映する（Ｓ１１２３）。
【００６７】
続いてエキスパンダ１１２，１２１は、診断結果をコントローラ１１に送信する（Ｓ１１２８）。ドライブ制御部１１１は、上記診断結果を受信すると（Ｓ１１３１）その内容を装置情報管理テーブル６２１に反映する（Ｓ１１３２）。
【００６８】
ところで、以上に説明したループバック診断処理Ｓ１１００は、Ｐｈｙ１１２１間やＰｈｙ１１２１とＰｈｙ１１２１に接続するデバイスとの間のコネクションを確立させずに行うコネクションレス型の診断であるため、コネクションを確立する際に発生する障害を検知することができず、そのような障害については障害が発生した部位を精確に特定することができない。そこで本実施形態のストレージ装置１０では、障害部位をより高い精度で特定できるようにすべく以下に説明する処理（以下、コネクション系診断処理Ｓ１２００と称する。）を行う。  
【００６９】
図１２は、コネクション系診断処理Ｓ１２００を説明するフローチャートである。以下同図とともにコネクション系診断処理Ｓ１２００について説明する。コネクション系診断処理Ｓ１２００は、例えば、ループバック診断処理Ｓ１１００に後続して自動的に起動され実行される。
【００７０】
尚、以下の説明において、ストレージ装置１０は、図１３に示すように１つの基本筐体１０１及びこれにカスケード接続している２つの増設筐体１０２（「増設筐体１」、「増設筐体２」）を備えており、夫々のエキスパンダ１１２，１２１（「Ｅｘｐａｎｄｅｒ１」、「Ｅｘｐａｎｄｅｒ２」、「Ｅｘｐａｎｄｅｒ３」）が同図に示す状態で物理的に接続されているものとする。またコントローラ１１は図１３に示す構成に対応して図１４に示す装置情報管理テーブル６２１を保持しているものとする。またエキスパンダ１１２（「Ｅｘｐａｎｄｅｒ１」）は、図１３に示す構成に対応して図１５に示す接続装置管理テーブル７２１を保持し、エキスパンダ１２１（「Ｅｘｐａｎｄｅｒ２」）は、図１３に示す構成に対応して図１６に示す接続装置管理テーブル７２１を保持し、エキスパンダ１２１（「Ｅｘｐａｎｄｅｒ３」）は、図１３に示す構成に対応して図１７に示す接続装置管理テーブル７２１を保持しているものとする。
【００７１】
図１２に示すように、まずコントローラ１１のドライブ制御部１１１は、装置情報管理テーブル６２１の装置ＩＤ６２１１で特定される装置のうちループバック診断処理Ｓ１１００にて障害が検知されている装置（障害情報６２１２に「障害有り」が設定されている（未選択の）装置（以下、ターゲットデバイスと称する。））を一つ選択する（Ｓ１２１１）。尚、コネクション系診断処理Ｓ１２００は、ループバック診断処理Ｓ１１００にて障害が検知されている全てのターゲットデバイスについて行われる（Ｓ１２１１，Ｓ１２２１）。
【００７２】
続くＳ１２１２では、ドライブ制御部１１１はエキスパンダ１１２，１２１の夫々が管理している接続装置管理テーブル７２１から、コントローラ１１からターゲットデバイスに至る経路に関する情報を取得する。そしてドライブ制御部１１１は、各エキスパンダ１１２，１２１から取得した情報に基づき、コントローラ１１からターゲットデバイスに至る経路に冗長な経路（以下、ワイドリンク（Wide Link）と称する。）の存在有無を調べる（Ｓ１２１３）。
【００７３】
ここでワイドリンクの有無は次のようにして判断する。例えば図１６に示した「Ｅｘｐａｎｄｅｒ２」のエキスパンダ１２１が保持する接続装置管理テーブル７２１の場合、ＰｈｙＩＤ７２１１が「２−１」〜「２−４」の４つのＰｈｙ１１２１の接続装置ＩＤ７２１２のいずれにも「Ｅｘｐａｎｄｅｒ１」が設定されているので「Ｅｘｐａｎｄｅｒ２」と「Ｅｘｐａｎｄｅｒ１」の間には４重のワイドリンクが存在することがわかる。またＰｈｙＩＤ７２１１が「２−５」〜「２−８」のＰｈｙ１１２１の接続装置ＩＤ７２１２のいずれにも「Ｅｘｐａｎｄｅｒ３」が設定されているので、「Ｅｘｐａｎｄｅｒ２」と「Ｅｘｐａｎｄｅｒ３」の間に４重のワイドリンクが存在することがわかる。
【００７４】
Ｓ１２１３においてワイドリンクが存在しないと判断した場合（Ｓ１２１３：無）、ドライブ制御部１１１は後述する障害部位特定処理Ｓ１８００を行う（Ｓ１２１５）。
【００７５】
Ｓ１２１３においてワイドリンクが存在すると判断した場合には（Ｓ１２１３：有）ドライブ制御部１１１はまずワイドリンクに含まれている全ての経路を抽出する（Ｓ１２１６）。例えば図１３の構成において「ＨＤＤ３−１」という記憶ドライブ１７１がターゲットデバイスであり、「Ｅｘｐａｎｄｅｒ１」、「Ｅｘｐａｎｄｅｒ２」、「Ｅｘｐａｎｄｅｒ３」の夫々が保持する接続装置管理テーブル７２１が図１５乃至図１７に示す内容である場合、ドライブ制御部１１１は、「Ｅｘｐａｎｄｅｒ２」と「Ｅｘｐａｎｄｅｒ１」の間に存在する４重のワイドリンクと「Ｅｘｐａｎｄｅｒ２」と「Ｅｘｐａｎｄｅｒ３」の間に存在する４重のワイドリンクとによって構成される１６（＝４×４）の経路を抽出する。
【００７６】
次にドライブ制御部１１１は、Ｓ１２１６にて抽出した経路のうちの一つを選択するとともに（Ｓ１２１７）、選択した経路以外の全ての経路を閉塞する（Ｓ１２１８）。尚、選択した経路以外の全ての経路の閉塞は、ドライブ制御部１１１から各エキスパンダ１１２，１２１にＰｈｙ１１２１の閉塞指示を送信することにより行う。
【００７７】
例えば図１３に示す構成において「Ｐｈｙ１−１」→「Ｐｈｙ２−１」→「Ｐｈｙ２−５」→「Ｐｈｙ３−１」→「Ｐｈｙ３−９」の経路を選択した場合、ドライブ制御部１１１は選択した上記経路以外の経路を構成しているＰｈｙ１１２１、例えば「Ｐｈｙ１−２」、「Ｐｈｙ１−３」、「Ｐｈｙ１−４」、「Ｐｈｙ２−２」、「Ｐｈｙ２−３」、「Ｐｈｙ２−４」、「Ｐｈｙ２−６」、「Ｐｈｙ２−７」、「Ｐｈｙ２−８」、「Ｐｈｙ３−２」、「Ｐｈｙ３−３」、「Ｐｈｙ３−４」を全て閉塞する。尚、コントローラ１１側を上位側とし、記憶ドライブ１７１側を下位側とした場合、閉塞した上位のＰｈｙ１１２１の下位に直接接続しているＰｈｙ１１２１（例えばＰｈｙ１−２を閉塞した場合におけるＰｈｙ２−２）については、上位のＰｈｙ１１２１を閉塞することにより下位のＰｈｙ１１２１も利用できなくなってしまうので、下位のＰｈｙ１１２１については必ずしも閉塞しなくてよい。
【００７８】
選択した経路以外の全ての経路を閉塞した後は（Ｓ１２１８）、ドライブ制御部１１１は後述する障害部位特定処理Ｓ１８００を行う（Ｓ１２１９）。
【００７９】
Ｓ１２２０では、ドライブ制御部１１１は、Ｓ１２１６にて抽出した全ての経路について処理済（Ｓ１２１７にて選択済）か否かを判断する。抽出した全ての経路について処理済であれば（Ｓ１２２０：ＹＥＳ）Ｓ１２２１に進み、処理済でなければ（Ｓ１２２０：ＮＯ）Ｓ１２１７に戻り未選択の経路を選択して同様の処理を繰り返す。
【００８０】
図１８は、前述した障害部位特定処理Ｓ１８００（図１２のＳ１２１５又はＳ１２１９で行われる処理）を説明するフローチャートである。以下同図とともに障害部位特定処理Ｓ１８００について説明する。
【００８１】
まずドライブ制御部１１１は、ターゲットデバイスに通信を確立するためのフレーム（以下、コネクション系フレームと称する。）を送信し（Ｓ１８１１）、その応答に障害を示す情報（以下、障害情報と称する。）が含まれているか否かを調べる（Ｓ１８１２）。コネクション系フレームとしては、例えば「OPEN Address Frame」などがある。
【００８２】
コネクション系フレームに対するターゲットデバイスからの応答に障害情報が含まれていれば（Ｓ１８１２：ＹＥＳ）、ドライブ制御部１１１は、ターゲットデバイスが接続されているエキスパンダ１１２，１２１のＰｈｙ１１２１を閉塞し（Ｓ１８１３）、閉塞したＰｈｙ１１２１を備えるエキスパンダ１１２，１２１の接続装置管理テーブル７２１の当該Ｐｈｙ１１２１のＰｈｙ状態７２１４に「閉塞中」を設定する（Ｓ１８１４）。またドライブ制御部１１１は、装置情報管理テーブル６２１のターゲットデバイスのＰｈｙ状態６２１３に「閉塞中」を設定する（Ｓ１８１５）。そしてドライブ制御部１１１は、障害部位を示す情報（この場合はターゲットデバイスを特定する情報）を外部装置２（例えば障害監視に用いられている情報処理装置）に送信する（Ｓ１８１６）。
【００８３】
例えば図１３の構成において「ＨＤＤ３−１」という記憶ドライブ１７１がターゲットデバイスである場合、ドライブ制御部１１１は「ＨＤＤ３−１」に対してコネクション系フレームを送信し（Ｓ１８１１）、その応答に障害情報が含まれているか否かを調べる（Ｓ１８１２）。応答に障害情報が含まれていれば（Ｓ１８１２：ＹＥＳ）、ドライブ制御部１１１は、「ＨＤＤ３−１」が接続している「Ｅｘｐａｎｄｅｒ３」というエキスパンダ１２１が備える「Ｐｈｙ３−９」というＰｈｙ１１２１を閉塞する（Ｓ１８１３）。そしてドライブ制御部１１１は、閉塞した「Ｐｈｙ３−９」を備える「Ｅｘｐａｎｄｅｒ３」の接続装置管理テーブル７２１（図１７）の「Ｐｈｙ３−９」のＰｈｙ状態７２１４に「閉塞中」を設定し（Ｓ１８１４）、装置情報管理テーブル６２１の「ＨＤＤ３−１」のＰｈｙ状態６２１３に「閉塞中」を設定する（Ｓ１８１５）。またドライブ制御部１１１は「ＨＤＤ３−１」が障害部位である旨を外部装置２に送信する（Ｓ１８１６）。
【００８４】
一方、Ｓ１８１２において、コネクション系フレームに対するターゲットデバイスからの応答に障害情報が含まれていない場合には（Ｓ１８１２：ＮＯ）Ｓ１８３１に進む。
【００８５】
Ｓ１８３１では、ドライブ制御部１１１は、コントローラ１１からターゲットデバイスに至る経路上の全ての装置を診断済か否かを判断する。未診断の装置が存在すれば（Ｓ１８３１：ＮＯ）Ｓ１８３２に進む。全ての装置を診断済であれば（Ｓ１８３１：ＹＥＳ）ドライブ制御部１１１は障害部位を特定することができない旨を示す情報を外部装置２に送信する（Ｓ１８４１）。
【００８６】
Ｓ１８３２では、ドライブ制御部１１１は、ターゲットデバイスに至る経路上の未診断の装置を選択する。例えば図１３の構成においてコントローラ１１からターゲットデバイス（「ＨＤＤ３−１」）に至る経路が「スイッチ回路１」→「Ｐｈｙ１−１」→「Ｐｈｙ２−１」→「スイッチ回路２」→「Ｐｈｙ２−５」→「Ｐｈｙ３−１」→「スイッチ回路３」→「Ｐｈｙ３−９」→「ＨＤＤ３−１」のように設定されている場合、この経路上に存在する「スイッチ回路３」、「スイッチ回路２」、「スイッチ回路１」のいずれかを選択する。
【００８７】
次にドライブ制御部１１１は、選択中の装置に対してコネクション系フレームを送信し（Ｓ１８３３）、その応答に障害を示す情報（以下、障害情報と称する。）が含まれているか否かを調べる（Ｓ１８３４）。そして応答に障害情報が含まれていれば（Ｓ１８３４：ＹＥＳ）、ドライブ制御部１１１は、コントローラ１１から選択中の装置に至る経路上の当該選択中の装置と直接接続しているＰｈｙ１１２１を閉塞し（Ｓ１８３５）、閉塞したＰｈｙ１１２１を備えるエキスパンダ１１２，１２１の接続装置管理テーブル７２１の当該Ｐｈｙ１１２１のＰｈｙ状態７２１４に「閉塞中」を設定する（Ｓ１８３６）。またドライブ制御部１１１は、装置情報管理テーブル６２１の選択中の装置の障害情報６２１２に「障害有り」を、また選択中の装置のＰｈｙ状態６２１３に「閉塞中」を設定する（Ｓ１８３７）。そしてドライブ制御部１１１は、障害部位を示す情報（この場合は選択中の装置を特定する情報）を外部装置２に送信する（Ｓ１８３８）。
【００８８】
例えば図１３の構成において先程と同じ経路が設定されており、Ｓ１８３２にて「スイッチ回路３」を選択中である場合、ドライブ制御部１１１は、コントローラ１１から「スイッチ回路３」に至る経路上の当該「スイッチ回路３」と直接接続している「Ｐｈｙ３−１」を閉塞し（Ｓ１８３５）、「スイッチ回路３」を備える「Ｅｘｐａｎｄｅｒ３」の接続装置管理テーブル７２１（図１７）の「Ｐｈｙ３−１」のＰｈｙ状態７２１４に「閉塞中」を設定し（Ｓ１８３６）、装置情報管理テーブル６２１の「Ｅｘｐａｎｄｅｒ３」の障害情報６２１２に「障害有り」を、また「Ｅｘｐａｎｄｅｒ３」のＰｈｙ状態６２１３に「閉塞中」を設定する（Ｓ１８３７）。そしてドライブ制御部１１１は、「スイッチ回路３」（又は「Ｅｘｐａｎｄｅｒ３」）が障害部位である旨を外部装置２に送信する（Ｓ１８３８）。
【００８９】
また例えば図１３の構成において先程と同じ経路が設定されており、Ｓ１８３２にて「スイッチ回路２」を選択中である場合、ドライブ制御部１１１は、コントローラ１１から「スイッチ回路２」に至る経路上の当該「スイッチ回路２」と直接接続している「Ｐｈｙ２−１」及び「Ｐｈｙ２−５」を閉塞し（Ｓ１８３５）、「スイッチ回路２」を備える「Ｅｘｐａｎｄｅｒ２」の接続装置管理テーブル７２１（図１６）の「Ｐｈｙ２−１」及び「Ｐｈｙ２−５」のＰｈｙ状態７２１４に「閉塞中」を設定し（Ｓ１８３６）、装置情報管理テーブル６２１の「Ｅｘｐａｎｄｅｒ２」の障害情報６２１２に「障害有り」を、また「Ｅｘｐａｎｄｅｒ２」のＰｈｙ状態６２１３に「閉塞中」を設定する（Ｓ１８３７）。そしてドライブ制御部１１１は、「スイッチ回路２」（又は「Ｅｘｐａｎｄｅｒ２」）が障害部位である旨を外部装置２に送信する（Ｓ１８３８）。
【００９０】
また例えば図１３の構成において先程と同じ経路が設定されており、Ｓ１８３２にて「スイッチ回路１」を選択中である場合、ドライブ制御部１１１は、コントローラ１１から「スイッチ回路１」に至る経路上の当該「スイッチ回路１」と直接接続している「Ｐｈｙ１−１」を閉塞し（Ｓ１８３５）、「スイッチ回路１」を備える「Ｅｘｐａｎｄｅｒ１」の接続装置管理テーブル７２１（図１５）の「Ｐｈｙ１−１」のＰｈｙ状態７２１４に「閉塞中」を設定し（Ｓ１８３６）、装置情報管理テーブル６２１の「Ｅｘｐａｎｄｅｒ１」の障害情報６２１２に「障害有り」を、また「Ｅｘｐａｎｄｅｒ１」のＰｈｙ状態６２１３に「閉塞中」を設定する（Ｓ１８３７）。そしてドライブ制御部１１１は、「スイッチ回路１」（又は「Ｅｘｐａｎｄｅｒ１」）が障害部位である旨を外部装置２に送信する（Ｓ１８３８）。
【００９１】
以上に説明したように、本実施形態のストレージ装置１０は、ループバック診断処理Ｓ１１００により障害が検知された装置に対してコネクション系フレームを送信してコネクション系診断処理Ｓ１２００を行い、コネクション系フレームに対する応答に基づき障害部位を特定するので、ループバック診断処理Ｓ１１００のみを行う場合に比べて障害部位を精確に特定することができる。また特定した障害部位のみを停止（閉塞）させるので、不必要な部位まで停止させることがなく、障害による影響範囲が不必要に拡大するのを防ぐことができる。
【００９２】
またストレージ装置１０は、コネクション系フレームに対する応答に障害情報が含まれていなかった場合（Ｓ１８１２：ＮＯ）、ターゲットデバイスに至る経路上に存在する他の装置（ドライブ制御部１１１がコネクション系フレームを未だ送信していないスイッチ回路１１２２）についてさらにコネクション系診断を行うので（Ｓ１８３１：ＮＯ）、コントローラ１１からターゲットデバイスに至る経路上に多数の装置が介在しているような場合でも障害部位を確実に特定することができる。
【００９３】
またストレージ装置１０は、コントローラ１１からターゲットデバイスに至る経路にワイドリンクが存在する場合はワイドリンクに含まれる特定の経路を残してワイドリンクの上記特定の経路以外の経路を閉塞した後にコネクション系診断処理Ｓ１２００を開始するので（Ｓ１２１６〜Ｓ１２２０）、ワイドリンクが存在する場合においても、ワイドリンクが存在しない場合と同様に高い精度で障害部位を特定することができる。
【００９４】
またストレージ装置１０は、診断後に障害部位を示す情報（ターゲットデバイスを特定する情報又は閉塞したＰｈｙ１１２１を特定する情報）を外部装置２に送信するので、オペレータ等は障害部位を精確に把握することができる。
【００９５】
またストレージ装置１０は、リンクの異常を通知してきたエキスパンダ１１２，１２１のみを対象としてループバック診断処理Ｓ１１００を行うので（Ｓ１１１８〜Ｓ１１３２）、必要な部位に対してのみループバック診断処理Ｓ１１００が行われ、ストレージ装置１０の負荷を不必要に上昇させることなく効率よく障害部位の特定を行うことができる。
【００９６】
第２実施形態
次に第２実施形態について説明する。前述したように、ＳＴＰ／ＳＡＴＡブリッジ７１４の仮想接続機能は、エキスパンダ１１２，１２１が備えるいずれのＰｈｙ１１２１にもＳＡＴＡデバイスが接続されていない場合は機能を停止しているので（非活性状態）、Ｐｈｙ１１２１にＳＡＴＡデバイスが接続されていない状態でエキスパンダ１１２，１２１に対してループバック診断処理Ｓ１１００やコネクション系診断処理Ｓ１２００を実施した場合はＳＴＰ／ＳＡＴＡブリッジ７１４の仮想接続機能に生じている障害については検知することができない。そこで本実施形態では、仮想接続設定処理部６１４によりＳＡＴＡデバイス仮想接続フラグ７２１６を「オン」に設定することによりＳＴＰ／ＳＡＴＡブリッジ７１４の仮想接続機能を強制的に機能（活性化）させた状態でループバック診断処理Ｓ１１００及び／又はコネクション系診断処理Ｓ１２００を実施するようにしている。
【００９７】
図１９は、第２実施形態にかかるストレージ装置１０の処理（以下、メイン処理Ｓ１９００と称する。）を説明するフローチャートである。以下同図とともに説明する。
【００９８】
まずコントローラ１１のドライブ制御部１１１は、装置情報管理テーブル６２１を参照し、当該コントローラ１１の配下に接続しているエキスパンダ１１２，１２１の装置ＩＤを取得する（Ｓ１９１１）。
【００９９】
次にドライブ制御部１１１は取得したエキスパンダ１１２，１２１を順に選択し（Ｓ１９１２，Ｓ１９１４）、各エキスパンダ１１２，１２１について後述する診断処理Ｓ２０００を実行する（Ｓ１９１３）。
【０１００】
図２０は、図１９のＳ１９１３における診断処理Ｓ２０００を説明するフローチャートである。以下、同図とともに診断処理Ｓ２０００について説明する。
【０１０１】
まずドライブ制御部１１１は、Ｓ１９１２にて選択中のエキスパンダ１１２，１２１のＰｈｙ１１２１に一つ以上のＳＡＴＡデバイスが接続されているか否かを調べる（Ｓ２０１１）。選択中のエキスパンダ１１２，１２１にＳＡＴＡデバイスが接続されている場合は（Ｓ２０１１：ＹＥＳ）Ｓ２０２１に進む。選択中のエキスパンダ１１２，１２１のいずれのＰｈｙ１１２１にもＳＡＴＡデバイスが接続されていない場合は（Ｓ２０１１：ＮＯ）、Ｓ２０１２に進む。
【０１０２】
Ｓ２０１２では、ドライブ制御部１１１は、選択中のエキスパンダ１１２，１２１の接続装置管理テーブル７２１にアクセスし、選択中のエキスパンダ１１２，１２１に未使用（接続装置ＩＤ７２１２が設定されていない）のＰｈｙ１１２１が存在するか否かを調べる。未使用のＰｈｙ１１２１が存在する場合は（Ｓ２０１２：ＹＥＳ）Ｓ２０１５に進む。一方、未使用のＰｈｙ１１２１が存在しない場合は（Ｓ２０１２：ＮＯ）使用中のＰｈｙ１１２１を選択し、選択したＰｈｙ１１２１の接続装置管理テーブル７２１のＰｈｙ状態７２１４に「閉塞中」を設定（Ｓ２０１４）した後にＳ２０１５に進む。
【０１０３】
Ｓ２０１５では、ドライブ制御部１１１は、選択中のエキスパンダ１１２，１２１の接続装置管理テーブル７２１の、選択したＰｈｙ１１２１のＳＡＴＡデバイス仮想接続フラグ７２１６に「オン」を設定する。これによりＳＴＰ／ＳＡＴＡブリッジ７１４の仮想接続機能が強制的に活性化される。その後はＳ２０２１に進む。
【０１０４】
Ｓ２０２１では、ドライブ制御部１１１は、選択中のエキスパンダ１１２，１２１に対して第１実施形態にて説明したループバック診断処理Ｓ１１００及び／又はコネクション系診断処理Ｓ１２００を実施する。
【０１０５】
Ｓ２０２２では、ドライブ制御部１１１は、Ｓ２０２１の診断処理の結果、障害が検出されたか否かを判断する。障害が検出されていない場合は（Ｓ２０２２：ＹＥＳ）、図１９のＳ１９１４に戻り、障害が検出された場合は（Ｓ２０２２：ＮＯ）、Ｓ２０２３に進む。
【０１０６】
Ｓ２０２３では、Ｓ２０１５にて「オン」に設定したＰｈｙ１１２１のＳＡＴＡデバイス仮想接続フラグ７２１６を「オフ」に戻す。Ｓ２０２４では、Ｓ２０１４にて「閉塞中」を設定したＰｈｙ１１２１にＳ２０２１の診断処理において障害が検出されたか否かを判断する。障害が検出されている場合は（Ｓ２０２４：ＹＥＳ）図１８のＳ１９１４に戻る。障害が検出されていない場合は（Ｓ２０２４：ＮＯ）、Ｓ２０１４にて「閉塞中」を設定したＰｈｙ１１２１の接続装置管理テーブル７２１のＰｈｙ状態７２１４に「利用可」を設定（Ｓ２０２５）した後、図１９のＳ１９１４に戻る。
【０１０７】
以上に説明したように、ストレージ装置１０は、エキスパンダ１１２，１２１のＰｈｙ１１２１にＳＡＴＡデバイスが一つも接続されていない場合は、ＳＴＰ／ＳＡＴＡブリッジ７１４の仮想接続機能を強制的に機能（活性化）させ、仮想接続機能を機能させた状態でループバック診断Ｓ１１００及び／又はコネクション系診断処理Ｓ１２００を行うので、Ｐｈｙ１１２１にＳＡＴＡデバイスが接続されていない場合でもＳＴＰ／ＳＡＴＡブリッジ７１４の仮想接続機能に関する障害を確実に検知することができ、障害部位を精確に特定することができる。
【０１０８】
またエキスパンダ１１２，１２１のＰｈｙ１１２１にＳＡＴＡデバイスが一つも接続されておらず（Ｓ２０１１：ＮＯ）、かつ、エキスパンダ１１２，１２１に未使用のＰｈｙ１１２１が存在しない場合（Ｓ２０１２：ＮＯ）、ストレージ装置１０はエキスパンダ１１２，１２１のＰｈｙ１１２１を強制的に閉塞してからＳＴＰ／ＳＡＴＡブリッジ７１４の機能を活性化させるので、エキスパンダ１１２，１２１のＰｈｙ１１２１にＳＡＴＡデバイスが一つも接続されておらず、かつ、エキスパンダ１１２，１２１に未使用のＰｈｙ１１２１が存在しない場合でも、ＳＴＰ／ＳＡＴＡブリッジ７１４の機能を確実に活性化させて診断を行うことができる。このため、ＳＴＰ／ＳＡＴＡブリッジ７１４の仮想接続機能に関する障害を確実に検知することができ、障害部位を精確に特定することができる。  
【０１０９】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図１】
0005416843.tif 000002
【図２】
0005416843.tif 000003
【図３】
0005416843.tif 000004
【図４】
0005416843.tif 000005
【図５】
0005416843.tif 000006
【図６】
0005416843.tif 000007
【図７】
0005416843.tif 000008
【図８】
0005416843.tif 000009
【図９】
0005416843.tif 000010
【図１０】
0005416843.tif 000011
【図１１】
0005416843.tif 000012
【図１２】
0005416843.tif 000013
【図１３】
0005416843.tif 000014
【図１４】
0005416843.tif 000015
【図１５】
0005416843.tif 000016
【図１６】
0005416843.tif 000017
【図１７】
0005416843.tif 000018
【図１８】
0005416843.tif 000019
【図１９】
0005416843.tif 000020
【図２０】
0005416843.tif 000021