(57)【要約】【課題】  コントローラ間の電気的な接続構造を複雑化させることなく、コントローラ間で伝達される指令の妥当性を確認し、信頼性を向上させる。【解決手段】  初期設定完了検出部６Ａは、下位通信部５の初期設定が完了したか否かを検出する。障害検出部６Ｂによって、記憶部３へのパスに発生した障害が検出されると、切替要求出力部６Ｃは、切替許可部８に切替要求信号を出力する。準備状態検出部６Ｄは、相手方コントローラの下位通信部５が初期設定を完了したことを知ると、準備完了信号を切替許可部８に出力する。切替許可部８は、切替要求信号及び準備完了信号の両方が入力されると、パス切替部７に切替信号を出力する。パス切替部７は、切替許可部８からの信号に従って、パスを切り替える。【選択図】        図１
2007011682.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置及び複数の記憶デバイスにそれぞれ接続される記憶制御装置であって、
前記各記憶デバイスにそれぞれ異なる下位通信ネットワークを介して接続される複数のコントローラを有し、
前記各コントローラは、
上位通信ネットワークを介して前記ホスト装置との間で通信を行う上位通信部と、
前記下位通信ネットワークを介して前記各記憶デバイスとの間でそれぞれ通信を行う下位通信部と、
前記上位通信部を介して前記ホスト装置から入力された指示に基づいて、前記下位通信部を介して前記各記憶デバイスとの間でデータを入出力させる制御部と、
前記下位通信部の接続先を前記下位通信ネットワークと相手方コントローラの下位通信ネットワークとの間で切り替える切替部と、
前記下位通信ネットワークに発生した障害を検出する障害検出部と、
前記障害検出部によって前記障害が検出された場合は、前記障害の検出された下位通信ネットワークから前記相手方コントローラの下位通信ネットワークに切り替えさせるための切替要求を出力する切替要求部と、
切替準備が完了したか否かを検出する準備状態検出部と、
前記準備状態検出部が前記切替準備の完了を検出した場合は、前記切替要求に基づいて、前記切替部による切替を許可する切替許可部と、
をそれぞれ備えて構成された記憶制御装置。
【請求項２】
前記準備状態検出部は、前記障害が検出された側のコントローラにおいて前記切替準備が完了したか否かを検出する請求項１に記載の記憶制御装置。
【請求項３】
前記準備状態検出部は、前記障害が検出された側のコントローラにおいて、前記下位通信部の初期設定が完了した場合には、前記切替準備が完了したものと検出する請求項１に記載の記憶制御装置。
【請求項４】
前記各コントローラは、制御用通信経路を介して互いに接続されており、
前記準備状態検出部は、前記制御用通信経路を介して、前記障害が検出された側のコントローラにおいて前記切替準備が完了したか否かを検出する請求項１に記載の記憶制御装置。
【請求項５】
前記各コントローラは、前記切替準備が完了した場合に、前記切替準備が完了した旨を示す状態通知情報を前記各記憶デバイスのうち所定の記憶デバイスに書き込み、
前記準備状態検出部は、前記所定の記憶デバイスから前記状態通知情報を取得した場合に、前記切替準備の完了を検出する請求項１に記載の記憶制御装置。
【請求項６】
さらに、前記各コントローラに管理用ネットワークを介してそれぞれ接続される管理用コンピュータを備え、
前記各コントローラは、切替準備が完了した旨を示す状態通知情報を前記管理用コンピュータを介して通知する請求項１に記載の記憶制御装置。
【請求項７】
複数の記憶デバイスにそれぞれ異なる下位通信ネットワークを介して接続される複数のコントローラを備え、これら各コントローラによって二重化された記憶制御装置のパス切替方法であって、
前記下位通信ネットワークに障害が発生したか否かを検出するステップと、
前記障害の発生が検出された場合、この障害の検出された下位通信ネットワークから切替先のコントローラの下位通信ネットワークに切り替えさせるための切替要求を、前記切替元のコントローラから前記切替先のコントローラに通知させるステップと、
前記切替元のコントローラにおいて切替準備が完了したか否かを検出し、切替準備の完了を検出した場合は、準備完了を前記切替先のコントローラに通知するステップと、
前記切替要求及び前記準備完了の両方が通知された場合に、前記切替元のコントローラが使用する下位通信ネットワークを、前記障害の検出された下位通信ネットワークから前記切替先のコントローラの下位通信ネットワークに切り替えさせるステップと、
を含んだ記憶制御装置のパス切替方法。
【請求項８】
複数の記憶デバイスにそれぞれ異なるプライマリループを介して接続される複数のコントローラを備え、前記各プライマリループは互いに相手方のオルタネートループとなっている記憶制御装置であって、
（１）前記各コントローラは、
前記ホスト装置との間で通信を行う上位通信部と、
前記プライマリループを介して前記各記憶デバイスとの間でそれぞれ通信を行う下位通信部と、
前記上位通信部を介してホスト装置から入力された指示に基づいて、前記下位通信部を介して前記各記憶デバイスとの間でデータを入出力させる制御部と、
前記下位通信部の接続先をプライマリループとオルタネートループとの間で切り替える切替部と、
前記プライマリループに発生した障害を検出する障害検出部と、
前記障害検出部によって前記障害が検出された場合は、前記障害の検出されたプライマリループから前記オルタネートループに切り替えさせるための切替要求信号を出力する切替要求信号出力部と、をそれぞれ備え、
（２）さらに、前記各コントローラは、
前記各コントローラの前記各制御部を互いに接続する制御用通信経路を介して、相手側コントローラの有する前記下位通信部が初期設定を完了したか否かを検出し、初期設定が完了した場合は、準備完了信号を出力する準備状態検出部と、
入力側に前記準備状態検出部と前記相手方コントローラの有する前記切替要求信号出力部とがそれぞれ接続され、出力側に前記切替部が接続されたアンドゲートとを、それぞれ備えおり、
（３）前記アンドゲートは、前記準備完了信号及び前記切替要求信号がそれぞれ入力された場合に、前記切替部に切替信号を出力する、記憶制御装置。
【請求項９】
前記切替要求信号出力部は、通常の場合に前記切替要求信号の信号レベルをローレベルとし、前記障害が検出された場合に前記切替要求信号の信号レベルをローレベルからハイレベルに変化させるものであり、
前記準備状態検出部は、通常の場合に前記準備完了信号の信号レベルをローレベルとし、前記初期設定が完了した場合に前記準備完了信号の信号レベルをローレベルからハイレベルに変化させるものであり、
前記アンドゲートは、前記準備完了信号及び前記切替要求信号がそれぞれローレベルからハイレベルに変化した場合に、前記切替信号を前記切替部に出力する、請求項８に記載の記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及び記憶制御装置のパス切替方法に関する。
【背景技術】
【０００２】
例えば、政府、官公庁、地方自治体、企業、教育機関等の各組織では、多種多量のデータを取り扱うために、比較的大規模な記憶制御装置を用いてデータを管理する。この記憶制御装置は、冗長情報を利用して冗長性を備えた記憶領域（RAID：Redundant Array of Independent Disks）を構成し、この記憶領域にデータを記憶させる（特許文献１）。そして、この文献に記載の従来技術では、旧記憶制御装置から新記憶制御装置に段階的にホストからのアクセスパスを切り替えていくことにより、ホストからのアクセスを停止させることなく装置間のデータ移行を行うことができるようになっている。
【特許文献１】特開２００３−１０８３１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、記憶制御装置は、多量のデータを管理するため、データへのアクセス性能もさることながら、高い可用性（信頼性）も要求される。このため、記憶制御装置は、冗長記憶構造を採用し、また、記憶デバイスへのアクセス経路やコントローラを二重化することにより、高可用性の実現を図ることが考えられる。
【０００４】
しかし、アクセス経路やコントローラのみを二重化しても、各コントローラ間を接続する制御信号が二重化されていなければ、適切に対応できない場合もあり得る。例えば、各コントローラ間を接続するための制御信号線に障害が生じた場合、この制御信号線の障害に適切に対応することができない可能性がある。しかし、制御信号線まで二重化すると、制御信号線の数が倍増するため、各コントローラ間の電気的な接続構造が複雑化し、装置の大型化を招くおそれがある。
【０００５】
特に、記憶デバイスへのアクセス経路をプライマリパスからオルタネートパスへ切り替えさせるための制御信号に障害が生じた場合、切替元となるコントローラの切替準備が完了する前に、パスが切り替えられてしまう可能性がある。
【０００６】
そこで、本発明の目的は、より信頼性を向上できるようにした記憶制御装置及び記憶制御装置のパス切替方法を提供することにある。本発明の他の目的は、コントローラ間の接続構造を複雑化させることなく、信頼性を向上できるようにした記憶制御装置及び記憶制御装置のパス切替方法を提供することにある。本発明の更なる目的は、コントローラ間の接続構造を複雑化させずに、高い信頼性で記憶デバイスへのアクセス経路を切り替えることができるようにした記憶制御装置及び記憶制御装置のパス切替方法の提供にある。本発明の更なる目的は、後述する実施の形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００７】
上記課題を解決すべく、本発明に従う記憶制御装置は、以下に述べるように、ホスト装置及び複数の記憶デバイスにそれぞれ接続され、複数のコントローラによって多重化された記憶制御装置において、各コントローラのうち一方のコントローラから所定の動作の実行を指示する制御指令が出力された場合、各コントローラのうち他方のコントローラは、所定の動作を実行する前に、その制御指令の発行に関する情報（実行環境情報）を一方のコントローラ（指令発行元コントローラ）から取得して実行の是非を判断し、実行可と判定したときは、制御指令に従って所定の動作を実行するようになっている。
【０００８】
本発明の一つの観点に従う記憶制御装置は、ホスト装置及び複数の記憶デバイスにそれぞれ接続されており、各記憶デバイスにそれぞれ異なる下位通信ネットワークを介して接続される複数のコントローラを備えている。そして、各コントローラは、上位通信ネットワークを介してホスト装置との間で通信を行う上位通信部と、下位通信ネットワークを介して各記憶デバイスとの間でそれぞれ通信を行う下位通信部と、上位通信部を介してホスト装置から入力された指示に基づいて、下位通信部を介して各記憶デバイスとの間でデータを入出力させる制御部と、下位通信部の接続先を下位通信ネットワークと相手方コントローラの下位通信ネットワークとの間で切り替える切替部と、下位通信ネットワークに発生した障害を検出する障害検出部と、障害検出部によって障害が検出された場合は、障害の検出された下位通信ネットワークから相手方コントローラの下位通信ネットワークに切り替えさせるための切替要求を出力する切替要求部と、切替準備が完了したか否かを検出する準備状態検出部と、準備状態検出部が切替準備の完了を検出した場合は、切替要求に基づいて、切替部による切替を許可する切替許可部と、をそれぞれ備えている。
【０００９】
ここで、例えば、障害検出部及び切替要求部は制御部内に設けることもできる。記憶制御装置は、一方のコントローラ及び他方のコントローラにより多重化されており、各コントローラは、それぞれ独立した下位通信ネットワークを介して記憶デバイスにそれぞれアクセスすることができる。
【００１０】
一方の下位通信ネットワークに障害が生じた場合、一方のコントローラ（切替元）の切替要求部から他方のコントローラ（切替先）の切替許可部に切替要求が出力される。また、他方のコントローラの準備状態検出部は、一方のコントローラにおいて切替準備が完了したか否かを検出し、切替準備が完了したことを検出した場合は、準備完了を他方のコントローラの切替許可部に出力する。切替許可部は、切替準備の完了を確認してから、切替部による下位通信ネットワークの切替を許可する。従って、もしも一方のコントローラの切替要求部が誤って切替要求を出力した場合でも、切替準備が完了していなければ、下位通信ネットワークの切り替えは行われない。従って、信頼性が向上する。
【００１１】
一つの実施形態では、準備状態検出部は、障害が検出された側のコントローラにおいて切替準備が完了したか否かを検出する。これにより、いわゆる活線挿入の場合の信頼性を向上させることができる。例えば、一方のコントローラの切替要求部が故障している場合において、一方のコントローラを稼働状態にある記憶制御装置に装着すると、切替要求部から直ちに切替要求が出力される場合がある。しかし、準備状態検出部によって一方のコントローラの準備完了が確認されるまでは、下位通信ネットワークの切り替えは行われなず、信頼性が向上する。
【００１２】
一つの実施形態では、準備状態検出部は、障害が検出された側のコントローラにおいて、下位通信部の初期設定が完了した場合には、切替準備が完了したものと検出する。これにより、切替要求部が故障している一方のコントローラを記憶制御装置に装着した場合でも、一方のコントローラの下位通信部が初期設定を完了するまでは、下位通信ネットワークの切り替えが行われないため、信頼性が向上する。
【００１３】
一つの実施形態では、各コントローラは、制御用通信経路を介して互いに接続されており、準備状態検出部は、制御用通信経路を介して、障害が検出された側のコントローラにおいて切替準備が完了したか否かを検出する。これにより、切替準備が完了した旨を通知するための信号線を各コントローラ間に設ける必要がなく、既存の制御用通信経路を利用して、パス切替の信頼性を高めることができる。
【００１４】
他の実施形態では、各コントローラは、切替準備が完了した場合に、切替準備が完了した旨を示す状態通知情報を各記憶デバイスのうち所定の記憶デバイスに書き込み、準備状態検出部は、所定の記憶デバイスから状態通知情報を取得した場合に、切替準備の完了を検出するようになっている。
【００１５】
また、別の実施形態では、さらに、各コントローラに管理用ネットワークを介してそれぞれ接続される管理用コンピュータを備え、各コントローラは、切替準備が完了した旨を示す状態通知情報を管理用コンピュータを介して通知するようになっている。
【００１６】
本発明の他の観点に従う記憶制御装置のパス切替方法は、複数の記憶デバイスにそれぞれ異なる下位通信ネットワークを介して接続される複数のコントローラを備え、これら各コントローラによって二重化された記憶制御装置のパス切替方法であって、下位通信ネットワークに障害が発生したか否かを検出するステップと、障害の発生が検出された場合、この障害の検出された下位通信ネットワークから切替先のコントローラの下位通信ネットワークに切り替えさせるための切替要求を、切替元のコントローラから切替先のコントローラに通知させるステップと、切替元のコントローラにおいて切替準備が完了したか否かを検出し、切替準備の完了を検出した場合は、準備完了を切替先のコントローラに通知するステップと、切替要求及び準備完了の両方が通知された場合に、切替元のコントローラが使用する下位通信ネットワークを、障害の検出された下位通信ネットワークから切替先のコントローラの下位通信ネットワークに切り替えさせるステップと、を含む。
【００１７】
本発明のさらに別の観点に従う記憶制御装置は、複数の記憶デバイスにそれぞれ異なるプライマリループを介して接続される複数のコントローラを備え、各プライマリループは互いに相手方のオルタネートループとなっている記憶制御装置であって、（１）各コントローラは、ホスト装置との間で通信を行う上位通信部と、プライマリループを介して各記憶デバイスとの間でそれぞれ通信を行う下位通信部と、上位通信部を介してホスト装置から入力された指示に基づいて、下位通信部を介して各記憶デバイスとの間でデータを入出力させる制御部と、下位通信部の接続先をプライマリループとオルタネートループとの間で切り替える切替部と、プライマリループに発生した障害を検出する障害検出部と、障害検出部によって障害が検出された場合は、障害の検出されたプライマリループからオルタネートループに切り替えさせるための切替要求信号を出力する切替要求信号出力部と、をそれぞれ備え、（２）さらに、各コントローラは、各コントローラの各制御部を互いに接続する制御用通信経路を介して、相手側コントローラの有する下位通信部が初期設定を完了したか否かを検出し、初期設定が完了した場合は、準備完了信号を出力する準備状態検出部と、入力側に準備状態検出部と相手方コントローラの有する切替要求信号出力部とがそれぞれ接続され、出力側に切替部が接続されたアンドゲートとを、それぞれ備えおり、（３）アンドゲートは、準備完了信号及び切替要求信号がそれぞれ入力された場合に、切替部に切替信号を出力する。
【００１８】
一つの実施形態では、切替要求信号出力部は、通常の場合に切替要求信号の信号レベルをローレベルとし、障害が検出された場合に切替要求信号の信号レベルをローレベルからハイレベルに変化させるものであり、準備状態検出部は、通常の場合に準備完了信号の信号レベルをローレベルとし、初期設定が完了した場合に準備完了信号の信号レベルをローレベルからハイレベルに変化させるものであり、アンドゲートは、準備完了信号及び切替要求信号がそれぞれローレベルからハイレベルに変化した場合に、切替信号を切替部に出力する。
【００１９】
本発明の手段、機能、ステップの全部または一部は、コンピュータシステムにより実行されるコンピュータプログラムとして構成可能な場合がある。本発明の構成の全部または一部がコンピュータプログラムから構成された場合、このコンピュータプログラムは、例えば、各種記憶媒体に固定して配布等することができ、あるいは、通信ネットワークを介して送信することもできる。
【発明を実施するための最良の形態】
【００２０】
図１は、本発明の実施形態の全体概要を示す構成説明図である。本実施形態では、後述のように、複数のコントローラによって多重化された記憶制御装置において、一方のコントローラから所定の動作の実行を指示する制御指令（切替要求信号）が出力された場合、他方のコントローラは、所定の動作（ループの切替）を行う前に、所定の動作の実行環境（下位通信部の初期設定完了）が一方のコントローラにおいて整っているか否かを確認し、一方のコントローラにおける実行環境を確認してから、所定の動作を実行するようにしている。即ち、本実施形態では、一方のコントローラから他方のコントローラに制御指令が発行された場合に、その制御指令の妥当性を、その制御指令に関する別の情報に基づいて判断してから、実行する。
【００２１】
図１に示す記憶制御装置１は、例えば、SAN（Storage Area Network）等の上位通信ネットワークを介してホスト装置（以下「ホスト」）９と接続されており、ホスト９にボリュームを提供する。
【００２２】
記憶制御装置１は、複数のコントローラ２Ａ，２Ｂと記憶部３とを備えている。各コントローラ２Ａ，２Ｂは、それぞれ独立して記憶部３にアクセスし、データの入出力を行うことができる。また、コントローラ２Ａ，２Ｂは、互いに相手をバックアップする関係にあり、いずれか一方のコントローラが障害や保守等で停止した場合でも、他方のコントローラがホスト９からのアクセス要求を処理できるようになっている。
【００２３】
従って、各コントローラ２Ａ，２Ｂは同一の構成を有し、上位通信部４と、下位通信部５と、制御部６と、パス切替部７と、切替許可部８とをそれぞれ備えている。なお、図１中では発明の理解のために、切替許可部８は、コントローラ２Ｂのみが備えるかのように示してあるが、コントローラ２Ａも備えている。
【００２４】
記憶部３は、例えば、ハードディスクドライブや半導体メモリドライブ、光ディスクドライブ等のような複数の記憶デバイスから構成することができる。これらの各記憶デバイスがそれぞれ有する物理的な記憶領域を仮想化することにより、論理ボリュームが生成される。ホスト９は、論理ボリュームにアクセスしてデータの読み書きを行う。記憶部３は、少なくとも２つの入出力ポートを備えており、各ポートにはそれぞれ異なるパス７Ａ，７Ｂが接続されている。従って、記憶部３には、パス７Ａ，７Ｂの両方からそれぞれアクセスすることができる。
【００２５】
上位通信部４は、ホスト９との間の通信を担当するものである。下位通信部５は、記憶部３との間の通信を担当するものである。上位通信部４は、SAN等の上位通信ネットワークを介してホスト９に接続されており、ファイバチャネルプロトコルに基づいてブロック単位のデータ通信を行う。下位通信部５は、SAN等の下位通信ネットワーク７Ａ，７Ｂを介して、記憶部３との間でブロック単位のデータ通信を行う。なお、プロトコルの種類はファイバチャネルSAN（FC-SAN）に限られず、例えば、TCP/IP（Transmission Control Protocol/Internet Protocol）等の他のプロトコルを利用できる場合もある。
【００２６】
制御部６は、コントローラ２Ａ，２Ｂの動作を制御するものであり、例えば、CPU（Central Processing Unit）、ROM（Read Only Memory）、RAM（Random Access Memory）、ASIC（Application Specific Integrated Circuit）等を備えた制御装置として構成することができる。制御部６の機能は、さらに後述する。
【００２７】
パス切替部７は、下位通信部５と記憶部３との間のパスを制御するものである。パス切替部７は、通常状態ではプライマリパスを選択しているが、障害が発生した場合にはオルタネートパスに切り替えるようになっている。各コントローラ２Ａ，２Ｂのパス切替部７は、パス７Ｃを介して接続されている。
【００２８】
例えば、一方のコントローラ２Ａに着目すると、その下位通信部５は、通常状態では、プライマリパス７Ａを介して記憶部３にアクセスする。プライマリパス７Ａに障害が発生して使用できなくなった場合、パス切替部７は、制御部６からの指示に基づいて、オルタネートパス７Ｂに切り替える。これにより、コントローラ２Ａの制御部６は、オルタネートパス７Ｂを介して記憶部３にアクセスし、データの読み書きを行うことができる。
【００２９】
他方のコントローラ２Ｂに着目すると、その下位通信部５は、通常状態では、プライマリパス７Ｂを介して記憶部３にアクセスする。プライマリパス７Ｂに障害が生じた場合、パス切替部７によってプライマリパス７Ｂからオルタネートパス７Ａへ切り替えられるため、コントローラ２Ｂの制御部６は、オルタネートパス７Ａを介して記憶部３にアクセスすることができる。
【００３０】
切替許可部８は、制御部６からの指示に基づいて、パス切替部７に切替許可を与えるものである。切替許可部８から許可された場合に、パス切替部７はパスを切り替えるようになっている。
【００３１】
制御部６の機能について説明する。コントローラ２Ａの制御部６に示すように、制御部６は、例えば、初期設定完了検出部６Ａと、障害検出部６Ｂと、切替要求出力部６Ｃとを備えることができる。また、コントローラ２Ｂに示すように、制御部６は、準備状態検出部６Ｄを備えることもできる。各コントローラ２Ａ，２Ｂの制御部６は、これら各部６Ａ〜６Ｄをそれぞれ備えており、同一の構成を有する。
【００３２】
初期設定完了検出部６Ａは、下位通信部５の初期設定が完了したか否かを検出するためのものである。例えば、コントローラ２Ａ，２Ｂを記憶制御装置１に装着した場合、下位通信部５は初期設定を開始する。下位通信部５の初期設定が完了すると、下位通信部５を利用可能となる。初期設定が完了するまでには例えば数分間程度の時間を必要とする。
【００３３】
障害検出部６Ｂは、記憶部３へのパスに障害が発生したか否かを検出するためのものである。例えば、ファイバケーブルの脱落やポート故障等による障害が発生すると、障害検出部６Ｂはこれを検出し、障害検出信号を切替要求出力部６Ｃに出力する。切替要求出力部６Ｃは、障害発生が通知されると、制御用パス８Ａを介して、切替許可部８に切替要求信号を出力する。
【００３４】
準備状態検出部６Ｄは、制御用パス６Ｅを介して、相手方コントローラの初期設定完了検出部６Ａに接続されている。準備状態検出部６Ｄは、相手方コントローラの下位通信部５が初期設定を完了したことを知ると、準備完了信号を切替許可部８に出力する。
【００３５】
切替許可部８は、切替要求信号及び準備完了信号の両方が入力されると、パス切替部７に切替信号を出力する。これにより、パス切替部７は、パスを切り替える。例えば、一方のコントローラ２Ａのパス７Ａに障害が発生した場合、このコントローラ２Ａの下位通信部５は、パス７Ｃ，７Ｂを介して記憶部３にアクセスする。同様に、他方のコントローラ２Ｂのパス７Ｂに障害が発生した場合、コントローラ２Ｂの下位通信部５は、パス７Ｃ，７Ａを介して記憶部３にアクセスする。
【００３６】
本実施形態では、記憶部３へのパス７Ａ，７Ｂのいずれかに障害が発生した場合、切替用パス７Ｃから他方のパス７Ｂ，７Ａを介して、記憶部３にアクセスすることができるため、耐障害性が向上する。
【００３７】
さらに、本実施形態では、切替要求信号のみでパスを切り替えるのではなく、切替準備が完了したか否かを示す準備完了信号も用いて、パスを切り替える構成とした。従って、切替元（障害の発生元）のコントローラにおいて切替準備が完了したことを確認してから、記憶部３へのパスを切り替えることができ、より一層信頼性が向上する。
【００３８】
例えば、何らかの原因によって切替要求出力部６Ｃが故障することも考えられるが、この故障に気づかないまま、稼働中の記憶制御装置１にコントローラ２Ａを取り付ける場合もあり得る。この場合、切替要求出力部６Ｃは故障しているため、パスに障害が発生していないにもかかわらず、切替要求信号を出力することがあり得る。一方、このコントローラ２Ａを記憶制御装置１に取り付けると、下位通信部５は初期設定を開始する。
【００３９】
下位通信部５の初期設定が完了するよりも前に、誤った切替要求信号に従って、記憶部３へのパスが強制的に切り替えられてしまうと、いずれのコントローラ２Ａ，２Ｂも記憶部３にアクセスすることができなくなる。コントローラ２Ａの下位通信部５が初期設定を完了して使用可能状態にならなければ、パスを確立させることができないため、ホスト９からのアクセス要求を処理できない場合がある。
【００４０】
これに対し、本実施形態では、切替要求信号のみならず、準備完了信号の状態も考慮してパスの切替を制御する構成としている。従って、切替準備が完了する前にパスが切り替えられてしまう事態の発生を防止することができ、信頼性が向上する。以下、本実施形態をより詳細に説明する。
【実施例１】
【００４１】
図２は、本実施例による記憶制御装置１０の全体構成を示すブロック図である。図２には、記憶制御装置１０を含むストレージシステムの全体が概略的に示されている。先に、図１との対応関係について述べると、図２中の記憶制御装置１０は図１中の記憶制御装置１に、図２中のホスト１００は図１中のホスト９に、図２中のディスクドライブ３０は図１中の記憶部３に、図２中の高速バス４０は図１中のパス６Ｅに、図２中の信号線４１，４２は図１中のパス７Ｃに、図２中の信号線４３は図１中のパス８Ａに、図２中のループ５０，５０は図１中のパス７Ａ，７Ｂに、それぞれ対応する。また、図２中のFPC２１は図１中の上位通信部４に、図２中のFPC２２は図１中の下位通信部５に、図２中のPBC２６は図１中のパス切替部７に、図２中のアンドゲート２７は図１中の切替許可部８に、それぞれ対応する。図２中のD_CTL２３，MPU２４，キャッシュメモリ２５は全体として、図１中の制御部６に対応する。
【００４２】
記憶制御装置１０は、例えば、FC-SW（Fibre Channel-Switch）１１０等の中継装置を介して、複数のホスト１００にそれぞれ接続可能である。各ホスト１００と記憶制御装置１０とは、SANのようなネットワークを介して接続することができる。
【００４３】
ホスト１００は、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成できる。ホスト１００と記憶制御装置１０との間を接続するネットワークとしては、SANに限られず、例えば、LAN（Local Area Network）、インターネット、専用回線、公衆回線等を、場合に応じて適宜用いることができる。LANやインターネットを使用する場合、例えば、TCP/IPプロトコルに基づいてファイル単位のデータ転送を行うことができる。なお、ホスト１００がメインフレームとして構成される場合、ホスト１００は、例えば、FICON（Fibre Connection：登録商標）、ESCON（Enterprise System Connection：登録商標）、ACONARC（Advanced Connection Architecture：登録商標）、FIBARC（Fibre Connection Architecture：登録商標）等の通信プロトコルに従ってデータ転送を行うことができる。
【００４４】
記憶制御装置１０は、例えば、ディスクアレイサブシステムとして構成されるもので、例えば、図３の外観図にも示すように、基本筐体１１と増設筐体１２とから構成することができる。図３に示すように、記憶制御装置１０のラックには、一つの基本筐体１１と、複数の増設筐体１２とがそれぞれ着脱可能に取り付けられている。基本筐体１１は、記憶制御装置１０の動作を制御するものである。増設筐体１２は、ディスクドライブ３０を増設するためのものである。
【００４５】
図２に戻る。基本筐体１１は、例えば、複数のコントローラ（CTL）２０，２０と、複数のディスクドライブ３０とを備えて構成することができる。各コントローラ２０は、ホスト１００から受信したコマンドをそれぞれ独立して処理し、ディスクドライブ３０へデータの読み書きを行う。各コントローラ２０は二重化されており、それぞれ同一の構成を備えている。
【００４６】
そこで一方のコントローラ２０について説明する。コントローラ２０は、例えば、FPC（（Fibre channel Protocol Chip）２１，２２と、D_CTL（Data Control Chip）２３と、MPU（Micro Processing Unit）２４と、キャッシュメモリ２５と、PBC（Port Bypass Circuit）２６と、アンドゲート２７と、を備えて構成することができる。
【００４７】
一つのFPC２１は、ホスト１００との間の通信を行う回路であり、PCI（Peripheral Components Interconnect）とファイバチャネルプロトコルとの間の変換を行う。他のFPC２２は、ディスクドライブ（図中「HDD」）３０との間の通信を行う回路であり、PCIとファイバチャネルプロトコルとの間の変換を行う。
【００４８】
D_CTL２３は、データ処理を行う回路である。MPU２４は、所定のプログラムを読み込んで実行することにより、後述する各機能をそれぞれ実現し、コントローラ２０の制御を行うようになっている。キャッシュメモリ２５は、ホスト１００から受信したデータを記憶したり、ディスクドライブ３０から読出したデータを記憶するものである。PBC２６は、各ディスクドライブ３０への接続経路を制御するための回路である。PBC２６の具体例については、さらに後述する。
【００４９】
アンドゲート２７は、自系及び他系のD_CTL２３からそれぞれ出力される制御信号が、ともにハイレベルを示す場合に、PBC２６に切替信号を出力するようになっている。ここで、「自系」とは、そのアンドゲート２７が存在する方の制御体系（コントローラ２０等）を意味し、「他系」とは、そのアンドゲートが存在しない方の制御体系を意味する。
【００５０】
各コントローラ２０は、基本筐体１１の背面側を施蓋するようにして設けられたバックボード１１Ａを介して、接続される。各コントローラ２０のD_CTL２３は、高速バス４０を介して接続されている。アンドゲート２７は、その一方の入力側に信号線４４を介して自系のD_CTL２３が接続され、他方の入力側に信号線４３を介して他系のD_CTL23が接続されており、また、アンドゲート２７の出力側は、自系のPBC２６に接続されている。各PBC２６は、オルタネート接続用パス４１，４２を介して、接続されている。これらの高速バス４０，信号線４３，オルタネート接続用パス４１，４２は、バックボード１１Ａを利用して構成される。また、バックボード１１Ａには、各ディスクドライブ３０へ接続するためのコネクタ等も設けられている。
【００５１】
次に、記憶部の構成を説明する。基本筐体１１及び増設筐体１２は、それぞれ複数のディスクドライブ３０を備えることができる。基本筐体１１の有するディスクドライブ３０だけでは記憶容量が不足する場合、増設筐体１２が基本筐体１１に接続される。このように、ユーザの希望に応じて、記憶容量を段階的に増加させることができる。
【００５２】
ディスクドライブ３０は、例えば、FC（Fibre Channel）ディスクやSATA（Serial AT Attachment）ディスク等のようなハードディスクドライブとして構成される。しかし、これに限らず、半導体メモリドライブや光ディスクドライブ等の他の記憶デバイスを用いることもできる。
【００５３】
各ディスクドライブ３０は、それぞれ複数の入出力インターフェース３１Ａ，３１Ｂ及び３２Ａ，３２Ｂを備えている。そして、一方のコントローラ２０（CTL#1）は、一方のインターフェースを介して、各ディスクドライブ３０に接続されており、他方のコントローラ２０（CTL#2）は、他方のインターフェースを介して、各ディスクドライブ３０に接続されている。
【００５４】
各ディスクドライブ３０は、各インターフェースを介して、それぞれループ状に接続されている。一方のループ５０（#1）には、一方のコントローラ２０（CTL#1）が参加し、他方のループ５０（#2）には、他方のコントローラ２０（CTL#2）が参加している。一方のコントローラ２０（CTL#1）から見ると、一方のループ５０（#1）がプライマリループであり、他方のループ５０（#2）はオルタネートループとなる。逆に、他方のコントローラ２０（CTL#2）から見ると、他方のループ５０（#2）がプライマリループであり、一方のループ５０（#1）はオルタネートループとなる。
【００５５】
通常の場合、各コントローラ２０は、それぞれのプライマリループを介して、各ディスクドライブ３０にアクセスし、データの読み書きを行う。プライマリループに障害が生じた場合、自系及び他系のPBC２６が接続先ループの切り替えを行うため、各コントローラ２０は、オルタネートループを介して、各ディスクドライブ３０にアクセスする。
【００５６】
一方のコントローラ２０（#1）に着目して説明すると、通常状態において、D_CTL２３は、FPC２２，PBC２６及びループ５０（#1）をそれぞれ介して、ディスクドライブ３０にアクセスする。ループ５０（#1）に障害が発生すると、アンドゲート２７からの切替信号によってPBC２６が作動し、ループ５０（#1）からループ５０（#2）に切り替えられる。即ち、異常状態において、D_CTL２３は、FPC２２，PBC２６，オルタネート接続用パス４２を介して、他系のループ５０（#2）に接続される。
【００５７】
図４は、コントローラの要部を示す回路図である。D_CTL２３は、高速バス４０へ接続するための高速バスインターフェースP1と、PCIバスを介してFPC２２に接続するためのPCIインターフェースP2と、切替制御信号（「オルタネート制御信号」とも呼ぶ）を出力するための端子P3と、準備完了信号（図中「LOOP-READY」信号）を出力するための端子P4と、をそれぞれ備えることができる。
【００５８】
各コントローラ２０の高速バスインターフェースP1は、高速バス４０にそれぞれ接続されており、各コントローラ間で制御情報等の交換を高速に行うことができる。各コントローラ２０は、PCIインターフェースP2を介して、FPC２２に接続されている。各コントローラ２０の端子P3は、自系のPBC２６に入力されていると共に、信号線４３を介して他系のアンドゲート２７にも入力されている。各コントローラ２０の端子P4は、自系のアンドゲート２７に入力されている。
【００５９】
PBC２６は、例えば、複数のセレクタ（またはマルチプレクサ）IS1〜IS6を多段に接続することにより、構成することができる。図４中では、各PBC２６をそれぞれ簡略化して示しているが、各PBC２６の役割は、FPC２２の接続先ループを切り替えることにある。
【００６０】
図５は、通常状態のデータの流れを示す図である。図中の太線は、データの流れる信号線を、点線はデータが流れない信号線を、細線は制御用の信号線をそれぞれ示す。各コントローラ２０は、それぞれのループ５０を介して、各ディスクドライブ３０にそれぞれアクセスする。
【００６１】
次に、本実施例の動作について説明する。図６は、コントローラ２０によるコマンド処理を示すフローチャートである。
コントローラ２０は、FPC２１を介してホスト１００からコマンドを受信すると（S10：YES）、受信したコマンドのタイプを識別する（Ｓ１１）。ライトコマンドを受信した場合、コントローラ２０は、ホスト１００から受信したライトデータをキャッシュメモリ２５に記憶させた後（Ｓ１２）、書込み完了をホスト１００に通知する（Ｓ１３）。その後、コントローラ２０は、例えば、所定のタイミングを見計らって、キャッシュメモリ２５に記憶されたライトデータを所定のディスクドライブ３０に書き込む（Ｓ１４）。
【００６２】
ここで、所定のディスクドライブ３０とは、ホスト１００によりアクセスされる論理ボリュームに対応するディスクドライブを意味する。ホスト１００は、論理ボリュームの論理アドレス（LBA：Logical Block Address）を指定してライトデータを発行する。コントローラ２０は、この論理アドレスをディスクドライブ３０の物理アドレスに変換して、データを書き込む。なお、上述のように、ディスクドライブ３０へのライトデータ書込みタイミングとホスト１００への書込み完了報告のタイミングとが一致しない構成（非同期式）に限らず、ディスクドライブ３０にライトデータを書き込んでから、ホスト１００に書込み完了を通知する構成（同期式）でもよい。
【００６３】
ホスト１００から受信したコマンドがリードコマンドの場合、コントローラ２０は、ホスト１００から要求されたデータがキャッシュメモリ２５に記憶されているか否かを判定する（Ｓ１５）。ホスト１００から要求されたデータがキャッシュメモリ２５に記憶されている場合（S15：YES）、コントローラ２０は、キャッシュメモリ２５に記憶されているデータを読み出して、FPC２１からホスト１００に送信させる（Ｓ１７）。ホスト１００から要求されたデータがキャッシュメモリ２５に記憶されていない場合（S15：NO）、コントローラ２０は、FPC２２，PBC２６，ループ５０を介してディスクドライブ３０にアクセスする。コントローラ２０は、所定のディスクドライブ３０からデータを読み出して、キャッシュメモリ２５に記憶させる（Ｓ１６）。そして、コントローラ２０は、キャッシュメモリ２５に記憶させたデータを、ホスト１００に送信させる（Ｓ１７）。
【００６４】
ホスト１００から受信したコマンドがライトコマンドでもリードコマンドでも無い場合、その他のコマンド処理が行われる（Ｓ１８）。その他のコマンドとしては、例えば、Inquiryコマンド、Read-Capacityコマンド等を挙げることができる。
【００６５】
次に、図７は、ループ５０に障害が発生した場合のパス切替処理を示すフローチャートである。切替元となるコントローラ２０のMPU２４は、所定の周期でループ５０の状態を監視している（Ｓ２０）。例えば、ディスクドライブ３０のポートが故障したり、あるいは、ファイバケーブルが破損等すると、ループ５０は切断される。ループ５０の切断は、MPU２４によって検出される（S20：YES）。MPU２４は、D_CTL２３にオルタネート接続を指示する（Ｓ２１）。
【００６６】
切替元となるコントローラ２０のD_CTL２３は、MPU２４からの指示を受信すると（Ｓ２２）、端子P3から出力されるオルタネート制御信号の信号レベルを”０”から”１”に変化させる。即ち、通常の場合、端子P3の出力はローレベルになっており、オルタネート接続を行う場合に、端子P3の出力はローレベルからハイレベルに変化する。なお、D_CTL２３は、切替元となるコントローラ２０のPBC２６にもオルタネート制御信号を出力する。
【００６７】
続いて、D_CTL２３は、FPC２２の初期設定が完了しているか否かを判定し（Ｓ２４）、初期設定が完了している場合（S24：YES）、高速バス４０を介して、切替先となるコントローラ２０のD_CTL２３に通知する（Ｓ２５）。ここでは、記憶制御装置１０が稼働中に障害が発生した場合を説明しているので、既にFPC２２の初期設定は完了しており、この旨が相手方のコントローラ２０に通知される。
【００６８】
切替先となるコントローラ２０に目を転じる。切替先となるコントローラ２０のD_CTL２３は、切替元となるコントローラ２０のD_CTL２３から、FBC２２の初期設定が完了した旨の通知（FPC２２が使用可能状態であることを示す通知）を受信する（Ｓ２６）。D_CTL２３は、この通知を受信すると、端子P4から出力されるLOOP-READY信号（準備完了信号）の信号レベルを、ローレベルからハイレベルに変化させる（Ｓ２７）。
【００６９】
切替先となるコントローラ２０のアンドゲート２７は、オルタネート制御信号及びLOOP-READY信号の両方がそれぞれハイレベルに変化すると、ハイレベルの切替信号をPBC２６に出力する。
【００７０】
PBC２６は、アンドゲート２７から切替信号を受信すると、オルタネートパスに切り替えて（Ｓ２８）、他系のFPC２２（つまり切替元となるコントローラ２０のFPC２２）を、自系のループ５０に参加させる（Ｓ２９）。これにより、障害の発生したコントローラ２０は、他のループ５０を介して、各ディスクドライブ３０にアクセス可能となる。
【００７１】
図８，図９には、図７で説明した動作の様子が示されている。図８のブロック図に示すように、例えば、コントローラ２０（#2）のループ５０（#2）に障害が発生した場合、このコントローラ２０（#2）のFPC２２は、オルタネート接続用パス４１等を介して、他系のループ５０（#1）に接続される。
【００７２】
その詳細が図９の回路図に示されている。切替元となるコントローラ２０（#2）のPBC２６は、そのセレクタIS2の出力が、オルタネート接続用パス４１を介して、切替先となるコントローラ２０（#1）のPBC２６のセレクタIS4に接続される。コントローラ２０（#2）からのデータは、セレクタIS4から各ディスクドライブ３０及びセレクタIS5,IS6を介して、ループ５０（#1）を流れ、第１段目のセレクタIS1に入力される。そして、データは、IS1からFPC２２，IS2，IS3を介して、オルタネート接続用パス４１に流れ、切替元のPBC２６に戻る。
【００７３】
次に、図１０，図１１を参照して、故障したコントローラ２０を活線挿入する場合の動作を説明する。ここでは、コントローラ２０（#2）にオルタネート制御信号に関する故障が生じているものとする。この故障は、ループ５０（#2）が正常であるにもかかわらず、D_CTL２３からハイレベルのオルタネート制御信号が出力されるというものである。
【００７４】
記憶制御装置１０は、その動作を停止させることなく、また、ホスト１００からのアクセスを停止させることなく、コントローラ２０（#1），２０（#2）のいずれか一方を交換することができる。このような稼働状態でのコントローラ２０の着脱を、ここでは活線挿抜と呼ぶ。システム管理者等のユーザが、コントローラ２０（#2）を記憶制御装置１０から引き抜いて、再び記憶制御装置１０に装着する場合を例に挙げて説明する。
【００７５】
故障しているコントローラ２０（#2）を記憶制御装置１０に活線挿入すると（Ｓ３０）、このコントローラ２０（#2）のD_CTL２３は、ループ５０（#1）の状態にかかわらず、ハイレベルのオルタネート制御信号を出力する（Ｓ３１）。切替先となるコントローラ２０（#1）では、オルタネート制御信号が入力されたことを検出する（Ｓ３７）。しかし、この時点では、未だLOOP-READY信号が入力されていないため、オルタネートループ５０（#1）への参加は許可されない。
【００７６】
記憶制御装置１０に装着されたコントローラ２０（#2）では、そのFPC２２が初期設定を開始する（Ｓ３２）。FPC２２の初期設定が完了すると（S33：YES）、コントローラ２０（#2）は、FPC２２の初期設定が完了して作動可能状態になったことを、切替先となるコントローラ２０（#1）に通知する（Ｓ３４）。この切替可能状態になった旨の通知は、D_CTL２３間を接続する高速バス４０を介して、行われる。
【００７７】
切替先となるコントローラ２０（#1）は、切替元となるコントローラ２０（#2）のFPC２２が初期設定を完了したことを知ると（S35：YES）、LOOP-READY信号をローレベルからハイレベルに変化させる（Ｓ３６）。
【００７８】
これにより、コントローラ２０（#1）のアンドゲート２７には、オルタネート制御信号及びLOOP-READY信号の両方がそれぞれ入力されるため（S38：YES）、アンドゲート２７からPBC２６に切替信号が出力され、パスが切り替えられる（Ｓ３９）。これにより、コントローラ２０（#2）は、ループ５０（#1）に参加し、各ディスクドライブ３０にアクセスすることができるようになる（Ｓ４０）。この後、切替元となるコントローラ２０（#2）のプライマリループ５０（#2）は閉塞される。
【００７９】
本実施例は上述の構成を備えるため、以下の効果を奏する。本実施例では、オルタネート制御信号とLOOP-READY信号の両方が揃った場合に、PBC２６によるパスの切替を許可する構成とした。従って、万が一、オルタネート制御信号の出力部分が故障しているコントローラ２０（#2）を記憶制御装置１０に活線挿入した場合でも、正常にパスを切り替えることができ、ホスト１００からのアクセス要求を処理することができる。
【００８０】
この点について、図１２，図１３を参照しつつ説明する。図１１，図１２は、本実施例の効果を説明するために使用される比較例としての記憶制御装置１０Ａを示す。この記憶制御装置１０Ａからは、LOOP-READY信号に関する構成及びアンドゲート２７に関する構成が取り除かれている。この記憶制御装置１０Ａでは、オルタネート制御信号のみに基づいて、ディスクドライブ３０へのパス切替が行われる。
【００８１】
故障しているコントローラ２０（#2）が記憶制御装置１０Ａに活線挿入されると、ハイレベルのオルタネート制御信号が、切替先となるコントローラ２０（#1）のPBC２６に入力される。これにより、PBC２６は、直ちにパスを切り替えるため、切替元となるコントローラ２０（#2）はループ５０（#1）に強制的に接続される。
【００８２】
しかし、コントローラ２０（#2）を記憶制御装置１０Ａに装着した直後は、まだFPC２２の初期設定が完了していない。従って、図１３の回路図に示すように、ループ５０（#1）は、この作動状態になっていないFPC２２の箇所で途切れてしまい、リンクアップ（同期完了）することができない。このため、ループ５０（#1）は使用不能状態となり、各ディスクドライブ３０からのデータの読出し及びデータの書込みを行うことができない。これにより、同期式のライトコマンド処理や、キャッシュメモリ２５に記憶されていないデータに関するリードコマンド処理を行うことができなくなる。
【００８３】
これに対し、本実施例では、オルタネート制御信号及びLOOP-READY信号の両方に基づいて、パスを切り替える構成のため、オルタネート制御信号の出力部分が故障しているコントローラ２０（#2）を記憶制御装置１０に活線挿入した場合でも、安定したパス切替を行うことができる。従って、記憶制御装置１０の信頼性が向上する。
【００８４】
また、本実施例では、切替元となるコントローラ２０（#2）において、切替準備が完了したか否かの情報を、高速バス４０を介して、切替先となるコントローラ２０（#1）に通知する構成とした。従って、バックボード１１Ａ等の構成を変化させることなく、安定したパスの切替を行うことができる。
【００８５】
図１２，図１３と共に述べた問題を解決するために、オルタネート制御信号を出力する部分の構成を多重化することも考えられる。しかし、オルタネート制御信号に関する構成を多重化すると、コントローラ２０からバックボード１１Ａに接続される出力端子の数や、バックボード１１Ａに設けられる信号線４３の数も増加する。この結果、バックボード１１Ａのプリント配線等が過密化し、記憶制御装置１０の更なる高性能化を阻害するおそれがある。バックボード１１Ａの面積や構造を変えずに、ループ数を増加させるのが難しくなるためである。
【００８６】
これに対し、本実施例では、オルタネート制御信号に関する構成を単純に多重化するのではなく、切替元となるコントローラ２０において切替準備が完了したか否かを、高速バス４０を介して確認する構成を採用する。従って、コントローラ２０の出力端子数や信号線４３の数を増加させずに、記憶制御装置１０の信頼性を高めることができ、より多くのループに対応することができる。
【実施例２】
【００８７】
図１４、図１５に基づいて第２実施例を説明する。本実施例を含む以下の実施例は、第１実施例の変形例に該当する。本実施例では、切替元のコントローラ２０から管理端末１２０を介して、切替先のコントローラ２０に切替準備完了の通知を行う。
【００８８】
図１４は、本実施例による記憶制御装置１０の全体構成を示すブロック図である。管理端末１２０は、例えば、パーソナルコンピュータ等のように構成できる。管理端末１２０は、LAN等の管理用ネットワーク１２１を介して、各コントローラ２０にそれぞれ接続されている。
【００８９】
図１５は、パス切替処理を示すフローチャートである。上述のステップと重複する説明を省略し、本実施例の変更点を中心に説明する。切替元となるコントローラ２０（#2）は、FPC２２の初期設定が完了すると（S33：YES）、FPC２２の初期設定が完了した旨を管理端末１２０に通知する（Ｓ３４Ａ）。
この通知は、例えば、ループ情報２００として、管理端末１２０のメモリまたはローカルディスクに記憶される。ループ情報２００は、このループ情報２００を作成した側のコントローラにおいて、このループ情報２００を作成した時点では、プライマリループが正常状態にあることを示す。
切替先となるコントローラ２０（#1）は、管理端末１２０からループ情報２００を取得することにより、切替元での切替準備が完了したか否かを検出する（Ｓ３５Ａ）。
【００９０】
このように構成される本実施例も前記第１実施例と同様の効果を奏する。なお、当然ではあるが、このループ情報２００は、各コントローラ２０がそれぞれ作成して、管理端末１２０に記憶させる。
【実施例３】
【００９１】
図１６に基づいて第３実施例を説明する。本実施例では、所定のディスクドライブ３０を用いて、切替準備が完了した旨の情報を受け渡すようになっている。図１６は、パス切替処理を示すフローチャートである。
【００９２】
切替元となるコントローラ２０（#2）は、FPC２２の初期設定が完了すると（S33：YES）、初期設定が完了した旨を、例えばループ情報２００として、所定のディスクドライブ３０に記憶させる（Ｓ３４Ｂ）。切替先となるコントローラ２０（#1）は、所定のディスクドライブ３０からループ情報２００を取得することにより、切替元での切替準備が完了したか否かを検出する（Ｓ３５Ｂ）。
【００９３】
ここで、ループ５０が正常状態になければ、FPC２２は初期設定を完了させることはできない。従って、ループ情報２００を所定のディスクドライブ３０に書き込めたときは、少なくとも、その時点でループ５０は正常状態にあった場合である。その後、何らかの原因によって、ループ５０に障害が発生した場合、他系のコントローラは、オルタネート制御信号とループ情報２００とに基づいて、パスの切替可否を判断し、実行する。
【００９４】
このように構成される本実施例も第１実施例と同様の効果を奏する。なお、各コントローラ２０が、それぞれ自己のループ状態を確認してループ情報２００を生成し、所定のディスクドライブ３０に記憶させる。ここで、ループ情報２００の消失防止のために、複数のディスクドライブ３０にループ情報２００を書き込むこともできる。
【００９５】
なお、本発明は、上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、オルタネート制御信号及びLOOP-READY信号の両方が入力されたか否かを検出するための回路として、アンドゲートを例に挙げたが、これに代えて、NOT素子及びオアゲートを用いてもよい。両信号が出揃ったか否かをD_CTL等の内部で検出する構成でもよい。
【００９６】
また、前記各実施例では、下位通信ネットワークの切替制御信号（オルタネート制御信号）の信頼性を向上させる場合を例に挙げて説明したが、これに限らず、例えば、電源オフの指令等のように、一方のコントローラからの指令に基づいて他方のコントローラが所定の動作を実行する種々の場合に適用可能である。さらに、前記各実施例を適宜組み合わせて使用することもできる。
【図面の簡単な説明】
【００９７】
【図１】本発明の実施形態の全体概念を示す説明図である。
【図２】記憶制御装置の全体構造を示すブロック図である。
【図３】記憶制御装置の外観図である。
【図４】記憶制御装置の一部を拡大して示す回路図である。
【図５】通常状態におけるデータの流れを示す回路図である。
【図６】ホストからのコマンドを処理するフローチャートである。
【図７】ディスクドライブへ接続するためのパスの切替処理を示すフローチャートである。
【図８】ループに障害が発生した場合のパス切替の様子を示すブロック図である。
【図９】パス切替時のデータの流れを示す回路図である。
【図１０】オルタネート制御信号の出力に関して故障しているコントローラを記憶制御装置に活線挿入した場合のパス切替処理を示すフローチャートである。
【図１１】オルタネート制御信号の出力に関して故障しているコントローラを記憶制御装置に活線挿入した様子を示すブロック図である。
【図１２】本実施例との比較のために使用される記憶制御装置のブロック図である。
【図１３】比較例においてパス切替時にループが切断される様子を示す回路図である。
【図１４】第２実施例に係る記憶制御装置のブロック図である。
【図１５】パス切替処理を示すフローチャートである。
【図１６】第３実施例に係り、パス切替処理を示すフローチャートである。
【符号の説明】
【００９８】
１…記憶制御装置、２Ａ，２Ｂ…コントローラ、３…記憶部、４…上位通信部、５…下位通信部、６…制御部、６Ａ…初期設定完了検出部、６Ｂ…障害検出部、６Ｃ…切替要求出力部、６Ｄ…準備状態検出部、６Ｅ…制御用パス、７…パス切替部、７Ａ，７Ｂ…パス（下位通信ネットワーク）、７Ｃ…切替用パス、８…切替許可部、８Ａ…制御用パス、９…ホスト、１０，１０Ａ…記憶制御装置、１１…基本筐体、１１Ａ…バックボード、１２…増設筐体、２０…コントローラ、２１，２２…FPC（ファイバチャネルプロトコルチップ）、２３…D_CTL（データコントロールチップ）、２４…MPU（マイクロプロセッシングユニット）、２５…キャッシュメモリ、２６…PBC（ポートバイパスサーキット）、２７…アンドゲート、３０…ディスクドライブ、３１Ａ，３１Ｂ，３２Ａ，３２Ｂ…入出力インターフェース、４０…高速バス、４１，４２…オルタネート接続用パス、４３…信号線（オルタネート制御信号）、４４…信号線（LOOP-READY信号）、５０…ループ、１００…ホスト、１２０…管理端末、１２１…管理用ネットワーク、２００…ループ情報
【図１】
2007011682.tif 000003
【図２】
2007011682.tif 000004
【図３】
2007011682.tif 000005
【図４】
2007011682.tif 000006
【図５】
2007011682.tif 000007
【図６】
2007011682.tif 000008
【図７】
2007011682.tif 000009
【図８】
2007011682.tif 000010
【図９】
2007011682.tif 000011
【図１０】
2007011682.tif 000012
【図１１】
2007011682.tif 000013
【図１２】
2007011682.tif 000014
【図１３】
2007011682.tif 000015
【図１４】
2007011682.tif 000016
【図１５】
2007011682.tif 000017
【図１６】
2007011682.tif 000018