(57)【要約】記憶装置の連続バックアップを提供することは、記憶装置を複数のサブセクションに細分化すること、周期的に修正される時間指標を提供すること、および、特定時点の記憶装置の特定サブセクションへの新データ書込要求に応じて、特定サブセクションに対応して且つ特定時点の時間指標値に対応して新データによって上書きされるデータを維持することを含む。サブセクションはトラックであることが可能である。上書きされるデータを維持することは、サブセクションの各々に対応するデータの一部のリンクリストを構築することを含み得る。データの一部は可変サイズを具備できる。時間指標特定値の特定サブセクションへの２つのデータ書込動作に応じて、第２データ書込動作に対応するデータが第１データ書込動作に対応するデータの部分集合である場合、２つのデータ書込動作の各々に対応して書込まれるデータ同士は組合可能である。【特許請求の範囲】
【請求項１】
記憶装置の連続バックアップを提供する方法であって、前記方法は、
前記記憶装置を複数のサブセクションに細分化することと、
周期的に修正される時間指標を提供することと、および
特定時点の前記記憶装置の特定サブセクションへの新データ書込要求に応じて、前記特定サブセクションに対応し且つ前記特定時点の時間指標値に対応して前記新データによって上書きされるデータを維持することと
を含む、方法。
【請求項２】
時間指標特定値の特定サブセクションへの２つのデータ書込動作時、前記２つのデータ書込動作の各々に対応して書込まれるデータ同士は、第２データ書込動作に対応するデータが第１データ書込動作に対応するデータの部分集合である場合に互いに組合わせられる、請求項１記載の方法。
【請求項３】
前記方法は更に、前記維持したデータを前記記憶装置に書込むことによって特定時点の状態に前記記憶装置を復元することを含む、請求項１記載の方法。
【請求項４】
前記記憶装置への前記維持したデータの書込は、同一のサブセクションに対応する互いに別個の部分同士を組合わせることによって前記データのサブセクションを構築することを含む、請求項１記載の方法。
【請求項５】
前記方法は更に、適切な挿入箇所を得るべく前記特定サブセクションに対応するデータを詳細検討することによって、前記特定時点の前記特定サブセクションに対応するデータを挿入することを含む、請求項１記載の方法。
【請求項６】
前記方法は更に前記特定時点の前記特定サブセクションに対応するデータを読取ることを含み、この読取は前記特定サブセクションに対応するデータを詳細検討することとデータ群から読取ることとによって行われ、前記データ群は前記記憶装置からのデータと、維持されたデータと、前記記憶装置からのデータと前記維持されたデータの組合せとからなる、請求項１記載の方法。
【請求項７】
記憶装置の連続バックアップを提供する方法であって、前記方法は、
前記記憶装置を複数のサブセクションに細分化することと、
前記記憶装置のミラーリング装置を提供することであって、前記ミラーリング装置は連続バックアップ開始時に前記記憶装置上に存在するデータのコピーを含むことと、
周期的に修正される時間指標を提供することと、および、
特定時点の前記記憶装置の特定サブセクションへの新データ書込要求に応じて、前記特定サブセクションに対応し且つ前記特定時点の時間指標値に対応して前記新データによって上書きされるデータを維持することと
を含み、
前記ミラーリング装置からのデータは、連続バックアップ開始後の第１書込に対応して上書きされるデータを維持するために使用される、方法。
【請求項８】
時間指標特定値の特定サブセクションへの２つのデータ書込動作時、前記２つのデータ書込動作の各々に対応して書込まれるデータ同士は、第２データ書込動作に対応するデータが第１データ書込動作に対応するデータの部分集合である場合に互いに組合わせられる、請求項７記載の方法。
【請求項９】
ローカル記憶装置からリモート記憶装置へ連続バックアップを提供する方法であって、
前記方法は、
ローカル記憶装置を複数のサブセクションに細分化することと、
周期的に修正される時間指標を提供することと、および
特定時点の前記ローカル記憶装置の特定サブセクションへの新データ書込要求に応じて、前記特定サブセクションに対応し且つ前記特定時点の時間指標値に対応して前記新データによって上書きされる前記データを前記リモート記憶装置によって維持することと
を含む、方法。
【請求項１０】
時間指標特定値の特定サブセクションへの２つのデータ書込動作時、前記２つのデータ書込動作の各々に対応して書込まれるデータ同士は、第２データ書込動作に対応するデータが第１データ書込動作に対応するデータの部分集合である場合に互いに組合わせられる、請求項９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、コンピュータ記憶装置に関する。特に、コンピュータ記憶装置上に記憶されたデータの一部を選択的に維持および修正し、特定時点に対応させる分野に関する。
【背景技術】
【０００２】
ホストプロセッサシステムは、複数のホストインタフェースユニット（ホストアダプタ）、ディスクドライブ、およびディスクインタフェースユニット（ディスクアダプタ）を包含した記憶装置を使用してデータを記憶し、取り出すことが可能である。そのような記憶装置は、たとえばマサチューセッツ州ホプキントンのＥＭＣ社によって提供され、ヤナイらの特許文献１、ガルツァら（Ｇａｌｔｚｕｒ  ｅｔ  ａｌ．）の特許文献２、ヴィシュリスキーら（Ｖｉｓｈｌｉｔｚｋｙ  ｅｔ  ａｌ．）の特許文献３、およびオフェク（Ｏｆｅｋ）の特許文献４に開示される。ホストシステムは、それと共に提供される複数のチャネルを通じて記憶装置にアクセスする。ホストシステムは、記憶装置のチャネルを通じてデータとアクセス制御情報を提供し、記憶装置は、これもチャネルを通じてホストシステムにデータを与える。ホストシステムは、記憶装置のディスクドライブに直接アドレスしないが、むしろ複数の論理ボリュームとしてホストシステムに現われるものにアクセスする。論理ボリュームは、実際のディスクドライブに対応することがあり、対応しないこともある。
【０００３】
データバックアップサービスは、データ損失に対して保護するために利用できる。そのようなサービスは、周期的に（たとえば１日に１、２回）行なわれることがある。メインシステム上のデータが失われた場合、それはバックアップ媒体から復元できる。
【０００４】
そのようなデータバックアップサービスには多くの不都合があり、それは周期的なバックアップで保存されたデータに対応するデータしか復元可能ではないという事実を含む。たとえばデータが毎日午前９：００と午後３：００にバックアップされる場合、ユーザは、たとえば午前１１：００のものからデータを復元できない。ユーザが午前１１：００バージョンのデータを望む場合、彼または彼女ができることは、せいぜいバックアップした午前９：００バージョンのデータのコピーを得て、次に、午前１１：００バージョンのデータを構築するためのステップを行なうことである（たとえばデータを手動で再構築することによって）。
【特許文献１】米国特許第５，２０６，９３９号明細書
【特許文献２】米国特許第５，７７８，３９４号明細書
【特許文献３】米国特許第５，８４５，１４７号明細書
【特許文献４】米国特許第５，８５７，２０８号明細書
【特許文献５】米国特許第５，２０６，９３９号明細書
【特許文献６】米国特許第５，５３７，５６８号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この問題の１つの解決策は、バックアップを一層頻繁に行なうことである。しかし、バックアップの頻度を増加させることは、バックアップデータ用の必要メモリを増加させ、バックアップデータのオーバーヘッドと複雑さを増大させる。理想的には、増加したバックアップの頻度に関連した必要メモリまたは複雑さの増大を伴わない連続的なまたはほぼ連続バックアップを伴うシステムによって、任意の先の時点からデータを得ることを可能にすることが望ましい。
【課題を解決するための手段】
【０００６】
本発明によれば、記憶装置の連続バックアップを提供することは、記憶装置を複数のサブセクションに細分化することと、周期的に修正される時間指標を提供することと、および、特定時点の記憶装置の特定サブセクションへの新データ書込要求に応じて、特定サブセクションに対応して且つ特定時点の時間指標値に対応して新データによって上書きされるデータを維持することとを含む。サブセクションはトラックであることが可能である。上書きされるデータを維持することは、サブセクションの各々に対応するデータの一部のリンクリストを構築することを含み得る。データの一部は可変サイズを具備できる。時間指標特定値の特定サブセクションへの２つのデータ書込動作に応じて、第２データ書込動作に対応するデータが第１データ書込動作に対応するデータの部分集合である場合、２つのデータ書込動作の各々に対応して書込まれるデータ同士は組合可能である。記憶装置の連続バックアップの提供は、維持されたデータを記憶装置に書込むことによって特定時点の状態に記憶装置を復元することを更に含み得る。維持されたデータを記憶装置に書込むことは、同一のサブセクションに対応する互いに別個の部分同士を組合わせることによって、データのサブセクションを構築することを含み得る。記憶装置の連続バックアップの提供は、適切な挿入箇所を得るために特定サブセクションに対応するデータを詳細検討することによって、特定時点の特定サブセクションに対応するデータを挿入することを更に含み得る。記憶装置の連続バックアップの提供は、特定サブセクションに対応するデータを詳細検討することと、記憶装置からのデータと、維持されたデータと、維持されたデータと記憶装置からのデータの組合わせとからなる群から読取ることとによって、特定時点の特定サブセクションに対応するデータを読取ることを更に含み得る。記憶装置の連続バックアップの提供は、サブセクションに対応する連続部分同士を組合わせることによって、データを圧縮することを更に含み得る。
【０００７】
更に本発明によれば、記憶装置の連続バックアップを提供する記憶媒体中のコンピュータソフトウェアは、周期的に修正される時間指標値を取得実行可能なコードと、特定時点の記憶装置の特定サブセクションへの新データ書込要求に応じて、特定サブセクションに対応して且つ特定時点の時間指標値に対応して新データによって上書きされるデータを維持実行可能なコードとを含む。サブセクションはトラックであることが可能である。上書きされるデータを維持実行可能なコードは、サブセクションの各々に対応するデータの一部のリンクリストを構築できる。データの一部は可変サイズを具備できる。時間指標特定値の特定サブセクションへの２つのデータ書込動作に応じて、第２データ書込動作に対応するデータが第１データ書込動作に対応するデータの部分集合である場合、２つのデータ書込動作の各々が組合可能である。コンピュータソフトウェアは、維持されたデータを記憶装置に書込むことによって、特定時点の状態に記憶装置を復元実行可能なコードを更に含み得る。維持されたデータを記憶装置に書込実行可能なコードは、同一のサブセクションに対応する互いに別個の部分同士を組合わせることによって、データのサブセクションを構築できる。コンピュータソフトウェアは、適切な挿入箇所を得るために特定サブセクションに対応するデータを詳細検討することによって、特定時点の特定サブセクションに対応するデータを挿入実行可能なコードを更に含み得る。コンピュータソフトウェアは、特定サブセクションに対応するデータを詳細検討し、記憶装置からのデータと、維持されたデータと、維持されたデータと記憶装置からのデータの組合わせとからなる群から読取ることによって、特定時点の特定サブセクションに対応するデータを読取実行可能なコードを更に含み得る。コンピュータソフトウェアは、サブセクションに対応する連続部分同士を組合わせることによって、データを圧縮実行可能なコードを更に含み得る。
【０００８】
更に本発明によれば、記憶装置の連続バックアップを提供することは、記憶装置を複数のサブセクションに細分化することと、連続バックアップ開始時に記憶装置上にあるデータのコピーを含む記憶装置のミラーリング装置を提供することと、周期的に修正される時間指標を提供することと、および、特定時点の記憶装置の特定サブセクションへの新デー
タ書込要求に応じて、特定サブセクションに対応して且つ特定時点の時間指標値に対応して新データによって上書きされるデータを維持することとを含む。連続バックアップ開始後の第１書込に対応して、ミラーリング装置からのデータは、上書きされるデータを維持するために使用される。サブセクションはトラックであることが可能である。上書きされるデータを維持することは、サブセクションの各々に対応するデータの一部のリンクリストを構築することを含み得る。データの一部は可変サイズを具備できる。時間指標特定値の特定サブセクションへの２つのデータ書込動作に応じて、第２データ書込動作に対応するデータが第１データ書込動作に対応するデータの部分集合である場合、２つのデータ書込動作の各々に対応して書込まれるデータ同士は組合可能である。記憶装置の連続バックアップの提供は、維持されたデータを記憶装置に書込むことによって、特定時点の状態に記憶装置を復元することを更に含み得る。維持されたデータを記憶装置に書込むことは、同一のサブセクションに対応する互いに別個の部分同士を組合わせることによって、データのサブセクションを構築することを含み得る。記憶装置の連続バックアップの提供は、適切な挿入箇所を得るために特定サブセクションに対応するデータを詳細検討することによって、特定時点の特定サブセクションに対応するデータを挿入することを更に含み得る。記憶装置の連続バックアップの提供は、特定サブセクションに対応するデータを詳細検討することによって、且つ記憶装置からのデータと、維持されたデータと、維持されたデータと記憶装置からのデータの組合わせとからなる群から読取ることによって、特定時点の特定サブセクションに対応するデータを読取ることを更に含み得る。記憶装置の連続バックアップの提供は、サブセクションに対応する連続部分同士を組合わせることによって、データを圧縮することを更に含み得る。
【０００９】
更に本発明によれば、記憶装置の連続バックアップを提供する記憶媒体中のコンピュータソフトウェアは、周期的に修正される時間指標値を取得実行可能なコードと、特定時点の記憶装置の特定サブセクションへの新データ書込要求に応じて、特定サブセクションに対応し且つ特定時点の時間指標値に対応する新データによって上書きされるデータを維持実行可能なコードとを含む。連続バックアップ開始後の第１書込に対応して、上書きされるデータを維持するために使用されるデータは、記憶装置のミラーリング装置からのものである。ミラーリング装置は、連続バックアップ開始時に記憶装置上にあるデータのコピーを含む。サブセクションはトラックであることが可能である。上書きされるデータを維持実行可能なコードは、サブセクションの各々に対応するデータの一部のリンクリストを構築できる。データの一部は可変サイズを具備できる。時間指標特定値の特定サブセクションへの２つのデータ書込動作に応じて、第２データ書込動作に対応するデータが第１データ書込動作に対応するデータの部分集合である場合、２つのデータ書込動作の各々に対応して書込まれるデータ同士は組合可能である。コンピュータソフトウェアは、維持されたデータを記憶装置に書込むことによって、特定時点の状態に記憶装置を復元実行可能なコードを更に含み得る。維持されたデータを記憶装置に書込実行可能なコードは、同一のサブセクションに対応する互いに別個の部分同士を組合わせることによって、データのサブセクションを構築できる。コンピュータソフトウェアは、適切な挿入箇所を得るために特定サブセクションに対応するデータを詳細検討することによって、特定時点の特定サブセクションに対応するデータを挿入実行可能なコードを更に含み得る。コンピュータソフトウェアは、特定サブセクションに対応するデータを詳細検討することによって、且つ記憶装置からのデータと、維持されたデータと、維持されたデータと記憶装置からのデータの組合わせとからなる群から読取ることによって、特定時点の特定サブセクションに対応するデータを読取実行可能なコードを更に含み得る。コンピュータソフトウェアは、サブセクションに対応する連続部分同士を組合わせることによって、データを圧縮実行可能なコードを更に含み得る。
【００１０】
更に本発明によれば、ローカル記憶装置からリモート記憶装置に連続バックアップを提供することは、ローカル記憶装置を複数のサブセクションに細分化することと、周期的に
修正される時間指標を提供することと、および、特定時点のローカル記憶装置の特定サブセクションへの新データ書込要求に応じて、特定サブセクションに対応して且つ特定時点の時間指標値に対応して新データによって上書きされるデータをリモート記憶装置によって維持することとを含む。サブセクションはトラックであることが可能である。上書きされるデータを維持することは、サブセクションの各々に対応するデータの一部のリンクリストを構築することを含み得る。データの一部は可変サイズを具備できる。時間指標特定値の特定サブセクションへの２つのデータ書込動作に応じて、第２データ書込動作に対応するデータが第１データ書込動作に対応するデータの部分集合である場合、２つのデータ書込動作の各々に対応して書込まれるデータ同士は組合可能である。ローカル記憶装置からリモート記憶装置に連続バックアップを提供することは、維持されたデータをリモート記憶装置に書込むことによって、且つリモート記憶装置からローカル記憶装置にデータを転送することによって、特定時点の状態にローカル記憶装置を復元することを更に含み得る。維持されたデータを記憶装置に書込むことは、同一のサブセクションに対応する互いに別個の部分同士を組合わせることによって、データのサブセクションを構築することを含み得る。ローカル記憶装置からリモート記憶装置に連続バックアップを提供することは、適切な挿入箇所を得るために特定サブセクションに対応するデータを詳細検討することによって、特定時点の特定サブセクションに対応するデータを挿入することを更に含み得る。ローカル記憶装置からリモート記憶装置に連続バックアップを提供することは、ローカル記憶装置によって仮想記憶装置を提供することであって、仮想記憶装置はリモート記憶装置によって維持されるデータへのアクセスを提供することと、特定サブセクションに対応するリモート記憶装置によってデータを詳細検討することによって、且つローカル記憶装置からのデータと、維持されたデータと、維持されたデータとローカル記憶装置からのデータの組合わせと読取ることによって、特定時点の特定サブセクションに対応するデータを読取ることを更に含む。維持されたデータは、仮想記憶装置を通じてアクセスできる。ローカル記憶装置からリモート記憶装置に連続バックアップを提供することは、サブセクションに対応する連続部分同士を組合わせることによって、データを圧縮することを更に含み得る。
【００１１】
更に本発明によれば、ローカル記憶装置からリモート記憶装置に連続バックアップを提供する記憶媒体中のコンピュータソフトウェアは、周期的に修正される時間指標値を取得実行可能なコードと、特定時点のローカル記憶装置の特定サブセクションへの新データ書込要求に応じて、特定サブセクションに対応して且つ特定時点の時間指標値に対応して新データによって上書きされるデータをリモート記憶装置によって維持実行可能なコードとを含む。サブセクションはトラックであることが可能である。上書きされるデータを維持実行可能なコードは、サブセクションの各々に対応するデータの一部のリンクリストを構築できる。データの一部は可変サイズを具備できる。時間指標特定値の特定サブセクションへの２つのデータ書込動作に応じて、第２データ書込動作に対応するデータが第１データ書込動作に対応するデータの部分集合である場合、２つのデータ書込動作の各々に対応して書込まれるデータ同士は組合可能である。コンピュータソフトウェアは、維持されたデータをリモート記憶装置に書込むことによって、且つリモート記憶装置からローカル記憶装置にデータを転送することによって、特定時点の状態に記憶装置を復元実行可能なコードを更に含み得る。維持されたデータを記憶装置に書込実行可能なコードは、同一のサブセクションに対応する互いに別個の部分同士を組合わせることによって、データのサブセクションを構築できる。コンピュータソフトウェアは、適切な挿入箇所を得るために特定サブセクションに対応するデータを詳細検討することによって、特定時点の特定サブセクションに対応するデータを挿入実行可能なコードを更に含み得る。コンピュータソフトウェアは、特定サブセクションに対応するリモート記憶装置によってデータを詳細検討することによって、且つローカル記憶装置からのデータ、維持されたデータ、または維持されたデータとローカル記憶装置からのデータの組合わせを読取ることによって、特定時点の特定サブセクションに対応するデータを読取実行可能なコードを更に含み、維持された
データは、リモート記憶装置によって維持されたデータにアクセスするローカル記憶装置によって提供される仮想記憶装置を通じてアクセスできる。コンピュータソフトウェアは、サブセクションに対応する連続部分同士を組合わせることによって、データを圧縮実行可能なコードを更に含み得る。
【発明を実施するための最良の形態】
【００１２】
図１に示すように、ダイアグラム２０は、データ記憶装置２４に結合された複数のホスト２２ａ〜２２ｃを示す。データ記憶装置２４は、ここでは他で記述されるような記憶装置２４の動作を容易にする内部メモリ２６を備える。データ記憶装置は、ホスト２２ａ〜２２ｃと記憶装置２４との間でデータ読取と書込を扱う複数のホストアダプタ（ＨＡ）２８ａ〜２８ｃを更に備える。ダイアグラム２０は、ホストアダプタ２８ａ〜２８ｃの各々に連結されたホスト２２ａ〜２２ｃの各々を示すが、ホストアダプタ２８ａ〜２８ｃの一または複数が他のホストに結合できることは、当業者にとっては当然のことである。
【００１３】
記憶装置２４は、一または複数のＲＤＦアダプタユニット（ＲＡ）３２ａ〜３２ｃを備えることが可能である。ＲＤＦアダプタユニット３２ａ〜３２ｃは、ＲＤＦリンク３４に結合され、ホストアダプタ２８ａ〜２８ｃと同様であるが、記憶装置２４と、更にＲＤＦリンク３４に結合された他の記憶装置（図示略）との間でデータを転送するために使用される。記憶装置２４は、ＲＤＦリンク３４に更に付加的なＲＤＦリンク（図示略）に結合できる。
【００１４】
記憶装置２４は、一または複数のディスク３６ａ〜３６ｃを更に含むことが可能であり、各々は、記憶装置２４上に記憶されたデータの異なる一部を含む。ディスク３６ａ〜３６ｃの各々は、ディスク３６ａ〜３６ｃの対応する１つにデータを提供し、またディスク３６ａ〜３６ｃの対応する１つからデータを受信する複数のディスクアダプタユニット（ＤＡ）３８ａ〜３８ｃの対応する１つに結合できる。幾つかの実施形態では複数のディスクがディスクアダプタユニットによってサービスを提供可能であり、複数のディスクアダプタユニットがディスクにサービスを提供できることを注記しておく。
【００１５】
ディスク３６ａ〜３６ｃに対応する記憶装置２４内の論理記憶領域は、複数のボリュームまたは論理装置に細分化できる。論理装置は、ディスク３６ａ〜３６ｃの物理記憶領域に対応することもあり、対応しないこともある。このようにたとえばディスク３６ａは、複数の論理装置を含み得るか、またはこれに代えて、単一の論理装置は、ディスク３６ａ，３６ｂの両方に及ぶこともある。ホスト２２ａ〜２２ｃは、ディスク３６ａ〜３６ｃ上の論理装置の位置に依存しない論理装置の任意の組合わせにアクセスするように構成できる。
【００１６】
一または複数の内部論理データ経路が、ディスクアダプタユニット３８ａ〜３８ｃとホストアダプタ２８ａ〜２８ｃ、ＲＤＦアダプタユニット３２ａ〜３２ｃ、および内部メモリ２６の間に存在する。幾つかの実施形態では一または複数の内部バスおよび／または通信モジュールを使用可能である。幾つかの実施形態では内部メモリ２６が、ディスクアダプタユニット３８ａ〜３８ｃ、ホストアダプタ２８ａ〜２８ｃ、およびＲＤＦアダプタユニット３２ａ〜３２ｃの間のデータ転送を容易にするために使用できる。内部メモリ２６は、ディスクアダプタユニット３８ａ〜３８ｃ、ホストアダプタ２８ａ〜２８ｃ、およびＲＤＦアダプタユニット３２ａ〜３２ｃの一または複数、ならびに、一または複数のディスク３６ａ〜３６ｃからフェッチされるデータに対応するキャッシュによって行なわれるタスクを含み得る。内部メモリ２６の使用は、一層詳細に以降に記述される。
【００１７】
記憶装置２４は、図１に示すようなホスト２２ａ〜２２ｃに結合されたスタンドアロン装置として提供できるか、またはこれに代えて、記憶装置２４は、複数の他の記憶装置、
同様にルータ、ネットワーク接続などを含むストレージエリアネットワーク（ＳＡＮ）の一部であることが可能である。記憶装置は、ＳＡＮ構造に結合され、および／またはＳＡＮ構造の一部であることが可能である。ここで記述されるシステムは、ソフトウェア、ハードウェア、および／またはソフトウェアおよびハードウェアの組合わせを使用して実施可能であり、ソフトウェアは、適切な記憶媒体に記憶され、一または複数のプロセッサによって実行できる。
【００１８】
図２に示すように、ダイアグラム５０は、記憶装置２４の実施形態を示し、複数の導波器５２ａ〜５２ｃの各々は、内部メモリ２６に結合されている。導波器５２ａ〜５２ｃの各々は、ホストアダプタ２８ａ〜２８ｃ、ＲＤＦアダプタユニット３２ａ〜３２ｃ５、またはディスクアダプタユニット３８ａ〜３８ｃのうちの１つを表わす。本実施形態では内部メモリ２６には６４個までの導波器が結合できる。もちろん代替の実施形態に対しては、より大きいまたはより小さい最大数を有した導波器が使用可能である。
【００１９】
ダイアグラム５０は、導波器５２ａ〜５２ｃ間の代替通信経路を提供する随意の通信モジュール（ＣＭ）５４を更に示す。導波器５２ａ〜５２ｃの各々は、通信モジュール５４に結合可能であり、その結果、導波器５２ａ〜５２ｃのうちのいずれか１つは、内部メモリ２６を通過する必要無しに、導波器５２ａ〜５２ｃのうちの任意の他の１つに、データまたはメッセージを送信できる。通信モジュール５４は、従来のＭＵＸ／ルータ技術を使用して実施可能であり、ここでは導波器５２ａ〜５２ｃのうちの送信する１つが適切なアドレスを提供し、これによって、導波器５２ａ〜５２ｃのうちの意図した受信する１つによってメッセージおよび／またはデータを受信させる。通信モジュール５４の機能のうちの幾つかまたは全ては、一または複数の導波器５２ａ〜５２ｃを使用して実施可能であり、その結果、たとえば導波器５２ａ〜５２ｃは、導波器５２ａ〜５２ｃの各々に提供される相互接続機能と直接的に相互接続できる。更に導波器５２ａ〜５２ｃのうちの送信する１つは、同時に別の導波器５２ａ〜５２ｃの全てにメッセージをブロードキャストできる。
【００２０】
図３に示すように、記憶装置２４は、複数の標準論理装置（Standard Logical Device
、ＳＴＤ）６１〜６８を備えるように示される。標準論理装置６１〜６８の各々は、記憶装置２４に結合された一または複数のホストにアクセス可能なボリュームに対応できる。標準論理装置６１〜６８の各々は、ディスクドライブ３６ａ〜３６ｃのうちの１つに対応することもあり、対応しないこともある。このようにたとえば標準論理装置６１は、ディスクドライブ３６ａに対応できるか、ディスクドライブ３６ａの一部に対応できるか、またはディスクドライブ３６ａの一部およびディスクドライブ３６ｂの一部に対応できる。たとえ標準論理装置６１〜６８の各々がディスクドライブ３６ａ〜３６ｃの実際の隣接した物理的な記憶装置に対応しても対応しなくても、標準論理装置６１〜６８の各々は、ディスク記憶装置の隣接したブロックとしてホストに現われる。
【００２１】
記憶装置２４は、複数の仮想装置７１〜７４を更に含み得る。仮想装置７１〜７４は、データ記憶装置の隣接したブロックを含むボリュームとして記憶装置２４に結合されたホストに現われる。仮想装置７１〜７４の各々は、標準論理装置６１〜６８全体のコピー時点、標準論理装置６１〜６８のうちの１つの一部、または標準論理装置６１〜６８の一部の組合わせまたは全体を表示可能である。しかし、ここでは一層詳細に他で記述されるように、仮想装置７１〜７４は、標準論理装置６１〜６８からのトラックデータを含んでいない。代わりに、ここでは一層詳細に他で記述されるように、仮想装置７１〜７４の各々は、幾つかまたは全てのトラックデータを記憶するログ装置７６またはログ装置７８に結合される。仮想装置７１〜７４は、標準論理装置６１〜６８またはログ装置７６，７８のいずれか上のデータのトラックを指差すテーブルを含む。幾つかの例では、単一の仮想装置は、複数のログ装置上にデータを記憶できる。
【００２２】
仮想装置７１は、標準論理装置６１のコピー時点を表示可能である。ここでは一層詳細に他で記述されるように、仮想装置７１は、ホストに現われる仮想装置７１が標準論理装置６１のコピー時点になることを容易にするトラックデータを含むログ装置７６に結合されている。複数の仮想装置は、単一のログ装置を使用できる。このように仮想装置７２〜７４は、ログ装置７８に結合されているように示される。同様に、複数の仮想装置に対応して単一の基準論理装置のコピー時点を表示可能である。このように仮想装置７２，７３は、標準論理装置６４のコピー時点においてあるように示される。仮想装置７２，７３は、標準論理装置６４の同一のコピー時点を表示可能であるか、またはこれに代えて、異なる時点において得られる標準論理装置６４のコピー時点を表示可能である。標準論理装置６１〜６８のうちの幾つかだけが仮想装置７１〜７４の対応する１つに関連するように示されるが、標準論理装置６１〜６８の他のものは、そのようになっていないことを注記しておく。
【００２３】
幾つかの実施形態では記憶装置の代わりに、記憶領域を使用してここで記述されるシステムを実施できる。このようにたとえば仮想装置７１〜７４は、仮想記憶領域であることが可能であり、標準論理装置６１〜６８は、標準論理領域であることが可能であり、ログ装置７６，７８は、ログ領域であることが可能である。幾つかの例では、そのような実施は、ハイブリッド論理／仮想装置に対応して、単一の論理装置が標準論理装置として動作する部分、仮想装置として動作する部分、および／またはログ装置として動作する部分を持つことを可能にさせることがある。従って適切な例では、ここでの議論における装置への参照が、記憶装置に直接的に対応することも対応しないこともある記憶領域にも適用されることがあることは理解されなければならない。
【００２４】
図４は、標準論理装置８２、仮想装置８４、およびログ装置８６を示す。上述したように、仮想装置８４は、標準論理装置８２の全てまたは一部のコピー時点を表示可能である。仮想装置８４にアクセスする記憶装置に結合されたホストは、ホストが標準論理装置８２にアクセスするのと同一の方法で仮想装置８４にアクセスできる。しかし、仮想装置８４は、標準論理装置８２からのいずれのトラックデータも含んでいない。代わりに、仮想装置８４は、標準論理装置８２またはログ装置８６のいずれか上のトラックを指差す複数のテーブル入力を含む。
【００２５】
仮想装置８４が確立される場合（たとえばコピー時点が標準論理装置８２からなるとき）、仮想装置８４は、生成され、確立時の標準論理装置８２のトラックを指差す適切なテーブル入力を備える。トラックを読取るために仮想装置８４にアクセスするホストは、標準論理装置８２のトラックを指差す仮想装置８４のテーブル入力に基づいた標準論理装置８２から適切なトラックを読取るであろう。
【００２６】
仮想装置８４が確立後、ホストは、標準論理装置８２にデータを書込み得る。その場合、標準論理装置８２上に記憶された以前のデータは、ログ装置８６にコピーされ、標準論理装置８２のトラックを以前に指差した仮想装置８４のテーブル入力は、データがコピーされたログ装置８６の新しいトラックを指差すように修正されるであろう。このように仮想装置８４にアクセスするホストは、変更されていない標準論理装置８２から一方のトラックを読取るであろう。なぜならば、仮想装置８４は、確立されるか、または仮想装置８４が確立後、標準論理装置８２からコピーしたデータを含むログ装置８６から対応するトラックを読取るであろう。標準論理装置８２および仮想装置８４からの読取およびこれらへの書込に関するデータおよびポインタの制御はここでは一層詳細に別に議論される。
【００２７】
ここで記述される実施形態ではホストは、ログ装置８６に直接的にアクセスするであろう。すなわちログ装置８６は、もっぱら仮想装置８４（および状況によってここでは一層
詳細に他で記述されるような他の仮想装置）に対応して使用されるであろう。更にここで記述される実施形態に対応しては、標準論理装置８２、仮想装置８４、およびログ装置８６は、単一の記憶装置２４上に具備可能である。しかし、たとえばＲＤＦプロトコルまたは他のリモート通信プロトコルを使用して相互接続した互いに別個の記憶装置上の異なる論理装置とログ装置を設けることも可能である。更に適切に相互接続した互いに別個の記憶装置上に設けられた標準論理装置８２、仮想装置８４、および／またはログ装置８６のうちの一または複数の一部を有可能である。
【００２８】
図５に示すように、仮想装置の使用の別の例は、標準論理装置９２、複数の仮想装置９４〜９７、およびログ装置９８を示す。図５の例では、仮想装置９４は、午前１０時に得られる標準論理装置９２のコピー時点を表わす。同様に仮想装置９５は、正午１２時に得られる標準論理装置９２のコピーを表わし、仮想装置９６は、午後２時に得られる標準論理装置９２のコピーを表わし、仮想装置９７は、午後４時に得られる標準論理装置９２のコピーを表わす。仮想装置９４〜９７が全て、ログ装置９８を共有できることを注記しておく。更に複数の仮想装置９４〜９７のテーブル入力、または仮想装置９４〜９７のテーブル入力の部分集合は、ログ装置９８の同一のトラックを指差すことが可能である。たとえば仮想装置９５と仮想装置９６は、ログ装置９８の同一のトラックを指差すテーブル入力を有するように示される。
【００２９】
ここで議論した実施形態ではここで議論したログ装置９８と他のログ装置は、記憶装置２４によって管理されるログ装置のプールによって提供される。その場合、仮想装置がログ装置の付加的なトラックを必要とする場合、仮想装置は、ログ装置プールシステムを使用してより多くのログ装置記憶域を生成させるであろう（既存のログ装置または新しいログ装置用のより多くのトラックの形態で）。このように記憶装置の資源をプールすることは、本技術分野において公知である。プールを使用しない他の技術は、ログ装置記憶域を提供するために使用できる。
【００３０】
図６に示すように、ダイアグラム１００は、装置情報をトラックに対応して使用するテーブルを示す。第１テーブル１０２は、ホストアダプタおよび／またはディスクアダプタユニットのような記憶装置によって、または記憶装置の要素によって使用される装置の全てに対応する。テーブル１０２は、記憶装置（または記憶装置の一部）によって使用される全ての論理装置に対応する複数の論理装置入力１０６〜１０８を含む。テーブル１０２中の入力は、標準論理装置、仮想装置、ログ装置、および他の種類の論理装置に対応する記述を含む。
【００３１】
テーブル１０２の入力１０６〜１０８の各々は、論理装置の各々に対応する情報を含む別のテーブルに対応する。たとえば入力１０７は、テーブル１１２に対応できる。テーブル１１２は、オーバーヘッド情報を含むヘッダを含む。更にテーブル１１２は、論理装置のシリンダの各々に対応する入力１１６〜１１８を含む。本実施形態では論理装置は、論理装置がどのように初期化されるかに依存した任意の数のシリンダを含み得る。しかし、他の実施形態では論理装置は、固定数のシリンダを含み得る。
【００３２】
テーブル１１２は、余分なトラックバイト１１９の区域を備えるように示される。余分なトラックバイト１１９は、ここで別に議論される方法でログ装置に対応して使用される。ここで開示された実施形態ではログ装置の各トラックに対応して８バイトの余分なトラックバイトがある。ログ装置ではない装置について、余分なトラックバイト１１９は、使用されないこともある。
【００３３】
シリンダ入力１１６〜１１８の各々は、トラックテーブルに対応する。たとえば入力１１７は、オーバーヘッド情報を有するヘッダ１２４を含むトラックテーブル１２２に対応
できる。トラックテーブル１２２は、トラックの各々に対応する入力１２６〜１２８を更に含む。本実施形態では全てのシリンダに対応して１５個のトラックがある。しかし、他の実施形態に対応して、シリンダの各々に対応して異なる数のトラック、または各シリンダに対応して可変数のトラックを具備できる。標準論理装置とログ装置について、入力１２６〜１２８の各々の情報は、記憶装置２４（またはシステムがそのように構成されている場合、リモート記憶装置）のディスクドライブ４２〜４４のうちの１つの物理アドレスへのポインタ（直接または間接）を含む。このようにトラックテーブル１２２は、テーブル１０２，１１２，１２２に対応する論理装置の論理アドレスを、記憶装置２４のディスクドライブ４２〜４４上の物理アドレスにマッピングするために使用できる。仮想装置について、テーブル１２２の入力１２６〜１２８の各々は、対応する標準論理装置または対応するログ装置のトラックを指差す。他の実施形態に対応しては、しかし、テーブル１０２，１１２，１２２が、データのトラックを含む標準論理装置に対応してのみ使用される。一方、トラックの単純なアレイのような別の種類のテーブルが、対応する標準論理装置またはログ装置のトラックに仮想装置のトラックをマッピングするために仮想装置によって使用される、異なる機構を使用できる。
【００３４】
ログ装置の各トラックは、フリーであるか（仮想装置によって使用されていないことを意味する）、または割当てられている（トラックが一または複数の仮想装置にテーブル入力によって指差されることを意味する）のいずれかである。本実施形態ではログ装置のトラックは、ログ装置のフリートラックの全ての二重リンクリストをまず生成することによって管理される。二重リンクリスト用のポインタは、テーブル１１２の余分なトラックバイト１１９によって提供され、その結果、ログ装置用の余分なトラックバイト１１９は、ログ装置の全てのトラック用に８バイトを含む。フリーなログ装置の全てのトラックについて、付加的な８バイトは、ログ装置の次のフリートラックを指差す順方向ポインタと、ログ装置の前のフリートラックを指差す逆方向ポインタとを含む。このように二重リンクリストを使用することは、ログ装置のフリートラックにアクセスすることを容易にする。
【００３５】
更にログ装置のトラックが割当てられる（すなわち一または複数の仮想装置によって使用される）場合、トラックに対応する余分なトラックバイト１１９は、標準論理装置の対応するトラックに指戻すために使用できる。このように仮想装置が確立後で書込が標準論理装置に行なわれる場合、標準論理装置からのデータは、ログ装置の新しいトラックにコピーされ、ログ装置の新しいトラックに対応する余分なトラックバイトは、データ元の標準論理装置のトラックに指戻すようになされる。標準論理装置の対応するトラックにログ装置の各トラックを指戻させることは、たとえばデータ復元状況において有用である。
【００３６】
更に本実施形態に対応しては、割当てられたトラックに対応する１トラック当たりの余分な８バイトのポインタもまた、データと共に記憶される。すなわちログ装置の特定トラックが割当てられる場合、標準論理装置の対応するトラックに戻されるポインタは、余分なトラックバイト１１９と共に記憶され、更にポインタは、ログ装置のトラック上でトラックデータ自体と共に記憶される。ＣＫＤフォーマットしたトラックについて、余分な８バイトは、ブロック「０」に記憶できる。ＦＢＡフォーマットしたトラックについて、余分な８バイトは、トラックの端部上に添付された追加ブロックに記憶できる。本実施形態ではブロックは、５１２バイトであり、ＦＢＡトラックは、４０個のブロックを含み、それは追加ブロックが添付される場合「４１」に増加される。様々なトラックフォーマットが、たとえばヤナイらの特許文献５に開示され、それは参照によってここに援用される。
【００３７】
図６のテーブル１０２，１１２，１２２は、記憶装置２４のグローバルメモリ４６に記憶できる。更に特定のホストによってアクセスされる装置に対応するテーブルは、ホストアダプタ３２〜３６のうちの対応する１つのローカルメモリに記憶できる。更にＲＤＦアダプタユニット４８および／またはディスクアダプタユニット３６〜３８もまた、テーブ
ル１０２，１１２，１２２の一部を使用し、ローカルに記憶できる。
【００３８】
図７に示すように、フローチャート１４０は、仮想装置を通じてアクセス可能なトラックに対応する装置テーブルからホストがデータを読取る場合行なわれるステップを示す。すなわちフローチャート１４０は、仮想装置に対応するテーブル入力によって指差されるトラックに関する情報を得ることを示す。
【００３９】
本処理は検査ステップ１４２で開始し、ここでは対象トラックが標準論理装置またはログ装置上にあるか否か判断される。これは仮想装置に対応する装置テーブル入力にアクセスし、標準論理装置またはログ装置のいずれかを対象トラックに対応するテーブル入力が指差すかを判断することによって判断される。検査ステップ１４２において、仮想装置用のテーブルにおけるポインタが標準論理装置を指差すと判断された場合、制御はステップ１４２からステップ１４８に移行し、ここでは対象のテーブル入力が読取られる。ステップ１４８の後で本処理が完了する。
【００４０】
検査ステップ１４２において、対象トラックに対応する仮想装置用の装置テーブルにおけるポインタがログ装置を指差すと判断された場合、制御はステップ１４２からステップ１５８に移行し、ここでは対象のログテーブル入力が読取られる。ステップ１５８の後で本処理が完了する。
【００４１】
幾つかの例では、データへのアクセスは、データに同時にアクセスする多重処理を禁止するフラグまたはロックによって制御できることを注記しておく。これはたとえば装置テーブルが読取られるかまたは修正されている場合に特に有用である。ここで示される方法は、多重処理によってデータへのアクセスを制御する様々なシステムのうちのいずれか１つを意図し、「フラグ」または「セマフォ」としても知られているソフトウェアおよび／またはハードウェアロックの従来の組合わせを含む。幾つかの例では、データにアクセスする処理は、別の処理がデータを解除するまで待機する必要がある場合がある。１つの実施形態ではハードウェアロックは、ソフトウェアロック（フラグ）へのアクセスを制御し、その結果、処理は、先ずハードウェアロックを得て、ソフトウェアロックを検査し、そしてソフトウェアロックがクリアである場合、本処理はソフトウェアロックを設定し、ハードウェアロックを解除する。本処理がハードウェアロックを得て、ソフトウェアロックがクリアではないと判断された場合、本処理はハードウェアロックを解除し、その結果、ソフトウェアロックを設定する別の処理の後でソフトウェアロックをクリアできる。更に幾つかの例では、先ず特定トラックに対応するテーブル入力を読取り、トラックをキャッシュスロットに読取り（トラックが既にキャッシュ内にない場合）、キャッシュスロットをロックし、そして対応するテーブル入力を再度読取ることが有用であることを注記しておく。
【００４２】
図８に示すように、フローチャート１７０は、標準論理装置またはログ装置に対応する仮想装置用の装置テーブルへの情報の書込に対応して行なわれるステップを示す。本処理は第１ステップ１７２で開始し、ここでは書込まれる装置テーブル入力に対応する特定トラックが標準論理装置またはログ装置上にあるか否か判断される。対象の特定トラックが標準論理装置上にあると判断された場合、制御はステップ１７２からステップ１７８に移行し、ここでは書込まれる装置テーブル入力に対応するトラックがロックされる。ステップ１７８でトラックをロックすることは、他の処理がトラックにアクセスし、対応するテーブル入力を修正するのを防止する。一方、現在の処理は、トラックに対応する装置テーブル入力を修正する。ステップ１７８の後はステップ１８２であり、ここでは書込動作が行なわれる。ステップ１８２の後はステップ１８４であり、ここではトラックがロック解除される。ステップ１８４の後で本処理が完了する。
【００４３】
検査ステップ１７２において、修正されている仮想装置に対応するテーブル入力に対応したトラックがログ装置を指差すと判断された場合、制御は検査ステップ１７２からステップ１９４に移行し、ここでは書込まれている装置テーブルの入力に対応するログ装置のトラックがロックされる。ステップ１９４の後はステップ１９６であり、ここでは書込動作が行なわれる。ステップ１９６の後はステップ１９８であり、ここではトラックがロック解除される。ステップ１９８の後で本処理が完了する。
【００４４】
図９に示すように、フローチャート２１０は、仮想装置に対応する装置テーブルの修正に対応して行なわれるステップを示す。これは仮想装置用の装置テーブルのトラックに対応する入力によって指差される標準論理装置またはログ装置用の装置テーブルを修正することを示した図８のフローチャート１７０と対比できる。フローチャート２１０では、仮想装置用の装置テーブルが、標準論理装置用の装置テーブルまたはログ装置用の装置テーブルに対立するものとして修正される。
【００４５】
本処理は第１ステップ２１２で開始し、ここではテーブルへの修正が仮想装置の確立に関係があるか否か判断される。後述するように仮想装置の確立は、仮想装置が生成後、仮想装置をホストによるアクセス可能にすることを含む。仮想装置を確立することは、仮想装置を標準論理装置に関連させる（従って確立時の標準論理装置のコピー時点を表わす）。標準論理装置に関連させる前には、仮想装置は確立されず、ホストによってアクセス可能ではない。確立後、仮想装置はホストによるアクセス可能である。
【００４６】
ステップ２１２において、テーブルへの修正が仮想装置の確立に関係すると判断された場合、制御はステップ２１２からステップ２１４に移行し、ここでは仮想装置用の装置ロックは、他の処理によるテーブルへのアクセスを禁止するように設定される。装置ロックは、ここでは別に議論するキャッシュスロットロックと類似する。
【００４７】
ステップ２１４の後はステップ２１６であり、ここでは仮想装置テーブルのポインタが、標準論理装置のトラックを指差すようになされ、そして保護ビットが、確立される仮想装置に対応する標準論理装置のトラックの各々に対応して設定される。本実施形態では標準論理装置のトラックの各々は、保護ビットとして設定可能な１６ビットを有し、各仮想装置に対応する１つは、標準論理装置に確立される。幾つかの実施形態では保護ビットは、仮想装置と無関係な用途を有することがある。確立される新しい仮想装置は、１６ビットのフィールドにおける新しいビット位置を割当てられることがある。一方、標準論理装置の各トラックのビットが設定されることがある。ここでは一層詳細に別に議論するように、標準論理装置への次の書込がその後に続く、設定される保護ビットは、特別な処理が、標準論理装置に確立される仮想装置を提供する必要があることを示す。特別な処理は、一層詳細にここでは他で記述される。更にステップ２１６において、仮想装置用の装置テーブルに対応するトラック入力は全て、標準論理装置の対応するトラックを指差すように修正される。このように仮想装置がまず確立される場合、仮想装置の装置テーブルのポインタの全ては、標準論理装置のトラックを指差す。
【００４８】
ステップ２１６の後はステップ２１７であり、仮想装置が準備完了状態に設定され、従って仮想装置をホストにアクセス可能にする。ステップ２１７の後はステップ２１８であり、仮想装置がロックを解除され、従って他の処理によるアクセスを可能にする。ステップ２１８の後で本処理が完了する。
【００４９】
検査ステップ２１２で仮想装置が確立されていないと判断された場合（すなわち或る他の動作が行なわれている）、制御は検査ステップ２１２からステップ２２２に移行し、修正されている仮想装置用の装置テーブルの入力に対応するトラックをロックする。ステップ２２２でロックされるトラックは、標準論理装置上のトラック（仮想装置の装置テーブ
ルにおける対象の入力が標準論理装置を指差す場合）、またはログ装置のトラック（対象の入力がログ装置を指差す場合）のいずれかであることが可能であることを注記しておく。ステップ２２２の後はステップ２２４であり、ここでは仮想装置用の装置テーブルへの修正が行なわれる。ステップ２２４の後はステップ２２６であり、ここではトラックがロック解除される。ステップ２２６の後で本処理が完了する。
【００５０】
図１０に示すように、フローチャート２３０は、ログ装置のトラックの操作に対応して行なわれるステップを示す。上述したように、ログ装置のトラックは、フリーなログ装置のトラック（すなわち新データを受入れる利用可能なトラック）の二重リンクリストを生成することによって維持される。このように一または複数のトラックが、対応する仮想装置に関する使用に必要とされる場合、フリートラックは、二重リンクリストから得られ、それは仮想装置による使用のために提供されるトラックが、もはやフリーではないことを示す従来の方法で修正される。反対に、一または複数の仮想装置によって使用される一または複数のトラックがもはや必要ではない場合、トラックは、トラックがフリーであることを示すために従来の方法で二重リンクリストに戻される。図１０のフローチャート２３０は、トラックを操作する多重処理によってトラック（およびトラックポインタ）へのアクセスを制御することに対応して行なわれるステップを示す。
【００５１】
本処理は検査ステップ２３２で開始し、ここでは行なわれている動作が、フリーリストにあるトラックのみを修正しているか否か判断される。たとえばリストの或る一部から別の一部へ、または或るフリーリストから別のフリーリストへ（複数のフリーリストの場合）フリートラックを転送することによってフリーリストのみのトラックを修正することが、任意のデータに対応するトラックに対応する修正を必要としないことを注記しておく。検査ステップ２３２において、行なわれている修正がフリーリストのトラックのみを含んでいないと判断された場合、制御はステップ２３２からステップ２３４に移行し、ここではトラックが、他の処理によるアクセスを防止するようにロックされる。
【００５２】
ステップ２３４の後、またはステップ２３４に達しない場合ステップ２３２の後は、検査ステップ２３６であり、ここでは操作が、割当てられたトラックのみを含むか否か判断される。割当てられたトラックのみに関する任意の動作について、フリートラックのログ装置リストをロックする必要はない。ステップ２３６において、行なわれている動作が、割当てられたトラックのみを操作するものではないと判断された場合、制御はステップ２３６からステップ２３８に移行し、ここではフリートラックのログ装置リストが、他の処理によるアクセスを防止するようにロックされる。ステップ２３８の後、またはステップ２３８が実行されない場合にステップ２３６の後は、ステップ２４２であり、ここでは修正が行なわれる。
【００５３】
ステップ２４２の後は、検査ステップ２４４であり、ここでは操作が、割当てられたトラックのみを含むか否か判断される。検査ステップ２４４において、行なわれている修正が、割当てられたトラックのみを含んでいないと判断された場合、制御はステップ２４４からステップ２４６に移行し、ここではログ装置フリーリストがロック解除される。ステップ２４６の後、またはステップ２４６に達しない場合ステップ２４４の後は、検査ステップ２４８であり、ここでは行なわれている動作が、フリーリストにあるトラックのみを修正しているか否か判断される。ステップ２４８において、行なわれている動作が、フリーリストにあるトラックのみを修正していると判断された場合、制御はステップ２４８からステップ２５２に移行し、ここではステップ２３４でロックされたトラックまたは複数のトラックがロック解除される。ステップ２５２の後、またはステップ２５２が実行されない場合、ステップ２４８の後で本処理が完了する。
【００５４】
図１１に示すように、フローチャート２８０は、仮想装置からのデータを読取ることに
対応して行なわれるステップを示す。本処理は検査ステップ２８２で開始し、ここでは仮想装置の対象トラックに対応する装置テーブル入力が、標準論理装置を指差すか、またはログ装置を指差すか否か判断される。検査ステップ２８２において、テーブルが標準論理装置を指差すと判断された場合、制御はステップ２８２からステップ２８４に移行し、ここではトラックが標準論理装置から読取られる。ステップ２８４の後で本処理が完了する。これに代えて、検査ステップ２８２において、仮想装置の装置テーブルがログ装置を指差すと判断された場合、制御はステップ２８２からステップ２８６に移行し、ここでは対象トラックがログ装置から読取られる。ステップ２８６の後で本処理が完了する。
【００５５】
幾つかの例では、検査ステップ２８２に先立って、読取られる対象トラックが既にキャッシュメモリ（グローバルメモリ）にあると判断できることを注記しておく。その場合、トラックは、ステップ２８２，２８４，２８６のうちのいずれも実行せずにキャッシュメモリから得ることが可能である。
【００５６】
図１２に示すように、フローチャート３００は、仮想装置が、以前に確立された標準論理装置のトラックに書込むことに対応してディスクアダプタユニットによって行なわれるステップを示す。本処理は第１ステップ３０２で開始し、ここでは標準論理装置に書込まれるトラックに対応するいずれかの保護ビットが設定されているか否か判断される。検査ステップ３０２において、保護ビットが設定されていないと判断された場合、制御はステップ３０２からステップ３０４に移行し、ここでは通常の書込動作が行なわれる。すなわちステップ３０４では、データは、標準論理装置に以前に確立された仮想装置の存在に関与しない従来の方法で標準論理装置に書込まれる。ステップ３０４の後で本処理が完了する。
【００５７】
検査ステップ３０２において、一または複数の保護ビットが、書込まれる標準論理装置のトラックに設定されていると判断された場合、制御はステップ３０２からステップ３０６に移行し、ここではログ装置のフリートラックが得られる。ログ装置のフリートラックは、標準論理装置のトラックからデータをコピーするために必要である。更にここでは一層詳細に他で記述されるように、ログ装置のフリートラックは、フリートラックの二重リンクリストを使用して管理できる。このようにステップ３０６では、ログ装置のフリートラックのリストを詳細検討することによって、且つ使用するフリートラックのうちの１つを削除するためにポインタを適切に修正することによって、フリートラックを得ることが可能である。
【００５８】
ステップ３０６の後はステップ３０８であり、ここでは検査ステップ３０２で設定されていると判断した保護ビットに対応する各仮想装置について、標準論理装置に書込まれるトラックを初めに指差した仮想装置のポインタは、ステップ３０６で得られたログ装置のフリートラックを指差すためにステップ３０８で修正される。上述したように、複数の仮想装置を標準論理装置に確立できる。特定の標準論理装置に確立されている各仮想装置について、特定の保護ビットは、標準論理装置のトラックの各々に対応して設定されるであろう。このようにステップ３０８では、トラックポインタが、ステップ３０２で検出された設定保護ビットに対応する全ての仮想装置に対応して変更される。仮想装置の装置テーブルにおけるトラックポインタは、ステップ３０６で得られた新しいトラックを指差すように修正される。
【００５９】
ステップ３０８の後はステップ３１２であり、ここではデータが、ステップ３０６で得られたログ装置の新しいトラックに標準論理装置からコピーされる。ここで開示される実施形態ではデータは、ディスク記憶装置から記憶装置のグローバルメモリに（たとえばキャッシュスロットに）データを移行させ、ステップ３０６で得られたログ装置のトラックにデータをコピーさせるために書込保留指標を設定することによって、コピーできる。ス
テップ３１２は、ステップ３０６で得たログ装置の新しいトラックに書込まれる標準論理装置のトラックからデータをコピーすることを表わす。全てのポインタがステップ３０８で修正されるため、トラックが書込まれるのに先立って標準論理装置に確立される任意の仮想装置は、ここで古いデータを指差す（すなわち仮想装置が確立された場合標準装置のトラックに存在するデータ）。トラックのコピーに対応して、標準論理装置トラックの保護ビットは、ログ装置のトラックに対応する仮想装置マップビットにコピーされることも注記し、それは一層詳細に別に説明される。
【００６０】
ステップ３１２の後はステップ３１４であり、ここではステップ３０６で得られたログ装置のトラックは、テーブルにおける余分なバイト（別に議論する）が、書込まれる標準論理装置のトラックに指戻すように修正される。ログ装置のトラックを、データが提供される標準論理装置の対応するトラックに指差させることは、多くの例で有用である。たとえばそれはデータ復元に対応して有用であることがある。ステップ３１４の後はステップ３１６であり、ここでは書込まれる標準論理装置のトラックの保護ビットがクリアされる。ステップ３１６の後はステップ３１８であり、ここでは状態がホストアダプタに送信される。ステップ３１８の後で本処理が完了する。
【００６１】
一旦、ホストアダプタが状態を受信した場合、ホストアダプタは、通常の書込動作を行ない、その場合、検査ステップ３０２では、ビットがステップ３１６でクリアされるため、保護ビットは設定されないであろうことを注記しておく。書込動作を行なっているホストアダプタは、ステップ３０２で設定される保護ビットを見て、適切なディスクアダプタユニットに保護要求を送信する。その後、ホストアダプタは、ディスクアダプタユニットから切断され、通常の書込が行なわれることがあることを示す状態がディスクアダプタユニットから届くのを待機する。ホストアダプタが切断され、ディスクアダプタユニットからの状態を待機する。一方、ディスクアダプタユニットは、フローチャート３００に開示されるステップを行なうことが可能である。これは一層詳細に下に記述される。
【００６２】
図１３に示すように、フローチャート３２０は、一または複数の仮想装置が確立される標準論理装置への書込に対応してホストアダプタによって行なわれるステップを示す。本処理は第１検査ステップ３２２で開始し、ここではいずれかの保護ビットが、書込まれる標準論理装置のトラックに対応して設定されているか否か判断される。検査ステップ３２２において、保護ビットが設定されていないと判断された場合、制御はステップ３２２からステップ３２４に移行し、ここでは通常の書込が行なわれる。ステップ３２４の後で本処理が完了する。
【００６３】
検査ステップ３２２において、一または複数の保護ビットが、書込まれる標準論理装置のトラックに対応して設定されていると判断された場合、制御はステップ３２２からステップ３２６に移行し、ここではホストアダプタは、保護ビットがトラックに対応して設定されていることを示す要求をディスクアダプタユニットに送信する。ステップ３２６で送信された要求をディスクアダプタユニットが受信した場合、ディスクアダプタユニットは、上述した図１２のフローチャート３００において記述された動作を行なう。ステップ３２６の後はステップ３２８であり、ここではホストアダプタは、動作（状況によって無関係の）が他の処理および／または他のホストアダプタによってディスクアダプタユニットで行なわれることを可能にするためにディスクアダプタユニットから切断する。
【００６４】
ステップ３２８の後はステップ３３２であり、ここではホストアダプタは、図１２のフローチャート３００において記述された動作をディスクアダプタユニットが行ない、設定保護ビットを扱うために適切なステップが行なわれることを示す状態をディスクアダプタユニットがホストアダプタに送信することを待機する。ステップ３３２に続いて、本処理はステップ３２２に戻り、ここでは標準論理装置のトラックに対応する保護ビットが再び
検査される。２回目の反復では、ディスクアダプタユニットが、フローチャート３００のステップを行なうことに対応して保護ビットをクリアするため、書込まれる標準論理装置のトラックの保護ビットがステップ３２２でクリアされるであろうことが期待されることを注記しておく。もちろん新しい仮想装置が、保護ビットをディスクアダプタユニットがクリアすることと、再び実行されるステップ３２２との間で標準論理装置に確立されることは常に可能である。しかし、標準論理装置の特定トラックに対応するステップ３２２の２回目の反復が、全ての保護ビットがクリアされていると判断するであろうことが通常は期待され、制御はステップ３２２からステップ３２４に移行し、通常の書込を行なう。
【００６５】
図１４に示すように、フローチャート３４０は、仮想装置への書込に対応して行なわれるステップを示す。フローチャート３４０は、ホストアダプタとディスクアダプタユニットの両方によって行なわれるステップを表わし、従って図１２のフローチャート３００と図１３のフローチャート３２０と同様に、２つのフローチャートとして提供されている。しかし、フローチャート３４０が、フローチャート３００，３２０記述されたものと同様の、本明細書の文章の対応する部分に記述されたステップの分割部分を表示可能であることは当業者によって理解されるであろう。
【００６６】
本処理は第１ステップ３４２で開始し、ここでは仮想装置が標準論理装置を指差すか否か判断される。ＹＥＳの場合、制御は検査ステップ３４２からステップ３４４に移行し、ログ装置のフリートラックが得られる。ステップ３４４の後はステップ３４６であり、ここでは書込まれるトラックに対応する標準論理装置からのデータが、標準論理装置からステップ３４４で得られるログ装置のトラックにコピーされる。ステップ３４６の後はステップ３４８であり、トラックに対応する仮想装置ポインタが、ステップ３４４で得られるトラックを指差すように調整される。ステップ３４８の後はステップ３５２であり、ここでは仮想装置に対応する保護ビットが、標準論理装置のトラックデータ中でクリアされ、よって、標準装置のトラックへ書込時に仮想装置のための特別な処理が必要ではないことを示す。ステップ３５２の後はステップ３５４であり、ここでは書込が実行される。ステップ３５４では、書込まれるデータは、ステップ３４４で得られたトラックに書込まれるトラックまたはトラックの一部であることが可能である。ステップ３５４の後で本処理が完了する。データが全トラックに対応する場合、ステップ３４６を排除でき、それはステップ３５４で全トラックのデータを書込むことが、ステップ３４６でコピーしたデータの全てを上書きするため、標準論理装置のトラックからログ装置の新しいトラックにデータをコピーする。
【００６７】
検査ステップ３４２において、書込まれる仮想装置のトラックに対応するポインタが標準論理装置を指差していないと判断された場合、制御はステップ３４２から検査ステップ３５６に移行し、ここでは複数の仮想装置が標準論理装置に確立されているか否か判断される。ＮＯの場合、制御はステップ３５６からステップ３５８に移行し、ここではログ装置のトラックに対応する通常の書込動作が行なわれる。検査ステップ３５６において、一または複数の仮想装置が標準論理装置に確立されていると判断された場合、制御はステップ３５６からステップ３６２に移行し、ここではログ装置からのフリートラックが得られる。
【００６８】
ステップ３６２の後はステップ３６４であり、ここでは書込まれる仮想装置に対応するトラックのデータが、ステップ３６２で得られたトラックにコピーされる。ステップ３６４の後はステップ３６６であり、仮想装置ポインタが、新しいトラックを指差すように調整される。１つの実施形態では書込まれる仮想装置に対応するポインタは、新しいトラックを指差すようになされる。これに代えて、書込まれる仮想装置に対応するポインタを変更しないことも可能であり、代わりに、ステップ３６６でトラックを指差す他の仮想装置の全てに対応する全てのポインタを調整できる。
【００６９】
ステップ３６６の後はステップ３６８であり、ここではログ装置のトラックに対応する仮想装置マップビットが修正される。ログ装置トラックについて、仮想装置マップビットは、どの仮想装置が各トラックを指差すかを示すために使用可能であり、ここでは１つの実施形態において、１６ビットの仮想装置マップビットがあり、各ビットは、特定の仮想装置に対応する。このようにステップ３５６における検査は、トラックに対応する仮想装置マップビットを検査できる。
【００７０】
ステップ３６８の後はステップ３６９であり、ここでは書込が実行される。ステップ３６２で得られたトラックに、または書込まれる仮想装置によって最初に指差されるトラックに書込が実行されるか否かは、ポインタがステップ３６６でどのように調整されるかに依存することを注記しておく。しかし、全ての場合、データは、データが書込まれる仮想装置によって指差されたトラックに書込まれる。ステップ３６９の後で本処理が完了する。
【００７１】
図１５に示すように、フローチャート３７０は、仮想装置の削除（すなわち排除）に対応して行なわれるステップを示す。一旦、仮想装置が確立され、意図した目的に使用されると、仮想装置を削除することが望ましいことがある。本処理は第１ステップ３７２で開始し、ここではポインタは、仮想装置の第１トラックを指差すように設定されている。仮想装置は、仮想装置に対応する各トラックを検査することによって削除される。
【００７２】
ステップ３７２の後はステップ３７４であり、ここでは検査されている仮想装置のトラックが標準論理装置を指差すか否か判断される。ＹＥＳの場合、制御はステップ３７４からステップ３７６に移行し、削除される仮想装置に対応した標準論理装置のトラックの保護ビットをクリアする。ステップ３７６の後はステップ３７８であり、ここではポインタは、次のトラックを検査することによって処理を続けるために仮想装置の次のトラックを指差す。ステップ３７８の後はステップ３８２であり、ここでは処理が完了したか（すなわち仮想装置の全てのトラックが処理されているか）否か判断される。ＮＯの場合、制御はステップ３８２から上述した検査ステップ３７４に移行する。
【００７３】
検査ステップ３７４において、検査されている仮想装置のトラックが標準論理装置を指差していないと判断された場合、制御はステップ３７４からステップ３８４に移行し、ここでは削除される仮想装置に対応するログ装置のトラックの仮想装置マップビットがクリアされる。ログ装置の各トラックは、どの仮想装置がログ装置のトラックを使用するかを示す１組の仮想装置マップビットを具備できる。このようにステップ３８４では、削除される仮想装置に対応する仮想装置マップビットがクリアされる。
【００７４】
ステップ３８４の後は検査ステップ３８６であり、ここではステップ３８４でクリアされたビットがトラックに対応して設定された最後の仮想装置マップビットであったか否か判断される。換言すれば、検査ステップ３８６は、ログ装置上のトラックを使用する他の仮想装置があるか否かを判断する。検査ステップ３８６では、最後の仮想装置マップビットがステップ３８４でクリアされたと判断された場合には（従って他の仮想装置がトラックを使用していない）、制御はステップ３８６からステップ３８８に移行し、ここでは別に議論されるように、ログ装置のトラックが、ログ装置のトラックのフリーリストに戻される。ステップ３８８の後、または上述したように、ステップ３８４でクリアされたビットが、ログ装置のトラックの最後の仮想装置マップビットではないと判断された場合のステップ３８６の後は、ステップ３７８であり、ここでは仮想装置の次のトラックは、後の検査のために指差される。一旦、仮想装置に対応するトラックが全て処理されると、テーブルと仮想装置に関連した他のデータ構造もまた削除できるが、幾つかの実施形態では仮想装置が確立解除後で仮想装置がホストによって使用可能にされていない限り、テーブル
と仮想装置からの他のデータ構造は、維持できる。
【００７５】
幾つかの例では、データの連続またはほぼ連続バックアップのための機構を提供することが望ましいことがある。もちろん上述したシステムは、各時間インクリメントＴで新しい仮想装置を単に生成することによる機能を提供でき、ここではＴは、比較的短い時間である。同様にデータの各書込の際に、新しい仮想装置を生成できる。しかし、相当数の新しい仮想装置を生成することは、望ましくないことがある方法において、相当量のオーバーヘッドと記憶領域を消費するであろう。
【００７６】
図１６に示すように、ダイアグラム４００は、図１〜図１５に対応して上述した仮想装置と同様であるが、データの連続またはほぼ連続のバックアップを容易にする多くの方法（下で議論する）において異なる連続バックアップ（ＣＢ）仮想装置４０２を示す。連続バックアップ仮想装置４０２は、複数のトラックに対応する標準論理装置４０４へのポインタを含み、その結果、任意の特定トラックに対応して、連続バックアップ仮想装置４０２が標準論理装置４０４の対応するトラックを指差す場合、対応するトラックは、連続バックアップ仮想装置４０２の生成から変更されていない。この点において、連続バックアップ仮想装置４０２は、図１〜図１５に対応して上述した仮想装置と同様である。トラックのほか、任意のサブセクションが、ここで記述されるシステムを実施するために使用できることを注記しておく。従ってトラックが言及されているが、可変サイズを含む別のサイズを有した他の単位のデータが使用されることがあることは、続く議論に対応して理解されなければならない。
【００７７】
連続バックアップ仮想装置４０２は、複数の対応するトラックに対応するログ装置４０６へのポインタを更に含む。ログ装置４０６は、連続バックアップ仮想装置４０２の生成から変化するトラックに対応するデータを含む。しかし、ログ装置４０６に対応して使用される内容とデータ構造は、図１〜図１５に対応して上述したものとは異なる。ログ装置４０６は、一層詳細に下で議論する。
【００７８】
ダイアグラム４００は、図１に示されるディスクアダプタユニット３８ａ〜３８ｃとホストアダプタ２８ａ〜２８ｃによってなされた入力と出力要求のような、他のモジュール間の入出力処理を扱うＩ／Ｏモジュール４０８を更に示す。Ｉ／Ｏモジュール４０８の動作は、一層詳細に以降に記述される。
【００７９】
Ｉ／Ｏモジュール４０８は、サイクルカウンタ４１２および／またはタイマ４１４からのデータを提供される。サイクルカウンタ４１２および／またはタイマ４１４の使用は、以下で詳述する。随意に、サイクルカウンタ４１２および／またはタイマ４１４は、複数の記憶装置（すなわち一貫性群（ｃｏｎｓｉｓｔｅｎｃｙ  ｇｒｏｕｐ））に対応して記憶装置を同期させるために使用できる外部処理４１６によって制御できる。これも以下で詳述する。
【００８０】
図１７に示すように、ログ装置４０６にデータを記憶するために使用できるデータ構造４５０が示される。データ構造４５０は、装置情報フィールド４５２を含む。装置情報フィールドは、装置識別子、シリンダ、ヘッド、および長さ識別子のような装置情報と、トラックＩＤテーブルとを含む。もちろん異なる実施形態に対応しては、異なる装置情報が装置情報フィールド４５２に提供できる。
【００８１】
データ構造４５０は、タイマフィールド４５４および／またはサイクルカウンタフィールド４５６を更に含み得る。タイマフィールド４５４は、図１６のダイアグラム４００に対応して上述したタイマデータ要素４１４に対応できる。同様にサイクルカウンタフィールド４５６は、図１６のダイアグラム４００のサイクルカウンタデータ要素４１２に対応
できる。フィールド４５４，４５６に提供される値は、データ構造４５０に対応するデータの例がそれぞれ生成される時点の対応するデータ要素４１２，４１４の値である。これは事実上、タイムスタンプである。
【００８２】
データフィールド４６２は、ログ装置４０６（ユーザによって書込まれるデータ）に記憶されている特定のデータに対応する。本実施形態ではデータフィールド４６２は、各要素を提供されるデータ量が変わるように可変サイズを具備できる。本実施形態ではデータフィールド４６２に提供されるデータは、複数のトラックには及ばず、従って単一のトラックよりも大きくはない。データ構造４５０は、後述のようにデータ要素の二重リンクリストを生成するための順方向ポインタフィールド４６４と逆方向ポインタフィールド４６６を更に含む。
【００８３】
図１８に示すように、ログ装置４０６は、複数の二重リンクリスト４８２〜４８４を備えるように示される。リンクリスト４８２〜４８４の各々は、一または複数のデータ要素を含み、各々は、図１７に示され、上述したような構造を具備する。本実施形態ではリンクリスト４８２〜４８４の各々は、標準論理装置４０４の特定トラックに（従って連続バックアップ仮想装置４０２の特定トラックに）対応する。もちろん単独リンクリストのような他のデータ構造が使用可能である。連続バックアップ仮想装置４０２の生成からデータが特定トラックに書込まれていない例では、対応するリンクリストは、ログ装置４０６に記憶されていないであろう。ＮＯの場合、連続バックアップ仮想装置４０２における適切なトラック入力は、リンクリスト４８２〜４８４の各々の第１要素を指差す。本実施形態ではリンクリスト４８２〜４８４の各々の第１要素は、直前に書込まれた要素であり、次の要素は、次に直前に書込まれた要素である。もちろん任意の適切な要素の構成を使用できる。後述するようにリンクリスト４８２〜４８４の各々の各要素は、一部的なトラックのデータを含み得る。このようにリンクリスト４８２〜４８４の一または複数が、全トラックのデータを含まないことがある。
【００８４】
図１９に示すように、フローチャート５００は、ここで記述されるシステムにかかるデータ書込動作に対応して行なわれるステップを示す。本処理は第１検査ステップ５０２で開始し、ここでは書込まれるデータが、特定トラックに対応する第１データであるか否か（すなわち連続バックアップを開始してから、前の書込が行なわなかったか）が判断される。書込まれるデータが第１書込ではない場合、制御はステップ５０２からステップ５０４に移行し、ここではサイクルカウンタ４１２の現在値が、データが加えられるリンクリストの直前のデータ要素に対応するサイクルカウンタの値に等しいか否か判断される。本実施形態では直前の要素が連続バックアップ仮想装置４０２によって指差される。このように特定トラックに対応する書込について、ログ装置４０６におけるリンクリスト４８２〜４８４の対応する１つにおける第１要素は、サイクルカウンタフィールド４５６がサイクルカウンタデータ要素４１２に記憶された値に等しい値を含むか否かを確かめるために検査される。本実施形態では同一のサイクルカウンタ値である間に生じる書込動作は、同時に生じたと考えられる。従って連続バックアップの粒度は、サイクルカウンタの更新間の時間である。サイクルカウンタの更新は、以下で詳述する。
【００８５】
検査ステップ５０４において、サイクルカウンタの現在値が、データは書込まれるリンクリスト４８２〜４８４の１つの直前のデータ要素と共に記憶されたサイクルカウンタの値に等しいと判断された場合、制御はステップ５０４から検査ステップ５０６に移行し、行なわれる現在の書込が、直前のデータ要素のデータフィールド４６２内に適合するデータを含むか否か（すなわち第２書込動作が第１データ書込動作からのデータの部分集合であるか否か）を判断する。後述するようにデータフィールド４６２は、可変長であり、トラックの一部のみであることもあり、ないこともある。従ってステップ５０６の検査では、現在書込まれているデータが、直前のデータ要素のデータフィールド４６２を上書きで
きたか否か判断される。ＹＥＳの場合、制御は検査ステップ５０６からステップ５０７に移行し、ここではデータが上書きされる。ステップ５０７の後はステップ５０８であり、ここでは装置情報フィールドは、ステップ５０７における上書きを反映するために更新される（たとえばトラックｉｄテーブルが更新される）。ステップ５０８の後で本処理が完了する。
【００８６】
検査ステップ５０６において、現在書込まれているデータが、トラックに対応する直前のデータ要素のデータフィールド４６２内に適合しないと判断された場合、または検査ステップ５０４において、サイクルカウンタの現在値が、直前のデータ要素のサイクルカウンタフィールド４５６における値とは等しくないと判断された場合、制御はステップ５１２に移行し、新データ要素が割当てられる。ステップ５１２で新データ要素を割当てることは、データ構造４５０に対応して十分な領域を得ることを含む。データ構造４５０のサイズが、データフィールド４６２に書込まれるデータ量の関数である場合があることを注記しておく。本実施形態ではこれは図１０の割当方法と異なることがあり、それはデータに対応する固定サイズを仮定できる。一方、図１０の方法は、ステップ５１２に対応して使用される可変データサイズを提供するように構成できるが、幾つかの場合、同一のトラックに対応する前の割当てが十分に大きくない場合データを記憶するためにログ装置に新しいトラックを割当てることは有用である場合がある。
【００８７】
ステップ５１２の後はステップ５１４であり、ここでは新しく割当てられたデータ要素は、フィールド４６２にデータを書込むことによって、同様に装置情報フィールド４５２、タイマフィールド４５４、およびサイクルカウントフィールド４５６に対応する情報を提供することによって占められる。ステップ５１４の後はステップ５１６であり、ここでは順方向ポインタフィールド４６４は、リスト４８２〜４８４（またはリストが空の場合、ｎｕｌｌ）のうちの１つの第１データ要素を指差すように設定され、逆方向ポインタフィールド４６６は、ｎｕｌｌに等しくなるように設定される。ステップ５１６の後はステップ５１８であり、ここでは他のポインタは、適切なように調整される（たとえばリストの第１データ要素の逆方向ポインタフィールド４６６は、新しく割当てられたデータ要素を指差すように設定される）。ステップ５１８の後はステップ５２２であり、ここでは連続バックアップ仮想装置４０２からの適切なテーブルは、新しく割当てられたデータ要素を指差すように設定される。ステップ５２２の後で本処理が完了する。
【００８８】
検査ステップ５０２において、書込まれるデータが、連続バックアップを開始してから書込まれた第１データであると判断された場合、制御はステップ５０２からステップ５２４に移行し、ここでは全トラックのデータに対応する領域が割当てられる。本実施形態では標準論理装置４０４への第１書込は、書込に対応する単なるデータ量ではなく、たとえばステップ５１２，５１４で行われるように、全トラックのデータをコピーさせる。他の実施形態では異なる量のデータが、特定トラックに対応する第１書込の際にさえ、標準論理装置４０４からコピーできる。ステップ５２４の後はステップ５２６であり、ここでは全トラックのデータがコピーされる。ステップ５２６でコピーされるデータは、対応する任意の修正に先立つ標準論理装置４０４からのデータであることを注記しておく。ステップ５２６の後は上述したステップ５１２である。
【００８９】
書込がホストに受入れられ承認後、図１９のフローチャート５００に示す処理が行なわれることが可能であることを注記しておく。これを行なうことは、より便利な時間に（たとえば記憶装置がそれほど忙しくない場合）処理が行なわれることを可能にし、ホスト書込が直ちに認められることを可能にすることによって如何なる相当の応答時間の不利益も回避する。
【００９０】
図２０に示すように、フローチャート５４０は、現在のデータを読取る読取動作（すな
わち記憶装置の現在の状態のデータを読取ること）に対応して行なわれるステップを示す。本処理は第１ステップ５４２で開始し、ここでは連続バックアップ仮想装置４０２が、標準論理装置４０４を指差すか否か判断される。ＹＥＳの場合、制御は検査ステップ５４２からステップ５４４に移行し、ここでは標準論理装置が、読取られるデータを検索するために使用される。ステップ５４４の後で本処理が完了する。
【００９１】
検査ステップ５４２において、連続バックアップ仮想装置４０２が標準論理装置４０４を指差していないと判断された場合、制御は検査ステップ５４２からステップ５４６に移行し、ここではログ装置４０６のリンクリストを通じて反復するために使用されるポインタ（反復ポインタ）が、処理されるリスト（すなわちデータが読取られるトラックに対応するリスト）の第１要素を指差すように設定される。ステップ５４６の後はステップ５４８であり、ここでは反復ポインタによって指差される要素からのデータは、読取られるデータを受入れるために使用される変数またはデータ領域に書込まれる。データを読取るためには、より最近のデータに先に与えて、逆時間順でデータ要素を処理することが必要であることを注記しておく。リンクリスト４８２〜４８４の要素は、それぞれ、必ずしもデータの全トラックを含む必要がないため、読取動作に対応して要求されているデータを構築する複数のデータ要素を通じて詳細検討することが必要である場合がある。
【００９２】
ステップ５４８の後は検査ステップ５５２であり、ここでは要求データが全て検索されているか否か判断される。ＹＥＳの場合、本処理が完了する。ＮＯの場合、制御は検査ステップ５５２からステップ５５４に移行し、ここではリストの要素を通じて反復するために使用されるポインタは、次の要素を指差すようになされる（すなわち順方向ポインタフィールド４６４を使用して）。ステップ５５４の後は検査ステップ５５６であり、ここではリストの要素を通じて反復するために使用されるポインタは、リストの終端を通過しているか（すなわちｎｕｌｌに等しい）否か判断される。ＮＯの場合、上述したように、制御は検査ステップ５５６からステップ５４８に移行し、付加的なデータに書込む。ＮＯの場合、制御は、検査ステップ５５６からステップ５５８に移行し、連続バックアップ仮想装置４０２が生成後、第１書込に生成されたベーストラックから標準論理装置４０４へのデータを、残りの（欠落した）データに書込む。ステップ５５８でデータを使用することは、連続バックアップ仮想装置４０２が生成後、対応するデータが書込まれなかったことを意味する。ステップ５５８の後で本処理が完了する。
【００９３】
図２１に示すように、フローチャート５７０は、それが特定の時間（目標時刻）に存在したときのデータを得るべく、記憶装置の前の状態（前の時間）からのデータを読取ることに対応して行なわれるステップを示す。ここで記述されるシステムは、データの連続またはほぼ連続バックアップを提供でき、その結果、任意の時点からの（システム起動以来の）データが読取可能である。フローチャート５７０によって示されるステップは、特定時点の書込まれるデータを読取ること（復元）に対応する。
【００９４】
本処理は第１検査ステップ５７２で開始し、ここではデータが読取られるトラックは、標準論理装置４０４を指差す連続バックアップ仮想装置４０２における入力を有しているか否か判断される。後述するように特定トラックに対応する入力が標準論理装置４０４を指差す場合、特定トラックは、システム起動から書込まれていない。検査ステップ５７２において、要求データが標準論理装置４０４にない（すなわち連続バックアップ仮想装置４０２における対応する入力が標準論理装置４０４を指差していない）と判断された場合、制御は検査ステップ５７２からステップ５７４に移行し、ここではリンクリスト４８２〜４８４のうちの１つの要素を通じて反復するために使用されるポインタ（すなわち反復ポインタ）は、リストの第１要素を指差すように設定される。
【００９５】
ステップ５７４の後は、検査ステップ５７６であり、ここでは反復ポインタによって指
差されるデータ要素が、目標時刻の後に書込まれるデータに対応するか否か判断される。タイマフィールド４５４またはサイクルカウンタフィールド４５６のいずれかは、対象の特定時点を指定するために、および、現在データが目標時刻の後であるか否かを判断するために使用できることを注記しておく。タイマおよびサイクルカウンタの使用は、以下で詳述する。
【００９６】
検査ステップ５７６において、リストの要素を通じて反復するために使用されるポインタによって指差されるデータ要素が、目標時刻の後で書込まれるデータに対応すると判断された場合、制御は検査ステップ５７６からステップ５７８に移行し、ここでは反復ポインタが、次のデータ要素を指差すようになされる。ステップ５７８の後は、検査ステップ５８２であり、反復ポインタが、リストの終端を指差すか否かを判断する。ＮＯの場合、制御は上述した、検査ステップ５８２から検査ステップ５７６に移行する。
【００９７】
検査ステップ５８２において、反復ポインタが、要素のリストの終端を指差す（すなわちｎｕｌｌを指差す）と判断された場合、制御は検査ステップ５８２からステップ５８４に移行し、ここでは標準論理装置４０４が、要求データを与えるために使用される。そのような状況では、書込動作が全て目標時刻の後で生じ、その結果、所望のデータが、標準論理装置４０４に記憶される。ステップ５８４の後で本処理が完了する。連続バックアップ仮想装置４０２における入力が標準論理装置４０４を指差すと判断された場合、ステップ５８４もまた検査ステップ５７２から至ったものであり、システム起動から特定トラックへの書込が生じていないことを示すことを注記しておく。
【００９８】
検査ステップ５７６において、反復ポインタが目標時刻の後ではないデータを指差すと判断された場合、制御は検査ステップ５７６からステップ５８８に移行し、ここでは反復ポインタによって指差される要素からのデータは、読取られるデータを受入れるために使用される変数またはデータ領域に書込むために使用される。データを読取るために、より最近のデータに先に与えて、逆時間順でデータ要素を処理する必要があることを注記しておく。しかし、リンクリスト４８２〜４８４の要素は、それぞれ、必ずしもデータの全トラックを含んでいないため、読取動作に対応して要求されているデータを構築する複数のデータ要素を通じて詳細検討する必要がある場合がある。
【００９９】
ステップ５８８の後は検査ステップ５９２であり、ここでは要求データが全て検索されているか否か判断される。ＹＥＳの場合、本処理が完了する。ＮＯの場合、制御は検査ステップ５９２からステップ５９４に移行し、ここでは反復ポインタが、次の要素を指差すようになされる（すなわち順方向ポインタフィールド４６４を使用して）。ステップ５９４の後は検査ステップ５９６であり、ここでは反復ポインタが、リストの終端を通過しているか（すなわちｎｕｌｌに等しい）否か判断される。ＮＯの場合、上述したように、制御は検査ステップ５９６からステップ５８８に移行し、いずれかの付加的なデータに書込む。ＮＯの場合、制御は検査ステップ５９６からステップ５９８に移行し、連続バックアップ仮想装置４０２が生成後、標準論理装置４０４への第１書込で生成されたベーストラックからのデータで残りの（欠落した）データに書込む。ステップ５９８でデータを使用することは、連続バックアップ仮想装置４０２が生成後で書込まれた対応するデータがなかったことを意味する。ステップ５９８の後で本処理が完了する。
【０１００】
図２２に示すように、フローチャート６１０は、対象の特定時点（目標時刻）における状態にデータを戻すこと、そして状況によって、あたかもそれが先の時点において書込まれたかのように、戻されたデータに新データを書込むか、または新データを挿入することに対応して行なわれるステップを示す。本処理は第１ステップ６１２で開始し、ここではトラックの全てを通じて反復するために使用されるポインタ（トラック反復ポインタ）は、連続バックアップ仮想装置４０２の第１トラックを指差すように設定される。ステップ
６１２の後は検査ステップ６１４であり、連続バックアップ仮想装置４０２に対応する入力は、標準論理装置４０４を指差すか否かを判断する。ＮＯの場合、制御は検査ステップ６１４からステップ６１６に移行し、ここではログ装置４０６の対応する要素を通じて反復するために使用されるポインタ（要素反復ポインタ）は、トラック反復ポインタによって指差される特定トラックに対応するリンクリストの最後（直前）の要素を指差すように設定される。
【０１０１】
ステップ６１６の後は検査ステップ６１８であり、要素反復ポインタが、目標時刻（所望の復元時間）の後である時間を有する要素を指差すか否かを判断する。ＹＥＳの場合、制御は検査ステップ６１８からステップ６２２に移行し、ここでは要素反復ポインタによって指差される要素が配置される（すなわち要素によって使用されるメモリは、使用されるメモリ管理方法に対応する或る方法における使用に対応して解除される）。ステップ６２２の後はステップ６２４であり、適切なポインタが調整される。ステップ６２４では、要素反復ポインタは、次の直前の要素を指差すようになされる。更にデータがステップ６２２で配置される場合、連続バックアップ仮想装置４０２、ログ装置４０６などに対応するデータ構造によって使用されるポインタが調整可能である。しかし、一層詳細に下で議論するように、代替の実施形態に対応しては、データが配置されないこともある。ステップ６２４に続いて、制御は次の反復のためのステップ６１８に戻る。目標時刻が、サイクルカウンタに対応する特定値またはタイマに対応する特定値のいずれかの点から表現できることを注記しておく。
【０１０２】
代替の実施形態は、要素反復ポインタが、所望の復元時間の後である時間を有する要素を指差すときの、ステップ６１８から直接ステップ６２４への経路６２５によって示される。本実施形態では復元時間の後であるデータは廃棄されない。
【０１０３】
検査ステップ６１８において、要素反復ポインタによって指差された要素が目標時刻の後ではない関連する時間を有すると判断された場合、制御は検査ステップ６１８からステップ６２６に移行し、ここではデータは、標準論理装置４０４に書き戻されるデータに対応して蓄積され、標準論理装置４０４を目標時刻における状態に戻させる。ステップ６２６でデータを蓄積することは、書込まれる新データ（もしあれば）で開始し、次に、たとえば図２１のフローチャート５７０に対応して示されるような処理を使用して、いずれかのギャップを埋める（たとえば新データを書込まれていないトラックの一部）ことを含み得る。ステップ６２６の後はステップ６２７であり、ここではステップ６２６で蓄積されたデータは、標準論理装置４０４に書込まれる。ステップ６２７における書込は、従来の書込であることが可能であるか、または連続バックアップの書込であることが可能である。ステップ６２７の後は上述したステップ６２８である。
【０１０４】
一旦、連続バックアップ仮想装置４０２が特定の状態に復元されると、システムへの新データの書込を提供することを含む動作を継続できることを注記しておく。幾つかの例では、特定の目標時刻で新データを挿入するか（新データを書込む）、または特定の目標時刻からのデータを削除することが望ましいことがある。これらの２つの動作は、ユーザがデータを挿入することを可能にするように共に使用可能であり、その結果を検査し、続いて、挿入されたデータを削除できることを注記しておく。たとえばユーザは、午後５：００にデータベース中のデータ矛盾を発見し、午後３：００に付加的なデータ（または異なるデータ）の書込をシミュレートすることによって矛盾にアドレスすることを試みることが可能である。しかし、それが問題を解決しない場合、ユーザは、シミュレートした書込を取消し、何か他のことを試みることを望むことがある。もちろん異なる時点においてデータを挿入と削除する機能は、任意数の用途を具備できる。
【０１０５】
図２３に示すように、フローチャート６５０は、特定の目標時刻に新データを挿入する
（すなわちあたかもそれが、現在の時刻に先立つ、また続くデータ書込動作に先立つことがある特定の目標時刻で生じるかのように、データを書込む）か、または特定の目標時刻からのデータを削除することに対応して行なわれるステップを示す。フローチャート６５０に対応する処理は、第１検査ステップ６５２で開始し、ここでは連続バックアップ仮想装置４０２のためのトラックに対応する入力が、標準論理装置４０４を指差すか否か判断される。ＹＥＳの場合、制御は検査ステップ６５２から検査ステップ６５３に移行し、ここではデータの挿入が行なわれているか否か判断される。ＹＥＳの場合、制御はステップ６５３からステップ６５４に移行し、通常の書込動作が行なわれる。状況によってデータを削除する場合、連続バックアップ仮想装置４０２が標準論理装置４０４を指差していれば、削除するデータがないことを注記しておく。ステップ６５４の後で本処理が完了する。
【０１０６】
検査ステップ６５２において、連続バックアップ仮想装置４０２用のトラックが標準論理装置４０４を指差していないと判断された場合、制御は検査ステップ６５２からステップ６５６に移行し、ここでは要素反復ポインタは、トラックに対応する要素のリンクリストにおける第１要素を指差すようになされる。ステップ６５６の後は検査ステップ６５８であり、ここでは要素反復ポインタがリストの終端を過ぎて指差すか否か判断される。ＮＯの場合、制御は検査ステップ６５８から検査ステップ６６２に移行し、ここでは要素反復ポインタを指差すが、目標時刻の後で関連する時間を有する要素を指差すか否か判断される。ＹＥＳの場合、制御は検査ステップ６６２からステップ６６４に移行し、ここでは要素反復ポインタは、次の要素を指差すようになされる。ステップ６６４に続いて、制御は上述した検査ステップ６５８に移行する。
【０１０７】
検査ステップ６５８において、要素反復ポインタがリンクリストの終端を過ぎて指差すと判断される場合、または検査ステップ６６２において、要素反復ポインタが、目標時刻の後ではない関連する時間を有する要素を指差すと判断される場合、制御はステップ６６６に移行し、ここでは挿入されるデータに対応する新しい要素が加えられるか、または指差した要素が削除される。他の実施形態では削除される要素は、特にマークまたはタグ付け可能である（たとえば挿入時点に）か、または削除される要素を識別するために多くの技術のうちのいずれか１つが使用可能である。
【０１０８】
ステップ６６６の後はステップ６６８であり、ここではリンクリストのポインタは、新しい要素の追加、あるいは一または複数の要素の削除を提供するように調整される。ステップ６６８の後で本処理が完了する。
【０１０９】
データ要素を削除するか、または複数のデータ要素を加える場合、図２３のフローチャート６５０のステップのうちの幾つかまたは全てを反復して実行できることを注記しておく。たとえば特定の特性またはマークを有するデータの例を全て削除するために、フローチャート６５０のステップは、対象の個々のトラックに対応して実行できる。
【０１１０】
図２４に示すように、フローチャート６８０は、標準論理装置４０４から読取動作、または標準論理装置４０４への書込動作に対応して行なわれるステップを示す。一方、標準論理装置４０４は、先の時点に対応する状態に戻される。幾つかの実施形態では標準論理装置４０４に対応するＩ／Ｏ動作を全て保留できる。一方、復元が、上述したように、図２２のフローチャート６１０によって示される復元動作のように行なわれている。しかし、他の例では、Ｉ／Ｏ動作の保留は、受入れ難いことがあり、その場合、復元が行なわれている間のＩ／Ｏ動作を可能にすることが必要になる。
【０１１１】
フローチャート６８０に対応する処理は、検査ステップ６８２で開始し、ここではアクセスされているトラックを復元する必要があるか否かを判断する。幾つかの場合、アクセ
スされているトラックが既に復元されているか、またはトラックが修正されなかったので復元される必要がないことがある。如何なる場合も、検査ステップ６８２において、アクセスされているトラックが復元される必要がある（すなわちトラックが修正され、まだ復元されていない）と判断された場合、制御はステップ６８２からステップ６８４に移行し、ここでは復元動作がトラックに対応して行なわれる。ステップ６８４で行なわれる復元動作は、図２２のフローチャート６１０に対応して上述した復元動作と同様である。ステップ６８４の後は、または復元が必要ではない場合のステップ６８２の後は、ステップ６８６であり、ここでは通常の読取または書込動作は、標準論理装置の（今復元した）トラックに行なわれる。ステップ６８６の後で本処理が完了する。
【０１１２】
図２５に示すように、ダイアグラム７００は、図１６のダイアグラム４００に示された外部処理４１６に結合される複数の記憶装置７０２〜７０４を示す。記憶装置７０２〜７０４は、一貫性群の一部であることが可能である。外部処理４１６は、タイマ４１４および／またはサイクルカウンタ４１２を同期させることによって、記憶装置７０２〜７０４を同期させるために使用できる。本実施形態では同期は、タイマ４１４および／またはサイクルカウンタ４１２を更新するのに先立って一時的に書込動作を停止することによって行なわれることが可能である。これに代えて、外部処理４１６は、タイマ４１４および／またはサイクルカウンタ４１２を更新するのに先立って、記憶装置７０２〜７０４のための書込動作が静止するのを待機できる。
【０１１３】
ここで記述されるシステムの初期化は、単に連続バックアップ仮想装置４０２を生成し、サイクルカウンタ４１２とタイマ４１４を初期値に設定し、動作を開始することによって行なわれることが可能であることを注記しておく。外部処理が使用される実施形態４１６において、外部処理は、初期化され、複数の記憶装置に対応する連続バックアップ動作を同時に開始するために使用可能である。ＮＯの場合、外部処理４１６（または均等物）が使用されない実施形態ではサイクルカウンタ４１２および／またはタイマ４１４の更新は、入力と出力動作を扱う処理４０８を含む任意の適切な手段によって行なわれることが可能である。
【０１１４】
幾つかの場合、ホストによって書込まれる記憶装置とは異なる記憶装置に連続バックアップを提供することが望ましいことがある。ホストは、第１（ローカル）記憶装置に結合可能であり、第１記憶装置は、ここで記述されるようなデータの連続バックアップを維持する第２（リモート）記憶装置に結合できる。幾つかの実施形態では連続バックアップは、ローカル記憶装置とリモート記憶装置によって維持できる。一方、他の実施形態では連続バックアップは、リモート記憶装置のみによって維持可能である。
【０１１５】
図２６に示すように、ダイアグラム８２０は、ホスト８２２、ローカル記憶装置８２４、およびリモート記憶装置８２６の間の関係を示す。記憶装置８２４，８２６は、上述したように、記憶装置２４と同様であることが可能である。ホスト８２２は、ローカル記憶装置８２４からデータを読取り、ローカル記憶装置８２４にデータを書込む。ダイアグラム８２０は、単に１つのホスト８２２を示すが、当然のことながら、複数のホストが存在できる。ローカル記憶装置８２４からのデータは、それらの間のリンクを介してリモート記憶装置８２６に転送できる。１つのリンクのみが示されるが、記憶装置８２４，８２６間に付加的なリンクを具備でき、記憶装置８２４，８２６の１つまたは両方と他の記憶装置（図示略）との間にリンクを具備可能である。
【０１１６】
本実施形態ではホスト８２２からローカル記憶装置８２４に書込まれたデータは、図１９〜図２４に対応してここで記述されるもののようなリモート記憶装置８２６における処理を使用してリモート記憶装置８２６によって連続的にバックアップされる。幾つかの実施形態ではデータは、ローカル記憶装置８２４によって連続的にバックアップできる。一
方、他の実施形態ではデータは、リモート記憶装置８２６で単に連続的にバックアップされる。ここでは一層詳細に他で記述されるように、ホスト８２２によって書込まれたデータは、ローカル記憶装置８２４による特定のサイクル番号に関連する。ローカル記憶装置によって割当てられたサイクル番号は、図１７に対応して上述したサイクルカウンタフィールド４５６に対応する。次に、データと関連したサイクル番号は、リモート記憶装置８２６に送信され、それは連続バックアップを行なうための標準論理装置、連続バックアップ仮想装置、およびログ装置を有する。ホスト８２２によって書込まれるデータをサイクル番号に関連させること、および、ローカル記憶装置８２４からリモート記憶装置８２６にデータを転送することは、ここでは一層詳細に後述される。
【０１１７】
図２７に示すように、ダイアグラム８３０は、ここでは上で別に議論した連続バックアップ仮想装置４０２と同様の連続バックアップ（ＣＢ）仮想装置８３２を示す。連続バックアップ仮想装置８３２は、複数のトラックに対応する標準論理装置８３４へのポインタを含み、その結果、任意の特定トラックに対応しては、連続バックアップ仮想装置８３２が標準論理装置８３４の対応するトラックを指差す場合、対応するトラックは、連続バックアップ仮想装置８３２の生成から変更されていない。連続バックアップ仮想装置８３２は、複数の対応するトラックに対応するログ装置８３６へのポインタを更に含む。ログ装置８３６は、連続バックアップ仮想装置８３２の生成から変更されたトラックに対応するデータを含み、上述したようなログ装置４０６と同様である。連続バックアップ仮想装置８３２、標準論理装置８３４、およびログ装置８３６は全て、リモート記憶装置８２６上に具備可能である。
【０１１８】
ダイアグラム８３０は、連続バックアップ記憶装置用のリモート記憶装置８２６によって受信されたデータの受信と記憶を扱うＩ／Ｏモジュール８３８を更に示す。Ｉ／Ｏモジュール８３８の動作は、ここでは別に議論したＩ／Ｏモジュール４０８の動作と同様である。Ｉ／Ｏモジュール８３８には、リモート記憶装置８２６の一時記憶装置８４２に記憶されるデータが与えられる。一時記憶装置８４２は、たとえばリモート記憶装置８２６の揮発性メモリおよび／またはリモート記憶装置８２６の専用ディスク記憶領域を使用して実施できる。一時記憶装置８４２内のデータは、ここでは一層詳細に他で記述されるように、ローカル記憶装置８２４からリモート記憶装置８２６に提供される。
【０１１９】
次の議論は、ローカル記憶装置８２４上のデータを、リモート記憶装置８２６上に連続バックアップすることを提供することに関する。複数の実施形態は、適切な連続番号（サイクル番号）を有するデータがローカル記憶装置８２４からリモート記憶装置８２６に提供されることがある様々な方法に対応して、開示される。
【０１２０】
図２８に示すように、データの経路は、ホスト８２２からローカル記憶装置８２４とリモート記憶装置８２６まで示される。ホスト８２２からローカル記憶装置８２４に書込まれるデータは、ローカル記憶装置８２４のデータ要素８５１によって示されるように、ローカルに記憶できる。データをローカルに記憶することは、ローカル記憶装置８２４の論理記憶装置にデータを直接書込むこと、および／またはローカル記憶装置８２４における、ここで記述される連続バックアップ機能を提供することを含み得る。ホスト８２２によってローカル記憶装置８２４に書込まれるデータもまた、ローカル記憶装置８２４によってリモート記憶装置８２６に送信されるのに対応してローカル記憶装置８２４によって維持できる。
【０１２１】
ここで記述したシステムでは、ホスト８２２によるデータ書込（たとえばレコード、複数のレコード、トラックなど）は、それぞれ連続番号（サイクル番号）を割当てられる。連続番号は、書込に関連した適切なデータフィールドに提供できる。図２８では、ホスト８２２による書込は、連続番号Ｎを割当てられるように示される。連続番号Ｎを割当てら
れているホスト８２２によって行なわれる書込は、全てデータ８５２の単一の塊に集められる。塊８５２は、ほぼ同時に生じるホスト８２２による複数の互いに別個の書込を表わす。
【０１２２】
一般に、ローカル記憶装置８２４は、１つの連続番号の塊を蓄積する。一方、以前に蓄積された塊（前の連続番号を有する）をリモート記憶装置８２６に送信する。このようにローカル記憶装置８２４は、連続番号Ｎを割当てられたホスト８２２からの書込を蓄積する。一方、前の連続番号（Ｎ−１）に対応して生じた書込は、ローカル記憶装置８２４によってリモート記憶装置８２６に送信される。塊８５４は、リモート記憶装置８２６にまだ送信されていない連続番号Ｎ−１を割当てられたホスト８２２からの書込を表わす。
【０１２３】
リモート記憶装置８２６は、連続番号Ｎ−１を割当てられた書込に対応する塊８５４からデータを受信し、連続番号Ｎ−１を有したホスト書込の新しい塊８５６を構築する。リモート記憶装置８２６が塊８５４からデータを全て受信した場合、ローカル記憶装置８２４は、塊８５６に対応するＮ−１の連続番号を割当てられたデータを全てコミットするためにリモート記憶装置８２６にコミットメッセージを送信する。一般に、一旦、特定の連続番号に対応する塊がコミットされれば、塊は、リモート記憶装置８２６の論理記憶装置に書込まれ、および／またはリモート記憶装置８２６における連続バックアップを提供するために使用できる。これは図２８において、連続番号Ｎ−２を割当てられた書込に対応する塊８５８と共に示される（すなわちホスト８２２によるローカル記憶装置８２６への書込に対応して使用されている現在の連続番号の２つ前）。
【０１２４】
図２８では、塊８５８は、データ要素８６２に書込まれるように示され、リモート記憶装置８２６におけるディスク記憶および／または連続バックアップを表わす。このようにリモート記憶装置８２６は、連続番号Ｎ−１に対応する塊８５６を受信と蓄積する。一方、前の連続番号（Ｎ−２）に対応する塊８５８は、リモート記憶装置８２６のディスク記憶に書込まれ、および／またはデータ要素８６２によって示されるようなリモート連続バックアップに対応して使用される。
【０１２５】
このように動作では、ホスト８２２は、データ要素８５１にローカルに記憶されるデータをローカル記憶装置８２４に書込、場合によっては、ローカル記憶装置８２４によって連続的にバックアップされ、塊８５２に蓄積される。一旦、特定の連続番号に対応するデータが全て蓄積されると（ここでは他で記述される）、ローカル記憶装置８２４は、連続番号をインクリメントする。現在の連続番号よりも小さいものに対応する塊８５４のデータは、ローカル記憶装置８２４からリモート記憶装置８２６に転送される。塊８５８は、リモート記憶装置８２６にメッセージを送信するローカル記憶装置８２４によってコミットされた連続番号に対応するデータに対応する。塊８５８のデータは、リモート記憶装置８２６のディスク記憶装置に書込まれ、および／またはリモート記憶装置８２６によって連続的にバックアップされる。
【０１２６】
図２９に示すように、ダイアグラム８７０は、塊８５２，８５４を構築と維持するために使用される要素を示す。ローカル記憶装置８２４上に設けられた標準論理装置８７２は、ホスト８２２によって書込まれるデータを含み、図２８のデータ要素８５１に対応する。標準論理装置８７２は、ホスト８２２によってローカル記憶装置８２４に書込まれるデータを含む。
【０１２７】
ポインタ８７４，８７６の２つのリンクリストは、標準論理装置８７２に対応して使用される。リンクリスト８７４は、複数のポインタ８８１〜８８５を含み、各々は、ローカル記憶装置８２４に対応して使用されるデータの一部を指差す。データは、ローカル記憶装置８２４のキャッシュメモリ８８８に提供できる。同様にリンクリスト８７６は、複数
のポインタ８９１〜８９５を含み、各々は、キャッシュメモリ８８８に提供されるデータの一部を指差す。キャッシュメモリ８８８は、複数のキャッシュスロット９０２〜９０４を含み、それは標準論理装置８７２への書込に対応して使用され、同時にリンクリスト８７４，８７６に対応して使用できる。
【０１２８】
リンクリスト８７４，８７６の各々は、データ８５２，８５４の塊のうちの１つに使用可能であり、その結果、たとえばリンクリスト８７４は、連続番号Ｎに対応するデータ８５２の塊に対応できる。一方、リンクリスト８７６は、連続番号Ｎ−１に対応するデータ８５４の塊に対応できる。このようにデータがホスト８２２によってローカル記憶装置８２４に書込まれる場合、データは、キャッシュ８８８に与えられ、そして或る場合には（ここでは他で記述される）、リンクリスト８７４の適切なポインタが生成される。後述のようにデータが標準論理装置８７２にデステージされ、データがもはやリンクリスト８７４のポインタ８８１〜８８５のうちの１つによっては指差されないようになるまでデータは、キャッシュ８８８から削除されないであろうということを注記しておく。
【０１２９】
本実施形態ではリンクリスト８７４，８７６のうちの一方は「アクティブである」と考えられ、他方は「非アクティブである」と考えられる。このようにたとえば連続番号Ｎが偶数の場合、リンクリスト８７４がアクティブであり、一方リンクリスト８７６は非アクティブであることが可能である。リンクリスト８７４，８７６のうちのアクティブな方は、ホスト８２２からの書込を扱う。一方、リンクリスト８７４，８７６のうちの非アクティブな方は、ローカル記憶装置８２４からリモート記憶装置８２６に送信されるデータに対応する。ホスト８２２によって書込まれるデータが、リンクリスト８７４，８７６のうちのアクティブな方（連続番号Ｎ用）を使用して蓄積される。一方、リンクリスト８７４，８７６のうちの非アクティブな方（前の連続番号Ｎ−１用）に対応するデータは、ローカル記憶装置８２４からリモート記憶装置８２６に送信される。
【０１３０】
一旦、リンクリスト８７４，８７６のうちの１つにおけるポインタの特定の１つに対応するデータがリモート記憶装置８２６に送信されると、ポインタの特定の１つは、リンクリスト８７４，８７６の適切な１つから削除できる。更にデータは、キャッシュ８８８からの削除のためにマークを付けられることが可能であり（すなわちスロットは、後の無関係な使用のためにスロットのプールに復帰できる）、スロットにおけるデータは、ＮＯの場合別の目的に必要とされない（たとえば標準論理装置８７２にデステージされる）。機構は、全ての装置がもはやデータを使用しなくなるまでデータがキャッシュ８８８から削除されないことを保証するために使用できる。
【０１３１】
図３０に示すように、スロット９２０は、キャッシュ８８８のスロット９０２〜９０４のうちの１つのように、ヘッダ９２２とデータ９２４を含む。ヘッダ９２２は、スロット９２０を管理するために本システムによって使用されるオーバーヘッド情報に対応する。データ９２４は、スロット９２０に（一時的に）記憶されている対応するデータである。ヘッダ９２２内の情報は、ローカル記憶装置のディスク記憶装置に戻すポインタ、タイムスタンプ８２４などを含む。
【０１３２】
ヘッダ９２２は、ここで記述されるシステムに対応して使用されるキャッシュスタンプ９２６を更に含む。本実施形態ではキャッシュスタンプ９２６は、８バイトである。そのうちの２バイトは、スロット９２０がここで記述されるシステムによって使用されているか否かを示す「パスワード」である。他の実施形態ではパスワードは、１バイトである。一方、次のバイトは、パッドに使用できる。後述のように特定値に等しい２バイトのパスワード（または場合に応じて１バイト）は、リンクリスト８７４，８７６のうちの少なくとも１つの入力によってスロット９２０が指差されることを示す。特定値とは等しくないパスワードは、リンクリスト８７４，８７６の入力によってスロット９２０が指差されて
いないことを示す。パスワードの使用は、ここでは他で記述される。
【０１３３】
キャッシュスタンプ９２６は、スロット９２０のデータ９２４の連続番号（たとえばＮ，Ｎ−１，Ｎ−２など）を示す２バイトのフィールドを更に含む。後述のようにキャッシュスタンプ９２６の連続番号フィールドは、ここで記述される処理を容易にするために使用できる。キャッシュスタンプ９２６の残りの４バイトは、後述のようにポインタに使用できる。もちろんパスワードが、リスト８７４，８７６のうちの１つにおける少なくとも１つの入力によってスロット９２０が指差されることを示す特定値に等しい場合だけ、連続番号の２バイトとポインタの４バイトは有効である。
【０１３４】
図３１に示すように、フローチャート９４０は、書込動作を行なうホスト８２２に対応して、ローカル記憶装置８２４によって行なわれるステップを示す。もちろんホスト８２２が書込を行なう場合、本処理はデータがリモート記憶装置８２６によって連続的にバックアップされるか否かに関係なく、通常の方法で書込を扱うように生じる。
【０１３５】
本処理は第１ステップ９４２で開始し、ここでは書込に対応するスロットがロックされる。本実施形態ではキャッシュ８８８のスロット９０２〜９０４の各々は、標準論理装置８７２上のデータのトラックに対応する。ステップ９４２でスロットをロックすることは、付加的な処理が、フローチャート９４０のステップに対応するローカル記憶装置８２４によって行なわれる処理中の関連するスロット上で動作することを防止する。
【０１３６】
ステップ９４２の後はステップ９４４であり、Ｎに対応する値に対応して、連続番号が設定される。後述するようにステップ９４４で得られる連続番号に対応する値は、ローカル記憶装置８２４によって行なわれる書込動作全体の間、維持される。一方、スロットは、ロックされる。後述するように連続番号は、書込が属するデータ８５２，８５４の塊のうちの１つを設定するために各書込に割当てられる。ホスト８２２によって行なわれる書込は、現在の連続番号を割当てられる。単一の書込動作が同一の連続番号全体を維持することは有用である。
【０１３７】
ステップ９４４の後は検査ステップ９４６であり、キャッシュスロットのパスワードフィールドが有効であるか否かを判断する。上述したように、ここで記述されるシステムは、キャッシュスロットが既にポインタ８７４，８７６のリンクリストのうちの１つにあることを示すために、パスワードフィールドを所定値に設定する。検査ステップ９４６において、パスワードフィールドが有効ではない（スロットが新しく、リスト８７４，８７６からのポインタがスロットを指差していない）と判断された場合、制御はステップ９４６からステップ９４８に移行し、ここでは新しいスロットのキャッシュスタンプがパスワードを所定値に設定し、連続番号フィールドをＮに設定し、ポインタフィールドをｎｕｌｌに設定することによって設定される。他の実施形態ではポインタフィールドは、スロット自体を指差すように設定できる。
【０１３８】
ステップ９４８の後はステップ９５２であり、ここでは新しいスロットへのポインタが、ポインタリスト８７４，８７６のうちのアクティブな方に加えられる。本実施形態ではリスト８７４，８７６は、循環的な二重リンクリストであり、新しいポインタは、従来の方法の循環的な二重リンクリストに加えられる。もちろん他の適切なデータ構造は、リスト８７４，８７６を管理するために使用できる。ステップ９５２の後はステップ９５４であり、ここではフラグが設定される。ステップ９５４では、書込保留フラグは、スロットがリモート記憶装置８２６に送信される必要があることを示すように設定できる。更にステップ９５４では、キャッシュフラグは、スロットが標準論理装置８７２にデステージされる必要があることを示すように設定される。ステップ９５４の後はステップ９５６であり、ここではホスト８２２によって書込まれるデータがスロットに書込まれる。ステップ
９５６の後はステップ９５８であり、ここではスロットがロック解除される。ステップ９５８の後で本処理が完了する。
【０１３９】
検査ステップ９４６において、スロットのパスワードフィールドが有効である（スロットがリスト８７４，８７６のうちの少なくとも１つのポインタによって既に指差されることを示す）と判断された場合、制御はステップ９４６から検査ステップ９６２に移行し、ここではスロットの連続番号フィールドが現在の連続番号Ｎに等しいか否か判断される。有効なパスワードを持ったスロットの連続番号フィールドに対応する有効な可能性が２つある。連続番号フィールドは、Ｎ（現在の連続番号）に等しくなることが可能である。これが、スロットが連続番号Ｎを持った前の書込に対応する場合に生じる。他の可能性は、連続番号フィールドがＮ−１に等しい場合である。これはスロットが連続番号Ｎ−１を持った前の書込に対応する場合に生じる。連続番号フィールドに対応しては、他の値はいずれも無効である。このように幾つかの実施形態に対応しては、ステップ９６２においてエラー／妥当性チェックを含むか、または状況によって互いに別個のステップをエラー／妥当性チェック可能である。そのようなエラーは、任意の適切な方法で扱われることが可能であり、それはユーザにメッセージを提供することを含み得る。
【０１４０】
ステップ９６２において、スロットの連続番号フィールドにおける値が現在の連続番号Ｎに等しいと判断された場合、特別な処理は必要ではなく、制御はステップ９６２から上述したステップ９５６に移行し、ここではデータがスロットに書込まれる。ＮＯの場合、連続番号フィールドの値がＮ−１である（他の有効な値のみ）場合、制御はステップ９６２からステップ９６４に移行し、ここでは新しいスロットが得られる。ステップ９６４で得られた新しいスロットは、書込まれたデータを記憶するために使用できる。
【０１４１】
ステップ９６４の後はステップ９６６であり、ここでは古いスロットからのデータが、ステップ９６４で得られた新しいスロットにコピーされる。コピーされたデータは、書込保留フラグ含み、それはスロットが最初に生成された場合前の書込にステップ９５４で設定されているべきであったことを注記しておく。ステップ９６６の後はステップ９６８であり、ここではパスワードフィールドを適切な値に設定し、連続番号フィールドを現在の連続番号Ｎに設定し、および、ポインタフィールドを古いスロットを指差すように設定することによって、新しいスロットに対応するキャッシュスタンプが設定される。ステップ９６８の後はステップ９７２であり、ここでは新しいスロットへのポインタがリンクリスト８７４，８７６のうちのアクティブな方に加えられる。ステップ９７２の後は上述したステップ９５６であり、ここではデータがスロットに書込まれ、この場合、スロットは新しいスロットである。
【０１４２】
図３２に示すように、フローチャート１０００は、データが、図２９に対応して示された実施形態に従って蓄積された場合、ローカル記憶装置８２４からリモート記憶装置８２６にデータ送信するためにリスト８７２，８７４のうちの非アクティブな方を走査するローカル記憶装置８２４に対応して行なわれるステップを示す。上述したように、リスト８７２，８７４のうちの非アクティブな方は、Ｎサイクルがリスト８７２，８７４のうちのアクティブな方を使用してホスト８２２によってローカル記憶装置８２４に書込まれる場合ローカル記憶装置８２４に対応するＮ−１サイクルに対応するスロットを指差す。
【０１４３】
本処理は第１ステップ１００２で開始し、ここではリスト８７２，８７４のうちの非アクティブな方に入力があるか否か判断される。データが送信される場合、対応する入力は、リスト８７２，８７４のうちの非アクティブな方から削除される。更に新しい書込は、リスト８７２，８７４のうちのアクティブな方に提供され、一般にリスト７２，７４のうちの非アクティブな方には提供されない。このようにリスト８７２，８７４のうちの非アクティブな方が、或る時点においてデータを含まないことがある（後述のように望ましい
）。ステップ１００２において、送信されるデータがないと判断された場合、リスト８７２，８７４のうちの非アクティブな方は、データが利用可能になるまで連続的に獲得される。送信用のデータがサイクル切換に対応して利用可能になり（別に議論する）、ここではリスト８７２，８７４のうちの非アクティブな方は、リスト８７２、８７４のうちのアクティブな方になり、アクティブな１つが非アクティブになる。
【０１４４】
ステップ１００２において、送信に利用可能なデータがあると判断された場合、制御はステップ１００２からステップ１００４に移行し、ここではスロットが正しいと確認される。ステップ１００４で行なわれる処理は、随意の「正当性チェック」であり、それはたとえばパスワードフィールドが正しいことを確認し、連続番号フィールドが正しいことを確認することを含み得る。スロットに正しくない（予期しない）データがある場合、エラー処理が行なわれることが可能であり、それはエラーと状況によってはエラー復元処理についてユーザに通知することを含み得る。
【０１４５】
ステップ１００４の後はステップ１０１２であり、ここではデータがローカル記憶装置８２４からリモート記憶装置８２６に適切な方法で送信される。本実施形態ではスロット全体が送信されるわけではない。むしろ適切なミラービットセット（レコードが変更されたことを示す）を有したスロット内のレコードだけが、リモート記憶装置８２６に送信される。しかし、他の実施形態ではリモート記憶装置８２６が適切なミラービットセットを有するレコードに対応するデータを単に書込、トラックに対応する他のデータを無視すれば、全スロットを送信でき、それは有効であることもあるし、有効ではないこともある。ステップ１０１２の後は検査ステップ１０１４であり、送信されたデータがリモート記憶装置８２６によって承認されたか否か判断される。ＮＯの場合、データは、ステップ１０１４からステップ１０１２に戻るフローによって示されるように再送信される。他の実施形態では様々な一層関与した処理は、データ送信し、受信を承認するために使用できる。そのような処理は、エラー報告と、データ送信する幾つかの試みが失敗後で行なわれる代替処理とを含み得る。
【０１４６】
一旦、検査ステップ１０１４において、データ送信に成功したと判断されれば、制御はステップ１０１４からステップ１０１６に移行し、書込保留フラグをクリアする（データ送信に成功したので）。ステップ１０１６の後は検査ステップ１０１８であり、ここではスロットが、リスト８７２，８７４のうちの非アクティブな方における既存の入力を既に有するスロットへの書込に対応して生成された複製スロットであるか否か判断される。この可能性は、ステップ９６２，９６４，９６６，９６８，９７２に対応して上述した。ステップ１０１８において、スロットが複製スロットであると判断された場合、制御はステップ１０１８からステップ１０２２に移行し、ここではスロットが利用可能なスロット（再使用される）のプールに戻される。更にスロットは、スロットに提供されるデータが任意の他の目的に対応して有効ではないため、他のスロットの先立つ即時再使用に備えるために古くなることがある（または適用される幾つかの他の適切な機構を有する）。ステップ１０２２の後、またはスロットが複製スロットではない場合のステップ１０１８の後はステップ１０２４であり、ここではスロットヘッダのパスワードフィールドがクリアされ、その結果、スロットが再使用される場合、図３１のステップ９４６の検査は、スロットを新しい（未使用の）スロットとして適切に分類する。
【０１４７】
ステップ１０２４の後はステップ１０２６であり、ここではリスト８７２，８７４のうちの非アクティブな方における入力が削除される。ステップ１０２６の後、制御は上述したステップ１００２に移行し、ここでは転送される必要があるデータに対応するリスト８７２，８７４のうちの非アクティブな方に付加的な入力があるか否か判断される。
【０１４８】
図３３に示すように、フローチャート１０５０は、連続番号を増加させる、ローカル記
憶装置８２４に対応して行なわれるステップを示す。本処理は第１ステップ１０５２で開始し、ここではローカル記憶装置８２４は、連続番号を増加させる前に少なくともＭ秒間待機する。本実施形態ではＭは、３０であるが、もちろんＭは、任意の数であることが可能である。より大きいＭの値は、記憶装置８２４，８２６間の通信が中断した場合、失われるデータ量を増加させる。しかし、より小さいＭの値は、連続番号を一層頻繁にインクリメントすることによって引き起こされるオーバーヘッドの合計量を増加させる。
【０１４９】
ステップ１０５２の後は検査ステップ１０５４であり、前の連続番号に関連したローカル記憶装置８２４への書込動作が全て完了したか否かを判断する。幾つかの例では、単一のＩ／Ｏは、比較的長時間掛かり、連続番号が変更後であっても依然として進行中であることがある。ステップ１０５４では、任意の適切な構造を使用できる。
【０１５０】
検査ステップ１０５４において、前の連続番号からのＩ／Ｏが完了したと判断された場合、制御はステップ１０５４から検査ステップ１０５６に移行し、リスト８７４，８７６のうちの非アクティブな方が空であるか否かを判断する。連続番号の切換は、リスト８７４，８７６のうちの非アクティブな方に対応するデータが全てローカル記憶装置８２４からリモート記憶装置８２６に完全に送信されない限り且つそうなるまでなされないことがあることを注記しておく。一旦、リスト８７４，８７６のうちの非アクティブな方が空であると判断されれば、制御はステップ１０５６からステップ１０５８に移行し、ここでは前の連続番号に対応するコミットは、ローカル記憶装置８２４からリモート記憶装置８２６に送信される。特定の連続番号に対応するコミットメッセージを受信するリモート記憶装置８２６は、連続番号に対応するデータが全て送信されたことをリモート記憶装置８２６に示すであろう。
【０１５１】
ステップ１０５８の後はステップ１０６２であり、リスト８７４，８７６のうちの非アクティブな方に対応するデータのコピーが保留される。後述するようにリストのうちの非アクティブな方は、対応するデータをローカル記憶装置８２４からリモート記憶装置８２６に送信するために走査される。コピーするデータを保留することは、連続番号切換えが完了するまで有用である。
【０１５２】
ステップ１０６２の後はステップ１０６４であり、ここでは連続番号がインクリメントされる。ステップ１０６４の後は検査ステップ１０７２であり、リモート記憶装置８２６がステップ１０５８で送信されたコミットメッセージを承認したか否かを判断する。一旦、リモート記憶装置８２６がステップ１０５８で送信されたコミットメッセージを承認したと判断すれば、制御はステップ１０７２からステップ１０７４に移行し、ここではステップ１０６２によって提供されたコピーの保留がクリアされ、その結果、コピーが再開する。ステップ１０７４の後で本処理が完了する。連続番号を連続的にインクリメントする新しいサイクルを開始するために、ステップ１０７４からステップ１０５２に行くことも可能であることを注記しておく。
【０１５３】
アクティブなデータとデータの非アクティブな塊に関連したスロットを収集するために、ローカル記憶装置８２４でテーブルを使用可能である。その場合、１つのテーブルは、非アクティブな連続番号に関連でき、別のテーブルは、アクティブな連続番号に関連できる。これは下で記述される。
【０１５４】
図３４に示すように、ダイアグラム１２００は、塊８５２，８５４を構築と維持するために使用される要素を示す。標準論理装置１２０２は、ホスト８２２によって書込まれたデータを含み、上述したデータ要素８５１に対応する。標準論理装置１２０２は、ホスト８２２によってローカル記憶装置８２４に書込まれたデータを含む。
【０１５５】
２つのテーブル１２０４，１２０６は、標準論理装置１２０２に対応して使用される。テーブル４０４，４０６は、たとえばローカル記憶装置８２４のメモリに記憶できる装置テーブルに対応できる。テーブル１２０４，１２０６の各トラック入力は、標準論理装置１２０２のトラックを指差すか、またはローカル記憶装置８２４に対応して使用されるキャッシュ１２０８のスロットを指差す。
【０１５６】
キャッシュ１２０８は、複数のキャッシュスロット１２１２〜１２１４を含み、それは標準論理装置１２０２への書込に対応して使用され、同時にテーブル１２０４，１２０６に対応して使用できる。本実施形態ではテーブル１２０４，１２０６の各トラックテーブル入力は、標準論理装置１２０２の対応するトラックの使用を示すためにｎｕｌｌを含む。ＮＯの場合、テーブル１２０４，１２０６の各々に対応するトラックテーブルにおける入力は、キャッシュ１２０８におけるスロット１２１２〜１２１４のうちの１つへのポインタを含む。
【０１５７】
キャッシュテーブル１２０４，１２０６の各々は、データ８５２，８５４の塊のうちの１つに使用可能であり、その結果、たとえばテーブル１２０４は、連続番号Ｎに対応するデータ８５２の塊に対応できる。一方、テーブル１２０６は、連続番号Ｎ−１に対応するデータ８５４の塊に対応できる。このようにデータがホスト８２２によってローカル記憶装置８２４に書込まれる場合、データは、キャッシュ１２０８に提供され、テーブル１２０４の適切なポインタが調整される。データが標準論理装置１２０２にデステージされ、後述のようにデータがテーブル１２０４に関連した機構によって開放されるまでデータがキャッシュ１２０８から削除されないことを注記しておく。
【０１５８】
本実施形態ではテーブル１２０４，１２０６のうちの一方が「アクティブである」と考えられる。他方が「非アクティブである」と考えられる。このようにたとえば連続番号Ｎが偶数の場合、テーブル１２０４は、アクティブである。一方、テーブル１２０６は、非アクティブであることが可能である。テーブル１２０４，１２０６のうちのアクティブな方は、ホスト８２２からの書込を扱う。一方、テーブル１２０４，１２０６のうちの非アクティブな方が、ローカル記憶装置８２４からリモート記憶装置８２６に送信されているデータに対応する。
【０１５９】
ホスト８２２によって書込まれたデータが、テーブル１２０４，１２０６のうちのアクティブな方（連続番号Ｎに対応しての）を使用して蓄積される。一方、テーブル１２０４，１２０６のうちの非アクティブな方（前の連続番号Ｎ−１に対応しての）に対応するデータは、ローカル記憶装置８２４からリモート記憶装置８２６に送信される。
【０１６０】
一旦、データがリモート記憶装置８２６に送信されると、テーブル１２０４，１２０６のうちの非アクティブな方における対応する入力は、ｎｕｌｌに設定できる。更にスロットにおけるデータが別の目的（たとえば標準論理装置１２０２にデステージされること）にＮＯの場合必要とされない場合、データは、キャッシュ１２０８（すなわち後の使用のためにスロットのプールに戻されたスロット）から削除可能である。機構は、全てのミラーとテーブル１２０４，１２０６がもはやデータを使用しなくなるまでデータがキャッシュ１２０８から削除されないことを保証するために、使用できる。そのような機構は、たとえば１９９６年７月１６日に発行された特許文献６に記述される。
【０１６１】
図３５に示すように、フローチャート１２４０は、２つのテーブルが使用される実施形態に対応する書込動作を行なう、ホスト８２２に対応してローカル記憶装置８２４によって行なわれるステップを示す。本処理は第１ステップ１２４２で開始し、ここでは書込に対応するスロットがロックされる。本実施形態ではキャッシュ１２０８のスロット１２１２〜１２１４の各々は、標準論理装置１２０２上のデータのトラックに対応する。ステッ
プ１２４２でスロットをロックすることは、フローチャート１２４０のステップに対応するローカル記憶装置８２４によって行なわれる処理中に関連するスロット上で付加的な処理が動作するのを防止する。
【０１６２】
ステップ１２４２の後はステップ１２４４であり、ここではＮに対応する値（連続番号）が設定される。ちょうど、テーブルではなくリストを使用する実施形態のように、ステップ１２４４で得られた連続番号に対応する値は、スロットがロックされている間、全書込動作中維持される。後述するように書込が属するデータ８５２，８５４の塊の１つを判断するために、連続番号が各書込に割当てられる。ホスト８２２によって行なわれる書込は、現在の連続番号を割当てられる。単一の書込動作が同一の連続番号全体を維持するは有用である。
【０１６３】
ステップ１２４４の後は検査ステップ１２４６であり、それはテーブル１２０４，１２０６のうちの非アクティブな方が、ステップ１２４２でロックされたスロット（その際に動作されるスロット）を既に指差すか否かを判断する。これは連続番号が現在の連続番号よりも小さいものであった場合同一のスロットへの書込が提供される場合に生じることがある。前の連続番号に対応する書込に対応するデータは、リモート記憶装置８２６にまだ送信されていない場合がある。
【０１６４】
検査ステップ１２４６において、テーブル１２０４，１２０６のうちの非アクティブな方がスロットを指差していないと判断される場合、制御は検査ステップ１２４６から別の検査ステップ１２４８に移行し、ここではテーブル１２０４，１２０６のうちのアクティブな方スロットを指差すか否か判断される。スロットに前の書込がある。一方、連続番号が現在の連続番号と同一のであった場合、テーブル１２０４，１２０６のうちのアクティブな方は、スロットを指差すことが可能である。検査ステップ１２４８において、テーブル１２０４，１２０６のうちのアクティブな方が、スロットを指差していないと判断された場合、制御は検査ステップ１２４８からステップ１２５２に移行し、ここでは新しいスロットがデータに対応して得られる。ステップ１２５２の後はステップ１２５４であり、ここではテーブル１２０４，１２０６のうちのアクティブな方がスロットを指差すようになされる。
【０１６５】
ステップ１２５４の後、またはテーブル１２０４，１２０６のうちのうちのアクティブな方がスロットを指差す場合のステップ１２４８の後は、ステップ１２５６であり、ここではフラグが設定される。ステップ１２５６では、書込保留フラグは、スロットをリモート記憶装置８２６に送信する必要があることを示すように設定される。更にステップ１２５６では、ＩＮ＿ＣＡＣＨＥフラグは、スロットを標準論理装置１２０２にデステージする必要があることを示すように設定される。幾つかの例では、テーブル１２０４，１２０６のうちのアクティブな方が、スロットを既に指差す場合には（ステップ１２４８で判断されるように）、書込保留とＩＮ＿ＣＡＣＨＥフラグは、ステップ１２５６の実行に先立って既に設定されていることが可能であることを注記しておく。しかし、ステップ１２５６でフラグを設定することは、フラグは、前の状態が何であっても適切に設定されることを保証する。
【０１６６】
ステップ１２５６の後はステップ１２５８であり、ここではスロットを指差すトラックテーブルにおける間接的なフラグがクリアされ、関連するデータがスロットに提供され、間接的に指差される異なるスロットに提供されないことを示す。ステップ１２５８の後はステップ１２６２であり、ここではホスト８２２によって書込まれるデータがスロットに書込まれる。ステップ１２６２の後はステップ１２６４であり、ここではスロットがロック解除される。ステップ１２６４の後で本処理が完了する。
【０１６７】
検査ステップ１２４６において、テーブル１２０４，１２０６のうちの非アクティブな方がスロットを指差すと判断される場合、制御はステップ１２４６からステップ１２７２に移行し、ここでは新しいスロットが得られる。ステップ１２７２で得られる新しいスロットは、移行を達成するために、テーブル１２０４，１２０６のうちの非アクティブな方に使用できる。一方、下で記述されるように、古いスロットが、テーブル１２０４，１２０６のうちのアクティブな方に関連できる。
【０１６８】
ステップ１２７２の後はステップ１２７４であり、古いスロットからのデータが、ステップ１２７２で得られた新しいスロットにコピーされる。ステップ１２７４の後はステップ１２７６であり、ここでは間接的なフラグ（上述した）は、テーブル１２０４，１２０６のうちの非アクティブな方に対応するトラックテーブル入力が古いスロットを指差すが、データは、古いスロットによって指差される新しいスロットにあることを示すように設定される。このようにステップ１２７６で間接的なフラグを設定することは、データが新しいスロットにあることをトラックテーブル入力に示させるように、テーブル１２０４，１２０６のうちの非アクティブな方のトラックテーブルに影響する。
【０１６９】
ステップ１２７６の後はステップ１２７８であり、ここでは新しいスロット内のレコードに対応するミラービットが調整される。新しいスロットの目的が、テーブルのうちの非アクティブな方に対応する移行を単に達成するものであるため、データがステップ１２７４で古いスロットから新しいスロットにコピーされた場合コピーされたいずれのローカルミラービットもクリアされる。古いスロットは、任意のローカルミラーを扱うために使用されるであろう。ステップ１２７８の後はステップ１２６２であり、ここではデータがスロットに書込まれる。ステップ１２６２の後はステップ１２６４であり、ここではスロットがロック解除される。ステップ１２６４の後で本処理が完了する。
【０１７０】
図３６に示すように、フローチャート１３００は、データが図３４に対応して示される実施形態によって蓄積される場合、データ８５４の塊をリモート記憶装置８２６に送信する、ローカル記憶装置８２４に対応して行なわれるステップを示す。送信は、テーブル１２０４，１２０６のうちの非アクティブな方がアクティブであった場合、前の反復中に書込まれたトラックに対応するテーブル１２０４，１２０６のうちの非アクティブな方を走査することを本質的に必要とする。
【０１７１】
本処理は第１ステップ１３０２で開始し、ここではテーブル１２０４，１２０６のうちの非アクティブな方の第１トラックが、トラックの全てを通じた反復処理を開始するために指差される。第１ステップ１３０２の後は検査ステップ１３０４であり、ここでは書込保留フラグが設定されているか否か判断される。後述するように書込保留フラグは、リモート記憶装置８２６に送信される必要のあるデータをスロット（トラック）が含むことを示すために使用される。設定される書込保留フラグは、スロット（トラック）に対応する少なくとも幾つかのデータが送信されることを示す。本実施形態ではスロット全体が送信されるわけではない。むしろ適切なミラービットセット（レコードが変更されていることを示す）を有したスロット内のレコードだけが、リモート記憶装置８２６に送信される。しかし、他の実施形態ではリモート記憶装置８２６が適切なミラービットセットを有したレコードに対応するデータを単に書込、トラック用の他のデータを無視すれば、全スロットを送信でき、それは有効であることもあるが、有効ではないこともある。
【０１７２】
検査ステップ１３０４において、処理されているキャッシュスロットが書込保留フラグセットを有すると判断された場合、制御はステップ１３０４から検査ステップ１３０５に移行し、ここではスロットがデータを含むか、またはスロットが、関連するデータを含む別のスロットを指差す間接的なスロットであるか否か判断される。幾つかの例では、スロットは、スロットに対応するディスクの一部に対応するデータを含まないことがある。代
わりに、スロットは、データを含む別のスロットを指差す間接的なスロットであることが可能である。ステップ１３０５において、スロットが間接的なスロットであると判断された場合、制御はステップ１３０５からステップ１３０６に移行し、ここではデータが得られる（間接的なスロットによって指差されるスロットから）。このようにスロットが直接的なスロットである場合、送信されるデータはスロットに記憶される。一方、スロットが間接的なスロットである場合、送信されるデータは、間接的なスロットによって指差される別のスロットにある。
【０１７３】
ステップ１３０６の後、またはスロットが直接的なスロットである場合のステップ１３０５の後は、ステップ１３０７であり、ここでは送信されるデータ（スロットから直接的または間接的に）がリモート記憶装置８２６に送信される。ステップ１３０７の後は検査ステップ１３０８であり、ここではリモート記憶装置８２６が、データの受信を承認したか否か判断される。ＮＯの場合、制御はデータを再送信するために、ステップ１３０８からステップ１３０７に移行する。他の実施形態では異なる一層関与した処理は、データ送信し、受信を承認するために使用できる。そのような処理は、エラー報告と、データ送信する幾らかの試みが失敗後で行なわれる代替処理とを含み得る。
【０１７４】
一旦、検査ステップ１３０８において、データ送信に成功したと判断されれば、制御はステップ１３０８からステップ１３１２に移行し、書込保留フラグをクリアする（データ送信に成功したので）。ステップ１３１２の後はステップ１３１４であり、ここでは適切なミラーフラグは、少なくともリモート記憶装置８２６がもはやデータを必要としないことを示すためにクリアされる。本実施形態ではスロット（トラック）の一部であるレコードは、それぞれ、個々のミラーフラグを有し、どのミラーが特定のレコードを使用するかを示す。リモート記憶装置８２６は、レコードの各々に対応するミラーのうちの１つであり、それはステップ１３１４でクリアされるリモート記憶装置８２６に対応するフラグである。
【０１７５】
ステップ１３１４の後は検査ステップ１３１６であり、それは処理されているトラックのレコードのうちのいずれが、任意の他のミラーフラグセット（他のミラーリング装置用の）を有するか否かを判断する。ＮＯの場合、制御はステップ１３１６からステップ１３１８に移行し、ここではスロットが開放される（すなわちもう使用されていない）。幾つかの実施形態では未使用のスロットは、使用に利用可能なスロットのプールにおいて維持される。付加的なフラグが、スロットのレコードのうちの幾つかに対応して依然として設定されている場合、それはレコードが標準論理装置１２０２にデステージされる必要があるか、または幾つかの他のミラーによって使用されていることを意味することがあることを注記しておく。ステップ１３１８の後、または一層多くのミラーフラグが存在する場合のステップ１３１６の後は、ステップ１３２２であり、ここではテーブル１２０４，１２０６のうちの非アクティブな方の各トラック入力を通じて反復するために使用されるポインタが、次のトラックを指差すようになされる。ステップ１３２２の後は検査ステップ１３２４であり、処理されるテーブル１２０４，１２０６のうちの非アクティブな方のトラックが更にあるか否かを判断する。ＮＯの場合、本処理が完了する。ＮＯの場合、制御は上述した検査ステップ１３０４に移行する。書込保留フラグが、処理されるトラックに対応して設定されていないと判断された場合、ステップ１３２２は、検査ステップ１３０４からも至ることを注記しておく。
【０１７６】
図３７に示すように、ダイアグラム１５００は、複数のローカル記憶装置１５０３〜１５０５に結合されたホスト１５０２を示す。ダイアグラム１５００は。複数のリモート記憶装置１５０６〜１５０８を更に示す。３つのローカル記憶装置１５０３〜１５０５と３つのリモート記憶装置１５０６〜１５０８だけがダイアグラム１５００に示されるが、ここで記述されるシステムは、任意数のローカルとリモート記憶装置を使用するために拡張
できる。一層詳細に下で議論するように、単一のローカル記憶装置に結合された単一のリモート記憶装置によって連続バックアップを提供することに関連した機能は、複数のローカルとリモート記憶装置によって動作するように拡張できる。
【０１７７】
ローカル記憶装置１５０３〜１５０５の各々は、リモート記憶装置１５０６〜１５０８の対応する１つに結合され、その結果、たとえばローカル記憶装置１５０３は、リモート記憶装置１５０６に結合され、ローカル記憶装置１５０４は、リモート記憶装置１５０７に結合され、そしてローカル記憶装置１５０５は、リモート記憶装置１５０８に結合される。ローカル記憶装置１５０３〜１５０５は、リモート連続バックアップのためにデータをリモート記憶装置１５０６〜１５０８に転送でき、その結果、たとえばローカル記憶装置１５０３は、リモート連続バックアップデータをリモート記憶装置１５０６に転送できる。
【０１７８】
幾つかの例では、ホスト１５０２は、ローカル記憶装置１５０３〜１５０５のうちの複数を同時に使用する単一のアプリケーションを実行できる。そのような場合、ホスト１５０２が任意の時間に動作を停止した場合、および／またはローカル記憶装置１５０３〜１５０５のうちの１つが失敗した場合、アプリケーションデータがローカル記憶装置１５０３〜１５０５で一貫性がある（復元可能である）ことを保証するように、アプリケーションが構成できる。しかし、ローカル記憶装置１５０３〜１５０５とリモート記憶装置１５０６〜１５０８との間の接続の各々が、他の接続から非同期であることが可能であるため、その後、アプリケーション用のデータがリモート記憶装置１５０６〜１５０８で一貫性がある（従って復元可能である）という保証はないことがある。すなわちたとえばローカル記憶装置１５０３とリモート記憶装置１５０６と（第１ローカル／リモート対）の間のデータ接続に一貫性があり、ローカル記憶装置１５０４とリモート記憶装置１５０７と（第２ローカル／リモート対）の間のデータ接続に一貫性があっても、第１および第２ローカル／リモート対間の同期がない場合、リモート記憶装置１５０６および１５０７上のデータに必ずしも常に一貫性がある必要はない。
【０１７９】
複数のローカル記憶装置１５０３〜１５０５を同時に使用するホスト１５０２のアプリケーションについて、データがリモート記憶装置１５０６〜１５０８で一貫性があり、復元可能であることが望ましい。これはホスト１５０２が、ローカル記憶装置１５０３〜１５０５の各々における切換サイクルを制御し、その結果、ホスト１５０２上で実行されるアプリケーションからのデータが、リモート記憶装置１５０６〜１５０８で一貫性があり、復元可能であるような機構によって提供できる。この機能は、一層詳細に下で記述するように、複数のローカル記憶装置１５０３〜１５０５をマルチボックスモードに切換える、ホスト１５０２上で実行される特別なアプリケーションによって提供される。
【０１８０】
図３８に示すように、テーブル１５３０は、複数の入力１５３２〜１５３４を有する。入力１５３２〜１５３４の各々は、記憶装置の単一のローカル／リモート対に対応し、その結果、たとえば入力１５３２は、ローカル記憶装置１５０３とリモート記憶装置１５０６の対に対応でき、入力１５３３は、ローカル記憶装置１５０４とリモート記憶装置１５０７の対に対応でき、入力１５３４は、ローカル記憶装置１５０５とリモート記憶装置１５０８の対に対応できる。入力１５３２〜１５３４の各々は、複数のフィールドを有し、ここでは第１フィールド１５３６ａ〜１５３６ｃは、対応するローカル記憶装置の通し番号を表わし、第２フィールド１５３８ａ〜１５３８ｃは、マルチボックス群によって使用されるセッション番号を表わし、第３フィールド１５４２ａ〜１５４２ｃは、ローカル／リモート対の対応するリモート記憶装置の通し番号を表わし、第４フィールド１５４４ａ〜１５４４ｃは、マルチボックス群に対応するセッション番号を表わす。テーブル１５３０は、マルチボックスモードで動作することに対応してホスト１５０２によって構築と維持される。更にテーブル１５３０は、マルチボックス群の一部であるローカル記憶装置と
リモート記憶装置の各々に広められる。一層詳細に下で議論するように、テーブル１５３０は、復元を容易にするために使用できる。
【０１８１】
様々なローカル／リモート対が、任意の順番にいつでも独立してマルチボックスモードに入ってもマルチボックスモードから出ることが可能である。ホスト１５０２は、マルチボックスモードへのローカル記憶装置／リモート記憶装置対の入力、および、マルチボックスモードからのローカル記憶装置／リモート記憶装置対の出力を管理する。これは一層詳細に下に記述される。
【０１８２】
図３９に示すように、フローチャート１５５０は、マルチボックスモードへのローカル／リモート対の入力、またはマルチボックスモードからのローカル／リモート対の出力に対応してホスト１５０２によって行なわれるステップを示す。本処理は第１ステップ１５５２で開始し、ここではマルチボックスモード動作が一時的に停止される。ステップ１５５２で一時的にマルチボックス動作を停止することは、マルチボックスモードへのリモート／ローカル対の入力、またはマルチボックスモードからのリモート／ローカル対の出力に対応して行なわれる変更を容易にするのに有用である。ステップ１５５２の後はステップ１５５４であり、ここではテーブル１５３０のようなテーブルが、必要に応じて入力を追加または削除して修正される。ステップ１５５４の後はステップ１５５６であり、ここでは修正されたテーブルが、マルチボックス群のローカル記憶装置とリモート記憶装置に広められる。ここでは一層詳細に別に議論するように、ステップ１５５６でテーブルを広めることは、復元を容易にする。
【０１８３】
ステップ１５５６の後はステップ１５５８であり、メッセージが、変更を提供する影響を受けたローカル記憶装置に送信される。ローカル記憶装置は、ここでは一層詳細に他で記述されるように、マルチボックスモードで実行されるかまたはされないようにそれ自体を構成できる。一層詳細に下で議論するように、リモート連続バックアップを扱うローカル記憶装置は、それがマルチボックス群の一部として動作しているか否かに依存して異なるように動作する。ローカル記憶装置がマルチボックス群に加えられている場合、ステップ１５５８で送信されたメッセージは、それがマルチボックス群に加えられていることをローカル記憶装置に示し、その結果、ローカル記憶装置は、マルチボックスモードで実行されるようにそれ自体を構成する。これに代えて、ローカル記憶装置がマルチボックス群から削除されている場合、ステップ１５５８で送信されたメッセージは、それがマルチボックス群から削除されていることをローカル記憶装置に示し、その結果、ローカル記憶装置は、マルチボックスモードで実行されないようにそれ自体を構成する。
【０１８４】
ステップ１５５８の後は検査ステップ１５６２であり、ここではローカル／リモート対がマルチボックス群に加えられているか否か（削除に対応するものとして）が判断される。ＹＥＳの場合、制御は検査ステップ１５６２からステップ１５６４に移行し、ここでは加えられているローカル記憶装置にタグ値が送信される。タグ値は、データと共に連続番号を提供するのと同様の方法において、ローカル記憶装置からリモート記憶装置に送信されるデータを備える。タグ値は、ホストによって制御され、その結果、ローカル／リモート対が全て同一のサイクル中に同一のタグ値を有したデータ送信するように設定される。タグ値の使用は、一層詳細に下で議論する。ステップ１５６４の後、または新しいローカル／リモート対が加えられていない場合のステップ１５６２の後は、ステップ１５６６であり、ここではマルチボックス動作が再開される。ステップ１５６６の後で本処理が完了する。
【０１８５】
図４０に示すように、フローチャート１５８０は、マルチボックスモードにおける群として実行される複数のローカル／リモート対のためのホスト管理サイクル切換に対応して行なわれるステップを示す。後述するようにマルチボックスモードは、リモート記憶装置
中のデータの一貫性を維持する複数のリモート／ローカル対用のホスト同期サイクル切換を含む。サイクル切換は、ローカル記憶装置によって内部に生成されるよりも、むしろホストによって調整される。これは一層詳細に下で議論する。
【０１８６】
フローチャート１５８０に対応する処理は、検査ステップ１５８２で開始し、Ｍ秒が経過したか否かを判断する。ちょうど非マルチボックス動作によるもののように、サイクル切換は、毎秒Ｍよりも早く生じることはなく、ここではＭは、様々な動作パラメータを最適化するように選択される数である。Ｍの数が増加すると、切換に関連したオーバーヘッドの量は減少する。しかし、Ｍの増加は、失敗に対応して潜在的に失われることがあるデータ量も増加させる。本実施形態ではＭとして３０秒が選択されるが、当然のことながら、Ｍに対応しては他の値を使用可能である。
【０１８７】
検査ステップ１５８２において、Ｍ秒が経過していないと判断された場合、制御はステップ１５８２に移行し、Ｍ秒が経過するまでポーリングし続ける。一旦、検査ステップ１５８２でＭ秒が経過したと判断されれば、制御はステップ１５８２からステップ１５８４に移行し、ここではホストは、マルチボックス群中のローカル記憶装置を全て問合せ、ローカル／リモート対が全て切換準備できているか否かを判断する。切換準備できているローカル／リモート対は、以下で詳述される。
【０１８８】
ステップ１５８４の後は検査ステップ１５８６であり、ローカル／リモート対が全て切換準備できているか否かを判断する。ＮＯの場合、制御はステップ１５８４に移行し、問合せを再開する。本実施形態では一旦、ローカル／リモート対が切換準備できていれば、対は切換が生じるまでそのままであるため、以前に切換準備できていなかったローカル／リモート対を問合せることが単に必要である。
【０１８９】
一旦、検査ステップ１５８６において、マルチボックス群中のローカル／リモート対の全てが切換準備できていると判断されれば、制御はステップ１５８６からステップ１５８８に移行し、ここではインデックス変数Ｎが「１」に等しく設定される。インデックス変数Ｎは、ローカル／リモート対の全て（すなわちテーブル１５３０の入力１５３２〜１５３４の全て）を通じて反復するために使用される。ステップ１５８８の後は検査ステップ１５９２であり、インデックス変数Ｎがマルチボックス群中のローカル／リモート対の数よりも大きいか否かを判断する。ＮＯの場合、制御はステップ１５９２からステップ１５９４に移行し、ここでは開いたウィンドウが、ホストによって、ｎ番目の対のｎ番目のローカル記憶装置に対応して行なわれ、コマンド（たとえば適切なシステムコマンド）をｎ番目のローカル記憶装置に送信する。ステップ１５９４でｎ番目のローカル記憶装置に対応してウィンドウを開くことは、ｎ番目のローカル記憶装置に書込を保留させ、その結果、ステップ１５９４でウィンドウを開く前に開始されないホストによる如何なる書込も、ウィンドウが閉じられるまで完了しない（下で記述される）。書込動作を完了しないことは、第２の依存する書込がサイクル切換の完了前に生じるのを防止する。ウィンドウを開く前に開始された進行中の如何なる書込も、ウィンドウが閉じられる前に完了できる。
【０１９０】
ステップ１５９４の後はステップ１５９６であり、ここではサイクル切換は、ｎ番目のローカル記憶装置に対応して行なわれる。ステップ１５９６でサイクル切換を行なうことは、ホスト１５０２からｎ番目のローカル記憶装置にコマンドを送信することを含む。ｎ番目のローカル記憶装置によってホストからのコマンドを処理することは、一層詳細に下で議論される。ステップ１５９６で行なわれる処理の一部は、データに割当てられるタグに対応する新しい値をホストに提供させることを含み得る。タグは、ここでは一層詳細に別に議論される。代替の実施形態ではステップ１５９４，１５９６で行なわれる動作は、単一の統合されたステップ１５９７として行なわれることが可能であり、それはステップ１５９４，１５９６の近傍に描かれた箱によって示される。
【０１９１】
ステップ１５９６の後はステップ１５９８であり、インデックス変数Ｎがインクリメントされる。ステップ１５９８の後、制御は検査ステップ１５９２に戻り、インデックス変数Ｎがローカル／リモート対の数よりも大きいか否かを判断する。
【０１９２】
検査ステップ１５９２において、インデックス変数Ｎがローカル／リモート対の数よりも大きいと判断された場合、制御は検査ステップ１５９２からステップ１６０２に移行し、ここではインデックス変数Ｎが「１」に等しく設定される。ステップ１６０２の後は、検査ステップ１６０４であり、インデックス変数Ｎがローカル／リモート対の数よりも大きいか否かを判断する。ＮＯの場合、制御はステップ１６０４からステップ１６０６に移行し、ここではｎ番目のローカル記憶装置用のウィンドウが閉じられる。ステップ１６０６のウィンドウを閉じることは、ホストによって行なわれ、ｎ番目のローカル記憶装置に書込動作を再開させるために、コマンドをｎ番目のローカル記憶装置に送信する。このようにステップ１５９４でウィンドウを開くことによって一時停止された如何なる処理中の書込も、ここではステップ１６０６の実行後に完了できる。ステップ１６０６の後、制御はステップ１６０８に移行し、ここではインデックス変数Ｎがインクリメントされる。ステップ１６０８の後、制御は検査ステップ１６０４に移行し、インデックス変数Ｎがローカル／リモート対の数よりも大きいか否かを判断する。ＹＥＳの場合、制御は検査ステップ１６０４からステップ１５８２に移行し、次のサイクル切換に対応する処理を開始する。
【０１９３】
図４１に示すように、フローチャート１６３０は、サイクル切換に対応してローカル記憶装置によって行なわれるステップを示す。図４１のフローチャート１６３０は、例として図３３のフローチャート１０５０を置換し、ここではローカル記憶装置は、マルチボックスモードと非マルチボックスモードの両方をサポートする。すなわちフローチャート１６３０は、非マルチボックスモードをサポートするために図３３のフローチャート１０５０と同様に行なわれるステップを示し、これに更にマルチボックスモードをサポートするステップを含む。
【０１９４】
本処理は第１検査ステップ１６３２で開始し、ローカル記憶装置がマルチボックスモードで動作しているか否かを判断する。図３９のフローチャート１５５０は、ホストがメッセージをローカル記憶装置に送信するステップ１５５８を示すことを注記しておく。ステップ１５５８で送信されるメッセージは、ローカル記憶装置がマルチボックスモードであるか否かをローカル記憶装置に示す。ステップ１５５８でホストによって送信されたメッセージの受信に際して、ローカル記憶装置は、ローカル記憶装置がマルチボックスモードで動作しているか否かを示すために内部変数を設定する。内部変数は、検査ステップ１６３２で検査できる。
【０１９５】
検査ステップ１６３２において、ローカル記憶装置がマルチボックスモードではないと判断された場合、制御は検査ステップ１６３２からステップ１６３４に移行し、サイクル切換に対応してＭ秒間待機する。ローカル記憶装置がマルチボックスモードで動作していない場合、ローカル記憶装置は、それ自身のサイクル切換を制御し、従ってステップ１６３４を実行し、次のサイクル切換を開始する前にＭ秒間待機する。
【０１９６】
ステップ１６３４の後、またはローカル記憶装置がマルチボックスモードである場合のステップ１６３２の後は、検査ステップ１６３６であり、前の連続番号に対応するＩ／Ｏが全て完了したか否かを判断する。一旦、検査ステップ１６３６において、前のサイクル番号に対応するＩ／Ｏが全て完了したと判断されれば、制御は検査ステップ１６３６からステップ１６８８に移行し、ローカル記憶装置に対応する非アクティブな塊が空であるか否かを判断する。一旦、検査ステップ１６８８において、非アクティブな塊が空であると
判断されれば、制御はステップ１６８８からステップ１６８９に移行し、ここではローカル記憶装置からリモート記憶装置へのデータのコピーが一時停止される。連続番号切換が完了するまでコピーするデータを一時停止することは有用である。
【０１９７】
ステップ１６８９の後は、検査ステップ１６９２であり、ローカル記憶装置がマルチボックスモードであるか否かを判断する。検査ステップ１６９２において、ローカル記憶装置がマルチボックスモードであると判断された場合、制御は検査ステップ１６９２から検査ステップ１６９４に移行し、対応するリモート記憶装置のアクティブな塊が空であるか否かを判断する。リモート記憶装置は、一旦、それがアクティブな塊を空にしたならば、ローカル記憶装置にメッセージを送信する。メッセージに応答して、ローカル記憶装置は、検査ステップ１６９４で検査される内部変数を設定する。
【０１９８】
一旦、検査ステップ１６９４において、リモート記憶装置のアクティブな塊が空であることが判断されれば、制御は検査ステップ１６９４からステップ１６９６に移行し、ここでは内部変数は、ローカル記憶装置がサイクル切換の準備ができていることを示すようにローカル記憶装置上で設定される。フローチャート１５８０に対応して上述したように、ホストは、ローカル記憶装置の各々が切換準備できているか否かを判断するために、ローカル記憶装置の各々を問合せる。ホストによって提供される問合せに応答して、ローカル記憶装置は、ステップ１６９６で設定された内部変数を検査し、結果をホストに返す。
【０１９９】
ステップ１６９６の後は検査ステップ１６９８であり、ローカル記憶装置は、サイクル切換を行なうためにホストからコマンドを受信するのを待機する。フローチャート１５８０に対応して上述したように、ホストは、ローカル記憶装置がマルチボックスモードで動作している場合、ローカル記憶装置にサイクルを切換えるコマンドを与える。このようにローカル記憶装置は、ステップ１６９８でコマンドを待機し、それはローカル記憶装置がマルチボックスモードで動作している場合のみ及ぶ。
【０２００】
一旦、ローカル記憶装置がホストから切換コマンドを受信したならば、制御はステップ１６９８からステップ１７０２に移行し、リモート記憶装置にコミットメッセージを送信する。ステップ検査１６９２において、ローカル記憶装置がマルチボックスモードではないと判断された場合、ステップ１７０２は、検査ステップ１６９２からも及ぶことを注記しておく。ステップ１７０２において、ローカル記憶装置は、リモート記憶装置にコミットメッセージを送信する。特定の連続番号に対応するコミットメッセージを受信することに応答して、リモート記憶装置は、ここで議論した連続バックアップ機能に従ってデータの記憶を開始するであろう。
【０２０１】
ステップ１７０２の後はステップ１７０６であり、ここでは連続番号がインクリメントされ、タグに対応する新しい値（ホストからの）が記憶される。連続番号は上述した通りである。タグは、上述したように、ステップ１５６４とステップ１５９６でローカル記憶装置に与えられるタグである。後述するようにタグは、データ復元を容易にするために使用される。
【０２０２】
ステップ１７０６の後はステップ１７０８であり、ここではサイクル切換の完了は、ローカル記憶装置からホストにメッセージを送信することによって、ローカル記憶装置からホストまで確認される。幾つかの実施形態ではローカル記憶装置がマルチボックスモードであるか否かをステップ１７０８で行なうことを条件付けることは可能である。なぜならば、ローカル記憶装置がマルチボックスモードではない場合、ホストは、サイクル切換がいつ生じるかを必ずしも対象にしないからである。
【０２０３】
ステップ１７０８の後は検査ステップ１７１２であり、リモート記憶装置がコミットメ
ッセージを承認したか否かを判断する。ローカル／リモート対がマルチボックスモードで動作し、リモート記憶装置のアクティブな塊がステップ１６９４で空であると判断された場合、リモート記憶装置は、アクティブな塊が既に空であるため、リモート記憶装置が直ちにサイクル切換の準備ができてから、殆ど直ちにコミットメッセージを承認するべきであることを注記しておく。
【０２０４】
一旦、検査ステップ１７１２において、コミットメッセージがリモート記憶装置によって承認されたと判断されれば、制御はステップ１７１２からステップ１７１４に移行し、ここではステップ１６８９によって提供されたコピーの保留がクリアされ、その結果、ローカル記憶装置からリモート記憶装置へのコピーが再開する。ステップ１７１４の後で本処理が完了する。
【０２０５】
図４２に示すように、フローチャート１７４０は、データが図２９に対応して示された実施形態に従って蓄積された場合、ローカル記憶装置８２４からリモート記憶装置８２６にデータ送信するためにローカル記憶装置８２４の非アクティブなバッファの走査に対応して行なわれるステップを示す。フローチャート１７４０は、図３２のフローチャート１０００と同様であり、同様のステップには、同一の参照符号が与えられている。しかし、フローチャート１７４０は、図３２のフローチャート１０００では見られない２つの追加ステップ１７４２，１７４４を含む。追加ステップ１７４２，１７４４は、マルチボックス処理を容易にするために使用される。データがステップ１０１２で送信後、制御はステップ１０１２から検査ステップ１７４２に移行し、送信されたデータがローカル記憶装置の非アクティブな塊における最後のデータであるか否かを判断する。ＮＯの場合、制御はステップ１７４２からステップ１０１４に移行し、本処理は図３２のフローチャート１０００に対応して上述したように継続する。ＮＯの場合、検査ステップ１７４２において、送信されたデータが塊の最後のデータであると判断された場合、制御はステップ１７４２からステップ１７４４に移行し、最後のデータが送信されたことを示す特別なメッセージをローカル記憶装置８２４からリモート記憶装置８２６に送信する。ステップ１７４４に後、制御はステップ１０１４に移行し、図３２のフローチャート１０００に対応して上述したように本処理が継続する。幾つかの実施形態ではステップ１７４２，１７４４は、データを転送する本処理および／またはハードウェア装置とは異なる別個の処理（および／または別個のハードウェア装置）によって行なわれることが可能である。
【０２０６】
図４３に示すように、フローチャート１７５０は、データが、図３４に対応して示された実施形態に従って蓄積された場合、ローカル記憶装置８２４からリモート記憶装置８２６にデータ送信するために非アクティブなバッファを走査する、ローカル記憶装置８２４に対応して行なわれるステップを示す。図４３のフローチャート１７５０は、図３６のフローチャート１３００と同様であり、同様のステップには、同一の参照符号が与えられている。しかし、フローチャート１７５０は、図３６のフローチャート１３００では見られない追加ステップ１７５２を含む。追加ステップ１７５２は、マルチボックス処理を容易にするために使用され、図４２のフローチャート１７４０の追加ステップ１７４４と同様である。検査ステップ１３２４において、ローカル記憶装置からリモート記憶装置に送るべきスロットがこれ以上ないと判断後、制御はステップ１３２４からステップ１７５２に移行し、塊に対応する最後のデータが送信されたことを示す特別なメッセージをローカル記憶装置８２４からリモート記憶装置８２６に送信する。ステップ１７５２の後で本処理が完了する。
【０２０７】
後述するように連続バックアップは、データを生成するのと同一の記憶装置によって連続バックアップを提供することに対応してここで記述した技術を使用して提供されるデータをリモート記憶装置８２６に記憶させることによって、ローカル記憶装置８２４からのデータに対応してリモート記憶装置８２６によって提供できる（たとえば図１９のフロー
チャート５００）。しかし、ローカル記憶装置８２４とリモート記憶装置８２６を有することは、連続バックアップ記憶、アクセス、および復元の両方の付加的な可能性を与える。
【０２０８】
上述した技術を使用して、特定のデータを読取り、データを全て戻すことによってリモート記憶装置８２６におけるデータを特定時点に復元できることを注記しておく。しかし、ホスト８２２がローカル記憶装置８２４に結合されるため、ホスト８２２に時点データへのアクセスを提供することは、リモート記憶装置８２６からのデータにホスト８２２をアクセスさせるか、またはリモート記憶装置８２６からローカル記憶装置８２４に戻されたデータを転送させることのいずれかを必要とする。
【０２０９】
図４４に示すように、フローチャート１７６０は、ローカル記憶装置８２４とリモート記憶装置８２６を使用して特定時点（目標時刻）にデータを復元することに対応して行なわれるステップを示す。本処理は第１ステップ１７６２で開始し、ここでは連続バックアップ処理が停止される。ステップ１７６２の後はステップ１７６６であり、ここではローカル記憶装置８２４は、ホスト８２２（または任意の他の装置）によってアクセスする準備ができていないようにされる。ステップ１７６６の後はステップ１７６８であり、ここではリモート記憶装置８２６上で使用される連続バックアップ仮想装置の対応するトラックがログ装置を指差す例において、ローカル記憶装置８２４上のトラックが無効である。ステップ１７６８で特定トラックを無効に設定することは、ホスト８２２に、それらのトラックに対応するデータ（またはローカル記憶装置８２４における任意の他の装置の読取データ）をリモート記憶装置８２６から読取らせる。
【０２１０】
ステップ１７６８の後はステップ１７７２であり、データがリモート記憶装置８２６で目標時刻に復元される。ステップ１７７２で行なわれる処理は、ここでは他で記述される技術のうちのいずれかを含み得る。ステップ１７７２の後はステップ１７７４であり、ここではローカル記憶装置８２４は、ホスト８２２（または他の同様の装置）によるアクセス準備ができているようになされる。ステップ１７７４の後はステップ１７７６であり、ここでは連続バックアップ処理が再度開始される。ステップ１７７６の後で本処理が完了する。
【０２１１】
図４５に示すように、ダイアグラム１７８０は、リモート記憶装置８２６における連続バックアップ仮想装置１７８４へのアクセスを提供するために、仮想装置１７８２がローカル記憶装置８２４によって提供される実施形態を示す。ダイアグラム１７８０によって示される実施形態ではホスト８２２は、仮想装置１７８２にローカルにアクセスすることによって連続バックアップ仮想装置１７８４にアクセスできる。仮想装置１７８２からの読取と仮想装置１７８２への書込は、ローカル記憶装置８２４とリモート記憶装置８２６との間のデータリンクを介して、連続バックアップ仮想装置１７８４からの対応する読取と連続バックアップ仮想装置１７８４への対応する書込を生じさせる。このように図２１のフローチャート５７０によって示された特定時点からデータを読取ることのような、ここでは他で示す処理を行なうために、仮想装置１７８２を使用できる。装置１７８２，１７８４の結合は、従来のミラーリング技術を含む任意の適切な技術によるものであることが可能である。
【０２１２】
図４６に示すように、ダイアグラム１８００は、連続バックアップ仮想装置１８０２、標準論理装置１８０４、ログ装置１８０６、およびＩ／Ｏモジュール１８０８を有した代替の実施形態を示し、それらの全ては、ホストが直接のＩ／Ｏ動作を提供するのと同一の記憶装置によって連続バックアップを提供すること（図１６）、またはホストが直接のＩ／Ｏ動作を提供する装置とは異なる装置でＩ／Ｏ動作を提供すること（図２７）に対応して、概して上述したように動作する。ダイアグラム１８００は、標準論理装置１８０４の
ローカルミラーを提供するミラー論理装置１８０４’を更に示す。ミラー論理装置１８０４’は、従来の方法で実施され、標準論理装置１８０４から分割する機能を具備でき、その結果、ミラー機能が停止し、ミラー論理装置１８０４’は、分割後に標準論理装置１８０４とは別個のＩ／Ｏ動作に対応してアクセスできる。
【０２１３】
ミラー論理装置１８０４’は、多くの目的に対応して使用できる。たとえばミラー論理装置１８０４’は、全トラックに対応する領域を割当てる必要性を排除し、連続バックアップの開始時にミラー論理装置１８０４’を分割することによって第１書込で全トラックをコピーできる。このようにたとえば図１９のフローチャート５００のステップ５０２，５２４，５２６は、削除可能であり、ログ装置１８０６のベーストラックからＮＯの場合データを得る全ての他の処理は、代わりに、ミラー論理装置１８０４’からデータを得るであろう。これはトラックに対応する第１書込に関連したオーバーヘッドのうちの幾つかを回避する。これに代えて、図１６と図２７に対応して上述した実施形態は、ログ装置にコピーされる全トラックの初期の第１書込が、標準論理装置１８０４の代わりにミラー論理装置１８０４’からの全トラックのデータをコピーすることによってバックグラウンドタスクとして行なわれることが可能である以外は、記述されるように実施できる。
【０２１４】
ここで記述したシステムは、或る目的に対応するデータの単位としてトラックを使用しているが、他のデータの単位（状況に応じて、データの可変長単位を含む）を使用可能であることは理解されなければならない。これは他のデータ構造とデータ単位にも適用される。更に幾つかの例では、フローチャートにおけるステップの順序は、適切であれば修正できる。
【０２１５】
本実施形態ではタイマは、実際の時間経過（たとえば現実の時間）を追うものであることが可能である。たとえばタイマは、本システムが初期化されてからの秒数（またはミリ秒、分、時など）を表示可能である。これに代えて、タイマは、日付と組合わせて１日のうちの実際の時刻を表示可能である。対照的に、カウンタは、実時間への如何なる相関性を必ずしも必要としない異なる状態を通じてインクリメントするために使用できる。たとえばカウンタは、本システムへの書込毎に、Ｎ回の書込毎に、または或る特定の測定基準に従ってインクリメントできる。幾つかの実施形態ではカウンタは、タイマの値の関数（少なくとも部分的に）であることが可能である。
【０２１６】
幾つかの実施形態では粒度を減少させる一方で必要メモリを減少させるように、データ変更を強固にするための機構を提供できる。データは、特定トラックまたはデータセグメントに対応して一または複数のログ装置上に記憶された連続する（時間的に）要素からのデータを併合することによって組合可能である。たとえばデータが収集される場合使用される元の粒度が１日未満（たとえば１分の粒度）であったとしても、１日に対応する変更を全て１つの要素に組合わせることが可能である。トレードオフは、複数の連続した要素を単一の要素に組合わせることが、記憶領域を節約するが、復元粒度を低減することである。しかし、粒度の低減は、或る程度の時間が通過後のような、或る例において容認可能である。たとえば初期の細かい粒度（たとえば１秒）で特定の日に対応する連続バックアップをまず提供するが、その後、第１時間量の後（たとえば１日）において、中間レベルの粒度（たとえば１分）を提供するために、粒度（また必要メモリ）を低減することは有用である場合がある。第２時間量が経過後で（たとえばもう１日）、粒度（および必要メモリ）は、更に低減される（たとえば１時間）ことが可能である。
【０２１７】
本発明は、様々な実施形態に対応して開示されるが、対応する修正は、当業者にとっては容易に明白である。従って本発明の精神と範囲は、次の請求の範囲に記述される。
【図面の簡単な説明】
【０２１８】
【図１】ここで記述されるシステムに対応して使用される複数のホストとデータ記憶装置を示す模式図。
【図２】記憶装置、メモリ、複数の導波器、および通信モジュールを示す模式図。
【図３】ここで記述されるシステムに対応して使用される様々な論理ボリュームを示す記憶装置の図。
【図４】仮想装置の使用を示す図。
【図５】複数の仮想装置の使用を示す図。
【図６】ここで記述されるシステムに対応して使用される装置テーブルを示す図。
【図７】仮想装置に対応して使用されるテーブルを読取ることを示すフローチャート。
【図８】仮想装置に対応して使用されるテーブルに書込むことを示すフローチャート。
【図９】仮想装置テーブルの修正し、仮想装置を確立することを示すフローチャート。
【図１０】ログ装置のトラックを扱うために使用されるデータ構造の修正を示すフローチャート。
【図１１】仮想装置の読取に対応して行なわれるステップを示すフローチャート。
【図１２】仮想装置がここで記述されるシステムに従って確立される標準論理装置への書込に対応してディスクアダプタによって行なわれるステップを示すフローチャート。
【図１３】仮想装置がここで記述されるシステムに従って確立される標準論理装置への書込に対応してホストアダプタによって行なわれるステップを示すフローチャート。
【図１４】仮想装置への書込に対応して行なわれるステップを示すフローチャート。
【図１５】仮想装置の削除に対応して行なわれるステップを示すフローチャート。
【図１６】連続バックアップ仮想装置を示す図。
【図１７】連続バックアップ仮想装置に対応して使用されるデータ構造を示す図。
【図１８】連続バックアップ仮想装置に対応して使用されるリンクリストを示す図。
【図１９】データ書込動作の取扱いを示すフローチャート。
【図２０】データ読取動作の取扱いを示すフローチャート。
【図２１】先の時点からのデータの読取を示すフローチャート。
【図２２】先の時点からの状態に記憶装置を復元することを示すフローチャート。
【図２３】先の時点からの状態における記憶装置へのデータの書込を示すフローチャート。
【図２４】ここで記述されるシステムの実施形態にかかる復元処理中に標準論理装置からのデータの読取、または論理装置へのデータの書込に対応して行なわれるステップを示すフローチャート。
【図２５】連続データバックアップ用の複数の記憶装置の同期を示す図。
【図２６】ここで記述されるシステムに対応して使用されるホスト、ローカル記憶装置、およびリモートデータ記憶装置を示す模式図。
【図２７】リモート記憶装置上でバックアップする連続バックアップ仮想装置を示す図。
【図２８】ここで記述されるシステムに対応して使用されるホスト、ローカル記憶装置、およびリモートデータ記憶装置の間のデータのフローを示す模式図。
【図２９】ローカル記憶装置上のデータの塊を構築と操作するアイテムを示す模式図。
【図３０】ここで記述されるシステムに対応して使用されるローカル記憶装置上のスロット用のデータ構造を示す図。
【図３１】ローカル記憶装置へのホストによる書込に応じて行なわれる処理を示すフローチャート。
【図３２】ローカル記憶装置からリモート記憶装置へのデータの転送を示すフローチャート。
【図３３】連続番号をインクリメントするローカル記憶装置に対応して行なわれるステップを示すフローチャート。
【図３４】ここで記述されるシステムの代替の実施形態にかかるローカル記憶装置上のデータの塊を構築と操作するアイテムを示す模式図。
【図３５】ここで記述されるシステムの代替の実施形態にかかるローカル記憶装置へのホストによる書込に応じて行なわれる処理を示すフローチャート。
【図３６】ここで記述されるシステムの代替の実施形態にかかるローカル記憶装置からリモート記憶装置へのデータの転送を示すフローチャート。
【図３７】複数のローカルとリモート記憶装置を、ここで記述されるシステムにかかるホストと共に示す模式図。
【図３８】ここで記述されるシステムに対応して使用されるマルチボックスモードテーブルを示す図。
【図３９】マルチボックスモードテーブルの修正を示すフローチャート。
【図４０】ホストによるサイクル切換を示すフローチャート。
【図４１】連続番号をインクリメントするローカル記憶装置に対応して行なわれるステップを示すフローチャート。
【図４２】ローカル記憶装置からリモート記憶装置へのデータの転送を示すフローチャート。
【図４３】ここで記述されるシステムの代替の実施形態にかかるローカル記憶装置からリモート記憶装置へのデータの転送を示すフローチャート。
【図４４】ローカル記憶装置とリモート記憶装置を使用して特定時点のデータを復元することを示すフローチャート。
【図４５】リモート記憶装置の連続バックアップ仮想装置へのアクセスを提供する、ローカル記憶装置によって提供される仮想装置を示す図。
【図４６】リモート記憶装置上でバックアップする連続バックアップ仮想装置とローカルミラー記憶装置を示す図。
【図１】
2009522655.tif 000002
【図２】
2009522655.tif 000003
【図３】
2009522655.tif 000004
【図４】
2009522655.tif 000005
【図５】
2009522655.tif 000006
【図６】
2009522655.tif 000007
【図７】
2009522655.tif 000008
【図８】
2009522655.tif 000009
【図９】
2009522655.tif 000010
【図１０】
2009522655.tif 000011
【図１１】
2009522655.tif 000012
【図１２】
2009522655.tif 000013
【図１３】
2009522655.tif 000014
【図１４】
2009522655.tif 000015
【図１５】
2009522655.tif 000016
【図１６】
2009522655.tif 000017
【図１７】
2009522655.tif 000018
【図１８】
2009522655.tif 000019
【図１９】
2009522655.tif 000020
【図２０】
2009522655.tif 000021
【図２１】
2009522655.tif 000022
【図２２】
2009522655.tif 000023
【図２３】
2009522655.tif 000024
【図２４】
2009522655.tif 000025
【図２５】
2009522655.tif 000026
【図２６】
2009522655.tif 000027
【図２７】
2009522655.tif 000028
【図２８】
2009522655.tif 000029
【図２９】
2009522655.tif 000030
【図３０】
2009522655.tif 000031
【図３１】
2009522655.tif 000032
【図３２】
2009522655.tif 000033
【図３３】
2009522655.tif 000034
【図３４】
2009522655.tif 000035
【図３５】
2009522655.tif 000036
【図３６】
2009522655.tif 000037
【図３７】
2009522655.tif 000038
【図３８】
2009522655.tif 000039
【図３９】
2009522655.tif 000040
【図４０】
2009522655.tif 000041
【図４１】
2009522655.tif 000042
【図４２】
2009522655.tif 000043
【図４３】
2009522655.tif 000044
【図４４】
2009522655.tif 000045
【図４５】
2009522655.tif 000046
【図４６】
2009522655.tif 000047
【国際調査報告】
2009522655.tif 000048
2009522655.tif 000049
2009522655.tif 000050