(57)【特許請求の範囲】
【請求項１】
第１の外部装置及び第２の外部装置の一方からのデータを受け取るとともにその受け取ったデータを当該第１の外部装置及び当該第２の外部装置の他方へ送る入出力制御装置であって、
前記第１の外部装置との間で前記データを授受する第１の入出力ユニットと、
前記第２の外部装置との間で前記データを授受する第２の入出力ユニットと、
前記第１の外部装置との間で前記データを授受する第１の作動状態と、前記第２の外部装置との間で前記データを授受する第２の作動状態と、を含む複数の作動状態のうちの１つに作動状態を設定可能な第３の入出力ユニットと、
前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることを検出する異常状態検出手段と、
前記入出力ユニットを識別する情報としての入出力ユニットＩＤと、当該入出力ユニットの作動モードと、を含む入出力ユニット属性情報を複数含むテーブルを記憶する共有メモリと、
前記第１の入出力ユニットが異常状態にあることが検出された場合に、前記第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードを、当該第１の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードと交換し、一方、前記第２の入出力ユニットが異常状態にあることが検出された場合に、前記第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードを、当該第２の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードと交換する作動状態設定手段と、
を備え、
前記第３の入出力ユニットは、前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることが検出された場合、前記第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる、前記交換後の作動モードを読み込み、当該読み込んだ作動モードが表す作動状態にて作動するように構成される入出力制御装置。
【請求項２】
請求項１に記載の入出力制御装置において、
前記複数の作動状態は、前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることを検出する第３の作動状態を含み、
前記異常状態検出手段は、前記第３の作動状態にて作動する前記第３の入出力ユニットからなる入出力制御装置。
【請求項３】
請求項１又は請求項２に記載の入出力制御装置において、
前記第３の入出力ユニットは、起動時に、当該第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードを読み込み、当該読み込んだ作動モードが表す作動状態にて作動するように構成され、
前記作動状態設定手段は、前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることが検出された場合、前記第３の入出力ユニットを再起動させるように構成された入出力制御装置。
【請求項４】
請求項１乃至請求項３のいずれか一項に記載の入出力制御装置において、
前記作動状態設定手段は、
前記第３の入出力ユニットと前記第１の外部装置とを接続する第１の接続状態と、当該第３の入出力ユニットと前記第２の外部装置とを接続する第２の接続状態と、を含む複数の接続状態の１つに接続状態を設定可能な切替器を含むとともに、
前記切替器の接続状態を前記第１の接続状態に設定することにより前記第３の入出力ユニットの作動状態を前記第１の作動状態に設定し、一方、当該切替器の接続状態を前記第２の接続状態に設定することにより当該第３の入出力ユニットの作動状態を前記第２の作動状態に設定するように構成された入出力制御装置。
【請求項５】
請求項４に記載の入出力制御装置において、
前記第１の入出力ユニットは、前記切替器を介して前記第１の外部装置と接続されることにより当該第１の外部装置との間で前記データを授受するように構成され、
前記第２の入出力ユニットは、前記切替器を介して前記第２の外部装置と接続されることにより当該第２の外部装置との間で前記データを授受するように構成され、
前記第１の接続状態は、前記第１の入出力ユニットと前記第１の外部装置との接続を解除し、且つ、前記第３の入出力ユニットと当該第１の外部装置とを接続する状態であり、
前記第２の接続状態は、前記第２の入出力ユニットと前記第２の外部装置との接続を解除し、且つ、前記第３の入出力ユニットと当該第２の外部装置とを接続する状態である入出力制御装置。
【請求項６】
請求項５に記載の入出力制御装置であって、
前記作動状態設定手段は、前記切替器を複数含むとともに、
前記切替器の１つである使用切替器が異常状態にあることを検出する切替器異常状態検出手段と、
前記使用切替器が異常状態にあることが前記切替器異常状態検出手段により検出された場合、当該使用切替器を介して接続されている前記入出力ユニット及び前記外部装置を、前記複数の切替器のうちの当該使用切替器以外の切替器を介して接続する切替器変更手段と、
を備える入出力制御装置。
【請求項７】
請求項１乃至請求項６のいずれか一項に記載の入出力制御装置において、
前記第１の外部装置は、前記データとしての書込データを前記第２の外部装置へ送るとともに当該第２の外部装置からの前記データとしての読込データを受け取るホスト装置であり、
前記第２の外部装置は、前記第１の外部装置からの前記書込データを記憶するとともに、当該記憶している書込データを前記読込データとして当該第１の外部装置へ送るディスクアレイユニットである入出力制御装置。
【請求項８】
書込データを記憶するとともに、当該記憶している書込データを読込データとして出力するディスクアレイユニットを備えるとともに、
前記書込データを出力し且つ前記読込データを入力するホスト装置、及び、前記ディスクアレイユニットの一方からの前記書込データ又は前記読込データであるデータを受け取るとともにその受け取ったデータを当該ホスト装置及び当該ディスクアレイユニットの他方へ送るディスクアレイ装置であって、
前記ディスクアレイユニットとの間で前記データを授受する第１の入出力ユニットと、
前記ホスト装置との間で前記データを授受する第２の入出力ユニットと、
前記ディスクアレイユニットとの間で前記データを授受する第１の作動状態と、前記ホスト装置との間で前記データを授受する第２の作動状態と、を含む複数の作動状態のうちの１つに作動状態を設定可能な第３の入出力ユニットと、
前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることを検出する異常状態検出手段と、
前記入出力ユニットを識別する情報としての入出力ユニットＩＤと、当該入出力ユニットの作動モードと、を含む入出力ユニット属性情報を複数含むテーブルを記憶する共有メモリと、
前記第１の入出力ユニットが異常状態にあることが検出された場合に、前記第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードを、当該第１の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードと交換し、一方、前記第２の入出力ユニットが異常状態にあることが検出された場合に、前記第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードを、当該第２の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードと交換する作動状態設定手段と、
を備え、
前記第３の入出力ユニットは、前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることが検出された場合、前記第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる、前記交換後の作動モードを読み込み、当該読み込んだ作動モードが表す作動状態にて作動するように構成されるディスクアレイ装置。
【請求項９】
請求項８に記載のディスクアレイ装置において、
前記複数の作動状態は、前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることを検出する第３の作動状態を含み、
前記異常状態検出手段は、前記第３の作動状態にて作動する前記第３の入出力ユニットからなるディスクアレイ装置。
【請求項１０】
請求項８又は請求項９に記載のディスクアレイ装置において、
前記第３の入出力ユニットは、起動時に、当該第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードを読み込み、当該読み込んだ作動モードが表す作動状態にて作動するように構成され、
前記作動状態設定手段は、前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることが検出された場合、前記第３の入出力ユニットを再起動させるように構成されたディスクアレイ装置。
【請求項１１】
第１の外部装置との間でデータを授受する第１の入出力ユニットと、第２の外部装置との間でデータを授受する第２の入出力ユニットと、を備えるとともに、前記第１の外部装置及び前記第２の外部装置の一方からのデータを受け取るとともにその受け取ったデータを当該第１の外部装置及び当該第２の外部装置の他方へ送る入出力制御装置を制御するための入出力制御方法であって、
前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることを検出し、
前記第１の入出力ユニットが異常状態にあることが検出された場合に、前記入出力ユニットを識別する情報としての入出力ユニットＩＤと、当該入出力ユニットの作動モードと、を含む入出力ユニット属性情報を複数含むテーブルを記憶する共有メモリに記憶されている作動モードのうちの、前記第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードを、当該第１の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードと交換し、一方、前記第２の入出力ユニットが異常状態にあることが検出された場合に、当該共有メモリに記憶されている作動モードのうちの、前記第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードを、当該第２の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードと交換し、
前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることが検出された場合、前記第３の入出力ユニットが、当該第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる、前記交換後の作動モードを読み込み、当該読み込んだ作動モードが表す作動状態にて作動する、入出力制御方法。
【請求項１２】
請求項１１に記載の入出力制御方法において、
前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることを検出する第３の作動状態にて前記第３の入出力ユニットが作動する、入出力制御方法。
【請求項１３】
請求項１１又は請求項１２に記載の入出力制御方法において、
前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることが検出された場合、前記第３の入出力ユニットを再起動させ、
前記第３の入出力ユニットが、起動時に、当該第３の入出力ユニットを識別する入出力ユニットＩＤを含む前記入出力ユニット属性情報に含まれる作動モードを読み込み、当該読み込んだ作動モードが表す作動状態にて作動する、入出力制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部装置との間でデータを授受する入出力ユニットを複数備える入出力制御装置に関する。
【背景技術】
【０００２】
ホスト装置と、ディスクアレイユニットと、に接続される入出力制御装置（例えば、ディスクアレイユニットを制御するディスクアレイコントローラ）が知られている。この入出力制御装置は、ホスト装置と接続されることによりホスト装置との間でデータを授受する第１の入出力ユニットと、ディスクアレイユニットと接続されることによりディスクアレイユニットとの間でデータを授受する第２の入出力ユニットと、を備える。
【０００３】
このような構成により、入出力制御装置は、ホスト装置及びディスクアレイユニットの一方からのデータを受け取り、受け取ったデータをホスト装置及びディスクアレイユニットの他方へ送る。更に、この種の入出力制御装置の一つとして、特許文献１に記載の入出力制御装置は、ホスト装置との間でデータを授受するためにホスト装置と接続された第３の入出力ユニットと、ディスクアレイユニットとの間でデータを授受するためにディスクアレイユニットと接続された第４の入出力ユニットと、を更に備える（例えば、特許文献１を参照）。
【特許文献１】特開２００５−４７９１号公報
【０００４】
従って、この入出力制御装置によれば、第１の入出力ユニットが異常状態になった（障害が発生した）場合であっても、第３の入出力ユニットを用いることによりホスト装置との間でデータを授受することができる。また、第２の入出力ユニットが異常状態になった場合であっても、第４の入出力ユニットを用いることによりディスクアレイユニットとの間でデータを授受することができる。このように、この入出力制御装置によれば、第１の入出力ユニット及び第２の入出力ユニットのいずれが異常状態になった場合であっても、ホスト装置との間のデータの授受及びディスク装置との間のデータの授受の双方を維持する（冗長性を確保する）ことができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記入出力制御装置によれば、冗長性を確保するためには、少なくとも２つの予備の入出力ユニットを用意する必要があった。従って、入出力制御装置が備える入出力ユニットの数が過度に多いという問題があった。
【０００６】
このため、本発明の目的は、上述した課題である「冗長性を確保するための入出力ユニットの数が過度に多くなること」を解決することが可能な入出力制御装置を提供することにある。
【課題を解決するための手段】
【０００７】
かかる目的を達成するため本発明の一形態である入出力制御装置は、
第１の外部装置及び第２の外部装置の一方からのデータを受け取るとともにその受け取ったデータを当該第１の外部装置及び当該第２の外部装置の他方へ送る装置である。
【０００８】
更に、この入出力制御装置は、
上記第１の外部装置との間で上記データを授受する第１の入出力ユニットと、
上記第２の外部装置との間で上記データを授受する第２の入出力ユニットと、
上記第１の外部装置との間で上記データを授受する第１の作動状態と、上記第２の外部装置との間で上記データを授受する第２の作動状態と、を含む複数の作動状態のうちの１つに作動状態を設定可能な第３の入出力ユニットと、
上記第１の入出力ユニット又は上記第２の入出力ユニットが異常状態にあることを検出する異常状態検出手段と、
上記第１の入出力ユニットが異常状態にあることが上記異常状態検出手段により検出された場合に上記第３の入出力ユニットの作動状態を上記第１の作動状態に設定し、一方、上記第２の入出力ユニットが異常状態にあることが上記異常状態検出手段により検出された場合に当該第３の入出力ユニットの作動状態を上記第２の作動状態に設定する作動状態設定手段と、を備える。
【０００９】
また、本発明の他の形態であるディスクアレイ装置は、
書込データを記憶するとともに、当該記憶している書込データを読込データとして出力するディスクアレイユニットを備えるとともに、
上記書込データを出力し且つ上記読込データを入力するホスト装置及び上記ディスクアレイユニットの一方からの上記書込データ又は上記読込データであるデータを受け取るとともにその受け取ったデータを当該ホスト装置及び当該ディスクアレイユニットの他方へ送る装置である。
【００１０】
更に、このディスクアレイ装置は、
上記ディスクアレイユニットとの間で上記データを授受する第１の入出力ユニットと、
上記ホスト装置との間で上記データを授受する第２の入出力ユニットと、
上記ディスクアレイユニットとの間で上記データを授受する第１の作動状態と、上記ホスト装置との間で上記データを授受する第２の作動状態と、を含む複数の作動状態のうちの１つに作動状態を設定可能な第３の入出力ユニットと、
上記第１の入出力ユニット又は上記第２の入出力ユニットが異常状態にあることを検出する異常状態検出手段と、
上記第１の入出力ユニットが異常状態にあることが上記異常状態検出手段により検出された場合に上記第３の入出力ユニットの作動状態を上記第１の作動状態に設定し、一方、上記第２の入出力ユニットが異常状態にあることが上記異常状態検出手段により検出された場合に当該第３の入出力ユニットの作動状態を上記第２の作動状態に設定する作動状態設定手段と、を備える。
【００１１】
また、本発明の他の形態である入出力制御方法は、
第１の外部装置との間でデータを授受する第１の入出力ユニットと、第２の外部装置との間でデータを授受する第２の入出力ユニットと、を備えるとともに、前記第１の外部装置及び前記第２の外部装置の一方からのデータを受け取るとともにその受け取ったデータを当該第１の外部装置及び当該第２の外部装置の他方へ送る入出力制御装置を制御するための方法である。
【００１２】
更に、この入出力制御方法は、
前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることを検出する異常状態検出工程と、
前記第１の入出力ユニットが異常状態にあることが前記異常状態検出工程により検出された場合に第３の入出力ユニットの作動状態を前記第１の外部装置との間で前記データを授受する第１の作動状態に設定し、一方、前記第２の入出力ユニットが異常状態にあることが前記異常状態検出工程により検出された場合に当該第３の入出力ユニットの作動状態を前記第２の外部装置との間で前記データを授受する第２の作動状態に設定する作動状態設定工程と、を含む。
【発明の効果】
【００１３】
本発明は、以上のように構成されることにより、冗長性を確保するための入出力ユニットの数を少なくすることができる。
【発明を実施するための最良の形態】
【００１４】
本発明の一形態である入出力制御装置は、
第１の外部装置及び第２の外部装置の一方からのデータを受け取るとともにその受け取ったデータを当該第１の外部装置及び当該第２の外部装置の他方へ送る装置である。
【００１５】
更に、この入出力制御装置は、
上記第１の外部装置との間で上記データを授受する第１の入出力ユニットと、
上記第２の外部装置との間で上記データを授受する第２の入出力ユニットと、
上記第１の外部装置との間で上記データを授受する第１の作動状態と、上記第２の外部装置との間で上記データを授受する第２の作動状態と、を含む複数の作動状態のうちの１つに作動状態を設定可能な第３の入出力ユニットと、
上記第１の入出力ユニット又は上記第２の入出力ユニットが異常状態にあることを検出する異常状態検出手段と、
上記第１の入出力ユニットが異常状態にあることが上記異常状態検出手段により検出された場合に上記第３の入出力ユニットの作動状態を上記第１の作動状態に設定し、一方、上記第２の入出力ユニットが異常状態にあることが上記異常状態検出手段により検出された場合に当該第３の入出力ユニットの作動状態を上記第２の作動状態に設定する作動状態設定手段と、を備える。
【００１６】
これによれば、第１の入出力ユニットが異常状態になった場合、第３の入出力ユニットの作動状態が、第１の外部装置との間でデータを授受する第１の作動状態に設定される。一方、第２の入出力ユニットが異常状態になった場合、第３の入出力ユニットの作動状態が、第２の外部装置との間でデータを授受する第２の作動状態に設定される。
【００１７】
これにより、第３の入出力ユニットは、異常状態になった入出力ユニットとの間でデータを授受していた外部装置との間でデータを授受することができる。この結果、入出力ユニットが異常状態になってから、入出力制御装置が第１の外部装置及び第２の外部装置の双方との間でデータを正常に授受できるようになるまでの時間を十分に短くすることができる。
【００１８】
更に、第１の外部装置との間でデータを授受するための予備の入出力ユニットと、第２の外部装置との間でデータを授受するための予備の入出力ユニットと、の２つの入出力ユニットを用意する場合よりも、予備の（即ち、冗長性を確保するための）入出力ユニットの数を少なくすることもできる。
【００１９】
この場合、上記複数の作動状態は、上記第１の入出力ユニット又は上記第２の入出力ユニットが異常状態にあることを検出する第３の作動状態を含み、
上記異常状態検出手段は、上記第３の作動状態にて作動する上記第３の入出力ユニットからなることが好適である。
【００２０】
これによれば、第３の入出力ユニットが第３の作動状態にて作動している間に、第３の入出力ユニットは、第１の入出力ユニット又は第２の入出力ユニットが異常状態にあることを検出する。従って、第１の入出力ユニット又は第２の入出力ユニットが異常状態にあることを検出する装置を別途設ける必要がないので、入出力制御装置の製造コストを低減することができる。
【００２１】
更に、この場合、上記作動状態設定手段は、
上記第３の入出力ユニットと上記第１の外部装置とを接続する第１の接続状態と、当該第３の入出力ユニットと上記第２の外部装置とを接続する第２の接続状態と、を含む複数の接続状態の１つに接続状態を設定可能な切替器を含むとともに、
上記切替器の接続状態を上記第１の接続状態に設定することにより上記第３の入出力ユニットの作動状態を上記第１の作動状態に設定し、一方、当該切替器の接続状態を上記第２の接続状態に設定することにより当該第３の入出力ユニットの作動状態を上記第２の作動状態に設定するように構成されることが好適である。
【００２２】
加えて、この場合、上記作動状態設定手段は、上記第３の入出力ユニットが起動時に実行する処理を変更することにより当該第３の入出力ユニットの上記作動状態を変更するように構成され、且つ、上記第１の入出力ユニット又は上記第２の入出力ユニットが異常状態にある場合に当該第３の入出力ユニットを再起動するように構成されることが好適である。
【００２３】
更に、この場合、
上記第１の入出力ユニットは、上記切替器を介して上記第１の外部装置と接続されることにより当該第１の外部装置との間で上記データを授受するように構成され、
上記第２の入出力ユニットは、上記切替器を介して上記第２の外部装置と接続されることにより当該第２の外部装置との間で上記データを授受するように構成され、
上記第１の接続状態は、上記第１の入出力ユニットと上記第１の外部装置との接続を解除し、且つ、上記第３の入出力ユニットと当該第１の外部装置とを接続する状態であり、
上記第２の接続状態は、上記第２の入出力ユニットと上記第２の外部装置との接続を解除し、且つ、上記第３の入出力ユニットと当該第２の外部装置とを接続する状態であることが好適である。
【００２４】
これによれば、第１の入出力ユニットが異常状態となった場合には第１の入出力ユニットと第１の外部装置との間の接続が解除され、一方、第２の入出力ユニットが異常状態となった場合には第２の入出力ユニットと第２の外部装置との間の接続が解除される。従って、新たに接続された第３の入出力ユニットと外部装置（第１の外部装置又は第２の外部装置）との間のデータの授受をより確実に行うことができる。
【００２５】
加えて、この場合、
上記作動状態設定手段は、上記切替器を複数含むとともに、
上記切替器の１つである使用切替器が異常状態にあることを検出する切替器異常状態検出手段と、
上記使用切替器が異常状態にあることが上記切替器異常状態検出手段により検出された場合、当該使用切替器を介して接続されている上記入出力ユニット及び上記外部装置を、上記複数の切替器のうちの当該使用切替器以外の切替器を介して接続する切替器変更手段と、を備えることが好適である。
【００２６】
これによれば、使用切替器が異常状態になった場合であっても、その他の切替器を介して入出力ユニットと外部装置とが接続される。これにより、入出力ユニットと外部装置との間でデータを授受することができる。この結果、使用切替器が異常状態になってから、第１の外部装置及び第２の外部装置の双方との間でデータを正常に授受できるようになるまでの時間を十分に短くすることができる。
【００２７】
更に、この場合、
上記第１の外部装置は、上記データとしての書込データを上記第２の外部装置へ送るとともに当該第２の外部装置からの上記データとしての読込データを受け取るホスト装置であり、
上記第２の外部装置は、上記第１の外部装置からの上記書込データを記憶するとともに、当該記憶している書込データを上記読込データとして当該第１の外部装置へ送るディスクアレイユニットであることが好適である。
【００２８】
互いにデータを授受するディスクアレイユニット及びホスト装置は、稼働され続けることが多い。従って、上述した入出力制御装置を、ディスクアレイユニット及びホスト装置の間のデータの授受を制御する装置として用いることにより、ディスクアレイユニット及びホスト装置の間のデータの授受を確実に行うことができる。
【００２９】
また、本発明の他の形態であるディスクアレイ装置は、
書込データを記憶するとともに、当該記憶している書込データを読込データとして出力するディスクアレイユニットを備えるとともに、
上記書込データを出力し且つ上記読込データを入力するホスト装置及び上記ディスクアレイユニットの一方からの上記書込データ又は上記読込データであるデータを受け取るとともにその受け取ったデータを当該ホスト装置及び当該ディスクアレイユニットの他方へ送る装置である。
【００３０】
更に、このディスクアレイ装置は、
上記ディスクアレイユニットとの間で上記データを授受する第１の入出力ユニットと、
上記ホスト装置との間で上記データを授受する第２の入出力ユニットと、
上記ディスクアレイユニットとの間で上記データを授受する第１の作動状態と、上記ホスト装置との間で上記データを授受する第２の作動状態と、を含む複数の作動状態のうちの１つに作動状態を設定可能な第３の入出力ユニットと、
上記第１の入出力ユニット又は上記第２の入出力ユニットが異常状態にあることを検出する異常状態検出手段と、
上記第１の入出力ユニットが異常状態にあることが上記異常状態検出手段により検出された場合に上記第３の入出力ユニットの作動状態を上記第１の作動状態に設定し、一方、上記第２の入出力ユニットが異常状態にあることが上記異常状態検出手段により検出された場合に当該第３の入出力ユニットの作動状態を上記第２の作動状態に設定する作動状態設定手段と、を備える。
【００３１】
この場合、上記複数の作動状態は、上記第１の入出力ユニット又は上記第２の入出力ユニットが異常状態にあることを検出する第３の作動状態を含み、
上記異常状態検出手段は、上記第３の作動状態にて作動する上記第３の入出力ユニットからなることが好適である。
【００３２】
更に、この場合、上記作動状態設定手段は、
上記第３の入出力ユニットと上記ディスクアレイユニットとを接続する第１の接続状態と、当該第３の入出力ユニットと上記ホスト装置とを接続する第２の接続状態と、を含む複数の接続状態の１つに接続状態を設定可能な切替器を含むとともに、
上記切替器の接続状態を上記第１の接続状態に設定することにより上記第３の入出力ユニットの作動状態を上記第１の作動状態に設定し、一方、当該切替器の接続状態を上記第２の接続状態に設定することにより当該第３の入出力ユニットの作動状態を上記第２の作動状態に設定するように構成されることが好適である。
【００３３】
加えて、この場合、上記作動状態設定手段は、上記第３の入出力ユニットが起動時に実行するプログラムを変更することにより当該第３の入出力ユニットの上記作動状態を変更するように構成され、且つ、上記第１の入出力ユニット又は上記第２の入出力ユニットが異常状態にある場合に当該第３の入出力ユニットを再起動するように構成されることが好適である。
【００３４】
また、本発明の他の形態である入出力制御方法は、
第１の外部装置との間でデータを授受する第１の入出力ユニットと、第２の外部装置との間でデータを授受する第２の入出力ユニットと、を備えるとともに、前記第１の外部装置及び前記第２の外部装置の一方からのデータを受け取るとともにその受け取ったデータを当該第１の外部装置及び当該第２の外部装置の他方へ送る入出力制御装置を制御するための方法である。
【００３５】
更に、この入出力制御方法は、
前記第１の入出力ユニット又は前記第２の入出力ユニットが異常状態にあることを検出する異常状態検出工程と、
前記第１の入出力ユニットが異常状態にあることが前記異常状態検出工程により検出された場合に第３の入出力ユニットの作動状態を前記第１の外部装置との間で前記データを授受する第１の作動状態に設定し、一方、前記第２の入出力ユニットが異常状態にあることが前記異常状態検出工程により検出された場合に当該第３の入出力ユニットの作動状態を前記第２の外部装置との間で前記データを授受する第２の作動状態に設定する作動状態設定工程と、を含む。
【００３６】
この場合、上記作動状態設定工程は、上記第３の入出力ユニットを、上記第１の入出力ユニット又は上記第２の入出力ユニットが異常状態にあることを検出する第３の作動状態に設定する工程を含むことが好適である。
【００３７】
上述した構成を有するディスクアレイ装置及び入出力制御方法の発明であっても、上記入出力制御装置と同様の作用を有するために、上述した本発明の目的を達成することができる。
【００３８】
以下、本発明に係る、入出力制御方法を用いる入出力制御装置及びディスクアレイ装置の各実施形態について図１〜図２０を参照しながら説明する。
【００３９】
＜第１実施形態＞
図１に示したように、第１実施形態に係るディスクアレイ装置１は、ホスト装置（第１の外部装置）２と接続されている。
【００４０】
ホスト装置２は、図示しないバスを介して互いに接続された中央処理装置（本例では、ＣＰＵ）、記憶装置（本例では、メモリ）、通信装置及びインターフェース部を含む。通信装置は、図示しない通信回線を介して複数の端末装置と接続されていて、それらの端末装置との間でデータを授受する。インターフェース部は、ディスクアレイ装置１（後述する入出力制御装置２０）との間でデータを授受するための、第１ポート２ａ及び第２ポート２ｂを含む。
【００４１】
ホスト装置２は、端末装置からのデータに基づいて書込データを生成し、生成した書込データを含む書込要求情報をディスクアレイ装置１へ送る（出力する）。更に、書込要求情報は、書込データに加えて、ファイルシステム内の書込ファイル（例えば、ルートディレクトリからのパスを含むファイル名）を表す書込ファイル情報と、書込データをその書込ファイルに書き込む（書き出す）ことを要求する旨を表す要求情報と、を含む。
【００４２】
一方、ホスト装置２は、端末装置からのデータに基づいて読込要求情報をディスクアレイ装置１へ送る。ここで、読込要求情報は、ファイルシステム内の読込ファイル（例えば、ルートディレクトリからのパスを含むファイル名）を表す読込ファイル情報と、その読込ファイル内のデータを読み込む（読み出す）ことを要求する旨を表す要求情報と、を含む。更に、ホスト装置２は、読込要求情報に応じてディスクアレイ装置１から送られてくる情報であって読込データを含む情報である読込完了情報を受け取る（入力する）。
【００４３】
ディスクアレイ装置１は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）を構成する装置である。ディスクアレイ装置１は、ディスクアレイユニット（第２の外部装置）１０と、入出力制御装置２０と、を備える。
【００４４】
ディスクアレイユニット１０は、入出力制御装置２０との間でデータを授受するための、第１ポート１０ａ及び第２ポート１０ｂを含むインターフェース部を備える。更に、ディスクアレイユニット１０は、複数（本例では、１６個）のハードディスク装置（ＨＤＤ）１０ｃ１〜１０ｃ１６を有する。各ＨＤＤ１０ｃ１〜１０ｃ１６は、第１ポート１０ａ及び第２ポート１０ｂのそれぞれと接続されている。
【００４５】
ディスクアレイユニット１０は、第１ポート１０ａ又は第２ポート１０ｂを介して入出力制御装置２０から書込指示情報を受け取る。ここで、書込指示情報は、ＨＤＤ１０ｃ１〜１０ｃ１６毎の書込領域（セクタ等）を表すディスク毎書込領域情報と、各ＨＤＤ１０ｃ１〜１０ｃ１６用のディスク毎書込データと、を含む。
【００４６】
ディスクアレイユニット１０は、受け取った書込指示情報に基づいて各ＨＤＤ１０ｃ１〜１０ｃ１６にデータを記憶させる。具体的には、ディスクアレイユニット１０は、ディスク毎書込領域情報が表すＨＤＤ１０ｃ１〜１０ｃ１６毎の書込領域にて、そのＨＤＤ１０ｃ１〜１０ｃ１６用のディスク毎書込データをそのＨＤＤ１０ｃ１〜１０ｃ１６に記憶させる（格納する、書き込む）。
【００４７】
ディスクアレイユニット１０は、第１ポート１０ａ又は第２ポート１０ｂを介して入出力制御装置２０から読込指示情報を受け取る。ここで、読込指示情報は、ＨＤＤ１０ｃ１〜１０ｃ１６毎の読込領域（セクタ等）を表すディスク毎読込領域情報を含む。
【００４８】
ディスクアレイユニット１０は、受け取った読込指示情報に基づいて各ＨＤＤ１０ｃ１〜１０ｃ１６からディスク毎読込データを読み込む（読み出す）。具体的には、ディスクアレイユニット１０は、ディスク毎読込領域情報が表すＨＤＤ１０ｃ１〜１０ｃ１６毎の読込領域にて、そのＨＤＤ１０ｃ１〜１０ｃ１６に記憶（格納）されているディスク毎書込データをディスク毎読込データとして読み込む。
【００４９】
ディスクアレイユニット１０は、各ＨＤＤ１０ｃ１〜１０ｃ１６から読み込んだディスク毎読込データを含むディスク毎読込完了情報を入出力制御装置２０へ送る（出力する）。
【００５０】
入出力制御装置２０は、第１ホスト側ポート２０ａ１と、第１ディスク側ポート２０ｂ１と、第２ホスト側ポート２０ａ２と、第２ディスク側ポート２０ｂ２と、を含むインターフェース部を備える。第１ホスト側ポート２０ａ１は、ホスト装置２の第１ポート２ａと接続されている。第２ホスト側ポート２０ａ２は、ホスト装置２の第２ポート２ｂと接続されている。第１ディスク側ポート２０ｂ１は、ディスクアレイユニット１０の第１ポート１０ａと接続されている。第２ディスク側ポート２０ｂ２は、ディスクアレイユニット１０の第２ポート１０ｂと接続されている。
【００５１】
インターフェース部は、第１ホスト側ポート２０ａ１又は第２ホスト側ポート２０ａ２を介してホスト装置２との間でデータを授受する。更に、インターフェース部は、第１ディスク側ポート２０ｂ１又は第２ディスク側ポート２０ｂ２を介してディスクアレイユニット１０との間でデータを授受する。
【００５２】
更に、入出力制御装置２０は、第１切替器２１と、第２切替器２２と、複数（本例では、６つ）のアダプタ（入出力ユニット）２３Ａ〜２３Ｆと、共有メモリ２４と、を備える。
【００５３】
第１切替器２１は、複数（本例では、５つ）の端子２１ａ１〜２１ａ５を有する。第１切替器２１は、アダプタ２３Ａ〜２３Ｃからの接続指示信号に応答して、端子２１ａ１〜２１ａ５のうちの任意の２つの端子を電気的に接続する。一方、第１切替器２１は、アダプタ２３Ａ〜２３Ｃからの解除指示信号に応答して、接続されている２つの端子間の接続を解除（遮断）する。
【００５４】
加えて、第２切替器２２も、第１切替器２１と同様に複数（本例では、５つ）の端子２２ａ１〜２２ａ５を有する。第２切替器２２も、第１切替器２１と同様に、接続指示信号に応答して２つの端子を接続するとともに、解除指示信号に応答して接続されている２つの端子間の接続を解除する。
【００５５】
図２に示したように、アダプタ２３Ａは、バスを介して互いに接続された中央処理装置（本例では、ＣＰＵ）２３Ａ１、記憶装置（本例では、メモリ）２３Ａ２及びインターフェース部２３Ａ３を備える。
【００５６】
メモリ２３Ａ２には、後述する図３，５〜９に示した各プログラムからなる、起動用プログラムＰ１、ホストモード用プログラムＰ２、ディスクモード用プログラムＰ３、及び、スペアモード用プログラムＰ４、が予め記憶（格納）されている。
【００５７】
インターフェース部２３Ａ３は、第１切替器２１の端子２１ａ３及び共有メモリ２４のそれぞれと接続されている。これにより、インターフェース部２３Ａ３は、第１切替器２１の端子２１ａ３及び共有メモリ２４のそれぞれとの間でデータ（指示信号、要求情報及び指示情報等を含む）を授受する。
【００５８】
また、インターフェース部２３Ａ３は、状態確認信号及び状態応答信号を授受できるように、アダプタ２３Ｂ及びアダプタ２３Ｃのそれぞれと接続されている。
更に、アダプタ２３Ａは、アダプタ２３Ｂ又はアダプタ２３Ｃから状態確認信号（本例では、制御命令を含む信号）を受信すると、その状態確認信号の送信元のアダプタへ直ちに状態応答信号を送信する。
【００５９】
アダプタ２３Ｂ〜アダプタ２３Ｆのそれぞれも、アダプタ２３Ａと同様の構成を有している。アダプタ２３Ｂは、データを授受できるように、第１切替器２１の端子２１ａ４及び共有メモリ２４のそれぞれと接続されている。また、アダプタ２３Ｂは、状態確認信号及び状態応答信号を授受できるように、アダプタ２３Ａ及びアダプタ２３Ｃのそれぞれと接続されている。
【００６０】
同様に、アダプタ２３Ｃは、データを授受できるように、第１切替器２１の端子２１ａ５及び共有メモリ２４のそれぞれと接続されている。また、アダプタ２３Ｃは、状態確認信号及び状態応答信号を授受できるように、アダプタ２３Ａ及びアダプタ２３Ｂのそれぞれと接続されている。
【００６１】
同様に、アダプタ２３Ｄは、データを授受できるように、第２切替器２２の端子２２ａ３及び共有メモリ２４のそれぞれと接続されている。また、アダプタ２３Ｄは、状態確認信号及び状態応答信号を授受できるように、アダプタ２３Ｅ及びアダプタ２３Ｆのそれぞれと接続されている。
【００６２】
同様に、アダプタ２３Ｅは、データを授受できるように、第２切替器２２の端子２２ａ４及び共有メモリ２４のそれぞれと接続されている。また、アダプタ２３Ｅは、状態確認信号及び状態応答信号を授受できるように、アダプタ２３Ｄ及びアダプタ２３Ｆのそれぞれと接続されている。
【００６３】
同様に、アダプタ２３Ｆは、データを授受できるように、第２切替器２２の端子２２ａ５及び共有メモリ２４のそれぞれと接続されている。また、アダプタ２３Ｆは、状態確認信号及び状態応答信号を授受できるように、アダプタ２３Ｄ及びアダプタ２３Ｅのそれぞれと接続されている。
なお、アダプタ２３Ａ〜２３Ｆのそれぞれには、アダプタを識別する情報としてのアダプタＩＤ「＃１」〜「＃６」がこの順に付されている。
【００６４】
また、共有メモリ２４は、各アダプタ２３Ａ〜２３Ｆからのデータを記憶するとともに、記憶しているデータを各アダプタ２３Ａ〜２３Ｆへ送る。
【００６５】
なお、第１ホスト側ポート２０ａ１、第１切替器２１、アダプタ２３Ａ〜２３Ｃ及び第１ディスク側ポート２０ｂ１は、第１クラスタＣＬ１を構成している。また、第２ホスト側ポート２０ａ２、第２切替器２２、アダプタ２３Ｄ〜２３Ｆ及び第２ディスク側ポート２０ｂ２は、第２クラスタＣＬ２を構成している。更に、第１クラスタＣＬ１にはクラスタを識別する情報としてのクラスタＩＤ「＃１」が付され、第２クラスタＣＬ２にはクラスタＩＤ「＃２」が付されている。
【００６６】
次に、上述したディスクアレイ装置１の作動の概要について説明する。
先ず、ディスクアレイ装置１は、第１ホスト側ポート２０ａ１とアダプタ２３Ａとを接続するとともに、第１ディスク側ポート２０ｂ１とアダプタ２３Ｂとを接続する接続状態に、第１切替器２１の接続状態を設定する。更に、ディスクアレイ装置１は、アダプタ２３Ａをホストモードにより作動させるとともに、アダプタ２３Ｂをディスクモードにより作動させる。
【００６７】
そして、ホスト装置２は、第１ポート２ａを介してディスクアレイ装置１へ書込データを送る。ディスクアレイ装置１は、ホスト装置２からの書込データを、アダプタ２３Ａ、共有メモリ２４及びアダプタ２３Ｂをこの順に経由させてディスクアレイユニット１０へ送る。そして、ディスクアレイユニット１０は、受け取った書込データを記憶する。一方、ディスクアレイユニット１０は、ホスト装置２からの要求に応じて、記憶している書込データを読込データとして、アダプタ２３Ｂ、共有メモリ２４及びアダプタ２３Ａをこの順に経由させてホスト装置２へ送る。
【００６８】
更に、ディスクアレイ装置１は、アダプタ２３Ｃをスペアモードにより作動させる。アダプタ２３Ｃは、アダプタ２３Ａ又はアダプタ２３Ｂが異常状態にあることを検出するようになっている。
【００６９】
アダプタ２３Ａが異常状態にあることをアダプタ２３Ｃが検出した場合、ディスクアレイ装置１は、第１ホスト側ポート２０ａ１とアダプタ２３Ａとの接続を解除するとともに、第１ホスト側ポート２０ａ１とアダプタ２３Ｃとを接続する接続状態に、第１切替器２１の接続状態を設定する。更に、ディスクアレイ装置１は、アダプタ２３Ｃをホストモードにより作動させる。
【００７０】
一方、アダプタ２３Ｂが異常状態にあることをアダプタ２３Ｃが検出した場合、ディスクアレイ装置１は、第１ディスク側ポート２０ｂ１とアダプタ２３Ｂとの接続を解除するとともに、第１ディスク側ポート２０ｂ１とアダプタ２３Ｃとを接続する接続状態に、第１切替器２１の接続状態を設定する。更に、ディスクアレイ装置１は、アダプタ２３Ｃをディスクモードにより作動させる。
【００７１】
これにより、アダプタ２３Ｃは、異常状態になったアダプタとの間でデータを授受していた外部装置（ホスト装置２又はディスクアレイユニット１０）との間でデータを授受することができる。
なお、第２クラスタＣＬ２は、ホスト装置２が第２ポート２ｂを介してディスクアレイ装置１へデータを送る場合に使用される。また、第２クラスタＣＬ２も、第１クラスタＣＬ１と同様に作動する。
【００７２】
次に、上述したディスクアレイ装置１の作動の詳細について説明する。
アダプタ２３Ａが起動される（アダプタ２３Ａへ電源が供給され始める）と、アダプタ２３ＡのＣＰＵ２３Ａ１は、図３にフローチャートにより示した起動プログラムを起動用プログラムＰ１として実行するようになっている。なお、他のアダプタ２３Ｂ〜２３Ｆもアダプタ２３Ａと同様にこの起動プログラムを実行する。また、図３のプログラムの処理が実行されることは、作動状態設定手段（作動状態設定工程）の機能の一部が達成されることに対応している。
【００７３】
具体的に述べると、ＣＰＵ２３Ａ１は、ステップ３０５にて、アダプタ属性情報テーブルを共有メモリ２４から読み込む。このアダプタ属性情報テーブルは、アダプタ毎にそのアダプタが所属する（そのアダプタを含む）クラスタとそのアダプタの作動モードとを規定する情報であって、アダプタＩＤと作動モードとクラスタＩＤとからなる情報であるアダプタ属性情報を複数含む。このアダプタ属性情報テーブルは、予め共有メモリ２４に記憶されている。
【００７４】
いま、このアダプタ属性情報テーブルが、図４に示したように設定されている場合を想定して説明を続ける。即ち、このアダプタ属性情報テーブルにおいては、アダプタ２３Ａ〜２３Ｃ（即ち、アダプタＩＤ「＃１」〜「＃３」のアダプタ）が第１クラスタＣＬ１（即ち、クラスタＩＤ「＃１」のクラスタ）に所属し、且つ、アダプタ２３Ｄ〜２３Ｆ（即ち、アダプタＩＤ「＃４」〜「＃６」のアダプタ）が第２クラスタＣＬ２（即ち、クラスタＩＤ「＃２」のクラスタ）に所属することが規定されている。
【００７５】
加えて、このアダプタ属性情報テーブルにおいては、アダプタ２３Ａ及びアダプタ２３Ｄの作動モードがホストモードであり、アダプタ２３Ｂ及びアダプタ２３Ｅの作動モードがディスクモードであり、アダプタ２３Ｃ及びアダプタ２３Ｆの作動モードがスペアモードであることが規定されている。
【００７６】
そして、ＣＰＵ２３Ａ１は、ステップ３１０にて、上記ステップ３０５にて読み込んだアダプタ属性情報テーブルと、アダプタ２３Ａ（自アダプタ）のアダプタＩＤと、に基づいて自アダプタ２３Ａの作動モード及び自アダプタ２３Ａが所属するクラスタ（自クラスタ）のクラスタＩＤを取得する。ここで、自アダプタのアダプタＩＤは、入出力制御装置２０から別途通知される。
【００７７】
上記仮定に従えば、ＣＰＵ２３Ａ１は、自アダプタ２３Ａの作動モードとしてホストモードを取得するとともに、自アダプタ２３Ａが所属するクラスタ（自クラスタ）のクラスタＩＤとして「＃１」を取得する。
【００７８】
次いで、ＣＰＵ２３Ａ１は、ステップ３１５にて、取得した作動モードがホストモードであるか否かを判定する。そして、ＣＰＵ２３Ａ１は、「Ｙｅｓ」と判定してステップ３２０に進む。
【００７９】
そして、ＣＰＵ２３Ａ１は、自クラスタ（クラスタＩＤ「＃１」のクラスタ、即ち、第１クラスタＣＬ１）内のホスト側ポート（第１ホスト側ポート２０ａ１）が接続された端子２１ａ１と、自アダプタ２３Ａが接続された端子２１ａ３と、を接続させるための接続指示信号を自クラスタ内の切替器（第１切替器２１）へ送る。これにより、第１切替器２１の接続状態は、ホスト装置２とアダプタ２３Ａとを接続する接続状態に設定される。
【００８０】
次いで、ＣＰＵ２３Ａ１は、ステップ３２５にて、ホストモード用プログラムＰ２をこの起動プログラムの実行に係るプロセスに独立したプロセスとして実行する。そして、ＣＰＵ２３Ａ１は、ステップ３９９に進んでこの起動プログラムの実行を一旦終了する。即ち、この状態においては、アダプタ２３Ａは、第１切替器２１を介してホスト装置２と接続されることによりホスト装置２との間でデータを授受する第１の入出力ユニットを構成している。
【００８１】
一方、アダプタ２３ＢのＣＰＵ２３Ｂ１は、この起動プログラムの実行を開始してステップ３１０に進んだとき、自アダプタ２３Ｂの作動モードとしてディスクモードを取得する。
【００８２】
従って、ＣＰＵ２３Ｂ１は、ステップ３１５にて「Ｎｏ」と判定してステップ３３０に進み、取得した作動モードがディスクモードであるか否かを判定する。そして、ＣＰＵ２３Ｂ１は、「Ｙｅｓ」と判定してステップ３３５に進む。
【００８３】
次いで、ＣＰＵ２３Ｂ１は、自クラスタ（第１クラスタＣＬ１）内のディスク側ポート（第１ディスク側ポート２０ｂ１）が接続された端子２１ａ２と、自アダプタ２３Ｂが接続された端子２１ａ４と、を接続させるための接続指示信号を自クラスタ内の切替器（第１切替器２１）へ送る。これにより、第１切替器２１の接続状態は、ディスクアレイユニット１０とアダプタ２３Ｂとを接続する接続状態に設定される。即ち、第１切替器２１の接続状態は、ホスト装置２とアダプタ２３Ａとを接続し、且つ、ディスクアレイユニット１０とアダプタ２３Ｂとを接続する接続状態に設定される。
【００８４】
その後、ＣＰＵ２３Ｂ１は、ステップ３４０にて、ディスクモード用プログラムＰ３をこの起動プログラムの実行に係るプロセスに独立したプロセスとして実行する。そして、ＣＰＵ２３Ｂ１は、ステップ３９９に進んでこの起動プログラムの実行を一旦終了する。即ち、この状態においては、アダプタ２３Ｂは、第１切替器２１を介してディスクアレイユニット１０と接続されることによりディスクアレイユニット１０との間でデータを授受する第２の入出力ユニットを構成している。
【００８５】
また、アダプタ２３ＣのＣＰＵ２３Ｃ１は、この起動プログラムの実行を開始してステップ３１０に進んだとき、自アダプタ２３Ｃの作動モードとしてスペアモードを取得する。
【００８６】
従って、ＣＰＵ２３Ｃ１は、ステップ３１５及びステップ３３０にて「Ｎｏ」と判定してステップ３４５に進み、スペアモード用プログラムＰ４をこの起動プログラムの実行に係るプロセスに独立したプロセスとして実行する。そして、ＣＰＵ２３Ｃ１は、ステップ３９９に進んでこの起動プログラムの実行を一旦終了する。即ち、この状態においては、アダプタ２３Ｃは、第３の入出力ユニットを構成している。
【００８７】
上述したように、アダプタ２３ＡのＣＰＵ２３Ａ１がステップ３２５にてホストモード用プログラムＰ２を実行することにより、ＣＰＵ２３Ａ１は、ホストモード用プログラムＰ２の一部を構成する書込要求受信プログラムを実行する。この書込要求受信プログラムは、図５にフローチャートにより示したプログラムである。
【００８８】
具体的に述べると、ＣＰＵ２３Ａ１は、ステップ５０５にて、ホスト装置２から書込要求情報を受信するまで待機する。
そして、ホスト装置２が第１ポート２ａを介して書込要求情報をディスクアレイ装置１へ送ると、ＣＰＵ２３Ａ１は、「Ｙｅｓ」と判定してステップ５１０に進み、受信した書込要求情報を共有メモリ２４に格納する。そして、ＣＰＵ２３Ａ１は、ステップ５０５に戻り、再び、ホスト装置２から書込要求情報を受信するまで待機する。
【００８９】
一方、アダプタ２３ＢのＣＰＵ２３Ｂ１がステップ３４０にてディスクモード用プログラムＰ３を実行することにより、ＣＰＵ２３Ｂ１は、ディスクモード用プログラムＰ３の一部を構成する書込指示送信プログラムを実行する。この書込指示送信プログラムは、図６にフローチャートにより示したプログラムである。
【００９０】
具体的に述べると、ＣＰＵ２３Ｂ１は、ステップ６０５にて、共有メモリ２４に書込要求情報が格納されるまで待機する。この状態においては、アダプタ２３Ａにより共有メモリ２４に書込要求情報が格納されている。
【００９１】
従って、ＣＰＵ２３Ｂ１は、「Ｙｅｓ」と判定してステップ６１０に進み、共有メモリ２４に格納されている書込要求情報を取得するとともに、その書込要求情報を共有メモリ２４から消去する。更に、ＣＰＵ２３Ｂ１は、取得した書込要求情報に基づいて書込指示情報を生成する。
【００９２】
そして、ＣＰＵ２３Ｂ１は、ステップ６１５にて、生成した書込指示情報をディスクアレイユニット１０へ送る。これにより、ディスクアレイユニット１０は、受け取った書込指示情報に基づいて各ＨＤＤ１０ｃ１〜１０ｃ１６にディスク毎書込データを記憶させる。そして、ＣＰＵ２３Ｂ１は、ステップ６０５に戻り、再び、共有メモリ２４に書込要求情報が格納されるまで待機する。
【００９３】
このようにして、ホスト装置２は、書込データをディスクアレイユニット１０へ送り、ディスクアレイユニット１０は、ホスト装置２から受け取った書込データを記憶する。
【００９４】
加えて、アダプタ２３ＡのＣＰＵ２３Ａ１は、ホストモード用プログラムＰ２の一部を構成する読込要求受信プログラムを実行する。この読込要求受信プログラムは、図７にフローチャートにより示したプログラムである。
【００９５】
具体的に述べると、ＣＰＵ２３Ａ１は、ステップ７０５にて、ホスト装置２から読込要求情報を受信するまで待機する。
ホスト装置２が第１ポート２ａを介して読込要求情報をディスクアレイ装置１へ送ると、ＣＰＵ２３Ａ１は、「Ｙｅｓ」と判定してステップ７１０に進み、受信した読込要求情報を共有メモリ２４に格納する。
【００９６】
次いで、ＣＰＵ２３Ａ１は、ステップ７１５にて、共有メモリ２４にディスク毎読込完了情報が格納されるまで待機する。
【００９７】
一方、アダプタ２３ＢのＣＰＵ２３Ｂ１がステップ３４０にてディスクモード用プログラムＰ３を実行することにより、ＣＰＵ２３Ｂ１は、ディスクモード用プログラムＰ３の一部を構成する読込指示送信プログラムを実行する。この読込指示送信プログラムは、図８にフローチャートにより示したプログラムである。
【００９８】
具体的に述べると、ＣＰＵ２３Ｂ１は、ステップ８０５にて、共有メモリ２４に読込要求情報が格納されるまで待機する。この状態においては、アダプタ２３Ａにより共有メモリ２４に読込要求情報が格納されている。
【００９９】
従って、ＣＰＵ２３Ｂ１は、「Ｙｅｓ」と判定してステップ８１０に進み、共有メモリ２４に格納されている読込要求情報を取得するとともに、その読込要求情報を共有メモリ２４から消去する。更に、ＣＰＵ２３Ｂ１は、取得した読込要求情報に基づいて読込指示情報を生成する。
【０１００】
そして、ＣＰＵ２３Ｂ１は、ステップ８１５にて、生成した読込指示情報をディスクアレイユニット１０へ送る。次いで、ＣＰＵ２３Ｂ１は、ステップ８２０にて、ディスクアレイユニット１０からディスク毎読込完了情報を受信する（ディスク毎読込完了情報の受信が完了する）まで待機する。
【０１０１】
一方、ディスクアレイユニット１０は、読込指示情報を受け取ると、受け取った読込指示情報に基づいて各ＨＤＤ１０ｃ１〜１０ｃ１６からディスク毎読込データを読み込む。そして、ディスクアレイユニット１０は、各ＨＤＤ１０ｃ１〜１０ｃ１６から読み込んだディスク毎読込データを含むディスク毎読込完了情報をアダプタ２３Ｂへ送る。
【０１０２】
そして、アダプタ２３ＢのＣＰＵ２３Ｂ１は、ディスクアレイユニット１０からのディスク毎読込完了情報の受信が完了すると、ステップ８２０にて「Ｙｅｓ」と判定してステップ８２５に進み、受信したディスク毎読込完了情報を共有メモリ２４に格納する。そして、ＣＰＵ２３Ｂ１は、ステップ８０５に戻り、再び、共有メモリ２４に読込要求情報が格納されるまで待機する。
【０１０３】
一方、アダプタ２３ＡのＣＰＵ２３Ａ１は、共有メモリ２４にディスク毎読込完了情報が格納されると、ステップ７１５にて「Ｙｅｓ」と判定してステップ７２０に進む。そして、ＣＰＵ２３Ａ１は、共有メモリ２４に格納されているディスク毎読込完了情報を取得するとともに、そのディスク毎読込完了情報を共有メモリ２４から消去する。
【０１０４】
そして、ＣＰＵ２３Ａ１は、取得したディスク毎読込完了情報に基づいて読込完了情報を生成する。ここで、読込完了情報は、ディスク毎読込完了情報に含まれるディスク毎読込データを連結した読込データを含む情報である。
次いで、ＣＰＵ２３Ａ１は、ステップ７２５にて、生成した読込完了情報をホスト装置２へ送る。そして、ＣＰＵ２３Ａ１は、ステップ７０５に戻り、再び、ホスト装置２から読込要求情報を受信するまで待機する。
【０１０５】
このようにして、ディスクアレイユニット１０は、ホスト装置２からの要求に応じて、記憶している書込データを読込データとしてホスト装置２へ送り、ホスト装置２は、ディスクアレイユニット１０からの読込データを受け取る。
【０１０６】
一方、アダプタ２３ＣのＣＰＵ２３Ｃ１がステップ３４５にてスペアモード用プログラムＰ４を実行することにより、ＣＰＵ２３Ｃ１は、スペアモード用プログラムＰ４を構成する自クラスタ用作動状態変更プログラムを所定のアダプタ監視周期（本例では、５秒）が経過する毎に実行する。この自クラスタ用作動状態変更プログラムは、図９にフローチャートにより示したプログラムである。
【０１０７】
具体的に述べると、ＣＰＵ２３Ｃ１は、ステップ９０５にて、上記ステップ３０５にて読み込んだアダプタ属性情報テーブルと、上記ステップ３１０にて取得した自クラスタのクラスタＩＤ（ここでは、「＃１」）と、に基づいて自クラスタ内のアダプタのアダプタＩＤのリストを作成する。即ち、作成されるリストは、「＃１」、「＃２」及び「＃３」からなる。
【０１０８】
次いで、ＣＰＵ２３Ｃ１は、ステップ９１０にて、リスト内にアダプタＩＤが存在しているか否かを判定する。この時点では、ＣＰＵ２３Ｃ１は、「Ｙｅｓ」と判定してステップ９１５に進み、リストからアダプタＩＤを１つ取得するとともに、取得したアダプタＩＤをリストから削除（消去）する。ここでは、ＣＰＵ２３Ｃ１は、アダプタＩＤ「＃１」を取得する。
【０１０９】
そして、ＣＰＵ２３Ｃ１は、ステップ９２０にて、取得したアダプタＩＤのアダプタ（ここでは、アダプタ２３Ａ）へ状態確認信号を送信する。
【０１１０】
次いで、ＣＰＵ２３Ｃ１は、ステップ９２５にて、状態確認信号を送信してから所定の待機時間が経過するまでの間に上記アダプタ２３Ａから上記状態確認信号に応じた状態応答信号を受信したか否か（即ち、アダプタ２３Ａが正常に作動しているか否か）を判定する。
【０１１１】
なお、取得したアダプタＩＤと自アダプタのアダプタＩＤとが一致している場合（この例では、取得したアダプタＩＤが「＃３」である場合）には、ＣＰＵ２３Ｃ１は、状態確認信号を送信することなく、自己診断用の処理を実行することにより、自アダプタ２３Ｃが正常に作動しているか否かを判定してもよい。
また、ステップ９２０及びステップ９２５の処理が実行されることは、異常状態検出手段（異常状態検出工程）の機能が達成されることに対応している。
【０１１２】
いま、アダプタ２３Ａ、アダプタ２３Ｂ及びアダプタ２３Ｃのいずれもが正常に作動している（異常状態となっていない）場合を想定して説明を続ける。
【０１１３】
この場合、アダプタ２３Ａは、状態確認信号を受信すると、その状態確認信号の送信元のアダプタ２３Ｃへ直ちに状態応答信号を送信する。従って、ＣＰＵ２３Ｃ１は、状態確認信号を送信してから上記待機時間が経過するまでの間にアダプタ２３Ａから上記状態応答信号を受信する。従って、ＣＰＵ２３Ｃ１は、ステップ９２５にて「Ｙｅｓ」と判定してステップ９１０に戻り、リスト内にアダプタＩＤが存在しなくなるまで、ステップ９１０〜９２５の処理を繰り返し実行する。
【０１１４】
即ち、ＣＰＵ２３Ｃ１は、アダプタＩＤ「＃２」のアダプタ２３Ｂ及びアダプタＩＤ「＃３」のアダプタ２３Ｃのそれぞれも正常に作動している（即ち、状態確認信号に応じて状態応答信号を送信する）ことを確認する。
【０１１５】
その後、ＣＰＵ２３Ｃ１がステップ９１０に進んだとき、ＣＰＵ２３Ｃ１は、ステップ９１０にて「Ｎｏ」と判定してステップ９９９に直接進み、この自クラスタ用作動状態変更プログラムの実行を一旦終了する。
即ち、この状態においては、アダプタ２３Ｃは、アダプタ２３Ａ又はアダプタ２３Ｂが異常状態にあることを検出する第３の作動状態にて作動する。
【０１１６】
次に、アダプタ２３Ｂ及びアダプタ２３Ｃのいずれもが正常に作動している状態においてアダプタ２３Ａが状態確認信号を受信しても状態応答信号を送信できない状態となった（異常状態となった）場合について説明を続ける。
【０１１７】
この場合、アダプタ２３ＣのＣＰＵ２３Ｃ１がステップ９２５に進んだとき、ＣＰＵ２３Ｃ１は、アダプタ２３Ａへ状態確認信号を送信してから上記待機時間が経過するまでの間にアダプタ２３Ａから上記状態応答信号を受信しない。
【０１１８】
従って、ＣＰＵ２３Ｃ１は、「Ｎｏ」と判定してステップ９３０に進み、上記ステップ９１５にて取得したアダプタＩＤ（ここでは、「＃１」）と、自アダプタのアダプタＩＤ（ここでは、「＃３」）と、が相違しているか否かを判定する。
【０１１９】
この状態においては、ＣＰＵ２３Ｃ１は、「Ｙｅｓ」と判定してステップ９３５に進む。そして、ＣＰＵ２３Ｃ１は、第１ホスト側ポート２０ａ１が接続された端子２１ａ１と、上記ステップ９１５にて取得したアダプタＩＤ（ここでは、「＃１」）のアダプタ２３Ａが接続された端子２１ａ３と、の間の接続を解除する（端子２１ａ１と端子２１ａ３とを遮断する）ための解除指示信号を第１切替器２１へ送る。これにより、第１切替器２１の接続状態は、ホスト装置２とアダプタ２３Ａとの間の接続を解除した接続状態に設定される。
【０１２０】
そして、ＣＰＵ２３Ｃ１は、ステップ９４０にて、アダプタ２３Ａが異常状態となっている旨を表すエラー情報を出力する（本例では、共有メモリ２４内のログファイルに書き出す）。
【０１２１】
次いで、ＣＰＵ２３Ｃ１は、ステップ９４５にて、共有メモリ２４に格納されているアダプタ属性情報テーブルの、上記ステップ９１５にて取得したアダプタＩＤ（ここでは、「＃１」）に係る作動モード（即ち、アダプタＩＤ「＃１」を含むアダプタ属性情報に含まれる作動モード、ここでは、ホストモード）と、自アダプタのアダプタＩＤ（ここでは、「＃３」）に係る作動モード（ここでは、スペアモード）と、を交換した更新用テーブル（図１０を参照）を生成する。更に、ＣＰＵ２３Ｃ１は、共有メモリ２４に格納されているアダプタ属性情報テーブルを、生成した更新用テーブルに置換する。これにより、アダプタ２３Ｃを再起動させた際に、アダプタ２３Ｃが起動時に実行する図３のプログラムの処理が変更される。
【０１２２】
次いで、ＣＰＵ２３Ｃ１は、ステップ９５０にて、自アダプタ２３Ｃを再起動させる。なお、ステップ９３５〜ステップ９５０の処理が実行されることは、作動状態設定手段（作動状態設定工程）の機能の一部が達成されることに対応している。
【０１２３】
これにより、ＣＰＵ２３Ｃ１は、図３の起動プログラムを実行する。そして、ＣＰＵ２３Ｃ１は、ステップ３０５にて、図１０に示したアダプタ属性情報テーブルを読み込む。次いで、ＣＰＵ２３Ｃ１は、ステップ３１０にて、自アダプタ２３Ｃの作動モードとしてホストモードを取得する。
【０１２４】
その後、ＣＰＵ２３Ｃ１は、ステップ３１５〜ステップ３２５の処理を実行する。これにより、第１切替器２１の接続状態は、第１ホスト側ポート２０ａ１（即ち、ホスト装置２）とアダプタ２３Ａとの間の接続を解除し、且つ、第１ホスト側ポート２０ａ１（即ち、ホスト装置２）とアダプタ２３Ｃとを接続する接続状態（第１の接続状態）に設定される。即ち、この状態においては、図１１に示したように、第１ホスト側ポート２０ａ１とアダプタ２３Ｃとが接続され、且つ、第１ディスク側ポート２０ｂ１とアダプタ２３Ｂとが接続される。
【０１２５】
更に、ＣＰＵ２３Ｃ１は、ホストモード用プログラムＰ２（図５及び図７を参照）を実行する。
このようにして、アダプタ２３Ｃは、異常状態となったアダプタ２３Ａの代わりに、ホストモードにより作動する。即ち、この状態においては、アダプタ２３Ｃは、ホスト装置２との間でデータを授受する第１の作動状態にて作動する。
【０１２６】
これにより、アダプタ２３Ｃは、異常状態になったアダプタ２３Ａとの間でデータを授受していたホスト装置２との間でデータを授受することができる。この結果、アダプタ２３Ａが異常状態になってから、入出力制御装置２０がホスト装置２との間でデータを正常に授受できるようになるまでの時間を十分に短くすることができる。
【０１２７】
また、アダプタ２３Ａ及びアダプタ２３Ｃのいずれもが正常に作動している状態においてアダプタ２３Ｂが状態確認信号を受信しても状態応答信号を送信できない状態となった（異常状態となった）場合について説明する。
【０１２８】
この場合、アダプタ２３ＣのＣＰＵ２３Ｃ１がステップ９２５に進んだとき、ＣＰＵ２３Ｃ１は、アダプタ２３Ｂへ状態確認信号を送信してから上記待機時間が経過するまでの間にアダプタ２３Ｂから上記状態応答信号を受信しない。
【０１２９】
従って、ＣＰＵ２３Ｃ１は、「Ｎｏ」と判定してステップ９３０に進み、上記ステップ９１５にて取得したアダプタＩＤ（ここでは、「＃２」）と、自アダプタのアダプタＩＤ（ここでは、「＃３」）と、が相違しているか否かを判定する。
【０１３０】
この状態においては、ＣＰＵ２３Ｃ１は、「Ｙｅｓ」と判定してステップ９３５に進む。そして、ＣＰＵ２３Ｃ１は、第１ディスク側ポート２０ｂ１が接続された端子２１ａ２と、上記ステップ９１５にて取得したアダプタＩＤ（ここでは、「＃２」）のアダプタ２３Ｂが接続された端子２１ａ４と、の間の接続を解除する（端子２１ａ２と端子２１ａ４とを遮断する）ための解除指示信号を第１切替器２１へ送る。これにより、第１切替器２１の接続状態は、ディスクアレイユニット１０とアダプタ２３Ｂとの間の接続を解除した接続状態に設定される。
【０１３１】
そして、ＣＰＵ２３Ｃ１は、ステップ９４０にて、アダプタ２３Ｂが異常状態となっている旨を表すエラー情報を出力する（本例では、共有メモリ２４内のログファイルに書き出す）。
【０１３２】
次いで、ＣＰＵ２３Ｃ１は、ステップ９４５にて、共有メモリ２４に格納されているアダプタ属性情報テーブルの、上記ステップ９１５にて取得したアダプタＩＤ（ここでは、「＃２」）に係る作動モード（ここでは、ディスクモード）と、自アダプタのアダプタＩＤ（ここでは、「＃３」）に係る作動モード（ここでは、スペアモード）と、を交換した更新用テーブル（図１２を参照）を生成する。更に、ＣＰＵ２３Ｃ１は、共有メモリ２４に格納されているアダプタ属性情報テーブルを、生成した更新用テーブルに置換する。
【０１３３】
次いで、ＣＰＵ２３Ｃ１は、ステップ９５０にて、自アダプタ２３Ｃを再起動させる。
これにより、ＣＰＵ２３Ｃ１は、図３の起動プログラムを実行する。そして、ＣＰＵ２３Ｃ１は、ステップ３０５にて、図１２に示したアダプタ属性情報テーブルを読み込む。次いで、ＣＰＵ２３Ｃ１は、ステップ３１０にて、自アダプタ２３Ｃの作動モードとしてディスクモードを取得する。
【０１３４】
その後、ＣＰＵ２３Ｃ１は、ステップ３３０〜ステップ３４０の処理を実行する。これにより、第１切替器２１の接続状態は、第１ディスク側ポート２０ｂ１（即ち、ディスクアレイユニット１０）とアダプタ２３Ｂとの間の接続を解除し、且つ、第１ディスク側ポート２０ｂ１（即ち、ディスクアレイユニット１０）とアダプタ２３Ｃとを接続する接続状態（第２の接続状態）に設定される。即ち、この状態においては、図１３に示したように、第１ホスト側ポート２０ａ１とアダプタ２３Ａとが接続され、且つ、第１ディスク側ポート２０ｂ１とアダプタ２３Ｃとが接続される。
【０１３５】
更に、ＣＰＵ２３Ｃ１は、ディスクモード用プログラムＰ３（図６及び図８を参照）を実行する。
このようにして、アダプタ２３Ｃは、異常状態となったアダプタ２３Ｂの代わりに、ディスクモードにより作動する。即ち、この状態においては、アダプタ２３Ｃは、ディスクアレイユニット１０との間でデータを授受する第２の作動状態にて作動する。
【０１３６】
これにより、アダプタ２３Ｃは、異常状態になったアダプタ２３Ｂとの間でデータを授受していたディスクアレイユニット１０との間でデータを授受することができる。この結果、アダプタ２３Ｂが異常状態になってから、入出力制御装置２０がディスクアレイユニット１０との間でデータを正常に授受できるようになるまでの時間を十分に短くすることができる。
【０１３７】
一方、アダプタ２３Ａ及びアダプタ２３Ｂのいずれもが正常に作動している状態においてアダプタ２３Ｃが状態確認信号を受信しても状態応答信号を送信できない状態となった（異常状態となった）場合について説明する。
【０１３８】
この場合、アダプタ２３ＣのＣＰＵ２３Ｃ１がステップ９２５に進んだとき、ＣＰＵ２３Ｃ１は、アダプタ２３Ｃ（自アダプタ）へ状態確認信号を送信してから上記待機時間が経過するまでの間にアダプタ２３Ｃから上記状態応答信号を受信しない。
【０１３９】
従って、ＣＰＵ２３Ｃ１は、「Ｎｏ」と判定してステップ９３０に進み、上記ステップ９１５にて取得したアダプタＩＤ（ここでは、「＃３」）と、自アダプタのアダプタＩＤ（ここでは、「＃３」）と、が相違しているか否かを判定する。
【０１４０】
この状態においては、取得したアダプタＩＤと自アダプタのアダプタＩＤとが一致している。従って、ＣＰＵ２３Ｃ１は、「Ｎｏ」と判定してステップ９５５に進み、アダプタ２３Ｃが異常状態となっている旨を表すエラー情報を出力する（本例では、共有メモリ２４内のログファイルに書き出す）。
次いで、ＣＰＵ２３Ｃ１は、ステップ９６０にて、自アダプタ２３Ｃを停止させる。
【０１４１】
以上、説明したように、上記第１実施形態によれば、アダプタ２３Ａ又はアダプタ２３Ｂが異常状態になってから、入出力制御装置２０がホスト装置２及びディスクアレイユニット１０の双方との間でデータを正常に授受できるようになるまでの時間を十分に短くすることができる。
【０１４２】
更に、ホスト装置２との間でデータを授受するための予備のアダプタ（入出力ユニット）と、ディスクアレイユニット１０との間でデータを授受するための予備のアダプタと、の２つのアダプタを用意する場合よりも、予備の（即ち、冗長性を確保するための）アダプタの数を少なくすることもできる。
【０１４３】
加えて、上記第１実施形態においては、スペアモードにより作動するアダプタ２３Ｃが、ホストモードにより作動するアダプタ２３Ａ又はディスクモードにより作動するアダプタ２３Ｂが異常状態にあることを検出する。従って、アダプタ２３Ａ又はアダプタ２３Ｂが異常状態にあることを検出する装置を別途設ける必要がないので、入出力制御装置の製造コストを低減することができる。
【０１４４】
更に、上記第１実施形態においては、アダプタ２３Ａが異常状態となった場合にはアダプタ２３Ａとホスト装置２との間の接続が解除され、一方、アダプタ２３Ｂが異常状態となった場合にはアダプタ２３Ｂとディスクアレイユニット１０との間の接続が解除される。従って、新たに接続されたアダプタ２３Ｃと外部装置（ホスト装置２又はディスクアレイユニット１０）との間のデータの授受をより確実に行うことができる。
【０１４５】
次に、本発明の第２実施形態に係る入出力制御装置について説明する。第２実施形態に係る入出力制御装置は、上記第１実施形態に係る入出力制御装置に対して、第１切替器又は第２切替器が異常状態にあることを検出するとともに、第１切替器及び第２切替器の２つの切替器のうちの一方が異常状態にあることが検出された場合にその切替器を介して接続されているアダプタ及び外部装置を、他方の切替器を介して接続するように構成されている点のみにおいて相違している。従って、以下、かかる相違点を中心として説明する。
【０１４６】
図１４に示したように、第２実施形態に係る入出力制御装置２０Ａは、上記第１実施形態に係る第１切替器２１及び第２切替器２２に代えて、第１切替器２５及び第２切替器２６を備える。
【０１４７】
第１切替器２５は、複数（本例では、１０個）の端子２５ａ１〜２５ａ１０を有する。第１切替器２５は、アダプタ２３Ａ〜２３Ｆからの接続指示信号に応答して、端子２５ａ１〜２５ａ１０のうちの任意の２つの端子を電気的に接続する。一方、第１切替器２５は、アダプタ２３Ａ〜２３Ｆからの解除指示信号に応答して、接続されている２つの端子間の接続を解除（遮断）する。更に、第１切替器２５は、アダプタ２３Ａ〜２３Ｆから状態確認信号（本例では、制御命令を含む信号）を受信すると、その状態確認信号の送信元のアダプタへ直ちに状態応答信号を送信する。
【０１４８】
加えて、第２切替器２６は、第１切替器２５と同様に複数（本例では、１０個）の端子２６ａ１〜２６ａ１０を有する。第２切替器２６は、第１切替器２５と同様に、接続指示信号に応答して２つの端子を接続するとともに、解除指示信号に応答して接続されている２つの端子間の接続を解除する。更に、第２切替器２６は、第１切替器２５と同様に、状態確認信号に応答して状態応答信号を送信する。
更に、第１切替器２５には切替器を識別する情報としての切替器ＩＤ「＃１」が付され、第２切替器２６には切替器ＩＤ「＃２」が付されている。
【０１４９】
第１ホスト側ポート２０ａ１は、第１切替器２５の端子２５ａ１及び第２切替器２６の端子２６ａ２のそれぞれと接続されている。第２ホスト側ポート２０ａ２は、第１切替器２５の端子２５ａ２及び第２切替器２６の端子２６ａ１のそれぞれと接続されている。
【０１５０】
第１ディスク側ポート２０ｂ１は、第１切替器２５の端子２５ａ３及び第２切替器２６の端子２６ａ４のそれぞれと接続されている。第２ディスク側ポート２０ｂ２は、第１切替器２５の端子２５ａ４及び第２切替器２６の端子２６ａ３のそれぞれと接続されている。
【０１５１】
アダプタ２３Ａは、第１切替器２５の端子２５ａ５、第２切替器２６の端子２６ａ５及び共有メモリ２４のそれぞれと接続されている。これにより、アダプタ２３Ａは、第１切替器２５の端子２５ａ５、第２切替器２６の端子２６ａ５及び共有メモリ２４のそれぞれとの間でデータを授受する。
【０１５２】
同様に、アダプタ２３Ｂは、データを授受できるように、第１切替器２５の端子２５ａ７、第２切替器２６の端子２６ａ７及び共有メモリ２４のそれぞれと接続されている。また、アダプタ２３Ｃは、データを授受できるように、第１切替器２５の端子２５ａ９、第２切替器２６の端子２６ａ９及び共有メモリ２４のそれぞれと接続されている。
【０１５３】
更に、アダプタ２３Ｄは、データを授受できるように、第１切替器２５の端子２５ａ６、第２切替器２６の端子２６ａ６及び共有メモリ２４のそれぞれと接続されている。加えて、アダプタ２３Ｅは、データを授受できるように、第１切替器２５の端子２５ａ８、第２切替器２６の端子２６ａ８及び共有メモリ２４のそれぞれと接続されている。更に、アダプタ２３Ｆは、データを授受できるように、第１切替器２５の端子２５ａ１０、第２切替器２６の端子２６ａ１０及び共有メモリ２４のそれぞれと接続されている。
【０１５４】
次に、上記のように構成された入出力制御装置２０Ａの作動について説明する。
入出力制御装置２０Ａの共有メモリ２４には、各クラスタにおいて使用する切替器を特定する情報であって、クラスタＩＤと切替器ＩＤとからなる情報である使用切替器情報を複数（本例では、２つ）含む使用切替器情報テーブルが予め格納されている。
【０１５５】
上記第１実施形態においては、入出力制御装置２０のアダプタ２３Ａ〜２３Ｆのそれぞれは、図３のステップ３２０及びステップ３３５における上記接続指示信号の送信先として自クラスタ内の切替器を採用していた。ところで、この第２実施形態においては、入出力制御装置２０Ａのアダプタ２３Ａ〜２３Ｆのそれぞれは、その接続指示信号の送信先として、共有メモリ２４に格納されている使用切替器情報テーブルと自クラスタＩＤとに基づいて特定される切替器を採用する。
【０１５６】
一方、入出力制御装置２０Ａのアダプタ２３Ａ〜２３Ｆのうちの、作動モードがホストモード又はディスクモードに設定されたアダプタは、図５〜図８のプログラムに加えて、図１５にフローチャートにより示した切替器変更プログラムを所定の切替器監視周期（本例では、１秒）が経過する毎に繰り返し実行する。
【０１５７】
いま、図４に示したアダプタ属性情報テーブルが共有メモリ２４に格納されている状態において各アダプタ２３Ａ〜２３Ｆが起動された場合であって、第１切替器２５及び第２切替器２６のいずれもが正常に作動している（異常状態となっていない）場合を想定して説明を続ける。なお、この状態においては、共有メモリ２４に格納されている使用切替器情報テーブルは、クラスタＩＤ「＃１」と切替器ＩＤ「＃１」とからなる使用切替器情報と、クラスタＩＤ「＃２」と切替器ＩＤ「＃２」とからなる使用切替器情報と、からなる。
【０１５８】
この場合、アダプタ２３ＡのＣＰＵ２３Ａ１は、ステップ１５０５にて、上記ステップ３１０にて取得した自クラスタのクラスタＩＤ（ここでは、「＃１」）に基づいて自クラスタ内の切替器（ここでは、第１切替器２５）へ状態確認信号を送る（送信する）。
【０１５９】
次いで、ＣＰＵ２３Ａ１は、ステップ１５１０にて、状態確認信号を送信してから所定の待機時間が経過するまでの間に第１切替器２５から上記状態確認信号に応じた状態応答信号を受信したか否か（即ち、第１切替器２５が正常に作動しているか否か）を判定する。なお、ステップ１５０５及びステップ１５１０の処理が実行されることは、切替器異常状態検出手段の機能が達成されることに対応している。
【０１６０】
この状態においては、第１切替器２５は、状態確認信号を受信すると、その状態確認信号の送信元のアダプタ２３Ａへ直ちに状態応答信号を送信する。従って、ＣＰＵ２３Ａ１は、状態確認信号を送信してから上記待機時間が経過するまでの間に第１切替器２５から上記状態応答信号を受信する。
【０１６１】
従って、ＣＰＵ２３Ａ１は、ステップ１５１０にて「Ｙｅｓ」と判定してステップ１５１５に進み、自アダプタ２３Ａが自クラスタの切替器（第１切替器２５）を介して外部装置（ホスト装置２）と接続されているか否かを判定する。
【０１６２】
この状態においては、アダプタ２３Ａは、第１切替器２５を介してホスト装置２と接続されている。従って、ＣＰＵ２３Ａ１は、「Ｙｅｓ」と判定してステップ１５９９に直接進み、この切替器変更プログラムの実行を一旦終了する。
【０１６３】
一方、アダプタ２３Ｂ、アダプタ２３Ｄ及びアダプタ２３Ｅのそれぞれも、この切替器変更プログラムの実行を開始する。この状態においては、各アダプタ２３Ｂ，２３Ｄ，２３Ｅは、アダプタ２３Ａの場合と同様にステップ１５０５〜ステップ１５１５の処理を順に実行してこの切替器変更プログラムの実行を一旦終了する。
【０１６４】
次に、第２切替器２６が正常に作動している状態において第１切替器２５が状態確認信号を受信しても状態応答信号を送信できない状態となった（異常状態となった）場合について説明する。
【０１６５】
この場合、アダプタ２３ＡのＣＰＵ２３Ａ１がステップ１５１０に進んだとき、ＣＰＵ２３Ａ１は、第１切替器２５へ状態確認信号を送信してから上記待機時間が経過するまでの間に第１切替器２５から上記状態応答信号を受信しない。
【０１６６】
従って、ＣＰＵ２３Ａ１は、「Ｎｏ」と判定してステップ１５２０に進み、上記ステップ３１０にて取得した自クラスタのクラスタＩＤ（ここでは、「＃１」）に基づいて自クラスタ以外のクラスタ（他クラスタ）内の切替器（即ち、第２切替器２６）へ状態確認信号を送る。
【０１６７】
次いで、ＣＰＵ２３Ａ１は、ステップ１５２５にて、状態確認信号を送信してから所定の待機時間が経過するまでの間に第２切替器２６から上記状態確認信号に応じた状態応答信号を受信したか否か（即ち、第２切替器２６が正常に作動しているか否か）を判定する。
【０１６８】
この状態においては、第２切替器２６は、状態確認信号を受信すると、その状態確認信号の送信元のアダプタ２３Ａへ直ちに状態応答信号を送信する。従って、ＣＰＵ２３Ａ１は、状態確認信号を送信してから上記待機時間が経過するまでの間に第２切替器２６から上記状態応答信号を受信する。
【０１６９】
従って、ＣＰＵ２３Ａ１は、ステップ１５２５にて「Ｙｅｓ」と判定してステップ１５３０に進み、自アダプタ２３Ａが自クラスタの切替器（第１切替器２５）を介してホスト装置２と接続されているか否かを判定する。
【０１７０】
この状態においては、アダプタ２３Ａは、第１切替器２５を介してホスト装置２と接続されている。従って、ＣＰＵ２３Ａ１は、「Ｙｅｓ」と判定してステップ１５３５に進む。
【０１７１】
そして、ＣＰＵ２３Ａ１は、第１切替器２５へ、第１ホスト側ポート２０ａ１が接続された端子２５ａ１と、自アダプタ２３Ａが接続された端子２５ａ５と、の間の接続を解除するための解除指示信号を送る。これにより、第１切替器２５の接続状態は、ホスト装置２とアダプタ２３Ａとの間の接続を解除した接続状態に設定される。
【０１７２】
更に、ＣＰＵ２３Ａ１は、第２切替器２６へ、第１ホスト側ポート２０ａ１が接続された端子２６ａ２と、自アダプタ２３Ａが接続された端子２６ａ５と、を接続するための接続指示信号を送る。これにより、第２切替器２６の接続状態は、ホスト装置２とアダプタ２３Ａとを接続する接続状態に設定される。
【０１７３】
このようにして、使用切替器（第１切替器２５）が異常状態にあることが検出された場合、使用切替器を介して接続されているアダプタ２３Ａ及びホスト装置２は、使用切替器以外の切替器（第２切替器２６）を介して接続される。
【０１７４】
加えて、ＣＰＵ２３Ａ１は、共有メモリ２４に格納されている使用切替器情報テーブル内の使用切替器情報であってクラスタＩＤとして自クラスタ（第１クラスタＣＬ１）のクラスタＩＤ「＃１」を含む使用切替器情報に含まれる切替器ＩＤ（ここでは、「＃１」）を他クラスタ（第２クラスタＣＬ２）内の切替器の切替器ＩＤ（「＃２」）に変更する。
【０１７５】
そして、ＣＰＵ２３Ａ１は、ステップ１５９９に進んでこの切替器変更プログラムの実行を一旦終了する。なお、ステップ１５２０〜ステップ１５３５の処理が実行されることは、切替器変更手段の機能が達成されることに対応している。
【０１７６】
更に、アダプタ２３Ｂも、アダプタ２３Ａの場合と同様にステップ１５２０〜ステップ１５３５の処理を順に実行する。これにより、第１切替器２５の接続状態は、ディスクアレイユニット１０とアダプタ２３Ｂとの間の接続を解除した接続状態に設定される。更に、第２切替器２６の接続状態は、ディスクアレイユニット１０とアダプタ２３Ｂとを接続する接続状態に設定される。
【０１７７】
即ち、この状態においては、図１６に示したように、アダプタ２３Ａは、第２切替器２６及び第１ホスト側ポート２０ａ１をこの順に経由してホスト装置２と接続される。更に、アダプタ２３Ｂは、第２切替器２６及び第１ディスク側ポート２０ｂ１をこの順に経由してディスクアレイユニット１０と接続される。
【０１７８】
従って、この状態において、アダプタ２３ＡのＣＰＵ２３Ａ１が図１５の切替器変更プログラムの実行を開始してステップ１５３０に進んだとき、ＣＰＵ２３Ａ１は、「Ｎｏ」と判定してステップ１５９９に直接進み、この切替器変更プログラムの実行を一旦終了する。
【０１７９】
その後、第１切替器２５に加えて第２切替器２６も、状態確認信号を受信しても状態応答信号を送信できない状態となった（異常状態となった）場合について説明を続ける。
【０１８０】
この場合、アダプタ２３ＡのＣＰＵ２３Ａ１が図１５の切替器変更プログラムの実行を開始してステップ１５２５に進んだとき、ＣＰＵ２３Ａ１は、第２切替器２６へ状態確認信号を送信してから上記待機時間が経過するまでの間に第２切替器２６から上記状態応答信号を受信しない。
【０１８１】
従って、ＣＰＵ２３Ａ１は、「Ｎｏ」と判定してステップ１５４０に進み、第１切替器２５及び第２切替器２６のいずれもが異常状態となっている旨を表すエラー情報を出力する（本例では、共有メモリ２４内のログファイルに書き出す）。そして、ＣＰＵ２３Ａ１は、ステップ１５９９に進んでこの切替器変更プログラムの実行を一旦終了する。
【０１８２】
一方、第１切替器２５が一旦異常状態となった後に、正常に作動する（状態確認信号を受信すると状態応答信号を送信する）状態に戻った場合について説明する。
【０１８３】
この場合、アダプタ２３ＡのＣＰＵ２３Ａ１が図１５の切替器変更プログラムの実行を開始してステップ１５１０に進んだとき、ＣＰＵ２３Ａ１は、「Ｙｅｓ」と判定してステップ１５１５に進む。
【０１８４】
この状態においては、アダプタ２３Ａは、自クラスタ以外のクラスタの切替器（第２切替器２６）を介してホスト装置２と接続されている。従って、ＣＰＵ２３Ａ１は、ステップ１５１５にて「Ｎｏ」と判定してステップ１５４５に進む。
【０１８５】
そして、ＣＰＵ２３Ａ１は、第２切替器２６へ、第１ホスト側ポート２０ａ１が接続された端子２６ａ２と、自アダプタ２３Ａが接続された端子２６ａ５と、の間の接続を解除するための解除指示信号を送る。これにより、第２切替器２６の接続状態は、ホスト装置２とアダプタ２３Ａとの間の接続を解除した接続状態に設定される。
【０１８６】
更に、ＣＰＵ２３Ａ１は、第１切替器２５へ、第１ホスト側ポート２０ａ１が接続された端子２５ａ１と、自アダプタ２３Ａが接続された端子２５ａ５と、を接続するための接続指示信号を送る。これにより、第１切替器２５の接続状態は、ホスト装置２とアダプタ２３Ａとを接続する接続状態に設定される。
【０１８７】
加えて、ＣＰＵ２３Ａ１は、共有メモリ２４に格納されている使用切替器情報テーブル内の使用切替器情報であってクラスタＩＤとして自クラスタ（第１クラスタＣＬ１）のクラスタＩＤ「＃１」を含む使用切替器情報に含まれる切替器ＩＤ（ここでは、「＃２」）を自クラスタ内の切替器の切替器ＩＤ（「＃１」）に変更する。
そして、ＣＰＵ２３Ａ１は、ステップ１５９９に進んでこの切替器変更プログラムの実行を一旦終了する。
【０１８８】
更に、アダプタ２３Ｂも、アダプタ２３Ａの場合と同様にステップ１５４５の処理を実行する。これにより、第１切替器２５の接続状態は、ディスクアレイユニット１０とアダプタ２３Ｂとを接続する接続状態に設定される。更に、第２切替器２６の接続状態は、ディスクアレイユニット１０とアダプタ２３Ｂとの間の接続を解除した接続状態に設定される。
【０１８９】
即ち、この状態においては、図１４に示したように、アダプタ２３Ａは、第１切替器２５及び第１ホスト側ポート２０ａ１をこの順に経由してホスト装置２と接続される。更に、アダプタ２３Ｂは、第１切替器２５及び第１ディスク側ポート２０ｂ１をこの順に経由してディスクアレイユニット１０と接続される。
【０１９０】
以上、説明したように、本発明による入出力制御装置の第２実施形態によれば、使用切替器が異常状態になった場合であっても、その他の切替器を介してアダプタと外部装置（ホスト装置２又はディスクアレイユニット１０）とが接続される。これにより、アダプタと外部装置との間でデータを授受することができる。この結果、使用切替器が異常状態になってから、ホスト装置２及びディスクアレイユニット１０の双方との間でデータを正常に授受できるようになるまでの時間を十分に短くすることができる。
更に、上記第２実施形態によれば、上記第１実施形態と同様の効果が奏される。
【０１９１】
次に、本発明の第３実施形態に係る入出力制御装置について説明する。第３実施形態に係る入出力制御装置は、上記第２実施形態に係る入出力制御装置に対して、スペアモードにより作動するアダプタが、他クラスタ内のアダプタが異常状態にあることを検出するとともに、他クラスタ内のアダプタが異常状態にあることが検出された場合にその異常状態にあるアダプタに代わって他クラスタにおけるデータの授受を行うように構成されている点のみにおいて相違している。従って、以下、かかる相違点を中心として説明する。
【０１９２】
図１７に示したように、第３実施形態に係る入出力制御装置２０Ｂが備えるアダプタ２３Ａ〜２３Ｆのそれぞれは、すべてのアダプタとの間で状態確認信号及び状態応答信号を授受できるように、自アダプタ以外のアダプタのそれぞれと接続されている。
【０１９３】
次に、上記のように構成された入出力制御装置２０Ｂの作動について説明する。
入出力制御装置２０Ｂのアダプタ２３Ａ〜２３Ｆのうちの、作動モードがスペアモードに設定されたアダプタは、図１８にフローチャートにより示した他クラスタ用作動状態変更プログラムを図９のプログラムに続いて実行する。
【０１９４】
いま、図４に示したアダプタ属性情報テーブルが共有メモリ２４に格納されている状態において各アダプタ２３Ａ〜２３Ｆが起動された場合であって、アダプタ２３Ａ〜２３Ｆのいずれもが正常に作動している（異常状態となっていない）場合を想定して説明を続ける。
【０１９５】
この場合、アダプタ２３ＣのＣＰＵ２３Ｃ１は、ステップ１８０５にて、上記ステップ３０５にて読み込んだテーブルに基づいて、他クラスタ（ここでは、第２クラスタＣＬ２）において作動モードがスペアモードに設定されたアダプタ（即ち、アダプタ２３Ｆ）へ状態確認信号を送る。
【０１９６】
次いで、ＣＰＵ２３Ｃ１は、ステップ１８１０にて、状態確認信号を送信してから所定の待機時間が経過するまでの間に上記アダプタ２３Ｆから上記状態確認信号に応じた状態応答信号を受信したか否かを判定する。
【０１９７】
この状態においては、アダプタ２３Ｆは、状態確認信号を受信すると、その状態確認信号の送信元のアダプタ２３Ｃへ直ちに状態応答信号を送信する。従って、ＣＰＵ２３Ｃ１は、状態確認信号を送信してから上記待機時間が経過するまでの間にアダプタ２３Ｆから上記状態応答信号を受信する。従って、ＣＰＵ２３Ｃ１は、ステップ１８１０にて「Ｙｅｓ」と判定してステップ１８９９に直接進み、他クラスタ用作動状態変更プログラムの実行を一旦終了する。
【０１９８】
一方、アダプタ２３Ｆも、上記他クラスタ用作動状態変更プログラムの実行を開始する。この状態においては、アダプタ２３Ｆは、アダプタ２３Ｃの場合と同様にステップ１８０５及びステップ１８１０の処理を順に実行して上記他クラスタ用作動状態変更プログラムの実行を一旦終了する。
【０１９９】
次に、アダプタ２３Ａのみが異常状態となった場合について説明を続ける。
この場合、上述したように、アダプタ２３Ｃが図９のプログラムを実行することにより、共有メモリ２４に格納されているアダプタ属性情報テーブルは、図１０に示したテーブルに更新される。そして、第１切替器２５の接続状態は、アダプタ２３Ｃとホスト装置２とを接続するとともに、アダプタ２３Ｂとディスクアレイユニット１０とを接続する接続状態に設定される。更に、アダプタ２３Ｃは、ホストモードにより作動する。
【０２００】
この状態においては、第１クラスタＣＬ１において作動モードがスペアモードに設定されているアダプタ２３Ａは異常状態にある。従って、アダプタ２３ＦのＣＰＵ２３Ｆ１が図１８のプログラムの実行を開始してステップ１８１０に進んだとき、ＣＰＵ２３Ｆ１は、アダプタ２３Ａへ状態確認信号を送信してから上記待機時間が経過するまでの間にアダプタ２３Ａから上記状態応答信号を受信しない。
【０２０１】
従って、ＣＰＵ２３Ｆ１は、ステップ１８１０にて「Ｎｏ」と判定してステップ１８１５に進む。そして、ＣＰＵ２３Ｆ１は、他クラスタ（ここでは、第１クラスタＣＬ１）においてスペアモード以外の作動モードに作動モードが設定されているアダプタのアダプタＩＤのリストを作成する。即ち、この状態において作成されるリストは、「＃２」及び「＃３」からなる。
【０２０２】
次いで、ＣＰＵ２３Ｆ１は、上述したステップ９１０〜ステップ９２５の処理と同様の、ステップ１８２０〜ステップ１８３５の処理を実行することにより、アダプタ２３Ｂが正常に作動しているか否かを判定する。この状態においては、アダプタ２３Ｂは正常に作動している。
【０２０３】
従って、ＣＰＵ２３Ｆ１は、ステップ１８３５にて「Ｙｅｓ」と判定してステップ１８２０に戻り、リスト内にアダプタＩＤが存在しなくなるまで、ステップ１８２０〜１８３５の処理を繰り返し実行する。
【０２０４】
即ち、ＣＰＵ２３Ｆ１は、アダプタＩＤ「＃３」のアダプタ２３Ｃも正常に作動している（即ち、状態確認信号に応じて状態応答信号を送信する）ことを確認する。
【０２０５】
その後、ＣＰＵ２３Ｆ１がステップ１８２０に進んだとき、ＣＰＵ２３Ｆ１は、「Ｎｏ」と判定してステップ１８９９に直接進み、他クラスタ用作動状態変更プログラムの実行を一旦終了する。
【０２０６】
次に、この状態において、更にアダプタ２３Ｂも異常状態となった場合について説明を続ける。
この場合、アダプタ２３ＦのＣＰＵ２３Ｆ１が図１８のプログラムの実行を開始してステップ１８３５に進んだとき、ＣＰＵ２３Ｆ１は、アダプタ２３Ｂへ状態確認信号を送信してから上記待機時間が経過するまでの間にアダプタ２３Ｂから上記状態応答信号を受信しない。
【０２０７】
従って、ＣＰＵ２３Ｆ１は、「Ｎｏ」と判定してステップ１８４０に進み、上記ステップ１８２５にて取得したアダプタＩＤ「＃２」のアダプタ２３Ｂが接続された端子２５ａ７と、第１ディスク側ポート２０ｂ１が接続された端子２５ａ３と、の間の接続を解除するための解除指示信号を第１切替器２５へ送る。これにより、第１切替器２５の接続状態は、ディスクアレイユニット１０とアダプタ２３Ｂとの間の接続を解除した接続状態に設定される。
【０２０８】
そして、ＣＰＵ２３Ｆ１は、ステップ１８４５にて、アダプタ２３Ｂが異常状態となっている旨を表すエラー情報を出力する（本例では、共有メモリ２４内のログファイルに書き出す）。
【０２０９】
次いで、ＣＰＵ２３Ｆ１は、ステップ１８５０にて、共有メモリ２４に格納されているアダプタ属性情報テーブルの、上記ステップ１８２５にて取得したアダプタＩＤ（ここでは、「＃２」）に係る作動モード（ここでは、ディスクモード）及びクラスタＩＤ（ここでは、「＃１」）と、自アダプタ２３ＦのアダプタＩＤ（ここでは、「＃６」）に係る作動モード（ここでは、スペアモード）及びクラスタＩＤ（ここでは、「＃２」）と、を交換した更新用テーブル（図１９を参照）を生成する。更に、ＣＰＵ２３Ｆ１は、共有メモリ２４に格納されているアダプタ属性情報テーブルを、生成した更新用テーブルに置換する。
【０２１０】
次いで、ＣＰＵ２３Ｆ１は、ステップ１８６０にて、自アダプタ２３Ｆを再起動させる。
これにより、ＣＰＵ２３Ｆ１は、図３の起動プログラムを実行する。そして、ＣＰＵ２３Ｆ１は、ステップ３０５にて、図１９に示した（共有メモリ２４に格納されている）アダプタ属性情報テーブルを読み込む。次いで、ＣＰＵ２３Ｆ１は、ステップ３１０にて、自アダプタ２３Ｆの作動モードとしてディスクモードを取得する。
【０２１１】
その後、ＣＰＵ２３Ｆ１は、ステップ３３０〜ステップ３４０の処理を実行する。これにより、第１切替器２５の接続状態は、第１ホスト側ポート２０ａ１とアダプタ２３Ｆとを接続する接続状態に設定される。即ち、この状態においては、図１１に示したように、第１ホスト側ポート２０ａ１とアダプタ２３Ｆとが接続され、且つ、第１ディスク側ポート２０ｂ１とアダプタ２３Ｂとが接続される（図２０を参照）。
【０２１２】
更に、ＣＰＵ２３Ｆ１は、ディスクモード用プログラムＰ３（図６及び図８を参照）を実行する。
このようにして、アダプタ２３Ｆは、異常状態となったアダプタ２３Ｂの代わりに、ディスクモードにより作動する。
【０２１３】
以上、説明したように、上記第３実施形態によれば、異常状態となったアダプタを含むクラスタ内にスペアモードにて作動するアダプタが存在していない場合であっても、他のクラスタ内にスペアモードにて作動するアダプタが存在している場合には、そのアダプタを異常状態となったアダプタに代えて用いることができる。
【０２１４】
この結果、上記第１実施形態と同様に、アダプタが異常状態になってから、入出力制御装置２０がホスト装置２及びディスクアレイユニット１０の双方との間でデータを正常に授受できるようになるまでの時間を十分に短くすることができる。
【０２１５】
更に、ホスト装置２との間でデータを授受するための予備のアダプタ（入出力ユニット）と、ディスクアレイユニット１０との間でデータを授受するための予備のアダプタと、の２つのアダプタを用意する場合よりも、予備の（即ち、冗長性を確保するための）アダプタの数を少なくすることもできる。
【０２１６】
なお、上記第３実施形態においては、入出力制御装置２０Ｂは、スペアモードにて作動するアダプタを２つ備えていたが１つだけ備えていてもよい。
【０２１７】
なお、本発明は上記各実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記各実施形態においては、入出力制御装置は、クラスタを２つ有していたが、１つ有していてもよく３つ以上有していてもよい。更に、上記各実施形態においては、各クラスタは、スペアモードにて作動するアダプタを１つ有していたが、複数有していてもよい。
【０２１８】
更に、上記各実施形態は、スペアモードにて作動するアダプタが、ホストモード又はディスクモードにて作動するアダプタが異常状態にあることを検出するように構成されていたが、アダプタ以外の装置がこの検出を行うように構成されていてもよい。
【０２１９】
また、上記各実施形態は、すべてのアダプタがアダプタ属性情報テーブルに応じて作動モードを変更できるように構成されていたが、一部のアダプタが作動モードを変更不能に構成され且つ他のアダプタが作動モードを変更可能に構成されていてもよい。
【０２２０】
また、上記各実施形態においては、外部装置は２つであったが、３つ以上であってもよい。更に、上記各実施形態においては、入出力制御装置は、ディスクアレイユニットとホスト装置との間のデータの授受を制御するように構成されていたが、他の２つの外部装置間のデータの授受を制御するように構成されていてもよい。例えば、外部装置は、ハードディスク装置、テープ装置、端末装置及びホスト装置である。
【産業上の利用可能性】
【０２２１】
本発明は、複数のハードディスク装置を有するディスクアレイ装置に適用可能である。
【図面の簡単な説明】
【０２２２】
【図１】本発明の第１実施形態に係るディスクアレイ装置及びホスト装置の概略構成を表す図である。
【図２】図１に示したアダプタの概略構成を表す図である。
【図３】図１に示したアダプタのＣＰＵが実行する起動プログラムを示したフローチャートである。
【図４】アダプタＩＤと作動モードとクラスタＩＤとからなるアダプタ属性情報を複数含むテーブルである。
【図５】図１に示したアダプタのＣＰＵが実行する書込要求受信プログラムを示したフローチャートである。
【図６】図１に示したアダプタのＣＰＵが実行する書込指示送信プログラムを示したフローチャートである。
【図７】図１に示したアダプタのＣＰＵが実行する読込要求受信プログラムを示したフローチャートである。
【図８】図１に示したアダプタのＣＰＵが実行する読込指示送信プログラムを示したフローチャートである。
【図９】図１に示したアダプタのＣＰＵが実行する自クラスタ用作動状態変更プログラムを示したフローチャートである。
【図１０】アダプタＩＤと作動モードとクラスタＩＤとからなるアダプタ属性情報を複数含むテーブルである。
【図１１】アダプタＩＤ「＃３」のアダプタがホスト装置と接続された状態におけるディスクアレイ装置を示した図である。
【図１２】アダプタＩＤと作動モードとクラスタＩＤとからなるアダプタ属性情報を複数含むテーブルである。
【図１３】アダプタＩＤ「＃３」のアダプタがディスクアレイユニットと接続された状態におけるディスクアレイ装置を示した図である。
【図１４】本発明の第２実施形態に係る入出力制御装置の概略構成を表す図である。
【図１５】図１４に示したアダプタのＣＰＵが実行する切替器変更プログラムを示したフローチャートである。
【図１６】アダプタＩＤ「＃１」のアダプタ及びアダプタＩＤ「＃２」のアダプタが第２切替器を介してホスト装置及びディスクアレイユニットとそれぞれ接続された状態における入出力制御装置を示した図である。
【図１７】本発明の第３実施形態に係る入出力制御装置の概略構成を表す図である。
【図１８】図１７に示したアダプタのＣＰＵが実行する他クラスタ用作動状態変更プログラムを示したフローチャートである。
【図１９】アダプタＩＤと作動モードとクラスタＩＤとからなるアダプタ属性情報を複数含むテーブルである。
【図２０】アダプタＩＤ「＃６」のアダプタが第１切替器及び第１ディスク側ポートを介してディスクアレイユニットと接続された状態における入出力制御装置を示した図である。
【符号の説明】
【０２２３】
１      ディスクアレイ装置
２      ホスト装置
２ａ    第１ポート
２ｂ    第２ポート
１０    ディスクアレイユニット
１０ａ  第１ポート
１０ｂ  第２ポート
１０ｃ１〜１０ｃ１６  ＨＤＤ
２０，２０Ａ，２０Ｂ  入出力制御装置
２０ａ１    第１ホスト側ポート
２０ａ２    第２ホスト側ポート
２０ｂ１    第１ディスク側ポート
２０ｂ２    第２ディスク側ポート
２１    第１切替器
２１ａ１〜２１ａ５  端子
２２    第２切替器
２２ａ１〜２２ａ５  端子
２３Ａ〜２３Ｆ  アダプタ
２３Ａ１〜２３Ｆ１  ＣＰＵ
２３Ａ２〜２３Ｆ２  メモリ
２３Ａ３〜２３Ｆ３  インターフェース部
２４    共有メモリ
２５    第１切替器
２５ａ１〜２５ａ１０  端子
２６    第２切替器
２６ａ１〜２６ａ１０  端子
ＣＬ１    第１クラスタ
ＣＬ２    第２クラスタ
Ｐ１    起動用プログラム
Ｐ２    ホストモード用プログラム
Ｐ３    ディスクモード用プログラム
Ｐ４    スペアモード用プログラム
【図１】
0004483947.tif 000002
【図２】
0004483947.tif 000003
【図３】
0004483947.tif 000004
【図４】
0004483947.tif 000005
【図５】
0004483947.tif 000006
【図６】
0004483947.tif 000007
【図７】
0004483947.tif 000008
【図８】
0004483947.tif 000009
【図９】
0004483947.tif 000010
【図１０】
0004483947.tif 000011
【図１１】
0004483947.tif 000012
【図１２】
0004483947.tif 000013
【図１３】
0004483947.tif 000014
【図１４】
0004483947.tif 000015
【図１５】
0004483947.tif 000016
【図１６】
0004483947.tif 000017
【図１７】
0004483947.tif 000018
【図１８】
0004483947.tif 000019
【図１９】
0004483947.tif 000020
【図２０】
0004483947.tif 000021