(57)【要約】一次記憶装置（２４）は、第１の時間後であり第２の時間前に開始されたデータ書き込みを第１のデータの部分（５２）に関連付けること、第２の時間後に開始されるデータ書き込みを第１のデータの部分とは異なる第２のデータの部分（５４）に関連付けること、第１のデータの部分に関連付けられる全ての書き込みが完了した後に、二次記憶装置（２６）への第１のデータの部分に関連付けられる書き込みの転送を開始することにより、複数のデータ書き込みを順序付ける。
2006523890.tif 000002
【特許請求の範囲】
【請求項１】
データ書き込みを順序付ける方法であって、
一次記憶装置が複数のデータ書き込みを受信すること、
前記一次記憶装置が、第１の時間後であり第２の時間前に開始されるデータ書き込みを、第１のデータの部分に関連付けること、
前記一次記憶装置が、前記第２の時間後に開始されるデータ書き込みを、前記第１のデータの部分とは異なる第２のデータの部分に関連付けること、
前記第１のデータの部分に関連付けられる全ての書き込みが完了した後に、前記一次記憶装置が二次記憶装置への前記第１のデータの部分に関連付けられる書き込みの転送を開始すること、
を備える方法。
【請求項２】
請求項１に記載の方法であって、更に、
前記一次記憶装置が前記二次記憶装置への前記第１のデータの部分に関連付けられる全ての書き込みを転送することに後続して、前記一次記憶装置が前記二次記憶装置にメッセージを送信すること、
前記一次記憶装置から前記メッセージを受信することに応答して、前記二次記憶装置が前記第１のデータの部分に関連付けられるデータ書き込みを記憶すること、
を備える方法。
【請求項３】
請求項２に記載の方法であって、更に、
前記第１のデータの部分に関連付けられる全てのデータ書き込みを記憶した後に、前記二次記憶装置が前記一次記憶装置に承認を送信すること、
を備える方法。
【請求項４】
請求項３に記載の方法であって、更に、
前記二次記憶装置にメッセージを送信することに後続して、前記一次記憶装置が前記二次記憶装置へのデータの転送を一時停止すること、
を備える方法。
【請求項５】
請求項４に記載の方法であって、更に、
前記データの転送の一次停止に後続して、前記一次記憶装置が、後続するデータ書き込みに対して、データ書き込みを前記第１のデータの部分および前記第２のデータの部分とは異なる第３のデータの部分に関連付けること、
を備える方法。
【請求項６】
請求項５に記載の方法であって、更に、
前記二次記憶装置が前記一次記憶装置に承認を送信することに応答して、前記一次記憶装置が前記二次記憶装置へのデータの転送を再開すること、
を備える方法。
【請求項７】
請求項１に記載の方法であって、更に、
前記一次記憶装置のキャッシュ・スロットにデータ書き込みを供給すること、
を備える方法。
【請求項８】
請求項７に記載の方法であって、更に、
前記第１のデータの部分と既に関連付けられているキャッシュ・スロットに対応する前記第２のデータの部分にデータ書き込みが関連付けられることに応答して、前記データを新たなキャッシュ・スロットにコピーすること、
を備える方法。
【請求項９】
請求項７に記載の方法であって、更に、
前記一次記憶装置が、前記第１のデータの部分に関連付けられるデータ書き込みに対する前記キャッシュ・スロットに対してポインタの第１のリストを使用すること、
前記一次記憶装置が、前記第２のデータの部分に関連付けられるデータ書き込みに対する前記キャッシュ・スロットに対してポインタの第２のリストを使用すること、
を備える方法。
【請求項１０】
請求項９に記載の方法であって、更に、
前記スロットのそれぞれのヘッダ部分にキャッシュ・スタンプ・フィールドを設けることであって、該キャッシュ・スタンプ・フィールドは前記スロットに関連付けられるシーケンス番号を含み、該シーケンス番号はデータの部分の特定の一つに対応する、キャッシュ・スタンプ・フィールドを設けること、
を備える方法。
【請求項１１】
請求項１０に記載の方法において、
前記キャッシュ・スタンプ・フィールドは、更に、前記スロットが最初に使用されるときに書き込まれるパスワード・フィールドを含む、方法。
【請求項１２】
請求項１１に記載の方法であって、更に、
スロットがもはや使用されていないことに応答して、前記パスワード・フィールドを消去すること、
を備える方法。
【請求項１３】
請求項７に記載の方法であって、更に、
前記一次記憶装置が前記第１のデータの部分に関連付けられるデータ書き込みに対応する前記キャッシュ・スロットに対して第１のキャッシュ専用仮想装置を使用すること、
前記一次記憶装置が前記第２のデータの部分に関連付けられるデータ書き込みに対応する前記キャッシュ・スロットに対して第２のキャッシュ専用仮想装置を使用すること、
を備える方法。
【請求項１４】
リモート記憶装置に順序付けられた書き込みを記憶する方法であって、
第１のデータの部分に関連付けられるデータに対するメッセージを受信すること、
未だに記憶されていない前記第１のデータの部分とは異なる第２のデータの部分に関連付けられるデータに応答して、記憶されるべき前記第２のデータの部分に関連付けられるデータを待機すること、
前記第１のデータの部分に関連付けられるデータの記憶を開始すること、
を備える方法。
【請求項１５】
請求項１４に記載の方法であって、更に、
前記メッセージを承認すること、
を備える方法。
【請求項１６】
請求項１４に記載の方法であって、更に、
前記第１のデータの部分に関連付けられるデータを受信することに関連して、変更されたスロットのリストを構成すること、
を備える方法。
【請求項１７】
請求項１６に記載の方法において、前記第１のデータの部分に関連付けられるデータの記憶を開始することは、前記変更されたスロットのリストを走査することを含む、方法。
【請求項１８】
請求項１に記載の方法において、前記複数のデータ書き込みを受信することは、ホストから複数のデータ書き込みを受信することを含む、方法。
【請求項１９】
請求項１に記載の方法であって、更に、
前記一次記憶装置が前記二次記憶装置に前記第１のデータの部分に関連付けられる全ての書き込みを転送することに後続して、前記一次記憶装置が前記二次記憶装置にメッセージを送信すること、
を備える方法。
【請求項２０】
データ書き込みを順序付けるコンピュータ・ソフトウェアであって、
第１の時間後であり第２の時間前に開始されるデータ書き込みを第１のデータの部分に関連付ける実行可能コードと、
前記第２の時間後に開始されるデータ書き込みを前記第１のデータの部分とは異なる第２のデータの部分に関連付ける実行可能コードと、
前記第１のデータの部分に関連付けられる全ての書き込みが完了した後に、記憶装置への前記第１のデータの部分に関連付けられる書き込みの転送を開始する実行可能コードと、
を備えるコンピュータ・ソフトウェア。
【請求項２１】
請求項２０に記載のコンピュータ・ソフトウェアであって、更に、
前記第１のデータの部分に関連付けられる全ての書き込みを転送した後に、前記記憶装置にメッセージを送信する実行可能コードと、
前記メッセージを送信した後に、前記記憶装置へのデータの転送を一時停止する実行可能コードと、
を備えるコンピュータ・ソフトウェア。
【請求項２２】
請求項２１に記載のコンピュータ・ソフトウェアであって、更に、
前記データの転送の一時停止に後続して、後のデータ書き込みに対して、データ書き込みを、前記第１のデータの部分および前記第２の部分とは異なる第３のデータの部分に関連付ける実行可能コード、
を備えるコンピュータ・ソフトウェア。
【請求項２３】
請求項２２に記載のコンピュータ・ソフトウェアであって、更に、
前記記憶装置が前記メッセージを取り扱うことを承認することに応答して、前記記憶装置へのデータの転送を再開する実行可能コード、
を備えるコンピュータ・ソフトウェア。
【請求項２４】
請求項２０に記載のコンピュータ・ソフトウェアであって、更に、
キャッシュ・スロットにデータ書き込みを供給する実行可能コード、
を備えるコンピュータ・ソフトウェア。
【請求項２５】
請求項２４に記載のコンピュータ・ソフトウェアであって、更に、
前記第１のデータの部分と既に関連付けられているキャッシュ・スロットに対応する前記第２のデータの部分にデータ書き込みが関連付けられることに応答して、新たなキャッシュ・スロットにデータをコピーする実行可能コード、
を備えるコンピュータ・ソフトウェア。
【請求項２６】
請求項２４に記載のコンピュータ・ソフトウェアであって、更に、
前記第１のデータの部分に関連付けられるデータ書き込みに対して前記キャッシュ・スロットに対するポインタの第１のリストを使用する実行可能コードと、
前記第２のデータの部分に関連付けられるデータ書き込みに対して前記キャッシュ・スロットに対するポインタの第２のリストを使用する実行可能コードと、
を備えるコンピュータ・ソフトウェア。
【請求項２７】
請求項２６に記載のコンピュータ・ソフトウェアであって、更に、
前記スロットのそれぞれのヘッダ部分にキャッシュ・スタンプ・フィールドを設ける実行可能なコードを備え、該キャッシュ・スタンプ・フィールドは前記スロットに関連付けられるシーケンス番号を含み、該シーケンス番号はデータの部分の特定の一つに対応する、コンピュータ・ソフトウェア。
【請求項２８】
請求項２７に記載のコンピュータ・ソフトウェアにおいて、前記キャッシュ・スタンプ・フィールドは更に、前記スロットが最初に使用されるときに書き込まれるパスワード・フィールドを含む、コンピュータ・ソフトウェア。
【請求項２９】
請求項２８に記載のコンピュータ・ソフトウェアであって、更に、
スロットがもはや使用されていないことに応答して、前記パスワード・フィールドを消去する実行可能コード、
を備えるコンピュータ・ソフトウェア。
【請求項３０】
請求項２４に記載のコンピュータ・ソフトウェアであって、更に、
前記第１のデータの部分に関連付けられるデータ書き込みに対応する前記キャッシュ・スロットに対して第１のキャッシュ専用仮想装置を使用する実行可能コードと、
前記第２のデータの部分に関連付けられるデータ書き込みに対応する前記キャッシュ・スロットに対して第２のキャッシュ専用仮想装置を使用する実行可能コードと、
を備えるコンピュータ・ソフトウェア。
【請求項３１】
請求項２０に記載のコンピュータ・ソフトウェアであって、更に、
前記第１のデータの部分に関連付けられる全ての書き込みを転送した後に、前記記憶装置にメッセージを送信する実行可能コード、
を備えるコンピュータ・ソフトウェア。
【請求項３２】
リモート記憶装置に順序付けられた書き込みを記憶するコンピュータ・ソフトウェアであって、
第１のデータの部分に関連付けられるデータに対するメッセージを受信する実行可能コードと、
記憶されるべき、前記第１のデータの部分とは異なる第２のデータの部分に関連付けられるデータを待機する実行可能コードと、
前記第２のデータの部分が記憶された後に、前記第１のデータの部分に関連付けられるデータの記憶を開始する実行可能コードと、
を備えるコンピュータ・ソフトウェア。
【請求項３３】
請求項３２に記載のコンピュータ・ソフトウェアであって、更に、
前記メッセージを承認する実行可能コード、
を備えるコンピュータ・ソフトウェア。
【請求項３４】
請求項３２に記載のコンピュータ・ソフトウェアであって、更に、
前記第１のデータの部分に関連付けられるデータを受信することに関連して、変更されたスロットのリストを構成する実行可能コード、
を備えるコンピュータ・ソフトウェア。
【請求項３５】
請求項３４に記載のコンピュータ・ソフトウェアにおいて、前記第１のデータの部分に関連付けられるデータの記憶を開始する実行可能コードは、前記変更されたスロットのリストを走査する実行可能コードを含む、コンピュータ・ソフトウェア。
【請求項３６】
データ記憶装置であって、
データを含む少なくとも一つのディスク・ドライブと、
前記少なくとも一つのディスク・ドライブに接続されるとともに、前記少なくとも一つのディスク・ドライブに記憶されるべきデータを受信する少なくとも一つのホスト・アダプタと、
前記少なくとも一つのディスク・ドライブおよび前記少なくとも一つのホスト・アダプタに接続されるとともに、リモート記憶装置にデータを送信する少なくとも一つのリモート・アダプタとを備え、
前記少なくとも一つのホスト・アダプタによるデータの受信に応答して、第１の時間後であり第２の時間前に開始されるデータ書き込みが第１のデータの部分に関連付けられ、前記第２の時間後に開始されるデータ書き込みが前記第１のデータの部分とは異なる第２のデータの部分に関連付けられ、前記第１のデータの部分に関連付けられる全ての書き込みが完了した後に、前記リモート記憶装置への前記第１のデータの部分に関連付けられる書き込みの転送が開始される、データ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、コンピュータ記憶装置に関する。より詳細には、記憶装置の間でデータを転送する分野に関する。
【背景技術】
【０００２】
ホスト・プロセッサ・システムは、複数のインターフェース・ユニット（ホスト・アダプタ）、ディスク・ドライブ、およびディスク・インターフェース・ユニット（ディスク・アダプタ）を含む記憶装置を用いてデータを記憶したり、引き出したりする。このような記憶装置は、例えば、マサチューセッツ州ホプキントンのＥＭＣコーポレイションから提供され、ヤナイら（Yanai et al.）に付与された米国特許第５，２０６，９３９号、ガルツァら（Galtzur et al.）に付与された米国特許第５，７７８，３９４号、ヴィシィリツキーら（Vishlitzky at al. ）に付与された米国特許第５，８４５，１４７号、およびオフェック（Ofek）に付与された米国特許第５，８５７，２０８号に開示されている。ホスト・システムは、共に設けられる複数のチャネルを通じて記憶装置にアクセスする。ホスト・システムは、記憶装置にチャネルを通じてデータを供給して制御情報にアクセスし、記憶装置は、同様に、チャネルを通じてホスト・システムにデータを供給する。ホスト・システムは、直接的に記憶装置のディスク・ドライブにアドレス指定しないが、その代わりに、複数の論理ディスク・ユニットとしてホスト・システムに現れるものをアクセスする。論理ディスク・ユニットは、実際のディスク・ドライブに対応していても、していなくてもよい。多数のホスト・システムが単一の記憶装置にアクセスすることを可能にすることで、多数のホスト・システムはその中に記憶されるデータを共有することができる。
【０００３】
一つの記憶装置から別の記憶装置にデータをコピーすることが望ましい場合がある。例えば、ホストが第１の記憶装置にデータを書き込む場合、該データを別の場所に設けられている第２の記憶装置にコピーすることが望ましく、第１の記憶装置を動作不能にさせる災害が生じたときにホスト（または別のホスト）が第２の記憶装置のデータを用いて動作を復旧することができる。このような性能は、例えば、マサチューセッツ州ホプキントンのＥＭＣコーポレイションから提供されるリモート・データ・ファシリティ（ＲＤＦ：Remote Data Facility）なる製品によってもたらされる。ＲＤＦでは、「一次記憶装置」（または「Ｒ１」）と称される第１の記憶装置がホストに接続される。「二次記憶装置」（または「Ｒ２」）と称される一つ以上の記憶装置は、ホストによって一次記憶装置に書き込まれたデータのコピーを受信する。ホストは、一次記憶装置と直接的に相互作用する。しかし、一つ以上の二次記憶装置には、一次記憶装置に対する全てのデータ変更がＲＤＦを用いて自動的に供給される。一次記憶装置と二次記憶装置とは、ＥＳＣＯＮリンク、ファイバー・チャネル・リンク、および／またはギガビット・イーサネット・リンクのようなデータ・リンクによって接続される。ＲＤＦの機能は、各記憶装置に設けられるＲＤＦアダプタ（ＲＡ：RDF adapter ）により促進される。
【０００４】
ＲＤＦは、同期データ転送を可能にする。この場合、ホストから一次記憶装置に書き込まれるデータが一次記憶装置から二次記憶装置にＲＤＦを用いて転送された後、二次記憶装置は一次記憶装置に対して受信を承認する。次いで、一次記憶装置は、書き込みの承認をホストに戻す。従って、同期モードでは、二次記憶装置へのＲＤＦ転送が完了され二次記憶装置によって承認されるまで、ホストは、一次記憶装置から書き込みの承認を受信しない。
【０００５】
同期ＲＤＦシステムの欠点は、各書き込み動作の待ち時間がＲＤＦ転送の承認を待つことで増加される点である。この問題は、一次記憶装置と二次記憶装置との間で距離が長いときにひどく、送信遅延により、ＲＤＦ転送を行い、転送が完了した後に承認が戻されるに必要な時間遅延が許容可能ではない。
【０００６】
半同期モードでＲＤＦを用いることも可能である。この場合、データはホストから一次記憶装置に書き込まれ、直ちにその書き込みは承認され、同時に、二次記憶装置へのデータの転送の処理が開始される。それにより、データの単一の転送について、このスキームは同期モードにおいてＲＤＦを用いる際の幾つかの不都合な点を克服する。しかしながら、データ保全のため、半同期モードでは前の転送が二次記憶装置によって承認されるまで一次記憶装置は二次記憶装置にデータを転送することはできない。それにより、同期モードにおいてＲＤＦを用いることに関連する障害は、前のデータの転送が二次記憶装置によって承認されるまで第２のデータ量の転送が生じないため、一回の繰り返し分だけ単に遅延される。
【０００７】
更なる可能性は、非同期モードでホストに一次記憶装置にデータを書き込ませ、一次記憶装置にバックグラウンドで二次記憶装置にデータをコピーさせることである。バックグラウンド・コピーは、順次に一次記憶装置の各トラック中を巡回することを伴い、特定のブロックが、該ブロックが最後にコピーされてから、変更されたと判断されると、そのブロックは一次記憶装置から二次記憶装置に転送される。この機構は、同期および半同期データ転送モードに関連付けられる待ち時間問題を減衰するが、一次記憶装置と二次記憶装置との間でデータの一貫性が保証されないため依然として問題がある。一次システムの故障のような問題が発生すると、二次システムは動かなくなりデータは使用不可能になる。
【０００８】
この問題に対する提案された解決策は、共に２００２年８月２１日に出願された米国仮特許出願第１０／２２４，９１８号明細書および第１０／２２５，０２１号明細書に開示されるシメトリックス自動複製（ＳＡＲ：Symmetrix Automated Replication ）処理である。ＳＡＲは、標準論理装置をミラーする装置（ＢＣＶ）を用いる。ＢＣＶ装置は、ミラーされた後に標準論理装置からスプリットされ、スプリットされた後に標準論理装置に再同調（即ち、ミラーとして再確立）され得る。しかしながら、ＳＡＲ処理の使用は、ＢＣＶを連続的にスプリットし、再同調する著しいオーバーヘッドを必要とする。ＳＡＲ処理は、制御しているホストが動作可能であることに依存するホスト制御および管理を用いる。更に、ＳＡＲ処理の実際的な実行に対するサイクル時間は、２０乃至３０分のオーダーであり、従って、ＲＤＦリンクおよび／または一次装置が故障したときに損失し得るデータの量は２０乃至３０分分のデータとなり得る。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従って、欠点を減少させる一方で上述の異なるの技法のそれぞれの幾つかの有利な特性を発揮するＲＤＦシステムが望ましい。このようなシステムは、一次装置と二次装置との間の距離に関係なく各ホストの書き込みに対する低い待ち時間を達成し、故障の場合に二次装置の一貫性（修復性）を提供する。
【課題を解決するための手段】
【００１０】
本発明によると、データ書き込みの順序付けは、一次記憶装置が複数のデータ書き込みを受信すること、一次記憶装置が第１の時間後であり第２の時間の前に開始されるデータ書き込みを第１のデータの部分に関連付けること、一次記憶装置が第２の時間後で開始されるデータ書き込みを、第１のデータの部分とは異なる第２のデータの部分に関連付けること、第１のデータの部分に関連付けられる全ての書き込みが完了した後に、一次記憶装置が二次記憶装置への第１のデータの部分に関連付けられる書き込みの転送を開始することを含む。データ書き込みの順序付けは、更に、一次記憶装置が二次記憶装置に第１のデータの部分に関連付けられる全ての書き込みを転送することに後続して、一次記憶装置が二次記憶装置にメッセージを送信すること、二次記憶装置が、一次記憶装置からのメッセージの受信に応答して、第１のデータの部分に関連付けられるデータ書き込み記憶することを含む。データ書き込みの順序付けは、更に、二次記憶装置が、第１のデータの部分に関連付けられる全てのデータ書き込みを記憶した後に、一次記憶装置に承認を送信することを含む。順序付けされたデータ書き込みは、更に、一次記憶装置が、二次記憶装置にメッセージを送信すること後続して、二次記憶装置へのデータの転送を一時停止することを含む。データ書き込みの順序付けは、更に、一次記憶装置が、データの転送の一時停止に後続して、その後のデータ書き込みに対して、データ書き込みを第１のデータの部分および第２のデータの部分とは異なる第３のデータの部分に関連付けることを含む。データ書き込みの順序付けは、更に、二次記憶装置が一次記憶装置に承認を送信することに応答して、一次記憶装置が二次記憶装置へのデータの転送を再開することを含む。データ書き込みの順序付けは、更に、一次記憶装置のキャッシュ・スロットにデータ書き込みを供給することを含む。データ書き込みの順序付けは、更に、第１のデータの部分と既に関連付けられているキャッシュ・スロットに対応する第２のデータの部分にデータ書き込みが関連付けられることに応答して、新たなキャッシュ・スロットにデータをコピーすることを含む。データ書き込みの順序付けは、更に、一次記憶装置が第１のデータの部分に関連付けられるデータ書き込みに対するキャッシュ・スロットに対してポインタの第１のリストを使用し、一次記憶装置が第２のデータの部分に関連付けられるデータ書き込みに対するキャッシュ・スロットに対してポインタの第２のリストを使用することを含む。データ書き込みの順序付けは、更に、スロットのそれぞれのヘッダ部分にキャッシュ・スタンプ・フィールドを設けることを含み、そのキャッシュ・スタンプ・フィールドはスロットに関連付けられるシーケンス番号を含み、そのシーケンス番号はデータの部分の特定の一つ部分に対応する。キャッシュ・スタンプ・フィールドは、更に、スロットが最初に使用されるときに書き込まれるパスワード・フィールドを含んでいてもよい。データ書き込みの順序付けは、更に、スロットがもはや使用されていないことに応答して、パスワード・フィールドを消去することを含む。データ書き込みの順序付けは、更に、一次記憶装置が第１のデータの部分に関連付けられるデータ書き込みに対応するキャッシュ・スロットに対して第１のキャッシュ専用仮想装置を使用すること、一次記憶装置が第２のデータの部分に関連付けられるデータ書き込みに対応するキャッシュ・スロットに対して第２のキャッシュ専用仮想装置を使用することを含む。
【００１１】
更に、本発明によると、リモート記憶装置に順序付けられた書き込みを記憶することは、第１のデータの部分に関連付けられるデータに対するメッセージを受信すること、未だに記憶されていない第１のデータの部分とは異なる第２のデータの部分に関連付けられるデータに応答して、記憶されるべき第２のデータの部分に関連付けられるデータを待機すること、第１のデータの部分に関連付けられるデータの記憶を開始することを含む。リモート記憶装置に順序付けられた書き込みを記憶することは、更に、メッセージを承認することを含む。リモート記憶装置に順序付けられた書き込みを記憶することは、更に、第１のデータの部分に関連付けられるデータを受信することに関連して、変更されたスロットのリストを構成することを含む。第１のデータの部分に関連付けられるデータの記憶を開始することは、変更されたスロットのリストを走査することを含む。複数のデータ書き込みを受信することは、ホストから複数のデータ書き込みを受信することを含む。リモート記憶装置に順序付けられた書き込みを記憶することは、更に、一次記憶装置が二次記憶装置に第１のデータの部分に関連付けられる全ての書き込みを転送することに後続して、一次記憶装置が二次記憶装置にメッセージを送信することを含む。
【００１２】
更に、本発明によると、データ書き込みを順序付けるコンピュータ・ソフトウェアは、第１の時間後であり第２の時間前に開始されるデータ書き込みを第１のデータの部分に関連付ける実行可能コードと、第２の時間後に開始されるデータ書き込みを第１のデータの部分とは異なる第２のデータの部分に関連付ける実行可能コードと、第１のデータの部分に関連付けられる全ての書き込みが完了した後に、記憶装置への第１のデータの部分に関連付けられる書き込みの転送を開始する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、第１のデータの部分に関連付けられる全ての書き込みを転送した後に、記憶装置にメッセージを送信する実行可能コードと、そのメッセージを送信した後に記憶装置へのデータの転送を一時停止する実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、データの転送の一時停止に後続して、後のデータ書き込みに対して、データ書き込みを第１のデータの部分および第２のデータの部分とは異なる第３のデータの部分に関連付ける実行可能コードを含む。コンピュータ・ソフトウェアは、更に、記憶装置がメッセージを取り扱うことを承認することに応答して、記憶装置へのデータの転送を再開する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、キャッシュ・スロットにデータ書き込みを供給する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、第１のデータの部分と既に関連付けられているキャッシュ・スロットに対応する第２のデータの部分にデータ書き込みが関連付けられることに応答して、新たなキャッシュ・スロットにデータをコピーする実行可能コードを含む。コンピュータ・ソフトウェアは、更に、第１のデータの部分に関連付けられるデータ書き込みに対してキャッシュ・スロットに対するポインタの第１のリストを使用する実行可能コードと、第２のデータの部分に関連付けられるデータ書き込みに対してキャッシュ・スロットに対するポインタの第２のリストを使用する実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、スロットのそれぞれのヘッダ部分にキャッシュ・スタンプ・フィールドを設ける実行可能コードを含み、そのキャッシュ・スタンプ・フィールドはスロットに関連付けられるシーケンス番号を含み、そのシーケンス番号はデータの部分の特定の一つに対応する。キャッシュ・スタンプ・フィールドは、更に、スロットが最初に使用されるときに書き込まれるパスワード・フィールドを含んでいてもよい。コンピュータ・ソフトウェアは、更に、スロットがもはや使用されていないことに応答して、パスワード・フィールドを消去する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、第１のデータの部分に関連付けられるデータ書き込みに対応するキャッシュ・スロットに対して第１のキャッシュ専用仮想装置を使用する実行可能コードと、第２のデータの部分に関連付けられるデータ書き込みに対応するキャッシュ・スロットに対して第２のキャッシュ専用仮想装置を使用する実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、第１のデータの部分に関連付けられる全ての書き込みを転送した後に、記憶装置にメッセージを送信する実行可能コードを含む。
【００１３】
更に、本発明によると、リモート記憶装置に順序付けられた書き込みを記憶するコンピュータ・ソフトウェアは、第１のデータの部分に関連付けられるデータに対するメッセージを受信する実行可能コードと、記憶されるべき、第１のデータの部分とは異なる第２のデータの部分に関連付けられるデータを待機する実行可能コードと、第２のデータの部分が記憶された後に第１のデータの部分に関連付けられるデータの記憶を開始する実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、メッセージを承認する実行可能コードを含む。コンピュータ・ソフトウェアは、第１のデータの部分に関連付けられるデータを受信することに関連して、変更されたスロットのリストを構成する実行可能コードを含む。第１のデータの部分に関連付けられるデータの記憶を開始する実行可能コードは、変更されたスロットのリストを走査する実行可能コードを含む。
【００１４】
更に、本発明によると、データ記憶装置は、データを含む少なくとも一つのディスク・ドライブと、少なくとも一つのディスク・ドライブに接続されるとともに、少なくとも一つのディスク・ドライブに記憶されるべきデータを受信する少なくとも一つのホスト・アダプタと、少なくとも一つのディスク・ドライブおよび少なくとも一つのホスト・アダプタに接続されるとともに、リモート記憶装置にデータを送信する少なくとも一つのリモート・アダプタとを含み、少なくとも一つのホスト・アダプタによるデータの受信に応答して、第１の時間後であり第２の時間前に開始されるデータ書き込みは第１のデータの部分に関連付けられ、第２の時間後に開始されるデータ書き込みは第１のデータの部分と異なる第２のデータの部分に関連付けられ、第１のデータの部分に関連付けられる全ての書き込みが完了した後に、リモート記憶装置への第１のデータの部分に関連付けられる書き込みの転送が開始される。
【００１５】
更に、本発明によると、データ書き込みの順序付けは、ホスト・コンピュータが一次記憶装置に複数のデータ書き込みを供給すること、一次記憶装置が第１の時間後であり第２の時間前に開始されるデータ書き込みに対して第１のシーケンス番号を割り当てること、一次記憶装置が第２の時間後に開始されるデータ書き込みに対して第１のシーケンス番号とは異なる第２のシーケンス番号を割り当てること、第１のシーケンス番号が割り当てられた全ての書き込みが完了したことに応答して、一次記憶装置が第１のシーケンス番号が割り当てられた書き込みを二次記憶装置に転送すること、一次記憶装置が第１のシーケンス番号が割り当てられた全ての書き込みを二次記憶装置に転送することに応答して、一次記憶装置が二次記憶装置に委任メッセージを送信することを含む。データ書き込みの順序付けは、更に、一次記憶装置からの委任メッセージの受信に応答して、二次記憶装置が第１のシーケンス番号を有するデータ書き込みを記憶することを含む。データ書き込みの順序付けは、更に、第１のシーケンス番号を有する全てのデータ書き込みの記憶に応答して、二次記憶装置が一次記憶装置に承認を送信することを含む。データ書き込みの順序付けは、更に、二次記憶装置に委任メッセージを送信することに後続して、一次記憶装置が二次記憶装置へのデータの転送を一時停止することを含む。データ書き込みの順序付けは、更に、データの転送の一時停止に後続して、一次記憶装置が、後続するデータ書き込みに対して、第１のシーケンス番号および第２のシーケンス番号とは異なる第３のシーケンス番号を割り当てることを含む。データ書き込みの順序付けは、更に、二次記憶装置が一次記憶装置に承認を送信することに応答して、一次記憶装置が二次記憶装置へのデータの転送を再開することを含む。データ書き込みの順序付けは、更に、一次記憶装置のキャッシュ・スロットにデータ書き込みを供給することを含む。データ書き込みの順序付けは、更に、第１のシーケンス番号が既に割り当てられているキャッシュ・スロットに対応する第２のシーケンス番号がデータ書き込みに割り当てられることに応答して、新たなキャッシュ・スロットにデータをコピーすることを含む。データ書き込みの順序付けは、更に、一次記憶装置が第１のシーケンス番号が割り当てられたデータ書き込みに対してキャッシュ・スロットに対するポインタの第１のリストを用いること、一次記憶装置が第２のシーケンス番号が割り当てられたデータ書き込みに対してキャッシュ・スロットに対するポインタの第２のリストを用いることを含む。データ書き込みの順序付けは、更に、スロットのそれぞれのヘッダ部分にキャッシュ・スタンプ・フィールドを設けることを含み、そのキャッシュ・スタンプ・フィールドはスロットに関連付けられるシーケンス番号を含む。キャッシュ・スタンプ・フィールドは、更に、スロットが最初に使用されるときに書き込まれるパスワード・フィールドを含んでいてもよい。データ書き込みの順序付けは、更に、スロットがもはや使用されていないことに応答して、パスワード・フィールドを消去することを含む。データ書き込みの順序付けは、更に、一次記憶装置が第１のシーケンス番号が割り当てられたデータ書き込みに対応するキャッシュ・スロットに対して第１のキャッシュ専用仮想装置を使用すること、一次記憶装置が第２のシーケンス番号が割り当てられたデータ書き込みに対応するキャッシュ・スロットに対して第２のキャッシュ専用仮想装置を使用することを含む。
【００１６】
更に、本発明によると、リモート記憶装置に順序付けられた書き込みを記憶することは、第１のシーケンス番号に関連付けられるデータに対する委任メッセージを受信すること、未だに記憶されていない第１のシーケンス番号とは異なる第２のシーケンス番号に関連付けられるデータに応答して、記憶されるべき第２のシーケンス番号に関連付けられるデータを待機すること、第１のシーケンス番号に関連付けられるデータの記憶を開始することを含む。順序付けられた書き込みを記憶することは、更に、委任メッセージを承認することを含む。順序付けられた書き込みを記憶することは、更に、第１のシーケンス番号に関連付けられるデータを受信することに関連して、変更されたスロットのリストを構成することを含む。第１のシーケンス番号に関連付けられるデータの記憶を開始することは、変更されたスロットのリストを走査することを含む。
【００１７】
更に、本発明によると、データ書き込みを順序付けるコンピュータ・ソフトウェアは、第１の時間後であり第２の時間前に開始されるデータ書き込みに対して第１のシーケンス番号を割り当てる実行可能コードと、第２の時間後に開始されるデータ書き込みに対して第１のシーケンス番号とは異なる第２のシーケンス番号を割り当てる実行可能コードと、第１のシーケンス番号が割り当てられた全ての書き込みが完了したことに応答して、第１のシーケンス番号が割り当てられた書き込みを記憶装置に転送する実行可能コードと、第１のシーケンス番号が割り当てられた全ての書き込みを転送した後に、記憶装置に委任メッセージを送信する実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、委任メッセージを送信した後に、記憶装置へのデータの転送を一時停止する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、データの転送の一時停止に後続して、後のデータ書き込みに対して、第１のシーケンス番号および第２のシーケンス番号とは異なる第３のシーケンス番号を割り当てる実行可能コードを含む。コンピュータ・ソフトウェアは、更に、記憶装置が委任を取り扱うことを承認することに応答して、記憶装置へのデータの転送を再開する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、キャッシュ・スロットにデータ書き込みを供給する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、第１のシーケンス番号が既に割り当てられているキャッシュ・スロットに対応する第２のシーケンス番号がデータ書き込みに割り当てられることに応答して、新たなキャッシュ・スロットにデータをコピーする実行可能コードを含む。コンピュータ・ソフトウェアは、更に、第１のシーケンス番号が割り当てられたデータ書き込みに対してキャッシュ・スロットに対するポインタの第１のリストを使用する実行可能コードと、第２のシーケンス番号が割り当てられたデータ書き込みに対してキャッシュ・スロットに対するポインタの第２のリストを使用する実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、スロットのそれぞれのヘッダ部分にキャッシュ・スタンプ・フィールドを設ける実行可能コードを含み、そのキャッシュ・スタンプ・フィールドはスロットに関連付けられるシーケンス番号を含む。キャッシュ・スタンプ・フィールドは、更に、スロットが最初に使用されるときに書き込まれるパスワード・フィールドを含んでいてもよい。コンピュータ・ソフトウェアは、更に、スロットがもはや使用されていないことに応答して、パスワード・フィールドを消去する実行可能なコードを含む。コンピュータ・ソフトウェアは、更に、第１のシーケンス番号が割り当てられたデータ書き込みに対応するキャッシュ・スロットに対して第１のキャッシュ専用仮想装置を使用する実行可能コードと、第２のシーケンス番号が割り当てられたデータ書き込みに対応するキャッシュ・スロットに対して第２のキャッシュ専用仮想装置を使用する実行可能コードとを含む。
【００１８】
更に、本発明によると、リモート記憶装置に順序付けられた書き込みを記憶するコンピュータ・ソフトウェアは、第１のシーケンス番号に関連付けられるデータに対する委任メッセージを受信する実行可能コードと、未だに記憶されていない第１のシーケンス番号とは異なる第２のシーケンス番号に関連付けられるデータに応答して、記憶されるべき第２のシーケンス番号に関連付けられるデータを待機する実行可能コードと、第１のシーケンス番号に関連付けられるデータの記憶を開始する実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、委任メッセージを承認する実行可能コードも含む。コンピュータ・ソフトウェアは、更に、第１のシーケンス番号に関連付けられるデータを受信することに関連して、変更されたスロットのリストを構成する実行可能コードを含む。第１のシーケンス番号に関連付けられるデータの記憶を開始する実行可能コードは、変更されたスロットのリストを走査する実行可能コードを含む。
【００１９】
更に、本発明によると、他の記憶装置からデータの部分を受信するリモート記憶装置から所望のデータを読み出すことは、所望のデータが他の記憶装置によって委任されているデータの部分の一部であるか否かを判断すること、所望のデータが他の記憶装置によって委任されているデータの部分の一部ではない場合には、対応する標準的な論理装置から所望のデータを読み出すこと、所望のデータが他の記憶装置によって委任されているデータの部分の一部である場合には、所望のデータを標準的な論理装置に転送して、所望のデータを転送した後における標準的な論理装置と、他の記憶装置によって委任されているデータの部分とのうちのいずれか一つから所望のデータを取得することを含む。リモート記憶装置から所望のデータを読み出すことは、更に、所望のデータが他の記憶装置によって委任されたデータの部分の一部である場合には、所望のデータを指定するキャッシュ専用仮想装置の対応するスロットをロックすることを含む。リモート記憶装置から所望のデータを読み出すことは、更に、対応するスロットをロックした後に、所望のデータが他の記憶装置によって委任されているデータの部分の一部であるか否かを再判断することを含む。リモート記憶装置から所望のデータを読み出すことは、更に、再判断の結果が所望のデータが他の記憶装置によって委任されているデータの部分の一部でないことを示した場合には、対応するスロットをアンロックして、対応する標準的な論理記憶装置から所望のデータを読み出すことを含む。リモート記憶装置から所望のデータを読み出すことは、更に、標準的な論理装置の対応するスロットをロックすること、対応するキャッシュ・スロットを統合すること、キャッシュ専用仮想装置の対応するスロットが標準的な論理装置を指定するようにすることを含む。
【００２０】
更に、本発明によると、リモート記憶装置に接続されるホストは、所望のデータを含むデータの最新かつ一貫した組を識別して、そのデータの最新かつ一貫した組から所望のデータを取得することで、ローカル記憶装置によって送信される所望のデータを読み出す。そのデータの組は、ローカル記憶装置によって委任されたデータの部分であってもよい。そのデータの部分には、所望のデータを書き込み始めた後に他のホスト・コンピュータが書き込み始めた他のデータを含む他のデータの部分に対するシーケンス番号よりも小さいシーケンス番号が割り当てられていてもよい。ローカル記憶装置によって送信される所望のデータを読み出すリモート記憶装置に接続されるホストは、更に、リモート記憶装置の多数のトラックが読み出されているか否かを判断すること、多数のトラックが読み出されている場合には、そのトラックを読み出す前に第１の現在のシーケンス番号を決定し、トラックを読み出し、第２の現在のシーケンス番号を決定し、第１の現在のシーケンス番号が第２の現在のシーケンス番号に等しくない場合にはトラックを再び読み出すことを含む。ローカル記憶装置によって送信される所望のデータを読み出すリモート記憶装置に接続されるホストは、更に、リモート記憶装置の多数のトラックが読み出されているか否かを判断すること、多数のトラックが読み出されている場合には、そのトラックを読み出す前に第１の現在のシーケンス番号を決定し、トラックを読み出し、第２の現在のシーケンス番号を決定し、第１の現在のシーケンス番号が第２の現在のシーケンス番号に等しくない場合にはエラーを戻すことを含む。
【００２１】
更に、本発明によると、他の記憶装置からデータの部分を受信するリモート記憶装置から所望のデータを読み出すコンピュータ・ソフトウェアは、所望のデータが他の記憶装置によって委任されているデータの部分の一部であるか否かを判断する実行可能コードと、所望のデータが他の記憶装置によって委任されているデータの部分の一部ではない場合には、対応する標準的な論理装置から所望のデータを読み出す実行可能コードと、所望のデータが他の記憶装置によって委任されているデータの部分の一部である場合には、所望のデータを標準的な論理装置に転送して、所望のデータを転送した後における標準的な論理装置と、他の記憶装置によって委任されているデータの部分とのうちのいずれか一つから所望のデータを取得する実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、所望のデータが他の記憶装置によって委任されたデータの部分の一部である場合には、所望のデータを指定するキャッシュ専用仮想装置の対応するスロットをロックする実行可能コードを含む。コンピュータ・ソフトウェアは、更に、対応するスロットをロックした後に、所望のデータが他の記憶装置によって委任されているデータの部分の一部であるか否かを再判断する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、再判断した結果が所望のデータが他の記憶装置によって委任されているデータの部分の一部でないことを示した場合には、対応するスロットをアンロックして、対応する標準的な論理記憶装置から所望のデータを読み出す実行可能コードを含む。コンピュータ・ソフトウェアは、更に、標準的な論理装置の対応するスロットをロックする実行可能コードと、対応するキャッシュ・スロットを統合する実行可能コードと、キャッシュ専用仮想装置の対応するスロットが標準的な論理装置を指定するようにする実行可能コードとを含む。
【００２２】
更に、本発明によると、ローカル記憶装置によって送信される所望のデータを読み出すためにリモート記憶装置に接続されるホスト用のコンピュータ・ソフトウェアは、所望のデータを含むデータの最新かつ一貫した組を識別する実行可能コードと、データの最新かつ一貫した組から所望のデータを取得する実行可能コードとを含む。そのデータの組は、ローカル記憶装置によって委任されたデータの部分であってもよい。そのデータの部分には、所望のデータを書き込み始めた後に他のホスト・コンピュータが書き込み始めた他のデータを含む他のデータの部分に対するシーケンス番号よりも小さいシーケンス番号が割り当てられていてもよい。コンピュータ・ソフトウェアは、更に、リモート記憶装置の多数のトラックが読み出されているか否かを判断する実行可能コードと、多数のトラックが読み出されている場合には、そのトラックを読み出す前に第１の現在のシーケンス番号を決定し、トラックを読み出し、第２の現在のシーケンス番号を決定する実行可能コードと、第１の現在のシーケンス番号が第２の現在のシーケンス番号に等しくない場合にはトラックを再び読み出す実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、リモート記憶装置の多数のトラックが読み出されているか否かを判断する実行可能コードと、多数のトラックが読み出されている場合には、そのトラックを読み出す前に第１の現在のシーケンス番号を決定し、トラックを読み出し、第２の現在のシーケンス番号を決定する実行可能コードと、第１の現在のシーケンス番号が第２の現在のシーケンス番号に等しくない場合にはエラーを戻す実行可能コードとを含む。
【００２３】
更に、本発明によると、データ書き込みの順序付けは、ホスト・コンピュータが一次記憶装置に複数のデータ書き込みを供給すること、一次記憶装置が、第１の時間の後であり第２の時間の前に開始されるデータ書き込みに対して第１のシーケンス番号を割り当てること、一次記憶装置が第２の時間後に開始されるデータ書き込みに対して第１のシーケンス番号とは異なる第２のシーケンス番号を割り当てること、第１のシーケンス番号が割り当てられた全ての書き込みが完了したことに応答して、一次記憶装置が第１のシーケンス番号が割り当てられた書き込みを二次記憶装置に転送すること、一次記憶装置が第１のシーケンス番号が割り当てられた全ての書き込みを二次記憶装置に転送することに応答して、一次記憶装置が二次記憶装置に委託メッセージを送信することを含む。データ書き込みの順序付けは、更に、一次記憶装置からの委託メッセージの受信に応答して、二次記憶装置が第１のシーケンス番号を有するデータ書き込みを記憶することを含む。データ書き込みの順序付けは、更に、第１のシーケンス番号を有する全てのデータ書き込みの記憶に応答して、二次記憶装置が一次記憶装置に承認を送信することを含む。データ書き込みの順序付けは、更に、二次記憶装置に委任メッセージを送信することに後続して、一次記憶装置が二次記憶装置へのデータの転送を一時停止することを含む。データ書き込みの順序付けは、更に、データの転送を一時停止することに後続して、一次記憶装置が後のデータ書き込みに対して第１のシーケンス番号および第２のシーケンス番号とは異なる第３のシーケンス番号を割り当てることを含む。データ書き込みの順序付けは、更に、二次記憶装置が一次記憶装置に承認を送信することに応答して、一次記憶装置が二次記憶装置へのデータの転送を再開することを含む。データ書き込みの順序付けは、更に、一次記憶装置のキャッシュ・スロットにデータ書き込みを供給することを含む。データ書き込みの順序付けは、更に、第１のシーケンス番号が既に割り当てられているキャッシュ・スロットに対応する第２のシーケンス番号がデータ書き込みに割り当てられることに応答して、新たなキャッシュ・スロットにデータをコピーすることを含む。データ書き込みの順序付けは、更に、一次記憶装置が第１のシーケンス番号が割り当てられたデータ書き込みに対してキャッシュ・スロットに対するポインタの第１のリストを使用すること、一次記憶装置が第２のシーケンス番号が割り当てられたデータ書き込みに対してキャッシュ・スロットに対するポインタの第２のリストを使用することを含む。データ書き込みの順序付けは、更に、スロットのそれぞれのヘッダ部分にキャッシュ・スタンプ・フィールドを設けることを含み、そのキャッシュ・スタンプ・フィールドはスロットに関連付けられるシーケンス番号を含む。キャッシュ・スタンプ・フィールドは、更に、スロットが最初に使用されるときに書き込まれるパスワード・フィールドを含んでいてもよい。データ書き込みの順序付けは、更に、スロットがもはや使用されていないことに応答して、パスワード・フィールドを消去することを含む。データ書き込みの順序付けは、更に、一次記憶装置が第１のシーケンス番号が割り当てられたデータ書き込みに対応するキャッシュ・スロットに対して第１のキャッシュ専用仮想装置を使用すること、一次記憶装置が第２のシーケンス番号が割り当てられたデータ書き込みに対応するキャッシュ・スロットに対して第２のキャッシュ専用仮想装置を使用することを含む。
【００２４】
更に、本発明によると、リモート記憶装置に順序付けられた書き込みを記憶することは、第１のシーケンス番号に関連付けられるデータに対して委任メッセージを受信すること、未だに記憶されていない第１のシーケンス番号とは異なる第２のシーケンス番号に関連付けられるデータに応答して、記憶されるべき第２のシーケンス番号に関連付けられるデータを待機すること、第１のシーケンス番号に関連付けられるデータの記憶を開始することを含む。順序付けられた書き込みを記憶することは、更に、委任メッセージを承認することを含む。順序付けられた書き込みを記憶することは、更に、第１のシーケンス番号に関連付けられるデータを受信することに関連して、変更されたスロットのリストを構成することを含む。第１のシーケンス番号に関連付けられるデータの記憶を開始することは、変更されたスロットのリストを走査することを含む。
【００２５】
更に、本発明によると、データ書き込みを順序付けるコンピュータ・ソフトウェアは、第１の時間後であり第２の時間前に開始されるデータ書き込みに対して第１のシーケンス番号を割り当てる実行可能コードと、第２の時間後に開始されるデータ書き込みに対して第１のシーケンス番号とは異なる第２のシーケンス番号を割り当てる実行可能コードと、第１のシーケンス番号が割り当てられた全ての書き込みが完了したことに応答して、第１のシーケンス番号が割り当てられた書き込みを記憶装置に転送する実行可能コードと、第１のシーケンス番号が割り当てられた全ての書き込みを転送した後に、記憶装置に委任メッセージを送信する実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、委任メッセージを送信した後に、記憶装置へのデータの転送を一時停止する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、データの転送の一時停止に後続して、後のデータ書き込みに対して、第１のシーケンス番号および第２のシーケンス番号とは異なる第３のシーケンス番号を割り当てる実行可能コードを含む。コンピュータ・ソフトウェアは、更に、記憶装置が委任を取り扱うことを承認することに応答して、記憶装置へのデータの転送を再開する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、キャッシュ・スロットにデータ書き込みを供給する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、第１のシーケンス番号が既に割り当てられているキャッシュ・スロットに対応する第２のシーケンス番号がデータ書き込みに割り当てられることに応答して、新たなキャッシュ・スロットにデータをコピーする実行可能コードを含む。コンピュータ・ソフトウェアは、更に、第１のシーケンス番号が割り当てられたデータ書き込みに対してキャッシュ・スロットに対するポインタの第１のリストを用いる実行可能コードと、第２のシーケンス番号が割り当てられたデータ書き込みに対してキャッシュ・スロットに対するポインタの第２のリストを用いる実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、スロットのそれぞれのヘッダ部分にキャッシュ・スタンプ・フィールドを設ける実行可能コードを含み、そのキャッシュ・スタンプ・フィールドはスロットに関連付けられるシーケンス番号を含む。キャッシュ・スタンプ・フィールドは、更に、スロットが最初に使用されるときに書き込まれるパスワード・フィールドを含んでいてもよい。コンピュータ・ソフトウェアは、更に、スロットがもはや使用されていないことに応答して、パスワード・フィールドを消去する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、第１のシーケンス番号が割り当てられたデータ書き込みに対応するキャッシュ・スロットに対して第１のキャッシュ専用仮想装置を使用する実行可能コードと、第２のシーケンス番号が割り当てられたデータ書き込みに対応するキャッシュ・スロットに対して第２のキャッシュ専用仮想装置を使用する実行可能コードとを含む。
【００２６】
更に、本発明によると、リモート記憶装置に順序付けられた書き込みを記憶するコンピュータ・ソフトウェアは、第１のシーケンス番号に関連付けられるデータに対して委任メッセージを受信する実行可能コードと、未だに記憶されていない第１のシーケンス番号とは異なる第２のシーケンス番号に関連付けられるデータに応答して、記憶されるべき第２のシーケンス番号に関連付けられるデータを待機する実行可能コードと、第１のシーケンス番号に関連付けられるデータの記憶を開始する実行可能コードとを含む。コンピュータ・ソフトウェアは、更に、委任メッセージを承認する実行可能コードを含む。コンピュータ・ソフトウェアは、更に、第１のシーケンス番号に関連付けられるデータを受信することに関連して、変更されたスロットのリストを構成する実行可能なコードを含む。第１のシーケンス番号に関連付けられるデータの記憶を開始する実行可能コードは、変更されたスロットのリストを走査する実行可能コードを含む。
【００２７】
更に、本発明によると、ローカル記憶装置からのデータの部分を受信するリモート記憶装置に記憶される所望のデータを読み出すためにローカル記憶装置を用いることは、所望のデータが完全にローカル記憶装置のキャッシュに存在する場合には、ローカル記憶装置がそのキャッシュからデータを戻すこと、所望のデータが完全にローカル記憶装置のキャッシュに存在しない場合には、リモート記憶装置からローカル記憶装置にデータを読み出して、ローカル記憶装置がリモート記憶装置からのデータをローカル記憶装置からのデータとローカル記憶装置で統合することを含む。ローカル記憶装置からのデータの部分を受信するリモート記憶装置に記憶される所望のデータを読み出すためにローカル記憶装置を用いることは、更に、リモート記憶装置からローカル記憶装置にデータを読み出す前に、読み出されるべきローカル記憶装置からのデータが存在する場合には、ローカル記憶装置で一時的な記憶部を作成することを含む。その一時的な記憶部は、スクラッチ・スロットであってもよい。ローカル記憶装置からのデータの部分を受信するリモート記憶装置に記憶される所望のデータを読み出すためにローカル記憶装置を用いることは、更に、一時的な記憶部を作成する前に、読み出されるべきローカル記憶装置からのデータに対応するローカル記憶装置のスロットをロックすることを含む。ローカル記憶装置からのデータの部分を受信するリモート記憶装置に記憶される所望のデータを読み出すためにローカル記憶装置を用いることは、更に、データを統合した後、読み出されるべきローカル記憶装置からのデータに対応するローカル記憶装置のスロットをアンロックすることを含む。ローカル記憶部からのデータは、リモート記憶部からのデータ上で統合されてもよい。ローカル記憶装置からのデータの部分を受信するリモート記憶装置に記憶される所望のデータを読み出すためにローカル記憶装置を用いることは、更に、読み出されるべきデータがリモート記憶装置のキャッシュ・スロットに記憶されていることに応答して、リモート記憶装置が一時的な記憶部を割り当てることを含む。ローカル記憶装置からのデータの部分を受信するリモート記憶装置に記憶される所望のデータを読み出すためにローカル記憶装置を使用することは、更に、リモート記憶部のディスクから一時的な記憶部にデータを読み出すこと、キャッシュ・スロットに記憶されている読み出されるべきデータを一時的な記憶部におけるディスクからのデータと統合することを含む。ローカル記憶装置からのデータの部分を受信するリモート記憶装置に記憶される所望のデータを読み出すためにローカル記憶装置を使用することは、更に、リモート記憶装置のキャッシュ・スロットに読み出されるべきデータが記憶されているか否かをリモート記憶部が判断する前に、リモート記憶装置がリモート記憶装置の少なくとも一つのキャッシュ・スロットからのデータの少なくとも一部をリモート記憶装置のディスクに書き込みことを含む。
【００２８】
更に、本発明によると、ローカル記憶装置からのデータの部分を受信するリモート記憶装置に記憶される所望のデータを読み出すコンピュータ・ソフトウェアは、所望のデータが完全にローカル記憶装置のキャッシュに存在する場合には、キャッシュからデータを戻す実行可能コードと、所望のデータが完全にローカル記憶装置のキャッシュに存在しない場合には、リモート記憶装置からローカル記憶装置にデータを読み出して、リモート記憶装置からのデータをローカル記憶装置からのデータとローカル記憶装置で統合する実行可能コードとを含む。ソフトウェアは、更に、リモート記憶装置からローカル記憶装置にデータを読み出す前に、読み出されるべきローカル記憶装置からのデータが存在する場合には、ローカル記憶装置で一時的な記憶部を作成する実行可能コードを含む。その一時的な記憶部はスクラッチ・スロットであってもよい。ソフトウェアは、更に、一時的な記憶部を作成する前に、読み出されるべきローカル記憶装置からのデータに対応するローカル記憶装置のスロットをロックする実行可能コードを含む。ソフトウェアは、更に、データを統合した後に読み出されるべきローカル記憶装置からのデータに対応するローカル記憶装置のスロットをアンロックする実行可能コードを含む。ローカル記憶部からのデータは、リモート記憶部からのデータ上で統合されてもよい。ソフトウェアは、更に、読み出されるべきデータがリモート記憶装置のキャッシュ・スロットに記憶されていることに応答して、リモート記憶装置に一時的な記憶部を割り当てる実行可能コードを含む。ソフトウェアは、リモート記憶部のディスクから一時的な記憶部にデータを読み出す実行可能コードと、キャッシュ・スロットに記憶されている読み出されるべきデータを一時的な記憶部におけるディスクからのデータと統合する実行可能コードとを含む。ソフトウェアは、更に、リモート記憶装置のキャッシュ・スロットに読み出されるべきデータが記憶されているか否かをリモート記憶部が判断する前に、リモート記憶装置の少なくとも一つのキャッシュ・スロットからのデータの少なくとも一部をリモート記憶装置のディスクに書き込む実行可能コードを含む。
【発明を実施するための最良の形態】
【００２９】
図１を参照すると、ダイアグラム２０は、ホスト２２と、ローカル記憶装置２４と、リモート記憶装置２６との関係を示す。ホスト２２は、ホスト２２とローカル記憶装置２４との間のインターフェースを促進するホスト・アダプタ（ＨＡ：host adapter）２８を介してローカル記憶装置２４からデータを読み出す、あるいは、そこに書き込む。ダイアグラム２０には、一つのホスト２２と一つのＨＡ２８のみが示されているが、多数のＨＡが使用されてもよいし、一つ以上のＨＡに一つ以上のホストが接続されてもよいことは当業者には理解されるであろう。
【００３０】
ローカル記憶装置２４からのデータは、ＲＤＦリンク２９を介してリモート記憶装置２６にコピーされ、リモート記憶装置２６上のデータがローカル記憶装置２４上のデータと同一になる。一つのリンク２９のみが示されているが、記憶装置２４と記憶装置２６の間で追加的なリンクを設け、記憶装置２４および記憶装置２６の一方または両方と、他の記憶装置（図示せず）との間にリンクを設けることも可能である。ローカル記憶装置２４からリモート記憶装置２６へのデータの転送の間には時間遅延があるため、リモート記憶装置２６は、ある瞬間にローカル記憶装置２４上のデータと同一ではないデータを含み得ることに注意する。ＲＤＦを用いる通信は、本願に参照として組み込まれる例えば、米国特許第５，７４２，７９２号明細書に開示されている。
【００３１】
ローカル記憶装置２４は、第１の複数のＲＤＦアダプタ・ユニット（ＲＡ：RDF adapter unit）３０ａ，３０ｂ，３０ｃを含み、リモート記憶装置２６は第２の複数のＲＡ３２ａ−３２ｃを含む。ＲＡ３０ａ−３０ｃ，３２ａ−３０ｃは、ＲＤＦリンク２９に接続され、ホスト・アダプタ２８と同様に記憶装置２４と記憶装置２６との間でデータを転送するために使用される。ＲＡ３０ａ−３０ｃ，３２ａ−３０ｃに関連して使用されるソフトウェアは以下に詳細に説明される。
【００３２】
記憶装置２４，２６は、一つ以上のディスクを含み、それらのディスクのそれぞれは、記憶装置２４，２６にそれぞれ記憶されるデータの異なる部分を含み得る。図１は、記憶装置２４が複数のディスク３３ａ，３３ｂ，３３ｃを含み、記憶装置２６が複数のディスク３４ａ，３４ｂ，３４ｃを含むことを示している。本明細書で記載されるＲＤＦ機能は、ＲＤＦを用いてローカル記憶装置２４のディスク３３ａ−３３ｃの少なくとも一部に対するデータがリモート記憶装置２６のディスク３４ａ−３４ｃの少なくとも一部にコピーされるように適用される。記憶装置２４，２６の他のデータが記憶装置２４と記憶装置２６との間でコピーされず、従って、同一ではない場合もある。
【００３３】
各ディスク３３ａ−３３ｃは、対応する一つのディスク３３ａ−３３ｃにデータを供給するとともに、対応する一つのディスク３３ａ−３３ｃからデータを受信するディスク・アダプタ・ユニット（ＤＡ：disk adapter unit ）３５ａ，３５ｂ，３５ｃに接続される。同様にして、リモート記憶装置２６の複数のＤＡ３６ａ，３６ｂ，３６ｃは、対応する一つのディスク３４ａ−３４ｃにデータを供給するとともに、対応する一つのディスク３４ａ−３４ｃからデータを受信するために使用される。内部データ経路は、ローカル記憶装置２４のＤＡ３５ａ−３５ｃと、ＨＡ２８と、ＲＡ３０ａ−３０ｃとの間で存在する。同様にして、内部データ経路は、リモート記憶装置２６のＤＡ３６ａ−３６ｃと、ＲＡ３２ａ−３２ｃとの間で存在する。他の実施形態では、一つ以上のディスクが一つのＤＡからサービスを受けることが可能であり、一つ以上のＤＡが一つのディスクにサービスすることが可能であることに注意する。
【００３４】
ローカル記憶装置２４は、ＤＡ３５ａ−３５ｃと、ＨＡ２８と、ＲＡ３０ａ−３０ｃとの間のデータ転送を促進するために使用されるグローバル・メモリ３７も含む。メモリ３７は、一つ以上のＤＡ３５ａ−３５ｃと、ＨＡ２８と、ＲＡ３０ａ−３０ｃとによって実施されるべきタスク、および一つ以上のディスク３３ａ−３３ｃからフェッチされるデータ用のキャッシュを含む。同様にして、リモート記憶装置２６は、一つ以上のＤＡ３６ａ−３６ｃと、ＲＡ３２ａ−３２ｃとによって実施されるべきタスク、および、一つ以上のディスク３４ａ−３４ｃからフェッチされるデータ用のキャッシュを含むグローバル・メモリ３８を含む。メモリ３７，３８の使用については、以下により詳細に説明される。
【００３５】
ディスク３３ａ−３３ｃに対応するローカル記憶装置２４における記憶空間は、複数のボリュームまたは論理装置に細分化される。論理装置は、ディスク３３ａ−３３ｃの物理的な記憶空間に対応していても、対応しなくてもよい。従って、例えば、ディスク３３ａが複数の論理装置を含む、あるいは、単一の論理装置がディスク３３ａ，３３ｂの双方にまたがっていてもよい。同様にして、ディスク３４ａ−３４ｃを備えるリモート記憶装置２６に対する記憶空間が複数のボリュームまたは論理装置に細分化されており、各論理装置は一つ以上のディスク３４ａ−３４ｃに対応していても、対応しなくてもよい
ローカル記憶装置２４の一部とリモート記憶装置２６の一部との間でＲＤＦマッピングを提供することは、ローカル記憶装置２４の論理装置に対するリモート・ミラーである、リモート記憶装置２６の論理装置を設定することを含む。ホスト２２は、ローカル記憶装置２４の論理装置からデータを読み出し、且つ、そこに書き込み、ＲＤＦマッピングにより変更されたデータがローカル記憶装置２４からリモート記憶装置２６にＲＡ３０ａ−３０ｃ，３２ａ−３２ｃ、およびＲＤＦリンク２９を用いて転送される。安定状態の動作では、リモート記憶装置２６の論理装置はローカル記憶装置の論理装置のデータと同一のデータを含み、ホスト２２によってアクセスされるローカル記憶装置２４の論理装置は、「Ｒ１ボリューム」（または単に「Ｒ１」）と称され、Ｒ１ボリュームのデータのコピーを含むリモート記憶装置２６の論理装置は「Ｒ２ボリューム」（または単に「Ｒ２」）と称される。ホストは、データをＲ１から読み出し、且つ、そこに書き込み、ＲＤＦはＲ１ボリュームからＲ２ボリュームへのデータの自動コピーおよび更新を取り扱う。
【００３６】
図２を参照すると、ホスト２２からローカル記憶装置２４およびリモート記憶装置２６に至るデータの経路が示されている。ホスト２２からローカル記憶装置２４に書き込まれるデータは、ローカル記憶装置２４のデータ素子５１によって示されるように、局所的に記憶される。ホスト２２によってローカル記憶装置２４に書き込まれるデータは、リンク２９を介してローカル記憶装置２４からリモート記憶装置２６に送られることに関連してローカル記憶装置２４によっても保持される。
【００３７】
本明細書に記載のシステムでは、ホスト２２（例えば、レコード、複数のレコード、トラック等）による各データ書き込みにはシーケンス番号が割り当てられる。シーケンス番号は、書き込みに関連付けられる適当なデータ・フィールドで提供されてもよい。図２において、ホスト２２による書き込みは、シーケンス番号Ｎが割り当てられて示されている。シーケンス番号Ｎが割り当てられたホスト２２によって実施される全ての書き込みは、データの単一の部分５２の形態で収集される。部分５２は、ほぼ同時に生ずるホスト２２による複数の別個の書き込みを表す。
【００３８】
一般的に、ローカル記憶装置２４は、一つのシーケンス番号の部分を累積する一方で、前に累積された部分（前のシーケンス番号を有する）をリモート記憶装置２６に送信する。従って、ローカル記憶装置２４が、シーケンス番号Ｎが割り当てられたホスト２２からの書き込みを累積する間に、前のシーケンス番号（Ｎ−１）に対して生じた書き込みは、ローカル記憶装置２４からリンク２９を介してリモート記憶装置２６に送信される。部分５４は、リモート記憶装置２６にまだ送信されていないシーケンス番号Ｎ−１が割り当てられたホスト２２からの書き込みを表す。
【００３９】
リモート記憶装置２６は、シーケンス番号Ｎ−１が割り当てられた書き込みに対応する部分５４からデータを受信して、シーケンス番号Ｎ−１を有するホスト書き込みの新たな部分５６を構成する。データは、リンク２９上で送信されたデータを承認する適当なＲＤＦプロトコルを用いて送信されてもよい。リモート記憶装置２６が部分５４から全てのデータを受信すると、ローカル記憶装置２４は、リモート記憶装置２６に委任メッセージを送信して、部分５６に対応するＮ−１のシーケンス番号が割り当てられた全てのデータを委任する。一般的に、一旦、特定のシーケンス番号に対応する部分が委任されると、該部分は、論理記憶装置に記憶される。これは、図２において示され、部分５８がシーケンス番号Ｎ−２（即ち、ホスト２２によるローカル記憶装置２６への書き込みに関連して使用されている現在のシーケンス番号の二つ前）が割り当てられた書き込みに対応する。図２において、部分５８は、リモート記憶装置２６用のディスク記憶部を表すデータ素子６２に書き込まれるものとして示される。従って、前のシーケンス番号（Ｎ−２）に対応する部分５８がデータ素子６２によって示されるリモート記憶装置２６のディスク記憶部に書き込まれる間、リモート記憶装置２６がシーケンス番号Ｎ−１に対応する部分５６を受信し累積する。一部の実施形態では、部分５８に対するデータは、書き込み用にマーキングされ（必ずしも直ちに書き込まれる訳ではない）、部分５６に対するデータはマーキングされない。
【００４０】
動作の間、ホスト２２は、データ素子５１に局所的に記憶されるとともに、部分５２に累積されるデータをローカル記憶装置２４に書き込む。一旦、特定のシーケンス番号に対する全てのデータが累積されると（本明細書の他の所で説明される）、ローカル記憶装置２４はシーケンス番号をインクリメントする。現在のシーケンス番号よりも一つ少ないものに対応する部分５４からのデータは、リンク２９を介してローカル記憶装置２４からリモート記憶装置２６に転送される。部分５８は、リモート記憶装置２６にメッセージを送信するローカル記憶装置２４から委任されたシーケンス番号に対するデータに対応する。部分５８からのデータは、リモート記憶装置２６のディスク記憶部に書き込まれる。
【００４１】
特定の一つの部分５２，５４，５６，５８内の書き込みが必ずしも順序付けされていなくてもよいことに注意する。しかしながら、本明細書の他の所でより詳細に説明されているように、シーケンス番号Ｎ−２に対応する部分５８に対する全ての書き込みは、シーケンス番号Ｎ−１に対応する部分５４，５６に対するいずれかの書き込みが開始される前に開始される。更に、シーケンス番号Ｎ−１に対応する部分５４，５６に対する全ての書き込みは、シーケンス番号Ｎに対応する部分５２に対するいずれかの書き込みが開始される前に開始される。従って、ローカル記憶装置２４とリモート記憶装置２６との間での通信障害の際、リモート記憶装置２６は、データの最後に委任された部分（図２の例では部分５８）の書き込みを単に終えることで、データ素子６２がある時間点より前に開始された全ての書き込みを含み、該時間点より後に開始された書き込みを含まないことに関して、リモート記憶装置２６でのデータの状態の順序付けが確実となる。従って、Ｒ２は、Ｒ１の時間点のコピーを常に含み、Ｒ２装置から一貫した画像を再確立することが可能である。
【００４２】
図３を参照すると、ダイアグラム７０は、部分５２，５４を構成し保持するために使用されるアイテムを示す。標準的な論理装置７２は、ホスト２２によって書き込まれるデータを含み、図２のデータ素子５１および図１のディスク３３ａ−３３ｃに対応する。標準的な論理装置７２は、ホスト２２によってローカル記憶装置２４に書き込まれたデータを含む。
【００４３】
二つのポインタのリンク付けされたリスト７４，７６が標準的な論理装置７２に関連して使用される。リンク付けされたリスト７４，７６は、例えば、ローカル記憶装置２４のメモリ３７に記憶され得るデータに対応する。リンク付けされたリスト７４は、ローカル記憶装置２４に関連して使用されるキャッシュ８８のスロットをそれぞれ指定する複数のポインタ８１−８５を含む。同様にして、リンク付けされたリスト７６は、キャッシュ８８のスロットをそれぞれ指定する複数のポインタ９１−９５を含む。一部の実施形態では、キャッシュ８８は、ローカル記憶装置２４のメモリ３７に設けられる。キャッシュ８８は、標準的な論理装置７２への書き込みに関連して使用され、同時に、リンク付けされたリスト７４，７６に関連して使用される複数のキャッシュ・スロット１０２−１０４を含む。
【００４４】
リンク付けされたリスト７４，７６のそれぞれは、データの部分５２，５４のうちの一つのために使用されてもよい。例えば、リンク付けされたリスト７４はシーケンス番号Ｎに対するデータの部分５２に対応し、リンク付けされたリスト７６はシーケンス番号Ｎ−１に対するデータの部分５４に対応してもよい。データがホスト２２によりローカル記憶装置２４に書き込まれると、データはキャッシュ８８に供給され、場合によっては（本明細書の他の所で説明される）、リンク付けされたリスト７４の適当なポインタが形成される。本明細書の他の所で説明されるように、データが標準的な論理装置７２にデステージされ、且つ、そのデータがリンク付けされたリスト７４のポインタ８１−８５のうちの一つによってもはや指定されなくなるまで、データはキャッシュ８８から除去されないことに注意する。
【００４５】
本明細書の実施形態において、リンク付けされたリスト７４，７６の一方は「活性的」と判断され、他方は「不活性」と判断される。例えば、シーケンス番号が偶数である場合、リンク付けされたリスト７４は活性的であり、リンク付けされたリスト７６は不活性である。リンク付けされたリスト７４，７６のうちの活性的なリストは、ホスト２２からの書き込みを取り扱い、リンク付けされたリスト７４，７６のうちの不活性なリストはローカル記憶装置２４からリモート記憶装置２６に送信されるデータに対応する。
【００４６】
ホスト２２によって書き込まれるデータがリンク付けされたリスト７４，７６のうちの活性的なリスト（シーケンス番号Ｎに対応する）を用いて累積され、リンク付けされたリスト７４，７６のうちの不活性のリスト（前のシーケンス番号Ｎ−１に対応する）に対応するデータはローカル記憶装置２４からリモート記憶装置２６に送信される。ＲＡ３０ａ−３０ｃは、リンク付けされたリスト７４，７６を用いて、ローカル記憶装置２４からリモート記憶装置２６に送信するデータを決定する。
【００４７】
一旦、リンク付けされたリスト７４，７６のうちの一つにおける特定の一つのポインタに対応するデータがリモート記憶装置２６に送信されると、この特定の一つのポインタは、適当な一方のリンク付けされたリスト７４，７６から除去されてもよい。更に、データは、スロット中のデータが別の目的（例えば、標準的な論理装置７２へのデステージ）のために必要でないことを前提として、キャッシュ８８から除去されるようマーキングされてもよい（即ち、スロットは後の関係のない使用のためにスロットのプールに戻される）。全ての装置がもはやデータを使用しなくなるまでデータがキャッシュ８８から除去されないことを確実にするために特定の機構が使用されてもよい。このような機構は、例えば、１９９６年７月１６日に発行された米国特許第５，５３７，５６８号明細書、および２００１年７月７日に出願された米国特許出願第０９／８５０，５５１号明細書に記載されており、それぞれ本明細書に参照として組み込まれる。
【００４８】
図４を参照すると、スロット１２０、例えば、キャッシュ８８のスロット１０２−１０４のうちの一つは、ヘッダ１２２とデータ１２４とを含む。ヘッダ１２２は、スロット１２０を管理するためにシステムによって使用されるオーバーヘッド情報に対応する。データ１２４は、スロット１２０に（一時的に）記憶されるディスクからの対応するデータである。ヘッダ１２２における情報は、ディスクに戻すポインタ、タイム・スタンプ等を含む。
【００４９】
ヘッダ１２２は、更に、本明細書に記載のシステムに関連して使用されるキャッシュ・スタンプ１２６を含む。本明細書の実施形態において、キャッシュ・スタンプ１２６は、８バイトである。そのうちの２バイトは、スロット１２０が本明細書に記載のシステムによって使用されているか否かを示す「パスワード」である。他の実施形態において、パスワードが１バイトで後続するバイトがパッドのために使用されてもよい。本明細書の他の所で説明されるように、特定の値に等しい２バイトのパスワード（場合によっては１バイト）は、スロット１２０がリンク付けされたリスト７４，７６のうちの少なくとも一つのエントリーによって指定されていることを示す。特定の値に等しくないパスワードは、スロットがリンク付けされたリスト７４，７６のエントリーによって指定されていないことを示す。パスワードの使用は本明細書の他の所で説明される。
【００５０】
キャッシュ・スタンプ１２６は、スロット１２０のデータ１２４のシーケンス番号（例えば、Ｎ，Ｎ−１，Ｎ−２等）を示す２バイトのフィールドを含む。本明細書の他の所で説明されるように、キャッシュ・スタンプ１２６のシーケンス番号のフィールドは、本明細書に記載の処理を促進するために使用されてもよい。キャッシュ・スタンプ１２６の残りの４バイトは、本明細書の他の所で説明されるようにポインタのために使用されてもよい。当然のことながら、シーケンス番号の２バイトと、ポインタの４バイトは、スロット１２０が一方のリスト７４，７６における少なくとも一つのエントリーによって指定されていることを示す特定の値にパスワードが等しいときにのみ有効である。
【００５１】
図５を参照すると、書き込み動作を実施するホスト２２に関連してＨＡ２８によって実施されるステップを示すフロー・チャート１４０が示されている。当然のことながら、ホスト２２が書き込みを実施するとき、データがＲ１／Ｒ２  ＲＤＦグループの一部であるか否かに関わらず、通常の方法で書き込みを取り扱うよう処理が行われる。例えば、ホスト２２がディスクの一部分にデータを書き込むとき、書き込みはキャッシュ・スロットに対して行われ、最終的にディスクにデステージされる。キャッシュ・スロットは、新たなキャッシュ・スロットでもよいし、あるいは、同じトラックに対する前の読み取りおよび／または書き込み動作に関連して作成された既存のキャッシュ・スロットでもよい。
【００５２】
処理は、第１のステップ１４２から開始され、書き込みに対応するスロットがロックされる。本明細書の実施形態では、キャッシュ８８の各スロット１０２−１０４は、標準的な論理装置７２上のデータのトラックに対応する。ステップ１４２においてスロットをロックすることで、フロー・チャート１４０のステップに対応するＨＡ２８によって実施される処理中に当該スロットに対して更なる処理が動作されることが防止される。
【００５３】
ステップ１４２に後続するステップ１４４では、シーケンス番号に対する値がＮに設定される。本明細書の他の所で説明されるように、ステップ１４４において得られるシーケンス番号に対する値は、スロットがロックされている間にＨＡ２８によって実施される書き込み動作全体にわたって保持される。本明細書の他の所で説明されるように、シーケンス番号は、書き込みが属するデータの部分５２，５４のうちの一つを設定するために各書き込みに割り当てられる。ホスト２２によって実施される書き込みには、現在のシーケンス番号が割り当てられる。単一の書き込み動作が全体にわたって同一のシーケンス番号を保持することが有用である。
【００５４】
ステップ１４４に後続する検査ステップ１４６では、キャッシュ・スロットのパスワード・フィールドが有効であるか否かが判断される。上述したように、本明細書に記載のシステムは、キャッシュ・スロットが、ポインタのリンク付けされたリスト７４，７６のうちの一つに既に存在することを示すためにパスワード・フィールドを所定の値に設定する。ステップ１４６においてパスワード・フィールドが有効ではないと判断された場合（スロットが新たに、リスト７４，７６からのどのポインタもスロットを指定しない）、ステップ１４６からステップ１４８に制御が渡り、パスワードを所定の値に設定し、シーケンス番号フィールドをＮに設定し、更に、ポインタ・フィールドをヌルに設定することで新たなスロットのキャッシュ・スタンプが設定される。他の実施形態では、ポインタ・フィールドは、スロット自体を指定するよう設定される。
【００５５】
ステップ１４８に後続するステップ１５２では、新たなスロットへのポインタがポインタのリスト７４，７６のうちの活性的なリストに追加される。本明細書の実施形態において、リスト７４，７６は、円形の二重にリンク付けられたリストであり、新たなポインタは従来の方法で円形の二重にリンク付けされたリストに追加される。当然のことながら、他の適当なデータ構造がリスト７４，７６を管理するために使用されてもよい。ステップ１５２に後続するステップ１５４では、フラグが設定される。ステップ１５４において、ＲＤＦ＿ＷＰフラグ（ＲＤＦ書き込み保留（RDF write pending ）フラグ）が、スロットがＲＤＦを用いてリモート記憶装置２６に送信される必要があることを示すために設定される。更に、ステップ１５４では、ＩＮ＿ＣＡＣＨＥフラグが、スロットが標準的な論理装置７２にデステージされる必要があることを示すために設定される。ステップ１５４に後続するステップ１５６では、ホスト２２およびＨＡ２８によって書き込まれるデータがスロットに書き込まれる。ステップ１５６に後続するステップ１５８では、スロットがアンロックされる。ステップ１５８に後続して、処理が完了される。
【００５６】
スロットのパスワード・フィールドが有効であると検査ステップ１４６において判断された場合（スロットがリスト７４，７６のうちの少なくとも一つのポインタによって既に指定されていることを示す）、ステップ１４６から検査ステップ１６２に制御が渡り、スロットのシーケンス番号のフィールドが現在のシーケンス番号Ｎに等しいか否かが判断される。有効なパスワードを有するスロットのシーケンス番号のフィールドに対して二つの有効な可能性が存在することに注意する。一つは、シーケンス番号のフィールドが現在のシーケンス番号であるＮに等しい可能性である。これは、シーケンス番号Ｎを有する前の書き込みにスロットが対応するときに生ずる。もう一方の可能性は、シーケンス番号のフィールドがＮ−１に等しくなることである。これは、シーケンス番号Ｎ−１を有する前の書き込みにスロットが対応するときに生ずる。シーケンス番号のフィールドに対する全ての他の値は無効である。従って、一部の実施形態では、ステップ１６２においてエラー／有効性チェックを含むことも可能であり、あるいは、エラー／有効性チェックを別のステップとして設けてもよい。このようなエラーは、メッセージをユーザに供給することを含む全ての適当な方法で取り扱われる。
【００５７】
スロットのシーケンス番号のフィールドにおける値が現在のシーケンス番号Ｎに等しいとステップ１６２において判断された場合、特別な処理は必要なく、ステップ１６２からステップ１５６に制御が渡り、上述のように、データがスロットに書き込まれる。シーケンス番号のフィールドの値がＮ−１（唯一の他の有効値）である場合、ステップ１６２からステップ１６４に制御が渡り、新たなスロットが得られる。ステップ１６４において得られる新たなスロットは、書き込まれるデータを記憶するために使用される。
【００５８】
ステップ１６４に後続するステップ１６６では、古いスロットからのデータがステップ１６４で得られた新たなスロットにコピーされる。コピーされたデータは、スロットが最初に作成されたときに前の書き込みに対してステップ１５４で設定されているべきであるＲＤＦ＿ＷＰフラグを含む。ステップ１６６に後続するステップ１６８では、パスワード・フィールドを適当な値に設定し、シーケンス番号のフィールドを現在のシーケンス番号Ｎに設定し、ポインタ・フィールドが古いスロットを指定するように設定することで、新たなスロットに対するキャッシュ・スタンプが設定される。ステップ１６８に後続するステップ１７２では、新たなスロットへのポインタがリンク付けされたリスト７４，７６のうちの活性的なリストに追加される。この場合、新たなスロットであるスロットにデータが書き込まれる上述のステップ１５６がステップ１７２に後続される。
【００５９】
図６を参照すると、フロー・チャート２００は、ローカル記憶装置２４からリモート記憶装置２６にＲＤＦデータを送信するためにリスト７２，７４のうちの不活性なリストをスキャンするＲＡ３０ａ−３０ｃに関連して実施されるステップを示す。上述したように、リスト７２，７４のうちの不活性なリストは、リスト７２，７４のうちの活性的なリストを用いてホストからＮサイクルがＲ１装置に書き込まれているときに、Ｒ１装置に対するＮ−１サイクルに対応するスロットを指定する。
【００６０】
処理は、第１のステップ２０２から開始され、リスト７２，７４のうちの不活性なリストにエントリーが存在するか否かが判断される。データが送信されると、対応するエントリーは、リスト７２，７４のうちの不活性なリストから除去される。加えて、新たな書き込みは、一般的に、リスト７２，７４のうちの不活性なリストにではなく、リスト７２，７４のうちの活性的なリストに供給される。従って、リスト７２，７４のうちの不活性なリストは、時間によってはデータを含まないことがある（本明細書の他の所で説明されるように、それが望ましい）。ステップ２０２において、送信されるべきデータが存在しないと判断されると、リスト７２，７４のうちの不活性なリストは、データが利用可能となるまで連続的にポーリングされる。送信するデータは、リスト７２，７４のうちの不活性なリストがリスト７２，７４のうちの活性的なリストになるか、あるいは、その逆になるサイクル切換（本明細書の他の所で説明される）に関連して利用可能となる。
【００６１】
ステップ２０２において、送信するのに利用可能なデータが存在すると判断されると、ステップ２０２からステップ２０４に制御が渡り、スロットが正しいことが確認される。ステップ２０４において実施される処理は、パスワード・フィールドが正しいことを確認すること、および、シーケンス番号のフィールドが正しいことを確認することを含む任意の「正常検査（sanity check）」である。スロットに正しくない（予想しない）データが存在する場合、エラーをユーザに通知し、可能性として、エラー回復処理を行うことを含むエラー処理が実施される。
【００６２】
ステップ２０４に後続するステップ２１２では、データが従来の方法でＲＤＦを介して送信される。本明細書の実施形態では、スロット全体は送信されない。その代わりに、適当なミラー・ビットの組（レコードが変更されたことを示す）を有するスロット内のレコードだけがリモート記憶装置２６に送信される。しかしながら、他の実施形態では、リモート記憶装置２６が適当なミラー・ビットの組を有するレコードに対応するデータだけを書き込み、有効か否かが分からないトラックに対する他のデータを無視することを前提として、スロット全体が送信されることも可能である。ステップ２１２に後続する検査ステップ２１４では、送信されたデータがＲ２装置によって承認されたか否かが判断される。承認されない場合、ステップ２１４からステップ２１２に戻るフローで示されるようにデータが再送信される。他の実施形態では、データを送信して、その受信に応答するために別のより複雑な処理が使用されてもよい。このような処理は、データを送信する試みが数回失敗した後に実施されるエラー報告および代替の処理を含む。
【００６３】
一旦、ステップ２１４においてデータの送信が成功であったと判断されると、ステップ２１４からステップ２１６に制御が渡り、ＲＤＦ＿ＷＰフラグ（データの送信がＲＤＦを介して成功であったため）が消去される。ステップ２１６に後続するステップ２１８では、スロットが、リスト７２，７４のうちの不活性なリストに既存のエントリーを既に有するスロットへの書き込みに関連して作成された複製スロットであるか否かが判断される。この可能性は、ステップ１６２，１６４，１６６，１６８，１７２に関連して上述されている。ステップ２１８においてスロットが複製スロットであると判断されると、ステップ２１８からステップ２２２に制御が渡り、スロットが利用可能なスロットのプールに（再使用のために）戻される。更に、スロットで提供されるデータが全ての他の目的のためには有効ではないため、他のスロットより前に直ちに再使用されるよう、スロットは古くされる（または、何らかの他の適当な機構が適用される）。ステップ２２２またはスロットが複製スロットではない場合にはステップ２１８に後続するステップ２２４では、スロット・ヘッダのパスワード・フィールドが消去される、スロットが再使用されるときに、図５のステップ１４６における検査がスロットを新たなスロットとして正しく分類する。
【００６４】
ステップ２２４に後続するステップ２２６では、リスト７２，７４のうちで不活性なリストにおけるエントリーが除去される。ステップ２２６に後続して、制御がステップ２０２に戻り、上述したように、転送される必要があるデータに対応する追加的なエントリーがリスト７２，７４のうちの不活性なリストに存在するか否かが判断される。
【００６５】
図７を参照すると、ダイアグラム２４０は、リモート記憶装置２６によって使用される部分５６，５８の作成および操作を示す。リンク２９を介してリモート記憶装置２６によって受信されたデータは、リモート記憶装置２６のキャッシュ２４２に供給される。キャッシュ２４２は、例えば、リモート記憶装置２６のメモリ３８に設けられる。キャッシュ２４２は、標準的な論理記憶装置２５２のトラックにそれぞれマッピングされ得る複数のキャッシュ・スロット２４４−２４６を含む。キャッシュ２４２は、図３のキャッシュ８８に類似し、リモート記憶装置２６の標準的な論理記憶装置２５２にデステージされ得るデータを含み得る。標準的な論理記憶装置２５２は、図２に示すデータ素子６２および図１に示すディスク３４ａ−３４ｃに対応する。
【００６６】
リモート記憶装置２６は、更に、一対のキャッシュ専用仮想装置（ＣＯＶＤ：cache only virtual device ）２５４，２５６を含む。キャッシュ専用仮想装置２５４，２５６は、例えば、リモート記憶装置２６のメモリ３８に記憶され得る装置テーブルを対応付ける。各キャッシュ専用仮想装置２５４，２５６のテーブルのトラック・エントリーは、標準的な論理装置２５２のトラックを指定するか、キャッシュ２４２のスロットを指定する。キャッシュ専用仮想装置は、２００３年３月２５日に出願された「キャッシュ専用仮想装置（CACHE-ONLY VIRTUAL DEVICES）」なる名称のシリアル番号第１０／３９６，８００号の同時係属中の米国特許出願に記載されている。この出願は、本明細書に参照として組み込まれる。
【００６７】
複数のキャッシュ・スロット２４４−２４６が標準的な論理装置２５２への書き込みに関連して使用されてもよく、同時に、キャッシュ専用仮想装置２５４，２５６に関連して使用されてもよい。本明細書の実施形態では、キャッシュ専用仮想装置２５４，２５６のトラック・テーブル・エントリーのそれぞれは、該トラックに対するデータが標準的な論理装置２５２の対応するトラックに記憶されていることを示すためにヌルを含む。さもなければ、各キャッシュ専用仮想装置２５４，２５６に対するトラック・テーブルにおけるエントリーは、キャッシュ２４２のスロット２４４−２４６のうちの一つに対するポインタを含む。
【００６８】
キャッシュ専用仮想装置２５４，２５６のそれぞれは、データの部分５６，５８の一つに対応する。例えば、キャッシュ専用仮想装置２５４がデータの部分５６に対応し、キャッシュ専用仮想装置２５６がデータの部分５８に対応する。本明細書の実施形態では、キャッシュ専用仮想装置２５４，２５６のうちの一方が「活性的」と判断され、キャッシュ専用仮想装置２５４，２５６の他方が「不活性」と判断される。キャッシュ専用仮想装置２５４，２５６のうちの不活性な仮想装置は、ローカル記憶装置２４から受信されているデータに対応し（即ち、部分５６）、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置は、標準的な論理装置２５２に復元される（書き込まれる）データに対応する。
【００６９】
リンク２９を介して受信されるローカル記憶装置２４からのデータは、キャッシュ２４２のスロット２４４−２４６のうちの一つに配置される。キャッシュ専用仮想装置２５４，２５６のうちの不活性な仮想装置の対応するポインタが受信したデータを指定するよう設定される。同じシーケンス番号を有するその後のデータは同様にして処理される。ある時点で、ローカル記憶装置２４は、同じシーケンス番号を用いて送信された全てのデータを委任するメッセージを供給する。一旦、特定のシーケンス番号に対するデータが委任されると、キャッシュ専用仮想装置２５４，２５６のうちの不活性な仮想装置が活性的となるか、あるいは、その逆となる。その時点で、キャッシュ専用仮想装置２５４，２５６のうちの現在活性的な仮想装置からのデータが標準的な論理装置２５２にコピーされ、キャッシュ専用仮想装置２５４，２５６のうちの不活性な仮想装置はローカル記憶装置２４からリモート記憶装置２６に送信される新たなデータ（新たなシーケンス番号を有する）を受信するために使用される。
【００７０】
データがキャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置から除去されると（本明細書の他の所で説明される）、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置における対応するエントリーがヌルに設定される。更に、データは、スロット中のデータが別の目的（例えば、標準的な論理装置２５２へのデステージ）のために必要でないことを前提として、キャッシュ２４４から除去される（即ち、後の使用のためにフリー・スロットのプールにスロットが戻される）。全てのミラー（キャッシュ専用仮想装置２５４，２５６を含む）がもはやデータを使用しなくなるまでキャッシュ２４２からデータが除去されないことを確実にするために特定の機構が使用されてもよい。このような機構は、例えば、１９９６年７月１６日に発行された米国特許第５，５３７，５６８号明細書、および、２００１年７月７日に出願された米国特許出願第０９／８５０，５５１号明細書に記載されており、それぞれ本明細書に参照として組み込まれる。
【００７１】
本明細書の他の所で説明される一部の実施形態では、リモート記憶装置は、ローカル記憶装置２４によって使用されるリスト７４，７６のようなリンク付けされたリスト２５８，２６２を保持してもよい。リスト２５８，２６２は、変更された、対応するキャッシュ専用仮想装置２５４，２５６のスロットを識別する情報を含んでもよく、リスト２５８，２６２のうちの一方は、キャッシュ専用仮想装置２５４，２５６のうちの一方に対応し、リスト２５８，２６２のうちの他方は、キャッシュ専用仮想装置２５４，２５６のうちの他方に対応する。本明細書の他の所で説明されるように、リスト２５８，２６２はキャッシュ専用仮想装置２５４，２５６から標準的な論理装置２５２へのデータの復元を促進するために使用される。
【００７２】
図８を参照すると、フロー・チャート２７０は、ローカル記憶装置２４によってリモート記憶装置２６に送信され、委任されるシーケンス番号のデータを処理することに関連してリモート記憶装置２６によって実施されるステップを示す。本明細書の他の所で説明されるように、ローカル記憶装置２４はシーケンス番号を定期的にインクリメントする。それにより、ローカル記憶装置２４は、前のシーケンス番号に対する全てのデータの送信を終了し、前のシーケンス番号に対して委任メッセージを送信する。
【００７３】
処理は、第１のステップ２７２から開始され、委任が受信される。ステップ２７２に後続する検査ステップ２７４では、リモート記憶装置２６のキャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置が空か否かが判断される。本明細書の他の所で説明されるように、リモート記憶装置２６のキャッシュ専用仮想装置２５４，２５６のうちの不活性な仮想装置は、ＲＤＦを用いて送信されるローカル記憶装置２４からのデータを累積するために使用され、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置は標準的な論理装置２５２に復元される。
【００７４】
検査ステップ２７４においてキャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置が空ではないと判断された場合、検査ステップ２７４からステップ２７６に制御が渡り、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置に対する復元が更なる処理が実施される前に完了される。キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置からデータを復元することは、本明細書の他の所でより詳細に説明される。キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置が委任を取り扱い、次のシーケンス番号に対してデータを復元し始める前に空であることが有用である。
【００７５】
ステップ２７６に後続して、あるいは、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置が空であると判断された場合にはステップ２７４に後続して、ステップ２７８では、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置が不活性にされる。ステップ２７８に後続するステップ２８２では、キャッシュ専用仮想装置２５４，２５６のうちの前に不活性であった仮想装置（即ち、ステップ２７８の実行前に不活性であった仮想装置）が活性化される。ステップ２７８，２８２においてキャッシュ専用仮想装置２５４，２５６の活性的な仮想装置および不活性の仮想装置を交換することにより、次のシーケンス番号に対してローカル記憶装置２４からデータを受信し始めるようキャッシュ専用仮想装置２５４，２５６のうちの現在不活性（且つ、空）の仮想装置を準備する。
【００７６】
ステップ２８２に後続するステップ２８４では、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置がリモート記憶装置２６の標準的な論理装置２５２に復元される。キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置の標準的な論理装置２５２への復元は、以下により詳細に説明される。しかしながら、一部の実施形態では、ステップ２８４において復元処理が開始されるが、必ずしも完了されないことに注意する。ステップ２８４に後続するステップ２８６では、ローカル記憶装置２４からリモート記憶装置２６に送られる委任が承認されてローカル記憶装置２４に戻され、ローカル記憶装置２４に委任が成功であったことを通知する。ステップ２８６に続いて、処理が完了される。
【００７７】
図９を参照すると、フロー・チャート３００は、リモート記憶装置２６がキャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置を復元する、図８のステップ２７６，２８４をより詳細に説明する。処理は、第１のステップ３０２から開始され、ポインタがキャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置の第１のスロットを指定するよう設定される。ポインタは、それぞれ個別に処理されるキャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置の各トラック・テーブル・エントリーを繰り返すために使用される。ステップ３０２に後続する検査ステップ３０４では、処理されているキャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置のトラックが標準的な論理装置２５２を指定するか否かが判断される。指定する場合は、復元するものがない。指定しない場合は、ステップ３０４からステップ３０６に制御が渡り、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置の対応するスロットがロックされる。
【００７８】
ステップ３０６に後続する検査ステップ３０８では、標準的な論理装置２５２の対応するスロットがリモート記憶装置２６のキャッシュに既に存在するか否かが判断される。存在する場合は、検査ステップ２０８からステップ３１２に制御が渡り、標準的な論理装置のスロットがロックされる。ステップ３１２に後続するステップ３１４では、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置からのデータが標準的な論理装置２５２に対するキャッシュにおけるデータと統合される。ステップ３１４においてデータを統合することは、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置の新たなデータで標準的な論理装置に対するデータを上書きすることを含む。レコード・レベル・フラグを提供する実施形態では、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置からの新たなレコードをキャッシュにおける標準的な論理装置２５２のレコードに対して単にＯＲすることも可能であることに注意する。つまり、レコードが交互配置される場合、変更されたキャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置からのレコードを使用し、そのレコードを標準的な論理装置２５２のキャッシュ・スロットに供給することのみが必要である。ステップ３１４に後続するステップ３１６では、標準的な論理装置２５２のスロットがアンロックされる。ステップ３１６に後続するステップ３１８では、処理されているキャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置のスロットもアンロックされる。
【００７９】
検査ステップ３０８において、標準的な論理装置２５２の対応するスロットがキャッシュに存在しないと判断された場合、検査ステップ３０８からステップ３２２に制御が渡り、標準的な論理装置２５２のスロットがキャッシュにあり（例えば、ＩＮ＿ＣＡＣＨＥフラグが設定されてもよい）デステージされる必要があることを示すために標準的な論理装置２４２のスロットに対するトラック・エントリーが変更される。本明細書の他の所で説明されるように、一部の実施形態では、適当なミラー・ビット・セットを有するトラックのレコードだけがデステージされる必要がある。ステップ３２２に後続するステップ３２４では、トラックに対するデータがキャッシュに存在することを示すためにトラックに対するフラグが設定される。
【００８０】
ステップ３２４に後続するステップ３２６では、標準的な論理装置２５２に対するスロット・ポインタがキャッシュにおけるスロットを指定するよう変更される。ステップ３２６に後続する検査ステップ３２８では、ステップ３２２，３２４，３２６において実施された動作が成功であったか否かが判断される。場合によっては、「比較および交換」動作と呼ばれる単一の動作がステップ３２２，３２４，３２６を実施するために使用されてもよい。これらの動作が何らかの理由により成功しない場合、ステップ３２８からステップ３０８に制御が戻り、標準的な論理装置２５２の対応するトラックがキャッシュに存在するか否かが再び検査される。前の動作が成功であったと検査ステップ３２８において判断された場合、検査ステップ３２８から上述のステップ３１８に制御が渡る。
【００８１】
ステップ３１８に後続する検査ステップ３３２では、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置（復元されている）のキャッシュ・スロットが依然として使用されているか否かが判断される。場合によっては、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置に対するスロットが別のミラーによって依然として使用されている可能性がある。検査ステップ３３２において、キャッシュ専用仮想装置のスロットが別のミラーによって使用されていないと判断されたとき、検査ステップ３３２からステップ３３４に制御が渡り、他の処理によって使用されるようスロットが解放される（例えば、本明細書の他の所で説明されるように、利用可能なスロットのプールに復元される）。ステップ３３４に後続するステップ３３６では、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置の次のスロットを処理するために次のスロットが指定される。ステップ３３２においてキャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置が別のミラーによって使用されていると判断された場合には、検査ステップ３３２からステップ３３６に到達することに注意する。更に、ステップ３０４において、処理されているスロットに関して、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置が標準的な論理装置２５２を指定すると判断された場合には、検査ステップ３０４からステップ３３６に到達することにも注意する。ステップ３３６に後続する検査ステップ３３８では、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置で処理されるべきスロットが更に存在するか否かが判断される。これ以上存在しない場合には、処理が完了される。存在する場合は、検査ステップ３３８からステップ３０４に制御が戻る。
【００８２】
別の実施形態では、図７に示すリスト２５８，２６２のような、リモート記憶装置２６へのＮ−１サイクルに対応する受信データの部分５６に対して変更されたスロットのリストを構成することが可能である。データを受信すると、リモート記憶装置２６は、変更されたスロットのリンク付けされたリストを構成する。構成されるリストは、円形、線形（ヌル終端）、または、全ての他の適当な設計であってもよい。リストは、キャッシュ専用仮想装置２５４，２５６のうちの活性的な仮想装置を復元するために使用される。
【００８３】
図９のフロー・チャート３００は、変更されたスロットのリストが使用される実施形態の動作を示す二つの代替的な経路３４２，３４４を示す。ステップ３０２において、ポインタ（変更されたスロットのリスト中を繰り返すために使用される）は、リストの第１のエレメントを指定するようにされる。代替の経路３４２によってステップ３０２からステップ３０６に到達される。変更されたスロットのリストを使用する実施形態において、リストのどのスロットも標準的な論理装置２５２を指定しないためステップ３０４が不要となる。
【００８４】
ステップ３０６に続いて、前の実施形態において上述したように処理が続けられるが、ステップ３３６は、ＣＯＶＤにおける次のスロットを指定する代わりに、変更されたスロットのリストを横断することを意味する。同様にして、ステップ３３８における検査は、ポインタがリストの最後に存在するか（または、円形のリンク付けされたリストの場合には始めに戻ったか）が判断される。更に、ステップ３３８において、処理するスロットが依然として存在すると判断された場合には、代替の経路３４４で示されるように、ステップ３３８からステップ３０６に制御が渡る。前述したように、変更されたスロットのリストを使用する実施形態について、ステップ３０４が省略され得る。
【００８５】
図１０を参照すると、フロー・チャート３５０は、シーケンス番号を増加させるローカル記憶装置２４に関連して実施されるステップを示す。処理は、第１のステップ３５２から開始され、ローカル記憶装置２４はシーケンス番号を増加する前に少なくともＭ秒待機する。本明細書の実施形態では、Ｍは３０であるが、当然のことながらＭは任意の数でもよい。Ｍの値が大きいと、記憶装置２４と記憶装置２６との間の通信が中断された場合に損失し得るデータ量が増加する。しかしながら、Ｍの値が小さいと、シーケンス番号をより頻繁にインクリメントすることで生ずるオーバーヘッドの合計量が増加する。
【００８６】
ステップ３５２に後続する検査ステップ３５４では、ローカル記憶装置２４の全てのＨＡが、前のシーケンス番号に対する全てのＩ／ＯをＨＡが完了したことを示すビットを設定したか否かが判断される。シーケンス番号が変わると、各ＨＡは、変更に気付き、前のシーケンス番号の全てのＩ／Ｏが完了されたことを示すビットを設定する。例えば、シーケンス番号がＮ−１からＮに変わると、ＨＡは、ＨＡがシーケンス番号Ｎ−１に対する全てのＩ／Ｏを完了したときにビットを設定する。場合によっては、ＨＡに対する単一のＩ／Ｏに長い時間がかかり、シーケンス番号が変わった後も進行中の場合もあることに注意する。一部のシステムに対して、全てのＨＡがそれぞれのＮ−１のＩ／Ｏを完了したか否かを判断するために異なる機構が使用されてもよいことに注意する。異なる機構は、メモリ３７中の装置テーブルを検査することを含む。
【００８７】
検査ステップ３５４において、前のシーケンス番号からのＩ／Ｏが完了されたと判断された場合、ステップ３５４からステップ３５６に制御が渡り、リスト７４，７６のうちの不活性のリストが空か否かが判断される。シーケンス番号の切換は、リスト７４，７６のうちの不活性のリストに対応する全てのデータがＲＤＦプロトコルを用いてローカル記憶装置２４からリモート記憶装置２６に完全に送信されるまで行われない。一旦、リスト７４，７６のうちの不活性のリストが空であると判断されると、ステップ３５６からステップ３５８に制御が渡り、前のシーケンス番号に対する委任がローカル記憶装置２４からリモート記憶装置２６に送信される。前述のように、特定のシーケンス番号に対する委任メッセージを受信するリモート記憶装置２６は、リモート記憶装置２６にシーケンス番号に対応するデータを復元し始めさせる。
【００８８】
ステップ３５８に後続するステップ３６２では、リスト７４，７６のうちの不活性のリストに対するデータのコピーが一時停止される。本明細書の他の所で説明されるように、リストのうちの不活性のリストは、走査され、ローカル記憶装置２４からの対応するデータをリモート記憶装置２６に送信する。シーケンス番号の切換が完了されるまでデータのコピーを一時停止することが有用である。本明細書の実施形態では、一時停止は、ＲＡ３０ａ−３０ｃにメッセージを送信することで提供される。しかしながら、本明細書に記載のシステムを用いてデータを送信することを促進するために他の構成要素を用いる実施形態に関して、コピーの一時停止が他の構成要素に適当なメッセージ／コマンドを送信することで提供されることが当業者には理解されるであろう。
【００８９】
ステップ３６２に後続するステップ３６４では、シーケンス番号がインクリメントされる。ステップ３６４に後続するステップ３６６では、シーケンス番号のインクリメントに関連してビットが再び設定されるよう、検査ステップ３５４において使用されたＨＡに対するビットが全て消去される。ステップ３６６に後続する検査ステップ３７２では、リモート記憶装置２６がステップ３５８において送信された委任メッセージを承認したか否かが判断される。一旦、リモート記憶装置２６がステップ３５８において送信された委任メッセージを承認したと判断されると、ステップ３７２からステップ３７４に制御が渡り、ステップ３６２において提供されるコピーの一時停止が消去され、コピーが再開される。ステップ３７４に後続して、処理が終了される。シーケンス番号を連続的にインクリメントするために新たなサイクルを始めるようステップ３７４からステップ３５２に戻ることが可能であることに注意する。
【００９０】
活性的なデータおよび不活性なデータの部分に関連付けられるスロットを収集するためにＲ１装置でＣＯＶＤを使用することも可能である。この場合、Ｒ２装置と同様に、あるＣＯＶＤが不活性のシーケンス番号に関連付けられ、別のＣＯＶＤが活性的なシーケンス番号に関連付けられる。これについては以下に説明される。
【００９１】
図１１を参照すると、ダイアグラム４００は、部分５２，５４を構成し維持するために使用されるアイテムを示す。標準的な論理装置４０２は、ホスト２２によって書き込まれたデータを含み、図２のデータ素子５１および図１のディスク３３ａ−３３ｃに対応する。標準的な論理装置４０２は、ホスト２２によってローカル記憶装置２４に書き込まれたデータを含む。
【００９２】
二つのキャッシュ専用仮想装置４０４，４０６が標準的な論理装置４０２に関連して使用される。キャッシュ専用仮想装置４０４，４０６は、例えば、ローカル記憶装置２４のメモリ３７に記憶される装置テーブルを対応付ける。キャッシュ専用仮想装置４０４，４０６のそれぞれのテーブルの各トラック・エントリーは、標準的な論理装置４０２のトラックを指定するか、あるいはローカル記憶装置２４に関連して使用されるキャッシュ４０８のスロットを指定する。一部の実施形態では、キャッシュ４０８は、ローカル記憶装置２４のメモリ３７に設けられてもよい。
【００９３】
キャッシュ４０８は、標準的な論理装置４０２への書き込みに関連して使用されると同時に、キャッシュ専用仮想装置４０４，４０６に関連して使用される複数のキャッシュ・スロット４１２−４１４を含む。本明細書の実施形態では、キャッシュ専用仮想装置４０４，４０６の各トラック・テーブル・エントリーは、標準的な論理装置４０２の対応するトラックを指定するためにヌルを含む。そのようで場合は、キャッシュ専用仮想装置４０４，４０６のそれぞれに対するトラック・テーブルにおけるエントリーは、キャッシュ４０８におけるスロット４１２−４１４の一つに対するポインタを含む。
【００９４】
キャッシュ専用仮想装置４０４，４０６のそれぞれは、データの部分５２，５４の一方に使用され、例えば、キャッシュ専用仮想装置４０４はシーケンス番号Ｎに対するデータの部分５２に対応し、キャッシュ専用仮想装置４０６はシーケンス番号Ｎ−１に対するデータの部分５４に対応する。従って、ホスト２２によってローカル記憶装置２４にデータが書き込まれるとき、データがキャッシュ４０８に供給され、キャッシュ専用仮想装置４０４の適当なポインタが調節される。本明細書の他の所で説明されるように、データが標準的な論理装置４０２にデステージされ、且つ、そのデータがキャッシュ専用仮想装置４０４によって解放されるまで、データは、キャッシュ４０８から除去されないことに注意する。
【００９５】
本明細書の実施形態では、キャッシュ専用仮想装置４０４，４０６のうちの一方は「活性的」と判断され、他方は「不活性」と判断される。それにより、例えば、シーケンス番号Ｎが偶数であるとき、キャッシュ専用仮想装置４０４は活性的でありキャッシュ専用仮想装置４０６は不活性である。キャッシュ専用仮想装置４０４，４０６のうちの活性的な仮想装置は、ホスト２２からの書き込みを取り扱い、キャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置はローカル記憶装置２４からリモート記憶装置２６に送信されるデータに対応する。
【００９６】
ホスト２２によって書き込まれるデータはキャッシュ専用仮想装置４０４，４０６のうちの活性的な仮想装置（シーケンス番号Ｎに対応する）を用いて累積され、キャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置（前のシーケンス番号Ｎ−１に対応する）に対応するデータはローカル記憶装置２４からリモート記憶装置２６に送信される。当該および関連する実施形態について、ローカル記憶装置のＤＡ３５ａ−３５ｃは、ローカル記憶装置２４からリモート記憶装置２６にデータを送信するために一つ以上のＲＡ３０ａ−３０ｃにコピー要求を送信するようキャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置を走査する。従って、コピーの一時停止および再開に関連して上述したステップ３６２，３７４は、ＤＡ３５ａ−３５ｃにメッセージ／コマンドを供給することを含む。
【００９７】
一旦、リモート記憶装置２６にデータが送信されると、キャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置における対応するエントリーはヌルに設定される。更に、データは、スロット中のデータが別の目的（例えば、標準的な論理装置４０２へのデステージ）のために必要とされない場合は、キャッシュ４０８から除去されてもよい（即ち、後の使用のためにスロットがスロットのプールに戻される）。全てのミラー（キャッシュ専用仮想装置４０４，４０６を含む）がデータをもはや使用しなくなるまでデータがキャッシュから除去されないことを確実にするために特定の機構が使用されてもよい。このような機構は、例えば、１９９６年７月１６日に発行された米国特許第５，５３７，５６８号明細書、および２００１年７月７日に出願された米国特許出願第０９／８５０，５５１号明細書に記載されており、それぞれ本明細書に参照として組み込まれる。
【００９８】
図１２を参照すると、フロー・チャート４４０は、本明細書に記載のシステムを提供するために二台のＣＯＶＤがＲ１装置によって使用される実施形態に関して書き込み動作を実施するホスト２２に関連してＨＡ２８によって実施されるステップを示す。処理は、第１のステップ４４２から開始され、書き込みに対応するスロットがロックされる。本明細書の実施形態では、キャッシュ４０８中のスロット４１２−４１４のそれぞれは、標準的な論理装置４０２上のデータのトラックに対応する。ステップ４４２においてスロットをロックすることで、フロー・チャート４４０のステップに対応するＨＡ２８によって実施される処理中に更なる処理が当該スロットに対して実施されることが防止される。
【００９９】
ステップ４４２に後続するステップ４４４では、シーケンス番号に対する値がＮに設定される。Ｒ１側でＣＯＶＤの代わりにリストを用いる実施形態のように、ステップ４４４で得られたシーケンス番号に対する値は、スロットがロックされている間にＨＡ２８によって実施される書き込み動作全体にわたって保持される。本明細書の他の所で説明されるように、シーケンス番号は、書き込みが属するデータの部分５２，５４のうちの一つを設定するために各書き込みに対して割り当てられる。ホスト２２によって実施される書き込みには、現在のシーケンス番号が割り当てられる。単一の書き込み動作が同一のシーケンス番号を全体にわたって保持することが有用である。
【０１００】
ステップ４４４に後続するステップ４４６では、キャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置がステップ４４２でロックされていたスロット（動作されているスロット）を既に指定するか否かが判断される。これは、シーケンス番号が現在のシーケンス番号よりも一つ少ないときに同一のスロットへの書き込みが提供される場合に生ずる。前のシーケンス番号に対する書き込みに対応するデータは、リモート記憶装置２６に送信されていない場合もある。
【０１０１】
検査ステップ４４６においてキャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置はスロットを指定していないと判断されると、検査ステップ４４６から別の検査ステップ４４８に制御が渡り、キャッシュ専用仮想装置４０４，４０６のうちの活性的な仮想装置がスロットを指定するか否かが判断される。シーケンス番号が現在のシーケンス番号と同一であるとともに、スロットへの前の書き込みがあった場合に、キャッシュ専用仮想装置４０４，４０６のうちの活性的な仮想装置はスロットを指定する。検査ステップ４４８においてキャッシュ専用仮想装置４０４，４０６のうちの活性的な仮想装置がスロットを指定していないと判断されると、検査ステップ４４８からステップ４５２に制御が渡り、新たなスロットがデータに対して得られる。ステップ４５２に後続するステップ４５４では、キャッシュ専用仮想装置４０４，４０６のうちの活性的な仮想装置がスロットを指定するにようにされる。
【０１０２】
ステップ４５４に後続して、あるいは、キャッシュ専用仮想装置４０４，４０６のうちの活性的な仮想装置がスロットを指定する場合にはステップ４４８に後続して、ステップ４５６では、フラグが設定される。ステップ４５６では、スロットがＲＤＦを用いてリモート記憶装置２６に送信される必要があることを示すためにＲＤＦ＿ＷＰフラグ（ＲＤＦ書き込み保留フラグ）が設定される。更に、ステップ４５６において、ＩＮ＿ＣＡＣＨＥフラグが、スロットが標準的な論理装置４０２にデステージされる必要があることを示すために設定される。場合によっては、キャッシュ専用仮想装置４０４，４０６のうちの活性的な仮想装置が既にスロット（ステップ４４８で判断されるように）を指定する場合、ＲＤＦ＿ＷＰフラグおよびＩＮ＿ＣＡＣＨＥフラグがステップ４５６の実行前に既に設定されている可能性がある。しかしながら、ステップ４５６でフラグを設定することで、以前の状態に関わらずフラグが正しく設定されることが確実になる。
【０１０３】
ステップ４５６に後続するステップ４５８では、スロットを指定するトラック・テーブルの間接的なフラグが消去され、当該データが間接的に指定する異なるスロットではなく該スロットに供給されていることを示す。ステップ４５８に後続するステップ４６２では、ホスト２２およびＨＡ２８によって書き込まれるデータがスロットに書き込まれる。ステップ４６２に後続するステップ４６４では、スロットがアンロックされる。ステップ４６４に後続して、処理が完了される。
【０１０４】
検査ステップ４４６においてキャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置がスロットを指定すると判断された場合、ステップ４４６からステップ４７２に制御が渡り、新たなスロットが得られる。ステップ４７２において得られた新たなスロットは、ＲＤＦ転送を行うためにキャッシュ専用仮想装置４０４，４０６のうちの不活性の仮想装置のために使用され、古いスロットは、以下に説明するように、キャッシュ専用仮想装置４０４，４０６のうちの活性的な仮想装置に関連付けられる。
【０１０５】
ステップ４７２に後続するステップ４７４では、古いスロットからのデータはステップ４７２において得られた新たなスロットにコピーされる。ステップ４７４に後続するステップ４７６では、キャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置に対するトラック・テーブル・エントリーは古いスロットを指定するがデータは古いスロットによって指定されている新たなスロットに存在することを示すために、間接的なフラグ（上述した）が設定される。従って、ステップ４７６において間接的なフラグを設定することは、キャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置のトラック・テーブルに作用し、そのトラック・テーブル・エントリーはデータが新たなスロットに存在することを示す。
【０１０６】
ステップ４７６に後続するステップ４７８では、新たなスロットにおけるレコードに対するミラー・ビットが調節される。ステップ４７４において古いスロットから新たなスロットにデータがコピーされたときにコピーされた全てのローカル・ミラー・ビットは、新たなスロットの目的がキャッシュ専用仮想装置のうちの不活性な仮想装置に対して単にＲＤＦ転送を行うためだけであるため、消去される。古いスロットは、全てのローカル・ミラーを取り扱うために使用される。ステップ４７８に後続するステップ４６２では、データがスロットに書き込まれる。ステップ４６２に後続するステップ４６４では、スロットがアンロックされる。スロット４６４に後続して、処理が完了される。
【０１０７】
図１３を参照すると、フロー・チャート５００は、リモート記憶装置２６にデータの部分５４を送信するローカル記憶装置２４に関連して実施されるステップを示す。送信は、基本的に、キャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置が活性的であったときの前の繰り返し中に書き込まれたトラックに関してキャッシュ専用仮想装置４０４，４０６のうちの不活性な装置を走査することを含む。本実施形態では、ローカル記憶装置１４のＤＡ３５ａ−３５ｃは、キャッシュ専用仮想装置４０４，４０６のうちの不活性な装置を走査し、ＲＤＦプロトコルを用いて一つ以上のＲＡ３０ａ−３０ｃによるリモート記憶装置２６への送信のためにデータをコピーする。
【０１０８】
処理は、第１のステップ５０２から開始され、キャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置の第１のトラックが、全てのトラックにわたる反復処理を始めるために指定される。第１のステップ５０２に後続する検査ステップ５０４では、ＲＤＦ＿ＷＰフラグが設定されているか否かが判断される。本明細書の他の所で説明されるように、ＲＤＦ＿ＷＰフラグは、スロット（トラック）がＲＤＦリンクを介して送信される必要があるデータを含むことを示すために使用される。設定されているＲＤＦ＿ＷＰフラグは、スロット（トラック）における少なくとも一部のデータがＲＤＦを用いて送信されるべきことを示す。本明細書の実施形態では、スロット全体は送信されない。むしろ、適当なミラー・ビット・セット（レコードが変更されたことを示す）を有するスロット内のレコードのみがリモート記憶装置２６に送信される。しかしながら、他の実施形態では、リモート記憶装置２６が適当なミラー・ビット・セットを有するレコートに対応するデータのみを書き込み、有効か否かが明らかではないトラックに対する他のデータを無視することを前提として、スロット全体が送信されてもよい。
【０１０９】
検査ステップ５０４において、処理されるキャッシュ・スロットにＲＤＦ＿ＷＰが設定されていると判断された場合、ステップ５０４から検査ステップ５０５に制御が渡り、スロットがデータを含むか、あるいはスロットが当該データを含む別のスロットを指定する間接的スロットである否かが判断される。場合によっては、スロットは、スロットに対応するディスクの部分にデータを含まない場合もある。その代わりに、スロットは、該データを含む別のスロットを指定する間接的スロットとなり得る。ステップ５０５においてスロットが間接的スロットであると判断された場合、ステップ５０５からステップ５０６に制御が渡り、（間接的スロットによって指定されたスロットから）データが得られる。従って、スロットが直接的スロットである場合は、ＲＤＦによって送信されるべきデータはスロットに記憶され、スロットが間接的スロットである場合は、ＲＤＦによって送信されるべきデータは間接的スロットによって指定される別のスロットに存在する。
【０１１０】
ステップ５０６に後続して、あるいは、スロットが直接的スロットである場合にはステップ５０５に後続して、ステップ５０７では、（スロットから直接的にまたは間接的に）送信されるデータが、ＲＤＦプロトコルを用いてローカル記憶装置２４からリモート記憶装置２６に送信されるようＤＡ３５ａ−３５ｃの一つによってコピーされる。ステップ５０７に後続する検査ステップ５０８では、リモート記憶装置２６がデータの受信を承認したか否かが判断される。承認しない場合は、ステップ５０８からステップ５０７に制御が戻り、データを再送信する。他の実施形態では、異なる、より複雑な処理がデータを送信してその受信を承認するために使用されてもよい。このような処理は、データを送信するための試み数回失敗した後に実施されるエラー報告、および、代替の処理を含んでもよい。
【０１１１】
一旦、検査ステップ５０８においてデータの送信が成功であったと判断されると、ステップ５０８からステップ５１２に制御が渡り、ＲＤＦ＿ＷＰ（ＲＤＦを介したデータの送信が成功したため）が消去される。ステップ５１２に後続するステップ５１４では、少なくともＲＤＦミラー（Ｒ２）がもはやデータを必要としなくなることを示すために適当なミラー・フラグが消去される。本明細書の他の実施形態では、スロット（トラック）の一部である各レコードは、どのミラーが特定のレコードを使用するかを示す個々のミラー・フラグを有する。Ｒ２装置は、レコードのそれぞれに対するミラーの一つであり、Ｒ２装置に対応するフラグがステップ５１４において消去される。
【０１１２】
ステップ５１４に後続するステップ５１６では、処理されているトラックの任意のレコードが（他のミラー装置のための）任意の他のミラー・フラグを有しているか否かが判断される。有していない場合は、ステップ５１６からステップ５１８に制御は渡り、スロットは開放される（即ち、もはや使用されない）。一部の実施形態では、未使用のスロットが使用可能なスロットのプールに保持されている。追加的なフラグがスロットのレコードの一部に依然として設定されている場合、そのレコードは標準的な論理装置４０２にデステージされる必要があるか、あるいは、他のミラー（別のＲ２装置を含む）によって使用されていることを意味することに注意する。ステップ５１８に後続して、あるいは、より多くのミラー・フラグが存在する場合にはステップ５１６に後続して、ステップ５２２では、キャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置の各トラック・エントリーにわたって反復して使用されるポインタが次のトラックを指定する。ステップ５２２に後続する検査ステップ５２４では、処理されるべきトラックが、キャッシュ専用仮想装置４０４，４０６のうちの不活性な仮想装置に更に存在するか否かが判断される。存在しない場合には、処理は完了される。存在する場合には、上述の検査ステップ５０４に制御が戻る。ステップ５２２は、処理されているトラックに対してＲＤＦ＿ＷＰフラグが設定されていないと判断された場合には、検査ステップ５０４からも到達される。
【０１１３】
場合によっては、システムが動作し、ローカル記憶装置（Ｒ１）からリモート記憶装置に仮想順序付け書き込みを実施している間に、リモート記憶装置に接続されるホストを用いてＲ２装置からデータを読み出せると便利である。これに関連して、リモート記憶装置に接続されるホストが一貫した最新データ（例えば、Ｒ２側に委任されたデータの部分の一部分）を読み出せると便利である。
【０１１４】
図１４は、ホスト６０２からローカル記憶装置６０４およびリモート記憶装置６０６へのリンク６０８を介したデータの経路を示す。図１４のシステムは、図２に示して上述したシステムと類似している。ホスト６０２からローカル記憶装置６０４に書き込まれるデータは、ローカル記憶装置６０４のデータ素子６１２によって示されるように、局所的に記憶される。ホスト６０２によってローカル記憶装置６０４に書き込まれるデータは、ローカル記憶装置６０４からリンク６０８を介してリモート記憶装置６０６に送信されることに関連してローカル記憶装置６０４によっても保持される。
【０１１５】
（例えば、レコード、複数のレコード、トラック等の）ホスト６０２によって書き込まれる各データにはシーケンス番号が割り当てられている。シーケンス番号は、書き込みに関連付けられる適当なデータ・フィールドにおいて提供される。図１４においては、ホスト６０２による書き込みは、シーケンス番号Ｎが割り当てられているように示されている。シーケンス番号Ｎが割り当てられるとともに、ホスト６０２によって実施される全ての書き込みはデータの単一の部分６１４で収集される。部分６１４は、ほぼ同時に発生するホスト６０２による複数の別個の書き込みを表す。
【０１１６】
一般的に、ローカル記憶装置６０４は、一つのシーケンス番号の部分を累積し、前の累積された部分（前のシーケンス番号を有する）をリモート記憶装置６０６に送信する。従って、シーケンス番号Ｎが割り当てられたホスト６０２からの書き込みをローカル記憶装置６０４が累積する間に、前のシーケンス番号（Ｎ−１）に対して生ずる書き込みがリンク６０８を介してローカル記憶装置６０４からリモート記憶装置６０６に送信される。部分６１６は、リモート記憶装置６０６に未だに送信されていないシーケンス番号Ｎ−１が割り当てられたホスト６０２からの書き込みを表す。
【０１１７】
リモート記憶装置６０６は、シーケンス番号Ｎ−１が割り当てられた書き込みに対応する部分６１６からデータを受信し、シーケンス番号Ｎ−１を有するホストの書き込みの新たな部分６１８を構成する。データは、リンク６０８上で送信されるデータを承認する適当なＲＤＦプロトコルを用いて送信される。リモート記憶装置６０６が部分６１６から全てのデータを受信すると、ローカル記憶装置６０４は、リモート記憶装置６０６に委任メッセージを送信して部分６１８に対応するＮ−１のシーケンス番号が割り当てられた全てのデータを委任する。一般的に、一旦、特定のシーケンス番号に対応する部分が委任されると、部分が論理記憶装置に書き込まれる。これは、図１４に示され、部分６２２は、シーケンス番号Ｎ−２（即ち、ホスト６０２からローカル記憶装置６０６への書き込みに関連して使用される現在のシーケンス番号の二つ前）が割り当てられた書き込みに対応する。
【０１１８】
図１４では、部分６２２は、リモート記憶装置６０６用のディスク記憶部（標準的な論理装置）を表すデータ素子６２４に書き込まれるものとして示されている。従って、リモート記憶装置６０６は、シーケンス番号Ｎ−１に対応する部分６１８を受信し、累積し、前のシーケンス番号（Ｎ−２）に対応する部分６２２がデータ素子６２４によって示されるリモート記憶装置６０６のディスク記憶部に書き込まれる。一部の実施形態では、部分６２２用のデータは、書き込み（直ちに書き込まれるとは限らない）のためにマーキングされ、部分６１８用のデータはマーキングされない。データ素子６２４に記憶されているデータは、シーケンス番号Ｎ−３を有するように示され、データ素子６２４上のデータが、部分６２２によって表される委任されたデータよりも一（またはそれ以上）世代前であることを示す。
【０１１９】
従って、動作中、ホスト６０２は、ローカル記憶装置６０４にデータを書き込み、そのデータは、データ素子６１２に局所的に記憶され、部分６１４に累積される。一旦、特定のシーケンス番号に対する全てのデータが累積されると（本明細書の他の所で説明されるように）、ローカル記憶装置６０４はシーケンス番号をインクリメントする。現在のシーケンス番号よりも一つ少ない部分６１６からのデータは、リンク６０８を介してローカル記憶装置６０４からリモート記憶装置６０６に転送される。部分６２２は、リモート記憶装置６０６にメッセージを送信するローカル記憶装置６０４によって委任されたシーケンス番号に対するデータに対応する。部分６２２からのデータは、シーケンス番号Ｎ−３に対応する前の世代からのデータを含むリモート記憶装置２６４のディスク記憶部に書き込まれる。
【０１２０】
最初に、ホスト６０２からローカル記憶装置６０４に供給され、ローカル記憶装置６０４からリンク６０８を介してリモート記憶装置６０６に送信されるデータを、リモート記憶装置６０６に接続されるＲ２ホスト６２６が、リモート記憶装置６０６からの読み出すことは望ましい。部分６１８に対応するデータは、ローカル記憶装置６０４から依然として供給されているため、必ずしも一貫していないことに注意する。しかしながら、部分６２２からのデータは、部分６２２が委任されているため、一貫している。従って、Ｒ２ホスト６２６がリモート記憶装置６０６からデータを読み出すことを望むとき、データは、部分６２２から供給される、あるいは、データが部分に無い場合は、以下により詳細に説明されるように、データ素子６２４から供給される。
【０１２１】
図１５を参照すると、フロー・チャート６５０は、Ｒ２ホスト６２６がリモート記憶装置６０６からデータを読み出すことに関連して実施されるステップを示す。処理は、第１のステップ６５２から開始され、Ｒ２ホスト６２６によって読み出されているデータに対応するＣＯＶＤスロットが標準的な論理装置を指定するか（即ち、データ素子６２４を指定するか）否かが判断される。指定する場合、Ｒ２ホスト６２６によって望まれるデータは、データ素子６２４にあり、ステップ６５２からステップ６５４に制御が渡り、所望のデータがデータ素子６２４に対応する標準的な論理装置から読み出される。ステップ６５４において標準的な論理装置から読み出すことは、キャッシュから読み出すこと、あるいは、データが最初にキャッシュに無い場合にはディスクからデータを読み出し、場合によっては、ディスクからキャッシュにデータを移動することを含む。ステップ６５４に後続して、処理が完了される。
【０１２２】
検査ステップ６５２において、Ｒ２ホスト６２６によって読み出されているデータに対応するＣＯＶＤスロットが標準的な論理装置を指定しないと判断された場合、ステップ６５２からステップ６５６に制御が渡り、ＣＯＶＤのスロットがロックされる。ステップ６５６においてスロットをロックすることで、他の動作、例えば、部分６２２からデータ素子６２４にデータを復元する動作、によるスロットへのアクセスを防止する。
【０１２３】
ステップ６５６に後続する検査ステップ６５８では、ＣＯＶＤスロットが標準的な論理装置を指定するか否かが判断される。ステップ６５８における検査ステップは、ステップ６５２における検査ステップと同一である。ステップ６５８における検査は、別の処理（例えば、部分６２２からデータ素子６２４にデータを復元する処理）がＣＯＶＤにアクセスし、検査ステップ６５２の後でステップ６５６においてＣＯＶＤスロットがロックされる前に標準的な論理装置に復元する可能性があるため、有用である。ステップ６５８における再検査により、このような競合状態を防ぐ。
【０１２４】
検査ステップ６５８において、ステップ６５６においてロックされたＣＯＶＤスロットが現在では標準的な論理装置に指定すると判断されると、ステップ６５８からステップ６６２に制御が渡り、ＣＯＶＤスロットがアンロックされる。ステップ６６２に後続するステップ６５４では、Ｒ２ホスト６２６によって望まれるデータがデータ素子６２４から読み出される。ステップ６５４に後続して、処理が完了される。
【０１２５】
検査ステップ６５８において、Ｒ２ホスト６２６によって望まれるデータを含むＣＯＶＤスロットが標準的な論理装置を指定しないと判断された場合、ステップ６５８からステップ６６４に制御が渡り、ＣＯＶＤ中のデータが標準的な論理装置に復元される。ステップ６６４におけるデータの復元は、図９のフロー・チャートに関連して上述したステップ３０８，３１２，３１４，３１６，３１８，３２２，３２４，３２６，３２８，３３２，３３４のようなステップを用いて実施される。ステップ６６４に後続して、上述のステップ６５４に制御が渡り、データが標準的な論理装置から読み出される。ステップ６５４に後続して、処理が完了される。
【０１２６】
一部の実施形態では、Ｒ２ホスト６２６によって実施される各読み出し動作を一回当たり一つのトラックに制限することが有用である。これは、Ｒ２ホスト６２６がトラックの一部を読み出した後でＲ２ホスト６２６が全てのトラックを読み出す前に発生するような、Ｒ２装置６０６におけるサイクル切換によって生ずる非一貫性のデータの可能性を減少させる。他の実施形態では、適当なステップがとられれば、Ｒ２ホスト６２６が多数のトラックを読み出すことも可能である。
【０１２７】
図１６Ａを参照すると、フロー・チャート７００は、同時に二つ以上のトラックを読み出す能力を有するＲ２ホストに関連して実施されるステップを示す。処理は、第１のステップ７０２から開始され、読み出し動作が二つ以上のトラックを含むか否かが判断される。含まない場合は、ステップ７０２からステップ７０４に制御が渡り、本明細書の他の所で実施されるように読み出し動作が実施される。ステップ７０４に後続して、処理が完了される。
【０１２８】
ステップ７０２において、読み出されているトラックが二つ以上あると判断されると、ステップ７０２からステップ７０６に制御が渡り、Ｒ２装置６０６に対する現在のシーケンス番号（即ち、部分６２２に対するシーケンス番号）が取得される。ステップ７０６に後続するステップ７０８では、読み出しが実施される。ステップ７０８における読み出しが二つ以上のトラックの読み出しであることに注意する。ステップ７０８に後続するステップ７１２では、Ｒ２装置６０６に対する現在のシーケンス番号が再び取得される。ステップ７１２に後続するステップ７１４では、ステップ７１２で取得されるシーケンス番号がステップ７０６において取得されたシーケンス番号と同一か否かが判断される。同一である場合は、シーケンス番号は、多数のトラック読み出し動作中に変化せず、ステップ７１４からステップ７１６に制御が渡り、読み出されたデータが戻される。ステップ７１６に後続して、処理が完了される。ステップ７１４においてシーケンス番号が異なると判断された場合は、ステップ７１４からステップ７０６に制御が渡り、上述のシーケンスが繰り返される。シーケンス番号の変化の時間が十分に長い（例えば、３０秒）場合は、ステップ７１４においてシーケンス番号が二回続けて異なることは期待されない。
【０１２９】
図１６Ｂを参照すると、フロー・チャート７００は、図１６Ａのフロー・チャート７００に関連して示される、別の実施形態における、同時に二つ以上のトラックを読み出す能力を有するＲ２ホストに関連して実施されるステップを示す。処理は、第１のステップ７２２から開始され、読み出し動作が二つ以上のトラックを含むか否かが判断される。含まない場合は、ステップ７２２からステップ７２４に制御が渡り、本明細書の他の所で説明されるように読み出し動作が実施される。ステップ７２４に後続して、処理が完了される。
【０１３０】
ステップ７２２において、読み出されているトラックが二つ以上あると判断されると、ステップ７２２からステップ７２６に制御が渡り、Ｒ２装置６０６に対する現在のシーケンス番号（即ち、部分６２２に対するシーケンス番号）が取得される。ステップ７２６に後続するステップ７２８では、読み出しが実施される。ステップ７２８における読み出しが二つ以上のトラックの読み出しであることに注意する。ステップ７２８に後続するステップ７３２では、Ｒ２装置６０６に対する現在のシーケンス番号が再び取得される。ステップ７３２に後続するステップ７３４では、ステップ７３２で取得されるシーケンス番号がステップ７２６において取得されたシーケンス番号と同一か否かが判断される。同一である場合は、シーケンス番号は、多数のトラック読み出し動作中に変化せず、ステップ７３４からステップ７３６に制御が渡り、読み出されたデータが戻される。ステップ７３６に後続して、処理が完了される。ステップ７３４においてシーケンス番号が異なると判断された場合は、ステップ７３４からステップ７４８に制御が渡り、エラー・メッセージが戻される。ステップ７３８に後続して、処理が完了される。ステップ７３８で供給されるエラー・メッセージを受信するホストが読み出し動作を単に再び開始することに注意する。従って、ホストは、成功した結果が得られるまで読み出し動作を挑戦し続ける。
【０１３１】
場合によっては、システムが動作し、ローカル記憶装置（Ｒ１）からリモート記憶装置に仮想順序付け書き込みが実施されている間に、ローカル記憶装置に接続されるホストを用いてＲ２装置からのデータを読み出せることが便利である。これに関連して、ローカル記憶装置に接続されるホストが一貫した最新データ（即ち、Ｒ２側のデータの委任された部分の一部）を読み出せることが便利である。
【０１３２】
図１７は、ホスト８０２からローカル記憶装置８０４およびリモート記憶装置８０６へのリンク８０８を介するデータの経路を示す。図１７のシステムは図２に示し、上述したシステムに類似している。ホスト８０２からローカル記憶装置８０４に書き込まれるデータは、ローカル記憶装置８０４のデータ素子８１２によって示されるように、局所的に記憶される。ホスト８０２によってローカル記憶装置８０４に書き込まれるデータは、ローカル記憶装置８０４からリンク８０８を介してリモート記憶装置８０６に送信されることに関連してローカル記憶装置８０４によっても保持される。
【０１３３】
（例えば、レコード、複数のレコード、トラック等の）ホスト８０２によって書き込まれるデータのそれぞれにはシーケンス番号が割り当てられている。シーケンス番号は、書き込みに関連付けられる適当なデータ・フィールドにおいて提供される。図１７においては、ホスト８０２による書き込みは、シーケンス番号Ｎが割り当てられているように示されている。シーケンス番号Ｎが割り当てられるとともに、ホスト８０２によって実施される全ての書き込みはデータの単一の部分８１４で収集される。部分８１４は、ほぼ同時に発生するホスト８０２による複数の別個の書き込みを表す。  一般的に、ローカル記憶装置８０４は、一つのシーケンス番号の部分を累積し、前の累積された部分（前のシーケンス番号を有する）をリモート記憶装置８０６に送信する。従って、シーケンス番号Ｎが割り当てられたホスト８０２からの書き込みをローカル記憶装置８０４が累積する間に、前のシーケンス番号（Ｎ−１）に対して生ずる書き込みはリンク８０８を介してローカル記憶装置８０４からリモート記憶装置８０６に送信される。部分８１６は、リモート記憶装置８０６に未だに送信されていないシーケンス番号Ｎ−１が割り当てられたホスト８０２からの書き込みを表す。
【０１３４】
リモート記憶装置８０６は、シーケンス番号Ｎ−１が割り当てられた書き込みに対応する部分８１６からデータを受信し、シーケンス番号Ｎ−１を有するホスト書き込みの新たな部分８１８を構成する。データは、リンク８０８上で送信されるデータを承認する適当なＲＤＦプロトコルを用いて送信される。リモート記憶装置８０６が部分８１６から全てのデータを受信すると、ローカル記憶装置８０４は、リモート記憶装置８０６に委任メッセージを送信して部分８１８に対応するＮ−１のシーケンス番号が割り当てられた全てのデータを委任する。一般的に、一旦、特定のシーケンス番号に対応する部分が委任されると、部分が論理記憶装置に書き込まれる。これは、図１７に示され、部分８２２はシーケンス番号Ｎ−２（即ち、ホスト８０２からローカル記憶装置８０６への書き込みに関連して使用される現在のシーケンス番号の二つ前）が割り当てられた書き込みに対応する。
【０１３５】
図１７では、部分８２２は、リモート記憶装置８０６用のディスク記憶部（標準的な論理装置）を表すデータ素子８２４に書き込まれるものとして示されている。従って、リモート記憶装置８０６は、シーケンス番号Ｎ−１に対応する部分８１８を受信し、累積し、前のシーケンス番号（Ｎ−２）に対応する部分８２２がデータ素子８２４によって示されるリモート記憶装置８０６のディスク記憶部に書き込まれる。一部の実施形態では、部分８２２用のデータは、書き込み（直ちに書き込まれるとは限らない）のためにマーキングされ、部分８１８用のデータはマーキングされない。データ素子８２４に記憶されているデータは、シーケンス番号Ｎ−３を有するように示され、データ素子８２４上のデータが部分８２２によって表される委任されたデータよりも一（またはそれ以上の）世代前であることを示す。
【０１３６】
従って、動作中、ホスト８０２は、ローカル記憶装置８０４にデータを書き込み、そのデータは、データ素子８１２に局所的に記憶され、部分８１４に累積される。一旦、特定のシーケンス番号に対する全てのデータが累積されると（本明細書の他の所で説明されるように）、ローカル記憶装置８０４はシーケンス番号をインクリメントする。現在のシーケンス番号よりも一つ少ない部分８１６からのデータは、リンク８０８を介してローカル記憶装置８０４からリモート記憶装置８０６に転送される。部分８２２は、リモート記憶装置８０６にメッセージを送信するローカル記憶装置８０４によって委任されたシーケンス番号に対するデータに対応する。部分８２２からのデータは、シーケンス番号Ｎ−３に対応する前の世代からのデータを含むリモート記憶装置８０６のディスク記憶部に書き込まれる。
【０１３７】
最初に、ホスト８０２からローカル記憶装置８０４に供給され、ローカル記憶装置８０４からリンク８０８を介してリモート記憶装置８０６に送信されるデータを、ローカル記憶装置８０４に接続される他のホスト８２６が、リモート記憶装置８０６から読み出すことは望ましい。更に、ホスト８０２がデータを読み出すことも望ましい。例えば、場合によって、Ｒ１装置が失敗するが、一方のまたは両方のホスト８０２，８２６がＲ２側の一貫性を保持する一方でデータの最新バージョンで動作し続けることが望ましい。所望のデータが、ローカル・ディスク・ユニット８１２上、Ｎの部分８１４、Ｎ−１の部分８１６，８１８、Ｎ−２の部分８２２、およびリモート記憶装置８０６のディスク・ユニット８２４に一部の要素を有してもよいことに注意する。データの読み出しに関する本明細書の説明は、ホスト８０２がデータを読み出すこと、および／または他のホスト８２６がデータを読み出すことの両方に適用される。
【０１３８】
図１８を参照すると、フロー・チャート８５０は、一方のまたは両方のホスト８０２，８２６がＲ２装置８０６からデータを読み出すことに関連して実施されるステップが示される。処理は、第１のステップ８５２から開始され、所望のデータ（読み出されているデータが）がＲ１装置のキャッシュに存在するか否かが判断される。全ての所望のデータがＲ１装置８０４のキャッシュに存在する場合、Ｒ２装置８０６からどのデータも取得する必要がない。ステップ８５２において、データがＲ１装置のキャッシュに存在すると判断された場合、ステップ８５２からステップ８５４に制御が渡り、Ｒ１装置８０４のキャッシュ中のデータが読み出し要求に応答して戻される。ステップ８５４の後、処理が完了される。
【０１３９】
検査ステップ８５２において、全ての要求されたデータがＲ１装置８０４のキャッシュに存在しないと判断された場合、ステップ８５２から検査ステップ８５６に制御が渡り、データの一部がＮの部分８１４およびＮ−１の部分８１６の一方または両方に対応するトラックに対するスロットに存在するか否かが判断される。存在する場合は、ステップ８５６からステップ８６２に制御が渡り、Ｒ２装置（以下に説明される）から読み出されるデータを受信するためにスクラッチ・スロットが形成される。ステップ８６２に後続するステップ８６４では、Ｎの部分８１４およびＮ−１の部分８１４の一方または両方に対応するスロットがロックされる。ステップ８６４においてスロットをロックすることにより、読み出し処理が実施されている間にデータが変化することが防止される。
【０１４０】
ステップ８６４に後続するステップ８７４では、全ての所望のデータがＮの部分８１４，８１６の一方または両方に存在するか否かが判断される。存在しない場合、ステップ８７４からステップ８７６に制御が渡り、Ｒ１装置８０４がＲ２装置８０６に読み出し要求を送信する。Ｒ２装置８０６において読み出し要求を処理することは、以下により詳細に説明される。ステップ８７６に後続するステップ８７８では、Ｒ２装置８０６からのデータがＲ１装置８０４によって読み出される。ステップ８６２においてスクラッチ・スロットが形成される場合は、Ｒ２装置８０６からデータがスクラッチ・スロットに読み込まれる。そうでない場合は、データは、Ｒ１装置８０４に直接的に受信され得る。
【０１４１】
ステップ８７８に後続して、あるいは、Ｎのデータの部分８１４およびＮ−１のデータの部分８１６の一方または両方に存在する場合にはステップ８７４に後続して、ステップ８８２では、Ｒ１装置８０４上のデータのＮの部分８１４、データのＮ−１部分８１６、およびＲ２装置８０６によって戻されるデータが全て統合される。（存在するならば）Ｎ−１のデータはスクラッチ・スロット（古い方）に存在する全てのデータ上で統合され、統合されることにより結果として得られるものが最新の任意のＮのデータ上で統合される。第１の組のデータを第２の組のデータ上で統合することは、第１の組のデータが第２の組のデータの上位にあり、第１の組からのデータが第２の組からの対応するデータを上書きすることを意味する。
【０１４２】
ステップ８８２におけるデータの統合は、図９のフロー・チャート３００の統合ステップ３１４に類似している。トラックの異なる部分からのデータが異なるシーケンス番号に関連付けられ、Ｒ１装置８０４および／またはＲ２装置８０６のいずれかに存在することが可能であることに注意する。従って、ステップ８８２は、スクラッチ・スロットにおける単一のトラック分のデータを供給するために全てのキャッシュ・スロットにおける全てのデータの統合を取り扱う。
【０１４３】
ステップ８８２に後続するステップ８８４では、統合されたデータが読み出しコマンドを発行したホストに戻される。ステップ８８２に後続するステップ８８６では、読み出し処理中にロックされていた全てのスロットがアンロックされる。ステップ８８６に後続するステップ８８８では、読み出し処理中に割り当てられた全てのスクラッチ・スロットが割り当てを取り消される。ステップ８８８に後続して、処理が完了される。
【０１４４】
一部の実施形態では、検査ステップ８７４が省略されて、ステップ８６４に後続して、あるいは、Ｎの部分８１４およびＮ−１の部分８１６の一方または両方にデータが存在しない場合には検査ステップ８５６に後続して、ステップ８７６を常に実行することが可能となる。これは、フロー・チャート８５０においてステップ８６４からステップ８７６への代替経路８９２によって示される。
【０１４５】
図１９Ａを参照すると、フロー・チャート９００はＲ１装置８０４によって供給される読み出し要求をＲ２装置８０６で取り扱う一つの実施形態を示す。処理は、第１のステップ９０２から開始され、データのＮ−２の部分（既に委任されている）における全てのデータがディスク・ユニット８２４に復元される。つまり、データのＮ−２の部分８２２に読み出されるべきデータが存在する場合、データは、ステップ９０２においてディスク・ユニット８２４に復元される。
【０１４６】
ステップ９０２に後続するステップ９０３では、データのＮ−１の部分８１８に読み出されるべきデータが存在するか否かが判断される。存在する場合は、ステップ９０３からステップ９０４に制御が渡り、スクラッチ・スロットがＲ２装置８０６に割り当てられる。ステップ９０４に後続するステップ９０６では、ディスク・ユニット８２４からのデータはステップ９０４において割り当てられたスクラッチ・スロットにコピーされる。ステップ９０６に後続するステップ９０８では、スクラッチ・スロットのデータがＲ２装置８０６のデータのＮ−１の部分８１８の全ての対応するデータと統合される。
【０１４７】
ステップ９０８に後続するステップ９１２では、ステップ９０８におけるデータの統合によるものがＲ１装置８０４に戻される。しかしながら、ステップ９０３においてＮ−１の部分８１８で読み出されるべきデータが存在しないと判断された場合もステップ９１２に到達し、この場合、ディスクからのデータがステップ９１２で戻されることに注意する。ステップ９１２に後続するステップ９１４では、ステップ９０４で割り当てられたスロット（ステップ９０４が実行された場合）は、割り当てが取り消される。ステップ９１４に後続して、処理が完了される。
【０１４８】
図１９Ｂを参照すると、フロー・チャート９２０はＲ２装置８０６で読み出し要求を取り扱う別の実施形態を示す。処理は、第１のステップ９２１から開始され、データのＮ−１の部分８１８およびＮ−２の部分８２２の一方または両方に読み出されるべきデータが存在するか否かが判断される。存在する場合は、ステップ９２１からステップ９２２に制御が渡り、スクラッチ・スロットが割り当てられる。ステップ９２２に後続するステップ９２４では、ディスク・ユニット８２４からのデータがステップ９２２において割り当てられたスクラッチ・スロットにコピーされる。ステップ９２４に後続するステップ９２６では、データのＮ−２の部分８２２からのデータがスクラッチ・スロットのデータと統合される。ステップ９２６に後続するステップ９２８では、Ｒ２装置８０６のデータのＮ−１部分からのデータがスクラッチ・スロットと統合される。
【０１４９】
ステップ９２８に後続するステップ９３２では、スクラッチ・スロットへの全ての統合の結果によるものがＲ２装置８０６からＲ１装置８０４に戻される。しかしながら、ステップ９２１においてＮ−１の部分８１８およびＮ−２の部分８２２で読み出されるべきデータが存在しないと判断された場合もステップ９３２に到達し、この場合、ディスクからのデータがステップ９３２で戻されることに注意する。ステップ９３２に後続するステップ９３４では、ステップ９２２で割り当てられたスロット（ステップ９２２が実行された場合）は、割り当てが取り消される。ステップ９２４に後続して、処理が完了される。
【０１５０】
本発明は、様々な実施形態に関連して説明されたが、その変更態様も当業者には容易に明らかとなるであろう。従って、本発明の技術思想および範囲は、添付の特許請求の範囲に記載されている。
【図面の簡単な説明】
【０１５１】
【図１】本明細書に記載のシステムに関連して使用されるホスト、ローカル記憶装置、およびリモート・データ記憶装置を示す概略図。
【図２】本明細書に記載のシステムに関連して使用されるホスト、ローカル記憶装置、およびリモート・データ記憶装置間のデータのフローを示す概略図。
【図３】本明細書に記載のシステムによる、ローカル記憶装置上にデータの部分を構成し操作するアイテムを示す概略図。
【図４】本明細書に記載のシステムに関連して使用されるスロットのデータ構造を示す図。
【図５】本明細書に記載のシステムによる、ホストによる書き込みに応答する、ホスト・アダプタ（ＨＡ）の動作を示すフロー・チャート。
【図６】本明細書に記載のシステムによる、ローカル記憶装置からリモート記憶装置へのデータの転送を示すフロー・チャート。
【図７】本明細書に記載のシステムによる、リモート記憶装置上にデータの部分を構成し操作するアイテムを示す概略図。
【図８】本明細書に記載のシステムによる、ローカル記憶装置から委任インジケータを受信することに関連してリモート記憶装置によって実施されるステップを示すフロー・チャート。
【図９】本明細書に記載のシステムによる、送信されたデータのリモート記憶装置における記憶を示すフロー・チャート。
【図１０】本明細書に記載のシステムによる、ローカル記憶装置がシーケンス番号をインクリメントすることに関連して実施されるステップを示すフロー・チャート。
【図１１】本明細書に記載のシステムの別の実施形態による、ローカル記憶装置上にデータの部分を構成し操作するアイテムを示す概略図。
【図１２】本明細書に記載のシステムの別の実施形態による、ホストによる書き込みに応答するホスト・アダプタ（ＨＡ）の動作を示すフロー・チャート。
【図１３】本明細書に記載のシステムの別の実施形態による、ローカル記憶装置からリモート記憶装置へのデータの転送を示すフロー・チャート。
【図１４】本明細書に記載のシステムに関連して使用される、第１のホスト、ローカル記憶装置、リモート記憶装置、およびリモート記憶装置に接続される第２のホスト間のデータのフローを示す概略図。
【図１５】本明細書に記載のシステムによる、ホストがリモート記憶装置から仮想順序付け書き込みを読み出すことに関連して実施されるステップを示すフロー・チャート。
【図１６Ａ】本明細書に記載のシステムによる、ホストがリモート記憶装置からの仮想順序付けされた書き込みの多数のトラックを読み出す別の実施形態に関連して実施されるステップを示すフロー・チャート。
【図１６Ｂ】本明細書に記載のシステムによる、ホストがリモート記憶装置からの仮想順序付けされた書き込みの多数のトラックを読み出す別の実施形態に関連して実施されるステップを示すフロー・チャート。
【図１７】本明細書に記載のシステムに関連して使用される、第１のホスト、ローカル記憶装置、リモート記憶装置、およびローカル記憶装置に接続される他のホスト間のデータのフローを示す概略図。
【図１８】本明細書に記載のシステムによる、ローカル記憶装置に接続されるホストがリモート記憶装置から仮想順序付けされた書き込みを読み出すことに関連して実施されるステップを示すフロー・チャート。
【図１９Ａ】本明細書に記載のシステムによる、リモート記憶装置から仮想順序付けされた書き込みを読み出すホストに接続されるローカル記憶装置からの読み出し要求に応答してリモート記憶装置によって実施されるステップを示すフロー・チャート。
【図１９Ｂ】本明細書に記載のシステムによる、リモート記憶装置から仮想順序付けされた書き込みを読み出すホストに接続されるローカル記憶装置からの読み出し要求に応答してリモート記憶装置によって実施されるステップを示すフロー・チャート。
【図１】
2006523890.tif 000003
【図２】
2006523890.tif 000004
【図３】
2006523890.tif 000005
【図４】
2006523890.tif 000006
【図５】
2006523890.tif 000007
【図６】
2006523890.tif 000008
【図７】
2006523890.tif 000009
【図８】
2006523890.tif 000010
【図９】
2006523890.tif 000011
【図１０】
2006523890.tif 000012
【図１１】
2006523890.tif 000013
【図１２】
2006523890.tif 000014
【図１３】
2006523890.tif 000015
【図１４】
2006523890.tif 000016
【図１５】
2006523890.tif 000017
【図１６Ａ】
2006523890.tif 000018
【図１６Ｂ】
2006523890.tif 000019
【図１７】
2006523890.tif 000020
【図１８】
2006523890.tif 000021
【図１９Ａ】
2006523890.tif 000022
【図１９Ｂ】
2006523890.tif 000023
【手続補正書】
【提出日】平成18年6月2日(2006.6.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ書き込みを順序付ける方法であって、
一次記憶装置が複数のデータ書き込みを受信すること、
前記一次記憶装置が、第１の時間後であり第２の時間前に開始されるデータ書き込みを、第１のデータの部分に関連付けること、
前記一次記憶装置が、前記第２の時間後に開始されるデータ書き込みを、前記第１のデータの部分とは異なる第２のデータの部分に関連付けること、
前記第１のデータの部分に関連付けられる全ての書き込みが完了した後に、前記一次記憶装置が二次記憶装置への前記第１のデータの部分に関連付けられる書き込みの転送を開始すること、
を備える方法。
【請求項２】
請求項１に記載の方法であって、更に、
前記一次記憶装置が前記二次記憶装置への前記第１のデータの部分に関連付けられる全ての書き込みを転送することに後続して、前記一次記憶装置が前記二次記憶装置にメッセージを送信すること、
前記一次記憶装置から前記メッセージを受信することに応答して、前記二次記憶装置が前記第１のデータの部分に関連付けられるデータ書き込みを記憶すること、
を備える方法。
【請求項３】
請求項２に記載の方法であって、更に、
前記第１のデータの部分に関連付けられる全てのデータ書き込みを記憶した後に、前記二次記憶装置が前記一次記憶装置に承認を送信すること、
を備える方法。
【請求項４】
請求項３に記載の方法であって、更に、
前記二次記憶装置にメッセージを送信することに後続して、前記一次記憶装置が前記二次記憶装置へのデータの転送を一時停止すること、
を備える方法。
【請求項５】
請求項４に記載の方法であって、更に、
前記データの転送の一次停止に後続して、前記一次記憶装置が、後続するデータ書き込みに対して、データ書き込みを前記第１のデータの部分および前記第２のデータの部分とは異なる第３のデータの部分に関連付けること、
を備える方法。
【請求項６】
請求項５に記載の方法であって、更に、
前記二次記憶装置が前記一次記憶装置に承認を送信することに応答して、前記一次記憶装置が前記二次記憶装置へのデータの転送を再開すること、
を備える方法。
【請求項７】
請求項１に記載の方法であって、更に、
前記一次記憶装置のキャッシュ・スロットにデータ書き込みを供給すること、
を備える方法。
【請求項８】
請求項７に記載の方法であって、更に、
前記第１のデータの部分と既に関連付けられているキャッシュ・スロットに対応する前記第２のデータの部分にデータ書き込みが関連付けられることに応答して、前記データを新たなキャッシュ・スロットにコピーすること、
を備える方法。
【請求項９】
請求項７に記載の方法であって、更に、
前記一次記憶装置が、前記第１のデータの部分に関連付けられるデータ書き込みに対する前記キャッシュ・スロットに対してポインタの第１のリストを使用すること、
前記一次記憶装置が、前記第２のデータの部分に関連付けられるデータ書き込みに対する前記キャッシュ・スロットに対してポインタの第２のリストを使用すること、
を備える方法。
【請求項１０】
請求項７に記載の方法であって、更に、
前記一次記憶装置が前記第１のデータの部分に関連付けられるデータ書き込みに対応する前記キャッシュ・スロットに対して第１のキャッシュ専用仮想装置を使用すること、
前記一次記憶装置が前記第２のデータの部分に関連付けられるデータ書き込みに対応する前記キャッシュ・スロットに対して第２のキャッシュ専用仮想装置を使用すること、
を備える方法。
【国際調査報告】
2006523890.tif 000024
2006523890.tif 000025
2006523890.tif 000026