(57)【特許請求の範囲】
【請求項１】
複数の記憶デバイスと、
ホストに接続された第１及び第２のコントローラと、
前記第１のコントローラ及び前記複数の記憶デバイスに接続されＳＡＳに従う通信の経路である第１の通信経路と、
前記第２のコントローラ及び前記複数の記憶デバイスに接続されＳＡＳに従う通信の経路である第２の通信経路と
を有し、
各通信経路は、直列に接続された複数のエクスパンダを有し、それら複数のエクスパンダの最前段のエクスパンダが前記コントローラに接続されており、
各エクスパンダは、複数のＰｈｙを有し、それら複数のＰｈｙは、記憶デバイスが接続されているＰｈｙと、エクスパンダが接続されているＰｈｙとを含み、
前記第１のコントローラが、前記第１の通信経路のエクスパンダから発行されたエラー情報を受信した場合に、
（Ａ）前記第１の通信経路について、Ｉ／Ｏ抑止を設定し、
（Ｂ）前記（Ａ）の後に、前記第１のコントローラとエクスパンダ間の接続、又は、エクスパンダとエクスパンダ間の接続が切断されているか否かを判断し、
（Ｃ）前記（Ｂ）の判断の結果が肯定的であれば、前記Ｉ／Ｏ抑止を解除することなく、前記第１の通信経路における少なくとも１つのエクスパンダについて、そのエクスパンダに直接的に接続されているデバイスに関する情報を取得するためのコマンドを発行する処理を含んだ調査処理を実行し、その後で、前記Ｉ／Ｏ抑止を解除する、
（Ｄ）前記（Ｂ）の判断の結果が否定的であれば、前記Ｉ／Ｏ抑止を解除してから、前記第１の通信経路における少なくとも１つのエクスパンダについて、前記調査処理を実行し、
前記第１の通信経路についてＩ／Ｏ抑止の間、前記第１及び第２のコントローラは、前記第２の通信経路を介して、記憶デバイスをターゲットとしたＩ／Ｏコマンドを発行する、
ストレージシステム。
【請求項２】
請求項１記載のストレージシステムであって、
前記第１のコントローラは、前記（Ｂ）において、
（ｂ１）前記第１の通信経路における最前段のエクスパンダにＲＧ（Report  General）コマンドを発行し、
（ｂ２）発行したＲＧコマンドに対して正常に応答を受信した否かを判断し、
（ｂ３）前記（ｂ２）の判断の結果が肯定的の場合、未だＲＧコマンドの発行先とされていない１以上のエクスパンダのうちの最前段のエクスパンダに、ＲＧコマンドを発行し、その後、前記（ｂ２）を行い、
前記（ｂ２）の判断の結果が否定的であるということが、前記（Ｂ）の判断の結果が肯定的であるということであり、
前記第１の通信経路における全てのエクスパンダについて前記（ｂ２）の判断の結果が肯定的であるということが、前記（Ｂ）の判断の結果が否定的であるということである、
ストレージシステム。
【請求項３】
請求項２記載のストレージシステムであって、
各エクスパンダは、ルーティングに使用するルーティング制御情報を有しており、
前記ルーティング制御情報は、Ｐｈｙ毎に、間接的に接続されているデバイスのＳＡＳアドレスを表すＳＡＳアドレス情報を有することができ、
（Ｘ）前記第１のコントローラが、前記調査処理において、Ｐｈｙ情報とＳＡＳアドレス情報とを含んだ情報設定コマンドを、そのコントローラに接続されている通信経路内のエクスパンダに発行し、
（Ｙ）前記情報設定コマンドを受けたエクスパンダは、その情報設定コマンド内の前記Ｐｈｙ情報から特定されるＰｈｙについて、そのエクスパンダが有するルーティング制御情報に、その情報設定コマンド内のＳＡＳアドレス情報を設定し、
前記各コントローラは、そのコントローラに接続されている通信経路内のどのエクスパンダのどのＰｈｙがワイドリンク内の物理リンクに接続されているかを表すデバイス管理情報を有し、
前記（Ｘ）において、前記第１のコントローラは、前記デバイス管理情報を基に、前記情報設定コマンドの発行先のエクスパンダが有する複数のＰｈｙのうち、同一のワイドリンクを構成する２以上の物理リンクに接続されている２以上のＰｈｙを特定し、
前記Ｐｈｙ情報は、前記特定した２以上のＰｈｙを表す情報を有し、
前記（Ｙ）において、前記エクスパンダは、前記受けた情報設定コマンド内の前記Ｐｈｙ情報から特定される２以上のＰｈｙの全てについて、前記ルーティング制御情報に、その情報設定コマンド内のＳＡＳアドレス情報を設定する、
ストレージシステム。
【請求項４】
請求項３記載のストレージシステムであって、
前記情報設定コマンドは、ワイドリンク纏めコマンドであり、
前記ワイドリンク纏めコマンドは、ＳＭＰ（Serial Management Protocol）に従うコマンドであって、特定コードが所定の位置に記述されたＣＲＩ（Configure  Route  Information）コマンドであり、
前記特定のコードは、複数のファンクションコードのうちの２以上の未定義のファンクションコードからワイドリンク纏めコマンドに割り当てられたファンクションコードであり、
前記ｐｈｙ情報は、前記ＣＲＩコマンドにおいて、ｐｈｙの識別情報が設定される位置に代えて、その位置とは別の位置に記述され、
前記ｐｈｙ情報は、ビットマップであり、そのビットマップは、複数のｐｈｙにそれぞれ対応した複数のビットで構成されており、そのビットマップにおいて、前記２以上のｐｈｙにそれぞれ対応した２以上のビットがオンになっており、
ＣＲＩコマンドを受けたエクスパンダは、そのＣＲＩコマンドの前記所定の位置に記述されているファンクションコードが前記特定のコードであることを検出した場合に、前記（Ｙ）を行う、
ストレージシステム。
【請求項５】
請求項２記載のストレージシステムであって、
各エクスパンダは、ルーティングに使用するルーティング制御情報を有しており、
前記ルーティング制御情報は、Ｐｈｙ毎に、間接的に接続されているデバイスのＳＡＳアドレスを表すＳＡＳアドレス情報と、その記憶デバイスが有効か無効かを表すステータス情報とを有することができ、
前記（Ｄ）において、
（ｄ１）前記第１のコントローラが、前記調査処理において、前記第１の通信経路内の或るエクスパンダの或るＰｈｙに直接的に接続されている記憶デバイスである対象デバイスについてリンクダウンを検出し、
（ｄ２）前記第１のコントローラが、そのリンクダウンが所定の条件を満たすか否かを判定し、
（ｄ３）前記（ｄ２）の判定の結果が否定的であれば、前記第１のコントローラが、前記或るエクスパンダより前段に存在する各エクスパンダに、前記対象デバイスが無効であることを表す情報と前記対象デバイスに間接的に接続されているＰｈｙを表すｐｈｙ情報とを含んだ情報設定コマンドを発行し、前記情報設定コマンドを受けたエクスパンダは、その情報設定コマンド内の前記Ｐｈｙ情報から特定されるＰｈｙについて、前記ルーティング制御情報に、前記対象デバイスが無効であることを表すステータス情報を設定し、
（ｄ４）前記（ｄ２）の判定の結果が肯定的であれば、前記第１のコントローラが、前記或るエクスパンダより前記対象コントローラ側に存在する各エクスパンダに前記情報設定コマンドを発行しない、
ストレージシステム。
【請求項６】
複数の記憶デバイスと、
ホストに接続された第１及び第２のコントローラと、
前記第１のコントローラ及び前記複数の記憶デバイスに接続されＳＡＳに従う通信の経路である第１の通信経路と、
前記第２のコントローラ及び前記複数の記憶デバイスに接続されＳＡＳに従う通信の経路である第２の通信経路と
を有し、
各通信経路は、直列に接続された複数のエクスパンダを有し、それら複数のエクスパンダのうちの最前段のエクスパンダが前記コントローラに接続されており、コントローラとエクスパンダ、及び、エクスパンダとエクスパンダは、物理リンクで互いに接続されており、且つ、少なくとも１つのエクスパンダが、コントローラ又はエクスパンダと、２以上の物理リンクから成るワイドリンクで接続されており、
各エクスパンダは、複数のＰｈｙを有し、それら複数のＰｈｙは、記憶デバイスが接続されているＰｈｙと、エクスパンダが接続されているＰｈｙとを含み、
各エクスパンダは、ルーティングに使用するルーティング制御情報を有しており、
前記ルーティング制御情報は、Ｐｈｙ毎に、間接的に接続されているデバイスのＳＡＳアドレスを表すＳＡＳアドレス情報を有することができ、
（Ｘ）各コントローラが、Ｐｈｙ情報とＳＡＳアドレス情報とを含んだ情報設定コマンドを、そのコントローラに接続されている通信経路内のエクスパンダに発行し、
（Ｙ）前記情報設定コマンドを受けたエクスパンダは、その情報設定コマンド内の前記Ｐｈｙ情報から特定されるＰｈｙについて、そのエクスパンダが有するルーティング制御情報に、その情報設定コマンド内のＳＡＳアドレス情報を設定し、
前記各コントローラは、そのコントローラに接続されている通信経路内のどのエクスパンダのどのＰｈｙがワイドリンク内の物理リンクに接続されているかを表すデバイス管理情報を有し、
前記（Ｘ）において、前記各コントローラは、前記デバイス管理情報を基に、前記情報設定コマンドの発行先のエクスパンダが有する複数のＰｈｙのうち、同一のワイドリンクを構成する２以上の物理リンクに接続されている２以上のＰｈｙを特定し、
前記Ｐｈｙ情報は、前記特定した２以上のＰｈｙを表す情報を有し、
前記（Ｙ）において、前記エクスパンダは、前記受けた情報設定コマンド内の前記Ｐｈｙ情報から特定される２以上のＰｈｙの全てについて、前記ルーティング制御情報に、その情報設定コマンド内のＳＡＳアドレス情報を設定する、
ストレージシステム。
【請求項７】
請求項６記載のストレージシステムであって、
前記情報設定コマンドは、ワイドリンク纏めコマンドであり、
前記ワイドリンク纏めコマンドは、ＳＭＰ（Serial Management Protocol）に従うコマンドであって、特定コードが所定の位置に記述されたＣＲＩ（Configure  Route  Information）コマンドであり、
前記特定のコードは、複数のファンクションコードのうちの２以上の未定義のファンクションコードからワイドリンク纏めコマンドに割り当てられたファンクションコードであり、
前記ｐｈｙ情報は、前記ＣＲＩコマンドにおいて、ｐｈｙの識別情報が設定される位置に代えて、その位置とは別の位置に記述され、
前記ｐｈｙ情報は、ビットマップであり、そのビットマップは、複数のｐｈｙにそれぞれ対応した複数のビットで構成されており、そのビットマップにおいて、前記２以上のｐｈｙにそれぞれ対応した２以上のビットがオンになっており、
ＣＲＩコマンドを受けたエクスパンダは、そのＣＲＩコマンドの前記所定の位置に記述されているファンクションコードが前記特定のコードであることを検出した場合に、前記（Ｙ）を行う、
ストレージシステム。
【請求項８】
複数の記憶デバイスと、
ホストに接続された第１及び第２のコントローラと、
前記第１のコントローラ及び前記複数の記憶デバイスに接続されＳＡＳに従う通信の経路である第１の通信経路と、
前記第２のコントローラ及び前記複数の記憶デバイスに接続されＳＡＳに従う通信の経路である第２の通信経路と
を有し、
各通信経路は、直列に接続された複数のエクスパンダを有し、それら複数のエクスパンダの最前段のエクスパンダが前記コントローラに接続されており、
各エクスパンダは、複数のＰｈｙを有し、それら複数のＰｈｙは、記憶デバイスが接続されているＰｈｙと、エクスパンダが接続されているＰｈｙとを含み、
各エクスパンダは、ルーティングに使用するルーティング制御情報を有しており、
前記ルーティング制御情報は、Ｐｈｙ毎に、間接的に接続されているデバイスのＳＡＳアドレスを表すＳＡＳアドレス情報と、その記憶デバイスが有効か無効かを表すステータス情報とを有することができ、
前記第１及び第２のコントローラのいずれかが、そのコントローラに接続されている通信経路内の或るエクスパンダの或るＰｈｙに直接的に接続されている記憶デバイスである対象デバイスについてリンクダウンを検出した場合、
（Ａ）そのリンクダウンを検出したコントローラである対象コントローラが、前記対象デバイスについてリンクダウンが検出された回数を更新し、更新後の回数が所定の回数未満か否かの第１の判定を行い、
（Ｂ）前記（Ａ）の判定の結果が否定的であれば、前記対象コントローラが、前記或るエクスパンダより前記対象コントローラ側に存在する各エクスパンダに、前記対象デバイスが無効であることを表す情報と前記対象デバイスに間接的に接続されているＰｈｙを表すｐｈｙ情報とを含んだ情報設定コマンドを発行し、前記情報設定コマンドを受けたエクスパンダは、その情報設定コマンド内の前記Ｐｈｙ情報から特定されるＰｈｙについて、前記ルーティング制御情報に、前記対象デバイスが無効であることを表すステータス情報を設定し、
（Ｃ）前記（Ａ）の判定の結果が肯定的であれば、前記対象コントローラが、前記或るエクスパンダより前記対象コントローラ側に存在する各エクスパンダに前記情報設定コマンドを発行しない、
ストレージシステム。
【請求項９】
請求項８記載のストレージシステムであって、
前記第１の判定の結果が否定的の場合、前記（Ａ）において、前記対象コントローラは、前記対象デバイスについてリンクダウンが検出された時刻から規定時間以内にリンクアップしたか否かの第２の判定を行い、
前記（Ａ）の判定の結果が否定的とは、前記第２の判定の結果が否定的なことであり、
前記（Ａ）の判定の結果が肯定的とは、前記第１又は第２の判定の結果が肯定的なことである、
ストレージシステム。
【請求項１０】
複数の記憶デバイスと、
ホストに接続された第１及び第２のコントローラと、
前記第１のコントローラ及び前記複数の記憶デバイスに接続されＳＡＳに従う通信の経路である第１の通信経路と、
前記第２のコントローラ及び前記複数の記憶デバイスに接続されＳＡＳに従う通信の経路である第２の通信経路と
を有し、
各通信経路は、直列に接続された複数のエクスパンダを有し、それら複数のエクスパンダの最前段のエクスパンダが前記コントローラに接続されており、
各エクスパンダは、複数のＰｈｙを有し、それら複数のＰｈｙは、記憶デバイスが接続されているＰｈｙと、エクスパンダが接続されているＰｈｙとを含み、
各エクスパンダは、ルーティングに使用するルーティング制御情報を有しており、
前記ルーティング制御情報は、Ｐｈｙ毎に、間接的に接続されているデバイスのＳＡＳアドレスを表すＳＡＳアドレス情報と、その記憶デバイスが有効か無効かを表すステータス情報とを有することができ、
前記第１及び第２のコントローラのいずれかが、そのコントローラに接続されている通信経路内の或るエクスパンダの或るＰｈｙに直接的に接続されている記憶デバイスである対象デバイスについてリンクダウンを検出した場合、
（Ａ）そのリンクダウンを検出したコントローラである対象コントローラが、前記対象デバイスについてリンクダウンが検出された時刻から規定時間以内にリンクアップしたか否かを判定し、
（Ｂ）前記（Ａ）の判定の結果が否定的であれば、前記対象コントローラが、前記或るエクスパンダより前記対象コントローラ側に存在する各エクスパンダに、前記対象デバイスが無効であることを表す情報と前記対象デバイスに間接的に接続されているＰｈｙを表すｐｈｙ情報とを含んだ情報設定コマンドを発行し、前記情報設定コマンドを受けたエクスパンダは、その情報設定コマンド内の前記Ｐｈｙ情報から特定されるＰｈｙについて、前記ルーティング制御情報に、前記対象デバイスが無効であることを表すステータス情報を設定し、
（Ｃ）前記（Ａ）の判定の結果が肯定的であれば、前記対象コントローラが、前記或るエクスパンダより前記対象コントローラ側に存在する各エクスパンダに前記情報設定コマンドを発行しない、
ストレージシステム。
【請求項１１】
複数の記憶デバイスと、
ホストに接続された第１及び第２のコントローラと、
前記第１のコントローラ及び前記複数の記憶デバイスに接続されＳＡＳに従う通信の経路である第１の通信経路と、
前記第２のコントローラ及び前記複数の記憶デバイスに接続されＳＡＳに従う通信の経路である第２の通信経路と
を有し、
各通信経路は、直列に接続された複数のエクスパンダを有し、それら複数のエクスパンダの最前段のエクスパンダが前記コントローラに接続されており、
各エクスパンダは、複数のＰｈｙを有し、それら複数のＰｈｙは、記憶デバイスが接続されているＰｈｙと、エクスパンダが接続されているＰｈｙとを含み、
各エクスパンダは、ルーティングに使用するルーティング制御情報を有しており、
前記ルーティング制御情報は、Ｐｈｙ毎に、間接的に接続されているデバイスのＳＡＳアドレスを表すＳＡＳアドレス情報を有することができ、
（Ｐ）各コントローラは、そのコントローラとエクスパンダとの間の接続が切断され、そのコントローラにエクスパンダが接続されたことを検出した場合、その接続されたエクスパンダに、前記ルーティング制御情報から全てのＳＡＳアドレス情報を消去することのコマンドである一括消去コマンドを発行し、
（Ｑ）そのエクスパンダが、その一括消去コマンドを受信し、前記ルーティング制御情報から全てのＳＡＳアドレス情報を消去する、
ストレージシステム。
【請求項１２】
請求項１１記載のストレージシステムであって、
前記一括消去コマンドは、ＳＭＰ（Serial Management Protocol）に従うコマンドであって、特定コードが所定の位置に記述されたＣＲＩ（Configure  Route  Information）コマンドであり、
前記特定のコードは、複数のファンクションコードのうちの２以上の未定義のファンクションコードから一括消去コマンドに割り当てられたファンクションコードであり、
エクスパンダは、前記（Ｑ）において、そのＣＲＩコマンドの前記所定の位置に記述されているファンクションコードが前記特定のコードであることを検出した場合に、前記ルーティング制御情報から全てのＳＡＳアドレス情報を消去する、
ストレージシステム。
【請求項１３】
請求項１２記載のストレージシステムであって、
各通信経路において、１つのエクスパンダが有する第１のｐｈｙに第１のエクスパンダが接続され、その１つのエクスパンダが有する第２のｐｈｙに第２のエクスパンダが接続され、前記第１及び第２のエクスパンダは、前記１つのエクスパンダよりも後段に存在し、
前記第１又は第２のコントローラとエクスパンダとの接続が切断された後、前記第１のｐｈｙに、前記第１のエクスパンダに代えて前記第２のエクスパンダが接続され、前記第２のｐｈｙに、前記第２のエクスパンダに代えて前記第１のエクスパンダが接続されることがある、
ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バックエンドでの通信の規格がＳＡＳ（Serial  Attached  SCSI）であるストレージシステムに関する。
【背景技術】
【０００２】
バックエンド（コントローラと記憶デバイスとの間）での通信の規格がＳＡＳであるストレージシステムとして、例えば、図１に示すストレージシステム１０１が知られている。以下の説明では、同種の複数の要素を、要素の識別番号を用いて区別することがある。例えば、複数の要素Ａを区別する場合、「Ａ＃ｘ」と記載することがある。「Ａ＃ｘ」は、識別番号がｘの要素Ａであることを意味する。“ｘ”は、０以上の整数である。
【０００３】
ストレージシステム１０１は、複数の記憶デバイス１５１と、冗長化されたコントローラ１３１（コントローラ＃０及び＃１）と、コントローラ＃０及び複数の記憶デバイス１５１に接続された第１の通信経路１６１と、コントローラ＃１及び複数の記憶デバイス１５１に接続された第２の通信経路１６３とを有する。
【０００４】
各コントローラ１３１は、通信ネットワーク１０５を介してホスト１０３に接続されており、ＳＡＳプロトコルに従って通信するＳＡＳコントローラ１４１を有する。コントローラ＃０（＃１）は、ホスト１０３からＩ／Ｏ要求を受信する。コントローラ＃０（＃１）は、そのＩ／Ｏ要求を基に特定される記憶デバイス１５１をターゲットとしたＩ／Ｏ（Input/Output）コマンドを、ＳＡＳコントローラ＃０（＃１）を介して発行する。或いは、コントローラ＃０（＃１）は、ホスト１０３からのＩ／Ｏ要求を他方のコントローラ＃１（＃０）に転送し、コントローラ＃１（＃０）が、そのＩ／Ｏ要求を基に特定される記憶デバイス１５１をターゲットしたＩ／Ｏコマンドを、ＳＡＳコントローラ＃１（＃０）を介して発行する。第２の通信経路１６３は、第１の通信経路１６１の冗長経路である。このため、各記憶デバイス１５１には、第１及び第２の通信経路１６３のいずれを経由してもアクセスすることができる。
【０００５】
各通信経路は、直列に接続された複数のＳＡＳエクスパンダ（以下、エクスパンダ）１４３を有する。複数のエクスパンダ１４３のうちの最前段のエクスパンダ１４３が、コントローラ１３１に接続されている。従って、コントローラ１３１及び複数のエクスパンダ１４３が直列になっている。コントローラ１３１とエクスパンダ１４３間、及び、エクスパンダ１４３とエクスパンダ１４３間は、物理リンク（物理的な配線）で接続されている。
【０００６】
この種のストレージシステムでは、バックエンドで、ディスカバープロセスが行われる。ディスカバープロセスでは、ＳＭＰ（Serial  Management  Protocol）に従うコマンド（ＳＭＰコマンド）がコントローラ１３１から発行される。ＳＭＰコマンドは、記憶デバイス１５１に対するＩ／Ｏ（Input/Output）で使用され得る物理リンクと同じ物理リンクを経由する。ＳＭＰによれば、コントローラ１３１（イニシエータ）からターゲットデバイス（エクスパンダ１４３又は記憶デバイス１５１）にコマンドが発行されて応答がコントローラ１３１に戻るまで、そのコマンドが経由する物理リンクが占有される。従って、その物理リンクは、コマンドが処理されている間も占有される。このため、ＳＭＰコマンドの数が多いほど、物理リンクをＩ／Ｏに使用することが難しく、故に、Ｉ／Ｏ性能が低下する可能性がある。
【０００７】
特許文献１は、コマンドが処理されている間に物理リンクを占有しないタイプのプロトコルとして、ＳＳＰ（Serial  SCSI  Protocol）を開示している。ディスカバープロセスにおいて、ＳＭＰコマンドではなくＳＳＰコマンドが発行されれば、Ｉ／Ｏ性能の低下を軽減することが期待できる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−２４２８７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、ディスカバープロセスにおいて発行されるコマンドの種類に関わらず（例えばそのコマンドがＳＭＰコマンドであるかＳＳＰコマンドであるかに関わらず）、ディスカバープロセス中に記憶デバイスにＩ／Ｏコマンドを発行することが、必ずしも好ましいとは言えない。ディスカバープロセス中にＩ／Ｏコマンドを発行すると、たくさんのエラー応答（エラーを表す応答）をコントローラ１３１が受信してしまうケースがある。
【００１０】
そのケースの一例は、図２に示すように、エクスパンダ＃０１とエクスパンダ＃０２間の全ての物理リンクが切れてしまうケース（例えば、エクスパンダ＃０１とエクスパンダ＃０２間のケーブルが抜けてしまうケース）である。このケースでは、ディスカバープロセスを行わないと、エクスパンダ＃０１とエクスパンダ＃０２間の全物理リンクが切れていることを検知することができない。
【００１１】
コントローラ＃０は、それを検知する前に、Ｉ／Ｏコマンドを発行する。しかし、Ｉ／Ｏコマンドのターゲットが、エクスパンダ＃０１以降のエクスパンダに接続されている記憶デバイスであれば、コントローラ＃０は、Ｉ／Ｏコマンドに対してエラー応答を受けることになる。従って、コントローラ＃０は、エクスパンダ＃０１以降のエクスパンダに接続されている記憶デバイスをターゲットとしたＩ／Ｏコマンドをたくさん発行されれば、たくさんのエラー応答を受信することになる。
【００１２】
このようなケースでは、Ｉ／Ｏコマンドは、図３に示すように、ディスカバープロセスに使用中の通信経路（第１の通信経路１６１）ではなく、その冗長経路（第２の通信経路１６３）を経由することが好ましい。
【００１３】
しかし、このように、ディスカバープロセスに使用中の通信経路とは別の通信経路を介して記憶デバイス１５１にＩ／Ｏコマンドを発行するケースでは、ディスカバープロセスに使用中の通信経路がＩ／Ｏのために使用されない。このため、下記の問題が生じる。
（１）Ｉ／Ｏ性能が低下する。
（２）冗長度が低下する。具体的には、通信経路がｐ重化されており、ディスカバープロセスに使用中の通信経路の数がｑの場合、冗長度は、（ｐ−ｑ）となる。従って、冗長度が２の場合、１つの通信経路がディスカバープロセスに使用中であれば、冗長度がゼロになってしまう。
【００１４】
そこで、本発明の目的は、通信経路がＩ／Ｏに使用されない時間を短くすることにある。
【課題を解決するための手段】
【００１５】
第１のコントローラ及び複数の記憶デバイスに接続された第１の通信経路（ＳＡＳに従う通信の経路）と、第２のコントローラ及びそれら複数の記憶デバイスに接続された第２の通信経路（ＳＡＳに従う通信の経路）がある。各通信経路は、直列に接続された複数のエクスパンダを有する。各エクスパンダが、複数のｐｈｙを有し、複数のｐｈｙが、他のエクスパンダが接続されているｐｈｙと、記憶デバイスが接続されている。各エクスパンダは、ルーティングに使用するルーティング制御情報を有している。ルーティング制御情報は、Ｐｈｙ毎に、間接的に接続されているデバイスのＳＡＳアドレスを表すＳＡＳアドレス情報を有することができる。
【００１６】
第１の観点によれば、第１の通信経路についてＩ／Ｏ抑止が設定されるが、Ｉ／Ｏ抑止としておく時間長が短くされる。具体的には、第１のコントローラは、エクスパンダとエクスパンダ間の接続（或いは、第１のコントローラとエクスパンダ間の接続）が切断されているか否かを先に判断する。その判断の結果が否定的であれば、第１のコントローラは、第１の通信経路についてＩ／Ｏ抑止を解除してから、第１の通信経路における少なくとも１つのエクスパンダについてそのエクスパンダに直接的に接続されているデバイスに関する情報を取得するためのコマンドを発行する処理を含んだ調査処理（例えば、ディスカバープロセス）を行う。これにより、第１の通信経路において、調査処理中であっても、第１の通信経路を介して、記憶デバイスをターゲットとしたＩ／Ｏコマンドが流れる。上記判断の結果が否定的であるケースとしては、例えば、エクスパンダと記憶デバイス間の接続が切断されているケースがある。しかし、エクスパンダと記憶デバイス間の接続が切断されていても、エラーが応答されるのは、その記憶デバイスをターゲットとしたＩ／Ｏコマンドについてだけであるから、影響は小さい。
【００１７】
第２の観点によれば、記憶デバイスに対するＩ／Ｏの処理以外の処理（例えばディスカバープロセス）にかかる全体的な時間が短くされる。ストレージシステムに搭載される記憶デバイスの数は、将来増加する見込みであるから、Ｉ／Ｏの処理以外の処理にかかる全体的な時間が短くなることは、有効である。具体的には、第２の観点によれば、エクスパンダが有するルーティング制御情報を更新するためのコマンド（典型的には、ＣＲＩ（Configure  Route  Information）コマンド）の発行数が減らされる。より具体的には、例えば、下記の（１）及び（３）のうちの少なくとも１つが採用される。
（１）ワイドリンクに接続されている２以上のｐｈｙについて同一のＳＡＳアドレス情報を設定するための第１のオリジナルＣＲＩコマンドが発行される。これにより、１つのＣＲＩコマンドで、２以上のｐｈｙについてＳＡＳアドレス情報をルーティング制御情報に設定することができる。つまり、ＳＡＳアドレス情報を設定するためにＣＲＩコマンドをｐｈｙ毎に発行する必要が無い。
（２）記憶デバイスについてリンクダウンが検出されても、そのリンクダウンについて所定の条件が満たされていれば、ＣＲＩコマンドの発行がスキップされる。
（３）コントローラとエクスパンダとの接続が切断された後に、そのコントローラにエクスパンダが接続された場合、そのコントローラからそのエクスパンダに第２のオリジナルＣＲＩコマンドが発行される。第２のオリジナルＣＲＩコマンドを受けたエクスパンダは、ルーティング制御情報から全てのＳＡＳアドレス情報を消去する。つまり、ＳＡＳアドレス情報を消去するためのＣＲＩコマンドをＳＡＳアドレス情報毎に発行する必要が無い。
【図面の簡単な説明】
【００１８】
【図１】バックエンドでの通信の規格がＳＡＳであるストレージシステムの構成の一例を示す。
【図２】エクスパンダとエクスパンダとの接続が切断した場合に生じる問題を説明するための図である。
【図３】第１の通信経路についてディスカバープロセスが行われている間は第２の通信経路を介してＩ／Ｏが行われることを示す。
【図４】本発明の一実施例に係るストレージシステムの構成を示す。
【図５】コントローラ４３１の構成を示す。
【図６】エクスパンダ４４３の構成を示す。
【図７】図７Ａは、エクスパンダルートテーブル６１１の構成を示す。図７Ｂは、図７Ａに示すテーブル６１１に対応する通信経路構成を示す。
【図８】デバイス管理テーブル５１１の構成を示す。
【図９】ディスカバープロセスの流れを示す。
【図１０】図１０Ａは、Ｉ／Ｏ抑止が維持されることが好ましいケースの一例を示す。図１０Ｂは、Ｉ／Ｏ抑止が解除されることが好ましいケースの一例を示す。
【図１１】観点１に関わる処理の流れを示す。
【図１２】観点２−１の概要を示す。
【図１３】ワイドリンク纏めコマンドの構成を示す。
【図１４】一般的なＣＲＩ（Configure  Route  Information）コマンドの構成を示す。
【図１５】ｐｈｙビットマップの一例を示す。
【図１６】観点２−１に従う処理（コントローラ４３１が行う処理）の流れを示す。
【図１７】エクスパンダ４４３が行う処理の流れを示す。
【図１８】図１８Ａは、観点２−２が適用されないストレージシステムに生じ得る問題を示す。図１８Ｂは、リンクダウンが生じたＰＤＥＶ：Ｋ（ＳＡＳアドレスが「Ｋ」である記憶デバイス）に間接的に接続されている全てのｐｈｙについて「無効」がエクスパンダルートテーブルに設定されることを示す。図１８Ｃは、リンクアップしたＰＤＥＶ：Ｋに間接的に接続されている全てのｐｈｙについて「有効」がエクスパンダルートテーブルに設定されることを示す。
【図１９】観点２−２に従う処理（コントローラ４３１が行う処理）の流れを示す。
【図２０】障害チェックプロセス（図１９のＳ１９０５）の流れを示す。
【図２１】リンクダウンチェックプロセス（図１９のＳ１９０７）の流れを示す。
【図２２】図２２Ａは、１つのエクスパンダ＃００に２つのエクスパンダ＃０１１及び＃０１２が直接的に接続された構成の一例を示す。図２２Ｂは、コントローラ＃０とエクスパンダ＃００との接続が切断されたことを示す。
【図２３】図２３Ａは、図２２Ｂに示した切断の後に、エクスパンダ＃００のｐｈｙ＃１及びｐｈｙ＃２に接続されるエクスパンダが交換されたことを示す。図２３Ｂは、図２３Ａに示した交換の後に、コントローラ＃０とエクスパンダ＃００とが接続されたことを示す。
【図２４】図２４Ａは、図２３Ｂに示した接続の後にディスカバープロセスを行った結果（エクスパンダ＃００のエクスパンダルートテーブル６１１）を示す。図２４Ｂは、図２４Ａに示したテーブル６１１に基づくルーティングにおいて転送先の検出が不可になることを示す。
【図２５】図２５Ａは、図２３Ｂに示した接続の後に、ディスカバープロセスの前に、エクスパンダ＃００のエクスパンダルートテーブル６１１から全てのＳＡＳアドレス情報を一括して消去することを示す。図２５Ｂは、図２５Ａに示した一括消去の後にディスカバープロセスを行った結果（エクスパンダ＃００のエクスパンダルートテーブル６１１）を示す。
【図２６】転送先検出不可という問題が生じ得る、ストレージシステムの構成の一例を示す。
【図２７】観点２−３の概要を示す。
【図２８】一括消去コマンドの構成を示す。
【図２９】観点２−３に従う処理（コントローラ４３１が行う処理）の流れを示す。
【発明を実施するための形態】
【００１９】
以下、図面を参照して、本発明の一実施例を説明する。
【００２０】
なお、以下の説明では、「ｋｋｋテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ｋｋｋテーブル」を「ｋｋｋ情報」と呼ぶことができる。
【００２１】
また、以下の説明では、種々の対象の識別情報として、番号が使用されるが、番号以外種類の識別情報（例えば、英字や符号を含んだ識別子）も採用可能である。
【００２２】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Central  Processing  Unit））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び／又は通信インタフェース装置（例えば通信ポート）を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、ストレージシステム、コントローラ又はエクスパンダが行う処理としても良い。また、プロセッサは、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースから各計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
【００２３】
また、以下の説明では、同種の複数の要素を、要素の識別番号を用いて区別することがある。例えば、複数の要素Ａを区別する場合、「Ａ＃ｘ」と言うことがある。「Ａ＃ｘ」は、識別番号がｘの要素Ａであることを意味する。“ｘ”は、０以上の整数である。
【００２４】
また、以下の説明では、ＳＡＳエクスパンダを、単に「エクスパンダ」と言う。エクスパンダは、スイッチデバイスである。
【００２５】
また、以下の説明では、コントローラ側を「前段」と言い、コントローラ側と逆の側を「後段」と言うことがある。
【００２６】
また、以下の説明では、ｐｈｙに１つのｐｈｙを隔てることなく接続されていることを「直接的に接続されている」と言い、ｐｈｙに１以上のｐｈｙを介してデバイス（記憶デバイス又はエクスパンダ）が接続されることを「間接的に接続される」と言う。
【００２７】
また、以下の説明では、ｐｈｙに直接的に接続されているデバイス（記憶デバイス又はエクスパンダ）を「直接デバイス」と言い、ｐｈｙに間接的に接続されているデバイスを「間接デバイス」と言うことがある。
【００２８】
また、以下の説明では、１つのｐｈｙを介してそのｐｈｙに直接的に接続されているデバイスに通信ができないことを、「リンクダウン」と言い、そのリンクダウンの回復（つまり通信可能になること）を「リンクアップ」と言うことがある。
【００２９】
また、以下の説明では、エクスパンダ＃ｘ（又はコントローラ）からエクスパンダ＃（ｘ＋１）（エクスパンダ＃ｘの次の後段のエクスパンダ）に通信ができないことを、「エクスパンダ＃ｘ（又はコントローラ）とエクスパンダ＃（ｘ＋１）との接続が切断されている」と言うことがある。切断は、例えば、エクスパンダ＃ｘ（又はコントローラ）とエクスパンダ＃（ｘ＋１）とを接続するためのケーブルが切れる或いは抜かれることにより、生じる。エクスパンダ＃ｘ（又はコントローラ）とエクスパンダ＃（ｘ＋１）がワイドリンクで接続されており、且つ、ワイドリンクに接続されている全てのｐｈｙについてリンクダウンが生じている場合、「切断」が生じていると言うことができる。
【００３０】
図４は、本発明の一実施例に係るストレージシステムの構成を示す。
【００３１】
ストレージシステム４０１は、基本筺体４１１と、複数の増設筺体４１３とで構成される。基本筺体４１１に増設筺体４１３が接続され、その増設筺体４１３の後段に、直列に、１以上の増設筺体４１３が接続される。
【００３２】
基本筺体４１１は、二重化されたコントローラ４３１（コントローラ＃０及び＃１）を有する。基本筺体４１１は、記憶デバイス（以下、ＰＤＥＶ）４５１を有しても良い。
【００３３】
コントローラ＃０及び＃１は、通信ネットワーク４０５を介してホスト４０３に接続されている。通信ネットワーク４０５は、例えば、ＳＡＮ（Storage  Area  Network）である。ホスト４０３は、物理的な１以上の計算機であっても良いし、仮想的な１以上の計算機であっても良い。ホスト４０３は、Ｉ／Ｏ要求を発行する。
【００３４】
コントローラ４３１は、ＳＡＳコントローラ４４１を有する。
【００３５】
増設筺体４１３は、二重化されたエンクロージャ４３３と、複数のＰＤＥＶ４５１とを有する。各エンクロージャ４３３は、エクスパンダ４４３を有する。ＰＤＥＶ４５１は、例えば、ＳＡＴＡ（Serial  Attached  SCSI）又はＳＡＳのインタフェースを搭載したＨＤＤ（Hard  Disk  Drive）又はＳＳＤ（Solid  State  Drive）である。
【００３６】
コントローラ＃０及び複数のＰＤＥＶ４５１に接続された第１の通信経路４６１と、コントローラ＃１及び複数のＰＤＥＶ４５１に接続された第２の通信経路４６３がある。第２の通信経路４６３は、第１の通信経路４６１の冗長経路である。このため、各ＰＤＥＶ４５１には、第１及び第２の通信経路４６３のいずれを経由してもアクセスすることができる。
【００３７】
各通信経路は、直列に接続された複数のエクスパンダ４４３を有する。最前段のエクスパンダ４４３が、コントローラ４３１に接続されている。従って、コントローラ４３１及び複数のエクスパンダ４４３が直列になっている。コントローラ４３１とエクスパンダ４４３間、及び、エクスパンダ４４３とエクスパンダ４４３間は、ワイドリンク４６１で接続されている。ワイドリンク４６１は、並列の２以上の物理リンクで構成されている。コントローラ４３１とエクスパンダ４４３間、及び／又は、エクスパンダ４４３とエクスパンダ４４３間は、ワイドリンク４６１に代えて、ワイドリンクを構成しない物理リンクで接続されても良い。
【００３８】
コントローラ＃０（＃１）は、ホスト４０３からＩ／Ｏ要求を受信する。コントローラ＃０（＃１）は、受信したＩ／Ｏ要求を基に、Ｉ／Ｏ先のＰＤＥＶ４５１を特定する。コントローラ＃０（＃１）は、特定されたＰＤＥＶ４５１をターゲットとしたＩ／Ｏコマンドを、ＳＡＳコントローラ＃０（＃１）を介して発行する。そのＩ／Ｏコマンドは、コントローラ＃０（＃１）に接続されている第１の通信経路４６１（第２の通信経路４６３）におけるエクスパンダ＃０ｎ（＃１ｎ）を経由する（ｎは０以上の整数）。
【００３９】
図５は、コントローラ４３１の構成を示す。
【００４０】
コントローラ４３１は、ＲＡＩＤコントローラ５７１と、バックエンドＩ／Ｆ５２１とを有する。
【００４１】
ＲＡＩＤコントローラ５７１は、ホスト４０３からＩ／Ｏ要求（ライト要求又はリード要求）を受信し、そのＩ／Ｏ要求から特定される論理ボリュームの基になっているＰＤＥＶ４５１を特定し、特定したＰＤＥＶ４５１をターゲットとしたＩ／Ｏコマンドを生成し、ＳＡＳコントローラ４４１に送る。ＲＡＩＤコントローラ５７１は、ホストＩ／Ｆ５０７と、キャッシュメモリ５０３と、タイマ５０５と、メモリ５０９と、それらに接続されたプロセッサ（例えばＣＰＵ）５０１とを有する。
【００４２】
ホストＩ／Ｆ５０７は、ホスト４０３との通信のためのインタフェース装置である。ホストＩ／Ｆ５０７が、ホスト４０３からＩ／Ｏ要求を受信する。
【００４３】
キャッシュメモリ５０３は、ホスト４０３からのＩ／Ｏ要求に従ってＰＤＥＶ４５１に対して書き込まれる又は読み出されるデータを一時的に記憶する。
【００４４】
タイマ５０５は、現在時刻を測る。
【００４５】
メモリ５０９は、情報及びコンピュータプログラム、例えば、初回時間退避テーブル５１０、デバイス管理テーブル５１１、リンクダウン回数テーブル５１２、ＲＡＩＤ制御プログラム５１３、Ｉ／Ｏ発行プログラム５１４、デバイスコマンド発行プログラム５１５、障害処理プログラム５１６及びデバイス制御プログラム５１７を記憶する。ＣＰＵ５０１がプログラム５１３〜５１７を実行する。テーブル５１０〜５１２については後に説明する。
【００４６】
ＲＡＩＤ制御プログラム５１３は、ＲＡＩＤ演算を行う。具体的には、例えば、２以上のＰＤＥＶ４５１でＲＡＩＤグループが構成されており、ＲＡＩＤ制御プログラム５１３は、データの書込み先のＲＡＩＤグループのＲＡＩＤレベルに応じて、そのデータを用いたＲＡＩＤ演算を行う。
【００４７】
Ｉ／Ｏ発行プログラム５１４は、ＲＡＩＤ演算の結果を基に、データの書込み先のＰＤＥＶ４５１を特定し、特定したＰＤＥＶ４５１をターゲットとしたライトコマンドを生成し、その生成したライトコマンドを発行する。
【００４８】
デバイスコマンド発行プログラム５１５は、Ｉ／Ｏコマンドとは異なるコマンド（例えば、後述のワイドリンク纏めコマンド等のオリジナルコマンド）を発行する。
【００４９】
障害処理プログラム５１６は、障害のチェックに関する処理（例えば、エラー回数のカウント、時間の監視、様々な判断）を行う。
【００５０】
デバイス制御プログラム５１７は、デバイスコマンド発行プログラム５１５が発行したコマンドに対する応答を基に、デバイス管理テーブル５１１を更新する。
【００５１】
バックエンドＩ／Ｆ５２１は、ＳＡＳに従う通信を行うためのインタフェース装置である。バックエンドＩ／Ｆ５２１が、ＳＡＳコントローラ４４１を有する。
【００５２】
ＳＡＳコントローラ４４１は、エクスパンダ４４３とＲＡＩＤコントローラ５１７との間の通信のプロトコル変換を制御することができる。ＳＡＳコントローラ４４１は、例えば、ワイドポートを有する。ワイドポートは、２以上の物理ポートから構成されるポートであり、ワイドリンクを経由して、最前段のエクスパンダ４４３に接続される。ＳＡＳコントローラ４４１は、複数のワイドポートを有しても良いし、ワイドポートを構成しない物理ポートを有しても良い。ＳＡＳコントローラ４４１に、複数のエクスパンダ４４３が接続されても良い。
【００５３】
コントローラ４３１（例えば＃０）は、他方のコントローラ４３１（例えば＃１）と、ホストＩ／Ｆ５０７、バックエンドＩ／Ｆ５２１、又は、それらとは別の通信インタフェース装置（図示せず）を介して、接続されている。これにより、コントローラ４３１は、ホスト４０３からのＩ／Ｏ要求、又は、ＰＤＥＶ４５１をターゲットとしたＩ／Ｏコマンドを、他方のコントローラ４３１に転送することができる。
【００５４】
図６は、エクスパンダ４４３の構成を示す。
【００５５】
エクスパンダ４４３は、例えばＬＳＩ（Large Scale Integration）である。エクスパンダ４４３は、デバイスＩ／Ｆ６０１と、スイッチ回路６０３と、メモリ６０７と、プロセッサ（例えばＣＰＵ）６０５とを有する。
【００５６】
デバイスＩ／Ｆ６０１は、デバイスに対するインタフェース装置である。ここで言う「デバイス」は、ＰＤＥＶ４５１又は別のエクスパンダ４４３である。デバイスＩ／Ｆ６０１は、複数のＰｈｙ（物理ポート）６２１で構成されている。複数のｐｈｙ６２１は、ＰＤＥＶ４５１が直接的に接続されているｐｈｙ６２１と、別のエクスパンダ４４３が直接的に接続されているｐｈｙ６２１とを含む。エクスパンダ４４３が最前段のエクスパンダ４４３の場合、複数のｐｈｙ６２１は、コントローラ４３１が直接的に接続されたｐｈｙを含む。
【００５７】
スイッチ回路６０３は、ルーティングを行うハードウェア回路である。スイッチ回路６０３には、複数のＰｈｙ６２１とプロセッサ６０５とが接続されている。スイッチ回路６０３は、メモリ６０５を有し、メモリ６０５が、エクスパンダルートテーブル６１１を記憶する。ルーティングは、そのエクスパンダルートテーブル６１１を基に行われる。
【００５８】
メモリ６０７は、情報及びコンピュータプログラム、例えば、デバイスＩ／Ｆ情報６２３、及び、ファームウェア６３１を記憶する。
【００５９】
デバイスＩ／Ｆ情報６２３は、ｐｈｙ６２１毎のステータス情報（例えば、通信可能を意味する“Ready”、通信不可能であることを意味する“Not-ready”）を有する。
【００６０】
ファームウェア６３１は、デバイスＩ／Ｆ制御プログラム６４１、デバイスＩ／Ｆ監視プログラム６４２、ブロードキャスト発行プログラム６４３、及び、コマンド処理プログラム６４４を有する。
【００６１】
デバイスＩ／Ｆ制御プログラム６４１は、ｐｈｙの有効／無効を制御する。
【００６２】
デバイスＩ／Ｆ監視プログラム６４２は、各ｐｈｙのステータスを、各ｐｈｙをポーリングすることにより検出する。デバイスＩ／Ｆ監視プログラム６４２は、ｐｈｙについて検出したステータスを表す情報をデバイスＩ／Ｆ情報６２３に書き込む。また、デバイスＩ／Ｆ監視プログラム６４２は、検出されたステータスがエラーを意味するステータスの場合、ブロードキャスト発行プログラム６４３を起動する。
【００６３】
ブロードキャスト発行プログラム６４３は、エラー情報をブロードキャストする。つまり、エラー情報は、前段側と後段側の両方へ出力される。前段側へ出力されたエラー情報は、やがて、コントローラ４４３に届く。なお、ブロードキャストされるエラー情報は、例えば、ＢＰ（ＳＥＳ）である。ＢＰ（Broadcast Primitive）とは、ＳＡＳの規格でサポートされている情報フレームである。ＢＰとしては、例えば、ＢＰ（ＳＥＳ）と、ＢＰ（ＣＨＡＮＧＥ）とがある（ＳＥＳは、「SCSI  Enclosure  Service」の略である）。ＢＰ（ＳＥＳ）は、例えば、監視対象のデバイスのステータスが変化したことが検知された場合に作成されて発行される情報フレームである。ＢＰ（ＣＨＡＮＧＥ）は、例えば、エクスパンダ４４３で管理されているトポロジに変化があったこと（例えばＰＤＥＶ４５１が新たに追加或いは取り外されたこと）が検知された場合に作成されて発行される情報フレームである。
【００６４】
コマンド処理プログラム６４４は、コントローラ４３１から受信したコマンドを解析して、コマンドの種類を特定し、特定したコマンドの種類に応じて、そのコマンドを処理する。
【００６５】
図７Ａは、エクスパンダルートテーブル６１１の構成を示す。
【００６６】
テーブル６１１は、エクスパンダ（そのテーブル６１１を有するエクスパンダ）４４３が有するｐｈｙ毎に、ｐｈｙに間接的に接続されているデバイス（ＰＤＥＶ又はエクスパンダ）のＳＡＳアドレスを表すＳＡＳアドレス情報と、そのデバイスが有効か無効かを表すステータス情報とを有する。
【００６７】
図７Ａに示したテーブル６１１は、例えば、エクスパンダ＃００が有し、図７Ｂに示す構成を表す。なお、エクスパンダ４４３の識別番号は、通し番号であり、より後段になるにつれて、１加算された番号となる。すなわち、エクスパンダ＃ｘに直接的に接続されている後段のエクスパンダは、エクスパンダ＃（ｘ＋１）であり、エクスパンダ＃ｘに直近的に接続されている前段のエクスパンダは、エクスパンダ＃（ｘ−１）である。
【００６８】
図７Ｂに示すように、エクスパンダ＃０１に、ＳＡＳアドレス「Ａ」のＰＤＥＶ（以下、ＰＤＥＶ：Ａ）と、ＰＤＥＶ：Ｂとが直接的に接続されていて、エクスパンダ＃０２に、ＰＤＥＶ：Ｃが直接的に接続されている。
【００６９】
図７Ｂに示す構成によれば、エクスパンダ＃００のｐｈｙ＃０〜＃３のどのｐｈｙを通じても、ＰＤＥＶ：Ａ、ＰＤＥＶ：Ｂ、及びＰＤＥＶ：Ｃのいずれにもアクセス可能である。このため、図７Ａに示すように、エクスパンダ＃００のエクスパンダルートテーブル６１１には、ｐｈｙ＃０及び＃１について、ＰＤＥＶ：Ａ、ＰＤＥＶ：Ｂ、及びＰＤＥＶ：ＣのＳＡＳアドレス情報「Ａ」、「Ｂ」及び「Ｃ」が設定される。図示は省略されているが、エクスパンダ＃００のｐｈｙ＃０２及び＃０３についても、ＰＤＥＶ：Ａ、ＰＤＥＶ：Ｂ、及びＰＤＥＶ：ＣのＳＡＳアドレス情報「Ａ」、「Ｂ」及び「Ｃ」が設定される。
【００７０】
なお、図示は省略されているが、各エクスパンダ４４３は、エクスパンダルートテーブル６１１の他に、ダイレクトデバイステーブルを有することができる。ダイレクトデバイステーブルは、そのテーブルを有するエクスパンダのどのｐｈｙにどんなＳＡＳアドレス情報を有するデバイスが直接的に接続されているかを表す。エクスパンダ４４３は、例えば、ＳＡＳアドレス情報を有するＩ／Ｏコマンドを受信した場合、そのＳＡＳアドレス情報に一致するＳＡＳアドレス情報がエクスパンダルートテーブル６１１とダイレクトデバイステーブルのどちらにあるかを判断することができる。エクスパンダ４４３は、その一致するＳＡＳアドレス情報がエクスパンダルートテーブル６１１にあれば、その一致するＳＡＳアドレス情報に対応する１以上のｐｈｙ番号から１つのｐｈｙ番号を選択し、選択したｐｈｙ番号のｐｈｙから、上記受信したＩ／Ｏコマンドを出力することができる。一方、エクスパンダ４４３は、その一致するＳＡＳアドレス情報がダイレクトデバイステーブルにあれば、その一致するＳＡＳアドレス情報に対応するｐｈｙ番号のｐｈｙから、上記受信したＩ／Ｏコマンドを出力することができる。
【００７１】
図８は、デバイス管理テーブル５１１の構成を示す。
【００７２】
テーブル５１１は、コントローラ４３１が有する（図５参照）。テーブル５１１は、エクスパンダ毎に、下記の情報、
（８−１）各ｐｈｙについて、ワイドリンクを構成する物理リンクに接続されているか（Wide）、或いは、ワイドリンクを構成しない物理リンクに接続されているか（Narrow）を表す情報、
（８−２）各ｐｈｙについて、正常か異常かを表すステータス情報、
を有する。図８の例によれば、エクスパンダ＃００のｐｈｙ＃０、＃１及び＃２に、ワイドリンク＃０を構成する物理リンクが接続されていて（図７Ｂ参照）、ｐｈｙ＃０、＃１及び＃２のいずれも正常であることがわかる。
【００７３】
この図８は、コントローラ＃０が有するテーブル５１１を示している。コントローラ＃１が有するテーブル５１１には、エクスパンダ＃１ｎ（ｎは０以上の整数）について、前述した情報（８−１）及び（８−２）を有する。
【００７４】
図９は、ディスカバープロセスの流れを示す。
【００７５】
ディスカバープロセスは、各通信経路４６１、４６３において行われる。ディスカバープロセスは、前段側のエクスパンダから後段側のエクスパンダにかけて１つずつ順次に行われる。つまり、ディスカバープロセスのターゲットは、１つずつ後段のエクスパンダに移っていく。
【００７６】
ディスカバープロセスでは、以下の３種類のコマンド、
（１）ＲＧ（Report  General）コマンド、
（２）ディスカバーコマンド、
（３）ＣＲＩ（Configure  Route  Information）コマンド、
が発行される。（１）〜（３）のコマンドのいずれも、ＳＭＰコマンドである。
【００７７】
ＲＧコマンドは、ターゲットのエクスパンダに発行されるコマンドである。ＲＧコマンドは、ターゲットのエクスパンダが有するｐｈｙに関する情報（例えば、ｐｈｙの数、ｐｈｙの識別番号）を取得するために発行される。ＲＧコマンドは、エクスパンダ毎に発行される。
【００７８】
ディスカバーコマンドは、ターゲットのエクスパンダに発行されるコマンドである。ディスカバーコマンドは、ターゲットのエクスパンダが有するｐｈｙに直接的に接続されているデバイス（エクスパンダ又はＰＤＥＶ）に関する情報（例えば、ＰＤＥＶのＳＡＳアドレス）を取得するために発行される。ディスカバーコマンドは、そのエクスパンダが有するｐｈｙ毎に、発行される。
【００７９】
ＣＲＩコマンドは、ターゲットのエクスパンダよりも前段のエクスパンダに発行されるコマンドである。ＣＲＩコマンドは、エクスパンダルートテーブル６１１に情報を設定するために発行されるコマンドである。ＣＲＩコマンドは、ターゲットのエクスパンダよりも前段にある各エクスパンダに発行され、且つ、各エクスパンダについて、ｐｈｙ毎に発行される。
【００８０】
以下、説明を分かりやすくするために、図７Ｂに示した構成において、エクスパンダ＃０１が、ディスカバープロセスのターゲットであるとする。
【００８１】
コントローラ＃００が、まず、エクスパンダ＃０１に、ＲＧコマンドを発行する（Ｓ９０１）。エクスパンダ＃０１（コマンド処理プログラム）が、ＲＧコマンドを受信し、ｐｈｙに関する情報を含んだ応答を、コントローラ＃００に返す。ｐｈｙに関する情報は、エクスパンダ＃０１が有する全てのｐｈｙについて、ｐｈｙ番号を含む。コントローラ＃００は、ＲＧコマンドに対する応答から、エクスパンダ＃０１が有する全てのｐｈｙのｐｈｙ番号を取得できる。
【００８２】
次に、コントローラ＃００は、ｐｈｙ番号を有するディスカバーコマンドをエクスパンダ＃０１に発行する（Ｓ９０２）。ディスカバーコマンドは、エクスパンダ＃０１が有するｐｈｙ毎に発行される。エクスパンダ＃０１は、ディスカバーコマンドを受信し、受信したディスカバーコマンドが有するｐｈｙ番号のｐｈｙに直接的に接続されているデバイスのＳＡＳアドレス情報を含んだ応答を、コントローラ＃００に返す。例えば、エクスパンダ＃０１は、ｐｈｙ番号「７」を有するディスカバーコマンドを受信した場合、ＳＡＳアドレス情報「Ａ」を含んだ応答を、コントローラ＃００に返す。コントローラ＃００は、ディスカバーコマンドに対する応答から、そのディスカバーコマンドが有するｐｈｙ番号のｐｈｙに直接的に接続されているデバイスのＳＡＳアドレス情報を取得できる。
【００８３】
次に、コントローラ＃００は、エクスパンダ＃０１よりも前段にある全てのエクスパンダ＃００に、ＣＲＩコマンドを発行する（Ｓ９０３）。そのＣＲＩコマンドは、そのＣＲＩコマンドの発行先のエクスパンダが有するｐｈｙの番号と、そのｐｈｙに間接的に接続されているデバイスのＳＡＳアドレス情報（ディスカバーコマンドに対する応答から取得されたＳＡＳアドレス情報）とを有する。例えば、ＣＲＩコマンドの発行先がエクスパンダ＃００の場合、ＣＲＩコマンドは、例えば、ｐｈｙ番号「０」と、ＳＡＳアドレス情報「Ａ」と、インデックス番号「０」とを有する。エクスパンダ＃００（コマンド処理プログラム）は、そのＣＲＩコマンドに従って、エクスパンダルートテーブル６１１における、ｐｈｙ番号「０」及びインデックス番号「０」に対応した位置に、ＳＡＳアドレス情報「Ａ」を設定する（その際、例えば、ステータス情報として「Valid」も設定されてよい）。これにより、ＰＤＥＶ＃Ａをターゲットとしたコマンドが、エクスパンダ＃００のｐｈｙ＃０を経由することが可能となる。なお、ＳＡＳアドレス情報「Ａ」とインデックス番号「０」とを含んだＣＲＩコマンドは、ｐｈｙ番号「１」〜「３」のそれぞれについても発行される。
【００８４】
ターゲットのエクスパンダ＃０１についてディスカバープロセス（Ｓ９０１〜Ｓ９０３）が終わった場合、コントローラ＃０は、エクスパンダ＃０１の後段にエクスパンダがあるか否かを判断する（Ｓ９０４）。この判断は、例えば、ディスカバーコマンドに対する応答を基に行うことができる。Ｓ９０４の判断の結果が否定的の場合、ターゲットのエクスパンダが最後段のエクスパンダであるため、処理が終了する。一方、Ｓ９０４の判断の結果が肯定的の場合、ターゲットのエクスパンダが、エクスパンダ＃０１の次のエクスパンダ＃０２とされ、エクスパンダ＃０２について、ディスカバープロセスが行われる。そのディスカバープロセスにおいて、ＣＲＩコマンドは、エクスパンダ＃０２の前段のエクスパンダ＃００及び＃０１に発行される。
【００８５】
以上の説明から、ディスカバープロセスのターゲットのエクスパンダが後段であればあるほど、ディスカバープロセスに時間がかかる。なぜなら、ターゲットのエクスパンダの前段に多くのエクスパンダが存在することになり、それ故、発行するＣＲＩコマンドの数が多くなるからである。
【００８６】
本実施例は、下記の観点１及び２のうちの少なくとも一方の観点に従って、通信経路がＩ／Ｏに使用されない時間を短くすることができる。
（観点１）Ｉ／Ｏ抑止としておく時間長が短縮される。
（観点２）発行するＣＲＩコマンドの数が削減される。本観点は、具体的には、下記である。
（観点２−１）ＳＡＳアドレス情報をエクスパンダルートテーブル６１１に一括して設定するための第１のオリジナルＣＲＩコマンドが定義される。以下、第１のオリジナルＣＲＩコマンドを、「ワイドリンク纏めコマンド」と言う。ディスカバープロセスにおいて、発行されるＣＲＩコマンドは、適宜、ワイドリンク纏めコマンドである。１つのワイドリンク纏めコマンドで、１つのワイドリンクに接続されている２以上のｐｈｙの全てについて、ＳＡＳアドレス情報がエクスパンダルートテーブル６１１に一括して設定される。これにより、ｐｈｙ毎にＣＲＩコマンドを発行する必要が無い。従って、ディスカバープロセスにかかる時間を短縮することができる。
（観点２−２）エクスパンダルートテーブル６１１にステータス情報「無効」を設定するためのＣＲＩコマンドを発行することが適宜にスキップされる。これにより、発行されるＣＲＩコマンドの数が削減される。
（観点２−３）エクスパンダルートテーブル６１１からＳＡＳアドレス情報を一括して消去するための第２のオリジナルＣＲＩコマンドが定義される。以下、第２のオリジナルＣＲＩコマンドを、「一括消去コマンド」と言う。１つの一括消去コマンドで、エクスパンダルートテーブル６１１から、そのテーブル６１１が有する全てのＳＡＳアドレス情報が消去される。これにより、ＳＡＳアドレス情報毎に、ＳＡＳアドレス情報を消去するためのＣＲＩコマンドを発行する必要が無い。
【００８７】
以下、各観点を詳細に説明する。
【００８８】
＜観点１：Ｉ／Ｏ抑止の時間長の短縮＞。
【００８９】
エクスパンダ４４３は、何らかのエラーを検出すると、エラー情報（ＢＰ（ＳＥＳ））をブロードキャストする。前段側に出力されたエラー情報は、エラーを検出したエクスパンダ４４３の前段にある１以上のエクスパンダ４４３を次々に経由して、コントローラ４３１に届く。コントローラ４３１は、エラー情報を受けた場合、そのエラー情報が経由した通信経路について、Ｉ／Ｏ抑止を設定する。コントローラ４３１は、Ｉ／Ｏ抑止を設定した通信経路へ、Ｉ／Ｏコマンドを出力しない。
【００９０】
図１０Ａに示すように、エクスパンダ＃ｘ（例えば＃００）と次のエクスパンダ＃（ｘ＋１）（例えば＃０１）との接続が切断されたとする。このケースでは、コントローラ（例えば＃０）が、エクスパンダ＃（ｘ＋１）以降のエクスパンダに直接的に接続されているどのＰＤＥＶをターゲットとしたＩ／Ｏコマンドを発行しても、エラー応答（エラーを表す応答）を受けることになる。なぜなら、エクスパンダ＃ｘより後段のエクスパンダにＩ／Ｏコマンドを転送することができないからである。
【００９１】
一方、図１０Ｂに示すように、エクスパンダ＃ｘ（例えば＃０２）に直接的に接続されているＰＤＥＶ（例えばＰＤＥＶ：Ｉ）がリンクダウンしたとする。このケースでは、Ｉ／Ｏコマンドに対してエラー応答を受けることになるのは、ＰＤＥＶ：ＩをターゲットとしたＩ／Ｏコマンドに対してだけである。このため、ストレージシステム全体に与える影響は小さい。
【００９２】
そこで、本実施例では、コントローラ４３１は、エクスパンダ＃ｘと次のエクスパンダ＃（ｘ＋１）との接続が切断されているか否かだけを先にチェックする。そのチェックの結果が否定的であれば（すなわち、切断が生じていなければ）、コントローラ４３１は、Ｉ／Ｏ抑止を解除し（図１０Ｂ参照）、その後に、ディスカバープロセスを行う。このため、コントローラ４３１は、そのコントローラ４３１に接続されている通信経路でディスカバープロセス中であっても、その通信経路へＩ／Ｏコマンドを出力する。一方、上記チェックの結果が肯定的であれば、Ｉ／Ｏ抑止が維持される（図１０Ａ参照）。Ｉ／Ｏ抑止が維持されている間に、ディスカバープロセスが行われる。
【００９３】
図１１は、観点１に関わる処理の流れを示す。
【００９４】
この処理は、エラー情報を受けたコントローラ４３１によって開始される。以下、そのコントローラ４３１は、コントローラ＃０であるとし、エラー情報が経由した通信経路（当該経路）は、第１の通信経路４６１であるとする。
【００９５】
コントローラ＃０は、第１の通信経路４６１について、Ｉ／Ｏ抑止を、例えばメモリ５０９に設定する（Ｓ１１０１）。
【００９６】
次に、コントローラ＃０は、エクスパンダ＃０ｎをターゲットとして、下記の処理を行う。最初にターゲットとなるエクスパンダ＃０ｎは、エクスパンダ＃００（つまり最前段のエクスパンダ）である。
（＊）コントローラ＃０は、エクスパンダ＃０ｎにＲＧコマンドを発行する（Ｓ１１０２）。
（＊）コントローラ＃０は、そのＲＧコマンドに対して正常応答（正常を表す応答）を受信したか否かを判断する（Ｓ１１０３）。
【００９７】
Ｓ１１０３の判断の結果が否定的の場合、エクスパンダ＃０ｎと次のエクスパンダ＃０（ｎ＋１）との接続が切断されているということである。この場合、コントローラ＃０は、Ｉ／Ｏ抑止を解除することなく、最前段のエクスパンダ＃００から最後段のエクスパンダにかけて順次にディスカバープロセスを行う（Ｓ１１０５）。第１の通信経路４６１における全てのエクスパンダについてディスカバープロセスが終わった後に、コントローラ＃０は、第１の通信経路のＩ／Ｏ抑止を解除する（Ｓ１１０６：ＮＯ、Ｓ１１０７）。
【００９８】
Ｓ１１０３の判断の結果が肯定的の場合、コントローラ＃０は、次のエクスパンダ＃０ｎ（ｎ＝ｎ＋１）に、ＲＧコマンドを発行する（Ｓ１１０２）。ターゲットが最後段のエクスパンダになり、その最後段のエクスパンダに発行したＲＧコマンドに対しても正常応答を受信したならば、コントローラ＃０は、第１の通信経路４６１のＩ／Ｏ抑止を解除する（Ｓ１１０４）。その後に、コントローラ＃０は、最前段のエクスパンダ＃００から最後段のエクスパンダにかけて順次にディスカバープロセスを行う（Ｓ１１０５）。
【００９９】
以上、観点１によれば、コントローラ４３１は、ブロードキャストされたエラー情報を受信した場合、ディスカバープロセスの開始前に、エラー情報がブロードキャストされた原因が、エクスパンダ＃ｘと次のエクスパンダ＃（ｘ＋１）との接続の切断であるか否かをチェックする。そのチェックの結果が否定的であれば、コントローラ４３１は、エラー情報が経由した通信経路のＩ／Ｏ抑止を解除し、その後で、ディスカバープロセスを開始する。つまり、エラー情報が経由した通信経路のＩ／Ｏ抑止を解除しても影響が小さいことが特定された場合に、Ｉ／Ｏ抑止が設定されている時間長を短縮することができる。
【０１００】
なお、Ｓ１１０５では、ＲＧコマンドの発行は省略されて良い。具体的には、Ｓ１１０５では、Ｓ１１０２のＲＧコマンドの応答から特定されるｐｈｙ番号を指定したディスカバーコマンドが発行されて良い。
【０１０１】
＜観点２−１：ワイドリンク纏めコマンド＞。
【０１０２】
以下、ワイドリンクを構成する各物リンクに接続されている各ｐｈｙを、「ワイドｐｈｙ」と言う。また、後段のエクスパンダに直接的に接続されているワイドｐｈｙを、「下位ワイドｐｈｙ」と言う。
【０１０３】
エクスパンダ＃ｘにＰＤＥＶ：Ｔが直接的に接続されたとする。また、エクスパンダ＃ｘよりも前段にある１以上のエクスパンダは、ワイドリンクで接続されていて、ワイドリンクに接続されている２以上の下位ワイドｐｈｙのうちのいずれの下位ワイドｐｈｙを介しても、ＰＤＥＶ：ＴにＩ／Ｏ可能であるとする。
【０１０４】
ＳＡＳの規格によれば、コントローラ４３１は、ＰＤＥＶ：Ｔを新たに認識した場合、エクスパンダ＃ｘよりも前段にある全てのエクスパンダに、下位ワイドｐｈｙ毎に、ＳＡＳアドレス情報「Ｍ」を設定するためのＣＲＩコマンドを発行しなければならない。具体的には、発行されるべきＣＲＩコマンドの数は、（エクスパンダ＃ｘよりも前段にあるエクスパンダの数）と（エクスパンダ＃ｘよりも前段にある下位ワイドｐｈｙの数）との積である。
【０１０５】
同一のワイドリンクに接続されている２以上の下位ワイドｐｈｙについて、エクスパンダルートテーブル６１１には、同一のＳＡＳアドレス情報「Ｍ」が設定されることになる。
【０１０６】
この事実に着目し、本実施例では、オリジナルのＣＭＩコマンド（拡張されたＣＭＩコマンド）として、ワイドリンク纏めコマンドが定義されている。ディスカバープロセスにおいて発行されるＣＲＩコマンドは、適宜、ワイドリンク纏めコマンドである。
【０１０７】
具体的には、例えば、図１２に示すように、コントローラ＃０は、エクスパンダ＃００よりも後段のエクスパンダのディスカバープロセスにおいて、ＣＲＩコマンドとして、ワイドリンク纏めコマンド１２０１を、エクスパンダ＃００（ディスカバープロセスの対象のエクスパンダよりも前段にあるエクスパンダ）に発行する。ワイドリンク纏めコマンド１２０１は、パラメータとして、ｐｈｙ情報、インデックス番号及びＳＡＳアドレス情報を有する。図１２の例によれば、ｐｈｙ情報は、ワイドリンクに接続されている全ての下位ワイドｐｈｙの識別番号「０」、「１」、「２」及び「３」を表す。インデックス番号は、例えば「３」である。ＳＡＳアドレス情報は、新たに認識されたＰＤＥＶ：ＸのＳＡＳアドレス「Ｘ」を表す。
【０１０８】
エクスパンダ＃００が、ワイドリンク纏めコマンド１２０１を受信する。ファームウェア６３１（コマンド処理プログラム）が、ワイドリンク纏めコマンド１２０１に従い、点線枠に示すように、インデックス番号「３」のカラム（ルーティングテーブル６１１内のカラム）における、ｐｈｙ番号「０」、「１」、「２」及び「３」に対応した全てのエントリに、ＳＡＳアドレス情報「Ｘ」を設定する。
【０１０９】
このように、観点２−１によれば、１つのワイドリンク纏めコマンドで、同一のワイドリンクに接続されている２以上の下位ワイドｐｈｙについて、エクスパンダルートテーブル６１１に、同一のＳＡＳアドレス情報を設定することができる。
【０１１０】
以下、ワイドリンク纏めコマンドの構成を説明する。
【０１１１】
図１３は、ワイドリンク纏めコマンドの構成を示す。図１４は、一般的なＣＲＩコマンドの構成を示す。
【０１１２】
以下の説明では、ＣＲＩコマンドが、複数のエントリで構成されていて、各エントリのサイズは１バイトであり、各エントリは、８個のサブエントリで構成されていて、各サブエントリのサイズは１ビットであるとする。また、ｆ番目のエントリを、「エントリ＃ｆ」と記載する（図１３及び図１４によれば、ｆは０〜４３の整数）。
【０１１３】
ワイドリンク纏めコマンドの構成は、下記の点を除き、一般的なＣＲＩコマンドと実質的に同じである。
（＊）エントリ＃１。ワイドドリンク纏めコマンドも一般的なＣＲＩコマンドも、エントリ＃１に、ファクションを表すコードを有する。ファンクションは、コマンドの種類を表す。ワイドリンク纏めコマンドのファンクションコードは、複数のファンクションコードのうちの２以上の未定義のファンクションコードからワイドリンク纏めコマンドに割り当てられたファンクションコード「Ｃ０ｈ」である。具体的には、例えば、ＳＡＳ２．０の規格によれば、「Ｃ０ｈ」〜「ＦＦｈ」が、ベンダが自由に利用可能なコードである。本実施例では、そのうちの「Ｃ０ｈ」が、ワイドリンク纏めコマンドに割り当てられる。
（＊）エントリ＃９。一般的なＣＲＩコマンドは、９バイト目のエントリに、１つのｐｈｙ識別子（ｐｈｙ番号）を有する。一方、ワイドリンク纏めコマンドは、同一のワイドリンクに接続されている２以上の下位ワイドｐｈｙの全てを指定しなければならず、且つ、それら２以上の下位ワイドｐｈｙを表す情報のサイズが１バイトを超えることもあるため、１つのエントリ＃９にｐｈｙ番号を有しない。
（＊）エントリ＃２４〜＃３９。一般的なＣＲＩコマンドは、エントリ＃２４〜＃３９に特に有効な情報を有しない。一方、ワイドリンク纏めコマンドは、エントリ＃２４〜＃３９に、ｐｈｙ情報を有する。本実施例では、ｐｈｙ情報は、ターゲットｐｈｙ識別子ビットマップ（以下、ｐｈｙビットマップ）である。ｐｈｙビットマップの一例は、図１５に示す通りである。ｐｈｙビットマップは、複数のｐｈｙ（例えば１２８個のｐｈｙ）にそれぞれ対応した複数のビット（１２８個のビット）で構成されている。ｐｈｙビットマップのうち、指定された２以上のｐｈｙ（同一のワイドリンクに接続されている２以上の下位ワイドｐｈｙ）に対応した２以上のビットは、それぞれ、オン（例えば“１”）とされ、それ以外のビットは、オフ（例えば“０”）とされる。なお、ｐｈｙ情報は、ｐｈｙビットマップに代えて、他種の情報、例えば、指定された２以上のｐｈｙを表す２以上のｐｈｙ番号であっても良い。
【０１１４】
なお、ワイドドリンク纏めコマンドも一般的なＣＲＩコマンドも、インデックス番号を、エントリ＃６及び＃７に有し、ＳＡＳアドレス情報を、エントリ＃１６〜＃２３に有する。
【０１１５】
図１６は、観点２−１に従う処理（コントローラ４３１が行う処理）の流れを示す。なお、図１６の説明において、ディスカバープロセスにおけるＣＲＩコマンドの発行先のエクスパンダ（ディスカバープロセスのターゲットのエクスパンダより前段にあるエクスパンダ）を、「対象エクスパンダ」と言う。
【０１１６】
コントローラ４３１は、デバイス管理テーブル５１１（図８参照）を基に、対象エクスパンダが有する複数のｐｈｙのうち、同一のワイドリンクに接続されている２以上の下位ワイドｐｈｙを特定する（Ｓ１６０１）。どれが下位ｐｈｙ（後段のエクスパンダに直接的に接続されているｐｈｙ）であるかを表す情報を、デバイス管理テーブル５１１が有していても良い。
【０１１７】
コントローラ４３１は、ワイドリンク纏めコマンドを生成する（Ｓ１６０２）。具体的には、コントローラ４３１は、ＣＲＩコマンドに、フォーマットコード「Ｃ０ｈ」と、インデックス番号と、ＳＡＳアドレス情報と、Ｓ１６０１で特定した２以上の下位ワイドｐｈｙに対応する２以上のビットをオンにしたｐｈｙビットマップとを設定する。
【０１１８】
コントローラ４３１は、Ｓ１６０２で生成したワイドリンク纏めコマンドを、対象エクスパンダに発行する（Ｓ１６０３）。
【０１１９】
図１７は、エクスパンダ４４３が行う処理の流れを示す。
【０１２０】
エクスパンダ４４３が、コマンドを受信する（Ｓ１７０１）。
【０１２１】
ファームウェア６３１内のコマンド処理プログラム６４４が、コマンドを解析し、そのコマンドがワイドリンク纏めコマンドか否かを判断する（Ｓ１７０２）。受信したコマンド内のファンクションコードから、そのコマンドの種類を特定することができる。
【０１２２】
Ｓ１７０２の判断の結果が否定的の場合、プログラム６４４は、受信したコマンドに従う処理を行う（Ｓ１７０６）。例えば、コマンドが、Ｉ／Ｏコマンドであれば、そのＩ／Ｏコマンドの転送が行われる。また、コマンドが、一括消去コマンドであれば、エクスパンダルートテーブル６１１から全てのＳＡＳアドレス情報が消去される。
【０１２３】
Ｓ１７０２の判断の結果が肯定的の場合、プログラム６４４は、ｐｈｙビットマップを先頭から末尾にかけて、順に、下記の処理を行う。
（＊）プログラム６４４は、Ｓ１７０２の判断が行われていない１以上のビットのうち最前のビットについて、オンか否かを判断する（Ｓ１７０３）。
（＊）Ｓ１７０３の判断の結果が肯定的であれば（Ｓ１７０３：ＹＥＳ）、プログラム６４４は、ＳＡＳアドレス情報をエクスパンダルートテーブル６１１に設定する（Ｓ１７０４）。具体的には、プログラム６４４は、受信したワイドリンク纏めコマンド内のインデックス番号に対応したカラムにおける、そのビットに対応したｐｈｙ番号についてのエントリに、そのコマンド内のＳＡＳアドレス情報を設定する。
（＊）Ｓ１７０４の後、或いは、Ｓ１７０３の判断の結果が否定的の場合、プログラム６４４は、Ｓ１７０３でのビットが末尾であるか否かを判断する。その判断の結果が否定的であれば、プログラム６４４は、次のビットについてＳ１７０３を行い、その判断の結果が肯定的であれば、Ｓ１７０５を行う。
【０１２４】
プログラム６４４は、ワイドリンク纏めコマンドに対する応答をコントローラ４３１に返す（Ｓ１７０５）。
【０１２５】
以上、観点２−１によれば、ディスカバープロセスにおいて、１つのワイドリンク纏めコマンド（オリジナルＣＲＩコマンド）で、同一のワイドリンクを構成する２以上の下位ワイドｐｈｙについて、同一のＳＡＳアドレス情報をエクスパンダルートテーブル６１１に設定することができる。このため、ディスカバープロセスにおいて発行されるＣＲＩコマンドの数を削減でき、以って、ディスカバープロセスにかかる時間を短縮することができる。
【０１２６】
＜観点２−２：無効化スキップ＞。
【０１２７】
図１８Ａに示すように、エクスパンダ＃０２に直接的に接続されているＰＤＥＶ：Ｋについてステータス変化（例えば、リンクダウン）が生じたとする。エクスパンダ＃０２が、そのステータス変化を検出し、その報告（例えば、エラー情報）をブロードキャストする。コントローラ＃０が、報告を受信し、最前段のエクスパンダ＃００から、順次に、ディスカバーコマンドを発行する。ディスカバーコマンドは、ｐｈｙ毎に発行される。これにより、コントローラ＃０は、エクスパンダ＃０２に直接的に接続されているＰＤＥＶ：Ｋについてのステータス変化（例えば、リンクダウン）を検出することができる。
【０１２８】
コントローラ＃０は、ＰＤＥＶ：Ｋについてリンクダウンを検出した場合、エクスパンダ＃０２よりも前段にある全てのエクスパンダ＃００及び＃０１に、ＣＲＩコマンドを発行する必要がある。そのＣＲＩコマンドは、そのコマンドの発行先のエクスパンダ＃００又は＃０１に間接的に接続されているＰＤＥＶ：Ｋについてステータス情報「無効」をエクスパンダルートテーブル６１１に設定するためのコマンドである。そのＣＲＩコマンドは、ＰＤＥＶ：Ｋに間接的に接続されている下位ｐｈｙ毎に発行される。その結果、エクスパンダ＃００（及び＃０１）のエクスパンダルートテーブル６１１は、例えば、図１８Ｂに点線枠で示すように更新される。このような処理は、ＰＤＥＶについてリンクダウンが検出される都度に行われる。
【０１２９】
また、コントローラ＃０は、ＰＤＥＶ：Ｋについてリンクアップを検出した場合も、エクスパンダ＃０２よりも前段にある全てのエクスパンダ＃００及び＃０１に、ＣＲＩコマンドを発行する必要がある。そのＣＲＩコマンドは、そのコマンドの発行先のエクスパンダ＃００又は＃０１に間接的に接続されているＰＤＥＶ：Ｋについてステータス情報「有効」をエクスパンダルートテーブル６１１に設定するためのコマンドである。そのＣＲＩコマンドは、ＰＤＥＶ：Ｋに間接的に接続されている下位ｐｈｙ毎に発行される。その結果、エクスパンダ＃００（及び＃０１）のエクスパンダルートテーブル６１１は、例えば、図１８Ｃに点線枠で示すように更新される。このような処理は、ＰＤＥＶについてリンクアップが検出される都度に行われる。
【０１３０】
図１８Ａ〜図１８Ｃを参照した説明によれば、リンクダウン及びリンクアップが検出される回数が多いほど、ＣＲＩコマンドが発行される。
【０１３１】
しかし、リンクダウンとしては、インターミッテントなリンクダウンがある。また、リンクダウンが検出されたＰＤＥＶは、継続使用可能であることがある。これらのようなケースについてまで、リンクダウンが検出されたからといって、無効を設定するためのＣＲＩコマンドを発行することは、無駄である。やがて、リンクアップが検出され、有効を設定するためのＣＲＩコマンドが発行されることになるからである。
【０１３２】
観点２−２によれば、リンクダウンが検出された場合、下記の判断（１）及び（２）の少なくとも１つが行われ、
（１）リンクダウンが検出されたＰＤＥＶの継続使用が可能か否か、
（２）リンクダウンがインターミッテントなリンクダウンであるか否か、
少なくとも１つの判断の結果が肯定的であれば（本実施例では両方の判断の結果が肯定的であれば）、無効を設定するためのＣＲＩコマンドの発行がスキップされる。
【０１３３】
また、観点２−２によれば、リンクアップが検出されても、有効を設定するためのＣＲＩコマンドは発行されない。
【０１３４】
このため、観点２−２によれば、発行されるＣＲＩコマンドの数が削減される。
【０１３５】
以下、観点２−２を、より詳細に説明する。
【０１３６】
図１９は、観点２−２に従う処理（コントローラ４３１（特に、デバイスコマンド発行プログラム５１５）が行う処理）の流れを示す。以下、コントローラ＃０を例に採り、その処理の流れを説明する。また、以下、リンクダウンが検出されたＰＤＥＶを、「対象ＰＤＥＶ」と言い、対象ＰＤＥＶに直接的に接続されているｐｈｙを「対象ｐｈｙ」と言い、対象ｐｈｙを有するエクスパンダを「対象エクスパンダ」と言う。
【０１３７】
コントローラ＃０は、エラー情報を受けた場合（Ｓ１９０１：Ｙｅｓ）、ディスカバーコマンドを発行する（Ｓ１９０２）。ディスカバーコマンドの発行先は、エクスパンダ＃００から、順次に、１つずつ後段に移る。また、ディスカバーコマンドで指定されるｐｈｙの数は１であるため、各エクスパンダ＃０ｎについて、ディスカバーコマンドは、そのエクスパンダ＃０ｎが有するｐｈｙ毎に発行される。対象エクスパンダに対象ｐｈｙを指定したディスカバーコマンドが発行されることにより、リンクダウンがコントローラ＃０によって検出される（Ｓ１９０３：Ｙｅｓ）。
【０１３８】
なお、Ｓ１９０１：Ｙｅｓでは、観点１で述べた処理、すなわち、下記の処理、
（１）エラー情報が経由した第１の通信経路４６１についてのＩ／Ｏ抑止の設定、
（２）ＲＧコマンドの発行（ＲＧコマンドの発行先は、エクスパンダ＃００から、順次に、１つずつ後段に移る）、
が行われても良い。観点２−２では、エクスパンダと次のエクスパンダとの接続が切断されているわけではなく、ＰＤＥＶについてのリンクダウンが生じているにすぎない。このため、コントローラ＃０は、Ｉ／Ｏ抑止を解除し、その後で、Ｓ１９０２を行って良い。
【０１３９】
Ｓ１９０３：Ｙｅｓの場合、コントローラ＃０は、対象ｐｈｙについて、デバイス管理テーブル５１１（図８参照）に、「異常」を設定する（Ｓ１９０４）。
【０１４０】
次に、コントローラ＃０は、障害チェックプロセスを実行する（Ｓ１９０５）。このプロセスでは、対象ＰＤＥＶを継続して使用可能か否かが判断される。このプロセスでは、対象ＰＤＥＶのリンクダウン回数が規定回数を越えていれば、対象ＰＤＥＶの継続使用は不可能と判断される。一方、対象ＰＤＥＶのリンクダウン回数が規定回数以下であれば、対象ＰＤＥＶの継続使用は可能と判断される。
【０１４１】
Ｓ１９０５において、継続使用不可能と判断された場合（Ｓ１９０６：Ｎｏ）、コントローラ＃０は、対象エクスパンダよりも前段にある各エクスパンダに、対象ＰＤＥＶのＳＡＳアドレス情報について「無効」を設定するためのＣＲＩコマンドを発行する（Ｓ１９０９）。
【０１４２】
Ｓ１９０５において、継続使用可能と判断された場合（Ｓ１９０６：Ｙｅｓ）、コントローラ＃０は、リンクダウンチェックプロセスを実行する（Ｓ１９０７）。このプロセスでは、リンクダウンがインターミッテントかパーマネントかが判断される。このプロセスでは、対象ＰＤＥＶについて、このプロセスの開始時刻から規定時間以内にリンクアップが検出されれば、検出されたリンクダウンはインターミッテントと判断される。一方、対象ＰＤＥＶについて、このプロセスの開始時刻から規定時間を経過してもリンクアップが検出されなければ、検出されたリンクダウンはパーマネントと判断される。
【０１４３】
Ｓ１９０７において、パーマネントと判断された場合（Ｓ１９０８：Ｎｏ）、コントローラ＃０は、前述したＳ１９０９を行う。
【０１４４】
Ｓ１９０７において、インターミッテントと判断された場合（Ｓ１９０８：Ｙｅｓ）、コントローラ＃０は、Ｓ１９０９をスキップする。
【０１４５】
図２０は、障害チェックプロセス（図１９のＳ１９０５）の流れを示す。
【０１４６】
コントローラ＃０（デバイスコマンド発行プログラム５１５）は、対象ＰＤＥＶについてのリンクダウン回数を１インクリメントする（Ｓ２００１）。具体的には、リンクダウン回数テーブル５１２（図５参照）は、ＰＤＥＶ毎に、ＳＡＳアドレス情報と、リンクダウン回数を表すカウント値とを有する。プログラム５１５は、対象ＰＤＥＶのＳＡＳアドレス情報に対応したカウント値を１インクリメントする。
【０１４７】
プログラム５１５は、更新後のリンクダウン回数が規定回数を超えたか否かを判断する（Ｓ２００２）。
【０１４８】
Ｓ２００２の判断の結果が肯定的であれば（Ｓ２００２：Ｙｅｓ）、プログラム５１５は、対象ＰＤＥＶの継続使用が不可能と判断する（Ｓ２００３）。
【０１４９】
Ｓ２００２の判断の結果が否定的であれば（Ｓ２００２：Ｎｏ）、プログラム５１５は、対象ＰＤＥＶの継続使用が可能と判断する（Ｓ２００４）。
【０１５０】
図２１は、リンクダウンチェックプロセス（図１９のＳ１９０７）の流れを示す。
【０１５１】
コントローラ＃０（デバイスコマンド発行プログラム５１５）は、対象ＰＤＥＶについて、現在時刻（タイマ５０５から取得される時刻）を表す情報を、初回時間退避テーブル５１０に登録する（Ｓ２１０１）。具体的には、初回時間退避テーブル５１０（図５参照）は、ＰＤＥＶ毎に、ＳＡＳアドレス情報と、リンクダウンチェックプロセス開始時の時刻を表す情報とを有する。プログラム５１５は、対象ＰＤＥＶのＳＡＳアドレス情報に対応したエントリに、リンクダウンチェックプロセス開始時にタイマ５０５から取得された時刻を表す情報を登録する。以下、図２１の説明において、対象ＰＤＥＶについて、テーブル５１０のエントリに登録された情報が表す時刻を「初回時刻」と言う。
【０１５２】
プログラム５１５は、Ｓ２１０１から一定時間待って（Ｓ２１０２）、対象ｐｈｙを指定したディスカバーコマンドを対象エクスパンダに発行する（Ｓ２１０３）。
【０１５３】
Ｓ２１０３で発行したディスカバーコマンドに対する応答から、リンクアップが検出された場合（Ｓ２１０４：Ｙｅｓ）、プログラム５１５は、リンクダウンはインターミッテントであると判断する（Ｓ２１０８）。
【０１５４】
Ｓ２１０３で発行したディスカバーコマンドに対する応答から、リンクアップが検出されなかった場合（リンクダウンが検出された場合）（Ｓ２１０４：Ｎｏ）、プログラム５１５は、現在時刻を取得し、規定時間を経過したか否かを判断する（Ｓ２１０６）。具体的には、プログラム５１５は、その現在時刻と初回時刻との差が一定時間以上か否かを判断する。
【０１５５】
Ｓ２１０６の判断の結果が肯定的であれば（Ｓ２１０６：Ｙｅｓ）、プログラム５１５は、リンクダウンがパーマネントであると判断する（Ｓ２１０７）。
【０１５６】
Ｓ２１０６の判断の結果が否定的であれば（Ｓ２１０６：Ｎｏ）、プログラム５１５は、一定時間待って（Ｓ２１０２）、再び、対象ｐｈｙを指定したディスカバーコマンドを対象エクスパンダに発行する（Ｓ２１０３）。
【０１５７】
以上、観点２−２によれば、発行されるＣＲＩコマンドの数を削減することができる。
【０１５８】
＜観点２−３：一括消去コマンド＞。
【０１５９】
ディスカバープロセスにて新しく検出されたエクスパンダのエクスパンダルートテーブル６１１に、どんなＳＡＳアドレス情報が設定されているか未定である。このため、エクスパンダルートテーブル６１１から一度全てのＳＡＳアドレス情報を消去し、その後、ディスカバープロセスを最前段のエクスパンダから順次に行っていかないと、エクスパンダルートテーブル６１１に正しく情報が設定されないことがある。この場合、特定のデバイスにアクセスすることが不可能となる。
【０１６０】
しかし、通常のＣＲＩコマンドで、エクスパンダルートテーブル６１１から全てのＳＡＳアドレス情報を消去するとなると、ＣＲＩコマンドをエントリ毎に発行する必要がある。このため、ＣＲＩコマンドの発行回数が膨大となる。
【０１６１】
そこで、観点２−３では、１つのコマンドで、エクスパンダルートテーブル６１１から全てのＳＡＳアドレス情報を消去する。これにより、ＣＲＩコマンドの数を削減することができる。
【０１６２】
以下、観点２−３を詳細に説明する。なお、「ＳＡＳアドレス情報の消去」は、ＳＡＳアドレス情報を実際に消去することに代えて、ＳＡＳアドレス情報を有するエントリに「無効」を設定すること（つまり実質的にＳＡＳアドレス情報を消去すること）であっても良い。
【０１６３】
エクスパンダルートテーブル６１１を一度全て無効化しておかないと特定のデバイスにアクセスすることが不可能になるケースとして、例えば、図２２Ａ乃至図２４Ｂのケースがある。
【０１６４】
図２２Ａに示すように、エクスパンダ＃００のｐｈｙ＃１に、エクスパンダ＃０１１が直接的に接続されており、エクスパンダ＃００のｐｈｙ＃２に、エクスパンダ＃０１２が直接的に接続されている。エクスパンダ＃０１１に、ＰＤＥＶ：Ａ、ＰＤＥＶ：Ｂ及びＰＤＥＶ：Ｃが直接的に接続されていて、エクスパンダ＃０１２に、ＰＤＥＶ：Ｘ及びＰＤＥＶ：Ｙが直接的に接続されている。このため、エクスパンダ＃００のエクスパンダルートテーブル６１１は、図２２Ａに示すように、ｐｈｙ＃１にＰＤＥＶ：Ａ、ＰＤＥＶ：Ｂ及びＰＤＥＶ：Ｃが間接的に接続されていて、ｐｈｙ＃２にＰＤＥＶ：Ｘ及びＰＤＥＶ：Ｙが間接的に接続されていることを表す。
【０１６５】
ここで、下記が行われたとする。
（１）図２２Ｂに参照符号２２１１で示すように、コントローラ＃０とエクスパンダ＃００との接続が切断される（例えば、ケーブルが外される）。
（２）次に、図２３Ａに参照符号２３０１で示すように、エクスパンダ＃００のｐｈｙ＃１に、エクスパンダ＃０１１に代えてエクスパンダ＃０１２が直接的に接続され、且つ、エクスパンダ＃００のｐｈｙ＃２に、エクスパンダ＃０１２に代えてエクスパンダ＃０１１が直接的に接続される。
（３）最後に、図２３Ｂに参照符号２３１１で示すように、ＳＡＳコントローラ＃０とエクスパンダ＃００とが再び接続される（例えば、ケーブルが接続される）。
【０１６６】
その後、コントローラ＃０は、図２４Ａに示すように、エクスパンダ＃００から後段のエクスパンダにかけて、順次に、ディスカバープロセスを行う（Ｓ２４０１）。
【０１６７】
ここで、ｐｈｙ＃２については、古いＳＡＳアドレス情報（Ａ、Ｂ、Ｃ）の数よりも新しいＳＡＳアドレス情報（Ｘ、Ｙ）の数の方が多い。このため、全ての古いＳＡＳアドレス情報は新しいＳＡＳアドレス情報に更新され、それ故、ｐｈｙ＃２については、テーブル６１１に、古いＳＡＳドレス情報は残らない。
【０１６８】
しかし、ｐｈｙ＃１については、古いＳＡＳアドレス情報（Ａ、Ｂ、Ｃ）の数よりも新しいＳＡＳアドレス情報（Ｘ、Ｙ）の数の方が少ない。このため、ｐｈｙ＃１について、図２４Ａに符号２４０２で示すように、新しいＳＡＳアドレス情報で更新されない古いＳＡＳアドレス情報「Ｃ」が、テーブル６１１に残ってしまう。この結果、ｐｈｙ＃１について残った古いＳＡＳアドレス情報「Ｃ」は、ｐｈｙ＃２についての新しいＳＡＳアドレス情報「Ｃ」と重複してしまう。
【０１６９】
各エクスパンダは、受信したコマンドのターゲット（ＳＡＳアドレス情報）に間接的に接続されている複数のｐｈｙがある場合、それら複数のｐｈｙのうち、ｐｈｙ番号が最も小さいｐｈｙからコマンドを転送する。テーブル６１１には、ｐｈｙ＃１及び＃２の両方について、ＳＡＳアドレス情報「Ｃ」が設定されている。このため、エクスパンダ＃００は、ＰＤＥＶ：Ｃをターゲットとしたコマンドを受けた場合、ｐｈｙ＃１にはＰＤＥＶ：Ｃが接続されていないにも関わらず、ｐｈｙ＃１からコマンドを転送する。しかし、コマンドの転送先のエクスパンダ＃０１２には、ＰＤＥＶ：Ｃが接続されていないので、エクスパンダ＃０１２は、そのコマンドを受信しても、図２４Ｂに示すように、そのコマンドの転送先を検出することができない。
【０１７０】
そこで、図２５Ａに示すように、コントローラ＃０（デバイスコマンド発行プログラム５１５）は、新規に検出されたエクスパンダ＃００に、一括消去コマンドを発行し、エクスパンダ＃００（コマンド処理プログラム６４４）が、その一括消去コマンドに従い、エクスパンダ＃００のエクスパンダルートテーブル６１１から一括して全てのＳＡＳアドレス情報を消去する。
【０１７１】
その後に、図２５Ｂに示すように、エクスパンダ＃００から後段のエクスパンダにかけて、順次に、ディスカバープロセスが行われる（Ｓ２５１１）。これにより、図２５Ｂに示すように、エクスパンダ＃００のエクスパンダルートテーブル６１１に、ｐｈｙ＃１及び＃２に、正しいＳＡＳアドレス情報が設定される。つまり、図２４Ａ及び図２４Ｂに示したように、誤ってＳＡＳアドレス情報が重複してしまうことが無い。
【０１７２】
上記のように、新規に検出されたエクスパンダが有するエクスパンダルートテーブル６１１から全てのＳＡＳアドレス情報を消去することが必要になり得る１つのケースとして、図２６に示すようなケースがある。図２６によれば、１つのエクスパンダに直接的に接続される後段のエクスパンダの数が２以上である。具体的には、ストレージシステムが、筐体４１３と４１３間（または、筐体４１１と４１３との間）に、スイッチボックス２６０１を有する。スイッチボックス２６０１は、二重化されたエクスパンダ（＃０１、＃１１）を有する（以下、スイッチボックス２６０１内のエクスパンダを「ＳＷエクスパンダ」と言う）。一方のＳＷエクスパンダ＃０１に、２以上の増設筐体４１３内の２以上の一方のエクスパンダ＃０２１及び＃０２２が直接的に接続され、他方のＳＷエクスパンダ＃１１に、２以上の増設筐体４１３内の２以上の他方のエクスパンダ＃１２１及び＃１２２が直接的に接続される。
【０１７３】
図２６に示す構成によれば、転送先検出不可という前述した問題が生じ得る。例えば、ＳＷエクスパンダ＃０１の第１のｐｈｙに直接的に接続されているエクスパンダを、エクスパンダ＃０２１からエクスパンダ＃０２２に変えて、且つ、ＳＷエクスパンダ＃０１の第２のｐｈｙに直接的に接続されているエクスパンダを、エクスパンダ＃０２２からエクスパンダ＃０２１に変えた場合に、転送先検出不可という問題が生じ得る。
【０１７４】
図２７は、一括消去コマンドの発行とＳＡＳアドレス情報の一括消去とを示す（図２７は、コントローラ＃０を例に採っている）。
【０１７５】
コントローラ＃０は、一括消去コマンド２７０１を、新規に検出されたエクスパンダ＃００に発行する。エクスパンダ＃００は、そのコマンド２７０１に従って、エクスパンダルートテーブル６１１から全てのＳＡＳアドレス情報を消去する。
【０１７６】
図２８は、一括消去コマンドの構成を示す。
【０１７７】
一括消去コマンドは、オリジナルのＣＲＩコマンド（拡張されたＣＲＩコマンド）である。ＳＡＳ２．０の規格によれば、前述したように、「Ｃ０ｈ」〜「ＦＦｈ」が、ベンダが自由に利用可能なコードである。本実施例では、そのうちの「Ｃ１ｈ」が、ファンクションコードとして、一括消去コマンドに割り当てられる。エクスパンダ４４３は、受信したＣＲＩコマンド内のファンクションコードが「Ｃ１ｈ」であることを検出した場合、そのＣＲＩコマンドが一括消去コマンドであることを特定し、エクスパンダルートテーブル６１１から全てのＳＡＳアドレス情報を消去する。
【０１７８】
図２９は、観点２−３に従う処理（コントローラ４３１（特に、デバイスコマンド発行プログラム５１５）が行う）の流れを示す。
【０１７９】
プログラム５１５が、Ｓ２９０２のターゲットとなっていないエクスパンダのうちの最前段のエクスパンダに、ディスカバーコマンドを発行する（Ｓ２９０２）。プログラム５１５は、そのディスカバーコマンドに対する応答から、新規にエクスパンダが検出されたか否かを判断する（Ｓ２９０３）。この判断は、例えば、コントローラ４３１が有する管理情報を基に行われる。ここで言う「管理情報」は、例えば、エクスパンダ毎に、ｐｈｙの番号とそのｐｈｙに直接的に接続されているＳＡＳアドレス情報との対応関係を有する。従って、下記の（ｐ）及び（ｑ）が互いに異なっている場合に、新規にエクスパンダが検出されたということになる（以下、新規に検出されたエクスパンダを「新規検出エクスパンダ」と言う）。
（ｐ）ディスカバーコマンドに対する応答が有するＳＡＳアドレス情報。
（ｑ）ディスカバーコマンドで指定したｐｈｙ番号に管理情報において対応付けられているＳＡＳアドレス情報。
【０１８０】
ディスカバーコマンドのターゲットは、前段のエクスパンダから後段のエクスパンダへと変わるが、初めて新規のエクスパンダが検出された場合、その新規検出エクスパンダより後段のエクスパンダは、以後、全て、新規に検出されることになる。
【０１８１】
Ｓ２９０３の判断の結果が否定的の場合（Ｓ２９０３：Ｎｏ）、プログラム５１５は、最近のＳ２９０２のターゲットが最後段のエクスパンダか否かを判断する。その判断の結果が否定的の場合、最近のＳ２９０２のターゲットの次のエクスパンダをターゲットとして、Ｓ２９０２が行われる。
【０１８２】
一方、Ｓ２９０３の判断の結果が肯定的の場合（Ｓ２９０３：Ｙｅｓ）、下記が行われる。
（Ｓ２９０４）プログラム５１５は、Ｓ２９０２のターゲットよりも前段にある全てのエクスパンダに、ＣＲＩコマンドを発行する。そのＣＲＩコマンドは、新規検出エクスパンダのＳＡＳアドレス情報と、インデックス番号と、Ｓ２９０２のディスカバーコマンドで指定されたｐｈｙ番号とを有する。そのＣＲＩコマンドを受けたエクスパンダは、エクスパンダルートテーブル６１１における、ＣＲＩコマンド内とｐｈｙ番号及びインデックス番号に対応したエントリに、ＣＲＩコマンド内のＳＡＳアドレス情報を設定する。
（Ｓ２９０５）プログラム５１５が、新規検出エクスパンダに、一括消去コマンドを発行する。新規検出エクスパンダは、一括消去コマンドを受信し、そのエクスパンダが有するエクスパンダルートテーブルから全てのＳＡＳアドレス情報を消去する。
（Ｓ２９０６）プログラム５１５が、新規検出エクスパンダについて、ディスカバープロセスを実行する。これにより、新規検出エクスパンダに直接的に接続されているデバイスのＳＡＳアドレス情報が、新規検出エクスパンダよりも前段にある全てのエクスパンダのエクスパンダルートテーブル６１１に設定される。
【０１８３】
以上、本発明の一実施例を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【符号の説明】
【０１８４】
４０１…ストレージシステム  ４３１…コントローラ  ４４３…エクスパンダ
【図１】
0005535322.tif 000002
【図２】
0005535322.tif 000003
【図３】
0005535322.tif 000004
【図４】
0005535322.tif 000005
【図５】
0005535322.tif 000006
【図６】
0005535322.tif 000007
【図７】
0005535322.tif 000008
【図８】
0005535322.tif 000009
【図９】
0005535322.tif 000010
【図１０】
0005535322.tif 000011
【図１１】
0005535322.tif 000012
【図１２】
0005535322.tif 000013
【図１３】
0005535322.tif 000014
【図１４】
0005535322.tif 000015
【図１５】
0005535322.tif 000016
【図１６】
0005535322.tif 000017
【図１７】
0005535322.tif 000018
【図１８】
0005535322.tif 000019
【図１９】
0005535322.tif 000020
【図２０】
0005535322.tif 000021
【図２１】
0005535322.tif 000022
【図２２】
0005535322.tif 000023
【図２３】
0005535322.tif 000024
【図２４】
0005535322.tif 000025
【図２５】
0005535322.tif 000026
【図２６】
0005535322.tif 000027
【図２７】
0005535322.tif 000028
【図２８】
0005535322.tif 000029
【図２９】
0005535322.tif 000030