説明

ディスクアレイコントローラ、ディスクアレイ装置および故障特定方法

【課題】ディスクアレイコントローラ内で故障が発生した場合に、故障箇所を簡易に特定する。
【解決手段】ホストコンピュータ4とディスクとの間で転送されるデータを記憶するキャッシュメモリ411、421、431、441と、ホストコンピュータとキャッシュメモリとの間のデータ転送を制御するホストディレクタ11、12と、ディスクとキャッシュメモリとの間のデータ転送を制御するディスクディレクタ21、22と、ホストディレクタまたはディスクディレクタとキャッシュメモリとの間の通信経路を切り替えるローカルスイッチ31、32と、一の通信経路でのデータ転送において異常が発生した場合に、一の通信経路とは異なる他の通信経路によりデータを転送し、この転送結果に基づいて一の通信経路上の故障区間を特定する故障特定部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ディスクアレイコントローラ、ディスクアレイ装置および故障特定方法に関する。
【背景技術】
【0002】
下記特許文献1には、複数の記憶装置と、これら複数の記憶装置を制御するディスクアレイコントローラとを有するディスクアレイ装置が開示されている。このディスクアレイ装置では、記憶装置へのアクセスで異常が検出された場合に、故障箇所が、記憶装置とディスクアレイコントローラとを接続する伝送経路、または記憶装置のいずれであるのかを特定している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−206766号公報
【0004】
ところで、上記特許文献1では、ディスクアレイコントローラ内で故障が発生した場合には、故障箇所を特定することができない。
【0005】
ディスクアレイコントローラ内には、複数のキャッシュメモリが備えられており、ディスクアレイコントローラは、キャッシュメモリを介して、ホスト装置と記憶装置との間のデータ転送を実行する。このキャッシュメモリには、まだ記憶装置に書き込まれていないデータ(以下、「ダーティデータ」という。)が記憶されているため、ディスクアレイコントローラ内で故障が発生した場合には、速やかにディスクアレイコントローラ内の動作を変更する必要がある。したがって、ディスクアレイコントローラ内の故障箇所の検出に時間を要してしまうと、例えばデータ転送のリトライが頻発して処理性能が低下することや、ダーティデータが失われて信頼性が低下する要因となる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、上述した課題を解決するためになされたものであり、ディスクアレイコントローラ内で故障が発生した場合に、故障箇所を簡易に特定することができるディスクアレイコントローラ、ディスクアレイ装置および故障特定方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明のディスクアレイコントローラは、ホスト装置と複数の記憶装置との間のデータ転送を制御するディスクアレイコントローラであって、前記ホスト装置と前記記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第1制御部と、前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第2制御部と、前記第1制御部または前記第2制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定部と、を備え、前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である。
【0008】
本発明のディスクアレイ装置は、上記ディスクアレイコントローラを有する。
【0009】
本発明の故障特定方法は、ホスト装置と複数の記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第1制御部と、前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第2制御部と、前記第1制御部または前記第2制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、を有し、前記ホスト装置と前記記憶装置との間のデータ転送を制御するディスクアレイコントローラにおける故障特定方法であって、一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定ステップを含み、前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である。
【発明の効果】
【0010】
本発明によれば、ディスクアレイコントローラ内で故障が発生した場合に、故障箇所を簡易に特定することができる。
【図面の簡単な説明】
【0011】
【図1】実施形態におけるディスクアレイ装置の構成を例示するブロック図である。
【図2】データリード時の経路を例示する図である。
【図3】図2に示す経路R1を模式化した図である。
【図4】図2に示す経路R2および経路R3におけるデータ転送の成功/失敗の組み合わせと故障区間との対応関係を例示する図である。
【図5】データライト時の経路を例示する図である。
【図6】図5に示す経路R4を模式化した図である。
【図7】図5に示す経路R5および経路R6におけるデータ転送の成功/失敗の組み合わせと故障区間との対応関係を例示する図である。
【図8】4つの代替経路による通過/非通過の組み合わせを16の分割区間に割り当てた状態を例示する図である。
【発明を実施するための形態】
【0012】
以下、添付図面を参照して、本発明に係るディスクアレイコントローラ、ディスクアレイ装置および故障特定方法の好適な実施形態について説明する。
【0013】
まず、図1を参照して、実施形態におけるディスクアレイ装置の構成について説明する。図1に示すように、ディスクアレイ装置1は、ディスクアレイコントローラ2とディスクエンクロージャ3とを有する。ディスクエンクロージャ3は、複数のハードディスク(記憶部。以下、「ディスク」という。)を有し、これらのディスクによりRAID(Redundant Arrays of Inexpensive Disks)が構成される。
【0014】
ディスクアレイコントローラ2は、ホストディレクタ11、12と、ディスクディレクタ21、22と、ローカルスイッチ31、32と、キャッシュモジュール41〜44とを有する。ディスクアレイコントローラ2に備えるホストディレクタ、ディスクディレクタおよびキャッシュモジュールの各枚数は、これに限定されず、より多くの枚数を備えてもよい。
【0015】
ホストディレクタ11は、ホストI/F(Interface)111、CPU(Central Processing Unit)112、スイッチ113、およびブリッジ114、115を含む。ここでは、ホストディレクタ11について説明するが、ホストディレクタ12も同様である。
【0016】
ホストI/F111は、ホストコンピュータ4と接続するためのインターフェースである。ホストI/F111としては、例えば、SCSI(Small Computer System Interface)や、iSCSI(Internet SCSI)、SAS(Serial Attached SCSI)、FibreChannel、InfiniBand等の汎用インターフェース、または専用インターフェースを用いることができる。
【0017】
CPU11212は、ホストディレクタ11の各モジュールを統制するプロセッサである。例えば、CPU11212は、ホストコンピュータ4やキャッシュモジュール41〜44との間で行うデータ転送を制御する。また、CPU11212は、後述する故障箇所を特定するために必要なソフトウェアを実行する。
【0018】
スイッチ113は、ホストI/F111、CPU11212、およびブリッジ114、115を相互に接続する機器である。スイッチ113のインターフェースとしては、例えば、PCI(Peripheral Component Interconnect)や、PCI Express、PCI-X、SAS、FibreChannel、InfiniBand等の汎用インターフェース、または専用のインターフェースを用いることができる。
【0019】
ブリッジ114、115は、スイッチ113とローカルスイッチ31、32とを接続するための機器である。ブリッジ114、115のインターフェースとしては、例えば、PCI Expressを用いることができる。PCI Expressを用いた場合には、各Root Complex間を接続するためのNon Transparent Bridgeとなる。なお、ブリッジ114、115は、スイッチ113や、スイッチ312、323に内蔵されていてもよい。また、ブリッジ114、115は、非透過にする必要が無ければ省略してもよい。
【0020】
ディスクディレクタ21は、ディスクI/F211、CPU21212、スイッチ213、およびブリッジ214、215を含む。ここでは、ディスクディレクタ21について説明するが、ディスクディレクタ22も同様である。
【0021】
ディスクI/F211は、ディスクエンクロージャ3と接続するためのインターフェースである。ディスクI/F211としては、例えば、SCSIや、iSCSI、SAS、FibreChannel、InfiniBand、SATA(Serial Advanced Technology Attachment)等の汎用インターフェース、または専用インターフェースを用いることができる。
【0022】
CPU21212は、ディスクディレクタ21の各モジュールを統制するプロセッサである。例えば、CPU21212は、ディスクエンクロージャ3やキャッシュモジュール41〜44との間で行うデータ転送を制御する。また、CPU21212は、後述する故障箇所を特定するために必要なソフトウェアを実行する。
【0023】
スイッチ213およびブリッジ214、215は、上述したスイッチ113およびブリッジ114、115と同様であるため、その説明を省略する。
【0024】
ローカルスイッチ31は、CPU12211、およびスイッチ312、313を含む。ここでは、ローカルスイッチ31について説明するが、ローカルスイッチ32も同様である。
【0025】
CPU12211は、ディスクアレイ装置1全体の状態を監視し、監視状態に応じてスイッチ312、313の設定を変更する等して、ホストディレクタ11、12やディスクディレクタ21、22と、キャッシュモジュール41〜44との間で行われるデータ転送に必要なルーティングを制御する。
【0026】
スイッチ312、313は、CPU12211や、ホストディレクタ11、12、ディスクディレクタ21、22、キャッシュモジュール41〜44とそれぞれ接続するための機器である。スイッチ312、313のインターフェースとしては、例えば、PCI、PCI Express、PCI-X、SAS、FibreChannel、InfiniBand等の汎用インターフェース、または専用のインターフェースを用いることができる。インターフェースとしてPCI Expressを用いた場合には、Non Transparent Bridgeの機能を内蔵してもよい。
【0027】
キャッシュモジュール41は、キャッシュメモリ411、CPU412、スイッチ413、およびブリッジ414、415を含む。ここでは、キャッシュモジュール41について説明するが、キャッシュモジュール42〜44も同様である。
【0028】
キャッシュメモリ411は、ホストコンピュータ4から読み書きされるデータを一時的にキャッシュするためのメモリである。キャッシュメモリ411は、ディスクエンクロージャ3内のディスクよりも十分高速なアクセスレイテンシおよび帯域幅を有するメモリ素子であれば、どのようなメモリ素子であってもよい。キャッシュメモリ411としては、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static RAM)、Flash Memory、FeRAM(Ferroelectric RAM)、PRAM(Phase Change RAM)、MRAM(Magnetoresistive RAM)等を用いることができる。キャッシュメモリ411は、SCSIや、SAS、FibreChannel、InfiniBand等の汎用インターフェース、または高速な専用インターフェースを用いてスイッチ413と接続する。なお、キャッシュメモリ411を、例えばDDR(Double Data Rate)-SDRAMインターフェース等でCPU412と直結してもよい。
【0029】
キャッシュモジュール41とキャッシュモジュール43、およびキャッシュモジュール42とキャッシュモジュール44は、それぞれ冗長ペアであり、故障時を除いて原則として同一のデータを保持する。
【0030】
CPU412は、キャッシュモジュール41の各モジュールを統制するプロセッサである。例えば、CPU412は、ホストディレクタ11、12やディスクディレクタ21、22との間で行われるデータ転送を制御する。また、CPU412は、キャッシュメモリ411内のキャッシュデータに関する情報を管理し、キャッシュデータの再配置や、不要になったキャッシュデータの削除、ディスクエンクロージャ3への書き出し、他のキャッシュモジュール42〜44のキャッシュデータに関する管理情報と同期をとる、等の各種処理を実行する。
【0031】
スイッチ413、およびブリッジ414、415は、上述したスイッチ113およびブリッジ114、115と同様であるため、その説明を省略する。
【0032】
次に、図1を参照して本実施形態におけるディスクアレイ装置1の各種の動作について説明する。
【0033】
まず、ホストコンピュータ4から受信したデータをディスクエンクロージャ3内のディスクに書き込む際の動作について説明する。この動作では、ホストコンピュータ4からホストディレクタ11にライトデータが送信される場合について説明するが、ホストディレクタ12にライトデータが送信される場合についても同様である。
【0034】
最初に、ホストコンピュータ4からホストディレクタ11にライトデータが送信されると、ホストディレクタ11は、ローカルスイッチ31、32を介してキャッシュモジュール41およびキャッシュモジュール43に同じライトデータをキャッシュさせる。なお、キャッシュモジュール42およびキャッシュモジュール44に同じライトデータをキャッシュさせることとしてもよい。このライトデータは、まだディスクに書き込まれていないため、ダーティデータとなる。
【0035】
続いて、ディスクディレクタ21またはディスクディレクタ22は、キャッシュモジュール41〜44内にダーティデータが存在する場合に、キャッシュメモリ411、421、431、441の空き状況やディスクエンクロージャ3内のディスクの負荷状況等を勘案し、適切なタイミングでディスクエンクロージャ3内のディスクにダーティデータを書き込む。
【0036】
ディスクへの書き込みが完了すると、キャッシュモジュール41〜44内のダーティデータは、クリーンなデータ(以下、「クリーンデータ」という。)として取り扱われる。クリーンデータは、リードキャッシュとして用いてもよいし、キャッシュメモリ411、421、431、441の空き容量が少ない場合には削除してもよい。なお、参照される頻度が他よりも低いリードキャッシュは、キャッシュメモリ411、421、431、441から順次削除していく。
【0037】
次に、ホストコンピュータ4から要求されたデータをディスクエンクロージャ3内のディスクから読み出してホストコンピュータ4に送信する際の動作について説明する。
【0038】
最初に、ホストコンピュータ4からディスクアレイ装置1にデータのリード要求が送信されると、ホストディレクタ11またはホストディレクタ12は、そのリード要求を受け付ける。ホストディレクタ11またはホストディレクタ12は、キャッシュモジュール41およびキャッシュモジュール43にリード要求情報を登録する。なお、キャッシュモジュール42およびキャッシュモジュール44にリード要求情報を登録してもよい。
【0039】
続いて、ディスクディレクタ21またはディスクディレクタ22は、キャッシュモジュール41〜44内に未完了のリード要求情報が存在する場合に、ディスクエンクロージャ3内のディスクからリード要求に対応するデータを読み出し、リード要求情報を登録しているキャッシュモジュール41およびキャッシュモジュール43に読み出したデータをキャッシュさせる。
【0040】
続いて、リード要求を受け付けたホストディレクタ11またはホストディレクタ12は、キャッシュモジュール41またはキャッシュモジュール43からリード要求に対応するデータを読み出し、ホストコンピュータ4に送信する。
【0041】
キャッシュモジュール41およびキャッシュモジュール43にキャッシュされたデータは、リードキャッシュとして用いてもよいし、キャッシュメモリ411、421、431、441の空き容量が少ない場合には削除してもよい。
【0042】
このように、ディスクアレイコントローラ2では、ホストディレクタ11、12とディスクディレクタ21、22は、それぞれキャッシュモジュール41〜44との間でデータのやり取りを行う。ホストディレクタ11、12とディスクディレクタ21、22との間では、基本的にデータをやり取りしない。
【0043】
次に、ディスクアレイコントローラ2のモジュール間の経路で故障が発生した場合の動作について説明する。
【0044】
例えば、正常時の経路(ブリッジ114−スイッチ312−ブリッジ414)で通信が不能になった場合に、ホストディレクタ11は、代替経路(ブリッジ115−スイッチ323−スイッチ322−ブリッジ415)を使用する。
【0045】
ところが、故障箇所がホストディレクタ11のスイッチ113、またはキャッシュモジュール41のスイッチ413、CPU412およびキャッシュメモリ411である場合には、正常時の経路および代替経路は共に通信が不能となる。
【0046】
ここで、正常時には、ホストディレクタ11およびホストディレクタ12の両方を用いてホストコンピュータとの間のデータの読み書きを行うところ、ホストディレクタ11のスイッチ113で故障が発生した場合には、ホストディレクタ12を用いてホストコンピュータとの間のデータの読み書きを行うように、ホストコンピュータ4からのリード/ライト処理を変更する必要がある。
【0047】
一方、キャッシュモジュール41のスイッチ413、CPU412およびキャッシュメモリ411で故障が発生した場合には、キャッシュモジュール41を縮退させ、残りのキャッシュモジュール42〜44を使用して、ダーティデータごとに、ダーティデータの冗長制御を変更する必要がある。具体的に説明すると、正常時には、キャッシュモジュール41とキャッシュモジュール43とで冗長させ、キャッシュモジュール41とキャッシュモジュール43とで冗長させるところ、上記故障が発生した場合には、第1ダーティデータをキャッシュモジュール42とキャッシュモジュール43とで冗長させ、第2ダーティデータをキャッシュモジュール43とキャッシュモジュール44とで冗長させ、第3ダーティデータをキャッシュモジュール42とキャッシュモジュール44とで冗長させるように、ダーティデータの冗長制御を変更する。
【0048】
このように、故障が発生した場合には、故障箇所に応じてディスクアレイコントローラ2内の動作を変更する必要があるため、ディスクアレイコントローラ2内の故障箇所をなるべく短時間で検出することに意義がある。本発明は、故障箇所を大まかに特定することで、故障発生後の対応をより迅速に行うことを可能としたものである。以下にその仕組みを説明する。
【0049】
まず、図2を用いて、データリード時に故障箇所を特定する手順について説明する。ここでは、ホストディレクタ11がキャッシュモジュール41に対して正常時の経路である経路R1を用いてデータ転送を要求し、失敗した場合について説明する。
【0050】
経路R1でのデータ転送が失敗した場合に、ホストディレクタ11は、キャッシュモジュール41に対してデータ転送を要求し、代替経路である経路R2を用いてデータ転送を試みる。また、ホストディレクタ11は、キャッシュモジュール43に対してデータ転送を要求し、代替経路である経路R3を用いてデータ転送を試みる。これは、転送対象のデータがダーティデータである場合には、キャッシュモジュール41と冗長ペアであるキャッシュモジュール43にも同じデータがあるためである。
【0051】
代替経路である経路R2と経路R3での転送が成功したか失敗したかを検出することで、故障箇所を大まかに特定することができる。以下に、その特定手順について具体的に説明する。
【0052】
図3は、経路R1を模式化した図である。図3に示すように、経路R1を、分岐が発生する機器(ポイント)で区切ると、4つの区間1〜4に分割することができる。この場合、経路R2は、区間1および区間4を通過するが、区間2および区間3は通過しない。一方、経路R3は、区間1および区間2を通過するが、区間3および区間4は通過しない。なお、同時に2箇所以上で故障が発生する可能性が極めて低いことから、本実施形態では故障箇所が1箇所であることを前提にする。
【0053】
最初に、経路R2と経路R3の双方が成功した場合には、少なくとも経路R2か経路R3のいずれか一方が通過する区間1、区間2および区間4は正常であると考えられるため、残りの区間3が故障していると判断できる。次に、経路R2が成功して経路R3が失敗した場合には、成功した経路R2が通過する区間1と区間4は共に正常であり、残りの区間2および区間3のうち、失敗した経路R3が通過する区間2が故障であると判断できる。次に、経路R2が失敗して経路R3が成功した場合には、成功した経路R3が通過する区間1と区間2は共に正常であり、残りの区間3および区間4のうち、失敗した経路R2が通過する区間4が故障であると判断できる。最後に、経路R2と経路R3の双方が失敗した場合には、経路R2と経路R3の双方が通過する区間1が故障であると判断できる。
【0054】
この結果を、図4に示す。図4は、経路R2および経路R3におけるデータ転送の成功/失敗の組み合わせと故障区間との対応関係を示す。この対応関係は、重複することなく、1対1に対応している。したがって、経路R2および経路R3におけるデータ転送の成功/失敗の組み合わせによって、故障区間を特定することができる。つまり、経路R2および経路R3の転送結果に基づいて、経路R1を分割して形成した区間1〜4の中から故障区間を特定することができる。
【0055】
次に、図5を用いて、データライト時に故障箇所を特定する手順について説明する。ここでは、ホストディレクタ11がキャッシュモジュール41に対して正常時の経路である経路R4を用いてライトデータを転送しようとし、失敗した場合について説明する。なお、ライトデータはディスクに書き込まれる前はダーティデータであるため、ホストディレクタ11は、キャッシュモジュール41と冗長ペアであるキャッシュモジュール43に対しても他の経路(CPU11212−スイッチ113−ブリッジ115−スイッチ323−ブリッジ435−スイッチ433−CPU432)を用いてライトデータを転送する。
【0056】
経路R4でのデータ転送が失敗した場合に、ホストディレクタ11は、キャッシュモジュール41に対し、代替経路である経路R5を用いてライトデータの転送を試みる。また、ホストディレクタ11は、キャッシュモジュール42に対し、代替経路である経路R6を用いてライトデータの転送を試みる。この場合、キャッシュモジュール42の冗長ペアであるキャッシュモジュール44にライトデータの転送を試みることとしてもよい。キャッシュモジュール42またはキャッシュモジュール44のいずれに転送するのかは、キャッシュメモリ421およびキャッシュメモリ441の空き容量や、キャッシュモジュール42およびキャッシュモジュール44の負荷状況等に基づいて決定することができる。なお、キャッシュモジュール44にライトデータの転送を試みる際の経路は、“CPU11212−スイッチ113−ブリッジ114−スイッチ312−スイッチ313−ブリッジ444−スイッチ443−CPU442”となる。
【0057】
代替経路である経路R5と経路R6での転送が成功したか失敗したかを検出することで、故障箇所を大まかに特定することができる。以下に、その特定手順について具体的に説明する。
【0058】
図6は、経路R4を模式化した図である。図6に示すように、経路R4を、分岐が発生する機器(ポイント)で区切ると、4つの区間1〜4に分割することができる。この場合、経路R5は、区間1および区間4を通過するが、区間2および区間3は通過しない。一方、経路R6は、区間1および区間2を通過するが、区間3および区間4は通過しない。
【0059】
最初に、経路R5と経路R6の双方が成功した場合には、少なくとも経路R5か経路R6のいずれか一方が通過する区間1、区間2および区間4は正常であると考えられるため、残りの区間3が故障していると判断できる。次に、経路R5が成功して経路R6が失敗した場合には、成功した経路R5が通過する区間1と区間4は共に正常であり、残りの区間2および区間3のうち、失敗した経路R6が通過する区間2が故障であると判断できる。次に、経路R5が失敗して経路R6が成功した場合には、成功した経路R6が通過する区間1と区間2は共に正常であり、残りの区間3および区間4のうち、失敗した経路R5が通過する区間4が故障であると判断できる。最後に、経路R5と経路R6の双方が失敗した場合には、経路R5と経路R6の双方が通過する区間1が故障であると判断できる。
【0060】
この結果を、図7に示す。図7は、経路R5および経路R6におけるデータ転送の成功/失敗の組み合わせと故障区間との対応関係を示す。この対応関係は、重複することなく、1対1に対応している。したがって、経路R5および経路R6におけるデータ転送の成功/失敗の組み合わせによって、故障区間を特定することができる。つまり、経路R5および経路R5の転送結果に基づいて、経路R1を分割して形成した区間1〜4の中から故障区間を特定することができる。
【0061】
上述した故障箇所を特定する手順を実行すると、データの転送を目的とせず、経路R1の故障箇所を特定する目的のみで行うデータ転送の回数を1回以内に抑えることが可能となる。なお、故障箇所を特定する手順は、ホストディレクタ11内に図4や図7に示すテーブルを予め登録しておき、このテーブルを参照しながら実行することで実現できる。
【0062】
上述した故障箇所を特定する手順によって、例えば区間1が故障箇所として特定された場合には、ホストディレクタ11が故障していることとなる。この場合には、ホストコンピュータ4によるデータ転送の要求先をホストディレクタ12に振り替える必要がある。例えば、一般的な冗長構成を有するホストコンピュータであれば、ホストディレクタ11とホストコンピュータ4との間の通信経路を閉塞することで、ホストコンピュータ4側で冗長経路であるホストディレクタ12側の通信経路に切り替える処理を実行させる。処理が完了していないデータ転送が存在する場合には、ホストディレクタ12側でリトライを行う。
【0063】
また、上述した故障箇所を特定する手順によって、例えば区間4が故障箇所として特定された場合には、キャッシュモジュール41が故障していることになる。この場合には、キャッシュモジュール41を縮退させ、残りのキャッシュモジュール42〜44を使用して、ダーティデータごとに、ダーティデータの冗長制御を変更する必要がある。
【0064】
上述した具体例では、ホストディレクタ11とキャッシュモジュール41との間でデータ転送が失敗した場合について説明したが、データ転送が失敗する箇所は、これに限定されない。例えば、ホストディレクタ11とキャッシュモジュール42〜44との間や、ホストディレクタ12とキャッシュモジュール41〜44との間でデータ転送が失敗した場合であっても、上述した具体例と同様にして故障箇所を特定することができる。
【0065】
また、ディスクディレクタ21とキャッシュモジュール41〜44との間や、ディスクディレクタ22とキャッシュモジュール41〜44との間、一つのキャッシュモジュールと他の三つのキャッシュモジュールとの間で行われるデータ転送は、上述したホストディレクタ11とキャッシュモジュール41との間で行われるデータ転送と比較して、転送方法の一部に異なる部分があるものの、故障箇所を特定する手順については、上述した具体例と同様に行うことができる。
【0066】
また、本実施形態のディスクアレイコントローラ2では、ディスクエンクロージャ3内のディスクとディスクディレクタ21、22との間ではデータ転送を行っていないが、仮にこの間でデータ転送を行う場合であっても、上述した具体例と同様にして故障箇所を特定することができる。
【0067】
上述した具体例では、経路を4つの区間に分割する場合を用いて説明しているが、経路を分割する区間は4つに限定されず、任意に設定することができる。区間を任意に設定する場合には、設定する分割区間数に応じて代替経路数を決定する。具体的に、代替経路数は、設定する分割区間数をSとした場合に、以下の式を満たす自然数のうち、最小の自然数を用いる。
【数1】

