(57)【特許請求の範囲】
【請求項１】
複数の接続されたホストコンピュータの指示に基づいて記憶装置の制御を行う制御装置であって、
複数のポート及び共有メモリを有し、前記ホストコンピュータとのプロトコルを制御する独立した第１及び第２のコントローラを備え、
各前記ホストコンピュータに対してそれぞれ現用系のポートが前記第１及び第２のコントローラに割り振って設定され、
前記第１及び第２のコントローラは、自コントローラの各ポートが現用系であるか待機系であるかに関するインターフェース情報を各前記共有メモリに二重に書き込んで格納しており、
前記第１のコントローラは、自コントローラにおける現用系のポートに障害を検知した場合には、当該現用系のポートを待機系に変更すると共に前記障害を前記第２のコントローラに通知し、当該通知を受けた前記第２のコントローラは、前記共有メモリのインターフェース情報を用いて、自コントローラにおける対応する待機系のポートを現用系に変更し、
前記第１のコントローラは、前記第２のコントローラにおける現用系のポートに障害を検出した場合には、当該現用系のポートを待機系に変更すると共に自コントローラにおける対応する待機系のポートを現用系に変更し、
前記第２のコントローラは、前記第１のコントローラにおけるポートが障害から復旧したことを検知した場合には、自コントローラにおいて現用系に変更していた対応するポートを待機系に戻す一方、前記第１のコントローラにおいて待機系に変更していたポートを現用系に戻す
ことを特徴とする制御装置。
【請求項２】
前記第１及び第２のコントローラは、それぞれ、
前記記憶装置に読み書きするデータを一時的に記憶するキャッシュを有し、
前記キャッシュは、
前記データを記憶可能なデータ領域と、
前記データ領域とは別に区画された領域であって前記インターフェース情報を記憶可能な共有領域とを有し、
前記第１及び第２のコントローラは、それぞれ
同一の前記インターフェース情報を前記キャッシュに二重に書き込んで格納する請求項１に記載の制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、上位装置からの情報の入出力要求を制御する入出力制御装置に関し、特に上位装置とファイバチャネルにて接続された入出力制御装置に関する。
【０００２】
【従来の技術】
コントローラおよびディスクなどの記憶装置に冗長性を持たせたものとしては、従来、２重の系で構成され、一方の系が現用系として稼動し、他方の系が待機系として稼動し、現用系障害時には、待機機系に処理を引き継ぐことによりデータ保全性の向上を図っていた。この待機系への引き継ぎは、障害発生側のポート情報（WWN、ポートIDなど）も同時に引き継ぐことによりホスト側に意識させることなく切り替えを実現させている。
【０００３】
【発明が解決しようとする課題】
コンピュータシステムの大規模化、データ処理の高速化、データの大容量化に伴い、記憶制御装置に対する高性能、高信頼性、可用性の向上が強く望まれている。
【０００４】
従来技術では、信頼性向上のためホスト側にパス切り替えソフトウェアを有して障害時の系の切り替えを実現していた。また、記憶制御装置側の機能により２重化したコントローラを現用系／待機系に分け制御していた。
【０００５】
本発明は、ホスト側にパス切り替えソフトウェアを使用することなく、２重化している全ての構成要素を有効に使用し、現用系／待機系等区別することなく制御可能とし、一方の系にて障害が発生しても他方の系で継続制御することを目的とする。
【０００６】
【課題を解決するための手段】
上記目的を解決する為、制御装置は、複数の接続されたホストコンピュータの指示に基づいて記憶装置の制御を行う制御装置であって、複数のポート及び共有メモリを有し、ホストコンピュータとのプロトコルを制御する独立した第１及び第２のコントローラを備え、各ホストコンピュータに対してそれぞれ現用系のポートが前記第１及び第２のコントローラに割り振って設定される。第１及び第２のコントローラは、自コントローラの各ポートが現用系であるか待機系であるかに関するインターフェース情報を各共有メモリに二重書きで格納している。第１のコントローラは、自コントローラにおける現用系のポートに障害を検知した場合には、当該現用系のポートを待機系に変更すると共にその障害を第２のコントローラに通知し、当該通知を受けた第２のコントローラは、共有メモリのインターフェース情報を用いて、自コントローラにおける対応する待機系のポートを現用系に変更する。第１のコントローラは、第２のコントローラにおける現用系のポートに障害を検出した場合には、当該現用系のポートを待機系に変更すると共に自コントローラにおける対応する待機系のポートを現用系に変更する。第２のコントローラは、第１のコントローラにおけるポートが障害から復旧したことを検知した場合には、自コントローラにおいて現用系に変更していた対応するポートを待機系に戻す一方、第１のコントローラにおいて待機系に変更していたポートを現用系に戻す。
【０００７】
【発明の実施の形態】
以下、本発明の１実施例を図面を用いて説明する。
【０００８】
本実施例に示した構成は、あくまで１例であり、別の構成による実現も可能である。
【０００９】
図１は、本発明をディスクアレイ装置に適用した場合の１構成図である。
【００１０】
図１において、1001,1002はデータ処理を行う中央処理装置としてのホストコンピュータ、2000はディスクアレイ装置であり、各々のホストよりFibreチャネルバスで接続されている。
【００１１】
ディスクアレイ装置2000は、デュアル構成をとるコントローラ3000,4000、ホストコンピュータからのデータを格納するディスク装置群5000とから構成される。ディスク装置群5000は、アレイ構成をとることが多い。
【００１２】
コントローラ3000,4000は、ホストコンピュータ1001,1002とのプロトコル制御を行うホストI/F制御部3010,3020,4010,4020、データの転送を実行するデータ転送制御部3300、4300、ホストコンピュータ1001,1002とディスク装置群5000のデータ転送時に用いられる不揮発キャッシュ(以下、キャッシュと称す)3400、4400、各ディスク装置群5000とのプロトコル制御を行うDRV I/F制御部3500、4500より構成する。
【００１３】
又、各コントローラから、相手コントローラのホストI/F制御部には、専用線2100,2200,2300,2400が張られており、相手コントローラのホストI/F制御部をFibreループから切り離すことを可能としている。
【００１４】
ホストI/F制御部3010、4010は交替関係にある。本実施例では、3010をホストコンピュータ1001現用系として4010を待機系として設定している場合について説明する。同様にホストI/F制御部3020,4020は交替関係にあり、4020がホストコンピュータ1002の現用系に、3020が待機系に設定されている。本設定は一例であり、他の設定でも、もちろんかまわない。
【００１５】
ホストI/F制御部3010、4010はFibreチャネルループ6000を介して、ホストコンピュータ1001に接続されている。正常時には、ホストI/F制御部3010がループ6000に参加しており、ホストI/F制御部4010は、待機状態にあり、ループ6000には参加していない。ここでは、プライベートループの例について示しているが、本発明は、Fibreチャネルの接続形態を限定するものではない。たとえば、接続形態がPoint-to-Point接続でも構わないし、Fablic装置を介しても構わない。
【００１６】
同様に、ホストI/F制御部3020、4020はFibreチャネルループ7000を介して、ホストコンピュータ1002に接続されている。正常時には、ホストI/F制御部4020がループ7000に参加しており、ホストI/F制御部3020は、待機状態にあり、ループ7000には参加していない。
【００１７】
尚、上記のように本願発明では複数のコントローラ3000,4000からディスク装置群にアクセスが発生するので、各コントローラ間にて排他制御を行ない、同時にディスク装置群の同じ場所にアクセスが生じないようにしている。
【００１８】
次にキャッシュ3400,4400の内容について、図２を用いて説明する。
【００１９】
キャッシュ3400,4400は、データを格納するデータ部3410,4410とコントローラ間の通信に用いるコントローラ間通信エリア3420,4420とホストI/F制御情報(WWN、ポートIDなど)が格納されたI/F情報エリア3430,4430とからなる。
【００２０】
キャッシュ3400,4400はデータ転送制御3300,4300を介して、自コントローラ3000,4000上のキャッシュ3400,4400への読み／書きはもちろんのこと、相手コントローラ4000,3000上のキャッシュ4400,3400への読み／書きも行うことが可能である。
【００２１】
相手コントローラ4000,3000への書き込みを実施した場合には、通信線2500,2600を用いて書き込んだことを相手コントローラ4000,3000に通知する。本通知手段としては、通信線を使用しなくても相手コントローラ4000,3000で定期的にポーリングすることで代替可能である。
【００２２】
また、I/F情報エリア3430,4430には各ホストI/F制御部3010,3020,4010,4020毎にエリアがあり、各コントローラ3000,4000が常にI/Fの最新情報を両キャッシュ3400,4400に2重書きで格納している。
【００２３】
次に、本実施例における、ディスクサブシステムでの、ホストコンピュータ1001、1002からのI/O処理について図１を用いて説明する。まずホストコンピュータ1001からのI/O処理について説明する。
【００２４】
ホストコンピュータ1001からのI/O要求時、ループ6000に参加してしているホストI/F制御部3010が、この要求を受け取りコントローラ3000がI/O処理を実施する。ホストコンピュータ1001からの要求が読み込み要求であった場合には、要求データをディスク装置群5000より、 DRVI/F制御部3500、データ転送制御部3300を介してキャッシュ3400に読み込み後、キャッシュ3400からデータ転送制御部3300、ホストI/F制御部3010を介してホストコンピュータ1001に転送される。
【００２５】
ホストコンピュータ1001からの要求が書き込み要求であった場合には、書き込みデータをホストI/F制御部3010、データ転送制御部3300を介してキャッシュ3400に書き込む。この際、データ転送制御部3300は、キャッシュ4400にも2重書きを行う。その後、データ転送制御部3300、DRVI/F制御部3500を介してディスク装置群5000にデータを書きこむ。
【００２６】
次に、ホストコンピュータ1002からのI/O処理について説明する。
【００２７】
ホストコンピュータ1002からのI/O要求時、ループ7000に参加してしているホストI/F制御部4020が、この要求を受け取りコントローラ4000がI/O処理を実施する。
【００２８】
読み込み処理、書きこみ処理は、前述のコントローラ3000の処理と同様である。
【００２９】
このように現用系のホストI/F制御部を両方のコントローラ3000,4000に割り振って設定すれば、正常時には、両方のコントローラを稼動させることが可能であり、一方のコントローラを現用系、もう一方を待機系として用いる従来技術に比べると、２コントローラ分の性能を引き出すことが可能であり、正常時、従来技術のほぼ２倍の性能向上を図ることができる。
【００３０】
次に、コントローラ3000またはホストI/F制御部3010に障害が発生した場合の処理方式について図３、図４を用いて説明する。
【００３１】
まず、上記障害をコントローラ3000が検知した場合について図３を用いて説明する。
【００３２】
コントローラ3000がコントローラ3000またはホストI/F制御部3010の障害を検知するとコントローラ3000は、まずホストI/F制御部3010をループから切り離し、次にコントローラ間通信エリア4420に障害情報をデータ転送制御部3300を介して書きこみ、コントローラ4000にホストI/F制御部3010の障害を通知する。この通知を受け取ったコントローラ4000は、 I/F情報エリア4430からホストI/F制御部3010のI/F情報を取得し、この情報を用いて、ホストI/F制御部4010を待機状態から稼動状態に変更し、ループ6000に参加させる。
【００３３】
次に、コントローラ4000がコントローラ3000またはホストI/F制御部3010の障害を検知した場合について図４を用いて説明する。
【００３４】
コントローラ4000がコントローラ3000またはホストI/F制御部3010の障害を検知するとコントローラ4000は専用線2100を用いて、ホストI/F制御部3010をループ6000から切り離す。次にI/F情報エリア4430からホストI/F制御部3010のI/F情報を取得し、この情報を用いて、ホストI/F制御部4010を待機状態から稼動状態に変更し、ループ6000に参加させる。
【００３５】
このようにどちらが障害を検知しても待機系のホストI/F制御部4010への切り替えが可能である。又、ホストI/F制御部3010の情報(WWN,ポートIDなど)を用いる為、ホストコンピュータ1001は、ホストI/F制御部が4010に変更となったことを全く意識することなくI/O処理の継続が可能である。このことにより、ホストコントローラ側にパス切り替え用のミドルウエアを組み込むことなしにパス切り替えが可能である。このパス切り替え用ミドルは一般に高価であり、本発明は、システムとしての低コスト化にもつながる。
【００３６】
次に、コントローラ3000またはホストI/F制御部3010が障害から復旧した場合の処理方式について図５を用いて説明する。
【００３７】
コントローラ3000は復旧が完了すると、コントローラ間通信エリア4420に復旧情報をデータ転送制御部3300を介して書きこみ、コントローラ4000にホストI/F制御部3010の復旧を通知する。コントローラ4000は、復旧を検知すると、ホストI/F制御部4010をループ6000から切り離し、切り離しが終了したことをコントローラ間通信エリア3420を通じてコントローラ3000に通知する。本通知を受けたコントローラ3000は、 I/F情報エリア3430からホストI/F制御部4010のI/F情報を取得し、この情報を用いて、ホストI/F制御部3010を待機状態から稼動状態に変更し、ループ6000に参加させ、復旧を完了する。
【００３８】
このように復旧時にも、ホストI/F制御部4010のI/F情報を使用する為、ホストコンピュータは意識することなく、復旧を完了させ、２コントローラを稼動状態に復旧させることができる。
【００３９】
本実施例では、ホストI/F制御部3010のループへの復旧を障害復旧時に直ちに行う方式について示したが、復旧の契機は、ユーザが指定した契機でも構わないし、次回装置立ち上げ時でも構わない。又、これらの契機をユーザが選択できるようにしても構わない。
【００４０】
【発明の効果】
本発明によれば、ホストコンピュータと制御装置間のバスプロトコルを制御する独立した複数のポートを有するコントローラを複数備え、正常時には、両方のコントローラを稼動させることが可能であり、一方のコントローラを現用系、もう一方を待機系として用いる従来技術に比べると、２コントローラ分の性能を引き出すことが可能であり、正常時、従来技術のほぼ２倍の性能向上を図ることができる。
【００４１】
また、コントローラ障害時には正常コントローラに切り替え、処理を継続することにより信頼性を向上させる。また、ホストコントローラ側にパス切り替え用のミドルウエアを組み込むことなしにパス切り替えが可能である。このパス切り替え用ミドルは一般に高価であり、本発明は、システムとしての低コスト化にもつながる。
【図面の簡単な説明】
【図１】本発明の１実施例を示す全体構成図である。
【図２】キャッシュの内容の概念図である。
【図３】コントローラ(又はホストI/F制御部3010)障害時の処理方式フロー図である。
【図４】コントローラ(又はホストI/F制御部3010)障害時の処理方式フロー図である。
【図５】コントローラ(又はホストI/F制御部3010)復旧時の処理方式フロー図である。
【符号の説明】
1001,1002…ホストコンピュータ、2000…ディスクアレイ装置、2100,2200,2300,2400…専用線、2500,2600…通信線、3000,4000…コントローラ、3010,3020,4010,4020…ホストI/F制御部、3300,4300…データ転送制御部、3400,4400…キャッシュ、3410,4410…データ部、3420,4420…コントローラ間通信エリア、3430,4430…I/F情報エリア、3500,4500…DRV I/F制御部、5000…ディスク装置群、6000,7000…Fibreチャネルループ。
【図１】
0004462697.tif 000002
【図２】
0004462697.tif 000003
【図３】
0004462697.tif 000004
【図４】
0004462697.tif 000005
【図５】
0004462697.tif 000006