(57)【要約】【課題】デバイス異常の影響を最小限にし、処理の迅速化や多段接続の利便性を高めることにある。【解決手段】デバイスを接続する複数のポート（物理ポート４０、４１、４２、４３）と、各ポートから得られるデバイス情報を記録する記憶部（８）と、前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる処理部（６）とを備える。【選択図】図１
2011243064.tif 000002
【特許請求の範囲】
【請求項１】
デバイスを接続する複数のポートと、
各ポートから得られるデバイス情報を記録する記憶部と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる処理部と、
を備えることを特徴とする接続拡張装置。
【請求項２】
前記処理部は、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御することを特徴とする請求項１に記載の接続拡張装置。
【請求項３】
デバイスを接続する複数のポートを備え、各ポートから得られるデバイス情報を記録する第１の記憶部を備える接続拡張部と、
前記接続拡張部が前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記第１の記憶部に保持させた際に、これらデバイス情報を記憶する第２の記憶部と、
を備えることを特徴とするストレージシステム。
【請求項４】
更に、上位側装置からのデバイス情報の問い合わせに対し、前記第２の記憶部にある前記デバイス情報を出力する制御部と、
を備えることを特徴とする請求項３に記載のストレージシステム。
【請求項５】
接続拡張装置に搭載されたコンピュータに実行させる接続拡張制御プログラムであって、
デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する機能と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる機能と、
を前記コンピュータに実行させる接続拡張制御プログラム。
【請求項６】
デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録するステップと、
デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させるステップと、
を含むことを特徴とする接続拡張制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデバイスの多段接続制御に関し、例えば、ＳＡＳ〔Serial Attached SCSI（Small Computer System interface ）〕エキスパンダ等の接続拡張装置、該接続拡張装置を含むストレージシステム、接続拡張制御プログラム及び接続拡張制御方法に関する。
【背景技術】
【０００２】
記憶装置等の多数のデバイスを多段接続する場合には、接続拡張のために接続拡張装置が用いられる。多段接続される例えば、ＳＡＳデバイスにあっては、接続拡張のためにＳＡＳエキスパンダが用いられる。このエキスパンダの上位装置である入出力（ＩＯ）コントローラでは、エキスパンダに接続後、配下にある全てのデバイスをエキスパンダを通してディスカバリ（Discovery ）と称する状態確認処理により認識する。このDiscovery 処理にはデバイスの状態を認識するデバイス認識処理が含まれ、この処理ではデバイス故障や接続切れ等のデバイス異常が認識される。
【０００３】
このようなストレージシステムにおいて、ＳＡＳデバイスを多段接続する構成や、ＳＡＳエキスパンダに対しての情報設定、障害情報の採取等が行われることが知られている（特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２４２８７２公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、多段接続構成では、特定のエキスパンダ配下にあるデバイス異常等で構成変化を生じると、構成変更中状態（Configuring 状態）に移行するが、特定のエキスパンダ以外のエキスパンダもConfiguring 状態となる。この場合、ＩＯコントローラは、Configuring 状態にあるエキスパンダ配下のデバイスに対してＩＯ発行ができない。即ち、Configuring 状態にあるエキスパンダ配下のデバイスに対する入出力アクセスができない。
【０００６】
このような状態はエキスパンダの多段接続環境を損ない、多段接続の規模が大きければ、使用できないデバイスが増加することになり、多段接続環境のメリットが得られないこととなる。
【０００７】
そこで、本開示の接続拡張装置、ストレージシステム、接続拡張制御プログラム及び接続拡張制御方法の目的は、デバイス異常の影響を最小限にし、処理の迅速化や多段接続の利便性を高めることにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本開示の接続拡張装置は、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部に保持させる処理部を含む。
【０００９】
上記目的を達成するため、本開示のストレージシステムの一側面では例えば、第１の記憶部を含む接続拡張部と、第２の記憶部とを備える。前記接続拡張部では、デバイスを接続する複数のポートを備え、各ポートから得られるデバイス情報を第１の記憶部に記録する。前記第２の記憶部は、前記接続拡張部が前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記第１の記憶部に保持させた際に、これらデバイス情報を記憶する。
【００１０】
上記目的を達成するため、本開示の接続拡張制御プログラムの一側面は、接続拡張装置に搭載されたコンピュータに実行させる接続拡張制御プログラムであって、例えば、記録機能や記録制御機能を含む。記録機能では、デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する。記録制御機能は、例えば、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部に保持させる。
【００１１】
上記目的を達成するため、本開示の接続拡張制御方法の一側面は、例えば、記録ステップと、記録制御ステップとを含む。前記記録ステップでは、デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する。前記記録制御機能では、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部に保持させる。
【発明の効果】
【００１２】
本開示の接続拡張装置、ストレージシステム、接続拡張制御プログラム及び接続拡張制御方法によれば、次のような効果が得られる。
【００１３】
(1) 異常デバイスが属するポートを絞り込み、そのポートに属するデバイス情報を無効にし、正常デバイスが属するポートのデバイス情報を保持するので、入出力処理を迅速化でき、多段接続の利便性を高めることができる。
【００１４】
(2) 異常デバイスが属するポートのみを特定し、各ポートに対する構成確認中状態を最小限にでき、確認処理から入出力状態への処理の迅速性を図ることができる。
【００１５】
そして、本発明の他の目的、特徴及び利点は、添付図面及び各実施の形態を参照することにより、一層明確になるであろう。
【図面の簡単な説明】
【００１６】
【図１】第１の実施の形態に係るエキスパンダの多段接続の構成例を示す図である。
【図２】デバイス確認処理の処理手順の一例を示すフローチャートである。
【図３】第２の実施の形態に係るストレージシステムの一例を示す図である。
【図４】ストレージシステムの処理手順の一例を示すフローチャートである。
【図５】第３の実施の形態に係るエキスパンダユニットの一例を示す図である。
【図６】ストレージシステムの一例を示す図である。
【図７】ストレージシステムの概要を示す図である。
【図８】エキスパンダを用いた多段接続の構成例を示す図である。
【図９】デバイス認識処理の処理手順の一例を示すフローチャートである。
【図１０】ルーティングテーブルの一例を示す図である。
【図１１】ブロードキャスト（チェンジ）発行処理の処理手順の一例を示すフローチャートである。
【図１２】正常時のルーティングテーブルの一例を示す図である。
【図１３】ディスカバリ処理完了前のルーティングテーブルの一例を示す図である。
【図１４】ディスカバリ処理完了後のルーティングテーブルを示す図である。
【図１５】ルーティングテーブルの再作成の処理手順の一例を示すフローチャートである。
【図１６】ディスカバリ処理（通常時）の処理手順の一例を示すフローチャートである。
【図１７】デバイスアドレス情報の取得処理の一例を示すフローチャートである。
【図１８】デバイス情報取得の処理手順の一例を示すフローチャートである。
【図１９】デバイスマップの一例を示す図である。
【図２０】構成確認完了後のディスカバリ処理の処理手順を示すフローチャートである。
【図２１】ディスカバリ処理後のデバイスマップを示す図である。
【図２２】ディスカバリの全処理手順の一例を示すフローチャートである。
【図２３】他の実施の形態に係るルーティングテーブルの一例を示す図である。
【図２４】デバイス認識処理の比較例を示すフローチャートである。
【図２５】ルーティングテーブルの作成手順の比較例を示すフローチャートである。
【図２６】ディスカバリの全処理手順の比較例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
〔第１の実施の形態〕
【００１８】
この第１の実施の形態について、図１を参照する。図１は、エキスパンダの多段接続の構成例を示している。
【００１９】
エキスパンダ２は、本開示の接続拡張装置の一例であって、デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を記憶部８に記憶する。このエキスパンダ２は、複数の記憶装置等のデバイスの多段接続及びその接続切替えに用いられるスイッチデバイスであって、このエキスパンダ（ＥＸＰ：Expander）２には、図１に示すように、複数の物理ポート（Ｐｈｙ）４０、４１、４２、４３と、処理部６と、既述の記憶部８とを備える。
【００２０】
Ｐｈｙ４０、４１、４２、４３は、それぞれに他のエキスパンダや記憶装置等、単一又は複数のデバイスが接続される接続ポートである。Ｐｈｙ４０にはエキスパンダ（ＥＸＰ）９０を介してデバイス１０１、１０２・・・１０Ｎが接続され、Ｐｈｙ４１にはＥＸＰ９１を介してデバイス１１１、１１２・・・１１Ｎが接続されている。Ｐｈｙ４２にはＥＸＰ９２を介してデバイス１２１、１２２・・・１２Ｎが接続され、Ｐｈｙ４３にはＥＸＰ９３を介してデバイス１３１、１３２・・・１３Ｎが接続されている。ここで、デバイス１０１〜１３Ｎは例えば、ＳＡＳデバイスであり、具体的にはディスク記憶装置である。
【００２１】
処理部６は、プロセッサによって実現され、Ｐｈｙ４０、４１、４２、４３に接続された下位のＥＸＰ９０〜９３の選択手段として機能する。
【００２２】
記憶部８は、既述のデバイスを表すデバイス情報を記憶する記憶手段であって、デバイス確認処理で得られたデバイス情報１２を記録している。このデバイス情報１２の記憶にはテーブルを作成して格納すればよい。
【００２３】
斯かる構成では、ＥＸＰ２に状態情報の取得処理として例えば、デバイス認識処理により、全デバイス１０１〜１３Ｎからデバイス情報が通知される。このデバイス情報の通知を受け、ＥＸＰ２には各デバイスの状態を表すデバイス情報１２が記憶部８に書き込まれる。このデバイス情報１２は、Ｐｈｙ４０〜４３を表す物理ポート情報とともに記憶部８に記憶する。
【００２４】
この場合、デバイス情報１２には、正常デバイス及び異常デバイスの双方の情報が含まれる。そこで、状態情報から異常デバイスが属する物理ポートを絞り込み、異常デバイスが属する物理ポートを単位として異常デバイスを表すデバイス情報を破棄又は無効にし、正常デバイスを表すデバイス情報を記憶部８に保持する。
【００２５】
斯かる構成では、デバイス異常が通知された物理ポートを絞り込んで物理ポート単位でデバイス情報を破棄又は無効にするので、異常デバイスが存在しない物理ポートに対しては入出力（「ＩＯ発行」と称する）を可能にすることができる。即ち、デバイス異常が通知された物理ポートに限定して構成確認を実行し、異常デバイスが存在しない物理ポートまで構成確認中状態となるのを防止している。このため、デバイス確認処理及び確認デバイス範囲を最小限に止め、正常デバイスに対してはＩＯ発行を可能とするので、ＥＸＰによる多段接続の利点を活かすことができる。
【００２６】
この処理手順について、図２を参照する。図２は、デバイス確認処理の処理手順の一例を示している。
【００２７】
この処理手順は、本開示の接続拡張制御方法又は接続拡張制御プログラムの一例であって、図２に示すように、電源の投入や駆動指示により駆動開始する（ステップＳ１１）。この駆動開始を契機として、デバイスの状態確認が実行され（ステップＳ１２）、状態情報としてデバイス情報１２が記憶部８に記録される。このデバイス情報１２は例えば、後述のルーティングテーブル等、テーブル形態で格納すればよい。
【００２８】
各Ｐｈｙ４０〜４３から受け取った状態情報を参照し、異常確認を行う（ステップＳ１３）。この異常確認により、異常デバイスが存在しなければ、この処理を終了する。異常デバイスが存在すれば、そのデバイス情報から異常デバイスの属する物理ポート（この場合、Ｐｈｙ４０、４１、４２、４３の何れか）を特定する（ステップＳ１４）。
【００２９】
異常デバイスが属する物理ポートが特定された場合、デバイス情報の確認処理を実行する（ステップＳ１５）。この場合、異常デバイスが属する物理ポートに属するデバイス情報を破棄又は無効にし、正常デバイスの属する物理ポートに属するデバイス情報は記憶部８に保持する。
【００３０】
そこで、異常デバイスに対しては、異常デバイスが属する物理ポートとして例えば、Ｐｈｙ４３のみを状態確認対象として状態確認を実行し（即ち、部分状態確認）、他の物理ポートに対してはＩＯ発行を可能にする。そして、異常デバイスが属する物理ポートの状態確認が完了すれば、得られたデバイス情報を以て記憶部８の記録内容を更新すればよい。
【００３１】
斯かる構成とすれば、異常デバイスが属する物理ポートを絞り込み、その物理ポートに属するデバイス情報を無効にし、正常デバイスが属する物理ポートのデバイス情報を保持するので、入出力処理を迅速化でき、多段接続の利便性が高められる。
【００３２】
また、異常デバイスが属する物理ポートのみを特定し、各物理ポートに対する構成確認中状態を最小限にでき、確認処理から入出力状態への処理の迅速性が図られる。
【００３３】
〔第２の実施の形態〕
【００３４】
第２の実施の形態について、図３を参照する。図３は、第２の実施の形態に係るストレージシステムの一例を示している。図３において、図１と同一部分には同一符号を付してある。
【００３５】
このストレージシステム２０は、本開示のストレージシステムの一例であって、既述の接続拡張装置を用いたストレージシステムである。そこで、このストレージシステム２０では、既述のＥＸＰ２の上位側に入出力制御部２２と、ホスト２４とを備えている。
【００３６】
ＥＸＰ２は、接続拡張部の一例であって、既述の構成と同一であるので、各機能部の説明を省略する。
【００３７】
入出力制御部２２は、デバイス情報を格納する記憶部２６を備えている。記憶部２６は、第１の記憶部（請求項３）の一例である記憶部８に対し、第２の記憶部（請求項３）の一例である。この記憶部２６は、ＥＸＰ２より上位側でデバイス情報１２を格納する手段の一例である。ホスト２４からの問い合わせに対する応答情報としてデバイス情報１２が提供される。
【００３８】
ホスト２４は、ストレージシステム２０のデバイス１０１、１０２・・・・・１３Ｎに対するデータの書き込みや読出しを制御する上位装置としてのコンピュータである。
【００３９】
斯かる構成によれば、デバイス情報を記録する記憶部８を備える接続拡張部としてのＥＸＰ２を備え、デバイス情報により異常デバイスが存在する物理ポートが特定され、その物理ポート及びその異常等を表す情報が記憶部８に格納される。また、記憶部８には状態確認処理後のデバイス情報が格納される。そこで、これらのデバイス情報１２が入出力制御部２２側にある記憶部２６に転送されて格納されている。
【００４０】
このデバイス情報１２は正常デバイスや異常デバイス等を表すデバイス情報であって、具体的にはデバイス番号、ステータス情報として有効か無効かを表す情報である。このデバイス情報１２は、ホスト２４等の上位装置側からの問い合わせに対して通知される。
【００４１】
次に、ストレージシステム２０の処理手順について、図４を参照する。図４は、ストレージシステムの処理手順の一例を示している。
【００４２】
この処理手順は、本開示の接続拡張制御方法又は接続拡張制御プログラムの一例であって、図４に示すように、デバイスを接続する複数の物理ポートから得られるデバイス情報１２を記憶部８に記録する（ステップＳ２１）。この場合、デバイス情報１２により異常デバイスが存在する物理ポートを特定し、該物理ポートに属するデバイス情報１２を無効にするとともに、正常デバイスのデバイス情報１２を記憶部８に保持させる（ステップＳ２２、Ｓ２３）。
【００４３】
そして、デバイス情報１２を入出力制御部２２の記憶部２６に転送し保持する（ステップＳ２４）。
【００４４】
この場合、デバイス情報１２に変動があれば、記憶部８のデバイス情報１２に連動して記憶部２６側のデバイス情報１２を修正すればよい。
【００４５】
このように、ＥＸＰ２の上位側にある入出力制御部２２の記憶部２６にデバイス情報１２を保持し、このデバイス情報１２が記憶部８に連動している。そこで、ホスト２４側からの問い合わせに対し、最新のデバイス情報１２を提供できるとともに、既述のＥＸＰ２の部分確認処理に応じたデバイス情報であるので、入出力処理の迅速化に寄与する。
【００４６】
〔第３の実施の形態〕
【００４７】
第３の実施の形態について、図５を参照する。図５はエキスパンダユニットの一例を示している。
【００４８】
エキスパンダユニット２００は、本開示の接続拡張装置の一例であって、ＥＸＰの多段接続によって多数のデバイスの接続を可能にするとともに、状態変化時における部分状態確認として部分ディスカバリ（Discovery ）を実現する。このエキスパンダユニット２００は、記憶装置等の多数のＳＡＳデバイスを接続する場合、ＳＡＳ接続拡張のために用いられる。このエキスパンダユニット２００は、図５に示すように、エキスパンダチップ（Expander Chip ）２０２と、プログラマブル論理デバイス（ＰＬＤ：Programmable Logic Device ）２０４と、電源２０６と、スイッチ部２０８とを備える。
【００４９】
エキスパンダチップ２０２は、プロセッサ２１０、メモリ２１２、ポート部（Serial）２１４、ポート部（Ether ）２１６、物理ポート２１８を備える。プロセッサ２１０は、既述の処理部６（第１の実施の形態）に対応する処理手段であって、ＳＡＳデバイスの選択接続の制御を行う。そこで、プロセッサ２１０は、ＳＭＰ（Serial Management Protocol）論理デバイス２２０、ＳＳＰ（Serial SCSI Protocol）論理デバイス２２２を備え、これらの制御や、ＳＡＳの物理ポート２１８の制御、ポート部２１４、２１６の制御も行う。
【００５０】
メモリ２１２は第１の記憶部の一例であって、このメモリ２１２には第１のテーブルとして後述するルーティングテーブル２２４が格納され、このルーティングテーブル２２４はデバイス情報を格納する手段の一例である。このルーティングテーブル２２４には、物理ポート毎のデバイスを表すデバイス情報が格納される。
【００５１】
ＰＬＤ２０４は、常時接続状態（常駐）にある電源２０６で動作するデバイスであって、エキスパンダチップ２０２の給電制御等を行う。この場合、ＰＬＤ２０４の制御出力がスイッチ部２０８に加えられ、導通したスイッチ部２０８を通して電源２０６からエキスパンダチップ２０２に給電される。
【００５２】
物理ポート２１８には、複数の物理ポートとして例えば、Ｐｈｙ０〜２３を備え、各Ｐｈｙ０〜２３にはＳＡＳデバイスとして例えば、ＨＤＤ（Hard Disk Drive ）やＳＳＤ（Solid State Drive ）等の記憶装置が接続される。
【００５３】
次に、ストレージシステムについて、図６を参照する。図６は、ストレージシステムの一例を示している。
【００５４】
このストレージシステム３００は、本開示のストレージシステムの一例であって、既述の複数のエキスパンダユニット２００で構成される。
【００５５】
そこで、このストレージシステム３００では、図６に示すように、既述のエキスパンダユニット２００を用いたＳＡＳデバイスの多段接続構成であって、サーバ（ホスト）３０２と、上位側の筐体３０４と、下位側の複数の筐体からなる筐体群３０６とが備えられている。筐体群３０６を構成すＥＸＰは、既述のエキスパンダユニット２００で構成すればよい。サーバ３０２は、既述のホスト２４（図３）に対応する上位装置の一例であり、ストレージシステム３００の内部に記載しているが、ストレージシステム３００の外部装置として構成してもよい。
【００５６】
筐体３０４には、既述の入出力制御部２２（図３）の一例として、第１のコントローラモジュール（ＣＭ：Controller Module ）３０８と、第２のコントローラモジュール（ＣＭ）３１０とを備えている。ＣＭ３０８には、チャンネルアダプタ（Channel Adapter ）３１２、プロセッサ３１４、メモリ３１６、ＳＡＳＩＯコントローラ３１８（ＩＯＣ  ０）、ＥＸＰ３２０（ＥＸＰ００）を備えている。また、他方のＣＭ３１０も同一構成であって、チャンネルアダプタ４１２、プロセッサ４１４、メモリ４１６、ＳＡＳＩＯコントローラ４１８（ＩＯＣ  １）、ＥＸＰ４２０（ＥＸＰ０１）を備えている。ＥＸＰ３２０（ＥＸＰ００）、ＥＸＰ４２０（ＥＸＰ０１）は既述のエキスパンダユニット２００で構成される。
【００５７】
メモリ３１６は第２の記憶部の一例であって、このメモリ３１６にはデバイスマップ４２２が格納され、メモリ４１６は第２の記憶部の一例であって、このメモリ４１６にはデバイスマップ４２４が格納される。デバイスマップ４２２、４２４はルーティングテーブル２２４（図５）に対して第２のテーブルを構成し、デバイス情報を格納する手段である。そこで、デバイスマップ４２２にはＥＸＰ００側の異常デバイスのデバイス情報が格納され、デバイスマップ４２４にはＥＸＰ０１側の異常デバイスのデバイス情報が格納される。
【００５８】
そして、筐体群３０６側には、ＥＸＰ３２０（ＥＸＰ００）に着目すると、ＥＸＰ１０、１１、１２、１３が接続され、その下位側にはＥＸＰ２０、２１、２２、２３が備えられている。
【００５９】
斯かる構成では、サーバ３０２からＦＣ、ｉＳＣＳＩ、ＳＡＳ等のホストインタフェース（Host Interface）を通して筐体群３０６のＨＤＤやＳＳＤ等の記憶装置へ発行されたＩＯアクセスは、ＣＭ３０８、３１０内のチャンネルアダプタ３１２、４１２で受けられる。そして、ＩＯＣ３１８、４１８からＥＸＰ００又はＥＸＰ０１を通して対象のＳＡＳディスク装置に対してＳＡＳのＩＯが発行される。
【００６０】
また、このように複数のＥＸＰ００、０１、１０〜１３、２０〜２３を用いれば、ＩＯＣ３１８、４１８に多数のＳＡＳデバイスを多段接続することができる。
【００６１】
次に、ＳＡＳ接続構成について、図７及び図８を参照する。図７は、簡易なＳＡＳ接続の構成例を示し、図８は、エキスパンダの多段接続構成の一例を示している。
【００６２】
既述の構成例（図６）からＩＯＣ３１８、ＥＸＰ３２０（ＥＸＰ００）及びＥＸＰ１０〜１３を抽出すると、図７に示すように、ＩＯＣ３１８にＥＸＰ００が接続され、その下位側にＥＸＰ１０〜１３が接続された構成となる。そして、ＥＸＰ１０には例えば、複数のデバイス１０１・・・１０Ｆ、ＥＸＰ１１には例えば、複数のデバイス１１１・・・１１Ｆが接続されている。また、ＥＸＰ１２には例えば、複数のデバイス１２１・・・１２Ｆ、ＥＸＰ１３には例えば、複数のデバイス１３１・・・１３Ｆが接続されている。これらデバイス１０１〜１３Ｆは例えば、ディスク装置である。この場合、デバイス１３Ｆに付されたＸは、デバイス１３Ｆが接続不良等の異常デバイスであることを表している。
【００６３】
このような接続構成について、接続完了後、ディスカバリ（Discovery ）処理によってＥＸＰ１０〜ＥＸＰ１３配下の全てのデバイスを認識する。
【００６４】
また、既述の構成例（図６）からＩＯＣ３１８、ＥＸＰ３２０及びＥＸＰ１０〜１３、２０〜２３を抽出すると、図８に示すように、ＩＯＣ３１８にＥＸＰ３２０が接続されている。その下位側にＥＸＰ１０〜１３が存在し、ＥＸＰ１０にはＥＸＰ２０、ＥＸＰ１１にはＥＸＰ２１、ＥＸＰ１２にはＥＸＰ２２、ＥＸＰ１３にはＥＸＰ２３が接続されている。このようなＥＸＰの多段構成により、多数のデバイス１０１〜１３Ｆ、デバイス２０１〜２３Ｆが接続され、入出力処理を可能にしている。この図８に示す多段構成において、デバイス１３Ｆに付されたＸは、説明の都合上、デバイス１３Ｆが接続不良等の異常デバイスであることを表している。
【００６５】
次に、以下の処理手順で使用するコマンド等の用語を説明する。
【００６６】
“ＳＭＰFunction”について、ＳＭＰ（ＳＡＳ Management Protocol）はＳＡＳエキスパンダを管理するプロトコルである。物理ポート（Ｐｈｙ）の制御、エキスパンダのルーティング情報の構築、トポロジーの構築、ＳＡＳ接続のリンクネゴシエーション等に用いられる。後述するリポートジェネラル（Report General）、ディスカバー（Discover）、リポートルートインフォメーション（Report Route Information）はＳＭＰFunctionに含まれる。下位に接続されるＥＸＰに対してＩＯＣや上位ＥＸＰから発行される。
【００６７】
“Report General”は、ＥＸＰに対してConfiguring 中かどうか、また、そのＥＸＰが持っているＰｈｙの数を問い合わせるためのコマンドである。
【００６８】
“Discover”は、Ｐｈｙの接続状態を知りたいＥＸＰに向けて発行するコマンドで、コマンドを受けたＥＸＰのＰｈｙに直接接続されるデバイスのデバイス情報を返す。このデバイス情報は、接続されるデバイスを表す情報であって、例えば、接続されるデバイスが記憶装置であることを表す情報、接続されるデバイスがＥＸＰであることを表す情報等である。
【００６９】
“Report Route Information”は、配下即ち、“Report Route Information”を受け取ったＥＸＰに接続された下位側のＥＸＰに接続されるデバイスの接続状態を取得するコマンドである。即ち、コマンドを受けたＥＸＰのＰｈｙに直接接続されるデバイス情報ではなく、そのＥＸＰの先に接続された全てのデバイスの接続情報を返す。
【００７０】
“ Broadcast（Change）”は、状態変化が発生したことをＥＸＰが他のデバイスに通知するためのコマンドである。Ｐｈｙのリンクアップ又はダウン（Link Up 又はDown）、ディスクの抜き挿し等、状態変化があったときに発行される。 Broadcast（Change）を受信したデバイスは、その Broadcast（Change）が何れのデバイスから発行されたものかを識別することはできない。
【００７１】
次に、このディスカバリ処理の手順について、図９を参照する。図９は、デバイス認識処理の手順を示している。
【００７２】
この処理手順は、ディスカバリ処理によるデバイス認識処理の基本動作であって、次の通りである。
【００７３】
１）ＥＸＰ００及びＥＸＰ１０〜ＥＸＰ１３に対する電源をＯＮする（ステップＳ１０１）。
【００７４】
２）給電開始により、ＥＸＰ１０〜ＥＸＰ１３は配下にあるデバイス認識処理を開始する（ステップＳ１０２）。Configuring 状態は、構成変更中となる。
【００７５】
３）ＥＸＰ００は  ＥＸＰ１０〜ＥＸＰ１３に対してＳＭＰ  Functionのリポートジェネラル（Report General）によってConfiguring 状態かどうかを確認する（ステップＳ１０３）。配下のＥＸＰ１０〜ＥＸＰ１３が構成変更中であるため、自身も構成が確定せず、Configuring 状態となる。
【００７６】
４）ＥＸＰ１０〜ＥＸＰ１３について、配下にあるデバイス認識処理が完了する（ステップＳ１０４）（Configuring の終了）。その際、接続されているＥＸＰ００に対して Broadcast（Change）を発行する。
【００７７】
５）ＥＸＰ００は Broadcast（Change）を受信すると、ＥＸＰ１０〜ＥＸＰ１３に対してＳＭＰFunctionのReport GeneralによってConfiguring 状態かどうかを確認する（ステップＳ１０５）。このステップＳ１０５では、Configuring 状態ではないことが確認できると、ＳＭＰFunctionのDiscoverやReport Route Informationを、ＥＸＰ１０〜ＥＸＰ１３に対して発行する。また、デバイス情報（ＳＡＳアドレス、物理ポート情報）を取得して、自身のメモリ領域にルーティングテーブル（Routing Table ）を作成する。
【００７８】
６）ＥＸＰ００はＥＸＰ１０〜ＥＸＰ１３から情報取得完了後、自身のConfiguring 状態を解除し、ＩＯＣに対して Broadcast（Change）を発行する（ステップＳ１０６）。
【００７９】
７）ＩＯＣはＥＸＰ００からの Broadcast（Change）受信、Configuring 解除に伴い、同様にＳＭＰFunctionをＥＸＰ００に発行し、デバイス情報を取得する（ステップＳ１０７）。その後、全デバイスに対してＩＯ発行が可能となる。
【００８０】
これにより、ＩＯＣ−エキスパンダ構成でのデバイス認識処理の基本動作が終了する。
【００８１】
次に、ルーティングテーブル２２４について、図１０を参照する。図１０は、ルーティングテーブルの一例を示す図である。
【００８２】
このルーティングテーブル２２４は、ＥＸＰが持つデバイスのＩＯをルーティングする機能手段であって、メモリ２１２（図５）に備えている。このルーティングテーブル２２４に格納されたルーティング情報に基づき、ＳＡＳアドレスに対するルーティングを実行する。
【００８３】
そこで、ルーティングテーブル２２４には図１０に示すように、物理ポート格納部４２６とインデックス格納部４２８とが設定されている。この場合、ＥＸＰの物理ポート（Ｐｈｙ）の数をＭ、各Ｐｈｙ毎に記述できるＳＡＳアドレスの数をＮとすると、物理ポート格納部４２６には、複数の物理ポート情報を表す物理ポート番号として例えば、Ｐｈｙ０、Ｐｈｙ１・・・ＰｈｙＭ−１が設定され、インデックス格納部４２８には複数のインデックス情報を表すインデックス番号として例えば、Index １、Index ２・・・Index Ｎが設定されている。この実施の形態では、ルーティングテーブル２２４は、行方向に物理ポート番号、列方向にインデックス番号が設定され、これら２つの情報で特定される項目部４３０にデバイスアドレスが格納される。
【００８４】
このルーティングテーブル２２４には、ＥＸＰのＰｈｙ毎に接続されるＳＡＳデバイスとして例えば、ＥＸＰやディスクのデバイスアドレスが記述される。即ち、インデックス番号と物理ポート番号で指定される各項目部４３０にデバイスアドレスが例えば、８〔バイト〕で記述される。
【００８５】
そして、このルーティングテーブル２２４は、ＥＸＰのディスカバリ処理即ち、デバイス認識処理によって作成される。このデバイス認識処理で実行されるのは、ＥＸＰの立ち上がり時、構成変更に伴うブロードキャスト〔 Broadcast（Change）〕の受信時である。このディスカバリ処理では、ＳＭＰFunctionのリポートジェネラル（Report General）やディスカバー（Discover）、リポートルートインフォメーション（Report Route Information）を発行し、ＥＸＰの配下に接続されるデバイスアドレスを取得する。
【００８６】
次に、ＥＸＰの Broadcast（Change）発行処理について、図１１を参照する。図１１は、ＥＸＰの Broadcast（Change）発行処理の処理手順の一例を示している。
【００８７】
ＥＸＰの Broadcast（Change）発行は、Ｐｈｙの状態変化の検出（ステップＳ２０１）や、Ｐｈｙに接続されたデバイスから Broadcast（Change）の受信（ステップＳ２０２）を契機とする。
【００８８】
状態変化検出又は Broadcast（Change）で受信したＰｈｙ自体の状態が異常状態であるかを判定する（ステップＳ２０３）。Ｐｈｙ自体の状態が異常状態でなければ（ステップＳ２０３のＮＯ）、上位接続デバイスに対し、 Broadcast（Change）を発行する（ステップＳ２０４）。Ｐｈｙ自体の状態が異常状態であれば（ステップＳ２０３のＹＥＳ）、 Broadcast（Change）の発行を抑止する（ステップＳ２０５）。換言すれば、斯かる処理は、Ｐｈｙ自体が異常である場合には Broadcast（Change）の発行を抑止し、Ｐｈｙが正常である場合には Broadcast（Change）の発行を許可することにある。
【００８９】
そこで、ディスカバリ処理で作成されたルーティングテーブル２２４について、図１２を参照する。図１２は正常時のルーティングテーブルの一例を示している。
【００９０】
ＥＸＰ００において、ディスカバリ処理が発生した結果、ＥＸＰ００には、図１２に示すように、ルーティングテーブル２２４が作成される。この場合、インデックス番号と物理ポート番号で指定される各項目部４３０には、指定されたデバイスアドレス（８〔Byte〕）が記述されている。デバイスが接続されていない項目には、値“０”とし、この“０”は無効を意味する。
【００９１】
このルーティングテーブル２２４では、Ｐｈｙ０のIndex １＝デバイス１０１、Index ２＝デバイス１０２・・・Index Ｆ＝デバイス１０Ｆが記述され、Index Ｆ＋１・・・Ｎ＝０が記述されている。Ｐｈｙ１のIndex １＝デバイス１１１、Index ２＝デバイス１１２・・・Index Ｆ＝デバイス１１Ｆが記述され、Index Ｆ＋１・・・Index Ｎ＝０が記述されている。Ｐｈｙ２のIndex １＝デバイス１２１、Index ２＝デバイス１２２・・・Index Ｆ＝デバイス１２Ｆが記述され、Index Ｆ＋１・・・Index Ｎ＝０が記述されている。Ｐｈｙ３のIndex １＝デバイス１３１、Index ２＝デバイス１３２・・・Index Ｆ＝デバイス１３Ｆが記述され、Index Ｆ＋１・・・Index Ｎ＝０が記述されている。そして、Ｐｈｙ４・・・ＰｈｙＭ−１のIndex １、Index ２・・・Index Ｎ＝０が記述されている。
【００９２】
この場合、ＥＸＰ１３の配下にあるデバイス１３Ｆが異常となった場合には、ＥＸＰ１３は、既述の処理手順（図１１に示すフローチャート）に従い、上位ＥＸＰであるＥＸＰ００に Broadcast（Change）を発行する。 Broadcast（Change）を受信したＥＸＰ００はConfiguring 状態となる。そこで、既述の図９に示すフローチャートにより、ディスカバリ処理にて、接続されている全デバイスの認識処理を実行し、ルーティングテーブル２２４を再作成する。その際、ルーティングテーブル２２４に関し、通常は、保持していたルーティングテーブルを全て破棄した後、ルーティングテーブルをディスカバリ処理によって再作成する。そのため、ディスカバリ処理中では、ルーティングテーブル２２４は全てのＰｈｙについて作成中となり、ルーティングを行うことができない。その結果、ＥＸＰ００を経由してＥＸＰ００の配下のＥＸＰやデバイスにＩＯを発行することができない。
【００９３】
しかし、上記構成では、ＥＸＰ００が Broadcast（Change）が何れの物理ポート（Ｐｈｙ）から受信したものであるかを認識することができ、このため、異常が発生した箇所をそのＰｈｙから特定し、異常箇所の絞り込みをすることができる。
【００９４】
図７に示す構成例では、Ｐｈｙ３の配下に異常が発生すると、ＥＸＰ３２０（ＥＸＰ００）は、Ｐｈｙ３の配下が異常個所であることを認識できる。そして、受信したＰｈｙ３に関するルーティングテーブル２２４のテーブル情報のみを破棄し、それ以外のＰｈｙのルーティングテーブル２２４については破棄せず又は特定のＰｈｙに属するデバイス情報を無効にし、有効なデバイス情報は保持すればよい。
【００９５】
具体的には、 Broadcast（Change）の受信により、この Broadcast（Change）を発行した Configuring状態にあるＥＸＰ１３が接続されたＰｈｙを特定する。この場合、ルーティングテーブル２２４上で、そのＰｈｙの列に記述される項目のみを破棄し、即ち、廃棄処理（０ Clear）を実行する。これにより、Ｐｈｙ０、Ｐｈｙ１、Ｐｈｙ２についてのルーティングテーブルは残り、このため、Ｐｈｙ０、Ｐｈｙ１、Ｐｈｙ２の配下にあるデバイスに対しては、常にルーティングすることができる。
【００９６】
ここで、Ｐｈｙ３の無効化及びディスカバリ（Discovery ）処理の完了について、図１３及び図１４を参照する。図１３はＰｈｙ３を無効化した場合のルーティングテーブルを示し、図１４は、Ｐｈｙ３のディスカバリ処理完了後のルーティングテーブルを示している。
【００９７】
Ｐｈｙ３が無効化されると、図１３に示すように、Ｐｈｙ３のIndex １、Index ２・・・Index Ｎの値を“０”に更新し、Ｐｈｙ３が破棄されている。既述の通り、“０”は無効化している。この場合、Ｐｈｙ０、Ｐｈｙ１、Ｐｈｙ２は既述の通り、有効なデバイスが記述されている。
【００９８】
そして、Ｐｈｙ３のディスカバリが完了すれば、図１４に示すように、Ｐｈｙ３には有効なデバイスが記述されている。即ち、Ｐｈｙ３のIndex １＝デバイス１３１、Index ２＝デバイス１３２、Index Ｆ・・・Index Ｎ＝０が記述されている。この場合、デバイス１３Ｆ＝０であり、Ｐｈｙ３ではデバイス１３Ｆが無効化され、有効であったデバイス１３１、１３２は有効であり、ルーティング可能となっている。
【００９９】
次に、ルーティングテーブル２２４の再作成処理について、図１５を参照する。図１５は、ルーティングテーブルの再作成処理の処理手順を示している。
【０１００】
このルーティングテーブル２２４の再作成の処理手順は、図１５に示すように、 Broadcast（Change）受信を契機とする。この Broadcast（Change）は、配下のデバイス異常に伴い、 Configuring状態にあるＥＸＰから発行され、上位のＥＸＰで受信する。そこで、この Broadcast（Change）受信により、 Configuring状態へ遷移し、その際、物理ポート番号をＸ（＝0 ）とする（ステップＳ３０１）。物理ポート（Ｐｈｙ）について、物理ポートを表す番号をＰｈｙ＝Ｘとし、 Broadcast（Change）を受信した物理ポート番号がＸかを判定する（ステップＳ３０２）。物理ポート番号がＸでなければ（ステップＳ３０２のＮＯ）、Ｘをインクリメントし（ステップＳ３０３）、ステップＳ３０２に戻る。
【０１０１】
物理ポート番号がＸであれば（ステップＳ３０２のＹＥＳ）、 BroadCast（Change）を受信した物理ポート番号はＸである（ステップＳ３０４）。即ち、この状態情報から異常デバイスが存在する物理ポートはＸであることが認識される。
【０１０２】
そこで、ルーティングテーブル２２４にあるＰｈｙ＝Ｘのテーブルを破棄する処理を実行し、Ｐｈｙ＝Ｘ  に関しては“０”クリアを実施する（ステップＳ３０５）。この“０”クリアの実施により、図１３の状態となる。
【０１０３】
これにより、特定された物理ポートであるＰｈｙ＝Ｘに対してDiscovery 処理を開始し（ステップＳ３０６）、Ｐｈｙ＝Ｘの配下のＥＸＰのDiscovery 処理の完了待ちとなる。Ｐｈｙ＝Ｘについて、 Discovery処理を完了すれば、Ｐｈｙ＝Ｘの配下にあるデバイスアドレスを取得する（ステップＳ３０７）。即ち、異常デバイスのアドレスを取得することができる。即ち、部分 Discoveryが完了する。
【０１０４】
そして、Ｐｈｙ＝Ｘのテーブル（項目）を含むルーティングテーブル２２４が作成され（図１４に示す状態）、Configuring 状態から通常状態へ遷移し（ステップＳ３０８）、この処理を終了する。
【０１０５】
そこで、プロセッサ３１４、メモリ３１６及びＩＯＣ３１８の処理について、図１６を参照する。図１６は、部分 Discoveryの処理手順の一例を示している。
【０１０６】
この処理手順は、既述の部分 Discoveryの処理手順を含んでいる。そこで、この処理手順では、ＩＯＣ３１８がＥＸＰ３２０（ＥＸＰ００）から Broadcast（Change）を受信することにより、ＥＸＰ００の配下のデバイス構成に変化があったことを認識し、Discovery 処理を開始する。ＥＸＰ同様、ＳＭＰFunctionのコマンドである“Report General”を発行し、ＥＸＰ００のConfiguring 状態解除を待ち合わせてから、ＳＭＰFunctionのコマンドである“ Discover ”や“ Report Route Information ”により接続されているデバイスアドレスを入手する。
【０１０７】
このＩＯＣ３１８側のDiscovery 処理は、図１６に示すように、 Broadcast（Change）受信を契機とし、Discovery 待ち処理（ステップＳ４０１）からDiscovery 処理が開始され（ステップＳ４０２）、コマンド“Report General”が発行される（ステップＳ４０３）。このコマンド“Report General”を受けた下位ＥＸＰであるＥＸＰ００は“Report General”の応答をする（ステップＳ４０４）。ＩＯＣ３１８及びプロセッサ３１４側では、“Report General”の応答を受け、この“Report General”の応答からＥＸＰ００がConfiguring 状態であるかを判定する（ステップＳ４０５）。
【０１０８】
ＥＸＰ００がConfiguring 状態であれば（ステップＳ４０５のＹＥＳ）、Discovery 待ち処理（ステップＳ４０１）に復帰する。ＥＸＰ００がConfiguring 状態でなければ（ステップＳ４０５のＮＯ）、“Report General”の応答から物理ポート番号（NUMBER OF PHYS）で表される数だけコマンド“Discover”を発行する（ステップＳ４０６）。この場合、ＥＸＰ００からDiscoverの応答を受け（ステップＳ４０７、Ｓ４０８）、ＥＸＰ００に直接接続されているデバイスのアドレスを取得する（ステップＳ４０６）。
【０１０９】
そして、ＩＯＣ３１８及びプロセッサ３１４側では、コマンド“Report Route Information”を発行し（ステップＳ４０９）、ＥＸＰ００から“Report Route Information”の応答を受け（ステップＳ４１０）、ＥＸＰ００の更に下位にあるデバイスのアドレスを取得する（ステップＳ４０９）。
【０１１０】
これにより、Discovery 処理を終了し（ステップＳ４１１）、ＥＸＰ００の配下のデバイスアドレスを取得し、この処理を終了する。この処理は、ＥＸＰ０１も同様である。
【０１１１】
このように、通常のDiscovery 処理では、ＥＸＰ００に対してＳＭＰFunctionのReport Generalを発行してConfiguring 状態の解除を待ち合わせているが、ＥＸＰ００がConfiguring 中であっても、異常が無ければ、ＩＯ処理が可能となる。異常があっても、ＩＯ処理を継続するためには、ＥＸＰ配下の正常デバイスと異常デバイスとを仕分けすればよい。この仕分け手段として、異常個所が無いＥＸＰからデバイス情報（アドレス、物理ポート情報）を取得すればよい。
【０１１２】
具体的には、ＥＸＰ００がConfiguring 状態となった場合、ＩＯＣ３１８から次のような部分Discovery としてＳＭＰFunctionからコマンドを発行し、異常部分を仕分けすればよい。この処理手順について、図１７を参照する。図１７は異常部分の仕分けの処理手順の一例を示している。
【０１１３】
１）直接接続されているＥＸＰ００に対してＳＭＰFunctionのコマンド“Discover”を発行し、ＥＸＰ００に直接接続されているＥＸＰのデバイスアドレスを入手する（ステップＳ５０１）。このステップＳ５０１では、例えば、ＥＸＰ１０、１１、１２、１３のデバイスアドレスを入手し、ＥＸＰのデバイスアドレスが入手できたかを判定する（ステップＳ５０２）。ＥＸＰのデバイスアドレスが入手できなかった場合には、この処理を終了する。
【０１１４】
２）ＥＸＰのデバイスアドレスが入手できれば、入手したＥＸＰのデバイスアドレスに対してＳＭＰFunctionのコマンド“Report General”を発行して、そのＥＸＰがConfiguring 状態かを確認する（ステップＳ５０３）。
【０１１５】
３）ステップＳ５０３において、Configuring 状態でなかったら（ステップＳ５０３のＮＯ）、ＳＭＰ Function のコマンド“Discover”やコマンド“Report Route Information”をそのＥＸＰ（例えば、ＥＸＰ１０、１１、１２）に対して発行する（ステップＳ５０４）。この場合、ＥＸＰ１０、１１、１２の配下のデバイスは使用できるので、このデバイス情報（アドレス、物理ポート情報）を取得し、使用できるデバイスとして管理する。
【０１１６】
4 ）ステップＳ５０３において、Configuring 状態であった場合（ステップＳ５０３のＹＥＳ）、又は発行したＳＭＰFunctionが異常終了した場合には、ＩＯＣ３１８はそのＥＸＰ（例えば、ＥＸＰ１３）の配下のデバイスは使用できないと判断する（ステップＳ５０５）。
【０１１７】
次に、この処理手順（図１７）の詳細について、図１８を参照する。図１８は Discoveryの処理手順の一例を示している。
【０１１８】
この処理手順は、プロセッサ３１４、メモリ３１６及びＩＯＣ３１８での処理の一例であって、図１８に示すように、 Broadcast（Change）受信を契機とし、Discovery 処理が開始され（ステップＳ６０１）、コマンド“Report General”を下位ＥＸＰであるＥＸＰ００に発行し、Configuring 状態であるかを確認する（ステップＳ６０２）。この場合、ステップＳ６０２では、ＥＸＰ００からのReport Generalの応答（ステップＳ６０３）からConfiguring 状態を確認し、Configuring 状態でなければ（ステップＳ６０２のＮＯ）、通常のディスカバリ処理に移行する（ステップＳ６０４）。
【０１１９】
ＥＸＰ００がConfiguring 状態であれば（ステップＳ６０２のＹＥＳ）、Report Generalの応答のNUMBER OF PHYSの数分のコマンド“Discover”を発行し、ＥＸＰ００に直接接続されているＥＸＰのデバイスアドレスを取得する（ステップＳ６０５）。この場合、ＥＸＰ００からコマンド“Discover”の応答を受ける（ステップＳ６０６、Ｓ６０７）。
【０１２０】
Discoverにて取得したＥＸＰの全デバイスアドレス（ＥＸＰ１０〜ＥＸＰ１３）に対してコマンド“Report General”を発行し、全ＥＸＰに発行済みかの確認をする（ステップＳ６０８）。
【０１２１】
全ＥＸＰに“Report General”を発行していれば（ステップＳ６０８のＹＥＳ）、Discovery 処理の終了であり、この場合、ＥＸＰ１０〜ＥＸＰ１２の配下のデバイスのデバイスアドレスの取得完了となる（ステップＳ６０９）。
【０１２２】
全ＥＸＰに“Report General”を発行していなければ（ステップＳ６０８のＮＯ）、“Report General”の応答を受け、Configuring であるかを確認する（ステップＳ６１０）。この場合、下位ＥＸＰであるＥＸＰ１０〜ＥＸＰ１３から“Report General”の応答を受ける（ステップＳ６１１）。
【０１２３】
Configuring 状態であれば（ステップＳ６１０のＹＥＳ）、異常箇所としてデバイスアドレスを記録する（ステップＳ６１２）。この場合、ＥＸＰ１３がConfiguring 状態であれば、異常箇所として記録される。
【０１２４】
Configuring 状態でなければ（ステップＳ６１０のＮＯ）、コマンド“Discover”やコマンド“Report Route Information”を発行し、デバイス（ＥＸＰ１０〜ＥＸＰ１２）のデバイスアドレスを取得する（ステップＳ６１３）。この場合、ＥＸＰ１０〜ＥＸＰ１２から“Discover”や“Report Route Information”の応答を受ける（ステップＳ６１４）。
【０１２５】
そして、ステップＳ６１２、Ｓ６１３の処理の後、次のＥＸＰのデバイスアドレスに移行し（ステップＳ６１５）、上記と同様の処理を実行する。
【０１２６】
このような手順により、ＩＯＣ３１８はＥＸＰ００、ＥＸＰ１３がConfiguring 状態であっても、ＥＸＰ１０、１１、１２配下に接続されているデバイスのアドレスを取得することができる。取得したこれらのアドレスはＥＸＰ００にてルーティングされる使用可能なデバイスのアドレスである。ＥＸＰ１３配下のデバイス１３Ｆが異常となった直後（ＥＸＰ１３がConfiguring 状態となった場合）には、ＩＯＣ３１８は使用できるデバイスとしてＥＸＰ１０配下のデバイス１０１〜１０Ｆ、ＥＸＰ１１配下のデバイス１１１〜１１Ｆ、ＥＸＰ１２配下のデバイス１２１〜１２Ｆを認識し、デバイスマップとして保持する。その際のデバイスマップ４２２（図１９）に書き込む。この場合、デバイスマップ４２２には、インデックスで示される各項目にデバイスアドレスが格納され、無効デバイスには“０”が書き込まれる。
【０１２７】
次に、デバイスマップ４２２について、図１９を参照する。図１９は、デバイスマップの一例を示す図である。
【０１２８】
このデバイスマップ４２２には、インデックス格納部４３２と、アドレス格納部４３４とが設定されている。インデックス格納部４３２には、インデックス番号が格納され、アドレス格納部４３４には、デバイスアドレスが格納されている。この場合、図１９に示すように、使用可能なデバイスアドレスがインデックス番号とともに格納されている。無効デバイスには、インデックス番号とともに無効を表す“０”が格納されている。
【０１２９】
斯かる構成によれば、ＩＯＣのDiscovery 処理により取得されたデバイスマップ４２２はサーバ３０２（図６）からデバイスにアクセス要求があった場合に用いられる。その場合、アクセス要求があったデバイスについて、プロセッサ３１４（図６）がデバイスマップ４２２に格納された情報から使用できるか否かを判断し、その判断結果をサーバ３０２に通知する。
【０１３０】
これまで記載してきた手順によりＥＸＰ００、ＥＸＰ１３がConfiguring 状態である場合には、ＩＯＣ３１８は図１９に示すデバイスマップ４２２を作成しているが、ＥＸＰ００、ＥＸＰ１３のConfiguration が完了したら、通常、ＩＯＣ３１８が再度全デバイス情報を取得する。通常、ＥＸＰ１０、１１、１２、１３の全てのデバイス情報を再取得することになる。
【０１３１】
この場合、上記手順により部分的に情報が取得できているので（ＥＸＰ１０、１１、１２配下のデバイス情報を保持）、Configuring 状態であったＥＸＰ１３の配下のデバイス情報の取得処理のみを行うので、ＩＯＣ３１８のデバイス情報の取得処理を短縮できる。具体的には、ＩＯＣ３１８は図１８に示す処理手順で、ＥＸＰ００の何れのＰｈｙの配下のデバイス情報が取得できていないのかを記憶する。そして、再認識処理では、そのＰｈｙ配下のデバイスに対してDiscovery 処理（図２０）、即ち、部分Discovery 処理を行い、その処理後にデバイスマップ４２２を修正する（図２１）。
【０１３２】
この部分 Discoveryの処理手順について、図２０を参照する。図２０は、部分Discovery 処理の一例を示している。
【０１３３】
この部分 Discoveryの処理手順においても、図２０に示すように、 Broadcast（Change）受信を契機とし、Discovery 処理が開始され（ステップＳ７０１）、異常箇所と認識しているデバイスアドレス（ＥＸＰ１３）にコマンド“Report General”を発行し、Configuring 状態であるかを確認する（ステップＳ７０２）。この場合、下位ＥＸＰであるＥＸＰ１３に対してコマンド“Report General”を発行し、ＥＸＰ１３からReport Generalの応答を受ける（ステップＳ７０３）。
【０１３４】
ＥＸＰ１３からの“Report General”の応答（ステップＳ７０３）からConfiguring 状態を確認し、Configuring 状態でなければ（ステップＳ７０２のＮＯ）、通常のディスカバリ処理に移行する（ステップＳ７０４）。
【０１３５】
ＥＸＰ１３がConfiguring 状態であれば（ステップＳ７０２のＹＥＳ）、既述のように、コマンド“Discover”や、コマンド“Report Route Information”を発行し、デバイスアドレス（ＥＸＰ１３）を取得する（ステップＳ７０５）。この場合、ＥＸＰ１３からコマンド“Discover”やコマンド“Report Route Information”の応答を受ける（ステップＳ７０６）。
【０１３６】
このようなコマンドの応答を受ければ、Discovery 処理を終了し、ＥＸＰ１３の配下のデバイスアドレスの取得完了となる（ステップＳ７０７）。
【０１３７】
斯かる処理後のデバイスマップについて、図２１を参照する。図２１は、Discovery 処理後のデバイスマップの一例を示す図である。図２１において、図１９と同一部分には同一符号を付してある。
【０１３８】
このデバイスマップ４２２には、図２１に示すように、Discovery 処理後、使用可能なデバイスアドレスがインデックス番号とともに格納されている。無効デバイスには、インデックス番号とともに無効を表す“０”が格納されている。
【０１３９】
次に、部分Discovery 処理を適用した処理手順について、図２２を参照する。
【０１４０】
この場合、ＥＸＰ１３では、配下のデバイスに異常が発生し、Configuring 状態へ遷移し、上位ＥＸＰ（ＥＸＰ００）に対して Broadcast（Change）を発行する（ステップＳ８０１）。
【０１４１】
そこで、ＥＸＰ００では、ＥＸＰ１３から Broadcast（Change）を受け、Configuring 状態へ遷移し、上位装置であるＩＯＣ３１８に対して Broadcast（Change）を発行する（ステップＳ８０２）。
【０１４２】
このとき、ＥＸＰ００は、 Broadcast（Change）を発信した物理ポート即ち、ＥＸＰ１３を接続している物理ポートを特定し、ＥＸＰ１３にDiscovery 処理を開始する（ステップＳ８０３）。即ち、部分Discovery 処理を実行する。
【０１４３】
ＩＯＣ３１８では、ＥＸＰ００から Broadcast（Change）を受け、下位ＥＸＰへのＩＯ発行を停止し、ＥＸＰ００に対してＳＭＰDiscoverを発行する（ステップＳ８０４）。これに対し、ＥＸＰ００からＳＭＰDiscoverの応答が発せられ（ステップＳ８０５）、ＩＯＣに通知される。
【０１４４】
ＩＯＣでは、取得したデバイスアドレス（ＥＸＰ１０、ＥＸＰ１１、ＥＸＰ１２、ＥＸＰ１３）に対してＳＭＰのコマンド“Report General”を発行し（ステップＳ８０６）、ＥＸＰ１０、ＥＸＰ１１、ＥＸＰ１２及びＥＸＰ１３に通知する。
【０１４５】
これを受け、ＥＸＰ１０、ＥＸＰ１１及びＥＸＰ１２からReport Generalの応答が発せられ（ステップＳ８０７）、同様に、ＥＸＰ１３からReport Generalの応答が発せられる（ステップＳ８０８）。
【０１４６】
これにより、ＩＯＣでは、ＥＸＰ１３のみがConfiguration 状態であることを検出し、ＥＸＰ１０、ＥＸＰ１１、ＥＸＰ１２についてのＩＯ発行を再開し、ＥＸＰ００及びＥＸＰ１３に対してDiscovery 処理を開始する（ステップＳ８０９）。
【０１４７】
ＥＸＰ１３ではＥＸＰ００からのDiscovery 処理（ステップＳ８０３）を受け、配下のデバイスの情報取得を完了し、通常状態へ遷移した後、Discovery の応答を行う（ステップＳ８１０）。
【０１４８】
ＥＸＰ００はＥＸＰ１３の情報取得完了を受け、通常状態への遷移し、Discovery の応答をＩＯＣに対して行う（ステップＳ８１１）。
【０１４９】
そして、ＩＯＣ３１８では、下位ＥＸＰの情報取得を完了した後、ＥＸＰ１３へのＩＯ発行を再開する（ステップＳ８１２）。
【０１５０】
以上述べた通り、この実施の形態によれば、異常デバイスが属するポートを絞り込み、そのポートに属するデバイス情報を無効にし、正常デバイスが属するポートのデバイス情報を保持するので、入出力処理を迅速化でき、多段接続の利便性を維持し、より高めることができる。
【０１５１】
また、異常デバイスが属するポートのみを特定し、各ポートに対する構成確認中状態を最小限にでき、確認処理から入出力状態への処理の迅速性を図ることもできる。
【０１５２】
また、この実施の形態では、デバイスマップを備え、このデバイスマップと、ルーティングテーブルとをリンクさせているので、デバイス情報がデバイスマップに格納される。そこで、ＣＭ側では、上位装置即ち、ホストからの問い合わせに対し、最適且つ最新のデバイス情報を通知することができ、データ処理の信頼性及び迅速性に寄与することができる。即ち、利便性の高いストレージシステムの構築に寄与することができる。
【０１５３】
〔他の実施の形態〕
【０１５４】
(1) 上記実施の形態では、ＳＡＳデバイスを例示したが、本開示の接続拡張装置やストレージシステムはこれに限定されない。ＳＡＳデバイス以外のデバイスであってもよい。
【０１５５】
(2) 上記実施の形態のルーティングテーブル２２４では、物理ポート情報を横欄、インデックス情報を縦欄に設定しているが、これに限定されない。例えば、図２３に示すように、横欄にインデックス情報格納部４４２、縦欄に物理ポート情報格納部４４４を設定し、項目欄４４６にデバイスアドレス情報を格納するルーティングテーブル４４８で構成してもよい。
【０１５６】
〔比較例〕
【０１５７】
比較例は、本開示の部分Discovery 処理を実行しない場合の処理手順を例示したものである。このような処理手順では、異常デバイスが発見されると、全ての物理ポートが構成確認中状態に移行し、入出力処理の迅速化が損なわれる。この比較例においても、既述のハードウェアを用いて行うことができるので、上記実施の形態と同一の符号を付してある。
【０１５８】
そこで、このデバイスの状態変化の認識処理について、図２４を参照する。図２４は、状態変化時のデバイス認識処理の処理手順を示している。
【０１５９】
この処理手順は、デバイスの故障や接続切れが要因で異常となった結果、ＥＸＰ配下のデバイス状態に変化が生じた場合のＩＯＣのデバイス認識処理である。
【０１６０】
１）ＥＸＰ１３  配下のデバイス１３Ｆが異常となったことをＥＸＰ１３が認識する（ステップＳ９０１）。
【０１６１】
２）ＥＸＰ１３は、配下のデバイス異常に伴い、Configuring 状態となる（ステップＳ９０２）。このステップＳ９０２では、ＥＸＰ００に対して Broadcast（Change）を発行し、Configuring 状態となったことを通知する。ＥＸＰ００はＰｈｙ３を通して Broadcast（Change）を受信する。
【０１６２】
３）ＥＸＰ１３がConfiguring 状態となったことを受け、ＥＸＰ００もConfiguring 状態となる（ステップＳ９０３）。その結果、ＩＯＣはＥＸＰ００の配下のデバイスに対してＩＯ発行ができなくなる。
【０１６３】
４）ＥＸＰ１３について、配下にあるデバイス認識処理が完了する（ステップＳ９０４）。（Configuring の終了）  
【０１６４】
５）ＥＸＰ００はＥＸＰ１３のデバイス認識処理完了に伴い、ＳＭＰFunctionのコマンドDiscoverやReport Route InformationをＥＸＰ１３に対して発行する（ステップＳ９０５）。このステップＳ９０５では、デバイス情報（ＳＡＳアドレス、物理ポート情報）を取得して、自身のメモリ領域にルーティングテーブルを作成する（ステップＳ９０５）。
【０１６５】
６）ＥＸＰ００はＥＸＰ１３から情報取得完了後、自身のConfiguring 状態を解除する（ステップＳ９０６）。
【０１６６】
７）ＩＯＣはＥＸＰ００のConfiguring 解除に伴い、同様にＳＭＰFunctionをＥＸＰ００に発行し、デバイス情報を取得する（ステップＳ９０７）。その後、ＥＸＰ００の配下のデバイスに対してＩＯ発行が可能となる。
【０１６７】
このように、本開示の接続拡張制御方法を用いない場合には、ＥＸＰ１３の配下のデバイス異常による構成変化のため、ＥＸＰ００もConfiguring 状態へ移行し、本来関係のないＥＸＰ１０、ＥＸＰ１１、ＥＸＰ１２配下のデバイスにもＩＯ発行ができない状態となる。この結果、図８のように、ＥＸＰ１０〜１３配下にＥＸＰが多段で接続されるような環境であれば、影響はＥＸＰ２０、２１、２２の配下のデバイスに対しても及ぶこととなる。このため、正常デバイスであるにも拘わらず、使用不能のデバイスを増加させることになる。
【０１６８】
そこで、斯かる状況、即ち、デバイス異常が生じても、本開示の接続拡張制御方法を用いれば、ＥＸＰ１０、１１、１２の配下のデバイスに対してＩＯ発行が可能となる。
【０１６９】
次に、ＥＸＰのディスカバリ処理について、図２５を参照する。図２５は、ディスカバリ処理の処理手順を示している。
【０１７０】
このディスカバリ処理は、ルーティングテーブルの作成処理の手順であって、上位ＥＸＰと下位ＥＸＰとの応答処理を含んでいる。
【０１７１】
このディスカバリ処理は、上位ＥＸＰの電源投入（Power On）直後又は Broadcast（Change）受信を契機とする。そこで、上位ＥＸＰの電源投入（Power On）直後又は Broadcast（Change）受信であれば（ステップＳ１００１）、Configuring 状態へ遷移し、ルーティングテーブルを破棄する（ステップＳ１００２）。
【０１７２】
この時点でDiscovery 処理が開始され（ステップＳ１００３）、Report Generalが発行される（ステップＳ１００４）。このReport Generalは下位ＥＸＰに通知され、下位ＥＸＰではReport Generalの応答が発行され（ステップＳ１００５）、上位ＥＸＰに通知される。
【０１７３】
このReport Generalの応答を受けた上位ＥＸＰは、Report Generalの応答からConfiguring 状態であるかを判定する（ステップＳ１００６）。Configuring 状態であれば（ステップＳ１００６のＹＥＳ）、ディスカバリ待ち処理に移行し（ステップＳ１００７）、この処理の後、Discovery 処理開始に移行する。
【０１７４】
Configuring 状態でなければ（ステップＳ１００６のＮＯ）、Report Generalの応答にある物理ポート番号（NUMBER OF PHYS）の数分だけDiscoverを発行するとともに、下位ＥＸＰに直接接続されているデバイスのデバイスアドレスを取得する（ステップＳ１００７）。即ち、Discoverを発行した場合、下位ＥＸＰに対し、その通知を行い、Discoverの応答を受ける（ステップＳ１００８、Ｓ１００９）。斯かる処理を物理ポート番号の数分だけ実行する。
【０１７５】
デバイスアドレス取得（ステップＳ１００７）の後、Report Route Informationを発行し、下位ＥＸＰの更なる下位に接続されているデバイスのデバイスアドレスを取得する（ステップＳ１０１０）。この処理途上にあっては、下位ＥＸＰに対するReport Route Informationの通知やそのReport Route Informationの応答（ステップＳ１０１１）を受ける。
【０１７６】
以上の処理の後、Discovery 処理終了となり（ステップＳ１０１２）、取得したアドレスを元にルーティングテーブルを作成し、Configuring 状態から通常状態へ遷移する（ステップＳ１０１３）。
【０１７７】
次に、部分Discovery 処理を適用しない処理手順について、図２６を参照する。
【０１７８】
この場合、ＥＸＰ１３では、配下のデバイスに異常が発生し、Configuring 状態へ遷移し、上位ＥＸＰ（ＥＸＰ００）に対して Broadcast（Change）を発行する（ステップＳ１１０１）。
【０１７９】
そこで、ＥＸＰ００では、ＥＸＰ１３から Broadcast（Change）を受け、Configuring 状態へ遷移し、上位装置であるＩＯＣに対して Broadcast（Change）を発行する（ステップＳ１１０２）。
【０１８０】
このとき、ＥＸＰ００は、下位ＥＸＰであるＥＸＰ１０、ＥＸＰ１１、ＥＸＰ１２に対して順番にDiscovery 処理を開始する（ステップＳ１１０３）。
【０１８１】
ＩＯＣでは Broadcast（Change）を受け、下位ＥＸＰへのＩＯ発行を停止し、下位の全ＥＸＰに対してDiscovery 処理を開始する（ステップＳ１１０４）。
【０１８２】
ＥＸＰ１０、ＥＸＰ１１、ＥＸＰ１２は、ＥＸＰ００からの指示に対し、Discovery の応答をする（ステップＳ１１０５）。
【０１８３】
ＥＸＰ００は、下位ＥＸＰ（ＥＸＰ１３）に対してDiscovery 処理を開始する（ステップＳ１１０６）。これに対し、ＥＸＰ１３は、配下のデバイスの情報取得を完了すれば、通常状態に遷移し、Discovery の応答をする（ステップＳ１１０７）。
【０１８４】
この応答を受けたＥＸＰ００は、下位ＥＸＰの情報取得を完了すれば、通常状態に遷移し、ＩＯＣに対してDiscovery の応答をする（ステップＳ１１０８）。
【０１８５】
そして、ＩＯＣでは、下位ＥＸＰの情報取得を完了した後、下位ＥＸＰへのＩＯ発行を再開する（ステップＳ１１０９）。
【０１８６】
このように比較例の処理では、何れかの物理ポートにデバイス異常があると、全ての物理ポートが構成確認中状態に移行し、全てのDiscovery 処理が完了するまで、入出力処理ができない状態となる。ＥＸＰを用いて多段構成としても、構成確認中状態が継続すると、多段構成のメリットを活かすことができない。このような課題は上記実施の形態で解決されている。デバイス異常が発見されると、異常デバイスの属する物理ポートを絞り込み、正常デバイスが属する物理ポートでの入出力処理が保証され、迅速処理に寄与することができる。
【０１８７】
次に、以上述べた実施例を含む実施の形態に関し、更に以下の付記を開示する。以下の付記に本発明が限定されるものではない。
【０１８８】
（付記１）  デバイスを接続する複数のポートと、
各ポートから得られるデバイス情報を記録する記憶部と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる処理部と、
を備えることを特徴とする接続拡張装置。
【０１８９】
（付記２）  前記処理部は、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御することを特徴とする付記１に記載の接続拡張装置。
【０１９０】
（付記３）  前記デバイス情報は、前記ポートを特定するポート情報に関係付けられてテーブルに格納されていることを特徴とする付記１に記載の接続拡張装置。
【０１９１】
（付記４）  デバイスを接続する複数のポートを備え、各ポートから得られるデバイス情報を記録する第１の記憶部を備える接続拡張部と、
前記接続拡張部が前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記第１の記憶部に保持させた際に、これらデバイス情報を記憶する第２の記憶部と、
を備えることを特徴とするストレージシステム。
【０１９２】
（付記５）  更に、上位側装置からのデバイス情報の問い合わせに対し、前記第２の記憶部にある前記デバイス情報を出力する制御部と、
を備えることを特徴とする付記４に記載のストレージシステム。
【０１９３】
（付記６）  接続拡張装置に搭載されたコンピュータに実行させる接続拡張制御プログラムであって、
デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録する機能と、
前記デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させる機能と、
を前記コンピュータに実行させる接続拡張制御プログラム。
【０１９４】
（付記７）  更に、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御する機能と、
を含むことを特徴とする付記６に記載の接続拡張制御プログラム。
【０１９５】
（付記８）  更に、前記デバイス情報を前記ポートを特定するポート情報に関係付けてテーブルを作成又は該テーブルに格納する機能と、
を含むことを特徴とする付記６に記載の接続拡張制御プログラム。
【０１９６】
（付記９）  デバイスを接続する複数のポートから得られるデバイス情報を記憶部に記録するステップと、
デバイス情報により異常デバイスが存在するポートを特定し、該ポートに属するデバイス情報を無効にするとともに、正常デバイスのデバイス情報を前記記憶部に保持させるステップと、
を含むことを特徴とする接続拡張制御方法。
【０１９７】
（付記１０）  更に、異常デバイスが存在する前記ポートに対して確認処理を実行するとともに、正常デバイス側のポートに対する入出力を制御するステップと、
を含むことを特徴とする付記９に記載の接続拡張制御方法。
【０１９８】
以上説明したように、接続拡張装置、ストレージシステム、接続拡張制御プログラム及び接続拡張制御方法の最も好ましい実施の形態等について説明したが、本発明は、上記記載に限定されるものではなく、特許請求の範囲に記載され、又は発明を実施するための形態に開示された発明の要旨に基づき、当業者において様々な変形や変更が可能であることは勿論であり、斯かる変形や変更が、本発明の範囲に含まれることは言うまでもない。
【符号の説明】
【０１９９】
２  接続拡張装置
２０  ストレージシステム
４０、４１、４２、４３  物理ポート（Ｐｈｙ）
６  処理部
８  記憶部
１２  デバイス情報
２２  入出力制御部
２６  記憶部
【図１】
2011243064.tif 000003
【図２】
2011243064.tif 000004
【図３】
2011243064.tif 000005
【図４】
2011243064.tif 000006
【図５】
2011243064.tif 000007
【図６】
2011243064.tif 000008
【図７】
2011243064.tif 000009
【図８】
2011243064.tif 000010
【図９】
2011243064.tif 000011
【図１０】
2011243064.tif 000012
【図１１】
2011243064.tif 000013
【図１２】
2011243064.tif 000014
【図１３】
2011243064.tif 000015
【図１４】
2011243064.tif 000016
【図１５】
2011243064.tif 000017
【図１６】
2011243064.tif 000018
【図１７】
2011243064.tif 000019
【図１８】
2011243064.tif 000020
【図１９】
2011243064.tif 000021
【図２０】
2011243064.tif 000022
【図２１】
2011243064.tif 000023
【図２２】
2011243064.tif 000024
【図２３】
2011243064.tif 000025
【図２４】
2011243064.tif 000026
【図２５】
2011243064.tif 000027
【図２６】
2011243064.tif 000028