(57)【特許請求の範囲】
【請求項１】
ローカルストレージシステムと複数のリモートストレージシステムで構成されるシステムにおいて、該複数のリモートストレージシステムに記憶された該ローカルストレージシステムのバックアップデータを同期させるための方法であって、
該各リモートストレージシステムが、該ローカルストレージシステムからのデータ更新要求を受信し、該受信したデータ更新要求の識別子を記録するステップと、
該各リモートストレージシステムが、該ローカルストレージシステムからのデータ更新要求を受信し、該データ更新要求に付随するデータをストレージメディアへ書き込んだデータ更新要求の識別子を記録するステップと、
該リモートストレージシステムのうちのいずれかのリモートストレージシステムが、該ローカルストレージシステムで障害が検出されると、該受信したデータ更新要求の識別子及び該受信し書き込みを完了したデータ更新要求の識別子の該各リモートストレージシステム間での差異を検出するステップと、
該差異を検出したリモートストレージシステムが、該差異に基づいて、該各リモートストレージシステム間のデータを同期させるステップとから構成されるデータ同期方法。
【請求項２】
処理システムであって、
データ記憶のためのストレージメディアを有するローカルストレージシステムと、
各々付随データを有するリモートコピーコマンドに応答して、データを記憶するためのストレージメディアを有し、受信したリモートコピーコマンドを識別する情報及び付随データをストレージメディアに書き込んだ、受信したリモートコピーコマンドを識別するための情報を維持する、少なくとも二つのリモートストレージシステムと、
を備え、
該ローカルストレージシステムは、該各リモートストレージシステム内のストレージメディアにデータを書き込ませるために、該各リモートストレージシステムに該リモートコピーコマンドを送信し、
該ローカルストレージシステムでの障害検出により、該リモートストレージシステムのうちの選択されたリモートストレージシステムは、該各リモートコピーシステムが維持している該受信したリモートコマンドを識別するための情報を共有して、一つのリモートストレージシステムでは受信未了で、他のリモートストレージシステムでは受信完了しているリモートコピーコマンドを特定して、該各リモートストレージシステム間のデータを同期させる、処理システム。
【請求項３】
該各リモートストレージシステムは、リモートコピーコマンドと共に受信されたデータを送受信する手段を有する、請求項２に記載の処理システム。
【請求項４】
該各リモートストレージシステムは、一つのリモートストレージシステムで受信済みのデータを他のリモートストレージシステムに送信する為に、通信手段を用いる、請求項３に記載の処理システム。
【請求項５】
処理システムであって、
データ記憶のためのストレージメディアを有するローカルストレージシステムと、
複数のリモートストレージシステムであって、それぞれがリモートコピーコマンドに応答して受信したデータを保存するストレージメディアを有する複数のリモートストレージシステムと、
を備え、
該ローカルストレージシステムは、該各リモートストレージシステム内のストレージメディアにデータを書き込ませるために、該各リモートストレージシステムにリモートコピーコマンドを送信し、
該ローカルストレージシステムでの障害検出により、該リモートストレージシステムのうちの選択されたリモートストレージシステムは、該各リモートストレージシステムが保有する更新情報の受信の差異に関する情報を共有して、一つのリモートストレージシステムで受信されている情報を、他の未受信のリモートストレージシステムに送信して、リモートストレージシステム間で、互いにデータがミラーとなるように修正する、処理システム。
【請求項６】
各リモートストレージシステムは、該各リモートコピーシステムが維持している該リモートコピーコマンドを識別するための情報を保持するキューを含む、請求項５に記載の処理システム。
【請求項７】
該情報は、受信されたリモートコピーコマンドの記録を有する、請求項６に記載の処理システム。
【請求項８】
該情報は、該リモートストレージシステムのストレージメディアに書き込み済みの受信リモートコピーコマンドの記録を有する、請求項７に記載の処理システム。
【発明の詳細な説明】
【発明の属する技術分野】
本発明は、一般的に、ローカルストレージシステムと、このローカルストレージシステムが保持するデータの少なくとも一部をミラーする複数のリモートストレージシステムとから構成されるデータストレージ処理システムに関係する。更に具体的には、本発明は、これらのシステム中の一システムが障害になった場合に、生存するストレージシステムのデータを同期させるための、方法及びこの方法を実装した装置に関連する。
【従来の技術】
商業、軍、政府、やその他の事業での積年のデータ処理の利用により大量のデータが保存されており、この多くのものは、実質上金銭に換算できないほどの重要性を持っている。例えばデータが失われると、企業は倒産する危険がある。偏にこのために、、ローカルデータは一つ以上のコピーでバックアップされており、元データが万一失われても利用できるように保持されている。データが重要であるほど、バックアップ方法は精密化されなければならない。
重要データを保護する一つの方法は、例えば、ローカルストレージシステムから地理的に離れた一つ以上のサイトで、そのデータのバックアップコピーを保存することである。各リモートストレージシステムがローカルストレージシステムのデータのミラーイメージを保持し、ローカルストレージシステムのローカルデータイメージに変更(書き込み、削除等による)が生じた場合には、該変更データイメージを各リモートストレージシステムに転送して、各リモートストレージシステムがローカルデータイメージのミラーを維持できるようにする。ローカルストレージシステムのデータをリモートストレージシステムがミラーする一つの例が米国特許 Ｎｏ.５,９３３,６５３に開示されている。
リモートストレージシステムに送信される更新データはしばしばキューされ、リモートコピー動作のオーバヘッドを最小にするために、グループとして送信される。又転送媒体には、インターネットまたは類似媒体がよく使用される。このような理由で、ローカルデータをミラーしているデータイメージと言えども、各時点では必ずしも同じではない。もし、ローカルデータのミラーのために複数のリモートストレージが使用されている場合には、各リモートストレージ間でデータイメージが一致していないことがしばしば発生する。少なくとも、ローカルストレージシステムによるデータを更新し終わる迄の時間は不一致になってしまう。このような異なったデータイメージが存在する事は、ローカルストレージシステムが障害になり、リモートストレージシステムが取り残された時には、問題になる。
ローカルストレージシステムが障害になった時点では、あるリモートストレージは、完全なミラーとまではいかなくても、最新に最も近いローカルストレージシステムのデータイメージを保持しており、他のリモートストレージでは、ある種のデータイメージは全く更新されていないという事態が発生する。かくのごとく、ローカルストレージシステムが障害になった場合に、全システムを再起動させるには、他のリモートストレージシステムのデータを同期させて、各システムが最新に最も近い同じデータイメージを保持するようにすることが必要になる。幾つかのデータ同期方式が存在する。
もし、ローカル及びリモートストレージシステムで可搬媒体(例えば、テープ、ＣＤ−Ｒ，ＤＶＤ等)が使用出来る場合は、そのような可搬媒体を用いることが出来る。例えば、システム管理者は、ローカルストレージシステムの最新に最も近いデータイメージを保持していると信じられるリモートストレージシステムのデータをテープにコピーする。
次いで、他のリモートストレージシステムで同期させるために使われる前にデータイメージが変更されてしまうのを防ぐために、このテープを持ちまわって他のリモートストレージシステムのデータを更新し終えるまで、データイメージを供給するストレージシステムの入力／出力（Ｉ／Ｏ）動作は停止される。リモートストレージシステムでは、管理者が可搬媒体からリモートサイトのストレージにコピーする。コピーが終わった所で、システム管理者はこれまではリモートストレージシステムの一つであったものが新たなローカルストレージシステムになるように全システムを指定替えをして、Ｉ／Ｏ動作が開始できることになる。この方式は、関連するデータ量が少なく、それほど大きくないシステムに有効である。より大きなシステムではデータ量が急速に増大し、全同期プロセスに必要なコピー時間が過大になる。
可搬媒体が使用できない場合は、別の方式として、いろいろなストレージシステム間のデータ転送にネットワーク接続を使用する方式が考えられる。この方式では、一つのストレージシステムが、前の、（現在は障害になった）ローカルストレージシステムの代わりを務めるために選択される。
この選択されたストレージシステムは、先に述べたと同じ理由で、Ｉ／Ｏ動作は停止され、この選択されたストレージシステムと他のリモートストレージシステムとの間で、同期コピー処理が開始される。同期処理が完了すると、選択されたストレージシステムにおいてＩ／Ｏ動作が再スタートされ、(以前の、障害になったローカルストレージシステムの分だけ)ストレージシステムが一つ少なくはなるがシステムは以前と同様に業務を続けることができる。
この後者の方式の大きな問題は、同期処理に必要な時間であり、特に大量データを保有する大システムでは問題が大きい。例えば、１００ＴＢのデータを１００ＭＢ／ｓの転送速度のネットワークで同期化する場合の時間は１１．５７日が必要となる。(100x1012/(100x106)=106秒=277時間=11.57日)。この時間はただ一つのストレージシステムを同期するのに必要な時間である。同期を必要とするストレージシステムが増加すると、この問題は深刻化する。更に、同期処理中は、関係するストレージシステムのＩ／Ｏ動作は停止しなければならない。
【発明が解決しようとする課題】
本発明は、ローカルストレージの障害時に於いても、複数のリモートデータストレージシステムが同じデータイメージを保持できるように、当該リモートデータストレージシステムを同期させるための方法及び当方法を実装するための方式を提供する。
【課題を解決するための手段】
一般的に本発明は、複数のリモートストレージシステムに通信結合したローカルデータストレージシステムから成る、データ処理システムに関係する。各ストレージシステムはローカルであるにせよ、リモートであるにせよ、データストレージにストレージメディアを保有する。ローカルデータストレージシステムのストレージメディアにて維持されているデータは、各リモートストレージシステム内のストレージメディアにミラーされる。
ローカルストレージシステムで発生したデータイメージの変更は、更新データと共にデータメッセージを送信する、リモートコピープロセスを用いて定期的にリモートストレージシステムに送信され、当該システムのデータイメージの更新が行われる。各ストレージシステムは、リモートストレージシステムがどんな更新データを受信したかのヒストリを示す情報、及びどんな更新データを（かかるリモートストレージシステムの各ストレージメディアへ書き込むことで）取り込んだかのヒストリを示す情報を保持している。一つのストレージシステムが障害になった場合は、生存ストレージシステムが、このヒストリの更新データを持ち回って、システム間のデータイメージの差異、即ち、各生存ストレージシステムでの未受領の更新データの有無を調べる。もし差異が存在する場合には、生存ストレージシステムがデータイメージの同期を実施して、全ての生存システムが実質的に同一データイメージを保有するようにする。
本発明の一実施例では、同期は、ヒストリの更新データ情報が示す最新の更新データを有するリモートストレージシステムが、他のリモートストレージシステムに必要な更新データを送信して、全てのデータイメージを最新状態に持ち上げる“ロールフォワード”方式で達成される。もう一つの“ロールバック”方式の同期方式では、不揃いの更新データを切り捨てて、すべてのデータイメージを共通の更新レベルに戻してしまう。
本発明の一つの効果は、ミラーされるストレージを有するデータ処理システムに於いては、ミラーするローカルストレージシステムに障害が起こった場合、ローカルストレージのミラーイメージは、互いに、対応付けが出来ると言う事実にある。
本発明のもう一つの実施例では、各ストレージシステムはキュー構造を持ち、ロールバックキューでは、ストレージメディアに未書き込みのメッセージを識別し、ライトヒストリキューでは、実際に書き込みが完了したメッセージを識別する。もし、ローカルストレージシステムで障害が発生したら、各リモートストレージシステムは、各システムのロールバックキューとライトヒストリキューの内容を示した情報を持ち回って、一つのストレージシステムでは保有しているが他のストレージシステムでは保有していないデータを見つけ出し、この情報に基づいて不揃いデータを、保有しているシステムから保有していないシステムに送信する。
本発明の更に他の実施例では、アラインメント処理を有し、ローカルストレージシステムがリモートストレージシステムで受信されたメッセージの来歴を追いかけて、当該情報により、各ロールバック及びライトヒストリキュー内に存在するメッセージを特定する。後になって、ロールバック、ロールフォワード、又はパージ処理が実施できるように、各ロールバックキュー及びライトヒストリキューに登録されているメッセージのオーバラップを維持するために、ローカルストレージシステムはデータ転送を抑制し調整する。
本発明の、これら及び他の効果が、添付する図面と共にこの明細書の以降に記載する詳細な説明により、本分野に造詣のある人には明確になる。
【発明の実施の形態】
図１は、データ通信ネットワーク１６で互いに通信結合される、ローカルサイト１２と多数のリモートサイト１４を含む、データ処理システム１０を説明する。ローカルサイト１２は、ホストプロセッサ１０１とローカルストレージシステム１０４を含む。ホストプロセッサ１０１とローカルストレージシステム１０４は、ローカルサイト１２でのデータイメージの更新データをリモートサイト１４と交信するために、データ通信ネットワーク１６を介してリモートサイト１４に結合している。これにより、リモートサイト１４は、ローカルサイト１２のデータのミラーとなるデータイメージを維持することが出来る。
各リモートサイト１４は、リモートストレージシステム１０５，１０６を有し、対応するホストプロセッサ１０２，１０３は持つ場合と持たない場合がある。リモートストレージシステム１０５，１０６は、ローカルストレージシステム１０４のデータイメージのミラーとなるデータイメージを保持するために、ローカルストレージシステム１０４のストレージメディアと極めて類似したストレージメディアを有する(後に更に議論する)。
リモートサイトは、ローカルストレージシステム１０４が計画的又は予期しない停止になった場合には、必要データへのアクセスを可能にするが、ローカルサイト１２が災害でデータが失われる場合のことを考えると、リモートサイト１４は、サイト及び維持するデータを保護するために、ローカルストレージシステム１０４から地理的に離れた位置に設置することがより大きな効果をもたらす。
リモートストレージシステム１０５，１０６は、ローカルストレージシステム１０４と実質的には、同一であり、ローカルストレージシステムに対する議論は、等しくリモートストレージシステム１０５，１０６にも適用される。
ローカルサイト１２では、ホストプロセッサ１０１は、ネットワークインターフェース（Ｉ／Ｆ）１１１とネットワーク結合１１１ａを通して、ネットワーク１６に結合し、入力／出力バス（Ｉ／Ｏバス）１０８とＩ／Ｏインターフェース１１０を通して、ローカルストレージシステム１０４に結合する。
ローカルストレージシステム１０４は、デイスクコントローラ１４１を有し、このデイスクコントローラは、Ｉ／Ｏバス１０８を通してホストからのＩ／Ｏ要求を受け取るための、Ｉ／Ｏインターフェース１３０を持ち、ネットワークインターフェース（Ｉ／Ｆ）１３１とネットワーク結合１３１ａを通して、データ通信ネットワーク１６に接続される。更に、このローカルストレージシステム１０４は、データバス１３２とＩ／Ｏインターフェース１３７，１３８を通してこのデイスクコントローラ１４１に接続される、デイスクユニット１４０で構成されるストレージメディア１４２を有する。
このデイスクコントローラ１４１自身、内部バス１３２を通して、メモリ１３４に結合するＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ：中央処理装置）１３３を持ち、この内部バス１３２は、デイスクコントローラの多様なインターフェース（例えば、Ｉ／Ｏ Ｉ／Ｆ１３０，１３８，ネットワークＩ／Ｆ１３１等）にも接続される。メモリ１３４はキャッシュメモリ１３５を含み、このキャッシュメモリはホストプロセッサ１０１からのＩ／Ｏ要求に応じて、ストレージメディア１４２との間の読み書き時のキャッシュ用として利用される。このメモリは、制御情報１３６のようなある種のデータ構造や情報を保持するために使用される。
ＣＰＵ１３３は、ストレージメディア１４２のデータイメージへの（例えば、ホストプロセッサ１０１から要求された）変更データを、通常のやり方で(自らのストレージメディアを持つ)リモートストレージシステム１０５，１０６に送信処理する、リモートコピープロセスを優先的に実行する。これにより、リモートストレージシステム１０５，１０６は、ローカルストレージシステム１０４のデータをミラーできる。簡単に言うと、リモートコピープロセスは以下の通り処理される：デイスクコントローラ１４１は、ストレージメディア１４２上に保持されているデータ(データイメージ)への追加、変更、削除、その他の修正のいずれかを行う書き込みＩ／Ｏ要求を受け取ると、当該ストレージメディア１４２へデータの書き込みを行う。そのようなストレージメディアへの書き込みまたは、少なくとも書き込みの一部でも、リモートサイト１４でミラーされたデータイメージが必要な場合には、データメッセージが生成されて、リモートコピーキュー(図示されていない)に登録される。このリモートコピーキューは、ＣＰＵ１３３上で走行している、リモートコピープロセスにより周期的にチェックされる。もし、このキュー内に一つ以上のデータメッセージが検出されたら、このメッセージは抽出されて、各リモートストレージシステム１０５，１０６に送信され、データメッセージのデータが書き込まれ、それによって、それらのデータイメージを更新してローカルサイト１２のデータイメージに一致させる。
データメッセージに関する情報は、ストレージシステム１０４，１０５，１０６にて、ローカルストレージシステム１０４から送信された、又は送信途中のデータメッセージか、又は、リモートストレージシステムで受信されたデータメッセージか、を識別するヒストリ情報として保持される。各ストレージシステムでは、ヒストリ情報を複数のキュー構造により実装する。図２はこれらのキュー構造を示す。
図２に示す通り、ローカルストレージシステム１０４は、ワーキングキュー１１０、ロールバックキュー１１１、中間キュー１１２、及びライトヒストリキュー１１３の各キューを含む。ワーキングキュー、ロールバックキュー、中間キュー、及びライトヒストリキュー（１１０−１１３）は、リモートストレージシステム１０５（キュー１２０，１２１，１２２、及び１２３）及びリモートストレージシステム１０６（キュー１３０，１３１，１３２、及び１３３）にそれぞれミラーされる。各キューは、ＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔ：先入れ先出し）構造で実装される。
典型的な読み書きＩ／Ｏ要求は、コマンドエントリとこれに伴うか又は後続するデータ（書き込み要求の場合）を含む。各コマンドエントリには、データと，データが読み書きされるストレージメディア１４２のロケーション及び、実装に従って必要とするその他の情報が指定される。もしホストプロッセサ１０１から、リモートストレージシステム１０５，１０６でミラーされるデータイメージを変更するデータを書き込むためのＩ／Ｏ要求を受けたら、該コマンドエントリには順序番号がアサインされる。するとコマンドエントリはコマンドエントリとアサインされた順序番号により形成されたものになる。このコマンドエントリは次に、ワーキングキュー１１０に登録される。これは、データに先立って、リモートストレージシステムに送信される、データとデータメッセージのためのヒストリ情報を形成する。
コマンドエントリがワーキングキュー１１０にある間に、対応する書き込み要求は受信処理されている。この処理は、書き込み要求に対応するデータ (ホスト１０１とストレージシステム１０４に適用されている通信プロトコル次第で、要求と共に転送されるか、又は要求の後に続いて転送されるかどちらかである) の受信、キャッシュ１３５にデータを格納するためのキャッシュエリアのアサイン、及び受信時の、このエリアへのデータの書き込み、を含む。キャッシュされたデータへのポインタは、対応するコマンドエントリに関連付けられる。このＩ／Ｏ要求の送信者に対して、状態メッセージが返送されて、このＩ／Ｏ要求のデータ状態即ち受信できたか、又は受信時エラーが検出されたかが報告される。
図２は、デイスクコントローラ１０４で受信され、順序番号“１５”がアサインされた書き込みＩ／Ｏ要求１０１ａと、アサインされた順序番号と書き込み要求のコマンドエントリで形成されたコマンドエントリを示す。コマンドエントリは既に述べられたように更に処理する為に、ワーキングキュー１１０に登録される。
当該Ｉ／Ｏ要求が処理され、エラーが検出されない場合、このコマンドエントリは、ワーキングキュー１１０からロールバックキュー１１１に移される。ロールバックキューは一時的な保持エリアで、後により詳しく説明される、ローカルストレージシステム１０４とリモートストレージシステム１０５，１０６の間のロールバック同期のために使用される。リモートストレージシステム１０５，１０６は、ロールバックキュー含めて、基本的には、同じ目的のために、同じキュー構造を持っている。ここでは、ロールバックキューに含まれているコマンドエントリに対応するデータは、本発明では、同期プロセスで使用され、ストレージシステムの一つが、障害になった場合には、破棄されるか、生存ストレージシステム間で比較するために使用される、とだけ言っておけば十分であろう。
コマンドエントリは、ロールバックキュー１１１から、ストレージメディア１４２への書き込み待ちの間又は、書き込んでいる間エントリを保持する中間キュー１１２に移される。当該ストレージメディアへの書き込みが終了すると、当該コマンドエントリは、プライマリ（ローカル）ストレージシステム１０４のミラーコピーを行うリモートストレージシステムに対してデータイメージの更新を行わせるために送信される、データメッセージを作成してリモートコピー要求を作成するために利用される。次いで、キャッシュポインタはコマンドエントリから削除され、エントリは中間キューからライトヒストリキュー１１３に移される。図２は、既に示されたように、ホストプロセッサ１０１から受信した順序番号１５をアサインされ、ワーキングキュー１１０に登録されているコマンドエントリを示す。現在ロールバックキュー１１１に登録されている順序番号１３，１４のコマンドエントリは、関連データが、ストレージメディア１４２に書き込まれるのを待っている。中間キュー１１２は、順序番号１０，１１、及び１２のコマンドエントリを保有している。順序番号１０のコマンドエントリは、次に書き込まれるか、書き込まれている最中であることを示している。順序番号７，８，及び９のコマンドエントリは、関連データをストレージメディア１４２に書き込み済で、それ故にライトヒストリキュー１１３に登録されている。
リモートストレージシステムは基本的には、同じキュー構造を持ち、同様に操作される。例えば、リモートストレージシステム１０５は、当該エントリの全データパッケージを受信している間、ワーキングキュー１２０に登録されている順序番号１０がアサインされたコマンドエントリを持つ、データメッセージを受信中であることを示している。この順序番号１０はローカルストレージシステム１０４で与えられたものである。一度、データメッセージが、受信されると、そのコマンドエントリは、ワーキングキュー１２０からロールバックキュー１２１に移される。このロールバックキューには現在、順序番号６−９を持つデータメッセージのコマンドエントリが登録されている。
中間キュー１２２には順序番号５のデータメッセージのコマンドエントリが存在し、ストレージシステム１０５のストレージメディア１４２'への書き込み中であることを示している。書き込みが終了すると、当該エントリは、順序番号１−４のデータメッセージのコマンドエントリが既に存在するライトヒストリキュー１２３に移動する。ライトヒストリキュー１２３の深さにより、最古のエントリ、例えば順序番号１のエントリは順序番号５のコマンドエントリの加入により追い出されることになる。
他のリモートストレージ１０６も同じデータキュー構造（１３０，１３１、・・・１３３）を持つ。図２では、リモートストレージ１０６が、現在順序番号１２のデータメッセージを受信しつつあり、ワーキングキュー１３０に順序番号１２のコマンドエントリが入っている。ロールバックキュー１３１には、順序番号８−１１を持つ制御情報が登録されている。以下同様である。
このようなヒストリ情報をストレージシステムによりトレースするキューは通常、メモリに保持されているが、ストレージメディアに保持してもかまわないことは、本分野に造詣のある人には明らかである。
ローカルストレージシステム１０４は、更に、メモリ１３４(図１)中にリモートコピー状態テーブル１１４を持ち、どのデータメッセージが送信され、どのリモートストレージシステムによりどのデータメッセージが受信され、完了報告が出されたかを表示している。
例えば、最も最近に、リモートストレージシステム１０５（表１１４で“Ｓ１”と表示）に受け取られたのは、順序番号９であり、リモートストレージシステム１０６（“Ｓ２”と表示）に受け取られたデータメッセージは、順序番号１１であることが分かる。
リモートコピー状態テーブル１１４は更に、リモートストレージシステムのロールバックキュー、ライトヒストリキューに関する情報も保持している。即ち、テーブル１１４が示すようにリモートストレージシステム１０５，１０６のロールバックキューの長さはデータメッセージ４エントリ分で、１０ＭＢの容量まで収容可能であることが分かる。各リモートストレージシステム１０５，１０６のライトヒストリキューは５データメッセージの５エントリ分である。このライトヒストリキューのバイト単位の容量をこのテーブル１１４に保持させても良い。
図３は各種のネットワークアーキテクチュアを持つデータ処理システムで発生し得る、種々の傷害モードのシナリオを示す。最初の図３Ａでは、ローカルストレージシステム３０４Ａを持つデータ処理システムは、リモートストレージシステム３０５Ａ，３０６Ａに並列に通信接続されている。図３Ａに示すように、リモートストレージシステム３０５Ａが障害になった場合は、データ同期プロセスの必要性はない。ローカルストレージシステム３０４Ａは依然稼動中であり、生存リモートストレージシステム３０６Ａが通常のリモートコピー処理によりデータ更新を継続できるからである。
図３Ｂはローカルストレージシステムが障害になった場合のシナリオを図で示す。この場合も、ローカルストレージシステム３０４Ｂは、リモートストレージシステム３０５Ｂ，３０６Ｂに並列に通信接続されている。もし、ローカルストレージシステム３０４Ｂの障害が検出されると、図３Ｂの下半分に記されているように、リモートストレージシステム３０５Ｂ’，３０６Ｂ’は、最新の更新データを保有しているリモートストレージシステムのデータイメージに対して、自己の持つデータイメージを同期させる。リモートストレージシステム３０５Ｂが最新更新情報を保有しているとすると、本発明での同期プロセスは、リモートストレージシステム中のデータイメージの一つを、他システム中のそれと同期することにより行われる。すぐ分かるように同期には二つの方式が存在する。
ロールフォワード方式では、最新の更新データがこれを必要としているリモートストレージシステムに送信され、ロールバック方式では、最新の更新データは破棄される。いずれの方式でも、生存リモートストレージシステムが保持しているデータイメージは同一化される。
図３Ｃ，３Ｄ，３Ｅでは、ローカル及びリモートストレージシステム３０４Ｃ，３０５Ｃ，３０６Ｃが各々、デイジーチエンネットワーク結合で接続されている。図３Ｃでは、ローカルストレージシステム３０４Ｃが障害になり、リモートストレージシステム３０５Ｃがリモートストレージシステム３０６Ｃを同期させる場合を示している。
一方に於いて、図３Ｄの如く、デイジーチエンの遠端に存在するリモートストレージシステム３０６Ｃが障害になった場合は、データ同期の必要性はない。図３Ｅの如く、中間のリモートストレージシステムが障害になった場合は、残ったリモートストレージシステムは、ネットワーク結合が正常である限り、ローカルストレージシステムにより同期化される。
図４Ａ−４Ｅは、ローカルストレージシステムが障害になった場合に、各ストレージシステムで保有している受信されたデータメッセージに関するヒストリ情報を用いて、本発明によるリモートストレージシステムのデータイメージの同期方法を一般的に説明する。
図４Ａは、ローカルストレージシステム４０４が、リモートコピーキュー４０４ａに３つのデータメッセージ（１，２，３）を持っている正常時の状態を示す。そのデータメッセージ中の二つ（１，２）がリモートストレージシステム４０５に送信され受信されているが、３番目のデータメッセージ３は、当該リモートストレージシステム４０５に送信中である。しかしながら、リモートストレージシステム４０６には、データメッセージ１，２，３が一つも受け取られいていなく、何れも送信準備中か、送信中である。
この状態で、即ち、データメッセージ３はリモートストレージシステム４０５で受信が完了しておらず、データメッセージ１，２，３のいずれもリモートストレージシステム４０６で受信が完了していない状態で、ローカルストレージシステム４０４が、障害になった場合の結果を図４Ｂに示す。この状態では、リモートストレージシステム４０５，４０６間でデータメッセージは、リモートストレージシステム４０５のロールバックキュー４２１に蓄えられている、最新のデータメッセージ１，２だけが相違している。
この状態での、本発明によれば、二つのストレージシステム４０５，４０６により保持されているデータイメージを同期させる方式の一つの技術は、リモートストレージシステム４０６にも、データメッセージ１，２を受け取らせ、リモートストレージシステム４０６が保有しているデータイメージを更新させることを必要とする。
かくして、図４Ｃに示すように、データイメージの相違はリモートストレージシステム４０５に保持される二つのデータメッセージ１，２にあることを検出した上で、これらのデータメッセージをロールフォワード同期のためにリモートストレージシステム４０６に転送する。反対に、ロールバック方式の同期では、リモートストレージシステム４０５に、保有しているデータメッセージ１，２を破棄させる。このロールバック同期方式を図４Ｅに示し、以下に論ずる。
図４Ｄは、システム中任意の場所に存在しえるソフトウエアマネージャ４０７により実行されるロールフォワード同期を示す。このようにこのマネージャはシステムの他の部分とは分離していながら、ローカルストレージシステムや、リモートストレージシステム４０５，４０６にアクセス可能であってもよいし、全体のストレージシステムの一部を形成してもよい。
実装方法にかかわらず、マネージャ４０７は、プライマリストレージシステム４０４の障害検出を契機に始まる、リモートストレージシステム４０５，４０６間の交信に立ち入る。この交信の結果により、マネージャ４０７は、プライマリストレージシステム４０４が倒れた時点の、更新情報の受信の差異をリモートストレージシステム間について調査する。図４Ｄの例では、マネージャ４０７は、リモートストレージシステム４０５が、リモートストレージシステム４０６が持っていないデータメッセージ１，２を受信しており、データメッセージ１，２はストレージシステム４０５のロールバックキューの中にあると知らされる。
そこで、このマネージャ４０７はリモートストレージシステム４０５にアクセスし、メッセージ１，２に関するデータをリモートストレージシステム４０６に転送し、リモートストレージシステム４０６のデータイメージをリモートストレージシステム４０５のデータイメージと同期させる。
代わりに、マネージャ４０７は、リモートストレージシステム４０５のロールバックキューのデータメッセージを破棄させることも出来る。この場合、当該データメッセージは、中間キューには入っていないため、メッセージに対応するデータは書き込まれず、データイメージは変更されない。メディアこの後者の同期方式はロールバック同期と呼ばれ、リモートストレージシステム４０５のデータイメージをリモートストレージシステム４０６のデータイメージに同期させるものである。
図４Ｅは、ロールバック同期処理の他のやり方を説明する。前と同様に、プライマリストレージシステム４０４が、リモートストレージシステムのデータイメージを更新するために転送すべき、データメッセージ１，２，３を保有したまま、障害になったとする。このとき、リモートストレージシステム４０５のみがデータが更新されて、データメッセージ１，２のみ保有しており、リモートストレージシステム４０６は全く更新されず、データメッセージ１，２，３の何れも保有していないとする。
従って、プライマリ（ローカル）ストレージシステム４０４がこの状態で障害になった場合は、両リモートストレージシステム４０５，４０６のデータイメージは、データメッセージ１，２だけが相違している。本発明のロールバック処理では、それぞれの保有するデータイメージを同期させるために、データメッセージ１，２のデータをリモートストレージシステム４０５からリモートストレージシステム４０６にフォワード転送するのではなく、リモートストレージシステム４０５が保有しているデータメッセージを破棄させる。
図５は、ローカルストレージシステム１０４(図１)が、ホスト１０１(図１)から受信した更新データを各リモートストレージシステムに転送する、リモートコピー処理のために行う主要ステップを説明する。既に説明したように、ローカルストレージシステム104の保有するデータイメージを更新させるホストプロセッサ１０１からの書き込みＩ／Ｏ要求は、リモートストレージシステムの保有するデータイメージのミラーに就いても同様な更新を必要とする。
この書き込みＩ／Ｏ要求の発生により、アサインされた順序番号及び、この要求データへのポインタを含む、対応するコマンドエントリが形成される。このコマンドエントリは、全てのデータが受信され、完了報告がホストプロセッサ１０１に返されるまで、ワーキングキュー１１０に収容されている。その後、このコマンドエントリはロールバックキュー１１１に移される。その後、このロールバックキュー１１１が満杯になるか、フラッシュコマンド(後述する)が受信されると、このコマンドエントリは中間キュー１１２に移される。中間キュー１１２に存在している間に、この要求に対応するデータがストレージメディア１４２に書き込まれる。
ＣＰＵ１３３上で走行している、リモートコピープロセスは、周期的にリモートコピーキューの内容をチェックして、リモートストレージシステム１０５，１０６の各々に更新データをコピーするために受信したＩ／Ｏ要求に対してデータメッセージの形成が必要なコマンドエントリを見つける。図５のステップ５０１にて、ローカルストレージシステム１０４は各リモートストレージシステムがデータメッセージの受付が出来るか否かをチェックする。
このチェックは、ＲＣ状態テーブル１１４を参照して行う。このテーブルでは、各リモートストレージシステムが、どんなメッセージを受信して完了報告したか、完了報告してないか、及びリモートストレージシステムの各キューの受信可能サイズをローカルストレージシステムに伝える。このテーブルによりローカルストレージシステムは、特定のストレージシステムが別のデータメッセージや関連データの受信するスペースがあるか否かを判断する。もし否であったら、ステップ５０１は次の処理に移る。リモートストレージシステム自身が、これ以上データメッセージを受け取れないことの表示、例えば、ＳＣＳＩ等で定義された“ＢＵＳＹ（０ｘ０８）：使用中”や“キュー満杯（０ｘ２８）”等の状態信号を返答することも出来る。
もし、対象リモートストレージシステムがデータメッセージを受信するのに十分なスペースを持っていることが分かれば、ローカルストレージシステムは、リモートストレージシステム（例えばリモートストレージシステム１０５）にデータメッセージの形式でＲＣ（リモートコピー）コマンドを発行し、これに続いてステップ５０３で関連するデータを送信する。
ローカルストレージシステム１０４は、その後、データメッセージを受信したか否かの状態報告を待ち（ステップ５０４）、ローカルストレージシステムが報告を受信すると、ステップ５０５で、全てのリモートストレージシステムがデータメッセージの更新が済んだかのチェックを行う。未了のリモートストレージシステムが存在すれば、処理はステップ５０６ａに移り、対象となるリモートストレージシステムがデータイメージを受信したことを示すようにＲＣ状態テーブル１１４を更新して、次のリモートストレージシステムがデータメッセージを受け取るために、ステップ５０１に戻る。
しかしながら、ステップ５０５にて全てのリモートストレージシステムがデータメッセージを受信したことが判明すれば、当該データメッセージ（コマンドエントリ）は、ステップ５０６でＲＣキューから削除され、ステップ５０７でＲＣ状態テーブル１１４が更新され、このデータメッセージのための処理は終了する。
図６は、リモートストレージシステムがリモートコピープロセスのデータメッセージを受信するステップを一般的に示す。ステップ６０１でリモートストレージシステムはデータメッセージを受信し、ステップ６０２で当該データメッセージを受け取るための十分なキュー資源がアサイン可能か、即ち受信のスペースがあるかを判定する。
更に、このステップ６０２の判定は、他のリモートストレージシステムのキュー内容に比較して、自らのキュー（即ち、ロールバック、中間、ライトヒストリキュー）の状態の分布、即ちアラインメント（後述される）に基づいて実施される。もし、ステップ６０２で、この時点では、当該データの受け取りは不可能と判定されたら、ステップ６０２からステップ６０６に移り、このリモートストレージシステムは、ローカルストレージシステム１０４に対して、“使用中”の応答を返し、この受信処理を終える。ローカルストレージシステムは、この応答により後の再試行の必要性を確認する。
もし、ステップ６０２で、受付可能と判定されたら、ステップ６０３でデータを受信し、ステップ６０４でリモートストレージシステムはデータ転送の状態を返す。続いて、ステップ６０５でこのデータメッセージは、メッセージ及びデータ受信用のワーキングキューから、ロールバックキューに移される。
図７は、ローカルストレージシステムで(又は、図３Ｅのデイジーチェイン接続での中間サイトのリモートストレージシステムで)障害が検出された場合の同期プロセスの処理ステップを示す。ステップ７０１で障害が検出される。障害検出は数々の方法でなされる。例えば、ストレージシステムは、互いに、ハートビート信号を他のストレージシステムに送信し、これが来なければ当該システムは障害とみなす；或いはストレージシステムは自己診断可能で、自システムの障害を他システムに同報通信することが出来る；或いはその他の任意の慣用的障害検知技術を用いることが出来る。
もし、障害が検出されると、他の生存システム、例えば、図２のリモートストレージシステム１０５，１０６は互いに交信し、誰が新しいリモートコピーマネージャになれるかを判定する。選択されたストレージシステムが、残りのすべての生存システムのデータイメージを同一状態に同期するためのリモートコピー処理をコントロールする。あるいは、リモートコピーマネージャは、システム管理者により事前定義されている場合もある。
いずれにせよ、選択されると、リモートコピーマネージャは、ローカルストレージシステムとなり、ステップ７０３で生存ストレージシステムで維持されている、各種キューの構造と内容に関する情報を集める。この情報には、ロールバックキューとライトヒストリキューの範囲（エントリ数）と、どれだけの数のエントリがデータメッセージを有するかの情報が含まれる。例えば、図２について、ローカルストレージシステム１０４が障害になり（ステップ７０１）、リモートストレージシステム１０５がステップ７０２でリモートコピーマネージャとして選択されると、リモートストレージシステム１０６は、自分のロールバックキュー１３１にはデータメッセージ８，９，１０，１１が、ライトヒストリキュー１３３にはデータメッセージ３，４，５，６が保有されていることを報告する。
リモートストレージシステム１０６の中間キューの内容は、障害が検出されるとリモートストレージシステムは優先的に中間キューを空にして、それにより該当データがストレージメディアに書き込まれるようにするので、短時間のうちにライトヒストリキューに付け加えられる。
ストレージシステムの一つに障害が起きた後、生存ストレージシステムのリモートコピー環境に関する情報が得られた場合、選択されたリモートコピーマネージャは、ロールバックか、ロールフォワードかの何れの同期方式を選択するかを決める。これは、典型的には、リモートコピー環境の管理者又はユーザによって、障害の場合にストレージシステムを同期させる最良の方式に関するフラグをセットしておく形で、事前決定されている。
もし、ステップ７０４で、ロールバック処理が選択されたら、ステップ７０５でリモートコピーマネージャーはすべてのストレージシステムが共有する最も大きな順序番号を持つデータメッセージを決定する。図２の例では、順序番号９のデータメッセージがこれに該当する。続いて、ステップ７０６にて、選択されたリモートコピーマネージャは、ロールバックコマンドを他の全てのストレージシステムに対して発行し、受信後順序番号９を超えるデータメッセージを破棄させる。かくして、図２に戻って、リモートストレージシステム１０６はこのロールバックコマンド受領により、順序番号１０，１１のデータメッセージを破棄する。この処理はステップ７１５で終了する。
一方において、ステップ７０４にて、ロールフォワードが選択された場合には、ステップ７０７でロールフォワードの順序番号を決定する。この処理では、リモートコピー処理が、各種のロールバックキューとライトヒストリキューの内容を比較して、最新のデータメッセージを保有するストレージシステム決定する。かくして図２に於いて、選択されたリモートコピーマネージャが、リモートストレージシステム１０５の場合は、リモートストレージシステム１０６が順序番号１０，１１のメッセージを持っており、自分は持っていないことを認識する。
そこで、各システムのデータイメージの同期を計るために、リモートストレージシステム１０６の順序番号１０，１１のデータメッセージを自システムに転送するリモートコピー処理を起動する。かくして、ステップ７０８にて、選択されたリモートコピーマネージャは、それが最新のストレージシステムだと判定すると、ステップ７０９にて、最新データを有するストレージシステムから必要データを取得する。このことは、選択されたＲＣマネージャ自身にも起こり得るし、他のストレージシステムの一つにも起こり得る。いずれにせよ、選択されたＲＣマネージャが更新データを受領すると、ステップ７１０に移り、更新データを必要とする他のストレージシステムに対して更新データ又はその一部を選択的に転送してすべてのリモートストレージシステムのデータイメージの同期を完了する。この処理はステップ７１５で完結する。
もし、逆に、ステップ７０８にて、同期処理は、最新データメッセージを保有するストレージシステムにより実施され、当該ストレージシステムは選択されたＲＣマネージャではない場合(あるいは、他のストレージシステムが予め、同期システムとして、事前指定されている場合)は、ＲＣマネージャは、どのストレージシステムがデータ更新を必要としているかを含む更新情報を、最新更新データ保有ストレージシステムに送信する。次にステップ７１２にて、更新データはデータメッセージの形で、このデータイメージの同期を必要とするすべてのストレージシステムに送信され、処理はステップ７１５で完了する。
もし、 (図４Ｅで説明され、既に議論されたように) ロールバック処理が採用された場合には、リモートストレージシステム１０５，１０６（図１）のＲＢ（ロールバック）キューは、アライン(調整)されている必要がある。アラインメント処理は、ローカルストレージシステム１０４で、ＣＰＵ１３３上で走行しているリモートコピープロセスと（リモートストレージシステム１０５，１０６で維持されている各種のキューの状態に関する情報を提供する）リモートコピー状態テーブル１１４を用いて、実行される。
例えば、あるリモートストレージシステムはローカルストレージシステムからのリモートコピーデータメッセージを受信できず、他のリモートストレージシステムは受信できるという事態が存在する。このような場合には同期目的のために、注意しなければならないことは、同期が必要なときに、同期が必ず成立するためには、一つのリモートストレージシステムのキューの中にあるデータメッセージと他のリモートストレージシステムのキューの中にあるデータメッセージとを比較したときに、少なくとも一つのデータメッセージが共通に保有（オーバラップ）されている必要があることである。
図８，９はすべてのキュー（特にＲＢキューと、ライトヒストリキュー）に就いての、アライメント処理を説明する。図８では、リモートストレージシステム８０５／８０６のＲＢキュー８２１／８３１は２エントリの深さで、ライトヒストリキュー８２３／８３３はそれぞれ５エントリの深さの状態でのオーバラップを説明する。（ワーキングキュー及び中間キューは、不必要に話を複雑化させるために図示されていない）。図８に於いて、リモートストレージシステム８０５は、ライトヒストリキュー８２３にデータメッセージ６，７，８，９，１０が、ＲＢキュー８２１にデータメッセージ１１，１２が登録されている。
リモートストレージシステム８０５は、更にメッセージ１３の受信途上であり、ローカルストレージシステム(図８に図示されていない)は、更にデータメッセージ１４を送る準備をしている。リモートストレージシステムがデータメッセージ１３を受信し受け付けると、このメッセージ１３は、ＲＢキュー８２１に入り込む。これにより、データメッセージ１１が、スペースを作るためにライトヒストリキューに移動して、データメッセージエントリ６がライトヒストリキューから排出されることになる。リモートストレージシステム８０５は更に、順序番号１４のデータメッセージを受け取れる状態になる。
同時にリモートストレージシステム８０６は、ライトヒストリキュー８３３にデータメッセージ１−５を持ち、ＲＢキュー８３１にデータメッセージ６，７を持っており、データメッセージ８，９を受信中である。
この状態で、更に、リモートストレージシステム８０５がメッセージ１４受信し受け付けたとすると、ライトヒストリキュー８２３から末尾にあるメッセージ７が脱落することになる。この状態で、リモートストレージシステム８０６がデータメッセージ８，９を受信し受け付ける前に、例えばローカルストレージシステムが障害になったとすると、データメッセージ７に関する情報がリモートストレージシステム８０５から欠落しているため、ロールバック方式を用いて二つのリモートストレージシステムを同期させることができない結果になってしまう。
このことより、ローカルストレージシステム(図８には図示されていない)は、データメッセージの受信状態及びリモートストレージシステム８０５，８０６のキューの保有状態に関する、リモートコピー状態テーブル１１４(図２)からの情報により、リモートストレージシステム８０６が少なくともデータメッセージ８を受信し受け付けられる迄は、データメッセージ１４の送信を抑制することによって両者のアライメントを維持する必要がある。
図９は、ローカルストレージシステム１０４で採用され、定期的に発行されるフラッシュコマンドを用いたアライメント処理を説明する。図９では、ローカルストレージシステム１０４は、データメッセージ６を指定して、フラッシュコマンドを発行する。これにより、両リモートストレージシステム８０５，８０６とも、データメッセージ６に後続するすべてのデータメッセージ（７，８、・・・）の保有を確実にさせる。しかしながら、リモートストレージシステム８０５は依然として、データメッセージ１４は受信不可能で“使用中”状態を返答する。
【発明の効果】
本発明により、従来の技術に勝る数々の便益が実現される。
【図面の簡単な説明】
【図１】図１は、本発明を実装する、ローカル及び複数のリモートストレージシステムを有するデータ処理システムのブロックダイアグラムである。
【図２】図２は、ローカルストレージからリモートストレージシステムに送られた更新データのヒストリ情報を保持するために、ローカル及び複数のリモートストレージシステムの各々で実装されるキュー構造を説明するダイアグラムである。
【図３Ａ】図３Ａは、ローカル及びリモートストレージシステム間の結合方式に対応して、発生し得る異なった障害モードを、図で説明する。
【図３Ｂ】図３Ｂは、ローカル及びリモートストレージシステム間の結合方式に対応して、発生し得る異なった障害モードを、図で説明する。
【図３Ｃ】図３Ｃは、ローカル及びリモートストレージシステム間の結合方式に対応して、発生し得る異なった障害モードを、図で説明する。
【図３Ｄ】図３Ｄは、ローカル及びリモートストレージシステム間の結合方式に対応して、発生し得る異なった障害モードを、図で説明する。
【図３Ｅ】図３Ｅは、ローカル及びリモートストレージシステム間の結合方式に対応して、発生し得る異なった障害モードを、図で説明する。
【図４Ａ】図４Ａは、ストレージシステムの一つ（例えばローカルストレージシステム）が障害になり、他の生存ストレージシステムがデータイメージを同期させるための、異なったシナリオを図で説明する。
【図４Ｂ】図４Ｂは、ストレージシステムの一つ（例えばローカルストレージシステム）が障害になり、他の生存ストレージシステムがデータイメージを同期させるための、異なったシナリオを図で説明する。
【図４Ｃ】図４Ｃは、ストレージシステムの一つ（例えばローカルストレージシステム）が障害になり、他の生存ストレージシステムがデータイメージを同期させるための、異なったシナリオを図で説明する。
【図４Ｄ】図４Ｄは、ストレージシステムの一つ（例えばローカルストレージシステム）が障害になり、他の生存ストレージシステムがデータイメージを同期させるための、異なったシナリオを図で説明する。
【図４Ｅ】図４Ｅは、ストレージシステムの一つ（例えばローカルストレージシステム）が障害になり、他の生存ストレージシステムがデータイメージを同期させるための、異なったシナリオを図で説明する。
【図５】図５は、ローカルストレージのデータイメージになされたデータ変更をリモートストレージシステムにデータメッセージを送信することによってコピーする、リモートコピー処理の主要ステップを説明する。
【図６】図６は、ローカルストレージシステムからのデータメッセージの受領に応じてリモートストレージシステムが行う主要ステップを説明する。
【図７】図７は、ローカルストレージシステムでの障害が検出された時に、リモートストレージシステムが行う主要ステップを説明する。
【図８】図８は、各リモートストレージシステム間での情報キューのオーバラップを維持するために、ローカルストレージシステムで発行される、アラインメント処理及びフラッシュ処理を図で説明する。
【図９】図９は、各リモートストレージシステム間での情報キューのオーバラップを維持するために、ローカルストレージシステムで発行される、アラインメント処理及びフラッシュ処理を図で説明する。
【符号の説明】
１６・・・ネットワーク、１０１・・・プライマリホスト、１０２・１０３・・・リモートホスト、１０４・・・プライマリストレージ、１０５・１０６・・・セカンダリストレージ、１１０・１３０・１３７・１３８・・・Ｉ／Ｏインタフェース、１１１・１３１・・・ネットワークインタフェース、１３２・・・内部バス、１３３・・・ＣＰＵ、１３４・・・メモリ、１３５・・・キャッシュメモリ、１３６・・・コントロール情報、１４０・・・ディスク、１４２・・・ボリューム
【図１】
0004325836.tif 000002
【図２】
0004325836.tif 000003
【図３Ａ】
0004325836.tif 000004
【図３Ｂ】
0004325836.tif 000005
【図３Ｃ】
0004325836.tif 000006
【図３Ｄ】
0004325836.tif 000007
【図３Ｅ】
0004325836.tif 000008
【図４Ａ】
0004325836.tif 000009
【図４Ｂ】
0004325836.tif 000010
【図４Ｃ】
0004325836.tif 000011
【図４Ｄ】
0004325836.tif 000012
【図４Ｅ】
0004325836.tif 000013
【図５】
0004325836.tif 000014
【図６】
0004325836.tif 000015
【図７】
0004325836.tif 000016
【図８】
0004325836.tif 000017
【図９】
0004325836.tif 000018