(57)【要約】      （修正有）【課題】２つのデータ記憶システムを持つミラーリングシステムにおいて、障害発生時にデータ復元が可能なような一貫性のあるデータのミラリングを行う。【解決手段】データ・ミラーリング・システムにおいて、一つの手段は第１ソース記憶装置から第１ターゲット記憶装置へのミラーリング通信が不能な場合、第２ソース記憶装置から第２ターゲット記憶装置へのミラーリング通信を不能にする。別の実施の形態では、データ・ミラーリング・システムに、複数のターゲット記憶装置の少なくとも１つの対応するサブセット上に一貫性のあるデータ表現を維持することが望ましい複数のミラー・ソース記憶装置の少なくとも１つのサブセットを識別する情報を格納する。更に別の実施の形態では、複数のミラー・ソース記憶装置の少なくとも１つを、第１状態、第２状態、および第３状態の１つに置く。【選択図】図１
2006053932.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのホストと、少なくとも１つのソース記憶システムと、少なくとも１つのターゲット記憶システムとから成るデータ・ミラーリング・システムにおける使用方法であって、前記少なくとも１つのソース記憶システムは複数のミラー・ソース記憶装置を含み、前記少なくとも１つのターゲット記憶システムは複数のターゲット記憶装置を含み、前記少なくとも１つのホストは前記少なくとも１つのソース記憶システムに結合され、前記複数のミラー・ソース記憶システムに書き込み動作を実行し、前記少なくとも１つのソース記憶システムは前記少なくとも１つのターゲット記憶システムに結合され、前記複数のミラー・ソース記憶装置の各々から前記複数のターゲット記憶装置の対応する１つへのミラーリング通信を可能とする方法において、
（Ａ）前記データ・ミラーリング・システムに、前記複数のターゲット記憶装置の少なくとも１つの対応するサブセット上に一貫性のあるデータ表現を維持することが望ましい、前記複数のミラー・ソース記憶装置の少なくとも１つのサブセットを識別する情報を格納するステップ、
を含む方法。
【請求項２】
請求項１記載の方法であって、更に、
（Ｂ）前記ステップ（Ａ）において格納した前記情報を用いて、前記複数のターゲット記憶装置の前記少なくとも１つの対応するサブセット上に一貫性のあるデータ表現を維持することを保証するステップを含む、方法。
【請求項３】
請求項１記載の方法であって、前記複数のターゲット記憶装置の前記少なくとも１つの対応するサブセットは、前記複数のミラー・ソース記憶装置の複数のサブセットを含み、前記ステップ（Ａ）は、前記少なくとも１つのホストに、前記複数のミラー・ソース記憶装置のどれが前記複数のミラー・ソース記憶装置の前記複数のサブセットのどれに含まれているのかを識別する情報を格納するステップを含む、方法。
【請求項４】
請求項３記載の方法であって、前記ステップ（Ａ）は、更に、
（Ａ１）前記少なくとも１つのソース記憶システムに、前記複数のミラー・ソース記憶装置の各々が一貫性グループのメンバであるか否かを識別する情報を格納するステップを含む、方法。
【請求項５】
請求項１記載の方法であって、前記ステップ（Ａ）は、
（Ａ１）前記少なくとも１つのソース記憶システムに、前記複数のミラー・ソース記憶装置の各々が一貫性グループのメンバであるか否かを識別する情報を格納するステップを含む、方法。
【請求項６】
複数のミラー・ソース記憶装置を含む少なくとも１つのソース記憶システムと、複数のターゲット記憶装置を含む少なくとも１つのターゲット記憶システムとから成るデータ・ミラーリング・システムにおいて用いるホストであって、前記少なくとも１つのソース記憶システムは前記少なくとも１つのターゲット記憶システムに結合され、前記複数のミラー・ソース記憶装置の各々から前記複数のターゲット記憶装置の対応する１つへのミラーリング通信を可能とするホストにおいて、
少なくとも１つのメモリ・ユニットと、
前記少なくとも１つのソース記憶システムに結合され、前記複数のミラー・ソース記憶装置に対して書き込み動作を実行する少なくとも１つのコントローラであって、前記少なくとも１つのメモリ・ユニットに、前記複数のターゲット記憶装置の少なくとも１つの対応するサブセット上に一貫性のあるデータ表現を維持することが望ましい、前記複数のミラー・ソース記憶装置の少なくとも１つのサブセットを識別する情報を格納するように構成されている、少なくとも１つのコントローラと、
を備えるホスト。
【請求項７】
請求項６記載のホストであって、前記複数のターゲット記憶装置の前記少なくとも１つの対応するサブセットは、前記複数のミラー・ソース記憶装置の複数のサブセットを含み、前記少なくとも１つのコントローラは、前記少なくとも１つのメモリ・ユニットに、前記複数のミラー・ソース記憶装置のどれが前記複数のミラー・ソース記憶装置の前記複数のサブセットのどれに含まれているのかを識別する情報を格納するように構成されている、ホスト。
【請求項８】
少なくとも１つのホストと、複数のターゲット記憶装置を含む少なくとも１つのターゲット記憶システムとから成るデータ・ミラーリング・システムにおいて用いるソース記憶システムであって、
複数のミラー・ソース記憶装置であって、前記少なくとも１つのホストに結合され、前記少なくとも１つのホストに、当該複数のミラー・ソース記憶装置に対する書き込み命令を実行させ、更に前記少なくとも１つのターゲット記憶システムに結合され、当該複数のミラー・ソース記憶装置の各々から前記複数のターゲット記憶装置の対応する１つへのミラーリング通信を可能にする、複数のミラー・ソース記憶装置と、
少なくとも１つのメモリ・ユニットと、
前記少なくとも１つのメモリ・ユニットに、前記複数のターゲット記憶装置の少なくとも１つの対応するサブセット上に一貫性のあるデータ表現を維持することが望ましい、前記複数のミラー・ソース記憶装置のサブセットに各々属する前記複数のミラー・ソース記憶装置のそれぞれをを識別する情報を格納する、少なくとも１つのコントローラと、
を備えるソース記憶システム。
【請求項９】
請求項８記載のソース記憶システムであって、前記少なくとも１つのコントローラは、前記少なくとも１つのメモリ・ユニットに、前記複数のミラー・ソース記憶装置の各々が一貫性グループのメンバであるか否かを識別する情報を格納するように構成されている、ソース記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ミラーリング・デバイス（ｍｉｒｒｏｒｉｎｇ  ｄｅｖｉｃｅ）群に格納されているデータの一貫性を維持する方法および装置に関する。
【背景技術】
【０００２】
多くのコンピュータ・システム・コンフィギュレーションでは、ソース記憶装置に格納されている情報を、当該ソース記憶装置から離れた場所に配置可能な、ターゲット記憶装置にミラーしている。かかるコンピュータ・システムの一例は、図１に関連付けて以下で論ずるデータ・ミラーリング・システム１００である。
【０００３】
図１のデータ・ミラーリング・システム１００では、１つ以上のホストＣＰＵ１０２が（１つ以上の通信リンク１１４を介して）ソース記憶システム１０４に結合されている。図示の例では、ソース記憶システム１０４は、複数の「ソース」記憶装置１１０ａ〜ｆを含む。ソース記憶装置１１０ａ〜ｆは、図１に示すように、単一のソース記憶システムに含めることができ、あるいは多数のソース記憶システム１０４を用いソース記憶装置１１０ａ〜ｆを多数のソース記憶システム全体に分散させることもできる。各ソース記憶システム１０４は、例えば、マサチュセッツ州、ホプキントンのＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎ（ＥＭＣ社）から入手可能なディスク・アレイのＳＹＭＭＥＴＲＩＸラインからの記憶システムで構成することができる。
【０００４】
ソース記憶装置１１０ａ〜ｆに格納されているデータは、ホストＣＰＵ１０２の動作にとって重大な場合がある。したがって、ソース記憶装置１１０ａ〜ｆのいずれかに問題が生じた場合に、それに格納されているデータが失われないことを保証し、ソース記憶装置１１０ａ〜ｆに伴う問題によってホストＣＰＵ１０２が停止する危険性を極力抑えるためには、偶発事故対策が望ましい。ソース記憶装置１１０ａ〜ｆに伴って潜在的に起こり得る問題には、例えば、格納されているデータの復元を不可能にし得る、ハードウエアまたはソフトウエアのエラーが含まれるであろう。加えて、地震またはその他の自然災害のような破局的な出来事も、１つ以上のソース記憶装置１１０ａ〜ｆの破壊に至る可能性がある。
【０００５】
ソース記憶装置１１０ａ〜ｆに格納されているデータを保護する方策の１つは、データを対応する１組の「ターゲット」記憶装置にミラーすることである。図１のデータ・ミラーリング・システム１００は、かかるシステムの一例であり、ソース記憶システム１０４が（リンク１１２ａ〜ｆを介して）ターゲット記憶システム１０６に結合されている。ターゲット記憶システム１０６は、ソース記憶システム１０４内のソース記憶装置１１０ａ〜ｆにそれぞれ対応する、複数のターゲット記憶装置１１６ａ〜ｆを含む。データがソース記憶装置１１０ａ〜ｆのいずれかに書き込まれると、これはターゲット記憶システム１０６内のターゲット記憶装置１１６ａ〜ｆの対応する１つにも書き込まれる。ソース記憶装置１１０ａ〜ｆの１つが破壊されたり、あるいは格納されているデータを復元不可能にするエラーが生じた場合、ターゲット記憶装置１１６ａ〜ｆの対応する１つから、データを読み出すことができる。ターゲット記憶装置１１６ａ〜ｆは、図１に示すように、単一のターゲット記憶システム１０６に含ませることができ、あるいは複数のターゲット記憶システム１０６を用いターゲット記憶装置１１６ａ〜ｆを多数のターゲット記憶システム１０６全体に分散することもできる。ソース記憶システム１０４の場合と同様、ターゲット記憶システム１０６の各々は、例えば、マサチュセッツ州、ホプキントンのＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なディスク・アレイのＳＹＭＭＥＴＲＩＸラインからの記憶システムとすることができる。
【０００６】
ソースおよびターゲット記憶システム１０４および１０６の各々を、ＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能な１つ以上のディスク・アレイのＳＹＭＭＥＴＲＩＸラインを用いて実現する場合、ＳＹＭＭＥＴＲＩＸ  Ｒｅｍｏｔｅ  Ｄａｔａ  Ｆａｃｉｌｉｔｙ（ＳＲＤＦ：ＳＹＭＭＥＴＲＩＸ遠隔データ設備）と呼ばれる機能を用いて、それらの間の接続を実施することができる。ＳＲＤＦは、ＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能な多数の刊行物に記載されており、ＳＹＭＭＥＴＲＩＸ  Ｒｅｍｏｔｅ  Ｄａｔａ  Ｆａｃｉｌｉｔｙ  Ｐｒｏｄｕｃｔ  Ｍａｎｕａｌ，Ｐ／Ｎ２００−９９９−５５４，ｒｅｖ．Ｂ．Ｊｕｎｅ  １９９５が含まれる。また、ＳＲＤＦは米国特許第５，５４４，３４７号（Ｙａｎａｉ（ヤナイ））にも記載されている。
【０００７】
図１に例示するデータ・ミラーリング・システム１００では、ソース記憶システム１０４内の第１、第２、および第３組のソース記憶装置１１０ａ〜ｂ、１１０ｃ〜ｄ、および１１０ｅ〜ｆが、それぞれ、ターゲット記憶システム１０６内の対応する第１、第２、および第３組のターゲット記憶装置１１６ａ〜ｂ、１１６ｃ〜ｄ、および１１６ｅ〜ｆと（それぞれ、リンク１１２ａ〜ｂ、１１２ｃ〜ｄ、および１１２ｅ〜ｆを介して）通信する。リンク１１２のことを、ここでは、「ミラーリング・リンク」と呼び、更に、ターゲット記憶装置１１６ａ〜ｆがソース記憶装置１１０ａ〜ｆによって格納されたデータをミラー可能にするミラーリング・リンク１１２を介したソースおよびターゲット記憶システム１０４および１０６間の通信に言及する際、ここでは、「ミラーリング通信」という用語を用いることにする。図１に示すように、ソース記憶装置１１０ａ〜ｂ、ミラーリング・リンク１１２ａ〜ｂ、およびターゲット記憶装置１１６ａ〜ｂは第１ミラーリング・グループ１０８ａを構成し、ソース記憶装置１１０ｃ〜ｄ、ミラーリング・リンク１１２ｃ〜ｄ、およびターゲット記憶装置１１６ｃ〜ｄは第２ミラーリング・グループ１０８ｂを構成し、ならびにソース記憶装置１１０ｅ〜ｆ、ミラーリング・リンク１１２ｅ〜ｆ、およびターゲット記憶装置１１６ｅ〜ｆは第３ミラーリング・グループ１０８ｃを構成する。「ミラーリング・グループ」とは、ソースおよびターゲット記憶装置１０４および１０６内の記憶装置群であり、これらの間を、共通の１組のミラーリング・リンク１１２を介してデータを転送することができる。一般に、記憶装置１１０および１１６は、他のミラーリング・グループ１０８内の記憶装置１１０および１１６とは、いずれのミラーリング・リンク１１２も共有しない。
【０００８】
ソース記憶システム１０４に対して書き込み動作を行なうためには、ホストＣＰＵ１０２が「Ｉ／Ｏコマンド・チェーン」をソース記憶システム１０４に送信する。各Ｉ／Ｏコマンド・チェーンは、ソース記憶システム１０４によって格納されている特定の論理ボリュームに宛てた、１つ以上のコマンドを含むことができる。論理ボリュームとは、ホストＣＰＵ１０２が認知して単一の物理的記憶装置に対応づける情報単位のことであり、ソース記憶システム１０４内において、１つ以上のソース記憶装置１１０上の物理的記憶空間にマップすることができる。書き込み動作に対するＩ／Ｏコマンド・チェーン（「書き込み要求コマンド・チェーン」）は、当該Ｉ／Ｏコマンド・チェーンを受信するソース記憶システム１０４に対する種々の命令、および動作の間に書き込まれるデータを含む。ホストＣＰＵ１０２は、通常、それが送った書き込み要求コマンド・チェーンに応答してソース記憶システム１０４から返送される１つのメッセージのみを受信する。このメッセージは、通常、（１）Ｉ／Ｏコマンド・チェーンがソース記憶システム１０４によってコミットされた（即ち、適正に処理された）こと、または（２）エラーが発生して、Ｉ／Ｏコマンド・チェーンがソース記憶システム１０４によってコミットされるのが妨げられたことのいずれかを示す。典型的に、ソース記憶システム１０４は、１つ以上のソース記憶装置１１０、またはソース記憶システム１０４内の一時的記憶空間（キャッシュのような）に適正にデータが書き込まれなければ、そして適正に書き込まれるまで、ホストＣＰＵ１０２に「Ｉ／Ｏコマンド・チェーン・コミット」メッセージを返さない。
【０００９】
ターゲット記憶システム１０６にデータをミラーリングする目的の１つは、ソース記憶システム１０４上のデータが復元不可能となった場合に、ターゲット記憶システム１０６からデータを読み出せるようにすることである。したがって、ターゲット記憶システム１０６内に格納されているデータは、内部的に一貫性があり、いずれの特定の時点においても、ソース記憶システム１０４に格納されているデータの正確なミラーを反映することを保証するというのが望ましい。ターゲット記憶システム１０６内のデータが、所与の時点に対して、ソース記憶システム１０４内のデータの正確なミラーを表さない場合、ターゲット記憶システム１０６内のデータをソース記憶システム１０４にロードし直して、ソース記憶システム１０４を有効な状態に戻すことはできない。例えば、ソース記憶システム１０４に格納されており、ターゲット記憶システム１０６上にミラーされているデータがデータベースに含まれているが、ターゲット記憶システム１０６に格納されている情報が所与の時点におけるデータベースの正確な絵図（ｐｉｃｔｕｒｅ）を反映していない場合、エラーが発見されて、ソース記憶システム１０４からデータベースを復元することが妨げられると、ターゲット記憶システム１０６は、データベースを復元するためには用いられない。何故なら、それによって格納されているデータは、いずれの特定の時点においても、データベースの状態の正確な反映ではないからである。
【００１０】
図１に示すデータ・ミラーリング・システム１００のようなデータ・ミラーリング・システムにおいて、ミラー・リンク１１２ａ〜ｆに伴う誤動作のために、ソースおよびターゲット記憶システム１０４および１０６間のミラーリング通信の損失がミラーリング・グループ１０８ａ〜ｃの１つに発生すると、ある状況下ではデータの一貫性に問題を生ずる可能性があることを、本出願人は発見した。例えば、ミラーリング・グループ１０８ａに対するミラーリング・リンク１１２ａ〜ｂの全てが誤動作を起こし、ミラーリング・リンク１１２ａ〜ｂ上でのミラーリング通信が不可能となったことによって、ソース記憶装置１１０ａ〜１１０ｂに対する更新をターゲット記憶装置１１６ａ〜ｂに転送できなくなったと仮定する。更に、ミラーリング・グループ１０８ｂおよび１０８ｃに対するミラーリング・リンク１１２ｃ〜ｄおよび１１２ｅ〜ｆ上ではそれぞれミラーリング動作が正常に継続し、ソース記憶装置１１０ｃ〜ｆに対する更新がターゲット記憶装置１１６ｃ〜ｆに転送され続けると仮定する。これらの状況の下で、ターゲット記憶装置１１６ａ〜ｂのいずれかに格納されているデータを、ターゲット記憶装置１１６ｃ〜ｆのいずれかに格納されているデータに論理的に関係付けると（例えば、これらが同じデータベースの部分を格納する場合）、ターゲット記憶システム１０６内に格納されているデータは、いずれの特定の時点においても、ソース記憶システム１０４内に格納されているデータの有効な状態を表さないことになる。したがって、前述の状況においてソース記憶システム１０４が故障した場合、ターゲット記憶システム１０６上のデータは、いずれの特定の時点においても、ソース記憶システム１０４を有効な状態に戻すためには用いることができない。
【００１１】
前述の問題は、以下の例示的な状況を参考にすればよりよく理解することができよう。即ち、ホストＣＰＵ１０２が「従属」データ単位をそれぞれのソース記憶装置１１０に書き込む際、この従属データ単位を書き込んでいるソース記憶装置１１０の１つのみに対してミラーリング通信が不可能となっている状況である。第２データ単位が第１データ単位の関数である場合、第２データ単位は第１データ単位に従属するので、第１データ単位を変更した場合、第１データ単位の現在の値を正確に反映するとすれば、第２データ単位も変更しなければならない。例えば、第１、第２および第３データ単位がそれぞれ値「Ａ」、「Ｂ」および「Ａ＋Ｂ」を表す場合、第３データ単位は第１および第２データ単位に従属し、一方、第１および第２データ単位は互いに従属しない。
【００１２】
この単純な従属データ単位の例を用いると、ミラーリング・リンク１１２ａ〜ｂ上ではミラーリング通信が不可能であるが、ミラーリング・リンク１１２ｃ〜ｆ上では可能であるという前述の状況において、ホストＣＰＵ１０２が最初に第１データ単位（即ち、値「Ａ」）をミラーリング・グループ１０８ａ（「動作不能なミラーリング・グループ」）内のソース記憶装置１１０ａに書き込み、続いて第３データ単位（即ち、値「Ａ＋Ｂ」）をミラーリング・グループ１０８ｂ（「動作可能なミラーリング・グループ」）内のソース記憶装置１１０ｃに書き込む場合、第１および第３データ単位をソース記憶システム１０４に書き込むが、（第１データ単位ではなく）第３データ単位だけがターゲット記憶システム１０６に書き込まれる。その結果、ターゲット記憶システム１０６は、「Ａ＋Ｂ」の更新された値を格納するが、「Ａ」の更新された値は格納しない。この不一貫性は、ターゲット記憶システム１０６からデータを復元することが必要となった場合、問題を生ずる可能性がある。
【００１３】
前述のデータ一貫性欠如の問題を避けるために従来用いられていた技法の１つは、ソース記憶装置１１０ａ〜ｆが、そのミラーリング・リンク１１２を横断するミラーリング通信に加わることができないミラーリング・グループ１０８のメンバである場合、ソース記憶システム１０４が、ホストＣＰＵ１０２からソース記憶装置１１０ａ〜ｆへのあらゆる書き込み要求コマンド・チェーンをコミットするのを禁止することであった。この技法を用いると、動作不能なミラーリング・グループ１０８内のソース記憶装置１１０に宛てられた各書き込み要求コマンド・チェーンは、ソース記憶システム１０４によってコミットされないので、Ｉ／Ｏコマンド・チェーンを送信するホストＣＰＵ１０２は、書き込み動作の実行を反復する（が失敗に終わる）。
【００１４】
尚、ホストＣＰＵ１０２上で実行するアプリケーション・プログラムは、典型的に、前の命令が完了するまで、前の命令によって更新されるデータ単位に従属する命令の実行を開始しないことは認められよう。このため、前の命令を実行  するＩ／Ｏコマンド・チェーンはソース記憶システム１０４によってコミットされることが必要となる。したがって、ミラーリング通信が不能となっているソース記憶装置１１０ａ〜ｆに宛てられた書き込み要求コマンド・チェーンをコミットするのを禁止することによって、これらの書き込み要求コマンド・クレームによって書き込まれるデータに従属する後の命令が実行されないことを保証し、こうして前述のデータ一貫性欠如の問題を回避する。この点において、ターゲット記憶システム１０６に格納されているデータは、ミラーリング・グループが動作不能になった時点において、ソース記憶システム１０４に格納されているデータの有効なミラーとなる。
【００１５】
尚、前述の技法はデータの一貫性欠如という問題を回避するが、これは、動作不能のミラーリング・グループ内にあるソース記憶装置１１０に宛てられたＩ／Ｏコマンド・チェーンを完了するのを禁止することによるものであることは認められよう。その結果、Ｉ／Ｏコマンド・チェーンを開始したＣＰＵ１０２は、コマンド・チェーンの実行を反復し（しかし、失敗する）、最終的にアプリケーションまたはこのコマンド・チェーンを含むその他のプログラムのクラッシュに至る。
【発明の開示】
【００１６】
本発明の一態様によれば、データ・ミラーリング・システムにおける使用方法は、第１ソース記憶装置から第１ターゲット記憶装置へのミラーリング通信が不能となった場合、第２ソース記憶装置から第２ターゲット記憶装置へのミラーリング通信を不能にすることを含む。
【００１７】
本発明の別の態様によれば、データ・ミラーリング・システムにおいて用いるソース記憶システムは、少なくとも１つのホストに結合された少なくとも第１および第２ソース記憶装置であって、少なくとも１つのホストが当該第１および第２ソース記憶装置に対して書き込み動作を実行可能とし、更に少なくとも１つの第１および第２ターゲット記憶装置にそれぞれ結合され、当該少なくとも第１および第２ソース記憶装置から少なくとも第１および第２ターゲット記憶装置へのミラーリング通信を可能にする、少なくとも第１および第２ソース記憶装置と、第１ソース記憶装置から第１ターゲット記憶装置へのミラーリング通信が不能となったことに応答して、第２ソース記憶装置から第２ターゲット記憶装置へのミラーリング通信を不能とする、少なくとも１つのコントローラとを含む。
【００１８】
本発明の別の態様によれば、少なくとも１つのコンピュータ読み取り可能媒体は、少なくとも１つのプロセッサによって実行されたときに、第１ソース記憶装置から第１ターゲット記憶装置へのミラーリング通信が不能となった場合、第２ソース記憶装置から第２ターゲット記憶装置へのミラーリング通信を不能にするステップを含む方法を少なくとも１つのプロセッサに実行させる、複数の命令を格納する。
【００１９】
本発明の別の態様によれば、データ・ミラーリング・システムにおける使用方法は、少なくとも１つのホストが、第１ソース記憶装置から第１ターゲット記憶装置へのミラーリング通信が不能であるという指示を受信したことに応答して、少なくとも１つのソース記憶システムに、第２ソース記憶装置から第２ターゲット記憶装置へのミラーリング通信を不能にするように命令することを含む。
【００２０】
本発明の別の態様によれば、少なくとも１つのコンピュータ読み取り可能媒体は、少なくとも１つのプロセッサによって実行されたときに、少なくとも１つのホストが、第１ソース記憶装置から第１ターゲット記憶装置へのミラーリング通信が不能であるという指示を受信したことに応答して、少なくとも１つのソース記憶システムに、第２ソース記憶装置から第２ターゲット記憶装置へのミラーリング通信を不能にするように命令するステップを含む方法を少なくとも１つのプロセッサに実行させる、複数の命令を格納する。
【００２１】
別の態様によれば、データ・ミラーリング・システムにおいて用いるホストは、少なくとも第１および第２ソース記憶装置に結合され、少なくとも第１および第２ソース記憶装置に対して書き込み動作を実行する少なくとも１つのコントローラを含む。この少なくとも１つのコントローラは、第１ソース記憶装置から第１ターゲット記憶装置へのミラーリング通信が不能であるという指示を受信したことに応答して、少なくとも第１および第２ソース記憶装置が含まれる少なくとも１つのソース記憶システムに、第２ソース記憶装置から第２ターゲット記憶装置へのミラーリング通信を不能にすることを命令するように構成されている。
【００２２】
本発明の別の態様によれば、データ・ミラーリング・システムにおける使用方法は、データ・ミラーリング・システムに、複数のターゲット記憶装置の少なくとも１つの対応するサブセット上に、一貫性のあるデータ表現を維持することが望ましい、複数のミラー・ソース記憶装置の少なくとも１つのサブセットを識別する情報を格納することを含む。
【００２３】
本発明の別の態様によれば、データ・ミラーリング・システムにおいて用いるホストは、少なくとも１つのメモリと、少なくとも１つのメモリに、複数のターゲット記憶装置の少なくとも１つの対応するサブセット上に、一貫性のあるデータ表現を維持することが望ましい、複数のミラー・ソース記憶装置の少なくとも１つのサブセットを識別する情報を格納する、少なくとも１つのコントローラとを備える。
【００２４】
本発明の別の態様によれば、データ・ミラーリング・システムにおいて用いるソース記憶システムは、少なくとも１つのメモリと、少なくとも１つのメモリに、複数のターゲット記憶装置の少なくとも１つの対応するサブセット上に、一貫性のあるデータ表現を維持することが望ましい、複数のミラー・ソース記憶装置の少なくとも１つのサブセットを識別する情報を格納する、少なくとも１つのコントローラとを備える。
【００２５】
本発明の別の態様によれば、データ・ミラーリング・システムにおける使用方法は、複数のミラー・ソース記憶装置の少なくとも１つを、第１状態、第２状態、および第３状態の１つに置くことから成る。複数のミラー・ソース記憶装置の少なくとも１つが第１状態にあるときに、複数のミラー・ソース記憶装置の少なくとも１つに宛てられた書き込み要求コマンド・チェーンをソース記憶システムが受信したことに応答して、コマンド・チェーンをコミットすることを許可し、コマンド・チェーンによって書き込まれたデータを複数のターゲット記憶装置の対応する１つに転送する。複数のミラー・ソース記憶装置の少なくとも１つが第２状態にあるときに、複数のミラー・ソース記憶装置の少なくとも１つに宛てられた書き込み要求コマンド・チェーンをソース記憶システムが受信したことに応答して、コマンド・チェーンをコミットすることを禁止する。複数のミラー・ソース記憶装置の少なくとも１つが第３状態にあるときに、複数のミラー・ソース記憶装置の少なくとも１つに宛てられた書き込み要求コマンド・チェーンをソース記憶システムが受信したことに応答して、コマンド・チェーンによって書き込まれたデータを複数のターゲット記憶装置の対応する１つに転送することなく、コマンド・チェーンをコミットすることを許可する。
【００２６】
本発明の更に別の態様によれば、データ・ミラーリング・システムにおいて用いるソース記憶システムは、少なくとも１つのホストに結合され、複数のミラー・ソース記憶装置に対して書き込み動作を少なくとも１つのホストに実行させ、更に複数のターゲット記憶システムに結合され、複数のミラー・ソース記憶装置の各々から複数のターゲット記憶装置の対応する１つへのミラーリング通信を可能とする複数のミラー・ソース記憶装置と、複数のミラー・ソース記憶装置の少なくとも１つを、第１状態、第２状態、および第３状態の１つに置く少なくとも１つのコントローラとを備える。複数のミラー・ソース記憶装置の少なくとも１つが第１状態にあるときに、複数のミラー・ソース記憶装置の少なくとも１つに宛てられた書き込み要求コマンド・チェーンをソース記憶システムが受信したことに応答して、コントローラは、コマンド・チェーンをコミットすることを許可し、コマンド・チェーンによって書き込まれたデータを複数のターゲット記憶装置の対応する１つに転送し、複数のミラー・ソース記憶装置の少なくとも１つが第２状態にあるときに、複数のミラー・ソース記憶装置の少なくとも１つに宛てられた書き込み要求コマンド・チェーンをソース記憶システムが受信したことに応答して、少なくとも１つのコントローラは、コマンド・チェーンをコミットすることを禁止し、複数のミラー・ソース記憶装置の少なくとも１つが第３状態にあるときに、複数のミラー・ソース記憶装置の少なくとも１つに宛てられた書き込み要求コマンド・チェーンをソース記憶システムが受信したことに応答して、少なくとも１つのコントローラは、コマンド・チェーンによって書き込まれたデータを複数のターゲット記憶装置の対応する１つに転送することなく、コマンド・チェーンをコミットすることを許可する。
【００２７】
本発明の別の態様によれば、少なくとも１つのコンピュータ読み取り可能媒体は、少なくとも１つのプロセッサによって実行されたときに、（Ａ）複数のミラー・ソース記憶装置の少なくとも１つを、第１状態、第２状態、および第３状態の１つに置くステップと、（Ｂ１）複数のミラー・ソース記憶装置の少なくとも１つが第１状態にあるときに、複数のミラー・ソース記憶装置の少なくとも１つに宛てられた書き込み要求コマンド・チェーンをソース記憶システムが受信したことに応答して、コマンド・チェーンをコミットすることを許可し、コマンド・チェーンによって書き込まれたデータを複数のターゲット記憶装置の対応する１つに転送するステップと、（Ｂ２）複数のミラー・ソース記憶装置の少なくとも１つが第２状態にあるときに、複数のミラー・ソース記憶装置の少なくとも１つに宛てられた書き込み要求コマンド・チェーンをソース記憶システムが受信したことに応答して、コマンド・チェーンをコミットすることを禁止するステップと、（Ｂ３）複数のミラー・ソース記憶装置の少なくとも１つが第３状態にあるときに、複数のミラー・ソース記憶装置の少なくとも１つに宛てられた書き込み要求コマンド・チェーンをソース記憶システムが受信したことに応答して、コマンド・チェーンによって書き込まれたデータを複数のターゲット記憶装置の対応する１つに転送することなく、コマンド・チェーンをコミットすることを許可するステップとを含む方法を少なくとも１つのプロセッサに実行させる、複数の命令を格納する。
（発明の詳細な説明）
本発明の一態様によれば、図１のデータ・ミラーリング・システムのようなデータ・ミラーリング・システムにおいて、ソース記憶装置１１０に対するミラーリング通信が失われた場合に、ターゲット記憶システム１０６上で一貫性のあるデータ・セットを維持し、しかもホストＣＰＵ１０２上のソフトウエア・プロセス（例えば、アプリケーション・プログラム）がクラッシュしないことを保証する手段が講じられる。
【００２８】
尚、ミラーリング通信の喪失から発生する可能性がある前述のデータの一貫性欠如の問題は、ミラーリング・リンク１１２ａ〜ｆがミラーリング・グループ１０８ａ〜ｃの一部に対して動作するが、その全てに対して動作しないという事実に帰することができる。本発明の例示の実施の形態によれば、特定のミラーリング・グループ１０８に対するミラーリング・リンク１１２ａ〜ｆの全てが動作不能となったと判定された（即ち、ミラーリング・グループ１０８におけるソース記憶装置１１０およびターゲット記憶装置１１６間のミラーリング通信には、もはや対応しない）場合、他のミラーリング・グループ１０８に対するミラーリング・リンク１１２ａ〜ｆ上でのミラーリング通信も不能にすることができる。これは、これらその他のミラーリング・グループ１０８に関連するミラーリング・リンク１１２ａ〜ｆを「論理的に破壊すること」と見なすことができる。つまり、ミラーリング・リンク１１２ａ〜ｆの全てを同時に（例えば、特定のミラーリング・グループ１０８に対してミラーリング・リンク１１２ａ〜ｆが物理的に動作不能になったとき）破壊することによって、ターゲット記憶装置１１６ａ〜ｆのいずれに対しても、それ以上更新を行なうのを禁止するということが認められよう。したがって、ミラーリング・リンク１１０ａ〜ｆの全てが破壊された後に、ターゲット記憶システム１０６は、ある特定の時点（即ち、ミラーリング・グループ１０８の１つに対するミラーリング通信が動作不能となった時点）に、ソース記憶システム１０４に格納されているデータの正確なミラーを表すデータ・セットを格納する。
【００２９】
残りのミラーリング・リンク１１２ａ〜ｆを論理的に破壊すると、ターゲット記憶システム１０６のミラーリング機能が失われる結果となるが、ミラーリング・リンク１１２ａ〜ｆの全てが論理的に破壊された後には、ソース記憶システム１０４は、動作不能となったミラーリング・グループ１０８に含まれるソース記憶装置１１０に宛てられた書き込み要求コマンド・チェーンを再びコミットすることができ、ホストＣＰＵ１０２上で実行しているアプリケーション・プログラムは、動作し続けることができ、かかる書き込み動作の実行を反復する（が、失敗に終わる）ことの結果としてクラッシュすることもないことが認められよう。一方、ミラーリング・グループ１０８の１つに対するミラーリング通信の喪失に至った、ミラー・リンク１１２に発生した問題に取り組むことができる。一旦訂正すれば、ミラーリング・リンク１１２ａ〜ｆの全てを復元することができ、これによってターゲット記憶システム１０６が提供するミラーリング能力をオンラインで戻すことが可能となる。
【００３０】
尚、特定のミラーリング・グループ１０８に対してミラーリング・リンク１１２が失われたときにはいつでもミラーリング・リンク１１２ａ〜ｆの全てを論理的に破壊することにより、ターゲット記憶システム１０６上のデータに対する前述のデータ一貫性問題を防止するという結果が得られることが認められよう。これは、本発明の一つの実施の形態によれば、以下に論ずるようにして達成することができる。しかしながら、本出願人は、前述のデータ一貫性という目標を達成するために、必ずしもミラーリング・リンク１１２ａ〜ｆの全てを論理的に破壊しなくてもよい場合もあることも認識している。この点に関して、ターゲット記憶システム１０６は多数の論理的に無関係なデータ・セット、例えば、多数の無関係のデータベースを含む場合もあることが認められよう。このような論理的に無関係なデータ・セットに対しては、それらの間で一貫性を維持することは不要である。したがって、特定のデータベースを格納するターゲット記憶装置１１６を含むミラーリング・グループ１０８に関連するミラーリング・リンク１１２ａ〜ｆの喪失が発生した場合、無関係のデータを格納しているターゲット記憶装置１１６のみを含むその他のミラーリング・グループ１０８に関連するミラーリング・リンク１１２を論理的に破壊する必要はない。したがって、本発明の別の例示の実施の形態によれば、ミラーリング通信が失われたミラーリング・グループ１０８に関連するターゲット記憶装置１１６に格納されているデータに論理的に関係があるデータを格納しているターゲット記憶装置１１６を含むミラーリング・グループ１０８についてのみ、ミラーリング・リンク１１２ａ〜ｆを論理的に破壊する。このようにすれば、ターゲット記憶システム１０６のミラーリング機能に対する影響は最少に抑えられる。
【００３１】
同様に、特定のミラーリング・グループ１０８ａ〜ｃ内の全てのターゲット記憶装置１１６ａ〜ｆが論理的に関係のあるデータを格納しているとは限らないことも認められよう。したがって、本発明の別の例示の実施の形態では、ミラーリング・グループ１０８内部のミラーリング・リンク１１２は、当該ミラーリング・リンク１１２が対応する一部のソース記憶装置１１０およびターゲット記憶装置１１６間のみのミラーリング通信を不能にするように、論理的に破壊することもできる。例えば、ターゲット記憶装置１１６ａ〜ｃの全てが共通のデータベースのデータを格納しており、ミラーリング・グループ１０８ａに対するミラーリング・リンク１１２ａ〜ｂが動作不能となった場合、ミラーリング・グループ１０８ｂに対するミラーリング・リンク１１２ｃ〜ｄを論理的に破壊して、ソース記憶装置１１０ｃよびターゲット記憶装置１１６ｃ間のミラーリング通信を不能とし、当該データベースに対するターゲット記憶システム１０６内のデータの一貫性を維持しつつ、ソース記憶装置１１０ｄおよびターゲット記憶装置１１６ｄ間のミラーリング通信を不能にはしないということも可能である。したがって、ソースおよびターゲット記憶装置１１０ｄおよび１１６ｄが、ソースおよびターゲット記憶装置１１０ａ〜ｃおよび１１６ａ〜ｃによって格納されているデータベースとは無関係なデータを格納している場合、ミラーリング・グループ１０８ｂのミラーリング・リンク１１２ｃ〜ｄ上のミラーリング通信は、ソース記憶装置１１０ｄおよびターゲット記憶装置１１６ｄ間では可能のままにしておくことによって、ターゲット記憶システム１０６のミラーリング機能に対する影響を最少に抑えることができる。
【００３２】
本発明の前述の実施の形態は多数の方法で実現可能であり、本発明はいずれかの特定の実施態様に限定される訳ではない。装置毎にミラーリング・リンク１１２ａ〜ｄを介するミラーリング通信を選択的に不能にするという本発明の前述の特定の実施の形態によれば、例えば、ソース記憶装置１１０ａ〜ｆは１つ以上の言わば「一貫性グループ」（ｃｏｎｓｉｓｔｅｎｃｙ  ｇｒｏｕｐ）に分類され得る。この文脈における一貫性グループとは、内部に格納されているデータおよび対応するターゲット記憶装置１１６に格納されているデータの一貫性を維持することを保証するための処置を講じたソース記憶装置群１１０のことである。例えば、ソース記憶装置１１０ａおよび１１０ｃが従属データ単位を格納している場合、同じ一貫性グループ内にソース記憶装置１１０ａおよび１１０ｃを含ませ、前述のようなデータ一貫性問題を防止する処置を講ずることができるようにすることが望ましい。
【００３３】
一貫性グループは、多くの方法のいずれでも実現可能であり、本発明はいずれかの特定の実施態様に限定される訳ではない。一つの実施の形態では、例えば、ソース記憶システム１０４は、各ソース記憶装置１１０が一貫性グループのメンバであるか否かのみを識別する情報を格納し、各一貫性グループ内において個々のソース記憶装置１１０を識別する情報は、ホストＣＰＵ１０２によってのみ維持される。しかしながら、かかる一貫性グループ情報は、多数の他の方法で格納することも可能であり、本発明は、殆どの一貫性グループ情報をホストＣＰＵ１０２によって維持する実施の形態に限定される訳ではない。例えば、全ての関連がある一貫性グループ情報は、代わりに、ソースおよび／ターゲット記憶システム１０４および１０６に関連するメモリに格納することも可能である。
【００３４】
本発明の一つの実施の形態では、ホストＣＰＵ１０２（図１）が書き込み要求コマンド・チェーンをソース記憶装置１１０ａ〜ｆの１つ（「宛先」記憶装置）に発行する場合、宛先記憶装置１１０のミラーリング・グループ１０８内におけるミラーリング・リンク１１２の少なくとも１つが動作状態にあるなら（即ち、宛先記憶装置１１０に対するミラーリング通信が可能であれば）、ソース記憶システム１０４は、書き込むべきデータがソース記憶システム１０４およびターゲット記憶システム１０６双方に転送された後に、Ｉ／Ｏコマンド・チェーンをコミットする。ミラーリング・グループ１０８に対するミラーリング・リンク１１２が不動作状態となったとき（即ち、宛先記憶装置１１０に対するミラーリング通信が不能となった場合）、これは、ホストＣＰＵ１０２がミラーリング・グループ１０８内のあるソース記憶装置１１０に書き込みを行なおうとした際に検出される。即ち、ホストＣＰＵ１０２が書き込み要求コマンド・チェーンを、ミラーリング通信が不能な宛先記憶装置１１０に発行した場合、当該宛先記憶装置１１０を含むソース記憶システム１０４は、宛先記憶装置１１０に宛てられた書き込み要求コマンド・チェーンをコミットするのを一時的に禁止する。
【００３５】
宛先記憶装置１１０に宛てられた書き込み要求コマンド・チェーンをコミットするのを一時的に禁止している期間では、宛先記憶装置１１０と同じ一貫性グループに含まれるその他のソース記憶装置１１０ａ〜ｆの全てに対して、関連するミラーリング・リンク１１２を横切って通信するのを禁止する（即ち、これらのソース記憶装置１１０に対するミラーリング通信を不能とする）措置が取られる。この関連するソース記憶装置１１０に対してミラーリング通信を不能にするには、多数の方法が可能であり、本発明はいずれかの特定の実施態様に限定される訳ではない。例えば、ソース記憶装置１１０に関連するメモリにフラグを格納し、あるソース記憶装置１１０はミラーリング・リンク１１２を介してデータを転送してはならないことを示してもよい。あるいは、関連するミラーリング・リンク１１２を物理的に破壊してもよい。しかしながら、単一のミラーリング・グループ１０８が数個の一貫性グループからのソース記憶装置１１０を含む場合もあるので、前述のように、装置毎にミラーリング・リンク１１２を介するミラーリング通信を不能とすることにより、関連する一貫性グループには含まれないソース記憶装置１１０に対するミラーリング・リンク１１２を介した情報転送を継続できるようにすることが望ましい。
【００３６】
ミラーリング・リンク１１２を介するミラーリング通信を、宛先記憶装置１１０と同じ一貫性グループに含まれるソース記憶装置１１０の各々に対して不能にした後、宛先記憶装置１１０に含まれるソース記憶システム１０４は、再度、宛先記憶装置１１０に宛てられた書き込み要求コマンド・チェーンをコミットすることを許可される。宛先記憶装置の一貫性グループ内にある全てのソース記憶装置１１０に対してミラーリング通信を不能にしてあるので、この一貫性グループ内のターゲット記憶装置１１６ａ〜ｆは、当該一貫性グループに対してミラーリング通信を不能にするよりも前にソース記憶システム１０４によって格納されたデータの「スナップショット」を表すデータ・セットを格納する。本発明のこの実施の形態によれば、ソース記憶システム１０４は、動作不能にしたミラーリング・グループ１０８に含まれるソース記憶装置１１０に宛てられた書き込み要求コマンド・チェーンをコミットするのを一時的に禁止するだけであるので、ホストＣＰＵ（複数のホストＣＰＵ）１０２上で走っているアプリケーション・ソフトウエアをクラッシュさせることなく、前述のようなデータ一貫性の問題を回避することができる。
【００３７】
本出願人は、ミラーリング・グループ１０８に対するミラーリング通信が失われたことに応答して、多数のソースおよびターゲット記憶装置１１０および１１６に対するミラーリング・リンク１１２を介するミラーリング通信を不能にする場合、異なる時点においてこれら多数のソース記憶装置１１０の異なるそれぞれに対するミラーリング通信を不能にすること自体が、前述と同様のデータ一貫性問題を引き起こす可能性があることを認識した。例えば、図１のソース記憶装置１１０ａ、１１０ｃおよび１１０ｅが全て同じ一貫性グループに含まれ、記憶装置１１０ａに書き込もうとしたとき、ソース記憶装置１１０ａに対するミラーリング通信が失われていたことを検出したことに応答して、ソース記憶装置１１０ｃおよび１１０ｅに対してミラーリング通信を不能にすると仮定する。ソース記憶システム１０４が、ソース記憶装置１１０ｃおよび１１０ｅ双方に対するミラーリング通信が不能にされたことを検証する前に、これらのいずれかに宛てられた書き込み要求コマンド・チェーンをコミットすることを許可されるとすると、ソース記憶装置１１０ｃおよび１１０ｅに対するミラーリング通信を不能にする相対的なタイミングによっては、ターゲット記憶システム１０６においてデータ一貫性問題の発生に至る可能性がある。例えば、ソース記憶装置１１０ｅの前に、ソース記憶装置１１０ｃに対するミラーリング通信を不能にした場合、ソース記憶装置１１０ｃに対するミラーリング通信を不能にした後にソース記憶装置１１０ｃに対して第１データ単位の書き込みを要求するＩ／Ｏコマンド・チェーンがソース記憶システム１０４によってコミットされ、次いでソース記憶装置１１０ｅに対するミラーリング通信が不能にされる前に、第１データ単位に応じて第２データ単位のソース記憶装置１１０ｅへの書き込みを要求するその後のＩ／Ｏコマンド・チェーンがソース記憶システム１０４によってコミットされ更にターゲット記憶システム１０６に転送されたとすると、データ一貫性問題が発生する。
【００３８】
この潜在的な問題に取り組むために、本発明の一つの実施の形態では、ミラーリング・リンク１１２のいずれかを介するミラーリング通信を、一貫性グループ内部のソース記憶装置１１０に対して不能にする場合、ソース記憶システム１０４は、当該一貫性グループ内の全てのソース記憶装置１１０に宛てた書き込み要求コマンド・チェーンをコミットするのを一時的に禁止する。関連する一貫性グループ内のソース記憶装置１１０の全てに対して、ミラーリング通信を不能にした後で初めて、これらのソース記憶装置１１０に宛てられた書き込み要求コマンド・チェーンをコミットすることが、ソース記憶システム１０４に再度許可される。このように、ホストＣＰＵ１０２がこれらのソース記憶装置１１０に適正に書き込むことができないのは、関連する一貫性グループ内のソース記憶装置１１０の全てに対してミラーリング通信が不能となっている期間だけに過ぎない。
【００３９】
あるソース記憶装置１１０に対するミラーリング通信を選択的に不能にする前述の技法は、多数の方法のいずれでも実現可能であり、本発明はいずれかの特定の実施態様に限定される訳ではない。これらの目的を達成するために用いることができる技法の代表例について、図２ないし図７に関連付けて以下に説明する。ここでは、各ソース記憶システム１０４に格納されている所定のフラグは、ソース記憶システム１０４がそのソース記憶装置１１０に宛てられているホストＣＰＵ１０２からの書き込み要求コマンド・チェーンにどのように応答すべきかを示す。しかしながら、以下で説明する技法やフラグ以外の技法および／または別のフラグを代わりに用いてもよく、本発明は、記載する特定の技法またはフラグには限定されないことは認められよう。
【００４０】
図２は、図１に示したようなデータ・ミラーリング・システムの代表例を示し、多数のソース記憶システム１０４ａ〜ｂおよび多数のターゲット記憶システム１０６ａ〜ｂを含む。図示の実施の形態では、ホストＣＰＵ１０２は、１対のホストＣＰＵ１０２ａ〜ｂを含む。図示のように、ホストＣＰＵ１０２ａおよび１０２ｂの各々は、ソース記憶システム１０４ａおよび１０４ｂの双方に（通信リンク１１４ａ〜ｄを介して）結合してもよく、更にソース記憶システム１０４ａおよび１０４ｂの各々はターゲット記憶システム１０６ａおよび１０６ｂの一方または双方に（ミラーリング・リンク１１２ａ〜ｆを介して）結合してもよい。図１のミラーリング・グループ１０８ａ〜ｃを図２のデータ・ミラーリング・システム上で実現する場合、ミラーリング・グループ１０８ａ（図１）は、ソース記憶システム１０４ａおよびターゲット記憶システム１０６ａによって支援され、ミラーリング・グループ１０８ｂ（図１）はソース記憶システム１０４ａおよびターゲット記憶システム１０６ｂによって支援され、ミラーリング・グループ１０８ｃ（図１）はソース記憶システム１０４ｂおよびターゲット記憶システム１０６ｂによって支援される。尚、図２は、多数のＣＰＵ１０２および多数の記憶システム１０４を、複数のミラーリング・グループに対応するようにするにはどのように組み合わせればよいかという一例を示すに過ぎず、多数の代替構成のいずれでも代わりに採用可能であることは認められよう。
【００４１】
図３は、図１のデータ・ミラーリング・システム１００において、ソース記憶システム１０４および／またはターゲット記憶システム１０６として用いることができるディスク・ドライブ記憶システムの代表例を示す。尚、図１のソース記憶システム１０４および／またはターゲット記憶システム１０６は、各々、図３に示すような単一の記憶システム、または一緒に動作する数個のかかる記憶システムを採用してもよいことは認められよう。また、本発明は、図３に示す形式の記憶システムを必ずしも採用しなくてもよく、多数の他の形式の記憶システム（例えば、テープ・ドライブ・システム）を代わりに採用してもよいことも認められよう。
【００４２】
図示のように、図３に例示する記憶システム１０４ｂは、ホスト・バス・コントローラ３０２、複数のディスク・コントローラ３０４ａ〜ｂ、および複数のディスク・ドライブ３１２ａ〜ｂを含む。図示の例では、ディスク・ドライブ３１２ａ〜ｂは、図１および図２のソース記憶装置１１０ｅ〜ｆに対応する。ホスト・バス・コントローラ３０２は、通信リンク１１４ｂおよび１１４ｄを介してホストＣＰＵ１０２ａ〜ｂ（図２）と通信する役割を担う。ディスク・コントローラ３０４ａ〜ｂの各々は、ディスク・ドライブ３１２ａ〜ｂのサブセットを制御する役割を担う。図３のシステム例では、ミラーリング・コントローラ３０８がディスク・ドライブ３１２ａ〜ｂに対するミラーリング通信を制御する。例えば、図２および図３のソース記憶システム１０４を実現するために記憶システム１０４ｂを用いる場合、ミラーリング・コントローラ３０８は、ミラーリング・グループ１０８ｃに対するミラーリング・リンク１１２ｅ〜ｆを介するミラーリング通信を制御することができる。尚、図１ないし図３に示すようなコンピュータ・システムでは、１つ以上のミラーリング・グループ１０８に対応する記憶システム１０４および１０６の各々は、この実現を容易にするために、それが対応する各ミラーリング・グループ１０８毎に別個のミラーリング・コントローラ３０８を含んでもよいことは認められよう。
【００４３】
図３の実施の形態では、コントローラ３０２、３０８および３０４ａ〜ｂは内部バス３１０を通じて通信する。また、グローバル・メモリ３０６ａおよびキャッシュ３０６ｂを含むメモリ・ユニット３０６もバス３１０に接続されている。グローバル・メモリ３０６ａは、ソース記憶システム１０４ｂの動作および制御を容易にする情報を格納する。キャッシュ３０６ｂは改善されたシステム特性を提供する。特に、ホストＣＰＵ１０２ａ〜ｂ（図２）の１つが記憶システム１０４ｂからの情報トラックの読み出しを実行するときに、この情報トラックが既にキャッシュ３０６ｂ内に格納されていれば、ソース記憶システム１０４ｂはディスク・ドライブ３１２ａ〜ｂの１つからではなく、キャッシュ３０６ｂから読み出しを行い、これによって読み出しを一層効率的に実行することが可能となる。同様に、ＣＰＵ１０２ａ〜ｂの１つがソース記憶システム１０４ｂに対する書き込みを実行するとき、ホスト・バス・コントローラ３０２は、典型的に、キャッシュ３０６ｂへの書き込みを実行し、データがキャッシュ３０６ｂに格納されたなら直ちにこの書き込みを要求するＩ／Ｏコマンド・チェーンをコミットさせる。その後、書き込みは、（ホストＣＰＵ１０２〜ｂに透過的な態様で）ディスク・ドライブ３１２ａ〜ｂの適切なドライブにデステージ（ｄｅｓｔａｇｅ）することができる。したがって、キャッシュは一時的記憶装置として見なすことができ、ディスク・ドライブ３１２ａ〜ｂの各々は、記憶システム１０４ｂ内部の永続的記憶装置として見なすことができる。
【００４４】
図３の実施の形態に関して、本発明の種々の実施の形態の機能性を実行するには、図示するよりも少ないまたは多いコントローラを使用可能なこと、および本発明はいずれの特定の形式または数のコントローラにも限定されないことは認められよう。異なる実施の形態では、例えば、図３のコントローラ３０２、３０８および３０４ａ〜ｂの全ての機能性は、単一のコントローラによって実現することもでき、また、コントローラ３０２、３０８および３０４ａ〜ｂのいずれか１つの機能性をコントローラ３０２、３０８および３０４ａ〜ｂの別の１つによって、または１つ以上の追加のコントローラ（図示せず）によって実現することも可能である。ここで用いるように、「コントローラ」という用語は、ハードウエア（例えば、１つ以上のプロセッサおよび／または専用回路構成要素）、ソフトウエアおよび／またはここで説明する制御機能の１つ以上を実行可能なファームウエアのあらゆる組み合わせを意味することとする。
【００４５】
図４Ａ〜Ｂおよび５は、ソース記憶システム１０４およびターゲット記憶システム１０６間のミラーリング通信が１つ以上のミラーリング・グループ１０８に対して不能となった場合に、ソース記憶システム１０４が、本発明の一つの実施の形態にしたがって、関連するターゲット記憶システム１０６がデータ一貫性エラーに遭遇しないことを保証できるようにするために、各ソース記憶システム１０４に格納することができるフラグの表４０２Ａ〜Ｂおよび５０４の一例を示す。ソース記憶システム１０４が図４および図５の情報を用いてこの成果を得ることができる方法の一例について、図６に関連付けながら以下で論ずる。
【００４６】
図４Ａ〜Ｂに示すように、ソース記憶システム１０４によってサービスされるミラーリング・グループ１０８毎に、各フラグ表４０２を格納することができる。各表４０２は、関連するミラーリング・グループ１０８に含まれるミラーリング・リンク１１２の各々の現ステータス（即ち、動作可能または動作不能）を反映する。図４Ａ〜Ｂの例では、２つのミラーリング・グループ（即ち、ミラーリング・グループ１０８ａおよび１０８ｂ）に対する表４０２を示す。これは、ソース記憶システム１０４に対して図４Ａ〜Ｂの情報が格納されており、ソース記憶システム１０４が２つの異なるミラーリング・グループ１０８にサービスすることを意味する。表４０２Ａ〜Ｂは、これらを用いるソース記憶システム１０４にアクセス可能な多数のロケーションのいずれにも格納することができ、本発明は、表４０２Ａ〜Ｂをいずれの特定のロケーションに格納することも必要としない。例示の一つの実施の形態では、例えば、表４０２Ａ〜Ｂは、図２のソース記憶システム１０４ａのグローバル・メモリ３０６ａに格納されている。
【００４７】
ミラーリング・リンク１１２がソース記憶装置１１０からターゲット記憶装置１１６に情報を転送することができない場合、ミラーリング・リンク１１２は所与のソース／ターゲット記憶装置対に対して「動作不能」となる。表４０２Ａ〜Ｂを採用した本発明の例示の実施の形態では、表４０２Ａ〜Ｂの「動作可能」および「動作不能」エントリは、ミラーリング・リンク１１２の物理的ステータス、即ち、リンク１１２が動作状態にあるかまたは物理的に故障しているかを示す。したがって、表４０２Ａ〜Ｂの１つの「動作不能」エントリは、対応するミラーリング・リンクが物理的に故障しているので、いずれの２つの記憶装置１１０、１１６間においても対応するミラーリング・リンク１１２を通じてデータ転送が不可能であることを示し、一方、「動作可能」エントリは、対応するミラーリング・リンク１１２が動作状態にあるので、関連するいずれのソース／ターゲット記憶装置対間でもミラーリング・リンク１１２を通じてデータ転送が可能であることを示す。
【００４８】
前述のように、各ミラーリング・グループ１０８には、別個のミラーリング・コントローラ３０８を関連付けることができる。各ミラーリング・コントローラ３０８は、それに関連するミラーリング・グループ１０８においてミラーリング・リンク１１２と直接通信するので、図示した例示の実施の形態の表４０２Ａ〜Ｂにおけるエントリは、各ミラーリング・グループ１０８に対してミラーリング・リンク１１２に関連するミラーリング・コントローラ３０８によってのみ更新することができる。しかしながら、本発明はこの点に限定されるものではない。何故なら、ミラーリング・リンク１１２のステータスに関する知識を有し、表４０２Ａ〜Ｂが格納されているメモリにアクセスすることができるあらゆる装置が、以下に論ずるように、表４０２を更新することができるからである。ミラーリング・コントローラ３０８に加えて、グローバル・メモリ３０６ａにアクセスすることができる他の装置（例えば、ソース記憶システム１０４のホスト・バス・コントローラ３０２（図３））も、以下に論ずる本発明の一つの実施の形態にしたがって、表４０２Ａ〜Ｂに格納されている情報を利用することができる。
【００４９】
図５は、各ソース記憶システム１０４に対して格納することができるフラグ５０４の別の表を示す。フラグ５０４は、ソース記憶システム１０４における記憶装置１１０毎に、（ａ）当該記憶装置が一貫性グループに含まれているか否か、および（ｂ）当該記憶装置の現「状態」を反映する。例えば、表５０４は、図２のソース記憶システム１０４ａのグローバル・メモリ３０６ａに格納することもできる。しかしながら、本発明はこの点に限定されるものではなく、表５０４は代わりにソース記憶システム１０４にアクセス可能であれば、他のいずれのロケーションにでも格納可能であることは認められよう。図示した例示の実施の形態によれば、表５０４におけるフラグは、各記憶装置１１０を、（１）「オンライン」、（２）「オフライン」、または（３）「保留オフライン」の３状態の内の１つとして識別する。これらの状態各々の意味および重要度について、図６および図７に例示するソフトウエア・ルーチンに関連付けて以下に説明する。
【００５０】
図６は、図４および５の表のエントリを用いて本発明の一つの実施の形態を実現し、ターゲット記憶システム１０６上に格納されているデータの一貫性を維持するために、ソース記憶システム１０４の各々において、１つ以上のコントローラ（例えば、図３のホスト・バス・コントローラ３０２）によって実行することができるソフトウエア・ルーチン６００の一例を示す。ソフトウエア・ルーチン６００は、コンピュータ読み取り可能媒体に格納されている複数の命令を含むことができ、ルーチン６００を実現するコントローラは、例えば、コンピュータ読み取り可能媒体上に格納されている命令を実行し、図示する種々の方法ステップを実行することができる。ソース記憶システム１０４におけるコントローラ（例えば、図３の３０２および３０４）の各々は、ルーチン６００を実現するマイクロコード命令を格納可能なローカル・メモリを有するプロセッサを含むことができ、あるいはルーチン６００は、コントローラにアクセス可能な別のメモリ（例えば、グローバル・メモリ３０６ａ）に備えることもできる。あるいは、勿論、専用ハードウエア、または同様の結果を得ることができるハードウエアおよびソフトウエアのいずれの組み合わせを用いても、ルーチン６００は実現可能である。図６に例示するルーチン６００に関して、方法ステップの正確な順序は重要ではなく、本発明は、図示の順序で正確に方法ステップを実行する実施の形態に限定される訳ではないことは認められよう。加えて、図６に示す方法ステップは、単に所望の結果が得られる多数の可能なルーチンの１つを表すに過ぎず、本発明は図示する特定のルーチンに限定される訳ではないことも認められよう。更に、本発明の実施の形態の一部は、図６に示す方法ステップによって実行される機能の全てよりも少ない機能を実行することもでき、本発明は、図示のルーチンによって実行される機能の全てを用いる実施の形態に限定される訳ではないことも認められよう。
【００５１】
ルーチン６００は、ソース記憶システム１０４（例えば、図３のソース記憶システム１０４ｂ）が通信リンク１１４を介してホストＣＰＵ１０２からＩ／Ｏコマンド・チェーンを受信したときに始動する。Ｉ／Ｏコマンド・チェーンが受信されると、ソース記憶システムの記憶装置１１０の１つ（例えば、図３のディスク・ドライブ３１２ａ〜ｂの１つ）に対して書き込みを行なうことを要求しているか否かについての判定が（ステップ６０４において）行なわれる。
【００５２】
Ｉ／Ｏコマンド・チェーンが書き込みを実行することを要求しているのではない場合（例えば、読み出しを実行することを要求している場合）、ルーチン６００はステップ６０６に進み、ソース記憶システム１０４によって通常通りにＩ／Ｏコマンド・チェーンを処理しコミットすることを許可し、ルーチン６００は終了する。書き込みを実行しないＩ／Ｏコマンド・チェーンは、新たに書き込まれたデータをミラーリング・リンク１１２を通じてターゲット記憶システム１０６に伝送する必要がないので、ミラーリング・リンク１１２のステータスはこれらの動作には無関係であり、かかるＩ／Ｏコマンド・チェーンは、ミラーリング・リンク１１２のステータスには係らず、処理されコミットされる。
【００５３】
Ｉ／Ｏコマンド・チェーンが書き込みの実行を要求していると（ステップ６０４において）判定された場合、ルーチンはステップ６０８〜６１０に進み、宛先記憶装置１１０（即ち、書き込み要求コマンド・チェーンの宛先となるソース記憶装置１１０）に対する状態フラグ（図５参照）をチェックし、宛先記憶装置１１０がオフライン（ステップ６０８）、保留オフライン（６１０）、またはオンライン（ステップ６１０が宛先記憶装置は保留オフラインではないと判定した場合に、このように見なされる）のいずれであるかについて判定を行なう。
【００５４】
宛先記憶装置１１０がオフラインであると（ステップ６０８において）判定した場合、ルーチン６００はステップ６０６に進み、ソース記憶システム１０４によって書き込み要求コマンド・チェーンを処理しコミットするのを許可する。宛先記憶装置１１０は既にオフライン状態にあるので、ルーチン６００は、宛先記憶装置１１０が（１）対応するターゲット記憶装置１１６が関連付けられていない、（２）ルーチン６００の以前の繰り返しに応答してオフラインに切り替えられた（例えば、ステップ６２０またはステップ６２６）、または（３）以下に論ずるようにホストＣＰＵ１０２によるルーチン７００（図７）の繰り返しによって（例えば、ルーチン７００のステップ７１２において）オフラインに切り替えられたと認識する。後者の２つの場合では、現時点で書き込み要求コマンド・チェーンをコミットして、書き込んだデータをターゲット記憶システム１０６に転送しなくても、ターゲット記憶システム１０６においてデータ一貫性問題が生じないことを保証するステップ（以下で論ずる）が、ルーチン６００または７００の以前の繰り返しにおいて実行されたはずである。
【００５５】
宛先記憶装置１１０が保留オフラインであると（ステップ６１０において）判定した場合、ルーチン６００はステップ６１２に進み、ソース記憶システム１０４は、書き込み要求コマンド・チェーンをコミットすることを許可せず、Ｉ／Ｏコマンド・チェーンを発行したホストＣＰＵ１０２に「特殊」Ｉ／Ｏ不良メッセージを返送する。次いで、ルーチン６００は終了する。この特殊Ｉ／Ｏ不良メッセージは、宛先記憶装置１１０が保留オフライン状態にあることを示す。宛先記憶装置１１０は、例えば、ルーチン６００の以前の繰り返しの間に（例えば、ステップ６２２またはステップ６２８において）、またはホストＣＰＵ１０２による以下で論ずるルーチン７００の繰り返しの間（例えば、ルーチン７００のステップ７０８）に保留オフライン状態に置かれた可能性がある。例示の一つの実施の形態では、特殊Ｉ／Ｏ不良メッセージは、ソース記憶システム１０４が発生するいずれの他のＩ／Ｏ不良メッセージにも対応しないように選択される。したがって、ホストＣＰＵ１０２は、常に、保留オフライン状態にあるソース記憶装置１１０に宛てられた書き込み要求コマンド・チェーンによって生じたＩ／Ｏ不良を一意に示すものとして、この特殊Ｉ／Ｏ不良メッセージを認識する。
【００５６】
ホストＣＰＵ１０２が特殊Ｉ／Ｏ不良メッセージを受信すると、これに応答して、宛先記憶装置の一貫性グループに含まれているソース記憶装置１１０ａ〜ｆの全てを保留オフライン状態に置くステップを実行する（図７に例示するルーチン７００におけるステップ７０６および７０８を参照のこと）。関連する一貫性グループ内のソース記憶装置１１０ａ〜ｆの全てが保留オフライン状態に置かれた後、特殊Ｉ／Ｏ不良メッセージを受信したあらゆるホストＣＰＵ１０２が、関連する一貫性グループに含まれるソース記憶装置１１０ａ〜ｆの全てをオフライン状態に置くステップを（例えば、図７に関連付けて以下で説明するルーチン７００にしたがって）実行する（図７に例示するルーチン７００のステップ７１０および７１２を参照のこと）。この点について、いくつかの異なるホストＣＰＵ１０２が、保留オフライン状態にあるソース記憶装置１１０が後にオフライン状態に切り替えられる前に、これらの装置に書き込みを行なおうとする場合があることは認められよう。このような状況では、保留オフライン状態にあるソース記憶装置１１０に書き込みを行なおうとした各ホストＣＰＵ１０２は、以下で論ずるルーチン７００を実行する。したがって、多数のホストＣＰＵ１０２が各々独立して同時にルーチン７００を実行する場合がある。記憶装置１０４の各々がオフライン状態に置かれた後、ソース記憶システム１０４は再び、その記憶装置１１０に宛てられた書き込み要求コマンド・チェーンをコミットすることを許可される（ルーチン６００のステップ６０８参照）。
【００５７】
このように、宛先記憶装置１１０の保留オフライン状態は、ソース記憶システム１０４が宛先記憶装置１１０に宛てられた書き込み要求コマンド・チェーンを、宛先記憶装置の一貫性グループ内の他の全てのソース記憶装置１１０に対してミラーリング通信が不能となっている期間中、一時的に許可しないという前述の状況に対応する。一方、宛先記憶装置１１０のオフライン状態は、ソース記憶システム１０４が、書き込まれたデータを最初にターゲット記憶システム１０６に転送する必要なく、宛先記憶装置１１０への書き込み要求コマンド・チェーンをコミットすることを許可するという、前述の状況に対応する。
【００５８】
尚、宛先記憶装置１１０に対して試みた書き込みに応答して特殊エラー・メッセージを受信したホストＣＰＵ１０２はいずれも、直ちに書き込みを繰り返し実行しようとせず、その結果、ホストＣＰＵ１０２上で走っているアプリケーション・プログラムをクラッシュさせないことは認められよう。むしろ、かかるホストＣＰＵ１０２の各々は、代わりに、ルーチン７００（図７）を実行し、最初に、関連する一貫性グループ内のソース記憶装置１１０の全てを保留オフライン状態に置き、次いで、かかるソース記憶装置１１０の全てをオフライン状態に置く。特殊エラー・メッセージを受信した各ホストＣＰＵ１０２は、ルーチン７００を完了した後、その書き込み動作を繰り返し実行しようとする。ルーチン７００が完了した後、宛先記憶装置の一貫性グループ内にあるソース記憶装置１１０は全てオフラインとなる。このため、いずれのホストＣＰＵによる宛先記憶装置１１０への書き込みの試行も、これ以降（ルーチン６００のステップ６０８によって）コミットされる。したがって、宛先記憶装置１１０に対するミラーリング通信を失ったソース記憶システム１０４が単純に書き込み要求コマンド・チェーンをコミットするのを禁止したときに、ホストＣＰＵ１０２上のアプリケーション・プログラムをクラッシュさせるという前述の状況は回避される。
【００５９】
宛先記憶装置１１０が保留オフラインでないと（ステップ６１０において）判定された場合、ルーチン６００は、宛先記憶装置１１０が現在はオンラインであると認識する。図示の例では、宛先記憶装置１１０がオンラインであると（ステップ６１０において）判定した場合、ルーチン６００はステップ６１４に進み、ミラーリング通信が現在宛先記憶装置１１０に対して可能か否かについて判定を行なう。ステップ６１４における判定は、例えば、宛先記憶装置１１０が含まれるミラーリング・グループ１８０に関連する表４０２にあるミラーリング・リンク・ステータス・フラグをチェックし、少なくとも１つのミラーリング・リンク１１２がミラーリング・グループ１０８に対して動作状態にあるか否か判定することによって行なうことができる。１つ以上のミラーリング・リンク１１２がミラーリング・グループ１０８に対して可能な場合、宛先記憶装置１１０に対するミラーリング通信は可能であると判定する。それ以外の場合、宛先記憶装置１１０に対するミラーリング通信は不能であると判定する。
【００６０】
宛先記憶装置１１０に対してミラーリング通信が不能であると（ステップ６１４において）判定した場合、ルーチン６００はステップ６２０〜６２８に進み、ターゲット記憶システム１０６が格納したデータ・セットの一貫性を維持する処置を取る（以下で論ずる）。
【００６１】
宛先記憶装置１１０に対するミラーリング通信が可能であると（ステップ６１４において）判定した場合、ルーチン６００はステップ６１６に進み、ターゲット記憶システム１０６によって、書き込み要求コマンド・チェーンを（条件付きで）処理しコミットする。次いで、ルーチン６００はステップ６１８に進み、書き込み要求コマンド・チェーンの処理およびコミットの間を通じて（即ち、ソース記憶システム１０４およびターゲット記憶システム１０６双方に適正にデータを転送した後まで）ミラーリング通信が可能であり続けたか否かについて判定を行なう。ミラーリング通信が可能であり続けたため書き込み要求コマンド・チェーンを首尾よくコミットすることを許可された場合、ルーチン６００は終了する。しかしながら、書き込み要求コマンド・チェーンがステップ６１６においてコミットされる前に（例えば、ミラーリング・リンク１１２を横切るデータ転送の間に）、宛先記憶装置１１０に対するミラーリング通信が不能になったと（ステップ６１８において）判定された場合、表４０２の初期チェックによって宛先記憶装置１１０に対するミラーリング通信が不能であったことが示されたかのように、ルーチン６００はステップ６２０に進む。ステップ６１８における判定は、例えば、直接、即ち、表４０２（図４）を参照せずに、リンクのステータスを監視することによって行なうことができる。したがって、この実施の形態では、ソース記憶装置１１０に対するミラーリング通信が可能であることは、表４０２を参照するだけでは判定されない。代わりに、ミラーリング通信に関与する装置（例えば、図３のミラーリング・コントローラ３０８）または他のいずれかの装置も、ソース記憶装置１１０に対するミラーリング通信が不能となったか否かについて判定を行なうことができる。
【００６２】
ルーチン６００がステップ６２０〜６２２に達した場合には、（ルーチン６００をコールするに至った）書き込み要求コマンド・チェーンが送られたソース記憶装置１１０がオンラインであり、ターゲット記憶システム１０６とのミラーリング通信に携わることができないと判定されている。宛先記憶装置１１０は未だオンラインであるので、ルーチン６００は、処理中の書き込み要求コマンド・チェーンが、宛先記憶装置のミラーリング・グループ１０８内のソース記憶装置１１０に宛てられた最初の書き込み要求コマンド・チェーンであることを認識する。何故なら、ミラーリング・グループ１０８に対するミラーリング通信は不能となっているからである。したがって、図示する実施の形態の一例では、ルーチン６００は、ミラーリング・グループ１０８に対するミラーリング通信喪失を考慮に入れるために、宛先記憶装置のミラーリング・グループ１０８内にある他のソース記憶装置１１０の全ての状態を、オフライン（ステップ６２０）または保留オフライン（ステップ６２２）のいずれかに変更するステップを実行する。
【００６３】
更に具体的には、ステップ６２０において、宛先記憶装置１００とのミラーリング通信を共有する（例えば、宛先記憶装置のミラーリング・グループ１０８の中にある）ソース記憶装置１１０の各々に対して、例えば、宛先記憶装置１１０に対する図５の表５０４の一貫性グループ・フラグをチェックすることによって判定することができる一貫性グループのメンバでないソース記憶装置１１０の各々に対して、ルーチン６００は、当該ソース記憶装置１１０に対する状態フラグをオフラインにセットする。このように、オフラインに切り替えられたこれらソース記憶装置１１０に宛てられた書き込み要求コマンド・チェーンを伴うルーチン６００の後続の繰り返し時に、これらのソース記憶装置１１０に対してミラーリング通信が不能となっているという事実にも拘らず、ルーチン６００のステップ６０８および６０６のように、書き込み要求コマンド・チェーンを処理しコミットすることが許可される。
【００６４】
同様に、ステップ６２２において、宛先記憶装置１１０とのミラーリング通信を共有し、一貫性グループのメンバであるソース記憶装置１１０の各々に対して、ルーチン６００は当該ソース記憶装置１１０の状態フラグを保留オフラインにセットする。したがって、保留オフラインに切り替えられたこれらソース記憶装置１１０に宛てられた書き込み要求コマンド・チェーンを伴うルーチン６００の後続の繰り返し時に、ルーチン６００はステップ６１２に進み、Ｉ／Ｏコマンド・チェーンを発行したホストＣＰＵ１０２に特殊Ｉ／Ｏ不良メッセージ（以下で論ずる）を送る。
【００６５】
ルーチン６００のステップ６２２を完了した後、ステップ６２４において（例えば、図５の表５０４内の一貫性グループ・フラグをチェックすることによって）、宛先記憶装置１１０が一貫性グループのメンバであるか否かについて判定を行なう。宛先記憶装置１１０が一貫性グループのメンバではないと（ステップ６２４において）判定した場合、ルーチン６００はステップ６２６に進み、当該宛先記憶装置１１０の状態フラグをオフラインにセットする。この状況では、宛先記憶装置１１０の状態フラグを直ちにオフライン状態に変更する方が安全である。何故なら、宛先記憶装置１１０は一貫性グループのメンバでなく、このソース記憶装置１１０に対してターゲット記憶システム１０６によってミラーされたデータは、他のいずれのソース記憶装置１１０に対してターゲット記憶システム１０６によってミラーされたデータとも一貫性を維持する必要がないからである。次いで、ルーチン６００はステップ６０６に進み、宛先記憶装置１１０に宛てられた書き込み要求コマンド・チェーンを処理しコミットし、ルーチン６００は終了する。前述のように、ソース記憶装置１１０に対する状態フラグがオフライン状態にあるとき、この記憶装置１１０を含むソース記憶システム１０４は、データを宛先記憶システム１０６に転送する必要なく、それに宛てられた書き込み要求コマンド・チェーンをコミットすることを許可される。
【００６６】
宛先記憶装置１１０が一貫性グループのメンバであると（ステップ６２４において）判定した場合、ルーチン６００はステップ６２８に進み、宛先記憶装置１１０の状態フラグを保留オフラインにセットする。前述のように、宛先記憶装置１１０が保留オフライン状態にあるとき、この宛先記憶装置１１０を含むソース記憶システム１０４は、宛先記憶装置１１０に宛てられた書き込み要求コマンド・チェーンをコミットすることを一時的に禁止される。また、前述のように、本発明の一態様によれば、このソース記憶システム１０４がかかる書き込み要求コマンド・チェーンをコミットするのを禁止するのは、宛先記憶装置１１０と同じ一貫性グループ内に含まれる他のソース記憶装置１１０の全てに対するミラーリング通信が不能になるまでだけである。
【００６７】
図６の実施の形態では、宛先記憶装置１１０を含む不能のミラーリング・グループ１０８以外のミラーリング・グループ１０８に含まれるソース記憶装置１１０に対するミラーリング通信を不能にする役割は、ホストＣＰＵ１０２に任される。図６に例示する方法では、この目標はステップ６１２において達成され、宛先記憶装置１１０に宛てられた書き込み要求コマンド・チェーンを発行したホストＣＰＵ１０２に特殊Ｉ／Ｏ不良メッセージが送信される。
【００６８】
以下で更に詳しく説明するが、図７に例示する実施の形態では、この特殊Ｉ／Ｏ不良メッセージの受信に応答して、ホストＣＰＵ１０２は、宛先記憶装置１１０と同じ一貫性グループに含まれるソース記憶装置１１０を含むソース記憶システム１０４の各々にコマンドを送る。これらのコマンドは、ソース記憶システム１０４に、関連する一貫性グループに含まれるソース記憶装置１１０の状態フラグを保留オフライン状態にセットするように命令する。かかるソース記憶装置１１０の全てを保留オフライン状態に置いた後、特殊Ｉ／Ｏ不良メッセージを受信したホストＣＰＵ１０２は、関連するソース記憶システム１０４にコマンドを送り、関連する一貫性グループ内にあるソース記憶装置１１０の状態フラグをオフライン状態にセットするように命令する。最後に、関連する一貫性グループ内のソース記憶装置１１０の全てがオフライン状態に置かれた後、これらのソース記憶装置１１０を含むソース記憶システム１０４は、それに宛てられた書き込み要求コマンド・チェーンをコミットすることを再度許可される。このように、この技法を用いると、書き込み要求コマンド・チェーンを呼び出したホストＣＰＵ１０２上で走っているソフトウエアは、不能のミラーリング・グループ１０８に含まれるソース記憶装置１１０に対する書き込みに繰り返し失敗するために、クラッシュしない。むしろ、ホストＣＰＵ１０２が不能のミラーリング・グループ１０８内にある宛先記憶装置１１０に対して書き込みを行なおうとするときはいつでも、宛て先記憶装置１１０を含むソース記憶システム１０４は特殊Ｉ／Ｏ不良メッセージをホストＣＰＵ１０２に返送することによって、ホストＣＰＵ１０２に、宛先記憶装置の一貫性グループ内のソース記憶装置１１０に対するミラーリング通信を不能にする、前述の処置を講ずるように命令する。かかる処置を講じた後、宛先記憶装置１１０に対するミラーリング通信が不能になっていても、ホストＣＰＵ１０２は宛先記憶装置１１０に適正に書き込むことを許可される。
【００６９】
不能のミラーリング・グループ１０８内にある全てのソース記憶装置１１０の状態を変更する、前述のステップ６２０〜６２２に関して、これらのソース記憶装置１１０の状態は、代わりに、他の方法で変更することも可能であり、必ずしもミラーリング通信の喪失を発見した図６のルーチンの繰り返しの間に、ソース記憶システム１０４によって変更しなくてもよいことは理解されよう。例えば、これらの状態は、ルーチン６００のその後の繰り返しの間に、ソース記憶システム１０４によって変更することも可能であり、あるいは図７のルーチン７００（以下で論ずる）の実行中に、ホストＣＰＵ１０２の１つによって変更することも可能である。
【００７０】
この点について、図６に例示する実施の形態では、宛先記憶装置のミラーリング・グループ１０８内の記憶ソース装置１１０の全ての状態をステップ６２０〜６２２で変更するのは、単に便宜上のことに過ぎないことは認められよう。即ち、宛先記憶装置１１０と同じ一貫性グループになる不能のミラーリング・グループ１０８内のソース記憶装置１１０に対して、通信の喪失を発見するルーチン６００の最初の繰り返しの間にかかるソース記憶装置１１０の状態を保留オフラインに変更すると、ステップ６２８において宛先記憶装置の状態フラグを保留オフライン状態にセットした後に、ステップ６１２においてソース記憶システム１０４によって発行された前述の特殊Ｉ／Ｏ不良メッセージに応答して、ホストＣＰＵ１０２が保留オフライン状態に変更しなければならない状態フラグの総数が減少する。加えて、宛先記憶装置１００のそれ以外の一貫性グループに含まれる、またはいずれの一貫性グループにも含まれない不能のミラーリング・グループ１０８内のソース記憶装置１１０に対して、これらのソース記憶装置１１０の状態を保留オフライン状態またはオフライン状態にそれぞれ変更することによって、ホストＣＰＵ１０２が、ミラーリング通信が既に不能であると判定されたソース記憶装置１１０の１つに書き込みを行なおうとしたときに、以降のルーチン６００の繰り返しにおいて、ステップ６１４〜６２８を実行する必要がなくなる。この点について、ミラーリング通信が既に不能であると判定されたソース記憶装置１１０の全ての状態の後。この点について、ミラーリング通信が既に不能であると判定されたソース記憶装置１１０の全ての状態を変更した後に、これらのソース記憶装置１１０の１つに書き込みを行なおうとしたとき、ルーチン６００はステップ６１４には決して到達しない。何故なら、各々既にオフラインまたは保留オフライン状態のいずれかに置かれているからである。
【００７１】
図６の実施の形態では、ルーチン６００が、不能のミラーリング・グループ１０８に含まれる宛先記憶装置１１０に宛てられた書き込み要求コマンド・チェーンに応答してのみ、ソース記憶装置１１０の状態を変更させているが、本発明はこれに限定される訳ではなく、代わりに、ソース記憶装置１１０の状態を、受信した書き込み要求コマンド・チェーンとは独立に変更してもよいことは認められよう。例えば、ソース記憶システム１０４内の１つ以上のコントローラ（例えば、図３のコントローラ３０２、３０４）が、直接またはリンク・ステータス表（例えば、図４の表４０２Ａ〜Ｂ）によって、ミラーリング・リンク１１２ａ〜ｂのステータスを連続的に監視してもよく、これらのコントローラが、ミラーリング・グループ１０８に対するミラーリング通信が喪失したと判定したときにはいつでも、ミラーリング・グループ１０８内のソース記憶装置１１０の各々の状態を変更してもよい。
【００７２】
図７は、前述のようにホストＣＰＵ１０２がソース記憶システム１０４から特殊Ｉ／Ｏ不良メッセージを受信したときにはいつでもホストＣＰＵ１０２が実行することができるルーチン７００の一例を示す。ルーチン７００は、特殊Ｉ／Ｏ不良メッセージに応答するように多数の方法のいずれでもホストＣＰＵ１０２上に実現することができ、本発明はいずれかの特定の実現技法に限定されるのではない。例えば、メインフレーム・コンピュータを用いてホストＣＰＵ１０２を実現する場合、ルーチン７００は、例えば、ソース記憶システム１０４に書き込み要求コマンド・チェーンを発行する役割を担うデバイス・ドライバに対するコードに埋め込むことができる。このような実施の形態では、ホストＣＰＵ１０２に返送される特殊エラー・メッセージは、そのデバイス・ドライバによって受信され、当該デバイス・ドライバがこの埋め込みコードを実行してルーチン７００を行なうことができる。あるいは、オープン・システム・コンピュータを用いてホストＣＰＵ１０２を実現する場合、ルーチン６００は、例えば、デバイス・ドライバよりも上位で実現することができ、ソース記憶システム１０４からの特殊Ｉ／Ｏ不良メッセージの受信によって、処理「スレッド」が、デバイス・ドライバから別個に実現されるルーチン７００用のコードにジャンプすることもできる。即ち、特殊Ｉ／Ｏ不良メッセージは一時的にデバイス・ドライバから「処理カーネルを盗む」ことができる。尚、ルーチン７００のコードは、オープン・システム・コンピュータのデバイス・ドライバ・コードにも埋め込み可能であることは認められよう。しかしながら、オープン・システムのデバイス・ドライバ・コードは各社に固有である場合が多く、したがってアクセスし変更することは困難である。当業者には、同様の結果を達成する数多くの別の適した技法が容易に想起されよう。したがって、本発明は、ここで説明する具体的な例に限定される訳ではない。
【００７３】
図７に例示するルーチン７００に関して、方法ステップの正確な順序は重要ではなく、本発明は、図示の順序で正確に方法ステップを実行する実施の形態に限定される訳ではないことは認められよう。加えて、図７に示す方法ステップは、所望の結果を達成することができる多数の可能なルーチンの１つだけを表すのであり、本発明は図示する特定のルーチンに限定されるのではないことも認められよう。更に、本発明の実施の形態の中には、図７に示す方法ステップが実行する機能の全てよりも少ない機能を実行することが可能なものがあり、本発明は、図示したルーチンによって実行される機能の全てを用いる実施の形態に限定されるものではないことも理解されよう。
【００７４】
ルーチン７００は、ソース記憶システム１０４から特殊Ｉ／Ｏ不良メッセージが受信されたときにコールされる。特殊Ｉ／Ｏ不良メッセージが受信されると、ルーチン７００はステップ７０４に進み、ルーチン７００は、特殊Ｉ／Ｏ不良メッセージの原因となった書き込み要求コマンド・チェーンが宛てられた宛先記憶装置１１０と同じ一貫性グループに含まれるソース記憶装置１１０の全てを識別する。特殊Ｉ／Ｏ不良メッセージの原因となった書き込み要求コマンド・チェーンが宛てられた宛先記憶装置１１０を識別するためには、ホストＣＰＵは、書き込み要求コマンド・チェーンを送ったソース記憶装置に関してそれ自体のメモリを頼ることができ、あるいは、書き込み要求コマンド・チェーンが宛てられたソース記憶装置１１０を識別する、特殊Ｉ／Ｏ不良メッセージ自体に埋め込まれている情報を頼ることもできる。図示の実施の形態では、ホストＣＰＵ１０２は、どのソース記憶装置がどの一貫性グループのメンバであるかに関する情報を維持している。したがって、ステップ７０４の機能は、特殊Ｉ／Ｏ不良メッセージの原因となった書き込み要求コマンド・チェーンが宛てられたソース記憶装置１１０に対するこの情報を単に参照することによって、ホストＣＰＵ１０２によって実行することができる。ステップ７０４が完了した後、ルーチン７００はステップ７０６に進む。
【００７５】
ステップ７０６において、ルーチン７００は、関連する一貫性グループ内にオンライン状態にあるソース記憶装置１１０があるか否かについて判定を行い、ある場合、ステップ７０８に進む。ステップ７０８において、ステップ７０６でオンライン状態にあると識別された各ソース記憶装置１１０に対して、ルーチン７００は、ホストＣＰＵ１０２に、Ｉ／Ｏコマンド・チェーンを発行させ、当該ソース記憶装置１１０を含むソース記憶システム１０４に、それを保留オフライン状態に戻すように命令する。
【００７６】
ステップ７０６および７０８の結果は、多数の方法のいずれでも得ることができ、本発明は、それを遂行するいずれかの特定の技法に限定されるのではない。ホストＣＰＵ１０２は、例えば、関連するソース記憶装置１１０の各々を順次ポーリングし、その現状態を判定して行き、ポーリングしたソース記憶装置１１０のいずれかが保留オフライン状態に切り替えられるべき状態のままであった場合、ホストＣＰＵ１０２はＩ／Ｏコマンド・チェーンを発行し、その装置の状態を変更することができる。保留オフライン状態に既に切り替えられている装置をポーリングするのを回避するために、ホストＣＰＵ１０２がステップ７０６および７０８を実行し始める前に、例えば、最初に各装置の現状態が示されている、関連するソース記憶装置１１０に対するステータス表（例えば、ホストＣＰＵのメモリに格納されている）に対して更新を要求することができる。次いで、ホストＣＰＵ１０２は、表が保留オフライン状態に未だ切り替えていないことを示す、関連のソース記憶装置１１０のみをポーリングし、未だ変更されていないことをポーリングが示す装置の状態を変更するコマンド・チェーンを発行することができる。この技法は、前述のように多数のホストＣＰＵ１０２がルーチン７００を同時に実行しているときに、時間を節約することができる。あるいは、ルーチン７００を実行する各ホストＣＰＵ１０２は、例えば、表を更新したりあるいは現装置状態のポーリングを全く行なうことなく、宛先記憶装置の一貫性グループに含まれる各ソース記憶装置１１０に対して単にＩ／Ｏコマンドを発行し、ソース記憶システム１０４に、既に実行された状態変更を要求するＩ／Ｏコマンド・チェーンを破棄するか否かついて判定させてもよい。
【００７７】
宛先記憶装置の一貫性グループ内にあるソース記憶装置１１０の全てが保留オフライン状態に切り替えられていると（ステップ７０６において）判定した場合、ルーチン７００はステップ７１０に進む。ステップ７１０において、ルーチン７００は、関連する一貫性グループ内に、オフライン状態に未だ切り替えられていないソース記憶装置１１０があるか否かについて判定を行い、ある場合、ルーチン７００はステップ７１２に進む。
【００７８】
ステップ７１２において、ステップ７１０でオフライン状態にあると識別された各ソース記憶装置１１０に対して、ルーチン７００は、当該ソース記憶装置１１０を含むソース記憶システム１０４に、それをオフライン状態に切り替えるように命令するＩ／Ｏコマンド・チェーンをホストＣＰＵ１０２に発行させる。ステップ７０６および７０８に関連付けて先に説明した技法と同様の技法を用いて、ステップ７１０および７１２の結果を得ることができる。宛先記憶装置の一貫性グループ内のソース記憶装置１１０の全てがオフライン状態に切り替えられていると（ステップ７１０において）判定した場合、ルーチン７００は終了する。
【００７９】
図７に示す実施の形態では、ソース記憶システム１０４は、各ソース記憶装置１１０が一貫性グループ内に含まれているか否かについてのみ識別する情報を格納し、ホストＣＰＵ１０２は、どの記憶装置１１０がどの一貫性グループに含まれているかに関する全ての情報を格納する。したがって、図示した例示の実施の形態では、ホストＣＰＵ１０２の１つが、関連する一貫性グループ内のソース記憶装置１１０を最初に保留オフライン状態に置き、次いでオフライン状態に置くことを要求するコマンドを送る実体となる。しかしながら、関連する一貫性グループ内のソース記憶装置１１０に対するミラーリング通信を不能にするには、代わりに、１つ以上のソース記憶システム１０４、またはソース記憶システム１０４と通信するコンピュータ・システム内の他のいずれかの装置または複数の装置がこれを行なうことも可能であることは認められよう。
【００８０】
以上説明した本発明の実施の形態は、少なくとも１つのホスト、少なくとも１つのソース記憶システム、および少なくとも１つのターゲット記憶システムを含み、ホストが書き込み動作をソース記憶システムに対して実行し、ソースおよびターゲット記憶システム間にミラーリング通信を確立する、データ・ミラーリング・システムを対象とする。前述の特定の実施の形態では、ホストは、ホストＣＰＵとして記載されている。しかしながら、前述の本発明の種々の実施の形態はこの点に関して限定される訳ではなく、ソース記憶システムにデータを書き込むことができる、他の多数の形式のホスト・デバイスを含むデータ・ミラーリング・システムにも採用可能であることは認められよう。
【００８１】
以上、本発明の実施の形態をいくつか詳細に説明したが、当業者には種々の変更や改善が容易に想起されよう。かかる変更や改善は、本発明の精神および範囲に含まれることを意図するものとする。したがって、前述の説明は一例に過ぎず、限定として意図したのではない。本発明は、特許請求の範囲およびその均等物による規定によってのみ限定されるものとする。
【図面の簡単な説明】
【００８２】
【図１】本発明の態様を採用可能なデータ・ミラーリング・システムの代表例を示すブロック図である。
【図２】多数のソースおよびターゲット記憶装置を用いた、図１に示すようなデータ・ミラーリング・システムの一例を示すブロック図である。
【図３】図１および図２のソースおよび／またはターゲット記憶システムとして使用可能な記憶システムの例示的な実現を示すブロック図である。
【図４】図４Ａ及び図４Ｂは、図１および図２のソース記憶システムの各々に格納し、本発明の一つの実施の形態にしたがって複数のターゲット記憶装置上に格納されているデータの一貫性を維持する際に供することができる、フラグ表の代表例を示す図である。
【図５】図１および図２のソース記憶システムの各々に格納し、本発明の一つの実施の形態にしたがって複数のターゲット記憶装置上に格納されているデータの一貫性を維持する際に供することができる、フラグ表の代表例を示す図である。
【図６】図１および図２のソース記憶システムの各々の１つ以上のコントローラによって実行し、複数のターゲット記憶装置上に格納されているデータの一貫性維持に関する本発明の種々の態様を実現することができるプロセスの代表例を示すフロー・チャートである。
【図７】図１および図２のホストＣＰＵによって実行され、複数のターゲット記憶装置上に格納されるデータの一貫性維持に関する本発明の更に別の態様を実現することができるソフトウエア・ルーチンの代表例を示すフロー・チャートである。
【図１】
2006053932.tif 000003
【図２】
2006053932.tif 000004
【図３】
2006053932.tif 000005
【図４】
2006053932.tif 000006
【図５】
2006053932.tif 000007
【図６】
2006053932.tif 000008
【図７】
2006053932.tif 000009