【0068】
つまり、例えば、分割区間数が1〜2区間である場合には、代替経路数が1となり、分割区間数が3〜4区間である場合には、代替経路数が2となり、分割区間数が5〜8区間である場合には、代替経路数が3となり、分割区間数が9〜16区間である場合には、代替経路数が4となる。これにより、各代替経路が各分割区間を通過するか否かにより表す組み合わせの内容を各分割区間に割り当てる際に、各分割区間の間でその内容を重複させることなく割り当てることができる。
【0069】
具体的には、例えば、分割区間数Sが16である場合には、上記式から、代替経路数は4となる。4つの代替経路による通過/非通過の組み合わせパターンは、全部で16パターンとなる。したがって、この16のパターンを、16の分割区間に割り当てることで、各分割区間の間で組み合わせの内容を重複させることなく割り当てることができる。
【0070】
図8に、4つの代替経路による通過/非通過の組み合わせを、16の分割区間に割り当てた状態を例示する。図8は、正常時の経路Rを16区間に分割し、4つの代替経路Ra〜Rdによる通過/非通過の組み合わせ(16パターン)を、各区間に重複することなく割り当てた状態を示している。
【0071】
このように、本実施形態における故障箇所を特定する手順は、正常時の経路を複数の区間に分割し、この分割区間に応じて決定可能な代替経路の通過/非通過の組み合わせに基づいて、故障箇所を特定することができる。したがって、この故障箇所を特定する手順は、ディスクアレイ装置に限らず、より広範なネットワークにおける故障箇所を特定する場合にも適用することができる。
【0072】
また、上述した実施形態におけるディスクアレイ装置によると、代替経路でのデータ転送の結果(成功/失敗)を故障箇所の特定に使用するため、故障箇所の特定に必要な手順を減らすことができる。これにより、ディスクアレイ装置が故障箇所を切り離す縮退動作に移行するまでの性能や冗長性の低下を抑制することができる。
【0073】
ここで、本実施形態では、ディスクアレイコントローラ2内の各モジュールが全て正常である場合、ホストディレクタとキャッシュモジュールとの間、およびディスクディレクタとキャッシュモジュールとの間のデータ転送の経路は以下の経路となる。
【0074】
ホストディレクタ11-キャッシュモジュール41間:CPU112-スイッチ113-ブリッジ114-スイッチ312 -ブリッジ414 -スイッチ413-キャッシュメモリ411またはCPU412
ホストディレクタ11-キャッシュモジュール42間:CPU112-スイッチ113-ブリッジ114-スイッチ312 -ブリッジ424-スイッチ423-キャッシュメモリ421またはCPU422
ホストディレクタ11-キャッシュモジュール43間:CPU112-スイッチ113-ブリッジ115-スイッチ323-ブリッジ435-スイッチ433-キャッシュメモリ431またはCPU432
ホストディレクタ11-キャッシュモジュール44間:CPU112-スイッチ113-ブリッジ115-スイッチ323-ブリッジ445-スイッチ443-キャッシュメモリ441またはCPU442
【0075】
ホストディレクタ12-キャッシュモジュール41間:CPU122-スイッチ123-ブリッジ125-スイッチ322-ブリッジ415-スイッチ413-キャッシュメモリ411またはCPU412
ホストディレクタ12-キャッシュモジュール42間:CPU122-スイッチ123-ブリッジ125-スイッチ322-ブリッジ425-スイッチ423-キャッシュメモリ421またはCPU422
ホストディレクタ12-キャッシュモジュール43間:CPU122-スイッチ123-ブリッジ124-スイッチ313-ブリッジ434-スイッチ433-キャッシュメモリ431またはCPU432
ホストディレクタ12-キャッシュモジュール44間:CPU122-スイッチ123-ブリッジ124-スイッチ313-ブリッジ444-スイッチ443-キャッシュメモリ441またはCPU442
【0076】
ディスクディレクタ21-キャッシュモジュール41間:CPU212-スイッチ213-ブリッジ214-スイッチ312 -ブリッジ414 -スイッチ413-キャッシュメモリ411またはCPU412
ディスクディレクタ21-キャッシュモジュール42間:CPU212-スイッチ213-ブリッジ214-スイッチ312 -ブリッジ424-スイッチ423-キャッシュメモリ421またはCPU422
ディスクディレクタ21-キャッシュモジュール43間:CPU212-スイッチ213-ブリッジ215-スイッチ323-ブリッジ435-スイッチ433-キャッシュメモリ431またはCPU432
ディスクディレクタ21-キャッシュモジュール44間:CPU212-スイッチ213-ブリッジ215-スイッチ323-ブリッジ445-スイッチ443-キャッシュメモリ441またはCPU442
【0077】
ディスクディレクタ22-キャッシュモジュール41間:CPU222-スイッチ223-ブリッジ225-スイッチ322-ブリッジ415-スイッチ413-キャッシュメモリ411またはCPU412
ディスクディレクタ22-キャッシュモジュール42間:CPU222-スイッチ223-ブリッジ225-スイッチ322-ブリッジ425-スイッチ423-キャッシュメモリ421またはCPU422
ディスクディレクタ22-キャッシュモジュール43間:CPU222-スイッチ223-ブリッジ224-スイッチ313-ブリッジ434-スイッチ433-キャッシュメモリ431またはCPU432
ディスクディレクタ22-キャッシュモジュール44間:CPU222-スイッチ223-ブリッジ224-スイッチ313-ブリッジ444-スイッチ443-キャッシュメモリ441またはCPU442
【0078】
上記の各経路で異常が検出された場合には、それぞれ以下で説明する代替経路を用いて故障箇所を特定することができる。
【0079】
ホストディレクタ11-キャッシュモジュール41間で異常が検出された場合:下記の経路111と、経路112、経路113および経路114のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0080】
経路111 : CPU112-スイッチ113-ブリッジ115-スイッチ323-スイッチ322-ブリッジ415-スイッチ413-キャッシュメモリ411またはCPU412
経路112 : CPU112-スイッチ113-ブリッジ114-スイッチ312 -ブリッジ424-スイッチ423-キャッシュメモリ421またはCPU422
経路113 : CPU112-スイッチ113-ブリッジ114-スイッチ312 -スイッチ313-ブリッジ434-スイッチ433-キャッシュメモリ431またはCPU432
経路114 : CPU112-スイッチ113-ブリッジ114-スイッチ312 -スイッチ313-ブリッジ444-スイッチ443-キャッシュメモリ441またはCPU442
【0081】
ホストディレクタ11-キャッシュモジュール42間で異常が検出された場合:下記の経路121と、経路122、経路123および経路124のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0082】
経路121 : CPU112-スイッチ113-ブリッジ115-スイッチ323-スイッチ322-ブリッジ425-スイッチ423-キャッシュメモリ421またはCPU422
経路122 : CPU112-スイッチ113-ブリッジ114-スイッチ312 -ブリッジ414 -スイッチ413-キャッシュメモリ411またはCPU412
経路123 : CPU112-スイッチ113-ブリッジ114-スイッチ312 -スイッチ313-ブリッジ444-スイッチ443-キャッシュメモリ441またはCPU442
経路124 : CPU112-スイッチ113-ブリッジ114-スイッチ312 -スイッチ313-ブリッジ434-スイッチ433-キャッシュメモリ431またはCPU432
【0083】
ホストディレクタ11-キャッシュモジュール43間で異常が検出された場合:下記の経路131と、経路132、経路133および経路134のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0084】
経路131 : CPU112-スイッチ113-ブリッジ114-スイッチ312 -スイッチ313-ブリッジ434-スイッチ433-キャッシュメモリ431またはCPU432
経路132 : CPU112-スイッチ113-ブリッジ115-スイッチ323-ブリッジ445-スイッチ443-キャッシュメモリ441またはCPU442
経路133 : CPU112-スイッチ113-ブリッジ115-スイッチ323-スイッチ322-ブリッジ415-スイッチ413-キャッシュメモリ411またはCPU412
経路134 : CPU112-スイッチ113-ブリッジ115-スイッチ323-スイッチ322-ブリッジ425-スイッチ423-キャッシュメモリ421またはCPU422
【0085】
ホストディレクタ11-キャッシュモジュール44間で異常が検出された場合:下記の経路141と、経路142、経路143および経路144のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0086】
経路141 : CPU112-スイッチ113-ブリッジ114-スイッチ312 -スイッチ313-ブリッジ444-スイッチ443-キャッシュメモリ441またはCPU442
経路142 : CPU112-スイッチ113-ブリッジ115-スイッチ323-ブリッジ435-スイッチ433-キャッシュメモリ431またはCPU432
経路143 : CPU112-スイッチ113-ブリッジ115-スイッチ323-スイッチ322-ブリッジ425-スイッチ423-キャッシュメモリ421またはCPU422
経路144 : CPU112-スイッチ113-ブリッジ115-スイッチ323-スイッチ322-ブリッジ415-スイッチ413-キャッシュメモリ411またはCPU412
【0087】
ホストディレクタ12-キャッシュモジュール41間で異常が検出された場合:下記の経路151と、経路152、経路153および経路154のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0088】
経路151 : CPU122-スイッチ123-ブリッジ124-スイッチ313-スイッチ312 -ブリッジ414 -スイッチ413-キャッシュメモリ411またはCPU412
経路152 : CPU122-スイッチ123-ブリッジ125-スイッチ322-ブリッジ425-スイッチ423-キャッシュメモリ421またはCPU422
経路153 : CPU122-スイッチ123-ブリッジ125-スイッチ322-スイッチ323-ブリッジ435-スイッチ433-キャッシュメモリ431またはCPU432
経路154 : CPU122-スイッチ123-ブリッジ125-スイッチ322-スイッチ323-ブリッジ445-スイッチ443-キャッシュメモリ441またはCPU442
【0089】
ホストディレクタ12-キャッシュモジュール42間で異常が検出された場合:下記の経路161と、経路162、経路163および経路164のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0090】
経路161 : CPU122-スイッチ123-ブリッジ124-スイッチ313-スイッチ312 -ブリッジ424-スイッチ423-キャッシュメモリ421またはCPU422
経路162 : CPU122-スイッチ123-ブリッジ125-スイッチ322-ブリッジ415-スイッチ413-キャッシュメモリ411またはCPU412
経路163 : CPU122-スイッチ123-ブリッジ125-スイッチ322-スイッチ323-ブリッジ445-スイッチ443-キャッシュメモリ441またはCPU442
経路164 : CPU122-スイッチ123-ブリッジ125-スイッチ322-スイッチ323-ブリッジ435-スイッチ433-キャッシュメモリ431またはCPU432
【0091】
ホストディレクタ12-キャッシュモジュール43間で異常が検出された場合:下記の経路171と、経路172、経路173および経路174のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0092】
経路171 : CPU122-スイッチ123-ブリッジ125-スイッチ322-スイッチ323-ブリッジ435-スイッチ433-キャッシュメモリ431またはCPU432
経路172 : CPU122-スイッチ123-ブリッジ124-スイッチ313-ブリッジ444-スイッチ443-キャッシュメモリ441またはCPU442
経路173 : CPU122-スイッチ123-ブリッジ124-スイッチ313-スイッチ312 -ブリッジ414 -スイッチ413-キャッシュメモリ411またはCPU412
経路174 : CPU122-スイッチ123-ブリッジ124-スイッチ313-スイッチ312 -ブリッジ424-スイッチ423-キャッシュメモリ421またはCPU422
【0093】
ホストディレクタ12-キャッシュモジュール44間で異常が検出された場合:下記の経路181と、経路182、経路183および経路184のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0094】
経路181 : CPU122-スイッチ123-ブリッジ125-スイッチ322-スイッチ323-ブリッジ445-スイッチ443-キャッシュメモリ441またはCPU442
経路182 : CPU122-スイッチ123-ブリッジ124-スイッチ313-ブリッジ434-スイッチ433-キャッシュメモリ431またはCPU432
経路183 : CPU122-スイッチ123-ブリッジ124-スイッチ313-スイッチ312 -ブリッジ424-スイッチ423-キャッシュメモリ421またはCPU422
経路184 : CPU122-スイッチ123-ブリッジ124-スイッチ313-スイッチ312 -ブリッジ414 -スイッチ413-キャッシュメモリ411またはCPU412
【0095】
ディスクディレクタ21-キャッシュモジュール41間で異常が検出された場合:下記の経路211と、経路212、経路213および経路214のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0096】
経路211 : CPU212-スイッチ213-ブリッジ215-スイッチ323-スイッチ322-ブリッジ415-スイッチ413-キャッシュメモリ411またはCPU412
経路212 : CPU212-スイッチ213-ブリッジ214-スイッチ312 -ブリッジ424-スイッチ423-キャッシュメモリ421またはCPU422
経路213 : CPU212-スイッチ213-ブリッジ214-スイッチ312 -スイッチ313-ブリッジ434-スイッチ433-キャッシュメモリ431またはCPU432
経路214 : CPU212-スイッチ213-ブリッジ214-スイッチ312 -スイッチ313-ブリッジ444-スイッチ443-キャッシュメモリ441またはCPU442
【0097】
ディスクディレクタ21-キャッシュモジュール42間で異常が検出された場合:下記の経路221と、経路222、経路223および経路224のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0098】
経路221 : CPU212-スイッチ213-ブリッジ215-スイッチ323-スイッチ322-ブリッジ425-スイッチ423-キャッシュメモリ421またはCPU422
経路222 : CPU212-スイッチ213-ブリッジ214-スイッチ312 -ブリッジ414 -スイッチ413-キャッシュメモリ411またはCPU412
経路223 : CPU212-スイッチ213-ブリッジ214-スイッチ312 -スイッチ313-ブリッジ444-スイッチ443-キャッシュメモリ441またはCPU442
経路224 : CPU212-スイッチ213-ブリッジ214-スイッチ312 -スイッチ313-ブリッジ434-スイッチ433-キャッシュメモリ431またはCPU432
【0099】
ディスクディレクタ21-キャッシュモジュール43間で異常が検出された場合:下記の経路231と、経路232、経路233および経路234のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0100】
経路231 : CPU212-スイッチ213-ブリッジ214-スイッチ312 -スイッチ313-ブリッジ434-スイッチ433-キャッシュメモリ431またはCPU432
経路232 : CPU212-スイッチ213-ブリッジ215-スイッチ323-ブリッジ445-スイッチ443-キャッシュメモリ441またはCPU442
経路233 : CPU212-スイッチ213-ブリッジ215-スイッチ323-スイッチ322-ブリッジ415-スイッチ413-キャッシュメモリ411またはCPU412
経路234 : CPU212-スイッチ213-ブリッジ215-スイッチ323-スイッチ322-ブリッジ425-スイッチ423-キャッシュメモリ421またはCPU422
【0101】
ディスクディレクタ21-キャッシュモジュール44間で異常が検出された場合:下記の経路241と、経路242、経路243および経路244のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0102】
経路241 : CPU212-スイッチ213-ブリッジ214-スイッチ312 -スイッチ313-ブリッジ444-スイッチ443-キャッシュメモリ441またはCPU442
経路242 : CPU212-スイッチ213-ブリッジ215-スイッチ323-ブリッジ435-スイッチ433-キャッシュメモリ431またはCPU432
経路243 : CPU212-スイッチ213-ブリッジ215-スイッチ323-スイッチ322-ブリッジ425-スイッチ423-キャッシュメモリ421またはCPU422
経路244 : CPU212-スイッチ213-ブリッジ215-スイッチ323-スイッチ322-ブリッジ415-スイッチ413-キャッシュメモリ411またはCPU412
【0103】
ディスクディレクタ22-キャッシュモジュール41間で異常が検出された場合:下記の経路251と、経路252、経路253および経路254のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0104】
経路251 : CPU222-スイッチ223-ブリッジ224-スイッチ313-スイッチ312 -ブリッジ414 -スイッチ413-キャッシュメモリ411またはCPU412
経路252 : CPU222-スイッチ223-ブリッジ225-スイッチ322-ブリッジ425-スイッチ423-キャッシュメモリ421またはCPU422
経路253 : CPU222-スイッチ223-ブリッジ225-スイッチ322-スイッチ323-ブリッジ435-スイッチ433-キャッシュメモリ431またはCPU432
経路254 : CPU222-スイッチ223-ブリッジ225-スイッチ322-スイッチ323-ブリッジ445-スイッチ443-キャッシュメモリ441またはCPU442
【0105】
ディスクディレクタ22-キャッシュモジュール42間で異常が検出された場合:下記の経路261と、経路262、経路263および経路264のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0106】
経路261 : CPU222-スイッチ223-ブリッジ224-スイッチ313-スイッチ312 -ブリッジ424-スイッチ423-キャッシュメモリ421またはCPU422
経路262 : CPU222-スイッチ223-ブリッジ225-スイッチ322-ブリッジ415-スイッチ413-キャッシュメモリ411またはCPU412
経路263 : CPU222-スイッチ223-ブリッジ225-スイッチ322-スイッチ323-ブリッジ445-スイッチ443-キャッシュメモリ441またはCPU442
経路264 : CPU222-スイッチ223-ブリッジ225-スイッチ322-スイッチ323-ブリッジ435-スイッチ433-キャッシュメモリ431またはCPU432
【0107】
ディスクディレクタ22-キャッシュモジュール43間で異常が検出された場合:下記の経路271と、経路272、経路273および経路274のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0108】
経路271 : CPU222-スイッチ223-ブリッジ225-スイッチ322-スイッチ323-ブリッジ435-スイッチ433-キャッシュメモリ431またはCPU432
経路272 : CPU222-スイッチ223-ブリッジ224-スイッチ313-ブリッジ444-スイッチ443-キャッシュメモリ441またはCPU442
経路273 : CPU222-スイッチ223-ブリッジ224-スイッチ313-スイッチ312 -ブリッジ414 -スイッチ413-キャッシュメモリ411またはCPU412
経路274 : CPU222-スイッチ223-ブリッジ224-スイッチ313-スイッチ312 -ブリッジ424-スイッチ423-キャッシュメモリ421またはCPU422
【0109】
ディスクディレクタ22-キャッシュモジュール44間で異常が検出された場合:下記の経路281と、経路282、経路283および経路284のいずれか一つの経路との二つの代替経路を用いて故障箇所を特定する。
【0110】
経路281 : CPU222-スイッチ223-ブリッジ225-スイッチ322-スイッチ323-ブリッジ445-スイッチ443-キャッシュメモリ441またはCPU442
経路282 : CPU222-スイッチ223-ブリッジ224-スイッチ313-ブリッジ434-スイッチ433-キャッシュメモリ431またはCPU432
経路283 : CPU222-スイッチ223-ブリッジ224-スイッチ313-スイッチ312 -ブリッジ424-スイッチ423-キャッシュメモリ421またはCPU422
経路284 : CPU222-スイッチ223-ブリッジ224-スイッチ313-スイッチ312 -ブリッジ414 -スイッチ413-キャッシュメモリ411またはCPU412
【0111】
なお、上述した実施形態は、単なる例示に過ぎず、実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
【0112】
例えば、上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明を以下に限定するものではない。
【0113】
(付記1) ホスト装置と複数の記憶装置との間のデータ転送を制御するディスクアレイコントローラであって、前記ホスト装置と前記記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第1制御部と、前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第2制御部と、前記第1制御部または前記第2制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定部と、を備え、前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である、ことを特徴とするディスクアレイコントローラ。
【0114】
(付記2) 前記故障特定部は、少なくともいずれか一つの前記他の前記通信経路において前記データ転送が失敗した場合に、前記他の前記通信経路のうち前記データ転送に失敗した全ての前記他の前記通信経路のみが通過する前記分割区間を、前記故障区間であると特定する、ことを特徴とする付記1記載のディスクアレイコントローラ。
【0115】
(付記3) 前記故障特定部は、全ての前記他の前記通信経路において前記データ転送が成功した場合に、全ての前記他の前記通信経路が非通過となる前記分割区間を、前記故障区間であると特定する、ことを特徴とする付記1または2記載のディスクアレイコントローラ。
【0116】
(付記4) 前記他の前記通信経路の総数は、前記分割区間の総数をSとした場合に、以下の式を満たす自然数のうち、最小の自然数である、ことを特徴とする付記1〜3のいずれか1に記載のディスクアレイコントローラ。
【数2】

