(57)【要約】【課題】ストレージシステムの性能低下を抑える。【解決手段】コントローラが、ターゲットにコマンドを送信するために確立された接続が該ターゲットでの該コマンドの処理中にも接続が確立されているタイプの第一のプロトコルに従うコマンドである第一プロトコルコマンドに相当するコマンドとして定義された、ターゲットでのコマンドの処理中には接続が切断されているタイプの第二のプロトコルに従うコマンドである第二プロトコルコマンドを、一以上のスイッチデバイスのうちのいずれかのターゲットに送信する。【選択図】図２
2008242872.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置と、
前記複数の記憶装置が接続された一以上のスイッチデバイスと、
前記複数の記憶装置及び前記一以上のスイッチデバイスのうちのいずれかのターゲットにコマンドを発行するコマンド発行部を有したコントローラと
を備え、
前記コマンド発行部が、第一プロトコルコマンドに相当するコマンドとして定義された第二プロトコルコマンドを、前記一以上のスイッチデバイスのうちのいずれかのターゲットに送信し、
前記第一プロトコルコマンドとは、第一のプロトコルに従うコマンドであり、
前記第一のプロトコルとは、ターゲットにコマンドを送信するために確立された接続が該ターゲットでの該コマンドの処理中にも接続が確立されているタイプのプロトコルであり、
前記第二プロトコルコマンドとは、第二のプロトコルに従うコマンドであり、
前記第二のプロトコルとは、ターゲットでのコマンドの処理中には接続が切断されているタイプのコマンドである、
ストレージシステム。
【請求項２】
前記第二プロトコルコマンドとして、ターゲットであるスイッチデバイスのポートに接続されているデバイスに関する情報のディスカバリを要求する第二プロトコルディスカバリコマンドがあり、
各スイッチデバイスが、前記コマンド発行部からのコマンドを解釈し処理するコマンド処理部を有し、前記コマンド処理部が、コマンドの解釈によって前記第二プロトコルディスカバリコマンドを検出したならば、自分が有する複数のポート全てにそれぞれ対応した複数のポート情報要素を含むレスポンスを作成し、そのレスポンスを前記コマンド発行部に送信する、
請求項１記載のストレージシステム。
【請求項３】
前記第二プロトコルコマンドとして、更に、ルーティングテーブルの更新を要求する第二プロトコルテーブル更新コマンドがあり、
前記ルーティングテーブルには、該ルーティングテーブルを保持するスイッチデバイス及びそれより下位のスイッチデバイスに接続されているデバイスに関するデバイス情報要素が記録されており、
前記コマンド発行部が、受信した前記レスポンスに含まれている複数のポート情報要素を基に、前記複数のポート情報要素から特定される全てのデバイスのデバイス情報要素を有した第二プロトコルテーブル更新コマンドを準備し、該第二プロトコルテーブル更新コマンドを、ターゲットのスイッチデバイスより上位のスイッチデバイスに送信し、
ターゲットのスイッチデバイスより上位のスイッチデバイスの前記コマンド処理部が、コマンドの解釈によって前記第二プロトコルテーブル更新コマンドを検出したならば、該スイッチデバイスが有するルーティングテーブルに、該第二プロトコルテーブル更新コマンドが有するデバイス情報要素を書込む、
請求項２記載のストレージシステム。
【請求項４】
前記第二プロトコルコマンドとして、ルーティングテーブルの更新を要求する第二プロトコルテーブル更新コマンドがあり、
前記ルーティングテーブルには、該ルーティングテーブルを保持するスイッチデバイス及びそれより下位のスイッチデバイスに接続されているデバイスに関するデバイス情報要素が記録されており、
前記コマンド発行部が、ディスカバリ処理により発見された全てのデバイスのデバイス情報要素を有した第二プロトコルテーブル更新コマンドを準備し、該第二プロトコルテーブル更新コマンドを、ターゲットのスイッチデバイスより上位のスイッチデバイスに送信し、
ターゲットのスイッチデバイスより上位のスイッチデバイスの前記コマンド処理部が、コマンドの解釈によって前記第二プロトコルテーブル更新コマンドを検出したならば、該スイッチデバイスが有するルーティングテーブルに、該第二プロトコルテーブル更新コマンドが有するデバイス情報要素を書込む、
請求項１記載のストレージシステム。
【請求項５】
前記コマンド発行部が、ターゲットに前記第二プロトコルコマンドを送信するための接続に失敗、及び／又は、前記第二プロトコルコマンドのレスポンスをターゲットから送信するための接続に失敗の場合、第一プロトコルコマンドの送信のための接続を試行する、
請求項１記載のストレージシステム。
【請求項６】
前記コントローラ及び前記一以上のスイッチデバイスの各々が、ルーティングテーブルを保持し、前記コントローラが保持するルーティングテーブルには、該コントローラより下位のスイッチデバイスに接続されているデバイスに関するデバイス情報要素が記録されており、スイッチデバイスが保持するルーティングテーブルには、該スイッチデバイス及びそれより下位のスイッチデバイスに接続されているデバイスに関するデバイス情報要素が記録されており、
前記コントローラ及び前記一以上のスイッチデバイスの各々において、第一のプロトコルでコマンドを発行する際の接続のために参照する第一のアドレスと、第二のプロトコルでコマンドを発行する際の接続のために参照する第二のアドレスとの両方のアドレスに、一つのデバイスについてのデバイス情報要素が存在し、
前記コマンド発行部が、前記第一プロトコルコマンドの送信のためのターゲットとの接続に成功した場合に、該ターゲットと前記コントローラとの間に存在する各々のスイッチデバイスについて、スイッチデバイスからルーティングテーブルを取得するための第一プロトコルコマンドを発行することでルーティングテーブルを取得し、前記コントローラが保持するルーティングテーブルと前記取得されたルーティングテーブルとの比較を行い、不一致であれば、一致となるよう前記取得されたルーティングテーブルを修正するために第一プロトコルコマンドをそのスイッチデバイスに送信する、
請求項５記載のストレージシステム。
【請求項７】
複数の記憶装置と、
前記複数の記憶装置が接続された一以上のスイッチデバイスと、
前記複数の記憶装置及び前記一以上のスイッチデバイスのうちのいずれかのターゲットにコマンドを発行するコマンド発行部を有したコントローラと
を備え、
前記コマンド発行部が、第二プロトコルコマンドを前記一以上のスイッチデバイスのうちのいずれかのターゲットに送信するための接続に失敗、及び／又は、その第二プロトコルコマンドのレスポンスをターゲットから送信するための接続に失敗の場合、該ターゲットに第一プロトコルコマンドを送信するための接続を試行し、
前記第一プロトコルコマンドとは、第一のプロトコルに従うコマンドであり、
前記第一のプロトコルとは、ターゲットにコマンドを送信するために確立された接続が該ターゲットでの該コマンドの処理中にも接続が確立されているタイプのプロトコルであり、
前記第二プロトコルコマンドとは、第二のプロトコルに従うコマンドであり、
前記第二のプロトコルとは、ターゲットでのコマンドの処理中には接続が切断されているタイプのコマンドである、
ストレージシステム。
【請求項８】
前記コマンド発行部が、前記第一プロトコルコマンドの送信のためのターゲットとの接続に成功した場合に、前記コントローラより下位に存在するルーティングテーブルを第一のプロトコルコマンドで修正する、
請求項７記載のストレージシステム。
【請求項９】
前記コマンド発行部が、外部装置から第一のＩ／Ｏコマンドを受信し、該第一のＩ／Ｏコマンドに応答して前記複数の記憶装置のうちの一以上の記憶装置に前記一以上のスイッチデバイスを介して、第二のＩ／Ｏコマンドを、前記第二のプロトコルで送信するよう構成されており、第二のＩ／Ｏコマンドの送信のための接続に失敗、及び／又は、その第二のＩ／Ｏコマンドのレスポンスを記憶装置から送信するための接続に失敗の場合、該記憶装置が直接されているスイッチデバイスに、該記憶装置が接続されているか否か及び／又は該記憶装置との間の接続が正常か否かの問合せを第二プロトコルコマンドで送信する、
請求項７記載のストレージシステム。
【請求項１０】
前記コントローラ及び前記一以上のスイッチデバイスの各々が冗長化されており、
一方のコントローラにおける前記コマンド発行部が、前記問合せのための第二プロトコルコマンドに対する応答として、記憶装置が接続されている及び／又は該記憶装置との間の接続は正常である旨を受けた場合には、他方のコントローラから該記憶装置に対して第二のＩ／Ｏコマンドを発行させ、該第二のＩ／Ｏコマンドの送信のための接続が成功した場合には、前記一方のコントローラより下位に存在するルーティングテーブルを第一のプロトコルコマンドで修正する、
請求項９記載のストレージシステム。
【請求項１１】
前記他方のコントローラにおけるコマンド発行部が、第二のＩ／Ｏコマンドの送信のための接続に失敗、及び／又は、その第二のＩ／Ｏコマンドのレスポンスを記憶装置から送信するための接続に失敗の場合、該記憶装置が直接されている他方のスイッチデバイスに、該記憶装置が接続されているか否か及び／又は該記憶装置との間の接続が正常か否かの問合せを第二プロトコルコマンドで送信し、該問合せのための第二プロトコルコマンドに対する応答として、記憶装置が接続されている及び／又は該記憶装置との間の接続は正常である旨を受けた場合には、前記他方のコントローラより下位に存在するルーティングテーブルを第一のプロトコルコマンドで修正する、
請求項１０記載のストレージシステム。
【請求項１２】
前記コントローラ及び前記一以上のスイッチデバイスの各々が冗長化されており、
冗長化されているスイッチデバイス間が接続されており、冗長化されているスイッチデバイスの各々が、ブロードキャスト要求のインタフェースである要求インタフェースと、冗長化されているスイッチデバイスに共通の監視対象デバイスを監視し該監視対象デバイスの障害を検知した場合に上位及び下位に所定種類の情報をブロードキャストすると共に前記要求インタフェースを通じてブロードキャスト要求を他方のスイッチデバイスに送信する監視制御部とを備え、
前記他方のスイッチデバイスにおける監視制御部が、該他方のスイッチデバイスにおける要求インタフェースを通じてブロードキャスト要求を受けたことに応答して、該他方のスイッチデバイスの上位及び下位に所定種類の情報をブロードキャストし、
冗長化されているコントローラの各々が、前記所定種類の情報の受信に応答して、第二のプロトコルコマンドをスイッチデバイスに送信することにより該スイッチデバイスで検知された障害に関する情報の採取を行う、
請求項７記載のストレージシステム。
【請求項１３】
前記コマンド発行部が、外部装置から第一のＩ／Ｏコマンドを受信し、該第一のＩ／Ｏコマンドに応答して前記複数の記憶装置のうちの一以上の記憶装置に前記一以上のスイッチデバイスを介して、第二のＩ／Ｏコマンドを、前記第二のプロトコルで送信するよう構成されており、第二のＩ／Ｏコマンドを第一プロトコルコマンドよりも優先して出力する、
請求項７記載のストレージシステム。
【請求項１４】
第一プロトコルコマンドが特定の種類のコマンドであれば、該第一プロトコルコマンドの優先度が第二のＩ／Ｏコマンドと同等とされる、
請求項１３記載のストレージシステム。
【請求項１５】
第一プロトコルコマンドが定期的に発行される種類のコマンドであって、二以上の第一プロトコルコマンドと二以上の第二のＩ／Ｏコマンドとの発行時期がそれぞれ同時期の場合には、第二のＩ／Ｏコマンドと第一のプロトコルコマンドとが交互に出力される、
請求項１３記載のストレージシステム。
【請求項１６】
複数の記憶装置と、
前記複数の記憶装置が接続された一以上のスイッチデバイスと、
前記複数の記憶装置及び前記一以上のスイッチデバイスのうちのいずれかのターゲットにコマンドを発行するコマンド発行部を有したコントローラと
を備え、
前記コントローラ及び前記一以上のスイッチデバイスの各々が冗長化されており、
冗長化されているスイッチデバイス間が接続されており、冗長化されているスイッチデバイスの各々が、ブロードキャスト要求のインタフェースである要求インタフェースと、冗長化されているスイッチデバイスに共通の監視対象デバイスを監視し該監視対象デバイスの障害を検知した場合に上位及び下位に所定種類の情報をブロードキャストすると共に前記要求インタフェースを通じてブロードキャスト要求を他方のスイッチデバイスに送信する監視制御部とを備え、
前記他方のスイッチデバイスにおける監視制御部が、該他方のスイッチデバイスにおける要求インタフェースを通じてブロードキャスト要求を受けたことに応答して、該他方のスイッチデバイスの上位及び下位に所定種類の情報をブロードキャストする、
ストレージシステム。
【請求項１７】
冗長化されているコントローラの各々が、前記所定種類の情報の受信に応答して、第二のプロトコルコマンドをスイッチデバイスに送信することにより該スイッチデバイスで検知された障害に関する情報の採取を行う、
請求項１６記載のストレージシステム。
【請求項１８】
前記第一のプロトコルは、ＳＡＳ（Serial Attached SCSI）におけるＳＭＰ（Serial
Management Protocol）であり、前記第一プロトコルコマンドは、ＳＭＰコマンドであり、
前記第二のプロトコルは、ＳＡＳにおけるＳＳＰ（Serial SCSI
Protocol）であり、前記第二プロトコルコマンドは、ＳＳＰコマンドであり、
前記スイッチデバイスは、ＳＡＳエクスパンダであり、
ＳＳＰコマンドとして、ターゲットであるスイッチデバイスのポートに接続されているデバイスに関する情報のディスカバリを要求するＳＭＰコマンドに相当するものとして定義されたＳＳＰディスカバリコマンドと、ルーティングテーブルの更新を要求するＳＭＰコマンドに相当するものとして定義されたＳＳＰテーブル更新コマンドとがあり、
前記ルーティングテーブルには、該ルーティングテーブルを保持するＳＡＳエクスパンダ及びそれより下位のＳＡＳエクスパンダに接続されているデバイスに関するデバイス情報要素が記録されており、
各ＳＡＳエクスパンダが、前記コマンド発行部からのコマンドを解釈し処理するコマンド処理部を有し、前記コマンド処理部が、コマンドの解釈によって前記ＳＳＰディスカバリコマンドを検出したならば、自分が有する複数のポート全てにそれぞれ対応した複数のポート情報要素を含むレスポンスを作成し、そのレスポンスを前記コマンド発行部に送信し、
前記コマンド発行部が、受信した前記レスポンスに含まれている複数のポート情報要素を基に、前記複数のポート情報要素から特定される全てのデバイスのデバイス情報要素を有したＳＳＰテーブル更新コマンドを準備し、該ＳＳＰテーブル更新コマンドを、ターゲットのＳＡＳエクスパンダより上位のＳＡＳエクスパンダに送信し、
ターゲットのＳＡＳエクスパンダの前記コマンド処理部が、コマンドの解釈によって前記ＳＳＰテーブル更新コマンドを検出したならば、該ＳＡＳエクスパンダが有するルーティングテーブルに、該ＳＳＰテーブル更新コマンドが有するデバイス情報要素を書込む、
請求項１記載のストレージシステム。
【請求項１９】
前記コマンド発行部が、前記一以上のスイッチデバイスのうちのいずれかのターゲットにＳＳＰコマンドを送信するための接続に失敗、及び／又は、そのＳＳＰコマンドのレスポンスをターゲットから送信するための接続に失敗の場合、ＳＭＰコマンドを送信するための接続を試行し、該接続に成功した場合に、前記コントローラより下位に存在するルーティングテーブルをＳＳＰコマンドで修正する、
請求項１８記載のストレージシステム。
【請求項２０】
複数の記憶装置と、
前記複数の記憶装置が接続された一以上のスイッチデバイスと、
前記複数の記憶装置及び前記一以上のスイッチデバイスのうちのいずれかのターゲットにコマンドを発行するコマンド発行部を有したコントローラと
を備え、
前記コントローラが、
発行されたコマンドが蓄積される複数のキューと、
複数のキューの各々をチェックし蓄積されているコマンドをターゲットへと吐き出すコマンド発行制御部と
を更に備え、
前記コマンド発行部が、外部装置から第一のＩ／Ｏコマンドを受信し、該第一のＩ／Ｏコマンドに応答して前記複数の記憶装置のうちの一以上の記憶装置にＩ／Ｏを実行させるための第二のＩ／Ｏコマンドを発行するよう構成されており、発行するコマンドが、第一プロトコルコマンドであるか、第二のプロトコルで送信される前記第二のＩ／Ｏコマンドであるかに応じて、蓄積先とするキューを選択し、選択したキューにコマンドを蓄積し、
前記第一プロトコルコマンドとは、第一のプロトコルに従うコマンドであり、
前記第一のプロトコルとは、ターゲットにコマンドを送信するために確立された接続が該ターゲットでの該コマンドの処理中にも接続が確立されているタイプのプロトコルであり、
前記第二のプロトコルとは、ターゲットでのコマンドの処理中には接続が切断されているタイプのコマンドである、
ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに関する。
【背景技術】
【０００２】
例えば、ストレージシステムの障害に関する情報である障害情報の通知に関して、例えば特許文献１の技術が知られている。特許文献１によれば、第一のストレージシステムが、障害を検出した場合には、第一のストレージシステムと通信可能な第二のストレージシステムに障害情報を通知し、第二のストレージシステムが、第一のストレージシステムから受信した障害情報を、第二のストレージシステムと通信可能な第三のストレージシステムに送信し、第三のストレージシステムが、第二のストレージシステムから受信した障害情報を、ホストコンピュータに通知する。
【０００３】
【特許文献１】特開２００６−１２７２１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ストレージシステムには、一般に、複数の記憶装置と、上位装置からＩ／Ｏコマンドを受信しそのＩ／Ｏコマンドに応答して複数の記憶装置のうちの一以上の記憶装置にデータのライト又はリードのコマンドを送信するコントローラとが備えられる。
【０００５】
ストレージシステム内での通信のＩ／Ｆとして、ＳＡＳ（Serial Attached
SCSI）が採用されることがある。この場合、コントローラと各記憶装置との間に、スイッチデバイスとしてＳＡＳエクスパンダが介在する。コントローラを最上位とした場合、最上位から下位にかけて、ＳＡＳエクスパンダがカスケード接続され（例えば直列に或いは木構造に接続され）、各ＳＡＳエクスパンダに、一以上の記憶装置が接続される。
【０００６】
ストレージシステムで行われる処理としては、上位装置からのＩ／Ｏコマンドに応答して行われる処理（以下、上位Ｉ／Ｏ処理）の他に、上位装置からのコマンドと関係なく実行されるバックエンドの処理がある。バックエンドの処理としては、例えば、ディスカバリの要求、ＳＡＳエクスパンダに対しての情報の設定、障害情報の採取などがある。ＳＡＳでは、コントローラ（イニシエータ）からＳＡＳエクスパンダに対するコマンドの送信を、ＳＭＰ（Serial Management Protocol）で行うのが一般的である。しかし、ＳＭＰによれば、ＳＭＰに従うコマンド（以下、ＳＭＰコマンド）がＳＭＰターゲットエクスパンダ（ＳＭＰコマンドの送信先のＳＡＳエクスパンダ）に発行され、そのＳＭＰコマンドがＳＭＰターゲットエクスパンダで処理されている間、コントローラとＳＭＰターゲットエクスパンダとの間におけるリソース（例えば、コントローラとＳＭＰターゲットエクスパンダまでの一本のパスを構成する一以上の物理リンクやｐｈｙ（物理ポート））が、占有されてしまう。リソースが占有されている間、そのリソースにおける物理リンクやｐｈｙを他のコマンドが経由することはできない。このため、ストレージシステムの性能の低下につながるおそれがある。
【０００７】
また、ＳＡＳでは、コントローラとターゲット間で接続が確立している間に、コマンドや応答が発行されるが、コントローラとターゲット間での接続に失敗する場合がある。その失敗の原因によっては、その原因を解消することもできる。そのため、接続できないことの原因の特定が望まれる。
【０００８】
また、ストレージシステムには、種々の監視対象デバイス（例えば、温度計、ファン、電源デバイス）があり、バックエンドの処理として、各種監視対象デバイスの監視が行われる。コントローラから各種監視対象デバイスをポーリングすることにより、監視を実行することが可能であるが、ＳＡＳの規格によれば、監視を実行するデバイスを、コントローラの下位にあるＳＡＳエクスパンダにオフロードすることができる。ＳＡＳエクスパンダは、自分の監視対象のデバイスを監視し、例えばそのデバイスの状態変化を検知した場合には、ＢＰ（ＳＥＳ）（ＢＰは「Broadcast Primitive」の略）を、上位及び下位のデバイスにブロードキャストすることができる。しかし、この場合、ＳＡＳエクスパンダとそれの監視対象デバイスとの間の接続やＳＡＳエクスパンダそれ自体に障害が発生したなどの後は、コントローラにＢＰ（ＳＥＳ）が届かない。
【０００９】
上述した問題点は、ストレージシステム内での通信のＩ／ＦがＳＡＳである場合に限らず、他種のＩ／Ｆが採用される場合にも存在し得る。
【００１０】
従って、本発明の第一の目的は、ストレージシステムの性能低下を抑えることにある。
【００１１】
本発明の第二の目的は、ストレージシステム内でコントローラとターゲットとの間の接続ができない原因を特定できるようにすることにある。
【００１２】
本発明の第三の目的は、ストレージシステム内のコントローラよりも下位にあるデバイスがストレージシステム内の監視対象デバイスを監視してもその監視の結果をコントローラに届けられるようにすることにある。
【００１３】
本発明の他の目的は、後述の説明から明らかになるであろう。
【課題を解決するための手段】
【００１４】
階層状に接続された（例えばカスケード状に接続された）一以上のスイッチデバイスに、複数の記憶装置が接続される。一以上のスイッチデバイスのうちの少なくとも一つ（例えば最上位のスイッチデバイス）に、コントローラが接続される。
【００１５】
第一の観点として、コントローラが、第一プロトコルコマンドに相当するコマンドとして定義された第二プロトコルコマンドを、一以上のスイッチデバイスのうちのいずれかのターゲットに送信する。これにより、ストレージシステムの性能低下を抑えることができる。ちなみに、第一プロトコルコマンドとは、第一のプロトコルに従うコマンドである。第一のプロトコルとは、ターゲットにコマンドを送信するために確立された接続が該ターゲットでの該コマンドの処理中にも接続が確立されているタイプのプロトコルである。第二プロトコルコマンドとは、第二のプロトコルに従うコマンドである。第二のプロトコルとは、ターゲットでのコマンドの処理中には接続が切断されているタイプのコマンドである。
【００１６】
第二の観点として、コントローラに、コマンドを発行するコマンド発行部と、発行されたコマンドが蓄積される複数のキューと、複数のキューの各々をチェックし蓄積されているコマンドをターゲットへと吐き出すコマンド発行制御部とが備えられても良い。コマンド発行部は、外部装置から第一のＩ／Ｏコマンドを受信し、該第一のＩ／Ｏコマンドに応答して前記複数の記憶装置のうちの一以上の記憶装置にＩ／Ｏを実行させるための第二のＩ／Ｏコマンドを発行するよう構成されていて、発行するコマンドが、前述した第一プロトコルコマンドであるか或いは第二のＩ／Ｏコマンドであるかに応じて、蓄積先とするキューを選択し、選択したキューにコマンドを蓄積してもよい。これにより、ストレージシステムの性能低下を抑えることができる。
【００１７】
第三の観点として、コントローラが、第二プロトコルコマンドを一以上のスイッチデバイスのうちのいずれかのターゲットに送信するための接続に失敗、及び／又は、その第二プロトコルコマンドのレスポンスをターゲットから送信するための接続に失敗の場合、該ターゲットに第一プロトコルコマンドを送信するための接続を試行する。この接続が成功となれば、物理的な障害ではなく論理的な障害が原因であることが推測される。
【００１８】
第四の観点として、コントローラ及び一以上のスイッチデバイスを冗長化し、冗長化されているスイッチデバイス間を接続し、冗長化されているスイッチデバイスの各々に、要求インタフェースと、監視制御部とを備える。要求インタフェースは、ブロードキャスト要求のインタフェースである。監視制御部は、冗長化されているスイッチデバイスに共通の監視対象デバイスを監視し、該監視対象デバイスの障害を検知した場合に、上位及び下位に所定種類の情報をブロードキャストし、且つ、要求インタフェースを通じてブロードキャスト要求を他方のスイッチデバイスに送信する。この場合、他方のスイッチデバイスにおける監視制御部が、該他方のスイッチデバイスにおける要求インタフェースを通じてブロードキャスト要求を受ける。その監視制御部は、そのブロードキャスト要求に応答して、該他方のスイッチデバイスの上位及び下位に所定種類の情報をブロードキャストする。これにより、他方において、監視対象デバイスの監視結果をコントローラに届けられる。
【発明を実施するための最良の形態】
【００１９】
ストレージシステムには、複数の記憶装置と、複数の記憶装置が接続された一以上のスイッチデバイスと、複数の記憶装置及び前記一以上のスイッチデバイスのうちのいずれかのターゲットにコマンドを発行するコマンド発行部を有したコントローラとが備えられる。コマンド発行部が、外部装置（例えばホスト計算機或いは他のストレージシステム）から第一のＩ／Ｏコマンドを受信し、該第一のＩ／Ｏコマンドに応答して前記複数の記憶装置のうちの一以上の記憶装置にデータのＩ／Ｏを実行させるための第二のＩ／Ｏコマンドを発行するよう構成されており、コントローラ及び一以上のスイッチデバイスの各々が、ルーティングテーブルを保持することができる。コントローラが保持するルーティングテーブルには、該コントローラより下位のスイッチデバイスに接続されているデバイスに関するデバイス情報要素が記録される。スイッチデバイスが保持するルーティングテーブルには、該スイッチデバイス及びそれより下位のスイッチデバイスに接続されているデバイスに関するデバイス情報要素（例えば後述の行き先情報要素）が記録される。コントローラ及び一以上のスイッチデバイスの各々において、第一のプロトコルでコマンドを発行する際の接続のために参照する第一のアドレスと、第二のプロトコルでコマンドを発行する際の接続のために参照する第二のアドレスとの両方のアドレスに、一つのデバイスについてのデバイス情報要素が存在する。すなわち、或るスイッチデバイスをターゲットとした接続が行われる場合、その接続が、第一プロトコルコマンドの送信のための接続であれば、該或るスイッチデバイスに対応した第一のアドレスにあるデバイス情報要素が参照され、一方、第二プロトコルコマンドの送信のための接続であれば、該或るスイッチデバイスに対応した第二のアドレスであるデバイス情報要素が参照される。
【００２０】
一つの実施形態では、コマンド発行部が、第一プロトコルコマンドに相当するコマンドとして定義された第二プロトコルコマンドを、一以上のスイッチデバイスのうちのいずれかのターゲットに送信することができる。前述したように、第一プロトコルコマンドとは、第一のプロトコルに従うコマンドである。第一のプロトコルとは、ターゲットにコマンドを送信するために確立された接続が該ターゲットでの該コマンドの処理中にも接続が確立されているタイプのプロトコルである。第二プロトコルコマンドとは、第二のプロトコルに従うコマンドである。第二のプロトコルとは、ターゲットでのコマンドの処理中には接続が切断されているタイプのコマンドである。
【００２１】
一つの実施形態では、第二プロトコルコマンドとして、ターゲットであるスイッチデバイスのポートに接続されているデバイスに関する情報のディスカバリを要求する第二プロトコルディスカバリコマンドがある。各スイッチデバイスが、コマンド発行部からのコマンドを解釈し処理するコマンド処理部を有することができる。コマンド処理部が、コマンドの解釈によって第二プロトコルディスカバリコマンドを検出したならば、自分が有する複数のポート全てにそれぞれ対応した複数のポート情報要素を含むレスポンスを作成し、そのレスポンスをコマンド発行部に送信することができる。
【００２２】
一つの実施形態では、第二プロトコルコマンドとして、更に、ルーティングテーブルの更新を要求する第二プロトコルテーブル更新コマンドがある。コマンド発行部が、受信したレスポンスに含まれている複数のポート情報要素を基に、複数のポート情報要素から特定される全てのデバイスのデバイス情報要素を有した第二プロトコルテーブル更新コマンドを準備し（例えば、コマンドの作成や、コマンドを送信可能な状態とし）、該第二プロトコルテーブル更新コマンドを、ターゲットのスイッチデバイスより上位のスイッチデバイスに送信することができる。これは、例えば、ターゲットのスイッチデバイスより上位のスイッチデバイスについて、下位から上位にかけて順次に、或いは、上位から下位にかけて順次に行うことができる。ターゲットのスイッチデバイスより上位にある（つまりコントロール寄りの）スイッチデバイスのコマンド処理部が、コマンドの解釈によって第二プロトコルテーブル更新コマンドを検出したならば、該スイッチデバイスが有するルーティングテーブルに、該第二プロトコルテーブル更新コマンドが有するデバイス情報要素を書込むことができる。第二プロトコルテーブル更新コマンドによるルーティングテーブル更新は、例えば、第一プロトコルでのディスカバリコマンドにより発見されたデバイスに関するデバイス情報要素をまとめて書込むことに利用されても良い。
【００２３】
一つの実施形態では、コマンド発行部が、ターゲットに第二プロトコルコマンドを送信するための接続に失敗、及び／又は、第二プロトコルコマンドのレスポンスをターゲットから送信するための接続に失敗の場合、第一プロトコルコマンドの送信のための接続を試行することができる。
【００２４】
一つの実施形態では、コマンド発行部が、第一プロトコルコマンドの送信のためのターゲットとの接続に成功した場合に、該ターゲットと前記コントローラとの間に存在する各々のスイッチデバイスについて、スイッチデバイスからルーティングテーブルを取得するための第一プロトコルコマンドを発行することでルーティングテーブルを取得し、コントローラが保持するルーティングテーブルと上記取得されたルーティングテーブルとの比較を行い、不一致であれば、一致となるよう上記取得されたルーティングテーブルを修正するために第一プロトコルコマンドをそのスイッチデバイスに送信することができる。
【００２５】
一つの実施形態では、コマンド発行部が、第一プロトコルコマンドの送信のためのターゲットとの接続に成功した場合に、コントローラより下位に存在するルーティングテーブルを第一のプロトコルコマンドで修正することができる。
【００２６】
一つの実施形態では、コマンド発行部が、第二のＩ／Ｏコマンドの送信のための接続に失敗、及び／又は、その第二のＩ／Ｏコマンドのレスポンスを記憶装置から送信するための接続に失敗の場合、該記憶装置が直接されているスイッチデバイスに、該記憶装置が接続されているか否か及び／又は該記憶装置との間の接続が正常か否かの問合せを第二プロトコルコマンドで送信することができる。また、この実施形態では、コントローラ及び一以上のスイッチデバイスの各々が冗長化されていてよい。この場合、一方のコントローラにおけるコマンド発行部が、上記問合せのための第二プロトコルコマンドに対する応答として、記憶装置が接続されている及び／又は該記憶装置との間の接続は正常である旨を受けた場合には、他方のコントローラから該記憶装置に対して第二のＩ／Ｏコマンドを発行させ、該第二のＩ／Ｏコマンドの送信のための接続が成功した場合には、一方のコントローラより下位に存在するルーティングテーブルを第一のプロトコルコマンドで修正することができる。また、他方のコントローラにおけるコマンド発行部が、第二のＩ／Ｏコマンドの送信のための接続に失敗、及び／又は、その第二のＩ／Ｏコマンドのレスポンスを記憶装置から送信するための接続に失敗の場合、該記憶装置が直接されている他方のスイッチデバイスに、該記憶装置が接続されているか否か及び／又は該記憶装置との間の接続が正常か否かの問合せを第二プロトコルコマンドで送信することができる。その他方のコントローラにおけるコマンド発行部は、該問合せのための第二プロトコルコマンドに対する応答として、記憶装置が接続されている及び／又は該記憶装置との間の接続は正常である旨を受けた場合には、その他方のコントローラより下位に存在するルーティングテーブルを第一のプロトコルコマンドで修正することができる。
【００２７】
一つの実施形態では、コントローラ及び一以上のスイッチデバイスの各々が冗長化されている。冗長化されているスイッチデバイス間が接続されており（例えばケーブル等で物理的に接続されている）。冗長化されているスイッチデバイス（例えばＳＡＳエクスパンダ）の各々が、ブロードキャスト要求（例えば後述のＢＰ（ＳＥＳ）の生成要求）のインタフェースである要求インタフェース（例えば、ハードウェア、コンピュータプログラム或いはそれらの組合せ）と、冗長化されているスイッチデバイスに共通の監視対象デバイスを監視し該監視対象デバイスの障害を検知した場合に上位及び下位に所定種類の情報（例えば後述のＢＰ（ＳＥＳ））をブロードキャストすると共に上記要求インタフェースを通じてブロードキャスト要求を他方のスイッチデバイスに送信する監視制御部とを備えることができる。他方のスイッチデバイスにおける監視制御部が、該他方のスイッチデバイスにおける要求インタフェースを通じてブロードキャスト要求を受けたことに応答して、該他方のスイッチデバイスの上位及び下位に所定種類の情報をブロードキャストすることができる。冗長化されているコントローラの各々が、所定種類の情報の受信に応答して、第二のプロトコルコマンドをスイッチデバイスに送信することにより、該スイッチデバイスで検知された障害に関する情報の採取を行うことができる。
【００２８】
一つの実施形態では、コマンド発行部が、第二のＩ／Ｏコマンドを第一プロトコルコマンドよりも優先して出力することができる。この実施形態では、第一プロトコルコマンドが特定の種類のコマンドであれば、該第一プロトコルコマンドの優先度が第二のＩ／Ｏコマンドと同等とされてもよい。また、この実施形態では、第一プロトコルコマンドが定期的に発行される種類のコマンドであって、二以上の第一プロトコルコマンドと二以上の第二のＩ／Ｏコマンドとの発行時期がそれぞれ同時期の場合には、第二のＩ／Ｏコマンドと第一のプロトコルコマンドとが交互に出力されてもよい。
【００２９】
上述した各部は、手段と読み替えても良い。上述した各部は、ハードウェア（例えば回路）、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【００３０】
以下、図面を参照して、本発明の一実施形態に係るストレージシステムを詳細に説明する。
【００３１】
＜システム構成＞。
【００３２】
図１は、本発明の一実施形態に係るストレージシステムの構成例を示す。以下、同種の要素には、親番号（例えば１０７）と子符号（例えばＡ、Ｂ、或いはＣ）との組合せで構成された参照番号を付している。以下、同種の要素を特に区別しないで説明する場合には、親番号のみを用いて説明し、同種の要素を特に区別して説明する場合には、親番号と子符号との組合せを用いて説明することがある。
【００３３】
ストレージシステム１０１は、基本筐体１０５と、一台以上の（例えば三台の）増設筐体１０７Ａ〜１０７Ｃとで構成される。基本筐体１０５に対して、一以上の増設筐体１０７が直列に接続される。
【００３４】
基本筐体１０５には、二重化されたコントローラデバイス１０９Ａ及び１０９Ｂと、複数のディスクドライブ１１１とが搭載される（基本筐体１０５にはディスクドライブ１１１は無くても良い）。コントローラデバイス１０９Ａ及び１０９Ｂの両方又は一方が、上位装置（例えば、ホスト計算機、或いは他のストレージシステム）１０３からＩ／Ｏコマンドを受け付けることができる。ディスクドライブ１１１は、例えば、ＳＡＴＡ（Serial Attached SCSI）或いはＳＡＳのインタフェースを搭載したハードディスクドライブである。ハードディスクドライブに限らず、他種の記憶装置（例えばフラッシュメモリドライブ）が採用されても良い。
【００３５】
増設筐体１０７には、二重化されたエンクロージャデバイス１１３Ａ及び１１３Ｂと、複数のディスクドライブ１１１とが搭載される。一方において、一方のコントローラデバイス１０９Ａから、増設筐体１０７Ａ〜１０７Ｃにおける一方のエンクロージャデバイス１１３Ａが直列に接続される。同様に、他方においても、他方のコントローラ１０９Ｂから、増設筐体１０７Ａ〜１０７Ｃにおける他方のエンクロージャデバイス１１３Ｂが直列に接続される。具体的には、一方及び他方の両方において、後述するコントローラを最上位に、複数のＳＡＳエクスパンダが直列に接続される。以下、コントローラと複数のＳＡＳエクスパンダとが直列に接続された構成を、「カスケード構成」と呼ぶことがある。
【００３６】
図２Ａは、基本筐体１０５の構成例を示す。なお、以下の説明では、混同を避けるために、外部装置１０３からのＩ／Ｏコマンドを、「ボリュームＩ／Ｏコマンド」と呼ぶ。外部装置１０３からのＩ／Ｏコマンドでは、一以上のディスクドライブ１１１を基に形成された論理ボリュームのＩＤ（例えばＬＵＮ）を指定することが一般的であるためである。一方、コントローラからディスクドライブ１１１に対して発行されるＩ／Ｏコマンドを、「ドライブＩ／Ｏコマンド」と呼ぶ。
【００３７】
二重化されたコントローラデバイス１０９Ａ及び１０９Ｂのうち、コントローラデバイス１０９Ａを代表的に例に採って説明する。
【００３８】
コントローラデバイス１０９Ａは、例えばハードウェア回路である。コントローラデバイス１０９Ａには、コントローラ１１０Ａと、一つの（又は複数の）ＳＡＳエクスパンダ１３１Ａとが備えられる。コントローラ１１０Ａは、ＲＡＩＤ制御部１２１ＡとＳＡＳ制御部１２３Ａを備えている。上位から下位にかけて、ＲＡＩＤ制御部１２１Ａ、ＳＡＳ制御部１２３Ａ及びＳＡＳエクスパンダ１３１Ａが直列に接続されている。
【００３９】
ＲＡＩＤ制御部１２１Ａは、例えば、コンピュータプログラムを実行するＣＰＵを含んだモジュールであり、コマンドの処理を実行する。具体的には、例えば、ＲＡＩＤ制御部１２１Ａにおける記憶資源（例えばメモリ）では、どの二以上のディスクドライブ１１１によってどんなＲＡＩＤレベルのＡＩＤグループが構成されていてそのＲＡＩＤグループにはどんなＩＤを有する論理ボリュームが形成されているかを表す情報（以下、ＲＡＩＤ構成情報）が記憶されている。ＲＡＩＤ制御部１２１Ａは、外部装置１０３からのボリュームＩ／Ｏコマンドに応答して、ＲＡＩＤ構成情報を基に、ボリュームＩ／Ｏコマンドから特定される論理ボリュームに対応したい二以上のディスクドライブ１１１を特定し、特定した二以上のディスクドライブ１１１にそれぞれ対応した二以上のドライブＩ／Ｏコマンドを生成する。ＲＡＩＤ制御部１２１Ａは、各ドライブＩ／Ｏコマンドを、ＳＡＳ制御部１２３Ａに指示することで、そのドライブＩ／Ｏコマンドの宛先とするディスクドライブ１１１に送信させる。また、ＲＡＩＤ制御部１２１Ａは、他方のＲＡＩＤ制御部１２１Ｂに接続されており、他方のＲＡＩＤ制御部１２１Ｂに、ディスクドライブ１１１に対してドライブＩ／Ｏコマンドを発行することを指示することができる。
【００４０】
ＳＡＳ制御部１２３Ａは、例えば、ハードウェア回路（例えばＩＣチップ）である。ＳＡＳ制御部１２３Ａは、ＲＡＩＤ制御部１２１Ａからの指示に応答して、ＲＡＩＤ制御部１２１ＡからのドライブＩ／Ｏコマンドを、そのドライブＩ／Ｏコマンドで指定されているディスクドライブ１１１に送信する。
【００４１】
ＳＡＳエクスパンダ１３１Ａには、複数のディスクドライブ１１１が接続される。ＳＡＳ制御部１２３Ａから送信された、基本筐体１０５内のディスクドライブ１１１を宛先としたドライブＩ／Ｏコマンドは、そのＳＡＳエクスパンダ１３１Ａを経由して、そのディスクドライブ１１１に送信される。基本筐体１０５内のＳＡＳエクスパンダ１３１Ａには、増設筐体１０７内のＳＡＳエクスパンダ１３１Ａが接続される。
【００４２】
図２Ｂは、増設筐体１０７の構成例を示す。
【００４３】
増設筐体１０７内には、二重化されたエンクロージャデバイス１１３Ａ及び１１３Ｂに加えて、監視対象のデバイス（例えば、電源デバイスやＦＡＮ）１４１が備えられている。二重化されたエンクロージャデバイス１１３Ａ及び１１３Ｂのうちエンクロージャデバイス１１３Ａを代表的に例に採って説明する。
【００４４】
エンクロージャデバイス１１３Ａは、例えばハードウェア回路である。エンクロージャデバイス１１３Ａには、一つの（又は複数の）ＳＡＳエクスパンダ１３１Ａと、ＳＡＳエクスパンダ１３１Ａによる監視対象のデバイス１３３Ａと、ＳＡＳエクスパンダ１３１Ａによって使用されるフラッシュメモリ１３７Ａ、補助メモリ１３５Ａ及びＰＬＤ（Programmable Logic Device）１３９Ａとが備えられる。監視対象デバイス１３３Ａと違って、参照番号１４１の監視対象デバイスは、二重化されたＳＡＳエクスパンダ１３１Ａ及び１３１Ｂの両方から監視されるデバイスである。
【００４５】
図２Ｂに示した監視対象デバイス１３３、１４１、フラッシュメモリ１３７、補助メモリ１３５及びＰＬＤ１３９は、いずれも、図２Ａには示されていないが、監視対象デバイス１４１が、基本筐体１０５にも備えられていても良いし、監視対象デバイス１３３、フラッシュメモリ１３７、補助メモリ１３５及びＰＬＤ１３９のうちの少なくとも一つが、基本筐体１０３内のコントローラデバイス１０９に備えられていても良い。
【００４６】
図３は、ＳＡＳエクスパンダ１３１Ａの構成例を示す。図３では、他方のエンクロージャデバイス１１３Ｂ及び他方のＳＡＳエクスパンダ１３１Ｂにも存在する要素には、子符号“Ａ”を含んだ参照番号を付している（つまり、他方のエンクロージャデバイス１１３Ｂ及び他方のＳＡＳエクスパンダ１３１Ｂについては、子符号“Ａ”が“Ｂ”に代わるだけである）。以下の説明では、適宜に、一方のカスケード構成における要素を代表的に例に採って説明することにする。
【００４７】
ＳＡＳエクスパンダ１３１Ａは、例えばＬＳＩ（Large Scale
Integration）である。ＳＡＳエクスパンダ１３１Ａには、複数のｐｈｙ１５１Ａと、エクスパンダスイッチ制御部１５７Ａと、プロセッサ（例えばＣＰＵ）１６５Ａと、メモリ１５３Ａと、ＵＡＲＴ（Universal
Asynchronous Receiver Transmitter）１６３Ａと、ＩＩＣ（Inter Integrated Circuit）１６１Ａとが備えられる。
【００４８】
ｐｈｙ１５１Ａは、物理ポートである。ｐｈｙ１５１Ａには、ディスクドライブ１１１或いは他の筐体１０５又は１０７内のＳＡＳエクスパンダ１３１Ａなど種々のデバイスを接続することができる。ｐｈｙ１５１Ａの数は幾つでも良い。
【００４９】
エクスパンダスイッチ制御部１５７Ａは、ＳＡＳのＩ／Ｆ制御やスイッチ制御を行うハードウェア回路である。エクスパンダスイッチ制御部１５７Ａには、複数のｐｈｙ１５１Ａとプロセッサ１６５Ａとが接続されている。エクスパンダスイッチ制御部１５７Ａには、レジスタ１５９Ａが設けられている。スイッチ制御は、そのルーティングテーブル１５４Ａを基に行われる。
【００５０】
メモリ１５３Ａには、前述したように、ルーティングテーブル１５４Ａが記憶される。ルーティングテーブル１５４Ａには、そのテーブル１５４Ａを有するＳＡＳエクスパンダ１３１Ａより下位に存在する各デバイスとそのＳＡＳエクスパンダ１３１Ａのｐｈｙ１５１Ａに直接接続されている（一本の物理リンクで接続されている）各デバイスとについて、行き先を表す情報要素（行き先情報要素）が記録される。より上位のＳＡＳエクスパンダ１３１Ａに記憶されるルーティングテーブル１５４Ａほど、通常、より多くの行き先情報要素が記録される。なぜなら、より上位のＳＡＳエクスパンダ１３１Ａほど、下位に存在するデバイスの数がより多くなるためである。ルーティングテーブル１５４Ａは、ＲＡＩＤ制御部１２１Ａ及びＳＡＳ制御部１２３Ａの両方も保持するが、そのような理由から、ＲＡＩＤ制御部１２１Ａ及びＳＡＳ制御部１２３Ａが保持するルーティングテーブル１５４Ａに、一番多くの数の行き先情報要素（すなわち、下位に存在する全てのデバイス（ＳＡＳエクスパンダ１３１Ａやディスクドライブ１１１）の行き先情報要素）が記録されることになる。行き先情報要素は、例えば、ＳＡＳエクスパンダのＳＡＳ規格に従うアドレス（ＳＡＳアドレス）とｐｈｙの番号とで構成することができる。
【００５１】
補助メモリ１３５Ａは、メモリ１５３Ａの記憶容量を補助するためのメモリである。具体的には、例えば、プロセッサ１６５Ａがワーク領域をメモリ１５３Ａに展開する場合に、容量が不足した場合には、補助メモリ１３５Ａに、不足分を展開することができる。
【００５２】
フラッシュメモリ１３７Ａには、プロセッサ１６５Ａにロードされて実行されるコンピュータプログラムが記憶される。そのコンピュータプログラムは、例えばファームウェア１４０Ａである。
【００５３】
ＰＬＤ１３９Ａは、ＧＰＩＯ（General Purpose Input/Output）ポートを増やす目的で設けられたデバイスである。ＰＬＤ１３９の各ポートを介して、監視対象デバイス１４１の監視などが行われる。
【００５４】
ＵＡＲＴ１６３Ａを介して、例えば、図示しない管理端末からの情報の入出力を行うことが可能である。
【００５５】
ＩＩＣ１６１Ａを介して、ファームウェア１４０Ａを実行するプロセッサ１６５Ａにより、監視対象デバイス１３３Ａの監視が行われる。また、ＩＩＣ１６１Ａには、他方のＳＡＳエクスパンダ１３１Ｂが接続され、ＩＩＣ１６１Ａを介して、他方のＳＡＳエクスパンダ１３１Ｂと通信することが可能である。
【００５６】
図４Ａは、ＲＡＩＤ制御部１２１Ａ内のプロセッサで実行されるコンピュータプログラムを示す。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサ（ＣＰＵ）によって処理が行われるものとする。
【００５７】
ＲＡＩＤ制御部１２１内のプロセッサが実行するコンピュータプログラムとして、例えば、コマンドの発行処理を実行するコマンド発行部６７２Ａと、コマンド発行部６７２ＡからＳＡＳ制御部１２３Ａへのコマンド発行を制御するコマンド発行制御部７４２Ａと、ＢＰ処理を実行するＢＰ処理部６７４Ａとがある。ＢＰ（Broadcast Primitive）とは、ＳＡＳの規格でサポートされている情報フレームである。ＢＰとしては、例えば、ＢＰ（ＳＥＳ）と、ＢＰ（ＣＨＡＮＧＥ）とがある（ＳＥＳは、「SCSI
Enclosure Service」の略である）。ＢＰ（ＳＥＳ）は、例えば、監視対象デバイス１３３、１４１の監視においてそのデバイス１３３、１４１の状態変化が検知された場合に作成されて送信される情報フレームである。ＢＰ（ＣＨＡＮＧＥ）は、例えば、ＳＡＳエクスパンダ１３１で管理されているトポロジに変化があったこと（例えばディスクドライブ１１１が新たに追加或いは取り外されたこと）が検知された場合に作成されて送信される情報フレームである。
【００５８】
コマンド発行部６２７Ａには、例えば、拡張ＳＳＰコマンドを発行する拡張ＳＳＰコマンド発行部６８２Ａがある。ＳＳＰとは、「Serial SCSI Protocol」の略である。拡張ＳＳＰコマンドとは、ＳＭＰでのファンクションが置き換えられたＳＳＰコマンドである。拡張ＳＳＰコマンドについては、後に詳述する。
【００５９】
図４Ｂは、ファームウェア１４０Ａの構成例を示す。
【００６０】
ファームウェア１４０Ａには、例えば、受信したコマンドを処理するコマンド処理部６８４Ａと、ＢＰの生成の要求を他方のＳＡＳエクスパンダ１３１Ｂから受け付けたり他方のＳＡＳエクスパンダ１３１ＢにＢＰの生成を要求したりするインタフェースであるＢＰ指示Ｉ／Ｆ６９２Ａと、監視対象デバイス１３３Ａ、１４１の監視を行う監視制御部６９４Ａとを有する。コマンド処理部６８４Ａには、拡張ＳＳＰコマンドを解釈し実行する拡張ＳＳＰコマンド処理部６８６がある。ファームウェア１４０Ａの処理については後に詳述する。
【００６１】
＜ＳＭＰの特性とＳＳＰの特性の違い＞。
【００６２】
本実施形態では、ＳＭＰの特性とＳＳＰの特性の違いに着目し、ＳＭＰコマンドとＳＳＰコマンドの使い分けが実行される。
【００６３】
まず、図５Ａを参照して、ＳＭＰの特性を説明する。
【００６４】
図５Ａに示すように、ＳＭＰによれば、ＳＡＳ制御部１２３とＳＭＰターゲットエクスパンダ＃３（３番目の下位のＳＡＳエクスパンダ１３１）との間の接続が確立し、ＳＡＳ制御部１２３からＳＭＰに従うコマンド（ＳＭＰコマンド）がＳＭＰターゲットエクスパンダ＃３に発行され、そのＳＭＰコマンドがＳＭＰターゲットエクスパンダ＃３で処理され、処理の結果としてのレスポンス（ＳＭＰレスポンス）が準備されて（例えばレスポンスが作成されてメモリ等で一時保持され）、そのＳＭＰレスポンスがＳＭＰターゲットエクスパンダ＃３からＳＡＳ制御部１２３に届き、接続が切断されるまでの間、ＳＡＳ制御部１２３とＳＭＰターゲットエクスパンダ＃３との間におけるリソース（例えば、点線枠の楕円に示すように、ＳＡＳ制御部１２３とＳＭＰターゲットエクスパンダ＃３までの一本のパスを構成する一以上の物理リンク１６２やｐｈｙ）が、占有されてしまう。リソースが占有されている間、そのリソースにおける物理リンク１２３やｐｈｙを他のコマンドが経由することはできない。また、リソース占有時間長が、ＳＭＰターゲットエクスパンダ＃３の性能に影響を受けることになる。ＳＭＰコマンドの処理中も、ＳＡＳ制御部１２３とＳＡＳターゲットエクスパンダ＃３との間が接続状態（つまりリソース占有状態）となるからである。このため、例えば、ＳＡＳターゲットエクスパンダ＃３の性能が低く、ＳＭＰコマンドの処理に長い時間を要する場合、その分、リソース占有時間長が長くなる。
【００６５】
また、一つのＳＡＳ制御部１２３から同時期に発行できるＳＭＰコマンドの数は一つであり、例えば、一つのＳＭＰコマンドが発行されてからそれによるリソース占有が行われている間は、他のＳＭＰコマンドを送信することはできない。
【００６６】
また、ＳＭＰの場合、ＳＭＰコマンドがターゲット（ここではＳＡＳエクスパンダ＃３）に届いたならば、ＳＡＳ制御部１２３とターゲットとの間のリソースに物理的な障害が発生する等の特段のケースを除くと、ターゲットからＳＡＳ制御部１２３にＳＭＰレスポンスが戻ってくることが保証される。
【００６７】
次に、図５Ｂを参照して、ＳＳＰの特性を説明する。
【００６８】
図５Ｂに示すように、ＳＳＰによれば、ＳＡＳ制御部１２３とＳＳＰターゲットエクスパンダ＃３（３番目の下位のＳＡＳエクスパンダ１３１）との間の接続が確立し、ＳＳＰに従うコマンド（ＳＳＰコマンド）がＳＡＳ制御部１２３からＳＳＰターゲットエクスパンダ＃３（３番目の下位のＳＡＳエクスパンダ１３１）に発行されＳＳＰターゲットエクスパンダ＃３に届いたならば、ＳＳＰターゲットエクスパンダ＃３により接続が切断される。ＳＳＰコマンドの処理が終わった場合に、ＳＳＰターゲットエクスパンダ＃３からＳＡＳ制御部１２３に再接続され（つまり接続が再び確立され）、ＳＳＰコマンドのレスポンス（ＳＳＰレスポンス）が、ＳＳＰターゲットエクスパンダ＃３からＳＡＳ制御部１２３に返され、その後、接続が切断される。
【００６９】
すなわち、ＳＳＰによれば、ＳＳＰコマンドの処理中は、ＳＡＳ制御部１２３とＳＭＰターゲットエクスパンダ＃３との間におけるリソースは解放されている。このため、ＳＭＰと違って、ＳＳＰの場合には、コマンドの処理中に、他のコマンド（例えばドライブＩ／Ｏコマンド）をそのリソースを介して流すことが可能となる。
【００７０】
しかし、ＳＳＰの場合、ＳＳＰコマンドがターゲットに届いて接続が切られた後、必ずしも再接続に成功するとは限らない。なぜなら、ＳＳＰコマンドの処理中に、トポロジ障害が発生する（典型的には、ＳＡＳ制御部１２３が保持するルーティングテーブル１５４や、ＳＡＳ制御部１２３とターゲットとの間に存在するＳＡＳエクスパンダ１３１が保持するルーティングテーブル１５４が壊れる）可能性があるからである。
【００７１】
以上のように、ＳＭＰの特性やＳＳＰの特性にはそれぞれ一長一短がある。本実施形態では、ＳＭＰの特性とＳＳＰの特性との違いに着目した使い分けが実行される。
【００７２】
＜第一のトポロジ障害特定＞。
【００７３】
図６は、ＳＡＳエクスパンダ１３１ＡにＳＳＰコマンドが発行される場合に実行される処理の流れを示す。なお、以下の説明では、ターゲットとするＳＡＳエクスパンダを「ターゲットエクスパンダ」と呼ぶ。
【００７４】
ＲＡＩＤ制御部１２１Ａのコマンド発行部６７２Ａが、ターゲットエクスパンダ１３１Ａに対応したＳＳＰ用アドレス（ＲＡＩＤ制御部１２１Ａが保持するルーティングテーブル１５４Ａにおけるアドレス）を参照し、そのＳＳＰ用アドレスにある行き先情報要素が表すＳＡＳアドレスを用いて接続要求をＳＡＳ制御部１２３Ａに発行する（Ｓ１０１）。ＲＡＩＤ制御部１２１Ａが保持するルーティングテーブル１５４Ａには、ルーティングテーブル１５４Ａを参照するときに使用されるアドレスがあり、各ＳＡＳエクスパンダにつき、ＳＳＰ用アドレスとＳＭＰ用アドレスとがある。つまり、同一のＳＡＳエクスパンダに接続するのであっても、ＳＳＰコマンドを送信するための接続なのか、ＳＭＰコマンドを送信するための接続なのかによって、参照先となるアドレスが異なる。
【００７５】
ＳＡＳ制御部１２３Ａが、接続要求に応答して、指定されたＳＡＳアドレスを有するターゲットエクスパンダ１３１Ａとの間の接続を試みる。具体的には、ＳＡＳ制御部１２３Ａが、自分が保持するルーティングテーブル１５４Ａを参照し、ターゲットエクスパンダ１３１Ａに接続するための直近のＳＡＳエクスパンダ１３１Ａを見つけ、そのＳＡＳエクスパンダ１３１Ａに、接続を指示する。以降、そのＳＡＳエクスパンダ１３１Ａから下位への順次に（バケツリレー的に）、物理リンクの確保が行われていく。物理リンクの確保は、その確保を行うＳＡＳエクスパンダ１３１Ａが、自分が保持するルーティングテーブル１５４Ａを用いて行われる。上位の物理リンクから、ターゲットエクスパンダ１３１Ａに接続されている物理リンクまで確保された場合に、接続の成功（確立）となる。
【００７６】
接続失敗の場合、具体的には、ターゲットエクスパンダ１３１Ａとの間で接続確立とならない場合、或いは、コマンド発行部６７２ＡからのＳＳＰコマンド発行のための接続には成功したが、そのＳＳＰコマンドの到達による切断が行われてから一定時間経っても再接続が行われない場合（Ｓ１０２：ＹＥＳ）、トポロジ障害のおそれがあるため、Ｓ１０３に進む。一方、接続の成功となった場合（Ｓ１０２：ＮＯ）、トポロジ障害は発生していないと考えられるため、終了となる。
【００７７】
Ｓ１０３で、コマンド発行部６７２Ａは、ターゲットエクスパンダ１３１Ａに対応したＳＭＰ用アドレス（ＲＡＩＤ制御部１２１Ａが保持するルーティングテーブル１５４Ａにおけるアドレス）を参照し、そのＳＭＰ用アドレスにある行き先情報要素が表すＳＡＳアドレスを用いて接続要求を発行する。それでもターゲットエクスパンダ１３１との間で接続確立とならない場合（Ｓ１０４：ＹＥＳ）、コマンド発行部６７２Ａは、物理的な壊れ（ハードウェアの壊れ）が考えられるため、例えば、管理者にその旨を通知する等の特定のエラー処理を実行する。Ｓ１０３によって接続が確立した場合には、トポロジ障害が原因でＳＳＰコマンドが通らない可能性が高いため、コマンド発行部６７２Ａは、図８の診断・復旧処理を実行する。
【００７８】
ＳＳＰ用アドレスから取得された行き先情報要素が表すＳＡＳアドレスで接続要求が発行された場合も、ＳＭＰ用アドレスから取得された行き先情報要素が表すＳＡＳアドレスで接続要求が発行された場合も、ＲＡＩＤ制御部１２１Ａとターゲットエクスパンダ１３１Ａとの間に存在するＳＡＳ制御部１２３ＡやＳＡＳエクスパンダ１３１Ａにおいて、それらの各々が保持するルーティングテーブル１５４Ａを用いたルーティング処理が実行される。そのルーティングテーブル１５４Ａに誤りがあれば、接続に失敗することになる。
【００７９】
すなわち、ＳＳＰ用アドレスにある行き先情報要素を使用した接続に失敗したがＳＭＰ用アドレスにある行き先情報要素を使用した接続に成功することがある理由は、同一のＳＡＳエクスパンダについてＳＳＰ用アドレスとＳＭＰ用アドレスは異なるアドレスであるが故に、ＳＳＰ用アドレスにある行き先情報要素が壊れてもＳＭＰ用アドレスにある行き先情報要素は壊れておらず正しい内容であることがあるためである。
【００８０】
ドライブＩ／ＯコマンドはＳＳＰで発行されるが、その場合にも、トポロジ障害特定を行うことが可能である。但し、ドライブＩ／ＯコマンドはＳＳＰでのみ送信されるため、ＳＭＰ用アドレスは存在しないが、下記工夫により、トポロジ障害を特定することが可能である。
【００８１】
＜第二のトポロジ障害特定＞。
【００８２】
図７は、ディスクドライブ１１１にＳＳＰでドライブＩ／Ｏコマンドが発行される場合に実行される処理の流れを示す。なお、以下の説明では、ターゲットとするディスクドライブを「ターゲットドライブ」と呼ぶ。
【００８３】
ＲＡＩＤ制御部１２１Ａのコマンド発行部６７２Ａが、ルーティングテーブル１５４Ａにおける、ターゲットドライブ１１１に対応したアドレスを参照し、そのアドレスにある行き先情報要素を用いてターゲットドライブ１１１に接続する要求を発行する（Ｓ１１１）。
【００８４】
接続できなければ（Ｓ１１２：ＹＥＳ）、トポロジ障害のおそれがあるため、Ｓ１１３に進む。一方、接続できれば（Ｓ１１２：ＮＯ）、トポロジ障害は発生していないと考えられるため、終了となる。
【００８５】
Ｓ１１３で、コマンド発行部６７２Ａは、ターゲットドライブ１１１が挿入状態であり、且つ、ターゲットドライブ１１１とそれの接続先のＳＡＳエクスパンダ（以下、図７の説明では、便宜上「ターゲットエクスパンダ」と呼ぶ）１３１Ａとの間のリンク（物理リンク）がダウンしていないか否かの判定を行う。具体的には、例えば、コマンド発行部６７２の拡張ＳＳＰコマンド発行部６８２Ａが、ターゲットエクスパンダ１３１Ａ（ターゲットドライブ１１１が一本の物理リンクで接続されているＳＡＳエクスパンダ１３１Ａ）に、ターゲットドライブ１１１が挿入状態であるかどうかやリンクダウンしていないかどうかの問合せを意味する拡張ＳＳＰコマンドを送信する。その拡張ＳＳＰコマンドに対するレスポンスを解析することにより、ターゲットドライブ１１１が挿入状態であり、且つ、ターゲットドライブ１１１とターゲットエクスパンダ１３１Ａとの間がリンクダウンしていないか否かの判定が可能となる。挿入状態且つリンクダウンしていないとの判定結果になれば（Ｓ１１３：ＹＥＳ）、Ｓ１１５に進み、挿入状態ではない又はリンクダウンしているとの判定結果になれば（Ｓ１１３：ＮＯ）、Ｓ１１４に進む。
【００８６】
Ｓ１１４で、コマンド発行部６７２Ａは、ドライブ障害処理を実行する。ここで言うドライブ障害処理とは、障害発生部位が、ターゲットドライブ１１１であるのかターゲットエクスパンダ１３１Ａであるのかを特定するための処理である。具体的には、例えば、コマンド発行部６７２Ａの拡張ＳＳＰコマンド発行部６８２Ａが、障害発生部位がターゲットドライブ１１１であるのかターゲットエクスパンダ１３１Ａであるのかを問い合わせる拡張ＳＳＰコマンドを、ターゲットエクスパンダ１３１Ａに発行し、その拡張ＳＳＰコマンドに対するレスポンスを受領し、そのレスポンスを解析することで、特定することができる。コマンド発行部６７２Ａは、特定された障害発生部位を表す情報を、例えばＲＡＩＤ制御部１２１Ａ内のメモリに記録したり、図示しない管理端末に報告したりすることができる。
【００８７】
Ｓ１１５で、コマンド発行部６７２Ａは、冗長パスからのアクセスは正常であるか否かの判定を行う。例えば、コマンド発行部６７２Ａが、他方のＲＡＩＤ制御部１２１Ｂに、ターゲットドライブ１１１にドライブＩ／Ｏコマンドを発することを指示する。他方のＲＡＩＤ制御部１２１Ｂは、一方のＲＡＩＤ制御部１２１Ａからのその指示に応答して、そのＲＡＩＤ制御部１２１Ｂが保持するルーティングテーブル１５４Ｂを用いて、ターゲットドライブ１１１に接続することの要求を発行することができ、接続に成功したか失敗したかを表す応答を、一方のＲＡＩＤ制御部１２１Ａに返すことができる。コマンド発行部６７２Ａは、その応答が接続成功を表していれば、アクセスは正常と判定し、接続失敗を表していれば、アクセスは正常ではないと判定する。アクセスは正常との判定結果になれば（Ｓ１１５：ＹＥＳ）、図８の診断・復旧処理を実行し、アクセスは正常ではないとの判定結果になれば（Ｓ１１５：ＮＯ）、Ｓ１１６を実行する。
【００８８】
Ｓ１１６で、コマンド発行部６７２Ａは、ターゲットドライブ１１１が挿入状態であり、且つ、ターゲットドライブ１１１とそれの接続先である他方のターゲットエクスパンダ１３１Ｂとの間がリンクダウンしていないか否かの判定を行う。挿入状態且つリンクダウンしていないとの判定結果になれば（Ｓ１１６：ＹＥＳ）、図８の診断・復旧処理を実行し、挿入状態ではない又はリンクダウンしているとの判定結果になれば（Ｓ１１６：ＮＯ）、Ｓ１１４に進む。この場合でのＳ１１４では、ターゲットは、他方のＳＡＳエクスパンダ１３１Ｂとなる。
【００８９】
Ｓ１１５でＹＥＳの場合には、一方のカスケード構成において、トポロジ障害の可能性がある。Ｓ１１６でＹＥＳの場合には、一方のカスケード構成と他方のカスケード構成の両方において、トポロジ障害の可能性がある。いずれの場合でも、図８の診断・復旧処理により、解消することが可能である。
【００９０】
また、図７の処理において、ＳＳＰコマンドを使用した問合せのための接続もできなければ、図６のＳ１０３にすすんでも良い。
【００９１】
＜診断・復旧処理＞。
【００９２】
図８は、診断・復旧処理の流れを示す。なお、図では、ループの開始（Start）と終了（End）を、「図番：Ｓ又はＥ：ループ番号」の規則に従って表している。これは、後の図（例えば図１１）でも同様である。
【００９３】
Ｓ１２１、Ｓ１２２及びＳ１２３が、例えば、ＲＡＩＤ制御部１２１Ａの下位に存在するルーティングテーブル１５４Ａの数（例えば、ＳＡＳ制御部１２３ＡとＳＡＳエクスパンダ１３１Ａとの合計）と同数回実行される。また、Ｓ１２１、Ｓ１２２及びＳ１２３は、ＲＡＩＤ制御部１２１Ａから下位にかけてバケツリレー的に順次に実行される。
【００９４】
Ｓ１２１で、ＲＡＩＤ制御部１２１Ａが、ＳＡＳ制御部１２３Ａにあるルーティングテーブル１５４Ａ或いはＳＡＳエクスパンダ１３１Ａにあるルーティングテーブル１５４Ａを取得する。具体的には、コマンド発行部６７２Ａが、ルーティングテーブル１５４Ａを取得するためのＳＭＰコマンドを、ＳＡＳ制御部１２３Ａ或いはＳＡＳエクスパンダ１３１Ａに発行する。そのＳＭＰコマンドを受けたＳＡＳ制御部１２３Ａ或いはＳＡＳエクスパンダ１３１Ａは、そのＳＭＰコマンドに応答して、自分が保持するルーティングテーブル１５４Ａを、ＲＡＩＤ制御部１２１Ａに送信する。なお、例えば、冗長パス（他方のカスケード構成）についてもトポロジ障害の可能性ありの場合には（すなわち、この診断・復旧処理が、図１６のＳ１１６：ＹＥＳにより実行されている場合には）、他方のカスケード構成においても、例えば一方のＲＡＩＤ制御部１２１Ａから他方のＲＡＩＤ制御部１２１Ｂへの指示により、診断・復旧処理を行うことができる。
【００９５】
Ｓ１２２で、ＲＡＩＤ制御部１２１Ａが、自分が有するメモリ（図示せず）にあるルーティングテーブル（以下、図８の説明において「第一テーブル」と呼ぶ）と、取得されたルーティングテーブル（以下、図８の説明において「第二テーブル」と呼ぶ）１５４Ａとを比較し、取得された第二テーブル１５４Ａに、第一テーブルと不一致となる部分（行き先情報要素）があるか否かを判定する。不一致有りとの判定結果になれば、Ｓ１２３に進み、不一致無しとの判定結果になれば、一つ下位のＳＡＳエクスパンダ１３１Ａについて、Ｓ１２１を実行する。
【００９６】
Ｓ１２３で、ＲＡＩＤ制御部１２１のコマンド発行部６７２Ａが、第二テーブル１５４Ａの取得元のＳＡＳエクスパンダ１３１Ａに、第二テーブル１５４Ａの書込みのためのＳＭＰコマンドを送信する。これにより、そのＳＡＳエクスパンダ１３１における第二テーブル１５４Ａの壊れが修復される。正しい第二テーブル１５４Ａに修復できるのであれば、ＳＭＰコマンドでの書込みの対象としては、第一のテーブルを基に作成された壊れの無い正しい第二テーブル１５４Ａそれ自体であっても良いし、上記不一致部分のみを修正するための情報要素であっても良い。
【００９７】
＜拡張ＳＳＰコマンド＞。
【００９８】
本実施形態では、ＳＭＰでの複数のファンクションがそれぞれ置き換えられた複数のＳＳＰコマンドが用意される。それら複数のＳＳＰコマンドの各々を、本実施形態の説明において「拡張ＳＳＰコマンド」と呼んでいる。
【００９９】
図９は、ＳＭＰファンクションと拡張ＳＳＰコマンドとの対応関係を示す。
【０１００】
例えば、９種類の拡張ＳＳＰコマンドが用意され、各種拡張ＳＳＰコマンドと各ＳＭＰファンクションとの対応関係は、図示の通りである。ＲＡＩＤ制御部１２１のコマンド発行部６７２における拡張ＳＳＰコマンド発行部６８２（図４Ａ参照）は、図示のような拡張ＳＳＰコマンドを作成して発行するよう構成されており、各ＳＡＳエクスパンダ１３１のファームウェア１４０における拡張ＳＳＰコマンド処理部６８６（図４Ｂ参照）が、拡張ＳＳＰコマンドを受けた場合には、その受けた拡張ＳＳＰコマンドの種類に応じた処理を実行し、拡張ＳＳＰコマンドのレスポンスを作成して返信するよう構成されている。
【０１０１】
以下、ＳＭＰファンクション“DISCOVER”が置き換えられた拡張ＳＳＰコマンドである“SSP
Discover Extended”を代表的に例に取り説明する。
【０１０２】
図１０Ａは、拡張ＳＳＰコマンド“SSP Discover Extended”の構成例を示す。
【０１０３】
拡張ＳＳＰコマンド“SSP Discover Extended”は、例えば６バイトで構成されている。
【０１０４】
拡張ＳＳＰコマンド“SSP Discover Extended”の或るバイト位置（例えば“２”）に、ページコードとして、例えば“Ｂ２Ｈ”が設定される。“Ｂ２Ｈ”は、ＳＡＳ規格におけるＳＳＰ仕様で定められている、複数のベンダユニークなコードのうちの一つである。従って、ページコードとして設定されるコードは、“Ｂ２Ｈ”に限らず、他のベンダユニークなコードであれば何でも良い。
【０１０５】
拡張ＳＳＰコマンド“SSP Discover Extended”の所定の範囲（例えばバイト位置“３”〜“５”）に、本コマンドに対するレスポンスのデータサイズが記録される。本実施形態ではそのレスポンスのデータサイズは一定のため、ページコード“Ｂ２Ｈ”が設定される際には、所定の範囲には所定のデータサイズが設定される。
【０１０６】
図１０Ｂは、拡張ＳＳＰコマンド“SSP Discover Extended”のレスポンスの構成例を示す。
【０１０７】
拡張ＳＳＰコマンド“SSP Discover Extended”のレスポンスの或るバイト位置（例えば“００８Ｈ”）に、ｐｈｙの数（例えば３７）が記録される。そして、拡張ＳＳＰコマンド“SSP
Discover Extended”のレスポンスの所定の範囲に、ｐｈｙの数と同数（例えば３７）のｐｈｙ情報要素“PHY INFORMATION”が記録される。図１０Ｂに例示のレスポンスに含まれる各ｐｈｙ情報要素“PHY
INFORMATION”は、一つのＳＭＰコマンドでのディスカバリ要求の際に受け取ることができる一つのｐｈｙ情報要素と実質的に同じにすることができる。
【０１０８】
以上、拡張ＳＳＰコマンド“SSP Discover Extended”とそれのレスポンスとを代表的に例に採り説明したが、他種の拡張ＳＳＰコマンド及び／又はそれのレスポンスでも、ＳＭＰコマンドで一件ずつやり取りされる情報要素を複数個設定される。言い換えれば、本実施形態では、ＳＳＰの特性に着目し、ＲＡＩＤ制御部１２１で実行されるコンピュータプログラム（コマンド発行部６７２）と各ＳＡＳエクスパンダ１３１で実行されるファームウェア１４０の構成を工夫することで、ＳＭＰコマンドの発行とそれのレスポンスの受領とを複数回行うことで実行される処理を、拡張ＳＳＰコマンドの発行とそれのレスポンスの受領とを１回行うだけで実行することができるようになっている。
【０１０９】
＜ディスカバリ処理及びルーティングテーブル設定処理＞。
【０１１０】
ストレージシステム１０１には、外部装置１０３からボリュームＩ／Ｏコマンドを受け付けたままの状態で、新たに増設筐体１０７を増設することができる。以下、増設された増設筐体１０７を「新規増設筐体１０７」と呼ぶ。新規増設筐体１０７が増設され（例えば、最下位のＳＡＳエクスパンダ１３１Ａ及び１３１Ｂに、新規増設筐体１０７内のＳＡＳエクスパンダ１３１Ａ及び１３１Ｂが例えば電気的に接続され）、ＲＡＩＤ制御部１２１Ａ及び１２１Ｂが、新規増設筐体１０７内のＳＡＳエクスパンダ１３１Ａ及び１３１Ｂに接続されているデバイスにアクセスするためには、新規増設筐体１０７より上位にある全てのルーティングテーブルに、ＳＡＳエクスパンダ１３１Ａ及び１３１Ｂにどんなデバイスが接続されているかに関する情報が登録されなければならない。
【０１１１】
ＲＡＩＤ制御部１２１Ａ及び１２１Ｂは、新規増設筐体１０７が増設されたことを検知したことを契機に、ディスカバリ処理を実行する。具体的には、ＲＡＩＤ制御部１２１Ａ及び１２１Ｂは、新規増設筐体１０７内のＳＡＳエクスパンダ１３１Ａ及び１３１Ｂに、どんなデバイスが接続されているのかの情報の開示を要求し、それの応答で、その情報を受信する。そして、ＲＡＩＤ制御部１２１Ａ及び１２１Ｂは、その要求に応答して送られて来た情報を基に、新規増設筐体１０７よりも上位にある全てのルーティングテーブルを更新するルーティングテーブル設定処理を実行する。
【０１１２】
ディスカバリ処理の方法として、一般に、ＳＭＰが利用される。具体的には、図１１Ａに示すように、ディスカバリ処理では、ディスカバリ用のＳＭＰコマンド“DISCOVER”が発行される。ＳＭＰコマンド“DISCOVER”で指定可能なｐｈｙの数は一つであり、故に、一回のＳＭＰコマンド“DISCOVER”の発行で取得可能なｐｈｙ情報要素は１つである（すなわち、その指定されたｐｈｙに接続されているデバイスに関する情報要素が取得される）。このため、一方のカスケード構成について言えば、ＳＭＰコマンド“DISCOVER”の発行は、認識された新規増設筐体１０７一つにつき、その筐体１０７内のＳＡＳエクスパンダ１３１Ａに備えられているｐｈｙの数と同数分行われる。
【０１１３】
認識された新規増設筐体１０７一つにつき、全てのｐｈｙについてのｐｈｙ情報要素が取得された場合、図１１Ａによれば、ルーティングテーブル設定処理が実行されるが、そのルーティングテーブル設定処理でも、一般に、ＳＭＰコマンドが利用される。具体的には、図１２Ａに示すように、ルーティングテーブルに記録する情報要素を設定するためのＳＭＰコマンド“Configure Route Information”が発行される。ＳＭＰコマンド“Configure Route
Information”でルーティグテーブル１５４Ａに設定可能な行き先情報要素は、一つのｐｈｙ情報要素に対応した一デバイス分である。このため、一方のカスケード構成について、新規増設筐体１０７一つ分に関して言えば、新規増設筐体１０７よりも上位のＳＡＳエクスパンダ１３１Ａ一つに対して、ＳＭＰコマンド“Configure
Route Information”の発行は、取得されたｐｈｙ情報要素（つまり、発見されたデバイス）の数と同数分行われる。これが、新規増設筐体１０７より上位にある全てのＳＡＳエクスパンダ１３１Ａについて、下位から上位にかけて順次に１つずつ実行される。
【０１１４】
ＳＭＰコマンドを利用するディスカバリ処理及びルーティングテーブル設定処理では、コマンドの発行回数が、ｐｈｙの数や発見されたデバイスの数に依存する。このため、ｐｈｙの数や発見されたデバイスの数が多くなるほど、ＳＭＰコマンドの発行回数が多くなる。新規増設筐体の増設は、外部装置１０３からのボリュームＩ／Ｏコマンドを受け付けている状態において実行されるため、ディスカバリ処理及びルーティングテーブル設定処理では、ＳＭＰコマンドの発行や処理等によるリソース占有によって、ボリュームＩ／Ｏコマンドを基に発行されるドライブＩ／Ｏコマンドが経由できる物理リンクの数が減ってしまう（図１３Ａ参照）。
【０１１５】
そこで、本実施形態では、ＳＳＰで、ディスカバリ処理及びルーティングテーブル設定処理が行われる。具体的には、図９に示したように、ＳＭＰコマンド“DISCOVER”を置き換えた拡張ＳＳＰコマンドとして“SSP Discover Extended”が用意され、ＳＭＰコマンド“Configure
Route Information”を置き換えた拡張ＳＳＰコマンドとして“SSP Configure Route Information Extended”が用意される。これらの拡張ＳＳＰコマンドを発行できるよう、前述した拡張ＳＳＰ発行部６８２が構成され、且つ、その拡張ＳＳＰコマンドを解釈して実行できるよう、前述したファームウェア１４０が構成される。
【０１１６】
ＳＳＰでのディスカバリ処理を、図１１Ｂに示す。一方のカスケード構成について言えば、新規増設筐体１０７一つにつき、ＲＡＩＤ制御部１２１Ａにおける拡張ＳＳＰコマンド発行部６８２Ａが、拡張ＳＳＰコマンド“SSP Discover Extended”（図１０Ａ参照）を作成し、その拡張ＳＳＰコマンド“SSP Discover Extended”を、新規増設筐体１０７内のＳＡＳエクスパンダ１３１Ａに送信する。そのＳＡＳエクスパンダ１３１Ａがその拡張ＳＳＰコマンド“SSP
Discover Extended”を受信した場合、ＳＡＳ制御部１２３Ａとの接続が切断される。そのＳＡＳエクスパンダ１３１Ａにおいて、ファームウェア１４０Ａは、拡張ＳＳＰコマンド“SSP
Discover Extended”に含まれるページコード“Ｂ２Ｈ”を検出したならば、そのＳＡＳエクスパンダ１３１Ａの全てのｐｈｙ１５１Ａに接続されている全てのデバイスについてのｐｈｙ情報要素を含んだレスポンス（図１０Ｂ参照）を作成する。ＳＡＳエクスパンダ１３１ＡからＳＡＳ制御部１２３Ａに再接続され、ファームウェア１４０Ａが、そのレスポンスを、拡張ＳＳＰコマンド発行部６８２Ａに送信する。
【０１１７】
認識された新規増設筐体１０７一つにつき、拡張ＳＳＰコマンド“SSP Discover
Extended”の一回の発行で、全てのｐｈｙについてのｐｈｙ情報要素を含んだレスポンスが取得された後、図１１Ｂによれば、ルーティングテーブル設定処理が実行される。そのルーティングテーブル設定処理を、図１２Ｂを参照して説明する。ＲＡＩＤ制御部１２１Ａにおける拡張ＳＳＰコマンド発行部６８２Ａが、拡張ＳＳＰコマンド“SSP
Configure Route Information Extended”を作成する。その拡張ＳＳＰコマンド“SSP Configure Route
Information Extended”には、全てのｐｈｙ情報要素から取得される全てのデバイスについての行き先情報要素（つまり、一回の拡張ＳＳＰコマンド“SSP
Discover Extended”の発行で発見された全てのデバイスについての行き先情報要素）が含まれる。その拡張ＳＳＰコマンド“SSP Configure
Route Information Extended”が、新規増設筐体１０７内のＳＡＳエクスパンダ１３１Ａに送信される。そのＳＡＳエクスパンダ１３１Ａがその拡張ＳＳＰコマンド“SSP
Configure Route Information Extended”を受信した場合、ＳＡＳ制御部１２３Ａとの接続が切断される。そのＳＡＳエクスパンダ１３１Ａにおいて、ファームウェア１４０Ａは、拡張ＳＳＰコマンド“SSP
Configure Route Information Extended”に含まれる全ての行き先情報要素を、ルーティングテーブル１５４Ａに設定する。その後、ＳＡＳエクスパンダ１３１Ａから再接続され、拡張ＳＳＰコマンド“SSP
Configure Route Information Extended”に対するレスポンスが返され、切断される。以上の処理が、新規増設筐体１０７より上位にある全てのＳＡＳエクスパンダ１３１Ａについて、下位から上位にかけて順次に１つずつ実行される。
【０１１８】
以上の流れによれば、一回の拡張ＳＳＰコマンド“SSP Discover
Extended”の発行で、一つのＳＡＳエクスパンダ１３１Ａにある全てのｐｈｙ１５１Ａについての全てのデバイスが発見される。そして、一回の拡張ＳＳＰコマンド“SSP
Configure Route Information Extended”の発行で、発見された全てのデバイスについての行き先情報要素がルーティングテーブル１５４Ａに書き込まれる。これにより、図１１Ａや図１２Ａに示したＳＭＰを利用する方法に比して、少ないコマンド発行回数且つ短いリソース占有時間長で、ディスカバリ処理やルーティングテーブル設定処理を行うことができる。拡張ＳＳＰコマンド“SSP
Discover Extended”に対するレスポンスの準備や、拡張ＳＳＰコマンド“SSP Configure Route Information
Extended”に応答したルーティングテーブル１５４Ａに対する書込みが、ＳＭＰの場合に比して長くても、コマンド処理中は、ＳＡＳ制御部１２３ＡとＳＡＳエクスパンダ１３１Ａとの間のリソースが解放されているため、ドライブＩ／ＯコマンドをＳＭＰの場合に比してより多く流すことができる（図１３Ｂ参照）。
【０１１９】
なお、ディスカバリ処理及びルーティングテーブル設定処理のうちの少なくとも一つ（或いは、拡張ＳＳＰコマンド或いは他種のＳＳＰコマンドを発行する他の処理）において、拡張ＳＳＰコマンドが通らない場合には、図６のＳ１０３以降の処理が行われても良い（つまり、ＳＭＰコマンドを発行し通るか否かの判断や、診断復旧処理が行われても良い）。
【０１２０】
＜複数種類のキューを利用したコマンド発行制御＞。
【０１２１】
ＲＡＩＤ制御部１２１Ａのコマンド発行部６７２Ａから、ドライブＩ／Ｏコマンド（ＳＳＰコマンド）、拡張ＳＳＰコマンド及びＳＭＰコマンドなどが発行されるが、単純に発行順序通りにＳＡＳ制御部１２３Ａにコマンドを発行すると、ストレージシステム１０１の性能低下が生じるおそれが考えられる。
【０１２２】
その一例を図１４Ａに示す。ＳＡＳ制御部１２３Ａに、コマンドが蓄積されるキュー（以下、コマンドキュー）６０３Ａがある。コマンドキュー６０３Ａには、ＲＡＩＤ制御部１２１Ａから発行された順序でコマンドが蓄積される。この場合、複数のＳＭＰコマンドの発行順序が連続してしまうと、ストレージシステム１０１の性能低下が生じるおそれがある。なぜなら、ＳＭＰコマンドは、一つのＳＡＳ制御部１２３Ａからは同時期に一つしか送信することができず、それ故、連続したＳＭＰコマンドの後続にあるドライブＩ／Ｏコマンドがコマンドキュー６０３Ａからなかなか吐き出されずに残ってしまうためである。
【０１２３】
そこで、本実施形態では、以下の工夫が施されている。
【０１２４】
すなわち、図１４Ｂに示すように、ＲＡＩＤ制御部１２１Ａ内に、二種類のキューが用意される。第一種のキューとして、処理要求キューが備えられる。処理要求キューは、複数個備えられており、各々の処理要求キューは他の処理要求キューと優先度が異なる。一例として、優先度“高”、“中”、“低”に対応した３つの処理要求キュー６０１１Ａ、６０１２Ａ及び６０１３Ａが備えられる。第二種のキューとして、処理均等要求キュー６０２Ａが備えられる。
【０１２５】
コマンド発行部６７２Ａが、コマンドを、処理要求キュー６０１１Ａ〜６０１３Ａと処理均等要求キュー６０２Ａとの４つのキューの中から選択したキューに蓄積する。コマンド発行制御部７４２Ａが、各キュー６０１１Ａ〜６０１３Ａ及び６０２Ａの各々を定期的にチェックする。キューにコマンドが蓄積されていることを見つけた場合に、そのキュー内のコマンド一つをＳＡＳ制御部１２３Ａに出力する。ＳＡＳ制御部１２３Ａのコマンドキュー６０３Ａには、ＲＡＩＤ制御部１２１Ａから受けた順番にコマンドが蓄積される。
【０１２６】
コマンド発行制御の第一の例として、コマンド発行部６７２Ａは、ドライブＩ／Ｏコマンド（ＳＳＰコマンド）を発行する場合には、優先度“高”の処理要求キュー６０１１ＡにドライブＩ／Ｏコマンド（ＳＳＰコマンド）を蓄積し、ＳＭＰコマンドを発行する場合には、ドライブＩ／Ｏコマンドよりも優先度の低い優先度“中”の処理要求キュー６０１２Ａ（又は優先度“低”の処理要求キュー６０１３Ａ）にＳＭＰコマンドを蓄積する。コマンド発行制御部７４２Ａは、優先度“高”の処理要求キュー６０１１Ａに蓄積されているドライブＩ／Ｏコマンドを優先的にＳＡＳ制御部１２３Ａに吐き出す。具体的には、例えば、コマンド発行制御部７４２Ａは、優先度“高”の処理要求キュー６０１１Ａのチェック時間間隔を最も短く、優先度“中”の処理要求キュー６０１２Ａのチェック時間間隔を次に短く、優先度“低”の処理要求キュー６０１３Ａのチェック時間間隔を最も長くし、チェックの結果としてコマンドを見つけた場合には、見つけた一つのコマンドをキューから吐き出させるよう構成されている。このため、優先度が高い処理要求キューほど、コマンドの蓄積が早く発見されてＳＡＳ制御部１２３Ａに吐き出されるようになっている。
【０１２７】
コマンド発行制御の第二の例として、緊急度の高いＳＭＰコマンドは、優先度がドライブＩ／Ｏコマンドと同等である。すなわち、コマンド発行部６７２Ａは、緊急度の高いＳＭＰコマンドを、優先度“高”の処理要求キュー６０１１Ａに蓄積する。緊急度の高いＳＭＰコマンドとしては、障害特定処理で使用されるＳＭＰコマンド（例えば図６のＳ１０３で発行されるＳＭＰコマンド）、及び／又は、ルーティングテーブル１５４Ａの修復のために発行されるＳＭＰコマンド（つまり図８の処理において発行されるＳＭＰコマンド）がある。
【０１２８】
コマンド発行制御の第三の例として、コマンド発行部６７２Ａは、定期的に発行する種類のＳＭＰコマンドを、処理均等要求キュー６０２Ａに蓄積する。コマンド発行制御部７４２Ａは、優先度“高”の処理要求キュー６０１１Ａと同じチェック時間間隔で処理均等要求キュー６０２Ａをチェックする。このため、ドライブＩ／Ｏコマンドが優先度“高”の処理要求キュー６０１１Ａに蓄積された時点とＳＭＰコマンドが処理均等要求キュー６０２Ａに蓄積された時点とが実質的に同じ場合には、そのドライブＩ／ＯコマンドとそのＳＭＰコマンドとが交互にＳＡＳ制御部１２３Ａに吐き出されることになる。
【０１２９】
＜ＢＰ（Broadcast Primitive）のブロードキャスト＞。
【０１３０】
ＳＡＳの規格によれば、コントローラ１１０より下位のデバイスであるＳＡＳエクスパンダ１３１に監視機能をオフロードすることができる。
【０１３１】
例えば図１７に示すように、一方のカスケード構成及び他方のカスケード構成の両方において、３つのＳＡＳエクスパンダ１３１（ＳＡＳエクスパンダ＃１、＃２及び＃３）がカスケード状に接続されており、ＳＡＳエクスパンダ＃２Ａ及び＃２Ｂのファームウェア１４０Ａ及び１４０Ｂが（具体的には、監視制御部６９４Ａ及び６９４Ｂが）、監視対象である監視対象デバイス１４１について状態変化（例えば障害発生）が検知されたとする。この場合、両方のＳＡＳエクスパンダ＃２Ａ及び＃２Ｂが、それぞれ、ＢＰ（ＳＥＳ）を作成してブロードキャストする。これにより、ＢＰ（ＳＥＳ）が、ＳＡＳエクスパンダ＃２Ａ及び＃２Ｂより上位及び下位の両方に、バケツリレー的に、送信される。この結果、コントローラ１１０Ａ及び１１０Ｂが、ＳＡＳエクスパンダ＃２Ａ及び＃２ＢからそれぞれブロードキャストされたＢＰ（ＳＥＳ）を受信する。具体的には、ＳＡＳ制御部１２３Ａ及び１２３Ｂを経由してＲＡＩＤ制御部１２１Ａ及び１２１Ｂが、ＢＰ（ＳＥＳ）を受信する。
【０１３２】
しかし、ＳＡＳエクスパンダ＃２Ａ及び＃２ＢからそれぞれブロードキャストされたＢＰ（ＳＥＳ）がコントローラ１１０Ａ及び１１０Ｂの両方に届かない異常ケースがある。
【０１３３】
第一の異常ケースとして、例えば、図１８Ａに示すケースがある。すなわち、他方のコントローラが無く、一方のＳＡＳエクスパンダ＃２Ａと監視対象デバイス１４１との間に障害が発生したケースである。この場合、図１８Ａに示すように、一方のＳＡＳエクスパンダ＃２Ａでは、監視対象デバイス１４１の状態変化を検知できないため、一方のＳＡＳエクスパンダ＃２Ａからは、ＢＰ（ＳＥＳ）が送信されない。従って、コントローラ１１０Ａには、ＢＰ（ＳＥＳ）は届かない。また、他方のＳＡＳエクスパンダ＃２Ｂからは、ＢＰ（ＳＥＳ）がブロードキャストされても、他方のコントローラは無いため、他方でも、コントローラにＢＰ（ＳＥＳ）が届かない。
【０１３４】
また、第二の異常ケースとして、例えば、図１９Ａに示すケースがある。すなわち、一方のＳＡＳエクスパンダ＃２Ａと監視対象デバイス１４１との間に障害が発生し、且つ、他方のＳＡＳエクスパンダ＃１Ｂと他方のＳＡＳエクスパンダ＃２Ｂとの間に障害が発生したケースである。この場合、図１９Ａに示すように、一方のＳＡＳエクスパンダ＃２Ａでは、監視対象デバイス１４１の状態変化を検知できないため、一方のＳＡＳエクスパンダ＃２Ａからは、ＢＰ（ＳＥＳ）が送信されない。従って、コントローラ１１０Ａには、ＢＰ（ＳＥＳ）は届かない。また、他方のＳＡＳエクスパンダ＃２Ｂからは、ＢＰ（ＳＥＳ）がブロードキャストされるが、その上位のＳＡＳエクスパンダ＃１Ｂとの間に障害が生じているため、上位にはＢＰ（ＳＥＳ）が送信されない。従って、他方のコントローラ１１０Ｂにも、ＢＰ（ＳＥＳ）が届かない。
【０１３５】
そこで、本実施形態では、一方のＳＡＳエクスパンダ１３１Ａと他方のＳＡＳエクスパンダ１３１Ｂとが、ＩＩＣ１６１Ａを介して物理的に接続され（図３参照）、且つ、ＳＡＳエクスパンダ１３１Ａ及び１３１Ｂで実行されるファームウェア１４０Ａ及び１４０Ｂに、ＢＰ生成の指示を授受するためのインタフェースであるＢＰ生成Ｉ／Ｆ６９２Ａ及び６９２Ｂが備えられる（図４Ｂ参照）。
【０１３６】
上述した第一の異常ケースでは、図１８Ｂに示すように、他方のＳＡＳエクスパンダ＃２Ｂで実行されるファームウェア１４０Ｂにおいて、監視制御部６９４Ｂが、ＢＰ生成Ｉ／Ｆ６９２Ｂを通じて、一方のＳＡＳエクスパンダ＃２Ａに、ＢＰ（ＳＥＳ）生成の要求を送信する。一方のＳＡＳエクスパンダ＃２Ａで実行されるファームウェア１４０Ａにおいて、監視制御部６９４Ａが、ＢＰ生成Ｉ／Ｆ６９２Ａを通じて、他方のＳＡＳエクスパンダ＃２ＢからのＢＰ（ＳＥＳ）生成要求を受信し、その要求に応答して、ＢＰ（ＳＥＳ）を作成しブロードキャストする。これにより、第一の異常ケースが生じても、ＢＰ（ＳＥＳ）がコントローラ１１０に届く。
【０１３７】
また、上述した第二の異常ケースでも、第一の異常ケースと同様に、図１９Ｂに示すように、他方のＳＡＳエクスパンダ＃２Ｂから一方のＳＡＳエクスパンダ＃２ＡにＢＰ（ＳＥＳ）生成要求が送信される。これにより、一方のＳＡＳエクスパンダ＃２ＡからＢＰ（ＳＥＳ）が送信され、その結果、第二の異常ケースが生じても、ＢＰ（ＳＥＳ）がコントローラ１１０Ａに届く。
【０１３８】
図２０Ａ及び図２０Ｃを参照して、上記の第一及び第二の異常ケースについて、他方のＳＡＳエクスパンダ＃２Ｂで実行されるファームウェア１４０Ｂ内の監視制御部６９４Ｂが行う処理を説明する。また、図２０Ｂを参照して、一方のＳＡＳエクスパンダ＃２Ａで実行されるファームウェア１４０Ａ内の監視制御部６９４Ａが行う処理を説明する。なお、その説明では、便宜上、ＳＡＳエクスパンダ＃２Ａ、＃２Ｂを例に採るが、図２０Ａ、図２０Ｂ及び図２０Ｃをそれぞれ参照して説明する処理は、他の各ＳＡＳエクスパンダでの各ファームウェア１４０についても適用される。
【０１３９】
図２０Ａに示すように、監視制御部６９４Ｂは、監視対象デバイス１３３Ｂ、１４１を監視する（ポーリングする）。監視制御部６９４Ｂは、状態変化を検知した場合（Ｓ４０１：ＹＥＳ）、ＢＰ（ＳＥＳ）を作成してブロードキャストする（Ｓ４０２）。その後、相手側送信処理（Ｓ４０３）が行われる。すなわち、図２０Ｃに示すように、監視制御部６９４Ｂは、ＢＰ（ＳＥＳ）を生成したか否かを判定し（Ｓ４２１）、ＢＰ（ＳＥＳ）の生成を検知したならば（例えばＳ４０２でＢＰ（ＳＥＳ）を生成したので）、ＢＰ生成Ｉ／Ｆ６９２Ｂを通じて、ＢＰ（ＳＥＳ）生成要求を相手のＳＡＳエクスパンダ＃２Ａに送信する。ＢＰ（ＳＥＳ）生成要求は、ＩＩＣ１６１Ｂを通じて、相手のＳＡＳエクスパンダ＃２Ａに送られる。
【０１４０】
図２０Ｂに示すように、相手のＳＡＳエクスパンダ＃２Ａでは、ファームウェア１４０Ａ内の監視制御部６９４Ａが、例えば何らかの要求の入力に応答して、ＢＰ（ＳＥＳ）生成要求を受信したか否かを判定する（Ｓ４１１）。ＢＰ（ＳＥＳ）生成要求の入力であれば、監視制御部６９４Ａが、ＢＰ（ＳＥＳ）を生成してブロードキャストする（Ｓ４１２）。一方、他種の要求の入力であれば、その要求に応答した通信処理がファームウェア１４０Ａによって実行される（Ｓ４１３）。
【０１４１】
図２１は、ＲＡＩＤ制御部１２１ＡのＢＰ処理部６７４Ａが行うＢＰ処理の流れの一例を示す。
【０１４２】
ＢＰ処理部６７４Ａは、ＢＰを受信したことを契機にＢＰ処理を開始することができる。ＢＰ処理部６７４Ａは、ＢＰ（ＣＨＡＮＧＥ）の受信であるか否かの判定を行う（Ｓ４３１）。ＢＰ（ＣＨＡＮＧＥ）の受信との判定結果になれば、ＢＰ処理部６７４Ａは、ＢＰ（ＣＨＡＮＧＥ）処理を実行する（Ｓ４３２）。ＢＰ（ＣＨＡＮＧＥ）処理として、例えば、図１１Ｂに示したディスカバリ処理を開始することができる。
【０１４３】
Ｓ４３１の判定の結果がＢＰ（ＣＨＡＮＧＥ）の受信ではないであれば、ＢＰ処理部６７４Ａは、ＢＰ（ＳＥＳ）の受信であるか否かの判定を行う（Ｓ４３３）。ＢＰ（ＳＥＳ）の受信との判定結果になれば、ＢＰ処理部６７４Ａは、ＢＰ（ＳＥＳ）処理を実行し（Ｓ４３２）、一方、ＢＰ（ＳＥＳ）の受信ではないとの判定結果になれば、受信したＢＰに応じた処理を実行する（Ｓ４３５）。
【０１４４】
図２２は、ＢＰ処理部６７４Ａが行うＢＰ（ＳＥＳ）処理の流れの一例を示す。
【０１４５】
Ｓ４５１で、ＢＰ処理部６７４Ａが、ターゲットのＳＡＳエクスパンダ１３１ＡからＳＥＳ情報を採取する（Ｓ４５１）。具体的には、例えば、ＢＰ処理部６７４Ａが、コマンド発行部６７２Ａから、ターゲットのＳＡＳエクスパンダ１３１Ａに、ＳＥＳ情報取得のためのＳＳＰコマンドを送信させ、それの応答として、コマンド発行部６７２Ａを通じてＳＥＳ情報を受信する。Ｓ４５２で、ＢＰ処理部６７４Ａが、採取されたＳＥＳ情報から、ターゲットのＳＡＳエクスパンダ１３１Ａで監視対象デバイス１３３Ａ又は１４１の状態変化が検知されたか否かの判定（つまり、監視対象デバイス１３３Ａ又は１４１の状態変化があったか否かの判定）を行う。その判定の結果が肯定的である場合、Ｓ４５３で、ＢＰ処理部６７４Ａは、その採取されたＳＥＳ情報に応じた処理（例えば、障害発生を検知したのであれば、障害発生に対処するための処理）を実行する。
【０１４６】
以上のＳ４５１、Ｓ４５２及びＳ４５３は、基本筐体１０５内のＳＡＳエクスパンダ１３１Ａから最下位のＳＡＳエクスパンダ１３１Ａにかけて、最上位より順次に、実行される。
【０１４７】
以上、本発明の幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、ＲＡＩＤ制御部１２１は、ＳＡＳ制御部１２３、ＳＡＳエクスパンダ１３１及びディスクドライブ１１１のうちの少なくとも一つを定期的に診断することができ、その診断のための状態問合せのためのコマンドをＳＳＰで送信することができる。そのＳＳＰでのコマンド送信のための接続ができない等の場合には、図６のＳ１０３に進むことができる。
【図面の簡単な説明】
【０１４８】
【図１】図１は、本発明の一実施形態に係るストレージシステムの構成例を示す。
【図２】図２Ａは、基本筐体の構成例を示す。図２Ｂは、増設筐体の構成例を示す。
【図３】図３は、ＳＡＳエクスパンダの構成例を示す。
【図４】図４Ａは、ＲＡＩＤ制御部内のプロセッサが実行するコンピュータプログラムを示す。図４Ｂは、ファームウェアの構成例を示す。
【図５】図５Ａは、ＳＭＰでのリソース占有を示す。図５Ｂは、ＳＳＰでのリソース占有を示す。
【図６】図６は、ＳＡＳエクスパンダにＳＳＰコマンドが発行される場合に実行される処理の流れを示す。
【図７】図７は、ディスクドライブにＳＳＰでドライブＩ／Ｏコマンドが発行される場合に実行される処理の流れを示す。
【図８】図８は、診断・復旧処理の流れを示す。
【図９】図９は、ＳＭＰファンクションと拡張ＳＳＰコマンドとの対応関係を示す。
【図１０】図１０Ａは、拡張ＳＳＰコマンド“SSP Discover Extended”の構成例を示す。図１０Ｂは、拡張ＳＳＰコマンド“SSPDiscover Extended”のレスポンスの構成例を示す。
【図１１】図１１Ａは、ＳＭＰコマンド“DISCOVER”を利用したディスカバリ処理の流れの一例を示す。図１１Ｂは、拡張ＳＳＰコマンド“SSPDiscover Extended”を利用したディスカバリ処理の流れの一例を示す。
【図１２】図１２Ａは、ＳＭＰコマンド“Configure RouteInformation”を利用したルーティングテーブル設定処理の流れの一例を示す。図１２Ｂは、拡張ＳＳＰコマンド“SSP Configure RouteInformation Extended”を利用したルーティングテーブル設定処理の流れの一例を示す。
【図１３】図１３Ａは、ＳＭＰコマンドを利用したディスカバリ処理やルーティングテーブル設定処理においてＳＭＰコマンド処理中にリソースが占有されるためドライブＩ／Ｏコマンドを流せる物理リンクが制限されてしまうことを示す。図１３Ｂは、拡張ＳＳＰコマンドを利用したディスカバリ処理やルーティングテーブル設定処理では拡張ＳＳＰコマンド処理中はリソースが解放されているためにドライブＩ／Ｏコマンドを流せる物理リンクが制限されないことを示す。
【図１４】図１４Ａは、ＲＡＩＤ制御部からのコマンド発行順序通りの順番でコマンドが並んだ、ＳＡＳ制御部内のコマンドキューの一例を示す。図１４Ｂは、コマンド発行制御の第一の例の説明図である。
【図１５】図１５は、コマンド発行制御の第二の例の説明図である。
【図１６】図１６は、コマンド発行制御の第三の例の説明図である。
【図１７】図１７は、ＢＰ（ＳＥＳ）がコントローラに届く正常ケースを示す。
【図１８】図１８Ａは、ＢＰ（ＳＥＳ）がコントローラに届かない第一の異常ケースを示す。図１８Ｂは、第一の異常ケースが生じてもＢＰ（ＳＥＳ）がコントローラに届くようにした解決方法の説明図である。
【図１９】図１９Ａは、ＢＰ（ＳＥＳ）がコントローラに届かない第二の異常ケースを示す。図１９Ｂは、第二の異常ケースが生じてもＢＰ（ＳＥＳ）がコントローラに届くようにした解決方法の説明図である。
【図２０】図２０Ａは、ＳＡＳエクスパンダのファームウェアにおける監視制御部が実行する監視処理の流れの一例を示す。図２０Ｂは、ＳＡＳエクスパンダのファームウェアにおける監視制御部が実行する受信側処理の一例を示す。図２０Ｃは、ＳＡＳエクスパンダのファームウェアにおける監視制御部が実行する相手側送信処理の流れの一例を示す。
【図２１】図２１は、ＲＡＩＤ制御部が行うＢＰ処理の流れの一例を示す。
【図２２】図２２は、ＲＡＩＤ制御部が行うＢＰ（ＳＥＳ）処理の流れの一例を示す。
【符号の説明】
【０１４９】
１０１…ストレージシステム  １０５…基本筐体  １０７…増設筐体
【図１】
2008242872.tif 000003
【図２】
2008242872.tif 000004
【図３】
2008242872.tif 000005
【図４】
2008242872.tif 000006
【図５】
2008242872.tif 000007
【図６】
2008242872.tif 000008
【図７】
2008242872.tif 000009
【図８】
2008242872.tif 000010
【図９】
2008242872.tif 000011
【図１０】
2008242872.tif 000012
【図１１】
2008242872.tif 000013
【図１２】
2008242872.tif 000014
【図１３】
2008242872.tif 000015
【図１４】
2008242872.tif 000016
【図１５】
2008242872.tif 000017
【図１６】
2008242872.tif 000018
【図１７】
2008242872.tif 000019
【図１８】
2008242872.tif 000020
【図１９】
2008242872.tif 000021
【図２０】
2008242872.tif 000022
【図２１】
2008242872.tif 000023
【図２２】
2008242872.tif 000024