(57)【要約】【課題】ディスクアレイコントローラ内で故障が発生した場合に、故障箇所を簡易に特定する。【解決手段】ホストコンピュータ４とディスクとの間で転送されるデータを記憶するキャッシュメモリ４１１、４２１、４３１、４４１と、ホストコンピュータとキャッシュメモリとの間のデータ転送を制御するホストディレクタ１１、１２と、ディスクとキャッシュメモリとの間のデータ転送を制御するディスクディレクタ２１、２２と、ホストディレクタまたはディスクディレクタとキャッシュメモリとの間の通信経路を切り替えるローカルスイッチ３１、３２と、一の通信経路でのデータ転送において異常が発生した場合に、一の通信経路とは異なる他の通信経路によりデータを転送し、この転送結果に基づいて一の通信経路上の故障区間を特定する故障特定部と、を備える。【選択図】図１
2012190151.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置と複数の記憶装置との間のデータ転送を制御するディスクアレイコントローラであって、
前記ホスト装置と前記記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、
前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第１制御部と、
前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第２制御部と、
前記第１制御部または前記第２制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、
一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定部と、を備え、
前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、
前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である、
ことを特徴とするディスクアレイコントローラ。
【請求項２】
前記故障特定部は、少なくともいずれか一つの前記他の前記通信経路において前記データ転送が失敗した場合に、前記他の前記通信経路のうち前記データ転送に失敗した全ての前記他の前記通信経路のみが通過する前記分割区間を、前記故障区間であると特定する、
ことを特徴とする請求項１記載のディスクアレイコントローラ。
【請求項３】
前記故障特定部は、全ての前記他の前記通信経路において前記データ転送が成功した場合に、全ての前記他の前記通信経路が非通過となる前記分割区間を、前記故障区間であると特定する、
ことを特徴とする請求項１または２記載のディスクアレイコントローラ。
【請求項４】
前記他の前記通信経路の総数は、前記分割区間の総数をＳとした場合に、以下の式を満たす自然数のうち、最小の自然数である、
【数１】
2012190151.tif 000005
ことを特徴とする請求項１〜３のいずれか１項に記載のディスクアレイコントローラ。
【請求項５】
請求項１〜４のいずれか１項に記載のディスクアレイコントローラを有するディスクアレイ装置。
【請求項６】
ホスト装置と複数の記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第１制御部と、前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第２制御部と、前記第１制御部または前記第２制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、を有し、前記ホスト装置と前記記憶装置との間のデータ転送を制御するディスクアレイコントローラにおける故障特定方法であって、
一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定ステップを含み、
前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、
前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である、
ことを特徴とする故障特定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイコントローラ、ディスクアレイ装置および故障特定方法に関する。
【背景技術】
【０００２】
下記特許文献１には、複数の記憶装置と、これら複数の記憶装置を制御するディスクアレイコントローラとを有するディスクアレイ装置が開示されている。このディスクアレイ装置では、記憶装置へのアクセスで異常が検出された場合に、故障箇所が、記憶装置とディスクアレイコントローラとを接続する伝送経路、または記憶装置のいずれであるのかを特定している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２０６７６６号公報
【０００４】
ところで、上記特許文献１では、ディスクアレイコントローラ内で故障が発生した場合には、故障箇所を特定することができない。
【０００５】
ディスクアレイコントローラ内には、複数のキャッシュメモリが備えられており、ディスクアレイコントローラは、キャッシュメモリを介して、ホスト装置と記憶装置との間のデータ転送を実行する。このキャッシュメモリには、まだ記憶装置に書き込まれていないデータ（以下、「ダーティデータ」という。）が記憶されているため、ディスクアレイコントローラ内で故障が発生した場合には、速やかにディスクアレイコントローラ内の動作を変更する必要がある。したがって、ディスクアレイコントローラ内の故障箇所の検出に時間を要してしまうと、例えばデータ転送のリトライが頻発して処理性能が低下することや、ダーティデータが失われて信頼性が低下する要因となる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上述した課題を解決するためになされたものであり、ディスクアレイコントローラ内で故障が発生した場合に、故障箇所を簡易に特定することができるディスクアレイコントローラ、ディスクアレイ装置および故障特定方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のディスクアレイコントローラは、ホスト装置と複数の記憶装置との間のデータ転送を制御するディスクアレイコントローラであって、前記ホスト装置と前記記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第１制御部と、前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第２制御部と、前記第１制御部または前記第２制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定部と、を備え、前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である。
【０００８】
本発明のディスクアレイ装置は、上記ディスクアレイコントローラを有する。
【０００９】
本発明の故障特定方法は、ホスト装置と複数の記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第１制御部と、前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第２制御部と、前記第１制御部または前記第２制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、を有し、前記ホスト装置と前記記憶装置との間のデータ転送を制御するディスクアレイコントローラにおける故障特定方法であって、一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定ステップを含み、前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である。
【発明の効果】
【００１０】
本発明によれば、ディスクアレイコントローラ内で故障が発生した場合に、故障箇所を簡易に特定することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態におけるディスクアレイ装置の構成を例示するブロック図である。
【図２】データリード時の経路を例示する図である。
【図３】図２に示す経路Ｒ１を模式化した図である。
【図４】図２に示す経路Ｒ２および経路Ｒ３におけるデータ転送の成功／失敗の組み合わせと故障区間との対応関係を例示する図である。
【図５】データライト時の経路を例示する図である。
【図６】図５に示す経路Ｒ４を模式化した図である。
【図７】図５に示す経路Ｒ５および経路Ｒ６におけるデータ転送の成功／失敗の組み合わせと故障区間との対応関係を例示する図である。
【図８】４つの代替経路による通過／非通過の組み合わせを１６の分割区間に割り当てた状態を例示する図である。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して、本発明に係るディスクアレイコントローラ、ディスクアレイ装置および故障特定方法の好適な実施形態について説明する。
【００１３】
まず、図１を参照して、実施形態におけるディスクアレイ装置の構成について説明する。図１に示すように、ディスクアレイ装置１は、ディスクアレイコントローラ２とディスクエンクロージャ３とを有する。ディスクエンクロージャ３は、複数のハードディスク（記憶部。以下、「ディスク」という。）を有し、これらのディスクによりＲＡＩＤ（Redundant Arrays of Inexpensive Disks）が構成される。
【００１４】
ディスクアレイコントローラ２は、ホストディレクタ１１、１２と、ディスクディレクタ２１、２２と、ローカルスイッチ３１、３２と、キャッシュモジュール４１〜４４とを有する。ディスクアレイコントローラ２に備えるホストディレクタ、ディスクディレクタおよびキャッシュモジュールの各枚数は、これに限定されず、より多くの枚数を備えてもよい。
【００１５】
ホストディレクタ１１は、ホストＩ／Ｆ（Interface）１１１、ＣＰＵ（Central Processing Unit）１１２、スイッチ１１３、およびブリッジ１１４、１１５を含む。ここでは、ホストディレクタ１１について説明するが、ホストディレクタ１２も同様である。
【００１６】
ホストＩ／Ｆ１１１は、ホストコンピュータ４と接続するためのインターフェースである。ホストＩ／Ｆ１１１としては、例えば、SCSI(Small Computer System Interface)や、iSCSI(Internet SCSI)、SAS（Serial Attached SCSI）、FibreChannel、InfiniBand等の汎用インターフェース、または専用インターフェースを用いることができる。
【００１７】
ＣＰＵ１１２１２は、ホストディレクタ１１の各モジュールを統制するプロセッサである。例えば、ＣＰＵ１１２１２は、ホストコンピュータ４やキャッシュモジュール４１〜４４との間で行うデータ転送を制御する。また、ＣＰＵ１１２１２は、後述する故障箇所を特定するために必要なソフトウェアを実行する。
【００１８】
スイッチ１１３は、ホストＩ／Ｆ１１１、ＣＰＵ１１２１２、およびブリッジ１１４、１１５を相互に接続する機器である。スイッチ１１３のインターフェースとしては、例えば、PCI（Peripheral Component Interconnect）や、PCI Express、PCI-X、SAS、FibreChannel、InfiniBand等の汎用インターフェース、または専用のインターフェースを用いることができる。
【００１９】
ブリッジ１１４、１１５は、スイッチ１１３とローカルスイッチ３１、３２とを接続するための機器である。ブリッジ１１４、１１５のインターフェースとしては、例えば、PCI Expressを用いることができる。PCI Expressを用いた場合には、各Root Complex間を接続するためのNon Transparent Bridgeとなる。なお、ブリッジ１１４、１１５は、スイッチ１１３や、スイッチ３１２、３２３に内蔵されていてもよい。また、ブリッジ１１４、１１５は、非透過にする必要が無ければ省略してもよい。
【００２０】
ディスクディレクタ２１は、ディスクＩ／Ｆ２１１、ＣＰＵ２１２１２、スイッチ２１３、およびブリッジ２１４、２１５を含む。ここでは、ディスクディレクタ２１について説明するが、ディスクディレクタ２２も同様である。
【００２１】
ディスクＩ／Ｆ２１１は、ディスクエンクロージャ３と接続するためのインターフェースである。ディスクＩ／Ｆ２１１としては、例えば、SCSIや、iSCSI、SAS、FibreChannel、InfiniBand、SATA（Serial Advanced Technology Attachment）等の汎用インターフェース、または専用インターフェースを用いることができる。
【００２２】
ＣＰＵ２１２１２は、ディスクディレクタ２１の各モジュールを統制するプロセッサである。例えば、ＣＰＵ２１２１２は、ディスクエンクロージャ３やキャッシュモジュール４１〜４４との間で行うデータ転送を制御する。また、ＣＰＵ２１２１２は、後述する故障箇所を特定するために必要なソフトウェアを実行する。
【００２３】
スイッチ２１３およびブリッジ２１４、２１５は、上述したスイッチ１１３およびブリッジ１１４、１１５と同様であるため、その説明を省略する。
【００２４】
ローカルスイッチ３１は、ＣＰＵ１２２１１、およびスイッチ３１２、３１３を含む。ここでは、ローカルスイッチ３１について説明するが、ローカルスイッチ３２も同様である。
【００２５】
ＣＰＵ１２２１１は、ディスクアレイ装置１全体の状態を監視し、監視状態に応じてスイッチ３１２、３１３の設定を変更する等して、ホストディレクタ１１、１２やディスクディレクタ２１、２２と、キャッシュモジュール４１〜４４との間で行われるデータ転送に必要なルーティングを制御する。
【００２６】
スイッチ３１２、３１３は、ＣＰＵ１２２１１や、ホストディレクタ１１、１２、ディスクディレクタ２１、２２、キャッシュモジュール４１〜４４とそれぞれ接続するための機器である。スイッチ３１２、３１３のインターフェースとしては、例えば、PCI、PCI Express、PCI-X、SAS、FibreChannel、InfiniBand等の汎用インターフェース、または専用のインターフェースを用いることができる。インターフェースとしてPCI Expressを用いた場合には、Non Transparent Bridgeの機能を内蔵してもよい。
【００２７】
キャッシュモジュール４１は、キャッシュメモリ４１１、ＣＰＵ４１２、スイッチ４１３、およびブリッジ４１４、４１５を含む。ここでは、キャッシュモジュール４１について説明するが、キャッシュモジュール４２〜４４も同様である。
【００２８】
キャッシュメモリ４１１は、ホストコンピュータ４から読み書きされるデータを一時的にキャッシュするためのメモリである。キャッシュメモリ４１１は、ディスクエンクロージャ３内のディスクよりも十分高速なアクセスレイテンシおよび帯域幅を有するメモリ素子であれば、どのようなメモリ素子であってもよい。キャッシュメモリ４１１としては、例えば、DRAM（Dynamic Random Access Memory）、SRAM（Static RAM）、Flash Memory、FeRAM（Ferroelectric RAM）、PRAM（Phase Change RAM）、MRAM（Magnetoresistive RAM）等を用いることができる。キャッシュメモリ４１１は、SCSIや、SAS、FibreChannel、InfiniBand等の汎用インターフェース、または高速な専用インターフェースを用いてスイッチ４１３と接続する。なお、キャッシュメモリ４１１を、例えばDDR（Double Data Rate）-SDRAMインターフェース等でＣＰＵ４１２と直結してもよい。
【００２９】
キャッシュモジュール４１とキャッシュモジュール４３、およびキャッシュモジュール４２とキャッシュモジュール４４は、それぞれ冗長ペアであり、故障時を除いて原則として同一のデータを保持する。
【００３０】
ＣＰＵ４１２は、キャッシュモジュール４１の各モジュールを統制するプロセッサである。例えば、ＣＰＵ４１２は、ホストディレクタ１１、１２やディスクディレクタ２１、２２との間で行われるデータ転送を制御する。また、ＣＰＵ４１２は、キャッシュメモリ４１１内のキャッシュデータに関する情報を管理し、キャッシュデータの再配置や、不要になったキャッシュデータの削除、ディスクエンクロージャ３への書き出し、他のキャッシュモジュール４２〜４４のキャッシュデータに関する管理情報と同期をとる、等の各種処理を実行する。
【００３１】
スイッチ４１３、およびブリッジ４１４、４１５は、上述したスイッチ１１３およびブリッジ１１４、１１５と同様であるため、その説明を省略する。
【００３２】
次に、図１を参照して本実施形態におけるディスクアレイ装置１の各種の動作について説明する。
【００３３】
まず、ホストコンピュータ４から受信したデータをディスクエンクロージャ３内のディスクに書き込む際の動作について説明する。この動作では、ホストコンピュータ４からホストディレクタ１１にライトデータが送信される場合について説明するが、ホストディレクタ１２にライトデータが送信される場合についても同様である。
【００３４】
最初に、ホストコンピュータ４からホストディレクタ１１にライトデータが送信されると、ホストディレクタ１１は、ローカルスイッチ３１、３２を介してキャッシュモジュール４１およびキャッシュモジュール４３に同じライトデータをキャッシュさせる。なお、キャッシュモジュール４２およびキャッシュモジュール４４に同じライトデータをキャッシュさせることとしてもよい。このライトデータは、まだディスクに書き込まれていないため、ダーティデータとなる。
【００３５】
続いて、ディスクディレクタ２１またはディスクディレクタ２２は、キャッシュモジュール４１〜４４内にダーティデータが存在する場合に、キャッシュメモリ４１１、４２１、４３１、４４１の空き状況やディスクエンクロージャ３内のディスクの負荷状況等を勘案し、適切なタイミングでディスクエンクロージャ３内のディスクにダーティデータを書き込む。
【００３６】
ディスクへの書き込みが完了すると、キャッシュモジュール４１〜４４内のダーティデータは、クリーンなデータ(以下、「クリーンデータ」という。)として取り扱われる。クリーンデータは、リードキャッシュとして用いてもよいし、キャッシュメモリ４１１、４２１、４３１、４４１の空き容量が少ない場合には削除してもよい。なお、参照される頻度が他よりも低いリードキャッシュは、キャッシュメモリ４１１、４２１、４３１、４４１から順次削除していく。
【００３７】
次に、ホストコンピュータ４から要求されたデータをディスクエンクロージャ３内のディスクから読み出してホストコンピュータ４に送信する際の動作について説明する。
【００３８】
最初に、ホストコンピュータ４からディスクアレイ装置１にデータのリード要求が送信されると、ホストディレクタ１１またはホストディレクタ１２は、そのリード要求を受け付ける。ホストディレクタ１１またはホストディレクタ１２は、キャッシュモジュール４１およびキャッシュモジュール４３にリード要求情報を登録する。なお、キャッシュモジュール４２およびキャッシュモジュール４４にリード要求情報を登録してもよい。
【００３９】
続いて、ディスクディレクタ２１またはディスクディレクタ２２は、キャッシュモジュール４１〜４４内に未完了のリード要求情報が存在する場合に、ディスクエンクロージャ３内のディスクからリード要求に対応するデータを読み出し、リード要求情報を登録しているキャッシュモジュール４１およびキャッシュモジュール４３に読み出したデータをキャッシュさせる。
【００４０】
続いて、リード要求を受け付けたホストディレクタ１１またはホストディレクタ１２は、キャッシュモジュール４１またはキャッシュモジュール４３からリード要求に対応するデータを読み出し、ホストコンピュータ４に送信する。
【００４１】
キャッシュモジュール４１およびキャッシュモジュール４３にキャッシュされたデータは、リードキャッシュとして用いてもよいし、キャッシュメモリ４１１、４２１、４３１、４４１の空き容量が少ない場合には削除してもよい。
【００４２】
このように、ディスクアレイコントローラ２では、ホストディレクタ１１、１２とディスクディレクタ２１、２２は、それぞれキャッシュモジュール４１〜４４との間でデータのやり取りを行う。ホストディレクタ１１、１２とディスクディレクタ２１、２２との間では、基本的にデータをやり取りしない。
【００４３】
次に、ディスクアレイコントローラ２のモジュール間の経路で故障が発生した場合の動作について説明する。
【００４４】
例えば、正常時の経路（ブリッジ１１４−スイッチ３１２−ブリッジ４１４）で通信が不能になった場合に、ホストディレクタ１１は、代替経路（ブリッジ１１５−スイッチ３２３−スイッチ３２２−ブリッジ４１５）を使用する。
【００４５】
ところが、故障箇所がホストディレクタ１１のスイッチ１１３、またはキャッシュモジュール４１のスイッチ４１３、ＣＰＵ４１２およびキャッシュメモリ４１１である場合には、正常時の経路および代替経路は共に通信が不能となる。
【００４６】
ここで、正常時には、ホストディレクタ１１およびホストディレクタ１２の両方を用いてホストコンピュータとの間のデータの読み書きを行うところ、ホストディレクタ１１のスイッチ１１３で故障が発生した場合には、ホストディレクタ１２を用いてホストコンピュータとの間のデータの読み書きを行うように、ホストコンピュータ４からのリード／ライト処理を変更する必要がある。
【００４７】
一方、キャッシュモジュール４１のスイッチ４１３、ＣＰＵ４１２およびキャッシュメモリ４１１で故障が発生した場合には、キャッシュモジュール４１を縮退させ、残りのキャッシュモジュール４２〜４４を使用して、ダーティデータごとに、ダーティデータの冗長制御を変更する必要がある。具体的に説明すると、正常時には、キャッシュモジュール４１とキャッシュモジュール４３とで冗長させ、キャッシュモジュール４１とキャッシュモジュール４３とで冗長させるところ、上記故障が発生した場合には、第１ダーティデータをキャッシュモジュール４２とキャッシュモジュール４３とで冗長させ、第２ダーティデータをキャッシュモジュール４３とキャッシュモジュール４４とで冗長させ、第３ダーティデータをキャッシュモジュール４２とキャッシュモジュール４４とで冗長させるように、ダーティデータの冗長制御を変更する。
【００４８】
このように、故障が発生した場合には、故障箇所に応じてディスクアレイコントローラ２内の動作を変更する必要があるため、ディスクアレイコントローラ２内の故障箇所をなるべく短時間で検出することに意義がある。本発明は、故障箇所を大まかに特定することで、故障発生後の対応をより迅速に行うことを可能としたものである。以下にその仕組みを説明する。
【００４９】
まず、図２を用いて、データリード時に故障箇所を特定する手順について説明する。ここでは、ホストディレクタ１１がキャッシュモジュール４１に対して正常時の経路である経路Ｒ１を用いてデータ転送を要求し、失敗した場合について説明する。
【００５０】
経路Ｒ１でのデータ転送が失敗した場合に、ホストディレクタ１１は、キャッシュモジュール４１に対してデータ転送を要求し、代替経路である経路Ｒ２を用いてデータ転送を試みる。また、ホストディレクタ１１は、キャッシュモジュール４３に対してデータ転送を要求し、代替経路である経路Ｒ３を用いてデータ転送を試みる。これは、転送対象のデータがダーティデータである場合には、キャッシュモジュール４１と冗長ペアであるキャッシュモジュール４３にも同じデータがあるためである。
【００５１】
代替経路である経路Ｒ２と経路Ｒ３での転送が成功したか失敗したかを検出することで、故障箇所を大まかに特定することができる。以下に、その特定手順について具体的に説明する。
【００５２】
図３は、経路Ｒ１を模式化した図である。図３に示すように、経路Ｒ１を、分岐が発生する機器（ポイント）で区切ると、４つの区間１〜４に分割することができる。この場合、経路Ｒ２は、区間１および区間４を通過するが、区間２および区間３は通過しない。一方、経路Ｒ３は、区間１および区間２を通過するが、区間３および区間４は通過しない。なお、同時に２箇所以上で故障が発生する可能性が極めて低いことから、本実施形態では故障箇所が１箇所であることを前提にする。
【００５３】
最初に、経路Ｒ２と経路Ｒ３の双方が成功した場合には、少なくとも経路Ｒ２か経路Ｒ３のいずれか一方が通過する区間１、区間２および区間４は正常であると考えられるため、残りの区間３が故障していると判断できる。次に、経路Ｒ２が成功して経路Ｒ３が失敗した場合には、成功した経路Ｒ２が通過する区間１と区間４は共に正常であり、残りの区間２および区間３のうち、失敗した経路Ｒ３が通過する区間２が故障であると判断できる。次に、経路Ｒ２が失敗して経路Ｒ３が成功した場合には、成功した経路Ｒ３が通過する区間１と区間２は共に正常であり、残りの区間３および区間４のうち、失敗した経路Ｒ２が通過する区間４が故障であると判断できる。最後に、経路Ｒ２と経路Ｒ３の双方が失敗した場合には、経路Ｒ２と経路Ｒ３の双方が通過する区間１が故障であると判断できる。
【００５４】
この結果を、図４に示す。図４は、経路Ｒ２および経路Ｒ３におけるデータ転送の成功／失敗の組み合わせと故障区間との対応関係を示す。この対応関係は、重複することなく、１対１に対応している。したがって、経路Ｒ２および経路Ｒ３におけるデータ転送の成功／失敗の組み合わせによって、故障区間を特定することができる。つまり、経路Ｒ２および経路Ｒ３の転送結果に基づいて、経路Ｒ１を分割して形成した区間１〜４の中から故障区間を特定することができる。
【００５５】
次に、図５を用いて、データライト時に故障箇所を特定する手順について説明する。ここでは、ホストディレクタ１１がキャッシュモジュール４１に対して正常時の経路である経路Ｒ４を用いてライトデータを転送しようとし、失敗した場合について説明する。なお、ライトデータはディスクに書き込まれる前はダーティデータであるため、ホストディレクタ１１は、キャッシュモジュール４１と冗長ペアであるキャッシュモジュール４３に対しても他の経路（ＣＰＵ１１２１２−スイッチ１１３−ブリッジ１１５−スイッチ３２３−ブリッジ４３５−スイッチ４３３−ＣＰＵ４３２）を用いてライトデータを転送する。
【００５６】
経路Ｒ４でのデータ転送が失敗した場合に、ホストディレクタ１１は、キャッシュモジュール４１に対し、代替経路である経路Ｒ５を用いてライトデータの転送を試みる。また、ホストディレクタ１１は、キャッシュモジュール４２に対し、代替経路である経路Ｒ６を用いてライトデータの転送を試みる。この場合、キャッシュモジュール４２の冗長ペアであるキャッシュモジュール４４にライトデータの転送を試みることとしてもよい。キャッシュモジュール４２またはキャッシュモジュール４４のいずれに転送するのかは、キャッシュメモリ４２１およびキャッシュメモリ４４１の空き容量や、キャッシュモジュール４２およびキャッシュモジュール４４の負荷状況等に基づいて決定することができる。なお、キャッシュモジュール４４にライトデータの転送を試みる際の経路は、“ＣＰＵ１１２１２−スイッチ１１３−ブリッジ１１４−スイッチ３１２−スイッチ３１３−ブリッジ４４４−スイッチ４４３−ＣＰＵ４４２”となる。
【００５７】
代替経路である経路Ｒ５と経路Ｒ６での転送が成功したか失敗したかを検出することで、故障箇所を大まかに特定することができる。以下に、その特定手順について具体的に説明する。
【００５８】
図６は、経路Ｒ４を模式化した図である。図６に示すように、経路Ｒ４を、分岐が発生する機器（ポイント）で区切ると、４つの区間１〜４に分割することができる。この場合、経路Ｒ５は、区間１および区間４を通過するが、区間２および区間３は通過しない。一方、経路Ｒ６は、区間１および区間２を通過するが、区間３および区間４は通過しない。
【００５９】
最初に、経路Ｒ５と経路Ｒ６の双方が成功した場合には、少なくとも経路Ｒ５か経路Ｒ６のいずれか一方が通過する区間１、区間２および区間４は正常であると考えられるため、残りの区間３が故障していると判断できる。次に、経路Ｒ５が成功して経路Ｒ６が失敗した場合には、成功した経路Ｒ５が通過する区間１と区間４は共に正常であり、残りの区間２および区間３のうち、失敗した経路Ｒ６が通過する区間２が故障であると判断できる。次に、経路Ｒ５が失敗して経路Ｒ６が成功した場合には、成功した経路Ｒ６が通過する区間１と区間２は共に正常であり、残りの区間３および区間４のうち、失敗した経路Ｒ５が通過する区間４が故障であると判断できる。最後に、経路Ｒ５と経路Ｒ６の双方が失敗した場合には、経路Ｒ５と経路Ｒ６の双方が通過する区間１が故障であると判断できる。
【００６０】
この結果を、図７に示す。図７は、経路Ｒ５および経路Ｒ６におけるデータ転送の成功／失敗の組み合わせと故障区間との対応関係を示す。この対応関係は、重複することなく、１対１に対応している。したがって、経路Ｒ５および経路Ｒ６におけるデータ転送の成功／失敗の組み合わせによって、故障区間を特定することができる。つまり、経路Ｒ５および経路Ｒ５の転送結果に基づいて、経路Ｒ１を分割して形成した区間１〜４の中から故障区間を特定することができる。
【００６１】
上述した故障箇所を特定する手順を実行すると、データの転送を目的とせず、経路Ｒ１の故障箇所を特定する目的のみで行うデータ転送の回数を１回以内に抑えることが可能となる。なお、故障箇所を特定する手順は、ホストディレクタ１１内に図４や図７に示すテーブルを予め登録しておき、このテーブルを参照しながら実行することで実現できる。
【００６２】
上述した故障箇所を特定する手順によって、例えば区間１が故障箇所として特定された場合には、ホストディレクタ１１が故障していることとなる。この場合には、ホストコンピュータ４によるデータ転送の要求先をホストディレクタ１２に振り替える必要がある。例えば、一般的な冗長構成を有するホストコンピュータであれば、ホストディレクタ１１とホストコンピュータ４との間の通信経路を閉塞することで、ホストコンピュータ４側で冗長経路であるホストディレクタ１２側の通信経路に切り替える処理を実行させる。処理が完了していないデータ転送が存在する場合には、ホストディレクタ１２側でリトライを行う。
【００６３】
また、上述した故障箇所を特定する手順によって、例えば区間４が故障箇所として特定された場合には、キャッシュモジュール４１が故障していることになる。この場合には、キャッシュモジュール４１を縮退させ、残りのキャッシュモジュール４２〜４４を使用して、ダーティデータごとに、ダーティデータの冗長制御を変更する必要がある。
【００６４】
上述した具体例では、ホストディレクタ１１とキャッシュモジュール４１との間でデータ転送が失敗した場合について説明したが、データ転送が失敗する箇所は、これに限定されない。例えば、ホストディレクタ１１とキャッシュモジュール４２〜４４との間や、ホストディレクタ１２とキャッシュモジュール４１〜４４との間でデータ転送が失敗した場合であっても、上述した具体例と同様にして故障箇所を特定することができる。
【００６５】
また、ディスクディレクタ２１とキャッシュモジュール４１〜４４との間や、ディスクディレクタ２２とキャッシュモジュール４１〜４４との間、一つのキャッシュモジュールと他の三つのキャッシュモジュールとの間で行われるデータ転送は、上述したホストディレクタ１１とキャッシュモジュール４１との間で行われるデータ転送と比較して、転送方法の一部に異なる部分があるものの、故障箇所を特定する手順については、上述した具体例と同様に行うことができる。
【００６６】
また、本実施形態のディスクアレイコントローラ２では、ディスクエンクロージャ３内のディスクとディスクディレクタ２１、２２との間ではデータ転送を行っていないが、仮にこの間でデータ転送を行う場合であっても、上述した具体例と同様にして故障箇所を特定することができる。
【００６７】
上述した具体例では、経路を４つの区間に分割する場合を用いて説明しているが、経路を分割する区間は４つに限定されず、任意に設定することができる。区間を任意に設定する場合には、設定する分割区間数に応じて代替経路数を決定する。具体的に、代替経路数は、設定する分割区間数をＳとした場合に、以下の式を満たす自然数のうち、最小の自然数を用いる。
【数１】
2012190151.tif 000003
【００６８】
つまり、例えば、分割区間数が１〜２区間である場合には、代替経路数が１となり、分割区間数が３〜４区間である場合には、代替経路数が２となり、分割区間数が５〜８区間である場合には、代替経路数が３となり、分割区間数が９〜１６区間である場合には、代替経路数が４となる。これにより、各代替経路が各分割区間を通過するか否かにより表す組み合わせの内容を各分割区間に割り当てる際に、各分割区間の間でその内容を重複させることなく割り当てることができる。
【００６９】
具体的には、例えば、分割区間数Ｓが１６である場合には、上記式から、代替経路数は４となる。４つの代替経路による通過／非通過の組み合わせパターンは、全部で１６パターンとなる。したがって、この１６のパターンを、１６の分割区間に割り当てることで、各分割区間の間で組み合わせの内容を重複させることなく割り当てることができる。
【００７０】
図８に、４つの代替経路による通過／非通過の組み合わせを、１６の分割区間に割り当てた状態を例示する。図８は、正常時の経路Ｒを１６区間に分割し、４つの代替経路Ｒａ〜Ｒｄによる通過／非通過の組み合わせ（１６パターン）を、各区間に重複することなく割り当てた状態を示している。
【００７１】
このように、本実施形態における故障箇所を特定する手順は、正常時の経路を複数の区間に分割し、この分割区間に応じて決定可能な代替経路の通過／非通過の組み合わせに基づいて、故障箇所を特定することができる。したがって、この故障箇所を特定する手順は、ディスクアレイ装置に限らず、より広範なネットワークにおける故障箇所を特定する場合にも適用することができる。
【００７２】
また、上述した実施形態におけるディスクアレイ装置によると、代替経路でのデータ転送の結果（成功／失敗）を故障箇所の特定に使用するため、故障箇所の特定に必要な手順を減らすことができる。これにより、ディスクアレイ装置が故障箇所を切り離す縮退動作に移行するまでの性能や冗長性の低下を抑制することができる。
【００７３】
ここで、本実施形態では、ディスクアレイコントローラ２内の各モジュールが全て正常である場合、ホストディレクタとキャッシュモジュールとの間、およびディスクディレクタとキャッシュモジュールとの間のデータ転送の経路は以下の経路となる。
【００７４】
ホストディレクタ１１-キャッシュモジュール４１間：ＣＰＵ１１２-スイッチ１１３-ブリッジ１１４-スイッチ３１２ -ブリッジ４１４ -スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
ホストディレクタ１１-キャッシュモジュール４２間：ＣＰＵ１１２-スイッチ１１３-ブリッジ１１４-スイッチ３１２ -ブリッジ４２４-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
ホストディレクタ１１-キャッシュモジュール４３間：ＣＰＵ１１２-スイッチ１１３-ブリッジ１１５-スイッチ３２３-ブリッジ４３５-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
ホストディレクタ１１-キャッシュモジュール４４間：ＣＰＵ１１２-スイッチ１１３-ブリッジ１１５-スイッチ３２３-ブリッジ４４５-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
【００７５】
ホストディレクタ１２-キャッシュモジュール４１間：ＣＰＵ１２２-スイッチ１２３-ブリッジ１２５-スイッチ３２２-ブリッジ４１５-スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
ホストディレクタ１２-キャッシュモジュール４２間：ＣＰＵ１２２-スイッチ１２３-ブリッジ１２５-スイッチ３２２-ブリッジ４２５-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
ホストディレクタ１２-キャッシュモジュール４３間：ＣＰＵ１２２-スイッチ１２３-ブリッジ１２４-スイッチ３１３-ブリッジ４３４-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
ホストディレクタ１２-キャッシュモジュール４４間：ＣＰＵ１２２-スイッチ１２３-ブリッジ１２４-スイッチ３１３-ブリッジ４４４-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
【００７６】
ディスクディレクタ２１-キャッシュモジュール４１間：ＣＰＵ２１２-スイッチ２１３-ブリッジ２１４-スイッチ３１２ -ブリッジ４１４ -スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
ディスクディレクタ２１-キャッシュモジュール４２間：ＣＰＵ２１２-スイッチ２１３-ブリッジ２１４-スイッチ３１２ -ブリッジ４２４-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
ディスクディレクタ２１-キャッシュモジュール４３間：ＣＰＵ２１２-スイッチ２１３-ブリッジ２１５-スイッチ３２３-ブリッジ４３５-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
ディスクディレクタ２１-キャッシュモジュール４４間：ＣＰＵ２１２-スイッチ２１３-ブリッジ２１５-スイッチ３２３-ブリッジ４４５-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
【００７７】
ディスクディレクタ２２-キャッシュモジュール４１間：ＣＰＵ２２２-スイッチ２２３-ブリッジ２２５-スイッチ３２２-ブリッジ４１５-スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
ディスクディレクタ２２-キャッシュモジュール４２間：ＣＰＵ２２２-スイッチ２２３-ブリッジ２２５-スイッチ３２２-ブリッジ４２５-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
ディスクディレクタ２２-キャッシュモジュール４３間：ＣＰＵ２２２-スイッチ２２３-ブリッジ２２４-スイッチ３１３-ブリッジ４３４-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
ディスクディレクタ２２-キャッシュモジュール４４間：ＣＰＵ２２２-スイッチ２２３-ブリッジ２２４-スイッチ３１３-ブリッジ４４４-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
【００７８】
上記の各経路で異常が検出された場合には、それぞれ以下で説明する代替経路を用いて故障箇所を特定することができる。
【００７９】
ホストディレクタ１１-キャッシュモジュール４１間で異常が検出された場合：下記の経路111と、経路112、経路113および経路114のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【００８０】
経路111 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１５-スイッチ３２３-スイッチ３２２-ブリッジ４１５-スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路112 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１４-スイッチ３１２ -ブリッジ４２４-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路113 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１４-スイッチ３１２ -スイッチ３１３-ブリッジ４３４-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路114 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１４-スイッチ３１２ -スイッチ３１３-ブリッジ４４４-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
【００８１】
ホストディレクタ１１-キャッシュモジュール４２間で異常が検出された場合：下記の経路121と、経路122、経路123および経路124のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【００８２】
経路121 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１５-スイッチ３２３-スイッチ３２２-ブリッジ４２５-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路122 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１４-スイッチ３１２ -ブリッジ４１４ -スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路123 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１４-スイッチ３１２ -スイッチ３１３-ブリッジ４４４-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路124 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１４-スイッチ３１２ -スイッチ３１３-ブリッジ４３４-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
【００８３】
ホストディレクタ１１-キャッシュモジュール４３間で異常が検出された場合：下記の経路131と、経路132、経路133および経路134のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【００８４】
経路131 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１４-スイッチ３１２ -スイッチ３１３-ブリッジ４３４-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路132 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１５-スイッチ３２３-ブリッジ４４５-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路133 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１５-スイッチ３２３-スイッチ３２２-ブリッジ４１５-スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路134 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１５-スイッチ３２３-スイッチ３２２-ブリッジ４２５-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
【００８５】
ホストディレクタ１１-キャッシュモジュール４４間で異常が検出された場合：下記の経路141と、経路142、経路143および経路144のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【００８６】
経路141 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１４-スイッチ３１２ -スイッチ３１３-ブリッジ４４４-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路142 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１５-スイッチ３２３-ブリッジ４３５-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路143 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１５-スイッチ３２３-スイッチ３２２-ブリッジ４２５-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路144 : ＣＰＵ１１２-スイッチ１１３-ブリッジ１１５-スイッチ３２３-スイッチ３２２-ブリッジ４１５-スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
【００８７】
ホストディレクタ１２-キャッシュモジュール４１間で異常が検出された場合：下記の経路151と、経路152、経路153および経路154のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【００８８】
経路151 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２４-スイッチ３１３-スイッチ３１２ -ブリッジ４１４ -スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路152 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２５-スイッチ３２２-ブリッジ４２５-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路153 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２５-スイッチ３２２-スイッチ３２３-ブリッジ４３５-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路154 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２５-スイッチ３２２-スイッチ３２３-ブリッジ４４５-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
【００８９】
ホストディレクタ１２-キャッシュモジュール４２間で異常が検出された場合：下記の経路161と、経路162、経路163および経路164のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【００９０】
経路161 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２４-スイッチ３１３-スイッチ３１２ -ブリッジ４２４-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路162 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２５-スイッチ３２２-ブリッジ４１５-スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路163 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２５-スイッチ３２２-スイッチ３２３-ブリッジ４４５-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路164 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２５-スイッチ３２２-スイッチ３２３-ブリッジ４３５-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
【００９１】
ホストディレクタ１２-キャッシュモジュール４３間で異常が検出された場合：下記の経路171と、経路172、経路173および経路174のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【００９２】
経路171 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２５-スイッチ３２２-スイッチ３２３-ブリッジ４３５-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路172 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２４-スイッチ３１３-ブリッジ４４４-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路173 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２４-スイッチ３１３-スイッチ３１２ -ブリッジ４１４ -スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路174 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２４-スイッチ３１３-スイッチ３１２ -ブリッジ４２４-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
【００９３】
ホストディレクタ１２-キャッシュモジュール４４間で異常が検出された場合：下記の経路181と、経路182、経路183および経路184のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【００９４】
経路181 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２５-スイッチ３２２-スイッチ３２３-ブリッジ４４５-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路182 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２４-スイッチ３１３-ブリッジ４３４-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路183 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２４-スイッチ３１３-スイッチ３１２ -ブリッジ４２４-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路184 : ＣＰＵ１２２-スイッチ１２３-ブリッジ１２４-スイッチ３１３-スイッチ３１２ -ブリッジ４１４ -スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
【００９５】
ディスクディレクタ２１-キャッシュモジュール４１間で異常が検出された場合：下記の経路211と、経路212、経路213および経路214のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【００９６】
経路211 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１５-スイッチ３２３-スイッチ３２２-ブリッジ４１５-スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路212 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１４-スイッチ３１２ -ブリッジ４２４-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路213 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１４-スイッチ３１２ -スイッチ３１３-ブリッジ４３４-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路214 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１４-スイッチ３１２ -スイッチ３１３-ブリッジ４４４-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
【００９７】
ディスクディレクタ２１-キャッシュモジュール４２間で異常が検出された場合：下記の経路221と、経路222、経路223および経路224のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【００９８】
経路221 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１５-スイッチ３２３-スイッチ３２２-ブリッジ４２５-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路222 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１４-スイッチ３１２ -ブリッジ４１４ -スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路223 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１４-スイッチ３１２ -スイッチ３１３-ブリッジ４４４-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路224 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１４-スイッチ３１２ -スイッチ３１３-ブリッジ４３４-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
【００９９】
ディスクディレクタ２１-キャッシュモジュール４３間で異常が検出された場合：下記の経路231と、経路232、経路233および経路234のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【０１００】
経路231 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１４-スイッチ３１２ -スイッチ３１３-ブリッジ４３４-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路232 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１５-スイッチ３２３-ブリッジ４４５-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路233 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１５-スイッチ３２３-スイッチ３２２-ブリッジ４１５-スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路234 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１５-スイッチ３２３-スイッチ３２２-ブリッジ４２５-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
【０１０１】
ディスクディレクタ２１-キャッシュモジュール４４間で異常が検出された場合：下記の経路241と、経路242、経路243および経路244のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【０１０２】
経路241 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１４-スイッチ３１２ -スイッチ３１３-ブリッジ４４４-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路242 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１５-スイッチ３２３-ブリッジ４３５-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路243 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１５-スイッチ３２３-スイッチ３２２-ブリッジ４２５-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路244 : ＣＰＵ２１２-スイッチ２１３-ブリッジ２１５-スイッチ３２３-スイッチ３２２-ブリッジ４１５-スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
【０１０３】
ディスクディレクタ２２-キャッシュモジュール４１間で異常が検出された場合：下記の経路251と、経路252、経路253および経路254のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【０１０４】
経路251 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２４-スイッチ３１３-スイッチ３１２ -ブリッジ４１４ -スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路252 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２５-スイッチ３２２-ブリッジ４２５-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路253 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２５-スイッチ３２２-スイッチ３２３-ブリッジ４３５-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路254 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２５-スイッチ３２２-スイッチ３２３-ブリッジ４４５-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
【０１０５】
ディスクディレクタ２２-キャッシュモジュール４２間で異常が検出された場合：下記の経路261と、経路262、経路263および経路264のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【０１０６】
経路261 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２４-スイッチ３１３-スイッチ３１２ -ブリッジ４２４-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路262 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２５-スイッチ３２２-ブリッジ４１５-スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路263 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２５-スイッチ３２２-スイッチ３２３-ブリッジ４４５-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路264 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２５-スイッチ３２２-スイッチ３２３-ブリッジ４３５-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
【０１０７】
ディスクディレクタ２２-キャッシュモジュール４３間で異常が検出された場合：下記の経路271と、経路272、経路273および経路274のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【０１０８】
経路271 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２５-スイッチ３２２-スイッチ３２３-ブリッジ４３５-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路272 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２４-スイッチ３１３-ブリッジ４４４-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路273 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２４-スイッチ３１３-スイッチ３１２ -ブリッジ４１４ -スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
経路274 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２４-スイッチ３１３-スイッチ３１２ -ブリッジ４２４-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
【０１０９】
ディスクディレクタ２２-キャッシュモジュール４４間で異常が検出された場合：下記の経路281と、経路282、経路283および経路284のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【０１１０】
経路281 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２５-スイッチ３２２-スイッチ３２３-ブリッジ４４５-スイッチ４４３-キャッシュメモリ４４１またはＣＰＵ４４２
経路282 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２４-スイッチ３１３-ブリッジ４３４-スイッチ４３３-キャッシュメモリ４３１またはＣＰＵ４３２
経路283 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２４-スイッチ３１３-スイッチ３１２ -ブリッジ４２４-スイッチ４２３-キャッシュメモリ４２１またはＣＰＵ４２２
経路284 : ＣＰＵ２２２-スイッチ２２３-ブリッジ２２４-スイッチ３１３-スイッチ３１２ -ブリッジ４１４ -スイッチ４１３-キャッシュメモリ４１１またはＣＰＵ４１２
【０１１１】
なお、上述した実施形態は、単なる例示に過ぎず、実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
【０１１２】
例えば、上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明を以下に限定するものではない。
【０１１３】
（付記１）  ホスト装置と複数の記憶装置との間のデータ転送を制御するディスクアレイコントローラであって、前記ホスト装置と前記記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第１制御部と、前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第２制御部と、前記第１制御部または前記第２制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定部と、を備え、前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である、ことを特徴とするディスクアレイコントローラ。
【０１１４】
（付記２）  前記故障特定部は、少なくともいずれか一つの前記他の前記通信経路において前記データ転送が失敗した場合に、前記他の前記通信経路のうち前記データ転送に失敗した全ての前記他の前記通信経路のみが通過する前記分割区間を、前記故障区間であると特定する、ことを特徴とする付記１記載のディスクアレイコントローラ。
【０１１５】
（付記３）  前記故障特定部は、全ての前記他の前記通信経路において前記データ転送が成功した場合に、全ての前記他の前記通信経路が非通過となる前記分割区間を、前記故障区間であると特定する、ことを特徴とする付記１または２記載のディスクアレイコントローラ。
【０１１６】
（付記４）  前記他の前記通信経路の総数は、前記分割区間の総数をＳとした場合に、以下の式を満たす自然数のうち、最小の自然数である、ことを特徴とする付記１〜３のいずれか１に記載のディスクアレイコントローラ。
【数２】
2012190151.tif 000004
【０１１７】
（付記５）  付記１〜４のいずれか１に記載のディスクアレイコントローラを有するディスクアレイ装置。
【０１１８】
（付記６）  ホスト装置と複数の記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第１制御部と、前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第２制御部と、前記第１制御部または前記第２制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、を有し、前記ホスト装置と前記記憶装置との間のデータ転送を制御するディスクアレイコントローラにおける故障特定方法であって、一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定ステップを含み、前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である、ことを特徴とする故障特定方法。
【符号の説明】
【０１１９】
１…ディスクアレイ装置、２…ディスクアレイコントローラ、３…ディスクエンクロージャ、４…ホストコンピュータ、１１、１２…ホストディレクタ、２１、２２…ディスクディレクタ、３１、３２…ローカルスイッチ、４１〜４４…キャッシュモジュール、１１３、１２３…スイッチ、１１４、１１５、１２４、１２５…ブリッジ、１１２、１２２…ＣＰＵ、１１１、１２１…ホストＩ／Ｆ、２１３、２２３…スイッチ、２１４、２１５、２２４、２２５…ブリッジ、２１２、２２２…ＣＰＵ、２１１、２２１…ディスクＩ／Ｆ、４１３、４２３、４３３、４４３…スイッチ、４１４、４１５、４２４、４２５、４３４、４３５、４４４、４４５…ブリッジ、４１２、４２２、４３２、４４２…ＣＰＵ、４１１、４２１、４３１、４４１…キャッシュメモリ。
【図１】
2012190151.tif 000006
【図２】
2012190151.tif 000007
【図３】
2012190151.tif 000008
【図４】
2012190151.tif 000009
【図５】
2012190151.tif 000010
【図６】
2012190151.tif 000011
【図７】
2012190151.tif 000012
【図８】
2012190151.tif 000013