【0117】
(付記5) 付記1〜4のいずれか1に記載のディスクアレイコントローラを有するディスクアレイ装置。
【0118】
(付記6) ホスト装置と複数の記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第1制御部と、前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第2制御部と、前記第1制御部または前記第2制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、を有し、前記ホスト装置と前記記憶装置との間のデータ転送を制御するディスクアレイコントローラにおける故障特定方法であって、一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定ステップを含み、前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である、ことを特徴とする故障特定方法。
【符号の説明】
【0119】
1…ディスクアレイ装置、2…ディスクアレイコントローラ、3…ディスクエンクロージャ、4…ホストコンピュータ、11、12…ホストディレクタ、21、22…ディスクディレクタ、31、32…ローカルスイッチ、41〜44…キャッシュモジュール、113、123…スイッチ、114、115、124、125…ブリッジ、112、122…CPU、111、121…ホストI/F、213、223…スイッチ、214、215、224、225…ブリッジ、212、222…CPU、211、221…ディスクI/F、413、423、433、443…スイッチ、414、415、424、425、434、435、444、445…ブリッジ、412、422、432、442…CPU、411、421、431、441…キャッシュメモリ。

【特許請求の範囲】
【請求項1】
ホスト装置と複数の記憶装置との間のデータ転送を制御するディスクアレイコントローラであって、
前記ホスト装置と前記記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、
前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第1制御部と、
前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第2制御部と、
前記第1制御部または前記第2制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、
一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定部と、を備え、
前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、
前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である、
ことを特徴とするディスクアレイコントローラ。
【請求項2】
前記故障特定部は、少なくともいずれか一つの前記他の前記通信経路において前記データ転送が失敗した場合に、前記他の前記通信経路のうち前記データ転送に失敗した全ての前記他の前記通信経路のみが通過する前記分割区間を、前記故障区間であると特定する、
ことを特徴とする請求項1記載のディスクアレイコントローラ。
【請求項3】
前記故障特定部は、全ての前記他の前記通信経路において前記データ転送が成功した場合に、全ての前記他の前記通信経路が非通過となる前記分割区間を、前記故障区間であると特定する、
ことを特徴とする請求項1または2記載のディスクアレイコントローラ。
【請求項4】
前記他の前記通信経路の総数は、前記分割区間の総数をSとした場合に、以下の式を満たす自然数のうち、最小の自然数である、
【数1】

