(57)【要約】データ書き込みを順序付けることは、一次記憶装置（５１）のグループの少なくとも一部が第１の複数のデータ書き込みを受信すること、一次記憶装置のグループに対してサイクル切り換えを行なうことであって、第１の複数のデータ書き込みは、グループ内の各一次記憶装置上の特定のサイクルに関連する、サイクル切り換えを行なうこと、サイクル切り換えを開始した後で一次記憶装置のグループの少なくとも一部が第２の複数の書き込みを受信することであって、第２の複数の書き込みのすべてが各一次記憶装置（５１）上の特定のサイクルとは異なるサイクルに関連する、第２の複数の書き込みを受信すること、を含む。サイクル切り換えを開始した後で始められたグループへの書き込みは、サイクル切り換えが完了するまで完了しなくても良い。領域（５２）で与えられるデータを複数の二次記憶装置（６２）に回復することには、二次記憶装置の各々に対して、そのすべてのデータが受信されてはいないデータ対応領域を廃棄すること、二次記憶装置の各々に対して、データ領域（５６）を復元することであって、複数の二次記憶装置に復元されるすべてのデータ領域が、複数の二次記憶装置にデータを送る一次記憶装置の特定の送信サイクルに対応する、復元すること、が含まれる。
2007513424.tif 000002
【特許請求の範囲】
【請求項１】
データ書き込みを順序付ける方法であって、
一次記憶装置のグループの少なくとも一部が第１の複数のデータ書き込みを受信すること、
前記一次記憶装置のグループに対してサイクル切り換えを行なうことであって、前記第１の複数のデータ書き込みは前記グループ内の各一次記憶装置上の特定のサイクルに関連する、サイクル切り換えを行なうこと、
前記サイクル切り換えを開始した後に、前記一次記憶装置のグループの少なくとも一部が第２の複数の書き込みを受信することであって、前記第２の複数の書き込みのすべては各一次記憶装置上の前記特定のサイクルとは異なるサイクルに関連する、第２の複数の書き込みを受信すること、を備える方法。
【請求項２】
請求項１に記載の方法において、前記サイクル切り換えを開始した後に始められた前記グループへの書き込みが、前記サイクル切り換えが完了するまで完了しない、方法。
【請求項３】
請求項１に記載の方法であって、さらに、
前記サイクル切り換えが完了した後に、前記グループの各一次記憶装置が、前記第１の複数の書き込みを対応する二次記憶装置に転送することを開始すること、
を備える方法。
【請求項４】
請求項１に記載の方法において、ホストが前記サイクル切り換えを引き起こす、方法。
【請求項５】
請求項１に記載の方法において、
前記サイクル切り換えを行なうことが、
所定の時間待機すること、
記憶装置の前記グループのすべての一次記憶装置が切り換えに対して準備完了であるか否かを判定すること、
前記グループの各一次記憶装置に対して、サイクル切り換えを行なうための第１のコマンドを送ること、
を含む、方法。
【請求項６】
領域で与えられるデータを複数の二次記憶装置に回復する方法であって、
前記二次記憶装置の各々に対して、そのすべてのデータが受信されてはいないデータ対応領域を廃棄すること、
前記二次記憶装置の各々に対して、データ領域を復元することであって、前記複数の二次記憶装置に復元されるすべてのデータ領域が、前記複数の二次記憶装置にデータを送る一次記憶装置の特定の送信サイクルに対応する、データ領域を復元すること、
を備える方法。
【請求項７】
請求項６に記載の方法であって、さらに、
廃棄することの後であり、かつ復元することの前に、２つの異なる領域を有する前記複数の二次記憶装置の各々に対して、領域の特定の１つを復元するべきか否かを外部の介入が示すのを待つこと、
を備える方法。
【請求項８】
請求項７に記載の方法であって、さらに、
前記複数の二次記憶装置のすべてに関連する２つの異なる領域が存在することに応答して、前記複数の二次記憶装置のすべてに対して最新の領域を復元すること、
を備え、前記２つの領域の第１の領域が第１の送信サイクルに対応し、前記２つの領域の第２の領域が異なる送信サイクルに対応する、方法。
【請求項９】
請求項７に記載の方法であって、さらに、
前記二次記憶装置の各々に対して、特定の送信サイクルに対応するデータ領域を復元すること、
を備え、前記二次記憶装置のすべてが、前記特定の送信サイクルに対応するデータ領域を収容する、方法。
【請求項１０】
請求項１に記載の方法において、各送信サイクルに、各データ領域が付与される特定のタグ値が割り当てられている、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、コンピュータ記憶装置に関し、より詳細には、記憶装置間でのデータ転送の分野に関する。
【背景技術】
【０００２】
ホスト・プロセッサ・システムは、記憶装置を用いてデータを記憶したり、取り出したりすることができる。記憶装置には、複数のホスト・インターフェース・ユニット（ホスト・アダプタ）、ディスク・ドライブ、およびディスク・インターフェース・ユニット（ディスク・アダプタ）が含まれている。このような記憶装置は、たとえばＥＭＣ株式会社（ホプキントン（Hopkinton ）、マサチューセッツ州）から販売され、さらに（米国特許第５，２０６，９３９号明細書）（ヤナイ他（Yanai et al.））、（米国特許第５，７７８，３９４号明細書）（ガルツァ他（Galtzur et al.））、（米国特許第５，８４５，１４７号明細書）（ビシュリツキィ他(Vishlitzky et al.) ）、および（米国特許第５，８５７，２０８号明細書）（オフェック（Ofek））に開示されている。ホスト・システムは、記憶装置に、この装置に設けられた複数のチャンネルを通してアクセスする。ホスト・システムは、チャンネルを通して記憶装置にデータおよびアクセス制御情報を送り、記憶装置もやはりチャンネルを通してホスト・システムにデータを送る。ホスト・システムは、記憶装置のディスク・ドライブを直接アドレス指定するのではなく、むしろ、ホスト・システムに対して複数の論理ディスク・ユニットとして現れるものにアクセスする。論理ディスク・ユニットは、実際のディスク・ドライブに対応する場合もあるし、対応しない場合もある。単一の記憶装置ユニットに複数のホスト・システムがアクセスできるようにした場合、ホスト・システムは、ユニットに記憶されるデータを共有することができる。
【０００３】
場合によっては、１つの記憶装置から他の記憶装置にデータをコピーすることが望ましいときがある。たとえば、ホストが第１の記憶装置にデータを書き込む場合、異なる場所に設けられた第２の記憶装置にそのデータをコピーすることが望ましいときがある。その結果、第１の記憶装置を動作不能にする障害が起きたとしても、ホスト（または他のホスト）は、第２の記憶装置のデータを用いて動作を再開することができる。このような能力は、たとえば、ＥＭＣ株式会社（ホプキントン、マサチューセッツ州）から販売されるリモート・データ・ファシリティ（ＲＤＦ：Remote Data Facility）製品によってもたらされる。ＲＤＦを用いた場合、ホストに、第１の記憶装置（「一次記憶装置」（または「Ｒ１」）と示される）が結合される。ホストが一次記憶装置に書き込むデータのコピーが、１つまたは複数の他の記憶装置（「二次記憶装置」（または「Ｒ２」）と呼ばれる）によって受信される。ホストは一次記憶装置と直接やり取りするが、一次記憶装置に対してなされるいかなるデータ変更も、ＲＤＦを用いて１つまたは複数の二次記憶装置に自動的に送られる。一次および二次記憶装置は、データ・リンクを介して接続されている。データ・リンクはたとえば、ＥＳＣＯＮリンク、ファイバ・チャンネル・リンク、および／またはギガビット・イーサネット（登録商標）・リンクである。ＲＤＦ機能は、各記憶装置にＲＤＦアダプタ（ＲＡ）を設けることによって容易に実現される。
【０００４】
ＲＤＦによって、同期データ転送が可能になる。すなわち、ホストから一次記憶装置に書き込まれたデータが、ＲＤＦを用いて一次記憶装置から二次記憶装置に転送された後に、二次記憶装置から一次記憶装置に受け取りの確認応答がなされ、そして一次記憶装置からホストに書き込み確認応答が戻される。したがって同期モードでは、ホストが一次記憶装置から書き込み確認応答を受信することは、二次記憶装置へのＲＤＦ転送が完了して二次記憶装置によって確認応答がなされるまで行なわれない。
【０００５】
同期ＲＤＦシステムの欠点は、各書き込み動作の待ち時間が、ＲＤＦ転送の確認応答を待つことによって長くなることである。この問題は、一次記憶装置と二次記憶装置との間の距離が長い場合にはさらに悪くなる。送信遅延が生じるために、ＲＤＦ転送を行なって転送完了後の確認応答の戻りを待つのに必要な時間遅延は、容認できない場合がある。
【０００６】
ＲＤＦを半同期モードで用いることも可能である。この場合、ホストからデータが一次記憶装置に書き込まれ、一次記憶装置では、即座に書き込みに確認応答すると同時に、データを二次記憶装置に転送するプロセスを始める。したがって、一回のデータ転送に対しては、この方式によって、同期モードでＲＤＦを用いる場合の不利な点のいくつかが打開される。しかし半同期転送モードでは、データ保全を目的として、以前の転送が二次記憶装置によって確認応答されるまで、一次記憶装置がデータを二次記憶装置に転送することはできない。したがって、ＲＤＦを同期モードで用いることに伴う障害は、１度繰り返すと単に先延ばしされることになる。なぜならば、第２のデータ量の転送は、以前のデータの転送が二次記憶装置によって確認応答されるまで、行なうことができないからである。
【０００７】
他の可能性は、ホストにデータを一次記憶装置に非同期モードで書き込ませ、さらに一次記憶装置にデータを二次記憶装置にバックグラウンドでコピーさせることである。バックグラウンド・コピーには、一次記憶装置の各トラックを連続して繰り返すことが伴い、さらに特定のブロックがそのブロックが最後にコピーされてから後に変更されていると判定されたら、そのブロックを一次記憶装置から二次記憶装置に転送する。このメカニズムによって、同期および半同期のデータ転送モードに伴う待ち時間の問題は軽減されることが考えられるが、依然として問題が存在する。なぜならば、一次記憶装置と二次記憶装置との間のデータ整合性が保証できないからである。一次システムの故障などの問題があると、二次システムは最終的に異常な変化を生じてデータが使用できなくなる場合がある。
【０００８】
この問題に対して提案されている解決方法は、シンメトリックス自動複製（ＳＡＲ：Symmetrix Automated Replication ）プロセスである。この方法は、係属中の（米国特許出願第１０／２２４，９１８号明細書）および（米国特許出願第１０／２２５，０２１号明細書）（いずれも２００２年８月２１日出願）に記載されている。ＳＡＲでは、標準の論理装置をミラーリングすることができる装置（ＢＣＶ）を用いている。またＢＣＶ装置は、ミラーリングされた後にその標準の論理装置から分割することもでき、さらに分割された後に標準の論理装置に再同期する（すなわちミラーとして再構築する）ことができる。加えて、ＢＣＶのミラーリングをＲＤＦを用いて遠隔に行なうことができる。この場合ＢＣＶは、ＢＣＶを対応する標準の論理装置から分割したときに、（ＢＣＶがミラーとしての機能を果たしている間に）ＢＣＶに対してなされたデータ変更を、ＢＣＶの遠隔ミラーまで伝えることができる。
【０００９】
しかし、ＳＡＲプロセスを用いることは、ＢＣＶを連続的に分割し、再同期することの著しいオーバーヘッドが必要となる。またＳＡＲプロセスでは、ホスト制御およびマネージメントも用いている。ホスト制御およびマネージメントは、動作中であるホストを制御することに基づく。加えて、ＳＡＲプロセスを実際に実施する際のサイクル時間は、２０〜３０分のオーダであるため、ＲＤＦリンクおよび／または一次装置が破損したときに失われ得るデータ量は、２０〜３０分に相当するデータになり得る。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
したがって、ＲＤＦシステムとして、前述した種々の技術のそれぞれにおける有益な品質のいくつかを示す一方で、欠点が低減されているシステムがあれば望ましい。このようなシステムであれば、一次装置と二次装置との間の距離にかかわらず各ホスト書き込みに対して示す待ち時間が短く、さらに故障した場合の二次装置の整合性（回復可能性）を実現する。
【課題を解決するための手段】
【００１１】
本発明によれば、データ書き込みを順序付けることは、一次記憶装置のグループの少なくとも一部が第１の複数のデータ書き込みを受信すること、一次記憶装置のグループに対してサイクル切り換えを行なうことであって、第１の複数のデータ書き込みはグループ内の各一次記憶装置上の特定のサイクルに関連する、サイクル切り換えを行なうこと、サイクル切り換えを開始した後に、一次記憶装置のグループの少なくとも一部が第２の複数の書き込みを受信することであって、第２の複数の書き込みのすべては各一次記憶装置上の特定のサイクルとは異なるサイクルに関連する、第２の複数の書き込みを受信すること、を含む。サイクル切り換えを開始した後に始められたグループへの書き込みは、サイクル切り換えが完了するまで完了しなくても良い。またデータ書き込みを順序付けることには、サイクル切り換えが完了した後に、グループの各一次記憶装置が、第１の複数の書き込みを対応する二次記憶装置に転送することを開始することが含まれていても良い。またデータ書き込みを順序付けることは、グループの一次記憶装置の各々が第１の複数の書き込みを対応する二次記憶装置に転送することを完了した後に、一次記憶装置の各々が、対応する二次記憶装置にメッセージを送ることを含んでいても良い。またデータ書き込みを順序付けることは、第１の複数のデータ書き込みを一次記憶装置のグループのキャッシュ・スロットに送ることを含んでいても良い。また第１の複数のデータ書き込みを受信することは、ホストから複数のデータ書き込みを受信することを含んでいても良い。ホストがサイクル切り換えを引き起こしても良い。またデータ書き込みを順序付けることは、所定の時間待機すること、記憶装置のグループのすべての一次記憶装置が切り換えに対して準備完了であるか否かを判定すること、グループの一次記憶装置の各々に対して、サイクル切り換えを引き起こすための第１のコマンドを送ること、を含んでいても良い。またサイクル切り換えを行なうためのコマンドを送ることは、第１のコマンドの後に始められた書き込みを、第２のコマンドが受信されるまで完了させなくても良い。またデータ書き込みを順序付けることは、グループのすべての一次記憶装置に第１のコマンドを送った後に、すべての一次記憶装置に第２のコマンドを送って、書き込みを完了させることを含んでいても良い。
【００１２】
さらに本発明によれば、一次記憶装置のグループに対するデータ書き込みを順序付けるコンピュータ・ソフトウェアは、一次記憶装置のグループに対するサイクル切り換えを行なう実行可能コードであって、第１の複数のデータ書き込みはグループ内の各一次記憶装置上の特定のサイクルに関連する、実行可能コードと、サイクル切り換えを開始した後に行なわれる第２の複数の書き込みに対して、第２の複数の書き込みのすべてを各一次記憶装置上の特定のサイクルとは異なるサイクルに関連させる実行可能コードと、を含んでいる。サイクル切り換えを開始した後に始められたグループへの書き込みは、サイクル切り換えが完了するまで完了しなくても良い。またコンピュータ・ソフトウェアは、サイクル切り換えが完了した後に、第１の複数の書き込みを対応する二次記憶装置に転送することをグループの各一次記憶装置に開始させる実行可能コードを含んでいても良い。またコンピュータ・ソフトウェアは、グループの各一次記憶装置が第１の複数の書き込みを対応する二次記憶装置に転送することを完了した後に、各一次記憶装置に、対応する二次記憶装置にメッセージを送らせる実行可能コードを含んでいても良い。またコンピュータ・ソフトウェアは、第１の複数のデータ書き込みを一次記憶装置のグループのキャッシュ・スロットに送る実行可能コードを含んでいても良い。第１の複数のデータ書き込みは、ホストからであっても良い。ホストは、サイクル切り換えを行なう実行可能コードを実行しても良い。サイクル切り換えを行なう実行可能コードは、所定の時間待機する実行可能コード、記憶装置のグループのすべての一次記憶装置が切り換えに対して準備完了であるか否かを判定する実行可能コード、およびサイクル切り換えを行なうための第１のコマンドをグループの各一次記憶装置に送る実行可能コードを、含んでいても良い。またサイクル切り換えを行なうためのコマンドを送る実行可能コードは、第１のコマンドの後に始められた書き込みを第２のコマンドが受信されるまで完了させなくても良い。またコンピュータ・ソフトウェアは、第１のコマンドをグループのすべての一次記憶装置に送った後に、書き込みを完了させるための第２のコマンドをすべての一次記憶装置に送るための実行可能コードを含んでいても良い。
【発明を実施するための最良の形態】
【００１３】
図１を参照すると、ダイアグラム２０は、ホスト２２、ローカル記憶装置２４、および遠隔記憶装置２６の間の関係を示している。ホスト２２は、ホスト・アダプタ（ＨＡ：Host Adapter）２８を介してローカル記憶装置２４との間でデータの読み出しおよび書き込みを行なう。ホスト・アダプタ（ＨＡ）２８によって、ホスト２２とローカル記憶装置２４との間のインターフェースが容易になる。ダイアグラム２０は１つのホスト２２および１つのＨＡ２８のみを示しているが、当業者であれば理解するように、複数のＨＡを用いても良く、さらに１つまたは複数のＨＡに１つまたは複数のホストが結合されていても良い。
【００１４】
ローカル記憶装置２４からのデータを、ＲＤＦリンク２９を介して遠隔記憶装置２６にコピーして、遠隔記憶装置２６上のデータをローカル記憶装置２４上のデータと同一にする。１つのリンク２９のみを示しているが、記憶装置２４と２６との間にさらなるリンクを有すること、記憶装置２４と２６とのうちの一方または両方と、他の記憶装置（図示せず）との間にリンクを有することが可能である。なお、ローカル記憶装置２４から遠隔記憶装置２６にデータを転送する間に時間遅延があっても良く、その結果、遠隔記憶装置２６には、ある特定の時点において、ローカル記憶装置２４上のデータとは同一でないデータが含まれていても良い。ＲＤＦを用いた通信は、たとえば米国特許第５，７４２，７９２号明細書で説明されている。なおこの文献は、本明細書において参照により取り入れられている。
【００１５】
ローカル記憶装置２４には、第１の複数のＲＤＦアダプタ・ユニット（ＲＡ）３０ａ，３０ｂ，３０ｃが含まれ、遠隔記憶装置２６には、第２の複数のＲＡ３２ａ〜３２ｃが含まれている。ＲＡ３０ａ〜３０ｃ，３２ａ〜３２ｃは、ＲＤＦリンク２９に結合されていて、ホスト・アダプタ２８と同様であるが、記憶装置２４と２６との間でデータを転送するために用いられている。ＲＡ３０ａ〜３０ｃ，３２ａ〜３２ｃとともに用いられるソフトウェアについては、後に詳細に説明する。
【００１６】
記憶装置２４，２６には、１つまたは複数のディスクが含まれていても良く、各ディスクは、記憶装置２４，２６のそれぞれに記憶されるデータの異なる部分を収容する。図１に示す記憶装置２４には、複数のディスク３３ａ，３３ｂ，３３ｃが含まれ、記憶装置２６には、複数のディスク３４ａ，３４ｂ，３４ｃが含まれている。本明細書で説明するＲＤＦ機能は、ローカル記憶装置２４のディスク３３ａ〜３３ｃの少なくとも一部に対するデータが、遠隔記憶装置２６のディスク３４ａ〜３４ｃの少なくとも一部に、ＲＤＦを用いてコピーされるように、適用される。記憶装置２４，２６の他のデータを記憶装置２４と２６との間でコピーせず、したがってこのデータが同一ではないようにすることもできる。
【００１７】
ディスク３３ａ〜３３ｃはそれぞれ、対応するディスク・アダプタ・ユニット（ＤＡ）３５ａ，３５ｂ，３５ｃに結合されている。ディスク・アダプタ・ユニット３５ａ，３５ｂ，３５ｃは、ディスク３３ａ〜３３ｃの対応する１つにデータを送り、ディスク３３ａ〜３３ｃの対応する１つからデータを受信する。同様に、遠隔記憶装置２６の複数のＤＡ３６ａ，３６ｂ，３６ｃは、ディスク３４ａ〜３４ｃの対応する１つにデータを送り、ディスク３４ａ〜３４ｃの対応する１つからデータを受信するために用いられる。ローカル記憶装置２４のＤＡ３５ａ〜３５ｃ，ＨＡ２８，およびＲＡ３０ａ〜３０ｃの間に、内部データ・パスが存在する。同様に、遠隔記憶装置２６のＤＡ３６ａ〜３６ｃとＲＡ３２ａ〜３２ｃとの間に、内部データ・パスが存在する。なお他の実施形態では、複数のディスクが１つのＤＡによってサービスされることが可能であり、さらに複数のＤＡが１つのディスクにサービスすることも可能である。
【００１８】
またローカル記憶装置２４には、グローバル・メモリ３７が含まれている。グローバル・メモリ３７を用いて、ＤＡ３５ａ〜３５ｃ，ＨＡ２８，およびＲＡ３０ａ〜３０ｃの間でのデータ転送を容易にすることができる。メモリ３７には、ＤＡ３５ａ〜３５ｃ，ＨＡ２８，およびＲＡ３０ａ〜３０ｃのうちの１つまたは複数によって行なわれるべきタスクと、ディスク３３ａ〜３３ｃのうちの１つまたは複数からフェッチされるデータに対するキャッシュとが収容されていても良い。同様に、遠隔記憶装置２６には、グローバル・メモリ３８が含まれている。グローバル・メモリ３８には、ＤＡ３６ａ〜３６ｃおよびＲＡ３２ａ〜３２ｃのうちの１つまたは複数によって行なわれるべきタスクと、ディスク３４ａ〜３４ｃのうちの１つまたは複数からフェッチされるデータに対するキャッシュとが収容されていても良い。メモリ３７，３８を用いることについては、後に詳細に説明する。
【００１９】
ディスク３３ａ〜３３ｃに対応するローカル記憶装置２４内の記憶スペースを再分割して、複数のボリュームまたは論理装置にしても良い。論理装置は、ディスク３３ａ〜３３ｃの物理的な記憶スペースに対応しても良いし、対応しなくても良い。したがって、たとえば、ディスク３３ａに複数の論理装置が収容されていても良いし、あるいは、単一の論理装置が、ディスク３３ａ，３３ｂの両方に及ぶこともある。同様に、ディスク３４ａ〜３４ｃを備える遠隔記憶装置２６に対する記憶スペースを再分割して、複数のボリュームまたは論理装置にしても良い。この場合、各論理装置は、ディスク３４ａ〜３４ｃのうちの１つまたは複数に対応しても良いし、対応しなくても良い。
【００２０】
ローカル記憶装置２４および遠隔記憶装置２６の一部の間でＲＤＦマッピングを実現することは、ローカル記憶装置２４上の論理装置に対する遠隔ミラーである遠隔記憶装置２６上の論理装置を設定することを伴う。ホスト２２は、ローカル記憶装置２４上の論理装置との間でデータの読み出しおよび書き込みを行なう。ＲＤＦマッピングによって、ローカル記憶装置２４から遠隔記憶装置２６に変更データが、ＲＡ３０ａ〜３０ｃ，３２ａ〜３２ｃ，およびＲＤＦリンク２９を用いて転送される。定常状態の動作では、遠隔記憶装置２６上の論理装置には、ローカル記憶装置２４上の論理装置のデータと同一のデータが収容されている。ホスト２２がアクセスするローカル記憶装置２４上の論理装置を、「Ｒ１ボリューム」（または単に「Ｒ１」）と呼ぶ。Ｒ１ボリューム上のデータのコピーを収容する遠隔記憶装置２６上の論理装置を、「Ｒ２ボリューム」（または単に「Ｒ２」）と呼ぶ。したがって、ホストは、Ｒ１ボリュームとの間でデータの読み出しおよび書き込みを行ない、ＲＤＦは、Ｒ１ボリュームからＲ２ボリュームへのデータの自動コピーおよび更新を取り扱う。
【００２１】
図２を参照すると、ホスト２２から、ローカル記憶装置２４、および遠隔記憶装置２６までのデータの経路が例示されている。ローカル記憶装置２４のデータ要素５１によって例示されるように、ホスト２２からローカル記憶装置２４に書き込まれるデータが、局所的に記憶される。またホストがローカル記憶装置２４に書き込むデータは、ローカル記憶装置２４によってリンク２９を介して遠隔記憶装置２６に送られるとともに、ローカル記憶装置２４によって維持される。
【００２２】
本明細書で説明するシステムでは、ホスト２２による各データ書き込み（たとえば記録、複数の記録、トラックなど）に、シーケンス番号が割り当てられる。シーケンス番号は、書き込みに関連する適切なデータ・フィールドにおいて与えても良い。図２では、ホスト２２による書き込みには、シーケンス番号Ｎが割り当てられると示されている。シーケンス番号Ｎが割り当てられているホスト２２によって行なわれる書き込みはすべて、データの単一領域５２に集められる。領域５２は、ほぼ同時に行なわれるホスト２２による複数の別個の書き込みを表わしている。
【００２３】
一般的に、ローカル記憶装置２４は、１つのシーケンス番号の領域を蓄積する一方で、以前に蓄積された領域（以前のシーケンス番号を有する）を遠隔記憶装置２６に送信する。したがって、ローカル記憶装置２４が、シーケンス番号Ｎが割り当てられたホスト２２からの書き込みを蓄積している間に、以前のシーケンス番号（Ｎ−１）に対して行なわれた書き込みは、ローカル記憶装置２４からリンク２９を介して遠隔記憶装置２６に送信される。領域５４が示すのは、シーケンス番号Ｎ−１が割り当てられ遠隔記憶装置２６にはまだ送信されていないホスト２２からの書き込みである。
【００２４】
遠隔記憶装置２６は、シーケンス番号Ｎ−１が割り当てられた書き込みに対応する領域５４からのデータを受信して、シーケンス番号Ｎ−１を有するホスト書き込みの新しい領域５６を構築する。データは、リンク２９を越えて送られるデータを確認応答する適切なＲＤＦプロトコルを用いて送信される。遠隔記憶装置２６が領域５４からのデータをすべて受信すると、ローカル記憶装置２４は、遠隔記憶装置２６にコミット・メッセージを送って、領域５６に対応するＮ−１のシーケンス番号が割り当てられたデータをすべてコミットする。一般的に、特定のシーケンス番号に対応する領域がコミットされたら直ちに、その領域を論理記憶装置に書き込んでも良い。このことは、図２に例示されている。図２では、領域５８が、シーケンス番号Ｎ−２が割り当てられた書き込みに対応している（すなわち、現在のシーケンス番号の２つ前が、ホスト２２によるローカル記憶装置２６への書き込みと関連して用いられている）。図２では、領域５８は、遠隔記憶装置２６に対するディスク記憶装置を表わすデータ要素６２に書き込まれるとして示されている。したがって、遠隔記憶装置２６が、シーケンス番号Ｎ−１に対応する領域５６を受信および蓄積する間に、以前のシーケンス番号（Ｎ−２）に対応する領域５８が、データ要素６２によって例示される遠隔記憶装置２６のディスク記憶装置に書き込まれる。いくつかの実施形態では、領域５８に対するデータは、書き込みに対してマーキングされ（しかし必ずしも即座には書き込まれない）、一方で、領域５６に対するデータはマーキングされない。
【００２５】
したがって動作中は、ホスト２２がデータをローカル記憶装置２４に書き込み、データは、データ要素５１に局所的に記憶されるとともに領域５２に蓄積される。特定のシーケンス番号に対するデータがすべて蓄積されたら直ちに（本明細書の他の場所で説明されている）、ローカル記憶装置２４がシーケンス番号を増加させる。現在のシーケンス番号よりも小さい番号に対応する領域５４からのデータは、ローカル記憶装置２４からリンク２９を介して遠隔記憶装置２６に転送される。領域５８は、遠隔記憶装置２６にメッセージを送るローカル記憶装置２４がコミットしたシーケンス番号に対するデータに対応する。領域５８からのデータは、遠隔記憶装置２６のディスク記憶装置に書き込まれる。
【００２６】
なお領域５２，５４，５６，５８のうちの特定の１つにおける書き込みは、必ずしも順序付けられない。しかし、本明細書の他の場所で詳細に説明されているように、シーケンス番号Ｎ−２に対応する領域５８への書き込みはすべて、シーケンス番号Ｎ−１に対応する領域５４，５６への書き込みの何れかを始める前に始められている。加えて、シーケンス番号Ｎ−１に対応する領域５４，５６に対するすべての書き込みは、シーケンス番号Ｎに対応する領域５２への書き込みの何れかを始める前に始められている。したがって、ローカル記憶装置２４と遠隔記憶装置２６との間で通信故障が起きた場合には、遠隔記憶装置２６は、最後のコミットされたデータ領域（図２の例では領域５８）の書き込みを単に完了しても良く、そして次のことが保障され得る。すなわち、遠隔記憶装置２６におけるデータの状態は、データ要素６２が、ある特定の時点の前に始められた書き込みをすべて収容し、その時点の後に始められた書き込みは収容しないという意味で順序付けられる。したがってＲ２には常に、Ｒ１のポイント・イン・タイム・コピーが収容され、Ｒ２装置から整合性のある画像を再確立することができる。
【００２７】
図３を参照すると、ダイアグラム７０は、領域５２，５４を構築および維持するために用いられる項目を例示している。標準の論理装置７２は、ホスト２２が書き込むデータを収容し、図２のデータ要素５１および図１のディスク３３ａ〜３３ｃに対応する。標準の論理装置７２は、ホスト２２がローカル記憶装置２４に書き込むデータを収容する。
【００２８】
標準の論理装置７２とともに、ポインタのリンクされた２つのリスト７４，７６が用いられる。リンクされたリスト７４，７６は、たとえばローカル記憶装置２４のメモリ３７に記憶しても良いデータに対応する。リンクされたリスト７４には、複数のポインタ８１〜８５が収容されている。各ポインタは、ローカル記憶装置２４とともに用いられるキャッシュ８８のスロットを示す。同様に、リンクされたリスト７６には、複数のポインタ９１〜９５が収容されている。各ポインタは、キャッシュ８８のスロットを示す。いくつかの実施形態では、キャッシュ８８を、ローカル記憶装置２４のメモリ３７内に設けても良い。キャッシュ８８には、複数のキャッシュ・スロット１０２〜１０４が収容されている。キャッシュ・スロット１０２〜１０４は、標準の論理装置７２への書き込みとともに用いても良く、同時に、リンクされたリスト７４，７６とともに用いても良い。
【００２９】
リンクされたリスト７４，７６はそれぞれ、データ領域５２，５４の一方に対して用いても良い。その結果、たとえば、リンクされたリスト７４が、シーケンス番号Ｎに対するデータ５２の領域に対応しても良く、一方で、リンクされたリスト７６が、シーケンス番号Ｎ−１に対するデータ５４の領域に対応しても良い。したがって、ホスト２２がデータをローカル記憶装置２４に書き込むと、データはキャッシュ８８に送られ、場合によっては（本明細書の他の場所で説明されている）、リンクされたリスト７４の適切なポインタが形成される。データは、標準の論理装置７２にデータがデステージされて、リンクされたリスト７４のポインタ８１〜８５のうちの１つによってデータが示されることがもはやなくなるまで、キャッシュ８８から取り除かれることはない。これは、本明細書の他の場所で説明されている通りである。
【００３０】
本明細書における実施形態では、リンクされたリスト７４，７６のうちの一方は「アクティブ」であるとみなされ、他方は「非アクティブ」であるとみなされる。すなわち、たとえばシーケンス番号Ｎが偶数であるときに、リンクされたリスト７４はアクティブで、リンクされたリスト７６は非アクティブであっても良い。リンクされたリスト７４，７６のうちのアクティブなリストは、ホスト２２からの書き込みを取り扱い、一方で、リンクされたリスト７４，７６のうちの非アクティブなリストは、ローカル記憶装置２４から遠隔記憶装置２６に送信されているデータに対応する。
【００３１】
ホスト２２が書き込むデータが、リンクされたリスト７４，７６のうちのアクティブなリスト（シーケンス番号Ｎに対する）を用いて蓄積される一方で、リンクされたリスト７４，７６のうちの非アクティブなリスト（以前のシーケンス番号Ｎ−１に対する）に対応するデータが、ローカル記憶装置２４から遠隔記憶装置２６に送信される。ＲＡ３０ａ〜３０ｃは、リンクされたリスト７４，７６を用いて、ローカル記憶装置２４から遠隔記憶装置２６に送信すべきデータを判定する。
【００３２】
リンクされたリスト７４，７６のうちの一方のリストにおけるポインタの特定の１つに対応するデータが遠隔記憶装置２６に送信されると直ちに、ポインタの特定の１つを、リンクされたリスト７４，７６のうちの適切なリストから取り除いても良い。加えて、データを、キャッシュ８８から取り除くことに対してマーキングしても良い（すなわちスロットを、スロットのプールに戻して、後に関連のないことに使用できるようにしても良い）。なお、これは、スロット内のデータが、そうでない場合に他の目的（たとえば、標準の論理装置７２にデステージされること）に対して必要とされない場合である。すべての装置がもはやデータを使用していない状態になるまでキャッシュ８８からデータが取り除かれないことを保証するためのメカニズムを用いても良い。このようなメカニズムは、たとえば以下の文献に記載されている。米国特許第５，５３７，５６８号明細書（１９９６年７月１６日付与）、および米国特許出願第０９／８５０，５５１号明細書（２００１年７月７日出願）。いずれも本明細書において参照により取り入れられている。
【００３３】
図４を参照すると、スロット１２０には、キャッシュ８８のスロット１０２〜１０４のうちの１つと同様に、ヘッダ１２２およびデータ１２４が含まれている。ヘッダ１２２は、スロット１２０を管理するためにシステムが用いるオーバーヘッド情報に対応する。データ１２４は、スロット１２０に（一時的に）記憶されているディスクからの対応するデータである。ヘッダ１２２における情報には、ディスクに戻るポインタ、タイム・スタンプなどが含まれる。
【００３４】
ヘッダ１２２には、本明細書で説明するシステムとともに用いられるキャッシュ・スタンプ１２６も含まれている。本明細書における実施形態では、キャッシュ・スタンプ１２６は、８バイトである。そのうちの２バイトは、スロット１２０が本明細書で説明するシステムによって用いられているかどうかを示す「パスワード」である。他の実施形態では、パスワードは１バイトであっても良く、次のバイトをパッド用に使用する。本明細書の他の場所で説明されているように、２バイトのパスワード（または１バイト、場合による）が特定の値に等しいということは、スロット１２０が、リンクされたリスト７４，７６の少なくとも１つのエントリによって示されていることを示す。パスワードが特定の値に等しくないということは、スロット１２０が、リンクされたリスト７４，７６のエントリによって示されないことを示す。パスワードの使用方法については、本明細書の他の場所で説明されている。
【００３５】
またキャッシュ・スタンプ１２６には、スロット１２０のデータ１２４のシーケンス番号（たとえば、Ｎ，Ｎ−１，Ｎ−２など）を表示する２バイトのフィールドも含まれている。本明細書の他の場所で説明されているように、キャッシュ・スタンプ１２６のシーケンス番号フィールドを用いて、本明細書で説明した処理を容易にしても良い。キャッシュ・スタンプ１２６の残りの４バイトは、ポインタ用に用いても良い。これは本明細書の他の場所で説明されている通りである。当然のことながら、２バイトのシーケンス番号および４バイトのポインタが有効であるのは、パスワードが特定の値に等しく、スロット１２０がリスト７４，７６のうちの一方における少なくとも１つのエントリによって示されることを示す場合だけである。
【００３６】
図５を参照すると、フロー・チャート１４０は、ホスト２２が書き込み動作を行なうこととともにＨＡ２８によって行なわれるステップを例示している。当然のことながら、ホスト２２が書き込みを行なう場合、データがＲ１／Ｒ２のＲＤＦグループの一部であるか否かかとは関係なく、通常の方法で書き込みを取り扱うための処理が行なわれる。たとえば、ホスト２２がディスクの一部に対してデータを書き込む場合、書き込みは、最終的にディスクにデステージされるキャッシュ・スロットに対して行なわれる。キャッシュ・スロットは、新しいキャッシュ・スロットであっても良いし、同じトラックに対する以前の読み出しおよび／または書き込み動作とともに形成されたすでに存在しているキャッシュ・スロットであっても良い。
【００３７】
処理は、第１のステップ１４２から始まる。ここでは、書き込みに対応するスロットがロックされる。本明細書における実施形態では、キャッシュ８８のスロット１０２〜１０４はそれぞれ、標準の論理装置７２上のデータのトラックに対応する。ステップ１４２でスロットをロックすることによって、フロー・チャート１４０のステップに対応する処理がＨＡ２８によって行なわれる間に、さらなるプロセスが当該のスロット上で動作することが防止される。
【００３８】
ステップ１４２の次はステップ１４４であり、ここではＮ（シーケンス番号）に対する値が設定される。本明細書の他の場所で説明されているように、ステップ１４４において得られるシーケンス番号に対する値は、スロットがロックされている間にＨＡ２８が行なう書き込み動作全体の間、維持される。本明細書の他の場所で説明されているように、シーケンス番号を各書き込みに割り当てて、書き込みが属するデータ領域５２，５４の一方を設定する。ホスト２２が行なう書き込みには、現在のシーケンス番号を割り当てる。単一の書き込み動作が同じシーケンス番号を維持し続けることが有用である。
【００３９】
ステップ１４４の次は判定ステップ１４６である。ここでは、キャッシュ・スロットのパスワード・フィールドが有効か否かが判定される。前述したように、本明細書で説明するシステムでは、パスワード・フィールドを所定の値に設定して、キャッシュ・スロットがすでにポインタのリンクされたリスト７４，７６のうちの一方にあることを示す。判定ステップ１４６で判定されるのは、パスワード・フィールドが有効ではない（スロットが新しく、リスト７４，７６からのポインタがスロットを示さないことを示す）か否かである。次に制御は、ステップ１４６からステップ１４８に移る。ここでは、新しいスロットのキャッシュ・スタンプが設定される。設定は、パスワードを所定の値に設定し、シーケンス番号フィールドをＮに設定し、ポインタ・フィールドをゼロに設定することによって、行なわれる。他の実施形態では、ポインタ・フィールドを、スロット自体を示すように設定しても良い。
【００４０】
ステップ１４８の次はステップ１５２である。ここでは、ポインタ・リスト７４，７６のうちのアクティブなリストに、新しいスロットに対するポインタが加えられる。本明細書における実施形態では、リスト７４，７６は、循環の二重にリンクされたリストであり、新しいポインタは、循環の二重にリンクされたリストに従来の方法で加えられる。当然のことながら、他の適切なデータ構造を用いてリスト７４，７６を管理することもできる。ステップ１５２の次はステップ１５４であり、ここではフラッグが設定される。ステップ１５４では、ＲＤＦ＿ＷＰフラッグ（ＲＤＦ書き込み保留中フラッグ）の設定を、ＲＤＦを用いてスロットを遠隔記憶装置２６に送信する必要があることを示すように行なう。加えて、ステップ１５４では、ＩＮ＿ＣＡＣＨＥフラッグの設定を、スロットを標準の論理装置７２にデステージする必要があることを示すように行なう。ステップ１５４の次はステップ１５６であり、ここでは、ホスト２２およびＨＡ２８が書き込んでいるデータを、スロットに書き込む。ステップ１５６の次はステップ１５８であり、ここでは、スロットのロックを解除する。ステップ１５８に続いて、処理が完了する。
【００４１】
判定ステップ１４６において、スロットのパスワード・フィールドが有効である（スロットがリスト７４，７６の少なくとも１つのポインタによってすでに示されていることを表す）と判定された場合には、制御はステップ１４６から判定ステップ１６２に移る。ここでは、スロットのシーケンス番号フィールドが、現在のシーケンス番号Ｎに等しいか否かが判定される。なお、有効なパスワードを伴うスロットのシーケンス番号フィールドに対しては、２つの有効な可能性が存在する。シーケンス番号フィールドが、Ｎ（現在のシーケンス番号）に等しい可能性がある。これが起きるのは、スロットが、シーケンス番号Ｎを伴う以前の書き込みに対応する場合である。他方の可能性は、シーケンス番号フィールドがＮ−１に等しいことである。これが起きるのは、スロットが、シーケンス番号Ｎ−１を伴う以前の書き込みに対応する場合である。シーケンス番号フィールドに対する他の値は、どれも無効である。したがって、いくつかの実施形態においては、ステップ１６２においてエラー／有効性のチェッキングを含むこと、またはおそらくエラー／有効性のチェッキングを別個のステップにすることが、可能であっても良い。このようなエラーは、適切であればいかなる方法で取り扱っても良い。このような方法には、ユーザにメッセージを送ることが含まれていても良い。
【００４２】
ステップ１６２において、スロットのシーケンス番号フィールドにおける値が現在のシーケンス番号Ｎに等しいと判定された場合には、特別な処理は必要とされず、制御はステップ１６２から前述のステップ１５６に移って、データがスロットに書き込まれる。そうではなく、シーケンス番号フィールドの値がＮ−１（唯一の他の有効な値）である場合には、制御はステップ１６２からステップ１６４に移って、新しいスロットを得る。ステップ１６４で得られる新しいスロットを用いて、書き込まれているデータを記憶しても良い。
【００４３】
ステップ１６４の次はステップ１６６であり、ここでは、古いスロットからのデータを、ステップ１６４で得られた新しいスロットにコピーする。なお、コピーされるデータにはＲＤＦ＿ＷＰフラッグが含まれている。このフラッグは、ステップ１５４において、スロットが最初に形成されたときの以前の書き込みに対して、設定されているはずである。ステップ１６６の次はステップ１６８であり、ここでは、新しいスロットに対するキャッシュ・スタンプを設定する。設定は、パスワード・フィールドを適切な値に設定し、シーケンス番号フィールドを現在のシーケンス番号Ｎに設定し、ポインタ・フィールドを古いスロットを示すように設定することによって行なう。ステップ１６８の次はステップ１７２であり、ここでは、新しいスロットに対するポインタを、リンクされたリスト７４，７６のうちのアクティブなリストに加える。ステップ１７２の次は、前述のステップ１５６であり、データをスロット（この場合は新しいスロット）に書き込む。
【００４４】
図６を参照すると、フロー・チャート２００は、ＲＡ３０ａ〜３０ｃがリスト７２，７４のうちの非アクティブなリストを走査してＲＤＦデータをローカル記憶装置２４から遠隔記憶装置２６に送信することとともに行なわれるステップを例示している。前述したように、ホストがリスト７２，７４のうちのアクティブなリストを用いてＮサイクルをＲ１装置に書き込んでいるときに、リスト７２，７４のうちの非アクティブなリストは、Ｒ１装置に対するＮ−１サイクルに対応するスロットを示す。
【００４５】
処理は、第１のステップ２０２から始まる。ここでは、リスト７２，７４のうちお非アクティブなリストに、何らかのエントリが存在するか否かが判定される。データが送信されると、対応するエントリが、リスト７２，７４のうちの非アクティブなリストから取り除かれる。加えて、新しい書き込みが、リスト７２，７４のうちのアクティブなリストに送られ、一般的に、リスト７２，７４のうちの非アクティブなリストには送られない。このため、リスト７２，７４のうちの非アクティブなリストが、ある特定の時間にデータを収容していない可能性がある（かつ望ましい。これは本明細書の他の場所で説明されている通りである）。ステップ２０２において、送信すべきデータが存在しないと判定された場合には、データが利用可能になるまで、リスト７２，７４のうちの非アクティブなリストを連続的にポーリングする。送信用データが、サイクル切り換え（本明細書の他の場所で説明されている）とともに利用可能になる。サイクル切り換えでは、リスト７２，７４のうちの非アクティブなリストがリスト７２，７４のうちのアクティブなリストになる。逆もまた同様である。
【００４６】
ステップ２０２において、送信するために利用可能なデータが存在すると判定された場合には、制御はステップ２０２からステップ２０４に移る。ここでは、スロットが正しいことが検証される。ステップ２０４で行なわれる処理は、任意的な「サニティ・チェック」である。このチェックには、パスワード・フィールドが正しいことの検証と、シーケンス番号フィールドが正しいことの検証とが、含まれていても良い。スロット内に不正確な（予想外の）データが存在する場合には、エラー処理を行なっても良い。エラー処理には、ユーザにエラーとおそらくエラー・リカバリ処理とを通知することが含まれていても良い。
【００４７】
ステップ２０４の次はステップ２１２であり、ここでは、データをＲＤＦを介して従来の方法で送る。本明細書における実施形態では、スロット全体が送信されてはいない。むしろ、適切なミラー・ビット組（記録が変わったことを示す）を有するスロット内の記録のみが、遠隔記憶装置２６に送信される。しかし、他の実施形態では、遠隔記憶装置２６が、適切なミラー・ビット組を有する記録に対応するデータのみを書き込んで、トラックに対する他のデータ（有効であるかも知れないし、有効でないかも知れない）を無視するならば、スロット全体を送信することが可能であっても良い。ステップ２１２の次は判定ステップ２１４であり、ここでは、送信されたデータがＲ２装置によって確認応答されたか否かが判定される。確認応答されていない場合には、データが再び送られる。これは、ステップ２１４からステップ２１２に戻るフローによって示されている通りである。他の実施形態では、さらに複雑な種々の処理を用いて、データを送りその受け取りに確認応答しても良い。このような処理には、エラー報告と、データを送るある特定の数の試みが失敗した後に行なわれる代替的な処理とが、含まれていても良い。
【００４８】
判定ステップ２１４において、データの送信に成功したと判定されたら直ちに、制御はステップ２１４からステップ２１６に移って、ＲＤＦ＿ＷＰフラッグをクリアする（なぜならば、ＲＤＦを介したデータの送信に成功したからである）。ステップ２１６の次は判定ステップ２１８である。ここでは、スロットが、リスト７２，７４のうちの非アクティブなリストに既存のエントリをすでに有しているスロットへの書き込みとともに形成される複製スロットであるか否かが判定される。この可能性については、ステップ１６２，１６４，１６６，１６８，１７２に関連して前述している。ステップ２１８において、スロットが複製スロットであると判定された場合には、制御はステップ２１８からステップ２２２に移る。ここでは、スロットは、利用可能なスロット（再利用するため）のプールに戻される。加えて、スロットを、他のスロットの前に直ちに再利用できるように、エージング（または他の何らかの適切なメカニズムをスロットに適用）しても良い。なぜならば、スロット内に存在するデータは、他のどんな目的に対しても有効ではないからである。ステップ２２２の後、またはステップ２１８においてスロットが複製スロットでない場合には、ステップ２２４に続く。ここでは、スロットのパスワード・フィールド・ヘッダをクリアして、スロットの再利用時に、図５のステップ１４６の判定によってスロットが新しいスロットとして適切に分類されるようにする。
【００４９】
ステップ２２４の次はステップ２２６であり、ここでは、リスト７２，７４のうちの非アクティブなリストにおけるエントリが取り除かれる。ステップ２２６に続いて、制御は前述のステップ２０２に戻る。ここでは、転送する必要があるデータに対応してリスト７２，７４の非アクティブなリストにさらなるエントリが存在するか否かが判定される。
【００５０】
図７を参照すると、ダイアグラム２４０は、遠隔記憶装置２６が用いる領域５６，５８の形成および操作を例示している。リンク２９を介して遠隔記憶装置２６が受信するデータが、遠隔記憶装置２６のキャッシュ２４２に送られる。キャッシュ２４２は、たとえば、遠隔記憶装置２６のメモリ３８内に設けられていても良い。キャッシュ２４２には、複数のキャッシュ・スロット２４４〜２４６が含まれている。各キャッシュ・スロットは、標準の論理記憶装置２５２のトラックに対してマッピングされていても良い。キャッシュ２４２は、図３のキャッシュ８８と同様であり、遠隔記憶装置２６の標準の論理記憶装置２５２にデステージすることができるデータを収容しても良い。標準の論理記憶装置２５２は、図２に示すデータ要素６２と図１に示すディスク３４ａ〜３４ｃとに対応する。
【００５１】
また遠隔記憶装置２６は、一対のキャッシュ・オンリー仮想装置（ＣＯＶＤ：Cache Only Virtual Device ）２５４，２５６を収容している。キャッシュ・オンリー仮想装置２５４，２５６は、たとえば遠隔記憶装置２６のメモリ３８に記憶しても良い装置テーブルに対応した。各キャッシュ・オンリー仮想装置２５４，２５６のテーブルの各トラック・エントリは、標準の論理装置２５２のトラックを示すか、あるいはキャッシュ２４２のスロットを示す。キャッシュ・オンリー仮想装置は、同時係属中の米国特許出願、発明の名称「キャッシュ・オンリー仮想装置」（２００３年３月２５日出願）、第１０／３９６，８００号明細書に記載されている。なお、この文献は本明細書において参照により取り入れられている。
【００５２】
複数のキャッシュ・スロット２４４〜２４６は、標準の論理装置２５２への書き込みとともに用いても良く、同時に、キャッシュ・オンリー仮想装置２５４，２５６とともに用いても良い。本明細書における実施形態では、キャッシュ・オンリー仮想装置２５４，２５６の各トラック・テーブル・エントリには、そのトラックに対するデータが標準の論理装置２５２の対応するトラック上に記憶されていることを示すために、ゼロが収容される。その他の場合には、キャッシュ・オンリー仮想装置２５４，２５６のそれぞれに対するトラック・テーブル内のエントリには、キャッシュ２４２内のスロット２４４〜２４６のうちの１つに対するポインタが収容される。
【００５３】
キャッシュ・オンリー仮想装置２５４，２５６はそれぞれ、データ領域５６，５８の一方に対応している。したがって、たとえば、キャッシュ・オンリー仮想装置２５４はデータ領域５６に対応していても良く、一方でキャッシュ・オンリー仮想装置２５６はデータ領域５８に対応していても良い。本明細書における実施形態では、キャッシュ・オンリー仮想装置２５４，２５６のうちの一方を「アクティブ」とみなしても良く、一方でキャッシュ・オンリー仮想装置２５４，２５６の他方を「非アクティブ」とみなしても良い。キャッシュ・オンリー仮想装置２５４，２５６のうちの非アクティブな装置は、ローカル記憶装置２４から受信しているデータ（すなわち領域５６）に対応していても良く、一方でキャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置は、標準の論理装置２５２に復元されて（書き込まれて）いるデータに対応していても良い。
【００５４】
リンク２９を介して受信したローカル記憶装置２４からのデータを、キャッシュ２４２のスロット２４４〜２４６のうちの１つに配置しても良い。キャッシュ・オンリー仮想装置２５４，２５６のうちの非アクティブな装置の対応するポインタを、受信データを示すように設定しても良い。その後のデータは、同じシーケンス番号を有する場合、同様の仕方で処理される。ある時点において、ローカル記憶装置２４から、同じシーケンス番号を用いて送られるすべてのデータをコミットするメッセージが出される。特定のシーケンス番号に対するデータがコミットされたら直ちに、キャッシュ・オンリー仮想装置２５４，２５６のうちの非アクティブな装置がアクティブになる。逆もまた同様である。その時点において、キャッシュ・オンリー仮想装置２５４，２５６のうちの現在アクティブな装置からのデータが、標準の論理装置２５２にコピーされ、一方でキャッシュ・オンリー仮想装置２５４，２５６のうちの非アクティブな装置が、ローカル記憶装置２４から遠隔記憶装置２６に送信される新しいデータ（新しいシーケンス番号を有する）を受信するために用いられる。
【００５５】
キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置（本明細書の他の場所で説明されている）からデータが取り除かれたときに、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置の対応するエントリを、ゼロに設定しても良い。加えて、データをキャッシュ２４４から取り除いても良い（すなわち、スロットを自由なスロットのプールに戻して、後で使用できるようにする）。これは、スロット内のデータが、他の目的（たとえば、標準の論理装置２５２にデステージすること）に対して必要とされない場合である。すべてのミラー（キャッシュ・オンリー仮想装置２５４，２５６を含む）がもはやデータを使用していない状態になるまでデータがキャッシュ２４２から取り除かれることがないことを保証するために、メカニズムを用いても良い。このようなメカニズムは、たとえば、米国特許第５，５３７，５６８号明細書（１９９６年７月１６日付与）および米国特許出願第０９／８５０，５５１号明細書（２００１年７月７日出願）に記載されている。両文献とも、本明細書において参照により取り入れられている。
【００５６】
本明細書の他の場所で説明されているいくつかの実施形態では、遠隔記憶装置２６は、ローカル記憶装置２４が用いるリスト７４，７６のように、リンクされたリスト２５８，２６２を維持しても良い。リスト２５８，２６２には、変更された対応するキャッシュ・オンリー仮想装置２５４，２５６のスロットを識別する情報が収容されていても良い。すなわち、リスト２５８，２６２のうちの一方がキャッシュ・オンリー仮想装置２５４，２５６のうちの一方に対応し、リスト２５８，２６２のうちの他方がキャッシュ・オンリー仮想装置２５４，２５６のうちの他方に対応する。本明細書の他の場所で説明されているように、リスト２５８，２６２を用いて、キャッシュ・オンリー仮想装置２５４，２５６からのデータを標準の論理装置２５２に復元することを容易にしても良い。
【００５７】
図８を参照すると、フロー・チャート２７０は、ローカル記憶装置２４が遠隔記憶装置２６に送信するシーケンス番号コミットに対するデータ処理に関連して遠隔記憶装置２６が行なうステップを例示している。本明細書の他の場所で説明されているように、ローカル記憶装置２４は、周期的にシーケンス番号を増加させる。これが行なわれると、ローカル記憶装置２４は、以前のシーケンス番号に対するデータをすべて送信することを完了して、以前のシーケンス番号に対するコミット・メッセージを送る。
【００５８】
処理は、第１のステップ２７２から始まる。ここでは、コミットを受信する。ステップ２７２の次は判定ステップ２７４であり、ここでは、遠隔記憶装置２６のキャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置が空であるか否かが判定される。本明細書の他の場所で説明されているように、遠隔記憶装置２６のキャッシュ・オンリー仮想装置２５４，２５６のうちの非アクティブな装置は、ＲＤＦを用いて送られるローカル記憶装置２４からのデータを蓄積するために用いられ、一方でキャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置は、標準の論理装置２５２に復元される。
【００５９】
判定ステップ２７４において、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置が空ではないと判定された場合、制御は判定ステップ２７４からステップ２７６に移る。ここでは、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置に対する復元を、さらなる処理を行なう前に完了する。キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置からのデータの復元については、本明細書の他の場所で詳細に説明されている。コミットを取り扱い、次のシーケンス番号に対するデータの復元を始める前に、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置が空であることは、有用である。
【００６０】
ステップ２７６の後、またはステップ２７４においてキャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置が空であると判定された場合には、ステップ２７８に続く。ここでは、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置を非アクティブにする。ステップ２７８の次はステップ２８２であり、ここでは、キャッシュ・オンリー仮想装置２５４，２５６のうちで以前にアクティブな装置（すなわち、ステップ２７８の実行前に非アクティブだった装置）をアクティブにする。ステップ２７８，２８２において、アクティブおよび非アクティブなキャッシュ・オンリー仮想装置２５４，２５６を交換することによって、キャッシュ・オンリー仮想装置２５４，２５６のうちで、現在非アクティブな（かつ空の）装置が、次のシーケンス番号に対するローカル記憶装置２４からのデータの受信を始めるために用意される。
【００６１】
ステップ２８２の次はステップ２８４であり、ここでは、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置が、遠隔記憶装置２６の標準の論理装置２５２に復元される。キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置を標準の論理装置２５２に復元することについては、後に詳細に説明する。しかし、いくつかの実施形態では、ステップ２８４において、復元プロセスは開始されるが必ずしも完了しないことに注意されたい。ステップ２８４の次はステップ２８６であり、ここでは、ローカル記憶装置２４から遠隔記憶装置２６に送られたコミットに対する確認応答がローカル記憶装置２４に戻され、その結果、ローカル記憶装置２４に、コミットが成功したことが通知される。ステップ２８６に続いて、処理は完了する。
【００６２】
図９を参照すると、フロー・チャート３００は、図８のステップ２７６，２８４（遠隔記憶装置２６が、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置を復元する）をより詳細に例示している。処理は、第１のステップ３０２から始まる。ここでは、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置の第１のスロットを示すように、ポインタを設定する。ポインタを用いて、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置の各トラック・テーブル・エントリを繰り返す。キャッシュ・オンリー仮想装置２５４，２５６はそれぞれ、別個に処理される。ステップ３０２の次は判定ステップ３０４であり、ここでは、処理中のキャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置のトラックが、標準の論理装置２５２を示すか否かが判定される。示す場合には、復元するものはない。示さない場合には、制御はステップ３０４からステップ３０６に移る。ここでは、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置の対応するスロットがロックされる。
【００６３】
ステップ３０６の次は判定ステップ３０８であり、ここでは、標準の論理装置２５２の対応するスロットがすでに遠隔記憶装置２６のキャッシュ内にあるか否かが判定される。キャッシュ内にある場合には、制御は判定ステップ３０８からステップ３１２に移る。ここでは、標準の論理装置のスロットがロックされる。ステップ３１２の次はステップ３１４であり、ここでは、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置からのデータが、標準の論理装置２５２に対するキャッシュ内のデータと併合される。ステップ３１４におけるデータの併合には、標準の論理装置に対するデータに、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置の新しいデータを上書きすることが伴う。なお、記録レベル・フラッグを設ける実施形態では、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置からの新しい記録を、キャッシュ内の標準の論理装置２５２の記録に対して単にＯＲすることが可能であっても良い。すなわち、記録がインターリーブされている場合には、必要なことは、変化したキャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置からの記録を用いること、および標準の論理装置２５２のキャッシュ・スロットに記録を送ることのみである。ステップ３１４の次はステップ３１６であり、ここでは、標準の論理装置のスロット２５２のロックが解除される。ステップ３１６の次はステップ３１８であり、ここでは、処理中のキャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置のスロットについても、ロックが解除される。
【００６４】
判定ステップ３０８において、標準の論理装置２５２の対応するスロットがキャッシュ内にないと判定された場合には、制御は判定ステップ３０８からステップ３２２に移る。ここでは、標準の論理装置のスロット２５２に対するトラック・エントリを変えて、標準の論理装置のスロット２５２がキャッシュ内にあると示すように（たとえば、ＩＮ＿ＣＡＣＨＥフラグを設定しても良い）、かつスロット２５２をデステージする必要があると示すようにする。本明細書の他の場所で説明されているように、いくつかの実施形態では、適切なミラー・ビット組を有するトラックの記録のみをデステージする必要があるとしても良い。ステップ３２２の次はステップ３２４であり、ここでは、トラックに対するフラッグを、トラックに対するデータがキャッシュ内にあると示すように設定しても良い。
【００６５】
ステップ３２４の次はステップ３２６であり、ここでは、標準の論理装置２５２に対するスロット・ポインタを、キャッシュ内のスロットを示すように変える。ステップ３２６の次は判定ステップ３２８であり、ここでは、ステップ３２２，３２４，３２６で行なわれる動作が成功したか否かを判定する。場合によっては、「比較および交換」と呼ばれる単一の動作を用いて、ステップ３２２，３２４，３２６を行なっても良い。これらの動作が何らかの理由で成功しない場合には、制御はステップ３２８からステップ３０８に戻って、標準の論理装置２５２の対応するトラックがキャッシュ内にあるか否かが再検査される。他方、判定ステップ３２８において、以前の動作が成功したと判定された場合には、制御は判定ステップ３２８から前述のステップ３１８に移る。
【００６６】
ステップ３１８の次は判定ステップ３３２であり、ここでは、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置（復元中である）のキャッシュ・スロットが、依然として使用中であるか否かが判定される。場合によっては、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置に対するスロットが、他のミラーによって依然として使用中である可能性がある。判定ステップ３３２において、キャッシュ・オンリー仮想装置のスロットが他のミラーによって使用中ではないと判定された場合には、制御は判定ステップ３３２からステップ３３４に移る。ここでは、スロットを解放して、他のプロセスが使用できるようにする（たとえば、利用可能なスロットのプールに復元する。これは本明細書の他の場所で説明されている通りである）。ステップ３３４の次はステップ３３６であり、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置の次のスロットを処理するために次のスロットを示す。なおステップ３３６には、判定ステップ３３２からも到達する。それはステップ３３２において、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置が依然として他のミラーによって使用中であると判定された場合である。なお、ステップ３３６には、判定ステップ３０４からも到達する。それはステップ３０４において、処理中のスロットに対して、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置が標準の論理装置２５２を示すと判定された場合である。ステップ３３６の次は判定ステップ３３８であり、ここでは、処理すべきキャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置のスロットがまだ存在するか否かを判定する。存在しない場合には、処理は完了する。存在する場合には、制御は判定ステップ３３８からステップ３０４に戻る。
【００６７】
他の実施形態では、遠隔記憶装置２６上のＮ−１サイクルに対応するデータの受信領域５６に対する変更されるスロットのリスト（たとえば図７に示すリスト２５８，２６２）を構築することができる。データを受信したら、遠隔記憶装置２６は、変更されるスロットのリンクされたリストを構築する。構築されるリストは、循環であっても良いし、線形（ＮＵＬＬ終端を伴う）であっても良いし、適切であれば他のいかなる構成あっても良い。そしてリストを用いて、キャッシュ・オンリー仮想装置２５４，２５６のうちのアクティブな装置を復元しても良い。
【００６８】
図９のフロー・チャート３００では、変更されるスロットのリストを用いる実施形態の動作を例示する２つの代替的な経路３４２，３４４を示している。ステップ３０２では、ポインタ（変更されるスロットのリストを繰り返すために用いられる）が、リストの第１の要素を示すようにされる。ステップ３０２の次はステップ３０６であり、ここには、代替的な経路３４２を通って到達される。変更されるスロットのリストを用いる実施形態では、判定ステップ３０４は必要ではない。なぜならば、リスト上のスロットは標準の論理装置２５２を示さないからである。
【００６９】
ステップ３０６に続いて、処理は、前の実施形態について前述したように続く。ただしステップ３３６は、ＣＯＶＤ内の次のスロットを示すのではなく、変更されるスロットのリストを一巡することを指す。同様に、ステップ３３８における判定では、ポインタが、リストの終わりにあるか（または循環のリンクされたリストの場合には始まりに戻っているか）否かを判定する。同様に、ステップ３３８において、処理すべきスロットがまだ存在すると判定された場合には、制御はステップ３３８からステップ３０６に移る。これは、代替的な経路３４４によって例示されている通りである。前述したように、変更されるスロットのリストを用いる実施形態の場合には、ステップ３０４は除いても良い。
【００７０】
図１０を参照すると、フロー・チャート３５０は、ローカル記憶装置２４がシーケンス番号を増加させることと関連して行なわれるステップを例示している。処理は、第１のステップ３５２から始まる。ここでは、ローカル記憶装置２４が、シーケンス番号を増加させる前に少なくともＭ秒間だけ待機する。本明細書における実施形態では、Ｍは３０であるが、当然のことながら、Ｍは任意の数とすることができる。Ｍの値が大きくなると、記憶装置２４と２６との間の通信が乱れたときに失われ得るデータ量が増える。しかし、Ｍの値が小さくなると、シーケンス番号を増加させる頻度が増えることによって、オーバーヘッドの合計が増える。
【００７１】
ステップ３５２の次は判定ステップ３５４であり、ここでは、ローカル記憶装置２４のすべてのＨＡが、以前のシーケンス番号に対するすべてのＩ／ＯをＨＡが完了したことを示すビットを、設定したか否かを判定する。シーケンス番号が変わると、各ＨＡはその変化を知って、以前のシーケンス番号のすべてのＩ／Ｏが完了したことを示すビットを設定する。たとえば、シーケンス番号がＮ−１からＮに変わった場合、ＨＡがシーケンス番号Ｎ−１に対するすべてのＩ／Ｏを完了したときに、ＨＡはビットを設定する。なお、場合によっては、ＨＡに対するＩ／Ｏが単一であるときに、時間がかかることがあり、シーケンス番号が変わった後でも依然として進んでいることがある。またシステムによっては、すべてのＨＡがそれらのＮ−１のＩ／Ｏを完了したか否かを判定するために、異なるメカニズムを用いても良いことに注意されたい。異なるメカニズムとしては、メモリ３７内の装置テーブルを検査することが含まれていても良い。
【００７２】
判定ステップ３５４において、以前のシーケンス番号からのＩ／Ｏが完了したと判定された場合には、制御はステップ３５４から判定ステップ３５６に移る。ここでは、リスト７４，７６のうちの非アクティブなリストが空であるか否かが判定される。なおリスト７４，７６のうちの非アクティブなリストに対応するデータがすべて、ローカル記憶装置２４から遠隔記憶装置２６にＲＤＦプロトコルを用いて完全に送信されるまで、シーケンス番号切り換えは行なわなくても良い。リスト７４，７６のうちの非アクティブなリストが空であると判定されたら直ちに、制御はステップ３５６からステップ３５８に移る。ここでは、以前のシーケンス番号に対するコミットが、ローカル記憶装置２４から遠隔記憶装置２６に送られる。前述したように、遠隔記憶装置２６が、特定のシーケンス番号に対するコミット・メッセージを受信することによって、遠隔記憶装置２６は、シーケンス番号に対応するデータの復元を開始する。
【００７３】
ステップ３５８の次はステップ３６２であり、ここでは、リスト７４，７６のうちの非アクティブなリストに対するデータをコピーすることが一時停止される。本明細書の他の場所で説明されているように、リストの非アクティブな方を走査して、対応するデータをローカル記憶装置２４から遠隔記憶装置２６に送る。シーケンス番号切り換えが完了するまで、データをコピーすることを一時停止することは有用である。本明細書における実施形態では、一時停止は、ＲＡ３０ａ〜３０ｃにメッセージを送ることによって実現される。しかし、当業者であれば理解するように、本明細書で説明するシステムを用いたデータの送信を容易にするために他のコンポーネントを用いる実施形態の場合には、コピーの一時停止を、他のコンポーネントに適切なメッセージ／コマンドを送ることによって実現しても良い。
【００７４】
ステップ３６２の次はステップ３６４であり、ここでは、シーケンス番号を増加する。ステップ３６４の次はステップ３６６であり、ここでは、判定ステップ３５４で用いられるＨＡに対するビットをすべてクリアして、シーケンス番号の増加とともにビットを再び設定できるようにしても良い。ステップ３６６の次は判定ステップ３７２であり、ここでは、遠隔記憶装置２６が、ステップ３５８で送られたコミット・メッセージに確認応答したか否かを判定する。コミット・メッセージに確認応答することについては、図８に関連して前述している。遠隔記憶装置２６が、ステップ３５８で送られたコミット・メッセージに確認応答したと判定されたら直ちに、制御はステップ３７２からステップ３７４に移る。ここでは、コピーの一時停止（ステップ３６２で行なわれた）をクリアして、コピーすることを再開できるようにしても良い。ステップ３７４に続いて、処理は完了する。なお、ステップ３７４からステップ３５２に戻って、新しいサイクルを開始してシーケンス番号を連続的に増加させることが可能である。
【００７５】
またアクティブなデータと非アクティブなデータ領域とに関連するスロットを集めるために、Ｒ１装置上のＣＯＶＤを用いることもできる。その場合、Ｒ２装置の場合と同様に、１つのＣＯＶＤが非アクティブなシーケンス番号に関連し、他のＣＯＶＤがアクティブなシーケンス番号に関連することができる。これについて以下に述べる。
【００７６】
図１１を参照すると、ダイアグラム４００は、領域５２，５４を構築および維持するために用いられる項目を例示している。標準の論理装置４０２は、ホスト２２が書き込むデータを収容し、さらに図２のデータ要素５１と図１のディスク３３ａ〜３３ｃとに対応する。標準の論理装置４０２には、ホスト２２がローカル記憶装置２４に書き込むデータが収容される。
【００７７】
２つのキャッシュ・オンリー仮想装置４０４，４０６は、標準の論理装置４０２とともに用いられる。キャッシュ・オンリー仮想装置４０４，４０６は、たとえばローカル記憶装置２４のメモリ３７に記憶され得る装置テーブルに対応した。各キャッシュ・オンリー仮想装置４０４，４０６のテーブルの各トラック・エントリは、標準の論理装置４０２のトラックを示すか、あるいはローカル記憶装置２４とともに用いられるキャッシュ４０８のスロットを示す。いくつかの実施形態では、キャッシュ４０８を、ローカル記憶装置２４のメモリ３７内に設けても良い。
【００７８】
キャッシュ４０８には、複数のキャッシュ・スロット４１２〜４１４が収容されている。これらは、標準の論理装置４０２への書き込みとともに用いても良く、同時に、キャッシュ・オンリー仮想装置４０４，４０６とともに用いても良い。本明細書における実施形態では、キャッシュ・オンリー仮想装置４０４，４０６の各トラック・テーブル・エントリには、対応する標準の論理装置４０２のトラックを示すために、ゼロが収容される。その他の場合には、各キャッシュ・オンリー仮想装置４０４，４０６に対するトラック・テーブル内のエントリには、キャッシュ４０８内のスロット４１２〜４１４の１つに対するポインタが収容される。
【００７９】
キャッシュ・オンリー仮想装置４０４，４０６をそれぞれ、データ領域５２，５４のうちの一方に対して用いても良い。その結果、たとえば、キャッシュ・オンリー仮想装置４０４がシーケンス番号Ｎに対するデータ５２の領域に対応する一方で、キャッシュ・オンリー仮想装置４０６がシーケンス番号Ｎ−１に対するデータ５４の領域に対応しても良い。したがって、ホスト２２がデータをローカル記憶装置２４に書き込むと、データがキャッシュ４０８に送られて、キャッシュ・オンリー仮想装置４０４の適切なポインタが調整される。なお、データが標準の論理装置４０２にデステージされ、さらにデータがキャッシュ・オンリー仮想装置４０４によって解放されるまで、データはキャッシュ４０８から取り除かれない。これについては本明細書の他の場所で説明されている通りである。
【００８０】
本明細書における実施形態では、キャッシュ・オンリー仮想装置４０４，４０６のうちの一方を「アクティブ」とみなし、他方を「非アクティブ」とみなす。したがって、たとえばシーケンス番号Ｎが偶数であるときには、キャッシュ・オンリー仮想装置４０４がアクティブであり、キャッシュ・オンリー仮想装置４０６が非アクティブであっても良い。キャッシュ・オンリー仮想装置４０４，４０６のうちのアクティブな装置は、ホスト２２からの書き込みを取り扱い、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置は、ローカル記憶装置２４から遠隔記憶装置２６に送信されているデータに対応する。
【００８１】
ホスト２２が書き込むデータは、キャッシュ・オンリー仮想装置４０４，４０６のうちのアクティブな装置（シーケンス番号Ｎに対する）を用いて蓄積され、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置（以前のシーケンス番号Ｎ−１に対する）に対応するデータは、ローカル記憶装置２４から遠隔記憶装置２６に送信される。この実施形態および関連する実施形態の場合、ローカル記憶装置のＤＡ３５ａ〜３５ｃが取り扱うのは、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置を走査して、コピー・リクエストをＲＡ３０ａ〜３０ｃの１つまたは複数に送り、ローカル記憶装置２４からのデータを遠隔記憶装置２６に送信することである。したがって、ステップ３６２，３７４（コピーの一時停止および再開に関連して前述した）は、ＤＡ３５ａ〜３５ｃにメッセージ／コマンドを送ることを含んでいても良い。
【００８２】
データが遠隔記憶装置２６に送信されたら直ちに、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置における対応するエントリを、ゼロに設定しても良い。加えて、データをキャッシュ４０８から取り除いても良い（すなわち、スロットをスロットのプールに戻して、後で使用できるようにする）。これは、スロット内のデータが、他の目的（たとえば、標準の論理装置４０２にデステージすること）に対して必要とされない場合である。すべてのミラー（キャッシュ・オンリー仮想装置４０４，４０６を含む）がもはやデータを使用していない状態になるまでデータがキャッシュ４０８から取り除かれることがないことを保証するために、何らかのメカニズムが用いられても良い。このようなメカニズムは、たとえば、米国特許第５，５３７，５６８号明細書（１９９６年７月１６日付与）および米国特許出願第０９／８５０，５５１号明細書（２００１年７月７日出願）に記載されている。両文献とも、本明細書において参照により取り入れられている。
【００８３】
図１２を参照すると、フロー・チャート４４０は、本明細書で説明するシステムを実現するためにＲ１装置が２つのＣＯＶＤを使用する実施形態に対して、ホスト２２が書き込み動作を行なうことに関連してＨＡ２８によって行なわれるステップを例示している。処理は、第１のステップ４４２から始まる。ここでは、書き込みに対応するスロットがロックされる。本明細書における実施形態では、キャッシュ４０８のスロット４１２〜４１４はそれぞれ、標準の論理装置４０２上のデータのトラックに対応する。ステップ４４２においてスロットをロックすることによって、フロー・チャート４４０のステップに対応してＨＡ２８が行なう処理の間に、さらなるプロセスが当該のスロット上で動作することが防止される。
【００８４】
ステップ４４２の次はステップ４４４であり、ここでは、Ｎ（シーケンス番号）に対する値が設定される。Ｒ１サイド上のＣＯＶＤではなくリストを用いる実施形態の場合と同様に、ステップ４４４で得られるシーケンス番号に対する値は、スロットがロックされている間にＨＡ２８が行なう書き込み動作全体の間、維持される。本明細書の他の場所で説明されているように、シーケンス番号を各書き込みに割り当てて、書き込みが属するデータ領域５２，５４のうちの一方を設定する。ホスト２２が行なう書き込みには、現在のシーケンス番号が割り当てられる。単一の書き込み動作を通して同じシーケンス番号が維持されることが有用である。
【００８５】
ステップ４４４の次は判定ステップ４４６であり、ここでは、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置が、ステップ４４２でロックされたスロット（操作されているスロット）をすでに示しているか否かを判定する。これは、シーケンス番号が現在のシーケンス番号よりも小さいときに同じスロットへの書き込みが行なわれたときに、起きる場合がある。以前のシーケンス番号に対する書き込みに対応するデータが、依然として遠隔記憶装置２６に送信されていない場合がある。
【００８６】
判定ステップ４４６において、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置がスロットを示していないと判定された場合には、制御は判定ステップ４４６から他の判定ステップ４４８に移る。ここでは、キャッシュ・オンリー仮想装置４０４，４０６のうちのアクティブな装置がスロットを示すか否かが判定される。シーケンス番号が現在のシーケンス番号と同じであるとともにスロットに対して以前に書き込みがあった場合には、キャッシュ・オンリー仮想装置４０４，４０６のうちのアクティブな装置がスロットを示す可能性がある。判定ステップ４４８において、キャッシュ・オンリー仮想装置４０４，４０６のうちのアクティブな装置がスロットを示していないと判定された場合には、制御は判定ステップ４４８からステップ４５２に移って、データに対する新しいスロットを得る。ステップ４５２の次はステップ４５４であり、ここでは、キャッシュ・オンリー仮想装置４０４，４０６のうちのアクティブな装置が、スロットを示すようにする。
【００８７】
ステップ４５４の後、またはステップ４４８においてキャッシュ・オンリー仮想装置４０４，４０６のうちのアクティブな装置がスロットを示す場合に、ステップ４５６に続く。ここでは、フラッグが設定される。ステップ４５６において、ＲＤＦ＿ＷＰフラッグ（ＲＤＦ書き込み保留中フラッグ）を、ＲＤＦを用いてスロットを遠隔記憶装置２６に送信する必要があることを示すように設定する。加えて、ステップ４５６において、ＩＮ＿ＣＡＣＨＥフラッグを、スロットを標準の論理装置４０２にデステージする必要があることを示すように設定する。なお、場合によっては、キャッシュ・オンリー仮想装置４０４，４０６のうちのアクティブな装置がすでにスロットを示している場合には（ステップ４４８で判定されるように）、ステップ４５６を実行する前にＲＤＦ＿ＷＰおよびＩＮＣＡＣＨＥフラッグがすでに設定されている可能性がある。しかし、ステップ４５６においてフラッグを設定することによって、以前の状態が何であれフラッグが適切に設定されることが保証される。
【００８８】
ステップ４５６の次はステップ４５８であり、ここでは、スロットを示すトラック・テーブル内の間接的なフラッグをクリアして、当該のデータはスロット内に設けられていて間接的に示される違うスロット内ではないことを示す。ステップ４５８の次はステップ４６２であり、ここでは、ホスト２２およびＨＡ２８が書き込んでいるデータをスロットに書き込む。ステップ４６２の次はステップ４６４であり、ここでは、スロットのロックを解除する。ステップ４６４に続いて処理は完了する。
【００８９】
判定ステップ４４６において、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置がスロットを示していると判定された場合には、制御はステップ４４６からステップ４７２に移って、新しいスロットを得る。ステップ４７２で得られる新しいスロットを、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置に対して用いてＲＤＦ転送を起こしても良く、一方で、古いスロットを、キャッシュ・オンリー仮想装置４０４，４０６のうちのアクティブな装置に関連させても良い。これについては後述する。
【００９０】
ステップ４７２の次はステップ４７４であり、ここでは、古いスロットからのデータを、ステップ４７２で得られた新しいスロットにコピーする。ステップ４７４の次はステップ４７６であり、ここでは、間接的なフラッグ（前述した）の設定を、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置に対するトラック・テーブル・エントリが古いスロットを示すこと、しかしデータは古いスロットが示す新しいスロット内にあること、を示すように行なう。このようにして、ステップ４７６で間接的なフラッグを設定することによって、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置のトラック・テーブルに作用して、トラック・テーブル・エントリに、データが新しいスロット内にあることを示させる。
【００９１】
ステップ４７６の次はステップ４７８であり、ここでは、新しいスロットにおける記録に対するミラー・ビットを調整する。ステップ４７４でデータが古いスロットから新しいスロットにコピーされたときにコピーされたローカル・ミラー・ビットはどれもクリアされる。なぜならば、新しいスロットの目的は単に、キャッシュ・オンリー仮想装置のうちの非アクティブな装置に対してＲＤＦ転送を引き起こすことだからである。古いスロットは、何れかのローカル・ミラーを取り扱うために用いられる。ステップ４７８の次はステップ４６２であり、ここでは、データをスロットに書き込む。ステップ４６２の次はステップ４６４であり、ここでは、スロットのロックが解除される。ステップ４６４に続いて処理は完了する。
【００９２】
図１３を参照すると、フロー・チャート５００は、ローカル記憶装置２４がデータ領域５４を遠隔記憶装置２６に送信することに関連して行なわれるステップを例示している。送信には本質的に、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置を走査して、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置がアクティブだったときに、これに対して以前の繰り返しの間に書き込まれたトラックを探すことを伴う。この実施形態では、ローカル記憶装置２４のＤＡ３５ａ〜３５ｃが、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置を走査して、ＲＤＦプロトコルを用いてＲＡ３０ａ〜３０ｃの１つまたは複数によって遠隔記憶装置２６に送信するためのデータをコピーする。
【００９３】
処理は、第１のステップ５０２から始まる。ここでは、すべてのトラックを繰り返すプロセスを始めるために、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置の第１のトラックを示す。第１のステップ５０２の次は判定ステップ５０４であり、ここでは、ＲＤＦ＿ＷＰフラッグが設定されているか否かが判定される。本明細書の他の場所で説明されているように、ＲＤＦ＿ＷＰフラッグを用いて、ＲＤＦリンクを介して送信する必要があるデータをスロット（トラック）が収容していることを示す。ＲＤＦ＿ＷＰフラッグが設定されているということは、スロット（トラック）に対する少なくとも一部のデータを、ＲＤＦを用いて送信すべきであることを示す。本明細書における実施形態では、スロット全体が送信されてはいない。むしろ、適切なミラー・ビット組（記録が変わったことを示す）を有するスロット内の記録のみが、遠隔記憶装置２６に送信される。しかし、他の実施形態では、遠隔記憶装置２６が、適切なミラー・ビット組を有する記録に対応するデータのみを書き込んで、トラックに対する他のデータ（有効であるかも知れないしそうでないかも知れない）を無視するならば、スロット全体を送信することが可能であっても良い。
【００９４】
判定ステップ５０４において、処理されているキャッシュ・スロットがＲＤＦ＿ＷＰフラッグを設定していると判定された場合には、制御はステップ５０４から判定ステップ５０５に移る。ここでは、スロットがデータを収容しているか否か、あるいはスロットが、当該データを収容する他のスロットを示す間接的なスロットであるか否かが、判定される。場合によっては、スロットは、スロットに対応するディスク部分に対するデータを収容していなくても良い。その代わりに、スロットは、データを収容する他のスロットを示す間接的なスロットであっても良い。ステップ５０５において、スロットが間接的なスロットであると判定された場合には、制御はステップ５０５からステップ５０６に移る。ここでは、データ（間接的なスロットが示すスロットから）が、得られる。こうして、スロットが直接的なスロットである場合には、ＲＤＦによって送るためのデータはスロット内に記憶され、一方で、スロットが間接的なスロットである場合には、ＲＤＦによって送るためのデータは、間接的なスロットが示す他のスロット内に存在する。
【００９５】
ステップ５０６の後、またはステップ５０５においてスロットが直接のスロットである場合には、ステップ５０７に続く。ここでは、送られているデータ（スロットから直接的または間接的に）が、ＤＡ３５ａ〜３５ｃの１つによってコピーされて、ＲＤＦプロトコルを用いてローカル記憶装置２４から遠隔記憶装置２６に送られる。ステップ５０７の次は判定ステップ５０８であり、ここでは、遠隔記憶装置２６がデータの受け取りに確認応答したか否かが判定される。確認応答していない場合には、制御はステップ５０８からステップ５０７に戻って、データを再送信する。他の実施形態では、より複雑な種々の処理を用いてデータを送り、その受け取りに確認応答しても良い。このような処理には、エラー報告と、データを送る特定の数の試みが失敗した後に行なわれる代替的な処理とが含まれていても良い。
【００９６】
判定ステップ５０８において、データの送信が成功したことが判定されたら直ちに、制御はステップ５０８からステップ５１２に移って、ＲＤＦ＿ＷＰフラッグをクリアする（なぜならば、ＲＤＦを介したデータの送信が成功しているからである）。ステップ５１２の次はステップ５１４であり、ここでは、適切なミラー・フラッグをクリアして、少なくともＲＤＦミラー（Ｒ２）がもはやデータを必要としていないことを示す。本明細書における実施形態では、スロット（トラック）の一部である各記録は、どのミラーが特定の記録を用いているかを示す別個のミラー・フラッグを有している。Ｒ２装置は、各記録に対するミラーの１つであり、ステップ５１４でクリアされるのはＲ２装置に対応するフラッグである。
【００９７】
ステップ５１４の次は判定ステップ５１６であり、ここでは、処理中のトラックの記録の何れかが、他の何らかのミラー・フラッグの組（他のミラー装置に対する）を有しているか否かが判定される。有していない場合、制御はステップ５１６からステップ５１８に移り、ここでスロットは解放される（すなわち、もはや使用されていない）。いくつかの実施形態では、未使用のスロットは、使用するために利用可能なスロットのプールに維持される。なお、スロットの記録の一部に対してさらなるフラッグが依然として設定される場合、この意味は、記録を標準の論理装置４０２にデステージする必要があるか、あるいは記録が何らかの他のミラー（他のＲ２装置を含む）によって用いられている、ということであっても良い。ステップ５１８の後、またはステップ５１６においてミラー・フラッグがまだ存在する場合には、ステップ５２２に続く。ここでは、キャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置の各トラック・エントリを繰り返すために用いられるポインタを、次のトラックを示すようにする。ステップ５２２の次は判定ステップ５２４であり、ここでは、処理すべきキャッシュ・オンリー仮想装置４０４，４０６のうちの非アクティブな装置のトラックがまだ存在するか否かが判定される。存在しない場合には、処理は完了する。存在する場合には、制御は前述の判定ステップ５０４に戻る。なお、ステップ５２２は、判定ステップ５０４からも到達される。それは、ＲＤＦ＿ＷＰフラッグが、処理中のトラックに対して設定されていないと判定された場合である。
【００９８】
図１４を参照すると、ダイアグラム７００は、複数のローカル記憶装置７０３〜７０５に結合されるホスト７０２を例示している。またダイアグラム７００は、複数の遠隔記憶装置７０６〜７０８も示している。ダイアグラム７００には、３つのローカル記憶装置７０３〜７０５および３つの遠隔記憶装置７０６〜７０８のみを示しているが、本明細書で説明するシステムは、任意の数のローカルおよび遠隔記憶装置を用いることまで拡張しても良い。
【００９９】
ローカル記憶装置７０３〜７０５はそれぞれ、遠隔記憶装置７０６〜７０８の対応する１つに結合されており、その結果、たとえば、ローカル記憶装置７０３は遠隔記憶装置７０６に結合され、ローカル記憶装置７０４は遠隔記憶装置７０７に結合され、およびローカル記憶装置７０５は遠隔記憶装置７０８に結合されている。ローカル記憶装置は７０３〜７０５であり、遠隔記憶装置は７０６〜７０８であり、これらは、本明細書で説明した順序付けられた書き込みメカニズムを用いて結合しても良い。その結果、たとえば、ローカル記憶装置７０３を、順序付けられた書き込みメカニズムを用いて遠隔記憶装置７０６に結合しても良い。本明細書の他の場所で説明されているように、順序付けられた書き込みメカニズムによって、ローカル記憶装置および／またはホストが動作を停止しおよび／またはデータを失った場合に、遠隔記憶装置を用いてデータ・リカバリを行なうことができる。
【０１００】
場合によっては、ホスト７０２は、複数のローカル記憶装置７０３〜７０５を同時に用いる単一のアプリケーションを実行しても良い。このような場合、アプリケーションの構成は、ホスト７０２が任意の時間に動作を中止した場合および／またはローカル記憶装置７０３〜７０５の１つが破損した場合に、アプリケーション・データがローカル記憶装置７０３〜７０５において整合性がある（回復可能である）ことを保証するようなものであっても良い。しかし、ローカル記憶装置７０３〜７０５と遠隔記憶装置７０６〜７０８との間の各順序付けられた書き込み接続は、残りの接続とは非同期であるため、アプリケーションに対するデータが遠隔記憶装置７０６〜７０８において整合性がある（したがって回復可能である）ことは保証されない。すなわち、たとえば、ローカル記憶装置７０３と遠隔記憶装置７０６との間のデータ接続（第１のローカル／遠隔対）には整合性があり、ローカル記憶装置７０４と遠隔記憶装置７０７との間のデータ接続（第２のローカル／遠隔対）には整合性があったとしても、第１および第２のローカル／遠隔対の間に同期がないならば、遠隔記憶装置７０６，７０７上のデータに常に整合性があるとは限らない。
【０１０１】
ホスト７０２上のアプリケーションが、複数のローカル記憶装置７０３〜７０５を同時に用いるものである場合には、データは遠隔記憶装置７０６〜７０８において整合性がありおよび回復可能であることが望ましい。これは、ホスト７０２がローカル記憶装置７０３〜７０５のそれぞれにおけるサイクル切り換えを制御するメカニズムとして、ホスト７０２上で実行されるアプリケーションからのデータが遠隔記憶装置７０６〜７０８において整合性があり、かつ回復可能となるようなものを用いることによって、実現しても良い。この機能は、複数のローカル記憶装置７０３〜７０５を切り換えてマルチ・ボックス・モードにするホスト７０２上で実行される特別なアプリケーションによって実現される。これについては、後に詳細に説明する。
【０１０２】
図１５を参照すると、テーブル７３０が複数のエントリ７３２〜７３４を有している。エントリ７３２〜７３４はそれぞれ、単一のローカル／遠隔対の記憶装置に対応している。したがって、たとえば、エントリ７３２はローカル記憶装置７０３および遠隔記憶装置７０６の対に対応していても良く、エントリ７３３はローカル記憶装置７０４および遠隔記憶装置７０７の対に対応していても良く、エントリ７３４はローカル記憶装置７０５および遠隔記憶装置７０８の対に対応していても良い。エントリ７３２〜７３４はそれぞれ、複数のフィールドを有している。第１のフィールド７３６ａ〜７３６ｃは、対応するローカル記憶装置の連続番号を表わし、第２のフィールド７３８ａ〜７３８ｃは、マルチ・ボックス・グループが用いるセッション番号を表わし、第３のフィールド７４２ａ〜７４２ｃは、ローカル／遠隔対の対応する遠隔記憶装置の連続番号を表わし、第４のフィールド７４４ａ〜７４４ｃは、マルチ・ボックス・グループに対するセッション番号を表わす。テーブル７３０は、マルチ・ボックス・モードで動作することと関連してホスト７０２によって構築および維持される。加えて、テーブル７３０は、マルチ・ボックス・グループの一部であるローカル記憶装置および遠隔記憶装置のそれぞれに伝えられる。テーブル７３０を用いて、リカバリを容易にしても良い。これについては後に詳細に説明する。
【０１０３】
異なるローカル／遠隔対は、マルチ・ボックス・モードに、任意の順序で任意の時間に独立に出入りしても良い。ホスト７０２によって、マルチ・ボックス・モードへのローカル記憶装置／遠隔記憶装置対の出入りが管理される。これについては、以下で詳細に説明する。
【０１０４】
図１６を参照すると、フロー・チャート７５０は、マルチ・ボックス・モードへのローカル／遠隔対の出入りとともにホスト７０２が行なうステップを例示している。処理は、第１のステップ７５２から始まる。ここでは、マルチ・ボックス・モード動作を一時的に停止する。ステップ７５２でマルチ・ボックス動作を一時的に停止することは、マルチ・ボックス・モードへの遠隔／ローカル対の出入りとともになされる変更を容易にするのに有用である。ステップ７５２の次はステップ７５４であり、ここでは、図１５のテーブル７３０のようなテーブルを、必要に応じて変更してエントリを加えるか、あるいは削除する。ステップ７５４の次はステップ７５６であり、ここでは、変更されたテーブルを、マルチ・ボックス・グループのローカル記憶装置および遠隔記憶装置に伝える。ステップ７５６でテーブルを伝えることによって、リカバリが容易になる。これについては、本明細書の他の場所で詳細に説明されている通りである。
【０１０５】
ステップ７５６の次はステップ７５８であり、ここでは、影響を受けるローカル記憶装置にメッセージを送って、変更を加える。ローカル記憶装置はそれ自体を、マルチ・ボックス・モードで実行されるように構成しても良いし、しなくても良い。これについては、本明細書の他の場所で詳細に説明されている通りである。後に詳細に説明するように、順序付けられた書き込みを取り扱うローカル記憶装置は、この装置がマルチ・ボックス・グループの一部として動作しているか否かに応じて、動作の仕方が異なっている。ローカル記憶装置がマルチ・ボックス・グループに加えられている場合には、ステップ７５８で送られるメッセージは、ローカル記憶装置に対して、この装置がマルチ・ボックス・グループに加えられていることを示すため、ローカル記憶装置はそれ自体を、マルチ・ボックス・モードで実行するように構成しなければならない。あるいは、ローカル記憶装置がマルチ・ボックス・グループから取り除かれている場合には、ステップ７５８で送られるメッセージは、ローカル記憶装置に対して、この装置がマルチ・ボックス・グループから取り除かれていることを示すため、ローカル記憶装置はそれ自体を、マルチ・ボックス・モードで実行されないように構成しなければならない。
【０１０６】
ステップ７５８の次は判定ステップ７６２であり、ここでは、ローカル／遠隔対がマルチ・ボックス・グループに加えられているか否か（取り除かれているのではなく）を判定する。加えられている場合には、制御は判定ステップ７６２からステップ７６４に移る。ここでは、加えられているローカル記憶装置にタグ値を送る。タグ値には、ローカル記憶装置から遠隔記憶装置に送信されるデータが付与されている。与える方法は、シーケンス番号にデータを与える場合と同様である。タグ値はホストによって制御され、その設定は、すべてのローカル／遠隔対から送られるデータが、同じサイクルの間に同じタグ値を有するようになされる。タグ値の使用方法については、後に詳細に説明する。ステップ７６４の後、あるいはステップ７６２において新しいローカル／遠隔対が加えられていない場合には、ステップ７６６に続く。ここでは、マルチ・ボックス動作が再開される。ステップ７６６に続いて処理は完了する。
【０１０７】
図１７を参照すると、フロー・チャート７８０は、ホストが、マルチ・ボックス・モードにおけるグループとして実行される複数のローカル／遠隔対に対するサイクル切り換えを管理することと関連して行なわれるステップを例示している。本明細書の他の場所で説明されているように、マルチ−ボックス・モードには、遠隔記憶装置間でのデータ整合性を維持するために、ホストに、複数の遠隔／ローカル対に対するサイクル切り換えに同期させることが含まれている。サイクル切り換えは、ローカル記憶装置によって内部的に生成されるのではなくて、ホストによって調整される。これについては、後に詳細に説明する。
【０１０８】
フロー・チャート７８０の処理は、判定ステップ７８２から始まる。ここでは、Ｍ秒が過ぎたか否かが判定される。ノン・マルチ・ボックス動作の場合と同様に、サイクル切り換えは、Ｍ秒（Ｍは、種々の性能パラメータを最適化するように選択される数）ごとに、直ちに行なわれる。数Ｍが増加すると、切り換えに伴うオーバーヘッドの量は減少する。しかし、Ｍを増加させると、故障とともに潜在的に失われ得るデータ量も増加する。本明細書における実施形態では、Ｍは３０秒となるように選択しているが、明らかに他の値をＭに対して用いても良い。
【０１０９】
判定ステップ７８２において、Ｍ秒は過ぎていないと判定された場合には、制御はステップ７８２に戻ってＭ秒が過ぎるまで待機し続ける。判定ステップ７８２において、Ｍ秒が過ぎたと判定されたら直ちに、制御はステップ７８２からステップ７８４に移る。ここでは、すべてのローカル／遠隔対が切り換えに対して準備完了であるか否かを判定するために、ホストがマルチ・ボックス・グループ内のすべてのローカル記憶装置に問い合わせる。ローカル／遠隔対が切り換えに対して準備完了であることについては、後に詳細に説明する。
【０１１０】
ステップ７８４の次は判定ステップ７８６であり、ここでは、すべてのローカル／遠隔対が、切り換えに対して準備完了であるか否かが判定される。準備完了でない場合には、制御はステップ７８４に戻って、問い合わせを再開する。本明細書における実施形態では、切り換えに対して以前は準備完了ではなかったローカル／遠隔対に問い合わせることだけが必要である。なぜならば、ローカル／遠隔対が切り換えに対して準備完了になれば直ちに、対は、切り換えが行なわれるまでその状態に留まるからである。
【０１１１】
判定ステップ７８６において、マルチ・ボックス・グループ内のすべてのローカル／遠隔対が切り換えに対して準備完了であると判定されたら直ちに、制御はステップ７８６からステップ７８８に移る。ここでは、インデックス変数Ｎが、１に等しくなるように設定される。インデックス変数Ｎは、すべてのローカル／遠隔対（すなわち、図１５のテーブル７３０のすべてのエントリ７３２〜７３４）を繰り返すために用いられる。ステップ７８８の次は判定ステップ７９２であり、ここでは、インデックス変数Ｎが、マルチ・ボックス・グループ内のローカル／遠隔対の数よりも大きいか否かが判定される。大きくない場合には、制御はステップ７９２からステップ７９４に移る。ここでは、Ｎ番目の対のＮ番目のローカル記憶装置に対してウィンドウを開くことが行なわれる。これは、ホストがＮ番目のローカル記憶装置にコマンド（たとえば、適切なシステム・コマンド）を送ることによってなされる。ステップ７９４で、Ｎ番目のローカル記憶装置に対してウィンドウを開くことによって、Ｎ番目のローカル記憶装置は書き込みを一時停止する。その結果、ステップ７９４でウィンドウを開く前に始められていないホストによるいかなる書き込みも、ウィンドウを閉じるまで完了しない（後述する）。書き込み動作を完了させないことによって、サイクル切り換えの完了前に第２の従属的な書き込みが行なわれることが防止される。ウィンドウを開ける前に始められた進行中の書き込みはどれも、ウィンドウを閉じる前に完了しても良い。
【０１１２】
ステップ７９４の次はステップ７９６であり、ここでは、Ｎ番目のローカル記憶装置に対してサイクル切り換えが行なわれる。ステップ７９６でサイクル切り換えを行なうことには、ホスト７０２からＮ番目のローカル記憶装置にコマンドを送ることが伴う。Ｎ番目のローカル記憶装置によってホストからのコマンドを処理することについては、後に詳細に説明する。ステップ７９６で行なわれる処理の一部には、ホストが、データに割り当てられるタグに対して新しい値を提供することが含まれていても良い。タグについては、本明細書の他の場所で詳細に説明されている。代替的な実施形態では、ステップ７９４，７９６で行なわれる動作は、単一の統合されたステップ７９７として行なっても良い。これは、ステップ７９４，７９６の周りに描かれたボックスによって例示されている。
【０１１３】
ステップ７９６の次はステップ７９８であり、ここでは、インデックス変数Ｎを増加する。ステップ７９８の後、制御は判定ステップ７９２に戻って、インデックス変数Ｎがローカル／遠隔対の数よりも大きいか否かを判定する。
【０１１４】
判定ステップ７９２において、インデックス変数Ｎがローカル／遠隔対の数よりも大きいと判定された場合には、制御は判定ステップ７９２からステップ８０２に移る。ここでは、インデックス変数Ｎが、１に等しくなるように設定される。ステップ８０２の次は判定ステップ８０４であり、ここでは、インデックス変数Ｎがローカル／遠隔対の数よりも大きいか否かが判定される。大きくない場合には、制御はステップ８０４からステップ８０６に移る。ここでは、Ｎ番目のローカル記憶装置に対するウィンドウを閉じる。ステップ８０６のウィンドウを閉じることは、ホストがＮ番目のローカル記憶装置にコマンドを送ってＮ番目のローカル記憶装置に書き込み動作を再開させることによって、行なわれる。したがって、ステップ７９４でウィンドウを開けることによって一時停止された進行中の書き込みはどれも、ステップ８０６を実行した後に完了しても良い。ステップ８０６の後に、制御はステップ８０８に移る。ここでは、インデックス変数Ｎを増加させる。ステップ８０８に続いて、制御は判定ステップ８０４に戻り、インデックス変数Ｎがローカル／遠隔対の数よりも大きいか否かを判定する。大きい場合には、制御は判定ステップ８０４からステップ７８２に戻って、次のサイクル切り換えに対する処理を始める。
【０１１５】
図１８を参照すると、フロー・チャート８３０は、サイクル切り換えに関連してローカル記憶装置によって行なわれるステップを例示している。図１８のフロー・チャート８３０は、図１０のフロー・チャート３５０において、ローカル記憶装置がマルチ・ボックス・モードおよびノン・マルチ・ボックス・モードの両方をサポートしている場合である。すなわちフロー・チャート８３０は、ノン・マルチ・ボックス・モードをサポートするために、図１０のフロー・チャート３５０のステップと同様に行なわれるステップを示し、加えて、マルチ・ボックス・モードをサポートするためのステップを含んでいる。
【０１１６】
処理は最初の判定ステップ８３２から始まる。ここでは、ローカル記憶装置がマルチ・ボックス・モードで動作しているか否かが判定される。なお、図１６のフロー・チャート７５０は、ホストがメッセージをローカル記憶装置に送るステップ７５８を示している。ステップ７５８で送られるメッセージは、ローカル記憶装置に対して、ローカル記憶装置がマルチ・ボックス・モードであるか否かを示す。ステップ７５８でホストが送るメッセージを受信すると直ちに、ローカル記憶装置は、ローカル記憶装置がマルチ・ボックス・モードで動作している否かを示す内部変数を設定する。内部変数は判定ステップ８３２で検査することができる。
【０１１７】
判定ステップ８３２において、ローカル記憶装置がマルチ・ボックス・モードでないと判定された場合には、制御は判定ステップ８３２からステップ８３４に移って、サイクル切り換えに対してＭ秒間だけ待機する。ローカル記憶装置がマルチ・ボックス・モードで動作していない場合、ローカル記憶装置はその特有のサイクル切り換えを制御することによってステップ８３４を実行して、次のサイクル切り換えを開始する前にＭ秒の間、待機する。
【０１１８】
ステップ８３４の後、あるいはステップ８３２においてローカル記憶装置はマルチ・ボックス・モードであると判定された場合には、判定ステップ８３６に続く。ここでは、ローカル記憶装置のすべてのＨＡが、以前のシーケンス番号に対するすべてのＩ／ＯをＨＡが完了したことを示すビットを設定したか否かを判定する。シーケンス番号が変わると、各ＨＡは変化を知って、以前のシーケンス番号のすべてのＩ／Ｏが完了したことを示すビットを設定する。たとえば、シーケンス番号がＮ−１からＮに変わった場合、ＨＡがシーケンス番号Ｎ−１に対するすべてのＩ／Ｏを完了したときに、ＨＡはビットを設定する。なお、場合によっては、ＨＡに対するＩ／Ｏが単一であるときに、時間がかかることがあり、シーケンス番号が変わった後でも依然として進んでいることがある。またシステムによっては、すべてのＨＡがそれらのＮ−１個のＩ／Ｏを完了したか否かを判定するために、異なるメカニズムを用いても良いことに注意されたい。異なるメカニズムとしては、装置テーブルを検査することが含まれていても良い。判定ステップ８３６において、すべてのＨＡが適切なビットを設定したと判定されたら直ちに、制御は判定ステップ８３６からステップ８８８に移る。ここでは、ローカル記憶装置に対する非アクティブな領域が空であるか否かが判定される。判定ステップ８８８において、非アクティブな領域が空であると判定されたら直ちに、制御はステップ８８８からステップ８９９に移る。ここでは、データをローカル記憶装置から遠隔記憶装置にコピーすることが一時停止される。シーケンス番号切り換えが完了するまでデータのコピーを一時停止することは有用である。
【０１１９】
ステップ８９９の次は判定ステップ８９２であり、ここでは、ローカル記憶装置がマルチ・ボックス・モードであるか否かが判定される。判定ステップ８９２において、ローカル記憶装置がマルチ・ボックス・モードであると判定された場合には、制御は判定ステップ８９２から判定ステップ８９４に移って、対応する遠隔記憶装置のアクティブな領域が空であるか否かが判定される。後に詳細に説明するように、遠隔記憶装置は、そのアクティブな領域を空にしたら直ちに、ローカル記憶装置にメッセージを送る。メッセージに応答して、ローカル記憶装置は内部変数を設定し、この内部変数が判定ステップ８９４で検査される。
【０１２０】
判定ステップ８９４において、遠隔記憶装置のアクティブな領域が空であると判定されたら直ちに、制御は判定ステップ８９４からステップ８９６に移る。ここでは、ローカル記憶装置がサイクル切り換えに対して準備完了であることを示す内部変数が、ローカル記憶装置上で設定される。図１７のフロー・チャート７８０に関連して前述したように、ホストは、各ローカル記憶装置が切り換えに対して準備完了であるか否かを判定するために、各ローカル記憶装置に問い合わせる。ホストから送られる問い合わせに応答して、ローカル記憶装置は、ステップ８９６で設定される内部変数を検査して、結果をホストに戻す。
【０１２１】
ステップ８９６の次は判定ステップ８９８であり、ここでは、ローカル記憶装置は、サイクル切り換えを行なうためにホストからコマンドを受信することを待つ。図１７のフロー・チャート７８０に関連して前述したように、ホストは、ローカル記憶装置がマルチ・ボックス・モードで動作しているときに、サイクルを切り換えるためのコマンドをローカル記憶装置に送る。このようにして、ローカル記憶装置は、ステップ８９８においてコマンドを待つ。コマンドは、ローカル記憶装置がマルチ・ボックス・モードで動作しているときにのみ届く。
【０１２２】
ローカル記憶装置がホストから切り換えコマンドを受信したら直ちに、制御はステップ８９８からステップ９０２に移って、遠隔記憶装置にコミット・メッセージが送られる。なお、ステップ９０２には、判定ステップ８９２からも到達する。これは、判定ステップ８９２において、ローカル記憶装置がマルチ・ボックス・モードではないと判定された場合である。ステップ９０２では、ローカル記憶装置が遠隔記憶装置にコミット・メッセージを送る。特定のシーケンス番号に対するコミット・メッセージを受信することに応答して、遠隔記憶装置は、シーケンス番号に対応するデータの復元を始める。これは、前述した通りである。
【０１２３】
ステップ９０２の次はステップ９０６であり、ここでは、シーケンス番号が増加されて、タグに対する新しい値（ホストから）が記憶される。シーケンス番号については、前述した通りである。タグは、ステップ７６４およびステップ７９６でローカル記憶装置に送られるタグであり、前述した通りである。タグは、データ・リカバリを容易にするために用いられる。これについては、本明細書の他の場所で説明されている通りである。
【０１２４】
ステップ９０６の次はステップ９０７であり、ここでは、サイクル切り換えが完了したことの確認が、ローカル記憶装置からホストに対して行なわれる。確認は、ローカル記憶装置からホストにメッセージが送られることによってなされる。いくつかの実施形態では、ローカル記憶装置がマルチ・ボックス・モードであるか否かに対してステップ９０７の実行を調整することが可能である。なぜならば、ローカル記憶装置がマルチ・ボックス・モードでない場合には、ホストは必ずしも、サイクル切り換えがいつ行なわれるかについて関心があるわけではないからである。
【０１２５】
ステップ９０７の次はステップ９０８であり、ここでは、判定ステップ８３６で用いられるＨＡに対するビットがすべてクリアされ、その結果、シーケンス番号の増加とともにビットを再び設定することができる。ステップ９０８の次は判定ステップ９１２であり、ここでは、遠隔記憶装置がコミット・メッセージに確認応答したか否かが判定される。なお、ローカル／遠隔対がマルチ・ボックス・モードで動作していて、さらにステップ８９４において遠隔記憶装置のアクティブな領域が空であると判定された場合には、遠隔記憶装置はコミット・メッセージにほとんど即座に確認応答しなければならない。なぜならば、遠隔記憶装置は、そのアクティブな領域がすでに空であるので、サイクル切り換えに対して即座に準備完了となるからである。
【０１２６】
判定ステップ９１２において、遠隔記憶装置がコミット・メッセージに確認応答したと判定されたら直ちに、制御はステップ９１２からステップ９１４に移る。ここでは、コピーの一時停止（ステップ８９９で行なわれた）がクリアされるため、ローカル記憶装置から遠隔記憶装置へのコピーを再開することができる。ステップ９１４に続いて処理は完了する。
【０１２７】
図１９を参照すると、フロー・チャート９４０は、ＲＡが非アクティブなバッファを走査してＲＤＦデータをローカル記憶装置から遠隔記憶装置に送信することと関連して行なわれるステップを例示している。図１９のフロー・チャート９４０は、図６のフロー・チャート２００と類似しており、類似するステップには同じ参照番号が付与されている。しかし、フロー・チャート９４０には、図６のフロー・チャート２００にはない２つのさらなるステップ９４２，９４４が含まれている。さらなるステップ９４２，９４４は、マルチ・ボックス処理を容易にするために用いられる。ステップ２１２においてデータが送られた後で、制御はステップ２１２から判定ステップ９４２に移る。ここでは、送られているデータがローカル記憶装置の非アクティブな領域における最後のデータであるか否かが判定される。最後でない場合には、制御はステップ９４２からステップ２１４に移り、処理は、図６のフロー・チャート２００に関連して説明したように続く。他方、判定ステップ９４２において、送られているデータが領域の最後のデータであると判定された場合には、制御はステップ９４２からステップ９４４に移り、ローカル記憶装置から遠隔記憶装置に特別なメッセージを送って、最後のデータが送られたことを示す。ステップ９４４の後に、制御はステップ２１４に移り、処理は、図６のフロー・チャート２００に関連して説明したように続く。いくつかの実施形態では、ステップ９４２，９４４は、データを転送するプロセスおよび／またはハードウェア装置とは異なる別個のプロセス（および／または別個のハードウェア装置）によって行なっても良い。
【０１２８】
図２０を参照すると、フロー・チャート９５０は、ＲＡが非アクティブなバッファを走査して、ＲＤＦデータをローカル記憶装置から遠隔記憶装置に送信することと関連して行なわれるステップを例示している。図２０のフロー・チャート９５０は図１３のフロー・チャート５００と類似しており、類似するステップには、同じ参照番号が付与されている。しかし、フロー・チャート９５０には、図１３のフロー・チャート５００にはないさらなるステップ９５２が含まれている。さらなるステップ９５２は、マルチ・ボックス処理を容易にするために用いられ、図１９のフロー・チャート９４０のさらなるステップ９４４と同様である。判定ステップ５２４において、ローカル記憶装置から遠隔記憶装置に送るべきスロットはもう残っていないと判定された後に、制御はステップ５２４からステップ９５２に移り、ローカル記憶装置から遠隔記憶装置に特別なメッセージを送って、領域に対する最後のデータが送られたことを示す。ステップ９５２に続いて処理は完了する。
【０１２９】
図２１を参照すると、フロー・チャート９６０は、遠隔記憶装置のアクティブな領域が空であるということを示すことに関連して遠隔記憶装置において行なわれるステップを例示する。フロー・チャート９６０は、図９のフロー・チャート３００と同様である。ただし、フロー・チャート９６０は、遠隔記憶装置のアクティブな領域が復元された後に行なわれる新しいステップ９６２を示している。ステップ９６２において、遠隔記憶装置は、遠隔記憶装置のアクティブな領域が空であることを示すメッセージを、ローカル記憶装置に送る。ステップ９６２で送られたメッセージを受け取ったら直ちに、ローカル記憶装置は、遠隔記憶装置の非アクティブなバッファが空であることを示す内部変数を設定する。ローカル変数は、図１８のフロー・チャート８３０の判定ステップ８９４（前述した）とともに検査される。
【０１３０】
図２２を参照すると、ダイアグラム９８０は、ホスト７０２、ローカル記憶装置７０３〜７０５、および遠隔記憶装置７０６〜７０８を例示している。これらは、図１４のダイアグラム７００において示されている。またダイアグラム９８０には、ホスト７０２およびローカル記憶装置７０３〜７０５に結合される第１の代替的なホスト９８２も含まれている。またダイアグラム９８０には、遠隔記憶装置７０６〜７０８に結合される第２の代替的なホスト９８４も含まれている。代替的なホスト９８２，９８４は、データ・リカバリに対して用いても良い。これについては、後に詳細に説明する。
【０１３１】
遠隔サイトにおいてデータのリカバリが必要であるときに、ローカル記憶装置７０３〜７０５と遠隔記憶装置７０６〜７０８との間のリンクが依然として動作している場合には、リカバリはホスト９８２またはホスト７０２によって行なうことができる。リンクが動作していない場合には、データ・リカバリは、遠隔記憶装置７０６〜７０８に結合される第２の代替的なホスト９８４によって行なうことができる。第２の代替的なホスト９８４は、遠隔記憶装置７０６〜７０８の１つまたは複数と同じ場所に設けても良い。あるいは、第２の代替的なホスト９８４は、すべての遠隔記憶装置７０６〜７０８から離れていても良い。システム全体を通して伝えられるテーブル７３０に、データ・リカバリとともにアクセスして、マルチ・ボックス・グループのメンバを判定する。
【０１３２】
図２３を参照すると、フロー・チャート１０００は、データ・リカバリ動作と関連して遠隔記憶装置７０６〜７０８のそれぞれによって行なわれるステップを例示する。フロー・チャート１０００のステップは、信号またはメッセージ（データ・リカバリは必要であることを示す）を受け取ったら、遠隔記憶装置７０６〜７０８のそれぞれによって実行しても良い。いくつかの実施形態では、遠隔記憶装置が、たとえば前回の書き込みからの時間の長さなどの従来の基準を用いることで、データ・リカバリが必要であることを自動的に検知することが可能であっても良い。
【０１３３】
処理は、第１のステップ１００２から始まる。ここでは、遠隔記憶装置が、本明細書の他の場所で説明されている仕方でアクティブな領域を復元することを完了する。ステップ１００２の次は判定ステップ１００４であり、ここでは、遠隔記憶装置の非アクティブな領域が完了したか（すなわち、すべてのデータがそこに書き込まれたか）否かが判定される。なお、遠隔記憶装置は、非アクティブな領域が完了したか否かの判定を、ステップ９４４，９５２でローカル記憶装置が送るメッセージ（前述した）を用いて行なっても良い。すなわち、ステップ９４４またはステップ９５２でローカル記憶装置がメッセージを送った場合に、遠隔記憶装置は、そのメッセージの受け取りを用いて、非アクティブな領域が完了したことを確認しても良い。
【０１３４】
判定ステップ１００４において、遠隔記憶装置の非アクティブな領域が完了していないと判定された場合には、制御は判定ステップ１００４からステップ１００６に移る。ここでは、非アクティブな領域からのデータが廃棄される。不完了な非アクティブな領域を用いてデータ・リカバリが行なわれることはない。なぜならば、不完了な非アクティブな領域内のデータは、対応するアクティブな領域との整合性がない場合があるからである。したがって、データ・リカバリは、アクティブな領域を用いて、場合によっては、完了した非アクティブな領域を用いて行なわれる。ステップ１００６に続いて処理は完了する。
【０１３５】
判定ステップ１００４において、非アクティブな領域が完了していると判定された場合には、制御はステップ１００４からステップ１００８に移る。ここでは、遠隔記憶装置が、ホストによる介入を待つ。非アクティブな領域、ホスト７０２，９８２，９８４のうちの１つ（必要に応じて）が、リカバリの実行方法を判定するために、マルチ・ボックス・グループ内のすべての遠隔記憶装置の状態の検査を必要とする場合には。これについては、後に詳細に説明する。
【０１３６】
ステップ１００８の次は判定ステップ１０１２であり、ここでは、非アクティブな領域を廃棄するためのコマンドをホストがすべての記憶装置に送ったか否かが判定される。送った場合には、制御はステップ１０１２からステップ１００６に移って、非アクティブな領域を廃棄する。ステップ１００６に続いて処理は完了する。
【０１３７】
判定ステップ１００２において、完了した非アクティブな領域を復元するためのコマンドをホストが送ったと判定された場合には、制御はステップ１０１２からステップ１０１４に移る。ここでは、非アクティブな領域が、遠隔記憶装置に対して復元される。遠隔記憶装置において非アクティブな領域を復元することには、非アクティブな領域をアクティブな領域にすることと、アクティブな領域をディスクに書き込むこととが伴う。これについては、本明細書の他の場所で説明されている通りである。ステップ１０１４に続いて処理は完了する。
【０１３８】
図２４を参照すると、フロー・チャート１０３０は、ホスト７０２，９８２，９８４のうちの１つが、各遠隔記憶装置の各非アクティブな領域を廃棄するべきか復元するべきかを判定することと関連して行なわれるステップを例示している。復元を行なっているホスト７０２，９８２，９８４のうちの１つは、遠隔記憶装置７０６〜７０８と通信して、それらにコマンドを送り、それらから情報を受け取ることを、ホストが割り当てるタグを用いて行なう。これについては、本明細書の他の場所で説明されている通りである。
【０１３９】
処理は、第１のステップ１０３２から始まる。ここでは、遠隔記憶装置の何れかが、完了した非アクティブな領域を有するか否かが判定される。有していない場合には、行なうべきさらなる処理は存在せず、前述したように、遠隔記憶装置は、ホスト介入を伴うことなく自力で不完了な領域を廃棄する。有する場合には、制御は判定ステップ１０３２から判定ステップ１０３４に移る。ここでは、すべての遠隔記憶装置が、完了した非アクティブな領域を有するか否かが、ホストによって判定される。有する場合には、制御は判定ステップ１０３４から判定ステップ１０３６に移る。ここでは、すべての遠隔記憶装置のすべての完了した非アクティブな領域が同じタグ番号を有するか否かが、判定される。本明細書の他の場所で説明されているように、タグは、ホストによって割り当てられ、およびデータを識別するためにシステムによって用いられる。識別方法は、同じサイクルに対して同じ値を有するようにホストによってタグが制御されることを除いて、シーケンス番号の場合と同様である。
【０１４０】
判定ステップ１０３６において、すべての遠隔記憶装置が非アクティブな領域に対して同じタグを有すると判定された場合には、制御はステップ１０３６からステップ１０３８に移る。ここでは、すべての非アクティブな領域が復元される。ステップ１０３８を行なうことによって、すべての遠隔記憶装置が同じサイクルからのデータを有することが保証される。ステップ１０３８に続いて処理は完了する。
【０１４１】
判定ステップ１０３４において、すべての非アクティブな領域が完了してはいないと判定された場合、またはステップ１０３６において、すべての完了した非アクティブな領域が同じタグを有してはいないと判定された場合には、制御はステップ１０４２に移る。ここでは、ホストから遠隔記憶装置に、下位のタグ番号を有する完了した非アクティブな領域を復元するためのコマンドが送られる。説明の目的上、タグ番号は増加するため下位のタグ番号の方が古いデータを表わすということが仮定されている。一例として、第１の遠隔記憶装置が、タグ値が３である完了した非アクティブな領域を有し、第２の遠隔記憶装置が、タグ値が４である完了した非アクティブな領域を有していた場合、ステップ１０４２によって、第１の遠隔記憶装置（第２ではない）がその非アクティブな領域を復元する。ステップ１０４２の次はステップ１０４４であり、ここでは、ホストから遠隔記憶装置に、高位のタグ番号を有する完了した非アクティブなバッファ（たとえば、前の例の第２の遠隔記憶装置）を廃棄するコマンドが送られる。ステップ１０４４に続いて処理は完了する。
【０１４２】
ステップ１０４４を実行した後、各遠隔記憶装置には、残りの遠隔記憶装置に対するデータと同じタグ値に関連するデータが収容されている。したがって、遠隔記憶装置７０６〜７０８上の回復されるデータは、整合性のあるものとなるはずである。
【０１４３】
本発明を種々の実施形態に関連して開示してきたが、本発明に対する変更は当業者には容易に明らである。したがって本発明の趣旨および範囲は、添付の請求項に述べられている。
【図面の簡単な説明】
【０１４４】
【図１】本明細書で説明するシステムと共に用いられるホスト、ローカル記憶装置、および遠隔データ記憶装置を示す概略図。
【図２】本明細書で説明するシステムと共に用いられるホスト、ローカル記憶装置、および遠隔データ記憶装置の間でのデータの流れを示す概略図。
【図３】本明細書で説明するシステムによりローカル記憶装置上のデータ領域を構築および操作するための項目を例示する概略図。
【図４】本明細書で説明するシステムとともに用いられるスロットに対するデータ構造を例示するダイアグラム。
【図５】本明細書で説明するシステムによりホストによる書き込みに応答するホスト・アダプタ（ＨＡ）の動作を例示するフロー・チャート。
【図６】本明細書で説明するシステムによりデータをローカル記憶装置から遠隔記憶装置へ転送することを例示するフロー・チャート。
【図７】本明細書で説明するシステムにより遠隔記憶装置上のデータ領域を構築および操作するための項目を例示する概略図。
【図８】本明細書で説明するシステムによりローカル記憶装置からコミット・インディケータを受信することに関連して遠隔記憶装置によって行なわれるステップを例示するフロー・チャート。
【図９】本明細書で説明するシステムにより遠隔記憶装置において送信データを記憶することを例示するフロー・チャート。
【図１０】本明細書で説明するシステムによりローカル記憶装置がシーケンス番号を増加させることに関連して行なわれるステップを例示するフロー・チャート。
【図１１】本明細書で説明するシステムの代替的な実施形態によりローカル記憶装置上のデータ領域を構築および操作するための項目を例示する概略図。
【図１２】本明細書で説明するシステムの代替的な実施形態によりホストによる書き込みに応答するホスト・アダプタ（ＨＡ）の動作を例示するフロー・チャート。
【図１３】本明細書で説明するシステムの代替的な実施形態によりデータをローカル記憶装置から遠隔記憶装置へ転送することを例示するフロー・チャート。
【図１４】本明細書で説明するシステムによりホストを伴う複数のローカルおよび遠隔記憶装置を例示する概略図。
【図１５】本明細書で説明するシステムとともに用いられるマルチ・ボックス・モード・テーブルを示すダイアグラム。
【図１６】本明細書で説明するシステムによりマルチ・ボックス・モード・テーブルを変更することを例示するフロー・チャート。
【図１７】本明細書で説明するシステムによりホストによるサイクル切り換えを例示するフロー・チャート。
【図１８】本明細書で説明するシステムによりローカル記憶装置がシーケンス番号を増加させることに関連して行なわれるステップを例示するフロー・チャート。
【図１９】本明細書で説明するシステムによりデータをローカル記憶装置から遠隔記憶装置へ転送することを例示するフロー・チャート。
【図２０】本明細書で説明するシステムの代替的な実施形態によりデータをローカル記憶装置から遠隔記憶装置へ転送することを例示するフロー・チャート。
【図２１】本明細書で説明するシステムにより遠隔記憶装置から対応するローカル記憶装置にアクティブな空のインディケータ・メッセージを送ることを例示するフロー・チャート。
【図２２】本明細書で説明するシステムにより複数のホストを伴う複数のローカルおよび遠隔記憶装置を例示する概略図。
【図２３】本明細書で説明するシステムによりデータ・リカバリとともに遠隔記憶装置により行なわれる処理を例示するフロー・チャート。
【図２４】本明細書で説明するシステムによりデータ・リカバリとともにホストにより行なわれる処理を例示するフロー・チャート。
【図１】
2007513424.tif 000003
【図２】
2007513424.tif 000004
【図３】
2007513424.tif 000005
【図４】
2007513424.tif 000006
【図５】
2007513424.tif 000007
【図６】
2007513424.tif 000008
【図７】
2007513424.tif 000009
【図８】
2007513424.tif 000010
【図９】
2007513424.tif 000011
【図１０】
2007513424.tif 000012
【図１１】
2007513424.tif 000013
【図１２】
2007513424.tif 000014
【図１３】
2007513424.tif 000015
【図１４】
2007513424.tif 000016
【図１５】
2007513424.tif 000017
【図１６】
2007513424.tif 000018
【図１７】
2007513424.tif 000019
【図１８】
2007513424.tif 000020
【図１９】
2007513424.tif 000021
【図２０】
2007513424.tif 000022
【図２１】
2007513424.tif 000023
【図２２】
2007513424.tif 000024
【図２３】
2007513424.tif 000025
【図２４】
2007513424.tif 000026
【国際調査報告】
2007513424.tif 000027