図1は、プライマリ又はローカルサイト12と複数のセカンダリ又はリモートサイト14がデータ通信ネットワーク107で通信的に結合された、データ処理システム10を構成するストレージシステムを示す。
ローカルサイト12はホストプロセッサ101とローカルストレージシステム104を備えている。
ホストプロセッサ101とストレージシステム104は、ローカルサイト12で保持されるデータイメージの更新データをリモートサイト14に通信する為に、リモートサイト14にデータ通信ネットワーク107を通して結合されている。
かくして、リモートサイト14はローカルサイト12のミラーデータイメージを保持する。
リモートサイト14は、各々リモートストレージシステム(セカンダリストレージ1,セカンダリストレージ2)105、106を備えている。各サイト14は対応するホストプロセッサ(リモートホスト)102、103を含んでも含まなくても良い。
リモートストレージシステム105、106は、ローカルストレージシステム104のミラーデータイメージを保持する為に、ローカルストレージシステム104のストレージボリューム142と極めて類似したストレージボリュームを備えている事が好ましい。
リモートサイト14は、ローカルストレージシステム104が計画的又は非計画的に停まった場合には、当該データにアクセスされるものの、ローカルサイト12のデータが破壊されるような災害に見舞われた場合でも、サイトとデータを維持するためには、リモートサイト14はローカルストレージシステム104から地理的に離れた場所に設置した方がより好ましいと言える。
リモートストレージシステム105,106はローカルストレージシステム104と実質的に同じである為に、ローカルストレージシステム104に関する議論はそのまま等しくリモートストレージシステム105,106に当てはまる。
ローカルサイト12では、ホストプロセッサ101は、ネットワークインターフェース(I/F)111を経由してデータ通信ネットワーク107に結合し、入出力(I/O)バス108と入出力インターフェース110を経由してローカルストレージシステム104に結合している。
ローカルストレージシステム104はディスクコントローラ141を備え、ディスクコントローラ141は、入出力(I/O)バス108に結合する為の入出力インターフェース130とデータ通信ネットワーク107に結合する為のネットワークインターフェース131とを有する。
ローカルストレージシステム104は更に、ディスクユニット140で構成されるストレージボリューム142を備え、ディスクコントローラ141が入出力インターフェース137,138を経由してデータパス139によってストレージボリューム142に結合する。
ディスクコントローラ141自身は、中央処理ユニット(CPU)133を有し、CPU133は内部バス132経由でメモリ134に結合し、更に本デイスクコントローラ141の各種インターフェース(即ち、入出力インターフェース130,138及びネットワークインターフェース131等)に結合している。
メモリ134は、ホストプロセッサ101からのI/O要求に対応して、ストレージボリューム142へのリード、ライトデータを格納する為のキャッシュメモリ135を有する。メモリは更に、コントロール情報136の如きある種のデータ構造や情報を維持する。
CPU133は、ストレージボリューム142に対する(例えばホストプロセッサ101により齎される)あらゆるデータイメージの変更をリモートストレージシステム105
,106に送信する、リモートコピー処理を通常通りに実行する事が好ましい。
かくして、リモートストレージシステム105,106は、ローカルストレージシステム104で維持されるデータをミラーする。
要約すると、リモートコピー処理は以下の如く動作する。
ディスクコントローラ141は、ストレージボリューム142のデータ(データイメージ)に対するI/Oライト要求、即ち、追加、変更、削除、あるいはその他の更新を受け取ると、そのデータをストレージボリューム142に書き込む。ストレージボリューム142へのこの様な各書き込み又は少なくともデータイメージの一部分はリモートサイト14にミラーされる為に、データメッセージが生成され、リモートコピーキュー(ここでは示されていない)に格納される。
リモートコピーキューは、CPU133上で稼動しているリモートコピープロセスにより周期的に監視されている。一つ以上のデータメッセージを有するキューが検出されると
、データメッセージは取り出されて、リモートストレージシステム105,106の各々に送信され、データメッセージ中のデータが書き込まれ、結果として、ローカルサイト12のデータに対するデータイメージが更新されることになる。
データメッセージに関する情報は、ストレージシステム104、105、106でヒストリカル情報として保持され、ローカルストレージシステム104から送信済み、送信途上、又はリモートストレージシステム105,106での受信完了を示している。各ストレージシステムは、ヒストリカル情報をキュー構造で管理する事が好ましい。
図2はキュー構造を示している。図2で示す如く、デイスクコントローラ141は、ワーキングキュー110、ロールバックキュー111、中間キュー112、およびライトヒストリキュー113を有する。
ワーキングキュー、ロールバックキュー、中間キュー、及びライトヒストリキュー110〜113は、リモートストレージシステム105(各々キュー120、121、122及び123)、106(各々キュー130、131、132及び133)でミラーされて
いる。これらのキューは、先入れ先出し(FIFO)構成で実装される。
I/Oリードライト要求は典型的に、コマンドエントリとこれに伴う又は継続するデータ(ライト要求の場合)により構成される。
コマンドエントリは、データが書き込まれるストレージボリューム142上(ライト要求の場合)、又はデータが読み出される(リード要求の場合)ボリューム上のロケーショ
ンを特定し、その他実装によって必要とされる情報を特定する。
ホストプロセッサ101より、リモートストレージシステム105,106でミラーされているデータイメージの変更を伴うI/O要求を受けとった場合には、コマンドエントリには、シーケンス番号が割り当てされる。コマンドエントリはコマンドエントリと割り当てられたシーケンス番号で形成される事になる。
コマンドエントリは次いで、ワーキングキュー110に格納される。キューは、リモートストレージシステム105,106にデータを送信するに先立つ、データとデータメッセージに対するヒストリカル情報を構成する。
コマンドエントリがワーキングキュー110に滞在している間に、対応するライト要求が処理される。処理には、ライト要求に対応するデータ(要求と共に受信するか、要求に継続して受信するかは、ホストプロセッサ101とローカルストレージシステム104に用いられる通信プロトコルによる)を受信し、データの為にキャッシュメモリ135のエリアを割り当て、当該エリアに受信データを書き込む事が含まれる。
キャッシュメモリ135内のデータへのポインターは、対応するコマンドエントリに関連付けられる。I/O要求データが正常に受信されたか、エラーが検出されたかのステータスを示すステータスメッセージが、I/O要求の発行元に返される。
図2は、ディスクコントローラ141がシーケンス番号“15”を割り当てられたライト要求を受領中の状態を示す。コマンドエントリは割り当てられたシーケンス番号とライト要求のコマンドエントリで形成される。
コマンドエントリは次いで、上述されたように更なる処理の為にワーキングキュー110に格納される。コマンドエントリは、I/O要求が正常に処理された場合には、ワーキングキュー110からロールバックキュー111に移される。
ロールバックキュー111は、後に十分に説明されるように、ローカルストレージシステム104とリモートストレージシステム105,106でのロールバック同期化の為に用いられる一時的な保存エリアである。
リモートストレージシステム105,106も基本的には同じ目的の為に、ロールバックキュー111を含む同一のキュー構造を有する。
ロールバックキュー111に保持されるコマンドエントリに対応するデータは、一つのストレージシステムで障害が検出された場合に廃棄処理をする場合、又は生存ストレージシステムの間での巡回処理をする場合を含めて、本発明での同期化処理に於いて使用される。
コマンドエントリは、ロールバックキュー111から関連データがストレージボリューム142への書き込み待ちか書き込み中であるエントリを保存する中間キュー112に移動される。
ローカルストレージボリューム142への書き込みが完了すると、コマンドエントリは、プライマリストレージシステム104をミラーするリモートストレージシステムの保存するデータイメージの更新のためにリモートストレージシステム105,106に送信される、データメッセージ形成のためのリモートコピー要求を形成するために使用される。
次いで、コマンドエントリからポインターが抽出され、エントリはライトヒストリキュー113に格納される。
上述したように、図2は、ホストプロセッサ101より受信しシーケンス番号15が割り当てられ、従ってワーキングキュー110に格納される、I/O要求からのコマンドエントリを示す。
シーケンス番号13と14のコマンドエントリはこの時点でロールバックキュー111に保持され、関連データのストレージボリューム142への書き込み待ちの状態になっている。
中間キュー112は、シーケンス番号10,11、及び12を持つコマンドエントリを保持している。シーケンス番号10のコマンドエントリは書き込み中か、次の書き込み待ちの何れかである。シーケンス番号7,8及び9のコマンドエントリの関連データはストレージボリューム142に書き込み済みで、従ってライトヒストリキュー113に格納されている。
リモートストレージシステム105,106は実質的に同様なキュー構造を保持し、同様の方法で動作する。かくして、例えば、リモートストレージ105はシーケンス番号10を割り当てられたコマンドエントリを持つデータメッセージを受信中であり、全データが受信中の間は、ワーキングキューに格納されている。
シーケンス番号10はローカルストレージシステム104によって割り当てられたものである。ひとたび、データメッセージが受信されると、コマンドエントリは、ワーキングキューから、シーケンス番号6〜9のコマンドエントリを現在保持していることを図2が示しているロールバックキュー121に移動される。
中間キュー122はシーケンス番号5が割り当てられたデータメッセージのコマンドエントリを有し、エントリはリモートストレージシステム105のストレージボリューム140に書き込み中である。
書き込みが完了すると、エントリはシーケンス番号1〜4のデータメッセージのコマンドエントリと共に、ライトヒストリキュー123に移動される。ライトヒストリキュー123の深さによっては、最も早いエントリ、例えばシーケンス番号1のエントリは、シーケンス番号5のコマンドエントリを格納させるために、排出されても良い。
他のリモートストレージシステム106も同様なデータキュー(130、131、132及び133)を有する。図2では、リモートストレージ106は現在シーケンス番号12に関するデータメッセージを受信中であり、コマンドエントリはワーキングキュー130に格納されている。
ロールバックキュー131は現在シーケンス番号8〜11の制御情報を保有している。ストレージシステムがヒストリカル情報を追跡するためのキューは、メモリ134のみならず、ストレージボリューム142にも保持される事が好ましい。
ローカルストレージシステム104は更に、メモリ134中にリモートコピーステータステーブル114を保持し、送信済みのシーケンス番号、リモートストレージシステム105、106にて受信され応答が得られたシーケンス番号を特定できるようになっている。
例えば、リモートストレージシステム105(テーブル114では“S1”で表示)で受信済みの最新のデータメッセージはシーケンス番号9で、リモートストレージシステム106(“S2”)で受信済みの最新のデータメッセージはシーケンス番号11である事が判る。リモートコピーステータステーブル114は更に、リモートストレージシステムのロールバックキュー121,131とライトヒストリキュー123,133に関する情報も保持している。
かくして、リモートコピーステータステーブル114では、リモートストレージシステム105,106のロールバックキュー121,131は各々4データメッセージエントリ分の“長さ”を有し、10MBのデータを保持できる事がわかる。
リモートストレージシステム105,106各々のライトヒストリキュー123,133は5個のデータメッセージに5個のエントリを有する。ライトヒストリキュー123,133のサイズはバイト単位の容量又は他の形でリモートコピーステータステーブル114に表示されても良い。
図3及び図4は、本発明が解決しようとしている問題点を説明するダイアグラムである
。
図3はプライマリストレージボリューム20に対応して、少なくとも2つのセカンダリストレージボリューム21,22を備える、多重リモートコピー動作の為の構成を説明する。
23,24の矢印は、プライマリストレージボリューム20とセカンダリストレージボリューム21,22との間のリモートコピーリンクを示す。
矢印25が示す図の次の部分では、リモートコピーリンクの一つ23が停止(suspend
)している。リンクはネットワーク障害又はストレージボリューム障害で停止され得る。ここで用いられる“停止(suspend)”の用語は、原因の如何によらず、二つのユニット
の間でのデータ転送が途絶していることを示す。
停止が発生すると、停止中のペアの各ストレージボリューム(プライマリストレージボリューム20とセカンダリストレージボリューム21)は自らのビットマップ情報を生成する。
これらのビットマップ情報は、図3ではBp,Bsで表示されている。このビットマップ情報は、停止時のストレージボリュームの状態を反映している。ビットマップ情報生成のための方法については、後に記すが、関連米国特許No. 10/042,376に記されている。
図の次の部分は、停止に加えて発生する三つの可能なシナリオを図で表示したものである。
第一のシナリオは矢印27により図の左側に示され、第二のシナリオは矢印28で示され、第三のシナリオは矢印29で示されている。矢印27で示され、A−3のラベルで示される第一のシナリオでは、セカンダリストレージボリューム21が障害になった場合である。この場合は、矢印30で示されるように、プライマリストレージボリューム20とセカンダリストレージボリューム22のペアが残っている。
図3の矢印28で示される第二のシナリオでは、セカンダリストレージ22が障害になった場合である。この状況に対する対応は、矢印31とA−6のラベルで示される。この状況では、プライマリストレージ20と稼動可能なセカンダリストレージ21間のリンクが回復されるのを待つ。
リンクが回復すると、プライマリストレージボリューム20とセカンダリストレージボリューム21は2つのビットマップBpとBsの情報を用いて再同期化を行う事が出来る。
図3の右側部分に、矢印29で第三の状態が示される。この状態では、プライマリストレージボリューム20が障害になり、ビットマップBpはもはや使用不能である。この状態では、図3の右側下のA−8でラベルされる部分で示されるように、データの全コピー動作がセカンダリストレージボリューム(S1)20とセカンダリストレージボリューム(S2)21を再同期化するための唯一の手段である。
図4は、直列接続多重コピーを実現するプライマリとセカンダリストレージの異なった構成を示す図である。
図の最上段に示すとおり、プライマリストレージボリューム(P)40は、セカンダリストレージボリューム(S1)42,(S2)44,(S3)46との間でリモートコピー機能を実現する為に、直列的に構成されている。
矢印41は、セカンダリストレージボリューム42とセカンダリストレージボリューム44と間のリモートコピーリンクが停止している状況を示している。この状態では、更に図示されているように、ビットマップBpとBsがセカンダリストレージボリューム42と44によって生成されている。この状況において、追加して発生する4種類の障害が存在する。これらは、図の下側の部分に矢印1,2,3及び4で示されている。
矢印1では、プライマリストレージボリューム40が障害になっている場合を示している。この状況では、ケースB−4に示すように、構成は変更され、リモートコピーペアS1とS2及びS2とS3は同じままである。
ケース2では、停止ペアのメンバではないセカンダリストレージボリュームが障害になっている。この状況では、ケースB−6に示されるように、リモートコピーペアは不変のままで、構成のみが変更されている。
図示されているように、プライマリストレージボリューム40はセカンダリストレージボリューム42及び44との関連して動作を継続する。
矢印3は停止ペアのメンバであるセカンダリストレージボリュームが障害になった場合を反映している。このケースでは、ビットマップBpからの変更情報は失われる。
この結果、B−8に示されているように、プライマリストレージボリューム40とセカンダリストレージボリューム44は再同期化不能である。プライマリストレージボリューム40とセカンダリストレージボリュームのペアは、新しいデータのコピーを全て転送することによってのみ再同期が可能になる。
矢印4は最後のケースで、セカンダリストレージボリュームが障害になっている。前述した状況では、セカンダリストレージボリュームの障害でビットマップBsが損失して、変更情報が失われる結果となる。この状況では、ケースB−10に示されるように、例えばセカンダリストレージボリューム46をターゲットに全データの再コピーを実施することが唯一の解である。
図3、図4に示したビットマップ喪失の状況は、本発明の技術により克服する事が出来る。このことについては次で説明する。
図3,図4の幾つかの状況で説明したように、図3のA−3とA−7及び図4のB−7とB−9の場合には、ミラーペアのビットマップの一つが失われている事に注意が必要である。
本発明の実施例によれば、ペアの停止を検出した場合、停止されたリモートコピーペアのメンバ外のストレージボリューム上でビットマップのコピーを生成する事により、この問題は克服される。離れたロケーションにビットマップをコピーすることにより、ビットマップの一つ(Bp又はBs)が失われた場合でも、容易に再同期を実施することが出来る。図5に本発明の好ましい実施例を説明する。
図5の上部で示す通り、プライマリストレージボリューム50はセカンダリストレージボリューム52,54とペア状態になっている。矢印56で示す図の次の部分では、プライマリストレージボリューム50とセカンダリストレージボリューム52の間での停止の発生を示している。
ケースA―2’で示す通り、この停止の発生を契機に、プライマリストレージボリューム50は異なるセカンダリストレージボリューム54上にビットマップのコピーを生成する。セカンダリストレージボリューム54は、プライマリストレージボリューム50をミラーするボリュームとは異なるボリュームである。ビットマップBp’は、ビットマップBpと必ずしも同一でなくても良い。セカンダリストレージボリューム54でのビットマップコピーに対する最小限の要求は、その開始時間がオリジナルコピーBpの開始時間に比べて同じかより古い事である。
ビットマップの開始時刻がより古い場合は、ビットマップコピーが示す全ての変更は、単に同じデータを同じアドレスに上書きする事になるだけである。本発明の親出願では、ストレージが停止発生時と同時刻からのビットマップコピーを生成する技術を開示しているが、本発明では、ストレージが同時刻のビットマップコピーを生成するのが不可能な場合でも、代わりにより古いビットマップコピーを用いる事により十分に満足できる解を得られることを述べている。
図5のケースA−7で示す通り、プライマリビットマップBpが損失しても、セカンダリストレージボリューム52と54はプライマリビットマップBpのコピーBp’を用いて再同期することが可能である。
本再同期化については、図5の下側部分A−8に示されている。
図6は本発明のもう一つの好ましい実施例を示す。図6は図4と同様に、図の上部での障害と同じ状態を示す。
B−2でリモートコピー動作が停止する。本状態の検出を契機に、ストレージシステムはビットマップBpのコピーをB−2’に示されるように他のボリュームに作る。
図示されているケースでは、プライマリストレージボリューム60はプライマリビットマップBpのコピーBp’を受け取り、セカンダリストレージボリューム66はビットマップBsのコピーBs’を受け取る。
かくして、B−7で示されるセカンダリストレージボリューム62の障害では、ビットマップBpが失われても、ビットマップを用いて、再同期化が不能になることを避ける事が出来る。B−8に示す通り、セカンダリストレージボリューム64はプライマリストレージボリューム60に再同期化する事が可能である。
もし停止がセカンダリストレージボリューム62の代わりにセカンダリストレージボリューム64の障害で発生しても、セカンダリストレージボリューム66はセカンダリストレージボリューム62に再同期化可能である。
図7は本発明の好ましい一つの実現方法を説明するためのフローチャートである。同期型リモートコピーでは、各ホストI/O動作がリモートI/O動作を引き起こす。
かくして、図7に記す処理は、ホストI/O毎に実行される。ローカルストレージは、図7の処理が完了するまでは、ホストに対するステータス報告を行わない。この準備動作を図7aに示す。
図7に、ローカルストレージシステム104(図1)がホストプロセッサ101(図1)から受け取った更新データをリモートストレージシステム105,106にコピーする為のリモートコピー動作の基本的ステップを説明する。
ホストプロセッサ101からのローカルストレージシステム104で保存されているデータイメージを変更するI/Oライト要求は、リモートストレージシステム105,106で保存されているミラーデータイメージに対しても同様の変更を必要とする。
I/Oライト要求は、割り当てられたシーケンス番号と要求に対するデータのポインターを備えたコマンドエントリを生成する。コマンドエントリは、全データが受信され、受領応答がホストプロセッサ101に返送されるまでの間は、ワーキングキュー110に格納されている。
次いで、コマンドエントリはロールバックキュー111に移動される。ロールバックキュー111が満杯になるか、フラッシュコマンドが受信されると、コマンドエントリは中間キュー112に移動される。中間キューに滞在する間に、要求された対応データはストレージボリューム142に書き込まれる。
CPU133上で実行しているリモートコピー処理は周期的に中間キューの内容を調査して、各リモートストレージシステム105,106にコピーすべき更新データコマンドのエントリが存在しないかを判定する。
次いで図7を参照すると、ローカルストレージシステム104は、各リモートストレージ105,106が次のデータメッセージを受信できるかをチェックする。チェックはRCステータステーブル114を参照して行う。RCステータステーブル114により、各リモートストレージシステム105,106がどのデータメッセージを受信して応答済みか、又リモートストレージシステム105,106が保持する各種キューのサイズ情報等がローカルストレージシステム104に伝わる。
これにより、ローカルストレージシステム104は、特定のリモートストレージシステムが別のデータメッセージや関連データを受信できる余裕があるか否かを判定する。もしなければ、ステップ501から抜け、プロセス6001にて停止が発生しているかの判定が開始される。(あとで議論される。)
更に、リモートストレージシステム自身が、例えばSCSIの“ビジー(0x08)”又は“キュー満杯(0x28)”の何れかを用いて、更なるデータメッセージ受信の不可を返答する事も可能である。同期型リモートコピー動作の場合は、リモート(セカンダリ)ストレージシステムのキュー状態のチェックは不要である。
もし対象のリモートストレージシステムにデータメッセージを受信するのに十分な余裕がある場合には、ローカルストレージシステム104はリモートコピー(RC)コマンドを、ステップ503にてデータが後続するデータメッセージの形で、リモートストレージシステム(たとえばリモートストレージシステム105)に発行する。
次いで、ローカルストレージシステム104は、データメッセージが受信されたか否かを示すステータス報告の受信を待つ(ステップ504)。
受信後には、ローカルストレージシステム104は、ステップ505にて、全てのリモートストレージシステムがデータメッセージでの更新を完了したかをチェックする。もし完了していなければ、処理はステップ507に移動し、RCステータステーブル114を更新して、対象リモートストレージシステムはデータメッセージを受信した事を反映させて、次のリモートストレージシステムがデータメッセージを受信するためにステップ501に戻る。
しかし、もしステップ505で全てのリモートストレージシステムがデータメッセージを受信した事が判明したら、データメッセージ(コマンドエントリ)は、ステップ506にてライトヒストリキューに移動され、RCステータステーブル114はステップ507で更新され、このデータメッセージに対する処理は508で完了する。
ステップ501の判定にて、リモートストレージがデータメッセージを受信できない場合には、処理フローはステップ6001に移動し、停止状態が発生しているかを判定する
。この動作での最初の判定は、リモートコピーペアのステータスについてである。リモートコピーペアの継続を妨げる何らかの異常事態が存在すれば、リモートコピーペアは停止しなければならないと判定される。
本判定の結果として、停止が発生し、主要な処理はステップ6002に示すビットマップのコピーを生成する事である。ビットマップを生成する方法は、以下に議論される。
しかしながら、以下でも議論されるように、ひとたびビットマップが生成されると、制御フローはステップ508に移動し、多重リモートコピー処理を完了し、再同期処理へ移行する。本発明の親出願の技術を用いることにより、プライマリストレージは停止ポイントを検出し、本ポイントをシーケンス番号で示し、ビットマップのコピーを有する他のストレージに提供することができる。
図8は、リモートストレージシステムがリモートコピー処理のデータメッセージを受信するためのステップを広範囲に説明するフローダイアグラムである。最初のステップ7001は停止が発生しているかを判定する。この判定は、図7に関連して説明したものと同じ技術を用いて実行される。
もし停止が発生していたら、図9に関連して以下に説明する技術を用いて、ビットマップのコピーがステップ7002で生成される。
もし停止が発生していなければ、本処理フローはステップ601に移動する。ステップ601にて、リモートストレージシステムはデータメッセージを受信して、ステップ602にて、このデータメッセージのためのキュー資源の使用状態をチェックする。
言い換えると、利用できる余裕があるかを判定する。ステップ602での判定は、他のリモートストレージシステムのキュー内容に比較して、各キュー(ロールバック、中間、及びライトヒストリキュー)の整合状態も考慮して判定される。
もしステップ602での判定の結果、リモートストレージシステムがデータをこの時点では受領できない場合は、ステップ602を抜け、処理はステップ606に移動して、リモートストレージシステムは“ビジー”ステータスメッセージをローカルストレージシステムに返送し、受信処理より抜ける。
次いで、ローカルストレージシステム104は、後で当該トランザクションを再度試行しなければならないと判定する。反対に、ステップ602にて、データが受信可能と判定された場合には、データはステップ603にて受信される。
ステップ604にてリモートストレージシステムはデータ転送完了のステータスを返送して、ステップ605にて、データメッセージはメッセージ受信のために用いられたワーキングキューよりロールバックキューに移動される。ステップ607にてこの処理は完了する。
図9は、例えば図7のステップ6002又は図8のステップ7002で実行される、ビットマップのコピーを生成する手順の好ましい実施例を説明するフローチャートである。
図10は、図9のフローチャートの説明で用いられる構成例を説明するダイアグラムである。
図10のストレージ72は、ボリューム72と74で構成される停止中のリモートコピーペアのプライマリストレージである。
停止ポイントからのビットマップを生成するのに用いることができる3つの異なった技術が存在する。停止ポイントからのビットマップを生成する一つの技術は、本発明の親出願で述べられている技術を用いることである。この技術は図9に要約されている。
ストレージは、変更情報のすべてを反映する、ロールバックキューとライトヒストリキューを持っているため、多重リモートコピー環境での各種ストレージボリュームは同一時刻又は同一シーケンス番号からのビットマップを生成する事が出来る。
図9のステップ8001で示すとおり、ストレージは自分自身が停止中のリモートコピーペアのプライマリストレージボリュームかセカンダリストレージボリュームかをチェックする。
図10で示されるケースでは、ストレージボリューム72が本ペアのプライマリストレージボリュームで、ストレージボリューム74がセカンダリストレージボリュームである
。言い換えれば、“プライマリ”及び“セカンダリ”の用語は、相対的な用語である。プライマリストレージボリューム72が実行する処理は、ステップ8002にて示す。
ステップ8003にて、ストレージボリューム72は、時刻又はリモートコピーコマンドからのシーケンス番号で表示される停止ポイントを検出する。これを契機に、ストレージボリューム72は、“ビットマップコピー生成コマンド”をプライマリストレージボリューム70
に対して発行する。
次のステップ8004で示す通り、停止中のリモートコピーペアのプライマリストレージボリューム72が例えば図10のストレージボリューム78のような、もう一つのセカンダリストレージを持っている場合も、同様の生成ステップが実行される。
かくして、ステップ8005で示す通り、ビットマップはセカンダリストレージボリューム78にも生成される。
ストレージボリューム74で実行される処理は、既に述べられたものと同様である。停止中のリモートコピーペアのセカンダリストレージが、ストレージボリューム76、80のように、一つ以上のセカンダリストレージ自身を有する場合には、ストレージ74上のセカンドビットマップのコピーは、ストレージボリューム76、80の何れかに作成される。この処理はステップ8007に示される。
図11は本発明の他の実施例を示す。図11に於いて、行は各種ストレージを示し、図の番号のついたブロックは各種データ転送動作を示す。
例えば、図11の最上段は14個のデータがホストシステムからリモートシステムに転送された事を示す。このデータが受け取られると、セカンダリストレージボリュームS1,S2,及びS3に転送される。
データブロック1の開始時刻の相違は、データを一つのロケーションから他のロケーションに転送するのに必然的に発生する処理及び転送遅延を反映している。
図11では、動作1000で、データブロック4をセカンダリストレージボリュームS1からS2に送信する間に、停止が発生した事を想定している。これを時刻t0とする。実際、第四番目のリモートコピー要求は失敗している。
結果として、少なくともビットマップBpとBp’は変更情報を含まなければならない
。
時刻t1でセカンダリストレージボリュームS1は動作1001に示すように、ビットマップのコピーを持っているプライマリストレージボリュームPに“停止検出”メッセージを発行する。
時刻t2にて、プライマリストレージボリュームPは“停止検出”メッセージを受信し、リモートコピー動作をストップする。
次いで、プライマリストレージボリュームPは、応答1002を要求の送信者に送信する。プライマリストレージボリュームPが停止発生以後の変更を記録できれば、リモートコピー動作の凍結中にも、プライマリストレージボリュームPはホスト結合を維持する。
もしプライマリストレージボリュームPがこの情報の維持が不可能なら、ビットマップのコピーが生成される迄、プライマリストレージボリュームPはホストからディスコネクトしなければならない。説明の実施例では、この変更情報はキャッシュメモリ又はディスクに格納される。
時刻t3で、セカンダリストレージボリュームS1はプライマリストレージボリュームPからの応答を受信する。セカンダリストレージボリュームS1は変更情報と共に“ビットマップ生成”メッセージを送信する(動作1003で示す)。変更情報は、停止ポイントt0から“応答”受信ポイント(時刻t3)までカバーする。
時刻t4で、“ビットマップ生成”メッセージが変更情報と共に受信される。これを契機に、プライマリストレージボリュームPは、ビットマップBpに対応するビットマップのコピーBp’の生成を開始する。
この処理が終了次第、プライマリストレージボリュームPとセカンダリストレージボリュームS1との間のリモートコピー動作を再開する。これは動作1004として示される
。
時刻t5にて、セカンダリストレージボリュームS1は同様にリモートコピー動作を開始する。
ビットマップBsのコピー生成については、動作1005に関連して、後に示す。停止が1005で(又はより早く)発生したとすると、セカンダリストレージボリュームS1とS2のみが、停止を認識している。リモートコピー要求No.4は失敗し、セカンダリストレージボリュームS2には届かない。
かくして、少なくともビットマップBsとBs’はリモートコピー要求No.3の処理後の変更情報を含まなければならない。従って、セカンダリストレージボリュームS2は停止中のペアのビットマップBsの生成を開始する。
時刻t2にて、セカンダリストレージボリュームS3は“停止検出”メッセージを受信して、これを契機に、ビットマップのコピーBs’の生成を行う。セカンダリストレージボリュームS3は、その後、要求の送信者(セカンダリストレージボリュームS2)に対して、“応答”を送信する。これは、図11の動作1006に示されている。
セカンダリストレージボリュームS2が“応答”を受信すると、セカンダリストレージボリュームS2とS3との間のリモートコピーリンクを再開する。
この結果、セカンダリストレージボリュームS2は、例えば図11に示すような要求20〜25の実行等の他の用途に用いられる事が可能となる。
図11に関連して述べられた動作を要約すると、その動作の共通の手順は;
(1)第一のストレージボリュームで停止を検出して、ビットマップを生成する。
(2)本ビットマップのコピーを有するべき第ニのストレージボリュームを選択する。
(3)第一と第二のストレージボリュームとの間のリモートコピー動作を凍結する。
もしこれら2つのストレージボリュームの間のリモートコピー動作が第二のストレージボリュームから第一の方向であれば、第二のストレージボリュームが、第一と第二の間のリモートコピー動作を凍結するために、第一ストレージボリュームに“凍結”メッセージを送信しなければならない。
(4)第一のストレージボリュームでの変更情報(停止ポイントからの変更を含む)を第二のストレージボリュームに送信する。
(5)第二のストレージボリュームでビットマップのコピーを生成する。
(6)第一と第二のストレージボリューム間のリモートコピー動作を再開する。
図12では、ローカルストレージシステム(又はデージーチェーン構成での中間的サイトになっている場合のリモートストレージシステム)の障害が検出された場合の同期化処理で行われるステップを示す。ステップ701で障害が検出される。障害検出は多数の方法でなされる。
例えば、ストレージシステム同士はハートビートメッセージを交換しあって、もし未検出なら障害を示す。又は、ストレージシステムは自ら障害を検し、しかもその障害をシステムの他の要素に対して報告出来ることもある。又は他の全ての慣用的障害検出技術が適用されても良い。
障害が検出されると、残りのストレージシステム、即ち図2の構成に示すストレージシステム105,106などは、互いに交信しあって、新しいリモートコピーマネージャを互選する。
選出されたストレージシステムは、残り全てのストレージシステムのデータイメージが同一状態に同期化されるように、リモートコピー動作を制御する。あるいは、リモートコピーマネージャは、システム管理者により事前に指定されても良い。
しかしながら、リモートコピーマネージャが決まると、選択されたマネージャはローカルストレージシステムとなり、スッテプ703にて、残りのストレージシステムに維持される各種キューの内容と構造に関する情報収集を行う。この情報には、ロールバックキューとライトヒストリキューのエントリ範囲(エントリ数)即ち、データメッセージを含むエントリ数等、が含まれる。
例えば、図2において、ローカルストレージシステム104が障害になり、ステップ702にて、リモートストレージシステム105が選択又は他の判定によりリモートコピーマネージャになると、リモートストレージシステム106は、ロールバックキュー131内にデータメッセージ8、9、10、及び11がありライトヒストリキュー133内にデータメッセージ3、4、5、及び6があることを報告する。
障害検出時には、リモートストレージシステム105は、好都合にも、中間キューの内容を空にしてストレージボリュームに対するデータ書き込みを維持できるため、リモートストレージシステム106の中間キューの内容は、短時間の間にライトヒストリキューに追加される。
ステップ1101にて、次にペアは停止中か否か判定される。もし、停止中でなければ
、以下に示す通り、処理はステップ704に移る。
これに対して、停止中の場合は、停止中のペアは再同期化されなければならない。これはステップ1102に示され、処理は図13で示され、そこで説明される。
残りのストレージシステムについてのリモートコピー環境に関する情報を受領し、その後一つに障害が発生した場合、選択されたリモートコピーマネージャは、ロールバック処理を行うかロールフォワード処理を行うかの決定を行う。
典型的には、この決定は、リモートコピー環境の管理者かユーザによって、障害時での同期化処理を最善に行う方法として、フラグをセットしておくことにより、事前に決定されている。
ステップ704にて、ロールバック処理が用いられることを決定した場合は、ステップ705にて、リモートコピーマネージャは、全てのストレージシステムが共有している番号中で、最大のシーケンス番号を持つデータメッセージを決定する。
例えば、図2の例では、シーケンス番号9を持つデータメッセージが条件に該当する。それ故に、ステップ706にて、選択されたリモートコピーマネージャは、ロールバックコマンドを他のすべてのストレージシステムに対して発行し、受領時にシーケンス番号9を超えるデータメッセージを破棄させる。
かくして、再び図2に戻って、リモートストレージシステム106は、ロールバックコマンドを受領すると、シーケンス番号10と11のデータメッセージを破棄して、本処理はステップ715で完結する。
もしこれに対して、ステップ704にて、ロールフォワードが決定されたなら、ステップ707にて、ロールフォワードシーケンス番号が決定される。
本処理は、リモートコピー処理が各種のロールバックキューとライトヒストリキューの内容を比較して、最新のデータメッセージ番号、もしある場合、を有するストレージシステムを決定する事よりなされる。
かくして、図2にて、選出されたリモートコピーマネージャがストレージシステム105の場合は、リモートストレージシステム106がシーケンス番号10と11を有するデータメッセージを持っており、自分自身は持っていない事を悟る。したがって、データメッセージ10と11をリモートストレージシステム106からコピーさせることによって
、各システムで維持されていたデータイメージが同期化される。
かくして、ステップ708にて、選出されたリモートコピーマネージャが最新のデータストレージシステムを決定すれば、ステップ708より709に移り、選択されたRCマネージャは、最新データメッセージを有するストレージシステムから、更新データを受け取る。これは選択されたRCマネージャ自身であることも、又他のストレージシステムのひとつである場合もある。
いずれにしても、選択されたRCマネージャは更新データを受け取り、ステップ710にて、更新を必要としている他のストレージシステムに更新データを選択的に又は部分的に転送して、全てのリモートストレージシステムのデータイメージの同期化処理を行う。処理はステップ715で完結する。
反対に、ステップ708にて、同期化処理は最新の更新データメッセージを持つストレージシステムが実施すべきと判定され、そのストレージシステムが選択されたリモートコピーマネージャではないなら(又は他のストレージシステムが同期化システムと前もって決定されたら)、RCマネージャは、ストレージシステムが必要としている更新情報を比較して、最新の更新データを持つストレージシステムに対して、更新情報を送付する。
次いで、ステップ712にて、データメッセージ形式の更新データが、データイメージの同期化を必要としている全てのストレージシステムに送られ、本処理はステップ715で完結する。
もしロールバック処理が選択される場合は、本発明の親出願で議論されたように、例えば、リモートストレージシステム105,106(図2)のロールバックキュー121,131は整合されている事が好ましい。
整合処理は、ローカルストレージシステム104にて、CPU133上で走行するリモートコピー処理とリモートコピーステータステーブル114(リモートストレージシステム105,106が維持している各種キューの内容の情報が提供されている)を用いて実行される。
例えば、あるリモートストレージシステムはローカルストレージシステムからのリモートコピーデータメッセージを受信不能で、他のリモートストレージシステムは可能と言う事態が発生する。
この様な場合は、同期処理が必要なときには確実に実行されるように、他のリモートストレージシステムと比較時に、ひとつのリモートストレージシステムのキューの中のデータメッセージ間に少なくとも一個の共通データメッセージが存在することが必要であることを、同期化の目的のためには、考慮しなければならない。
図13は再同期化処理の詳細を説明するフローダイアグラムである。最初に、ビットマップのコピーを有する各ストレージボリュームは、リモートコピーペアのステータスをチェックし、ステータスに関する情報を交換する。これはステップ1201に示す。ビットマップのコピーを用いて再同期化を必要とする環境では、再同期化処理は停止状態にあるペア間で必要であるのみならず、ビットマップコピー即ち、Bp,Bp’,Bs,Bs’を有するストレージボリュームのペアの組合せでも必要である。
ステップ1202にて、ビットマップコピーを用いた再同期化が不必要と判定されたなら、処理は終了する。一方、再同期化処理が必要なら、次いでビットマップが交換され(1203)、マージされ(1204)、ステップ1205で示されるように、マージしたビットマップを用いた再同期化処理が実行される。
以上で説明した方法と装置により、多重リモートコピー環境でのコピーを用いた再同期化が可能になる。例えば、リモートコピーの停止処理を採用したシステムのケースでは、特に、再同期化が必要になり次第、システム管理者の介入なしに、自動的に実行される。
本発明の好ましい実施例について説明してきたが、本発明の範囲を逸脱する事なく、多数の改変が可能である事に注意願いたい。