ことを特徴とする請求項1〜3のいずれか1項に記載のディスクアレイコントローラ。
【請求項5】
請求項1〜4のいずれか1項に記載のディスクアレイコントローラを有するディスクアレイ装置。
【請求項6】
ホスト装置と複数の記憶装置との間で転送されるデータを記憶する複数のキャッシュメモリと、前記ホスト装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第1制御部と、前記記憶装置と前記キャッシュメモリとの間のデータ転送を制御する複数の第2制御部と、前記第1制御部または前記第2制御部と前記キャッシュメモリとの間の通信経路を切り替える複数のスイッチ部と、を有し、前記ホスト装置と前記記憶装置との間のデータ転送を制御するディスクアレイコントローラにおける故障特定方法であって、
一の前記通信経路でのデータ転送において異常が発生した場合に、当該一の前記通信経路とは異なる他の前記通信経路により前記データを転送し、当該転送の結果に基づいて前記一の前記通信経路上の故障区間を特定する故障特定ステップを含み、
前記故障区間は、前記一の前記通信経路上の分岐発生ポイントで分割することにより形成される複数の分割区間のいずれかの区間であり、
前記他の前記通信経路は、当該他の前記通信経路が各前記分割区間を通過するか否かにより表す組み合わせの内容を、各前記分割区間の間で重複することなく割り当て可能な前記通信経路である、
ことを特徴とする故障特定方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate