図1に示すように、ダイアグラム20は、データ記憶装置24に結合された複数のホスト22a〜22cを示す。データ記憶装置24は、ここでは他で記述されるような記憶装置24の動作を容易にする内部メモリ26を備える。データ記憶装置は、ホスト22a〜22cと記憶装置24との間でデータ読取と書込を扱う複数のホストアダプタ(HA)28a〜28cを更に備える。ダイアグラム20は、ホストアダプタ28a〜28cの各々に連結されたホスト22a〜22cの各々を示すが、ホストアダプタ28a〜28cの一または複数が他のホストに結合できることは、当業者にとっては当然のことである。
記憶装置24は、一または複数のRDFアダプタユニット(RA)32a〜32cを備えることが可能である。RDFアダプタユニット32a〜32cは、RDFリンク34に結合され、ホストアダプタ28a〜28cと同様であるが、記憶装置24と、更にRDFリンク34に結合された他の記憶装置(図示略)との間でデータを転送するために使用される。記憶装置24は、RDFリンク34に更に付加的なRDFリンク(図示略)に結合できる。
記憶装置24は、一または複数のディスク36a〜36cを更に含むことが可能であり、各々は、記憶装置24上に記憶されたデータの異なる一部を含む。ディスク36a〜36cの各々は、ディスク36a〜36cの対応する1つにデータを提供し、またディスク36a〜36cの対応する1つからデータを受信する複数のディスクアダプタユニット(DA)38a〜38cの対応する1つに結合できる。幾つかの実施形態では複数のディスクがディスクアダプタユニットによってサービスを提供可能であり、複数のディスクアダプタユニットがディスクにサービスを提供できることを注記しておく。
ディスク36a〜36cに対応する記憶装置24内の論理記憶領域は、複数のボリュームまたは論理装置に細分化できる。論理装置は、ディスク36a〜36cの物理記憶領域に対応することもあり、対応しないこともある。このようにたとえばディスク36aは、複数の論理装置を含み得るか、またはこれに代えて、単一の論理装置は、ディスク36a,36bの両方に及ぶこともある。ホスト22a〜22cは、ディスク36a〜36c上の論理装置の位置に依存しない論理装置の任意の組合わせにアクセスするように構成できる。
一または複数の内部論理データ経路が、ディスクアダプタユニット38a〜38cとホストアダプタ28a〜28c、RDFアダプタユニット32a〜32c、および内部メモリ26の間に存在する。幾つかの実施形態では一または複数の内部バスおよび/または通信モジュールを使用可能である。幾つかの実施形態では内部メモリ26が、ディスクアダプタユニット38a〜38c、ホストアダプタ28a〜28c、およびRDFアダプタユニット32a〜32cの間のデータ転送を容易にするために使用できる。内部メモリ26は、ディスクアダプタユニット38a〜38c、ホストアダプタ28a〜28c、およびRDFアダプタユニット32a〜32cの一または複数、ならびに、一または複数のディスク36a〜36cからフェッチされるデータに対応するキャッシュによって行なわれるタスクを含み得る。内部メモリ26の使用は、一層詳細に以降に記述される。
記憶装置24は、図1に示すようなホスト22a〜22cに結合されたスタンドアロン装置として提供できるか、またはこれに代えて、記憶装置24は、複数の他の記憶装置、
同様にルータ、ネットワーク接続などを含むストレージエリアネットワーク(SAN)の一部であることが可能である。記憶装置は、SAN構造に結合され、および/またはSAN構造の一部であることが可能である。ここで記述されるシステムは、ソフトウェア、ハードウェア、および/またはソフトウェアおよびハードウェアの組合わせを使用して実施可能であり、ソフトウェアは、適切な記憶媒体に記憶され、一または複数のプロセッサによって実行できる。
図2に示すように、ダイアグラム50は、記憶装置24の実施形態を示し、複数の導波器52a〜52cの各々は、内部メモリ26に結合されている。導波器52a〜52cの各々は、ホストアダプタ28a〜28c、RDFアダプタユニット32a〜32c5、またはディスクアダプタユニット38a〜38cのうちの1つを表わす。本実施形態では内部メモリ26には64個までの導波器が結合できる。もちろん代替の実施形態に対しては、より大きいまたはより小さい最大数を有した導波器が使用可能である。
ダイアグラム50は、導波器52a〜52c間の代替通信経路を提供する随意の通信モジュール(CM)54を更に示す。導波器52a〜52cの各々は、通信モジュール54に結合可能であり、その結果、導波器52a〜52cのうちのいずれか1つは、内部メモリ26を通過する必要無しに、導波器52a〜52cのうちの任意の他の1つに、データまたはメッセージを送信できる。通信モジュール54は、従来のMUX/ルータ技術を使用して実施可能であり、ここでは導波器52a〜52cのうちの送信する1つが適切なアドレスを提供し、これによって、導波器52a〜52cのうちの意図した受信する1つによってメッセージおよび/またはデータを受信させる。通信モジュール54の機能のうちの幾つかまたは全ては、一または複数の導波器52a〜52cを使用して実施可能であり、その結果、たとえば導波器52a〜52cは、導波器52a〜52cの各々に提供される相互接続機能と直接的に相互接続できる。更に導波器52a〜52cのうちの送信する1つは、同時に別の導波器52a〜52cの全てにメッセージをブロードキャストできる。
図3に示すように、記憶装置24は、複数の標準論理装置(Standard Logical Device
、STD)61〜68を備えるように示される。標準論理装置61〜68の各々は、記憶装置24に結合された一または複数のホストにアクセス可能なボリュームに対応できる。標準論理装置61〜68の各々は、ディスクドライブ36a〜36cのうちの1つに対応することもあり、対応しないこともある。このようにたとえば標準論理装置61は、ディスクドライブ36aに対応できるか、ディスクドライブ36aの一部に対応できるか、またはディスクドライブ36aの一部およびディスクドライブ36bの一部に対応できる。たとえ標準論理装置61〜68の各々がディスクドライブ36a〜36cの実際の隣接した物理的な記憶装置に対応しても対応しなくても、標準論理装置61〜68の各々は、ディスク記憶装置の隣接したブロックとしてホストに現われる。
記憶装置24は、複数の仮想装置71〜74を更に含み得る。仮想装置71〜74は、データ記憶装置の隣接したブロックを含むボリュームとして記憶装置24に結合されたホストに現われる。仮想装置71〜74の各々は、標準論理装置61〜68全体のコピー時点、標準論理装置61〜68のうちの1つの一部、または標準論理装置61〜68の一部の組合わせまたは全体を表示可能である。しかし、ここでは一層詳細に他で記述されるように、仮想装置71〜74は、標準論理装置61〜68からのトラックデータを含んでいない。代わりに、ここでは一層詳細に他で記述されるように、仮想装置71〜74の各々は、幾つかまたは全てのトラックデータを記憶するログ装置76またはログ装置78に結合される。仮想装置71〜74は、標準論理装置61〜68またはログ装置76,78のいずれか上のデータのトラックを指差すテーブルを含む。幾つかの例では、単一の仮想装置は、複数のログ装置上にデータを記憶できる。
仮想装置71は、標準論理装置61のコピー時点を表示可能である。ここでは一層詳細に他で記述されるように、仮想装置71は、ホストに現われる仮想装置71が標準論理装置61のコピー時点になることを容易にするトラックデータを含むログ装置76に結合されている。複数の仮想装置は、単一のログ装置を使用できる。このように仮想装置72〜74は、ログ装置78に結合されているように示される。同様に、複数の仮想装置に対応して単一の基準論理装置のコピー時点を表示可能である。このように仮想装置72,73は、標準論理装置64のコピー時点においてあるように示される。仮想装置72,73は、標準論理装置64の同一のコピー時点を表示可能であるか、またはこれに代えて、異なる時点において得られる標準論理装置64のコピー時点を表示可能である。標準論理装置61〜68のうちの幾つかだけが仮想装置71〜74の対応する1つに関連するように示されるが、標準論理装置61〜68の他のものは、そのようになっていないことを注記しておく。
幾つかの実施形態では記憶装置の代わりに、記憶領域を使用してここで記述されるシステムを実施できる。このようにたとえば仮想装置71〜74は、仮想記憶領域であることが可能であり、標準論理装置61〜68は、標準論理領域であることが可能であり、ログ装置76,78は、ログ領域であることが可能である。幾つかの例では、そのような実施は、ハイブリッド論理/仮想装置に対応して、単一の論理装置が標準論理装置として動作する部分、仮想装置として動作する部分、および/またはログ装置として動作する部分を持つことを可能にさせることがある。従って適切な例では、ここでの議論における装置への参照が、記憶装置に直接的に対応することも対応しないこともある記憶領域にも適用されることがあることは理解されなければならない。
図4は、標準論理装置82、仮想装置84、およびログ装置86を示す。上述したように、仮想装置84は、標準論理装置82の全てまたは一部のコピー時点を表示可能である。仮想装置84にアクセスする記憶装置に結合されたホストは、ホストが標準論理装置82にアクセスするのと同一の方法で仮想装置84にアクセスできる。しかし、仮想装置84は、標準論理装置82からのいずれのトラックデータも含んでいない。代わりに、仮想装置84は、標準論理装置82またはログ装置86のいずれか上のトラックを指差す複数のテーブル入力を含む。
仮想装置84が確立される場合(たとえばコピー時点が標準論理装置82からなるとき)、仮想装置84は、生成され、確立時の標準論理装置82のトラックを指差す適切なテーブル入力を備える。トラックを読取るために仮想装置84にアクセスするホストは、標準論理装置82のトラックを指差す仮想装置84のテーブル入力に基づいた標準論理装置82から適切なトラックを読取るであろう。
仮想装置84が確立後、ホストは、標準論理装置82にデータを書込み得る。その場合、標準論理装置82上に記憶された以前のデータは、ログ装置86にコピーされ、標準論理装置82のトラックを以前に指差した仮想装置84のテーブル入力は、データがコピーされたログ装置86の新しいトラックを指差すように修正されるであろう。このように仮想装置84にアクセスするホストは、変更されていない標準論理装置82から一方のトラックを読取るであろう。なぜならば、仮想装置84は、確立されるか、または仮想装置84が確立後、標準論理装置82からコピーしたデータを含むログ装置86から対応するトラックを読取るであろう。標準論理装置82および仮想装置84からの読取およびこれらへの書込に関するデータおよびポインタの制御はここでは一層詳細に別に議論される。
ここで記述される実施形態ではホストは、ログ装置86に直接的にアクセスするであろう。すなわちログ装置86は、もっぱら仮想装置84(および状況によってここでは一層
詳細に他で記述されるような他の仮想装置)に対応して使用されるであろう。更にここで記述される実施形態に対応しては、標準論理装置82、仮想装置84、およびログ装置86は、単一の記憶装置24上に具備可能である。しかし、たとえばRDFプロトコルまたは他のリモート通信プロトコルを使用して相互接続した互いに別個の記憶装置上の異なる論理装置とログ装置を設けることも可能である。更に適切に相互接続した互いに別個の記憶装置上に設けられた標準論理装置82、仮想装置84、および/またはログ装置86のうちの一または複数の一部を有可能である。
図5に示すように、仮想装置の使用の別の例は、標準論理装置92、複数の仮想装置94〜97、およびログ装置98を示す。図5の例では、仮想装置94は、午前10時に得られる標準論理装置92のコピー時点を表わす。同様に仮想装置95は、正午12時に得られる標準論理装置92のコピーを表わし、仮想装置96は、午後2時に得られる標準論理装置92のコピーを表わし、仮想装置97は、午後4時に得られる標準論理装置92のコピーを表わす。仮想装置94〜97が全て、ログ装置98を共有できることを注記しておく。更に複数の仮想装置94〜97のテーブル入力、または仮想装置94〜97のテーブル入力の部分集合は、ログ装置98の同一のトラックを指差すことが可能である。たとえば仮想装置95と仮想装置96は、ログ装置98の同一のトラックを指差すテーブル入力を有するように示される。
ここで議論した実施形態ではここで議論したログ装置98と他のログ装置は、記憶装置24によって管理されるログ装置のプールによって提供される。その場合、仮想装置がログ装置の付加的なトラックを必要とする場合、仮想装置は、ログ装置プールシステムを使用してより多くのログ装置記憶域を生成させるであろう(既存のログ装置または新しいログ装置用のより多くのトラックの形態で)。このように記憶装置の資源をプールすることは、本技術分野において公知である。プールを使用しない他の技術は、ログ装置記憶域を提供するために使用できる。
図6に示すように、ダイアグラム100は、装置情報をトラックに対応して使用するテーブルを示す。第1テーブル102は、ホストアダプタおよび/またはディスクアダプタユニットのような記憶装置によって、または記憶装置の要素によって使用される装置の全てに対応する。テーブル102は、記憶装置(または記憶装置の一部)によって使用される全ての論理装置に対応する複数の論理装置入力106〜108を含む。テーブル102中の入力は、標準論理装置、仮想装置、ログ装置、および他の種類の論理装置に対応する記述を含む。
テーブル102の入力106〜108の各々は、論理装置の各々に対応する情報を含む別のテーブルに対応する。たとえば入力107は、テーブル112に対応できる。テーブル112は、オーバーヘッド情報を含むヘッダを含む。更にテーブル112は、論理装置のシリンダの各々に対応する入力116〜118を含む。本実施形態では論理装置は、論理装置がどのように初期化されるかに依存した任意の数のシリンダを含み得る。しかし、他の実施形態では論理装置は、固定数のシリンダを含み得る。
テーブル112は、余分なトラックバイト119の区域を備えるように示される。余分なトラックバイト119は、ここで別に議論される方法でログ装置に対応して使用される。ここで開示された実施形態ではログ装置の各トラックに対応して8バイトの余分なトラックバイトがある。ログ装置ではない装置について、余分なトラックバイト119は、使用されないこともある。
シリンダ入力116〜118の各々は、トラックテーブルに対応する。たとえば入力117は、オーバーヘッド情報を有するヘッダ124を含むトラックテーブル122に対応
できる。トラックテーブル122は、トラックの各々に対応する入力126〜128を更に含む。本実施形態では全てのシリンダに対応して15個のトラックがある。しかし、他の実施形態に対応して、シリンダの各々に対応して異なる数のトラック、または各シリンダに対応して可変数のトラックを具備できる。標準論理装置とログ装置について、入力126〜128の各々の情報は、記憶装置24(またはシステムがそのように構成されている場合、リモート記憶装置)のディスクドライブ42〜44のうちの1つの物理アドレスへのポインタ(直接または間接)を含む。このようにトラックテーブル122は、テーブル102,112,122に対応する論理装置の論理アドレスを、記憶装置24のディスクドライブ42〜44上の物理アドレスにマッピングするために使用できる。仮想装置について、テーブル122の入力126〜128の各々は、対応する標準論理装置または対応するログ装置のトラックを指差す。他の実施形態に対応しては、しかし、テーブル102,112,122が、データのトラックを含む標準論理装置に対応してのみ使用される。一方、トラックの単純なアレイのような別の種類のテーブルが、対応する標準論理装置またはログ装置のトラックに仮想装置のトラックをマッピングするために仮想装置によって使用される、異なる機構を使用できる。
ログ装置の各トラックは、フリーであるか(仮想装置によって使用されていないことを意味する)、または割当てられている(トラックが一または複数の仮想装置にテーブル入力によって指差されることを意味する)のいずれかである。本実施形態ではログ装置のトラックは、ログ装置のフリートラックの全ての二重リンクリストをまず生成することによって管理される。二重リンクリスト用のポインタは、テーブル112の余分なトラックバイト119によって提供され、その結果、ログ装置用の余分なトラックバイト119は、ログ装置の全てのトラック用に8バイトを含む。フリーなログ装置の全てのトラックについて、付加的な8バイトは、ログ装置の次のフリートラックを指差す順方向ポインタと、ログ装置の前のフリートラックを指差す逆方向ポインタとを含む。このように二重リンクリストを使用することは、ログ装置のフリートラックにアクセスすることを容易にする。
更にログ装置のトラックが割当てられる(すなわち一または複数の仮想装置によって使用される)場合、トラックに対応する余分なトラックバイト119は、標準論理装置の対応するトラックに指戻すために使用できる。このように仮想装置が確立後で書込が標準論理装置に行なわれる場合、標準論理装置からのデータは、ログ装置の新しいトラックにコピーされ、ログ装置の新しいトラックに対応する余分なトラックバイトは、データ元の標準論理装置のトラックに指戻すようになされる。標準論理装置の対応するトラックにログ装置の各トラックを指戻させることは、たとえばデータ復元状況において有用である。
更に本実施形態に対応しては、割当てられたトラックに対応する1トラック当たりの余分な8バイトのポインタもまた、データと共に記憶される。すなわちログ装置の特定トラックが割当てられる場合、標準論理装置の対応するトラックに戻されるポインタは、余分なトラックバイト119と共に記憶され、更にポインタは、ログ装置のトラック上でトラックデータ自体と共に記憶される。CKDフォーマットしたトラックについて、余分な8バイトは、ブロック「0」に記憶できる。FBAフォーマットしたトラックについて、余分な8バイトは、トラックの端部上に添付された追加ブロックに記憶できる。本実施形態ではブロックは、512バイトであり、FBAトラックは、40個のブロックを含み、それは追加ブロックが添付される場合「41」に増加される。様々なトラックフォーマットが、たとえばヤナイらの特許文献5に開示され、それは参照によってここに援用される。
図6のテーブル102,112,122は、記憶装置24のグローバルメモリ46に記憶できる。更に特定のホストによってアクセスされる装置に対応するテーブルは、ホストアダプタ32〜36のうちの対応する1つのローカルメモリに記憶できる。更にRDFアダプタユニット48および/またはディスクアダプタユニット36〜38もまた、テーブ
ル102,112,122の一部を使用し、ローカルに記憶できる。
図7に示すように、フローチャート140は、仮想装置を通じてアクセス可能なトラックに対応する装置テーブルからホストがデータを読取る場合行なわれるステップを示す。すなわちフローチャート140は、仮想装置に対応するテーブル入力によって指差されるトラックに関する情報を得ることを示す。
本処理は検査ステップ142で開始し、ここでは対象トラックが標準論理装置またはログ装置上にあるか否か判断される。これは仮想装置に対応する装置テーブル入力にアクセスし、標準論理装置またはログ装置のいずれかを対象トラックに対応するテーブル入力が指差すかを判断することによって判断される。検査ステップ142において、仮想装置用のテーブルにおけるポインタが標準論理装置を指差すと判断された場合、制御はステップ142からステップ148に移行し、ここでは対象のテーブル入力が読取られる。ステップ148の後で本処理が完了する。
検査ステップ142において、対象トラックに対応する仮想装置用の装置テーブルにおけるポインタがログ装置を指差すと判断された場合、制御はステップ142からステップ158に移行し、ここでは対象のログテーブル入力が読取られる。ステップ158の後で本処理が完了する。
幾つかの例では、データへのアクセスは、データに同時にアクセスする多重処理を禁止するフラグまたはロックによって制御できることを注記しておく。これはたとえば装置テーブルが読取られるかまたは修正されている場合に特に有用である。ここで示される方法は、多重処理によってデータへのアクセスを制御する様々なシステムのうちのいずれか1つを意図し、「フラグ」または「セマフォ」としても知られているソフトウェアおよび/またはハードウェアロックの従来の組合わせを含む。幾つかの例では、データにアクセスする処理は、別の処理がデータを解除するまで待機する必要がある場合がある。1つの実施形態ではハードウェアロックは、ソフトウェアロック(フラグ)へのアクセスを制御し、その結果、処理は、先ずハードウェアロックを得て、ソフトウェアロックを検査し、そしてソフトウェアロックがクリアである場合、本処理はソフトウェアロックを設定し、ハードウェアロックを解除する。本処理がハードウェアロックを得て、ソフトウェアロックがクリアではないと判断された場合、本処理はハードウェアロックを解除し、その結果、ソフトウェアロックを設定する別の処理の後でソフトウェアロックをクリアできる。更に幾つかの例では、先ず特定トラックに対応するテーブル入力を読取り、トラックをキャッシュスロットに読取り(トラックが既にキャッシュ内にない場合)、キャッシュスロットをロックし、そして対応するテーブル入力を再度読取ることが有用であることを注記しておく。
図8に示すように、フローチャート170は、標準論理装置またはログ装置に対応する仮想装置用の装置テーブルへの情報の書込に対応して行なわれるステップを示す。本処理は第1ステップ172で開始し、ここでは書込まれる装置テーブル入力に対応する特定トラックが標準論理装置またはログ装置上にあるか否か判断される。対象の特定トラックが標準論理装置上にあると判断された場合、制御はステップ172からステップ178に移行し、ここでは書込まれる装置テーブル入力に対応するトラックがロックされる。ステップ178でトラックをロックすることは、他の処理がトラックにアクセスし、対応するテーブル入力を修正するのを防止する。一方、現在の処理は、トラックに対応する装置テーブル入力を修正する。ステップ178の後はステップ182であり、ここでは書込動作が行なわれる。ステップ182の後はステップ184であり、ここではトラックがロック解除される。ステップ184の後で本処理が完了する。
検査ステップ172において、修正されている仮想装置に対応するテーブル入力に対応したトラックがログ装置を指差すと判断された場合、制御は検査ステップ172からステップ194に移行し、ここでは書込まれている装置テーブルの入力に対応するログ装置のトラックがロックされる。ステップ194の後はステップ196であり、ここでは書込動作が行なわれる。ステップ196の後はステップ198であり、ここではトラックがロック解除される。ステップ198の後で本処理が完了する。
図9に示すように、フローチャート210は、仮想装置に対応する装置テーブルの修正に対応して行なわれるステップを示す。これは仮想装置用の装置テーブルのトラックに対応する入力によって指差される標準論理装置またはログ装置用の装置テーブルを修正することを示した図8のフローチャート170と対比できる。フローチャート210では、仮想装置用の装置テーブルが、標準論理装置用の装置テーブルまたはログ装置用の装置テーブルに対立するものとして修正される。
本処理は第1ステップ212で開始し、ここではテーブルへの修正が仮想装置の確立に関係があるか否か判断される。後述するように仮想装置の確立は、仮想装置が生成後、仮想装置をホストによるアクセス可能にすることを含む。仮想装置を確立することは、仮想装置を標準論理装置に関連させる(従って確立時の標準論理装置のコピー時点を表わす)。標準論理装置に関連させる前には、仮想装置は確立されず、ホストによってアクセス可能ではない。確立後、仮想装置はホストによるアクセス可能である。
ステップ212において、テーブルへの修正が仮想装置の確立に関係すると判断された場合、制御はステップ212からステップ214に移行し、ここでは仮想装置用の装置ロックは、他の処理によるテーブルへのアクセスを禁止するように設定される。装置ロックは、ここでは別に議論するキャッシュスロットロックと類似する。
ステップ214の後はステップ216であり、ここでは仮想装置テーブルのポインタが、標準論理装置のトラックを指差すようになされ、そして保護ビットが、確立される仮想装置に対応する標準論理装置のトラックの各々に対応して設定される。本実施形態では標準論理装置のトラックの各々は、保護ビットとして設定可能な16ビットを有し、各仮想装置に対応する1つは、標準論理装置に確立される。幾つかの実施形態では保護ビットは、仮想装置と無関係な用途を有することがある。確立される新しい仮想装置は、16ビットのフィールドにおける新しいビット位置を割当てられることがある。一方、標準論理装置の各トラックのビットが設定されることがある。ここでは一層詳細に別に議論するように、標準論理装置への次の書込がその後に続く、設定される保護ビットは、特別な処理が、標準論理装置に確立される仮想装置を提供する必要があることを示す。特別な処理は、一層詳細にここでは他で記述される。更にステップ216において、仮想装置用の装置テーブルに対応するトラック入力は全て、標準論理装置の対応するトラックを指差すように修正される。このように仮想装置がまず確立される場合、仮想装置の装置テーブルのポインタの全ては、標準論理装置のトラックを指差す。
ステップ216の後はステップ217であり、仮想装置が準備完了状態に設定され、従って仮想装置をホストにアクセス可能にする。ステップ217の後はステップ218であり、仮想装置がロックを解除され、従って他の処理によるアクセスを可能にする。ステップ218の後で本処理が完了する。
検査ステップ212で仮想装置が確立されていないと判断された場合(すなわち或る他の動作が行なわれている)、制御は検査ステップ212からステップ222に移行し、修正されている仮想装置用の装置テーブルの入力に対応するトラックをロックする。ステップ222でロックされるトラックは、標準論理装置上のトラック(仮想装置の装置テーブ
ルにおける対象の入力が標準論理装置を指差す場合)、またはログ装置のトラック(対象の入力がログ装置を指差す場合)のいずれかであることが可能であることを注記しておく。ステップ222の後はステップ224であり、ここでは仮想装置用の装置テーブルへの修正が行なわれる。ステップ224の後はステップ226であり、ここではトラックがロック解除される。ステップ226の後で本処理が完了する。
図10に示すように、フローチャート230は、ログ装置のトラックの操作に対応して行なわれるステップを示す。上述したように、ログ装置のトラックは、フリーなログ装置のトラック(すなわち新データを受入れる利用可能なトラック)の二重リンクリストを生成することによって維持される。このように一または複数のトラックが、対応する仮想装置に関する使用に必要とされる場合、フリートラックは、二重リンクリストから得られ、それは仮想装置による使用のために提供されるトラックが、もはやフリーではないことを示す従来の方法で修正される。反対に、一または複数の仮想装置によって使用される一または複数のトラックがもはや必要ではない場合、トラックは、トラックがフリーであることを示すために従来の方法で二重リンクリストに戻される。図10のフローチャート230は、トラックを操作する多重処理によってトラック(およびトラックポインタ)へのアクセスを制御することに対応して行なわれるステップを示す。
本処理は検査ステップ232で開始し、ここでは行なわれている動作が、フリーリストにあるトラックのみを修正しているか否か判断される。たとえばリストの或る一部から別の一部へ、または或るフリーリストから別のフリーリストへ(複数のフリーリストの場合)フリートラックを転送することによってフリーリストのみのトラックを修正することが、任意のデータに対応するトラックに対応する修正を必要としないことを注記しておく。検査ステップ232において、行なわれている修正がフリーリストのトラックのみを含んでいないと判断された場合、制御はステップ232からステップ234に移行し、ここではトラックが、他の処理によるアクセスを防止するようにロックされる。
ステップ234の後、またはステップ234に達しない場合ステップ232の後は、検査ステップ236であり、ここでは操作が、割当てられたトラックのみを含むか否か判断される。割当てられたトラックのみに関する任意の動作について、フリートラックのログ装置リストをロックする必要はない。ステップ236において、行なわれている動作が、割当てられたトラックのみを操作するものではないと判断された場合、制御はステップ236からステップ238に移行し、ここではフリートラックのログ装置リストが、他の処理によるアクセスを防止するようにロックされる。ステップ238の後、またはステップ238が実行されない場合にステップ236の後は、ステップ242であり、ここでは修正が行なわれる。
ステップ242の後は、検査ステップ244であり、ここでは操作が、割当てられたトラックのみを含むか否か判断される。検査ステップ244において、行なわれている修正が、割当てられたトラックのみを含んでいないと判断された場合、制御はステップ244からステップ246に移行し、ここではログ装置フリーリストがロック解除される。ステップ246の後、またはステップ246に達しない場合ステップ244の後は、検査ステップ248であり、ここでは行なわれている動作が、フリーリストにあるトラックのみを修正しているか否か判断される。ステップ248において、行なわれている動作が、フリーリストにあるトラックのみを修正していると判断された場合、制御はステップ248からステップ252に移行し、ここではステップ234でロックされたトラックまたは複数のトラックがロック解除される。ステップ252の後、またはステップ252が実行されない場合、ステップ248の後で本処理が完了する。
図11に示すように、フローチャート280は、仮想装置からのデータを読取ることに
対応して行なわれるステップを示す。本処理は検査ステップ282で開始し、ここでは仮想装置の対象トラックに対応する装置テーブル入力が、標準論理装置を指差すか、またはログ装置を指差すか否か判断される。検査ステップ282において、テーブルが標準論理装置を指差すと判断された場合、制御はステップ282からステップ284に移行し、ここではトラックが標準論理装置から読取られる。ステップ284の後で本処理が完了する。これに代えて、検査ステップ282において、仮想装置の装置テーブルがログ装置を指差すと判断された場合、制御はステップ282からステップ286に移行し、ここでは対象トラックがログ装置から読取られる。ステップ286の後で本処理が完了する。
幾つかの例では、検査ステップ282に先立って、読取られる対象トラックが既にキャッシュメモリ(グローバルメモリ)にあると判断できることを注記しておく。その場合、トラックは、ステップ282,284,286のうちのいずれも実行せずにキャッシュメモリから得ることが可能である。
図12に示すように、フローチャート300は、仮想装置が、以前に確立された標準論理装置のトラックに書込むことに対応してディスクアダプタユニットによって行なわれるステップを示す。本処理は第1ステップ302で開始し、ここでは標準論理装置に書込まれるトラックに対応するいずれかの保護ビットが設定されているか否か判断される。検査ステップ302において、保護ビットが設定されていないと判断された場合、制御はステップ302からステップ304に移行し、ここでは通常の書込動作が行なわれる。すなわちステップ304では、データは、標準論理装置に以前に確立された仮想装置の存在に関与しない従来の方法で標準論理装置に書込まれる。ステップ304の後で本処理が完了する。
検査ステップ302において、一または複数の保護ビットが、書込まれる標準論理装置のトラックに設定されていると判断された場合、制御はステップ302からステップ306に移行し、ここではログ装置のフリートラックが得られる。ログ装置のフリートラックは、標準論理装置のトラックからデータをコピーするために必要である。更にここでは一層詳細に他で記述されるように、ログ装置のフリートラックは、フリートラックの二重リンクリストを使用して管理できる。このようにステップ306では、ログ装置のフリートラックのリストを詳細検討することによって、且つ使用するフリートラックのうちの1つを削除するためにポインタを適切に修正することによって、フリートラックを得ることが可能である。
ステップ306の後はステップ308であり、ここでは検査ステップ302で設定されていると判断した保護ビットに対応する各仮想装置について、標準論理装置に書込まれるトラックを初めに指差した仮想装置のポインタは、ステップ306で得られたログ装置のフリートラックを指差すためにステップ308で修正される。上述したように、複数の仮想装置を標準論理装置に確立できる。特定の標準論理装置に確立されている各仮想装置について、特定の保護ビットは、標準論理装置のトラックの各々に対応して設定されるであろう。このようにステップ308では、トラックポインタが、ステップ302で検出された設定保護ビットに対応する全ての仮想装置に対応して変更される。仮想装置の装置テーブルにおけるトラックポインタは、ステップ306で得られた新しいトラックを指差すように修正される。
ステップ308の後はステップ312であり、ここではデータが、ステップ306で得られたログ装置の新しいトラックに標準論理装置からコピーされる。ここで開示される実施形態ではデータは、ディスク記憶装置から記憶装置のグローバルメモリに(たとえばキャッシュスロットに)データを移行させ、ステップ306で得られたログ装置のトラックにデータをコピーさせるために書込保留指標を設定することによって、コピーできる。ス
テップ312は、ステップ306で得たログ装置の新しいトラックに書込まれる標準論理装置のトラックからデータをコピーすることを表わす。全てのポインタがステップ308で修正されるため、トラックが書込まれるのに先立って標準論理装置に確立される任意の仮想装置は、ここで古いデータを指差す(すなわち仮想装置が確立された場合標準装置のトラックに存在するデータ)。トラックのコピーに対応して、標準論理装置トラックの保護ビットは、ログ装置のトラックに対応する仮想装置マップビットにコピーされることも注記し、それは一層詳細に別に説明される。
ステップ312の後はステップ314であり、ここではステップ306で得られたログ装置のトラックは、テーブルにおける余分なバイト(別に議論する)が、書込まれる標準論理装置のトラックに指戻すように修正される。ログ装置のトラックを、データが提供される標準論理装置の対応するトラックに指差させることは、多くの例で有用である。たとえばそれはデータ復元に対応して有用であることがある。ステップ314の後はステップ316であり、ここでは書込まれる標準論理装置のトラックの保護ビットがクリアされる。ステップ316の後はステップ318であり、ここでは状態がホストアダプタに送信される。ステップ318の後で本処理が完了する。
一旦、ホストアダプタが状態を受信した場合、ホストアダプタは、通常の書込動作を行ない、その場合、検査ステップ302では、ビットがステップ316でクリアされるため、保護ビットは設定されないであろうことを注記しておく。書込動作を行なっているホストアダプタは、ステップ302で設定される保護ビットを見て、適切なディスクアダプタユニットに保護要求を送信する。その後、ホストアダプタは、ディスクアダプタユニットから切断され、通常の書込が行なわれることがあることを示す状態がディスクアダプタユニットから届くのを待機する。ホストアダプタが切断され、ディスクアダプタユニットからの状態を待機する。一方、ディスクアダプタユニットは、フローチャート300に開示されるステップを行なうことが可能である。これは一層詳細に下に記述される。
図13に示すように、フローチャート320は、一または複数の仮想装置が確立される標準論理装置への書込に対応してホストアダプタによって行なわれるステップを示す。本処理は第1検査ステップ322で開始し、ここではいずれかの保護ビットが、書込まれる標準論理装置のトラックに対応して設定されているか否か判断される。検査ステップ322において、保護ビットが設定されていないと判断された場合、制御はステップ322からステップ324に移行し、ここでは通常の書込が行なわれる。ステップ324の後で本処理が完了する。
検査ステップ322において、一または複数の保護ビットが、書込まれる標準論理装置のトラックに対応して設定されていると判断された場合、制御はステップ322からステップ326に移行し、ここではホストアダプタは、保護ビットがトラックに対応して設定されていることを示す要求をディスクアダプタユニットに送信する。ステップ326で送信された要求をディスクアダプタユニットが受信した場合、ディスクアダプタユニットは、上述した図12のフローチャート300において記述された動作を行なう。ステップ326の後はステップ328であり、ここではホストアダプタは、動作(状況によって無関係の)が他の処理および/または他のホストアダプタによってディスクアダプタユニットで行なわれることを可能にするためにディスクアダプタユニットから切断する。
ステップ328の後はステップ332であり、ここではホストアダプタは、図12のフローチャート300において記述された動作をディスクアダプタユニットが行ない、設定保護ビットを扱うために適切なステップが行なわれることを示す状態をディスクアダプタユニットがホストアダプタに送信することを待機する。ステップ332に続いて、本処理はステップ322に戻り、ここでは標準論理装置のトラックに対応する保護ビットが再び
検査される。2回目の反復では、ディスクアダプタユニットが、フローチャート300のステップを行なうことに対応して保護ビットをクリアするため、書込まれる標準論理装置のトラックの保護ビットがステップ322でクリアされるであろうことが期待されることを注記しておく。もちろん新しい仮想装置が、保護ビットをディスクアダプタユニットがクリアすることと、再び実行されるステップ322との間で標準論理装置に確立されることは常に可能である。しかし、標準論理装置の特定トラックに対応するステップ322の2回目の反復が、全ての保護ビットがクリアされていると判断するであろうことが通常は期待され、制御はステップ322からステップ324に移行し、通常の書込を行なう。
図14に示すように、フローチャート340は、仮想装置への書込に対応して行なわれるステップを示す。フローチャート340は、ホストアダプタとディスクアダプタユニットの両方によって行なわれるステップを表わし、従って図12のフローチャート300と図13のフローチャート320と同様に、2つのフローチャートとして提供されている。しかし、フローチャート340が、フローチャート300,320記述されたものと同様の、本明細書の文章の対応する部分に記述されたステップの分割部分を表示可能であることは当業者によって理解されるであろう。
本処理は第1ステップ342で開始し、ここでは仮想装置が標準論理装置を指差すか否か判断される。YESの場合、制御は検査ステップ342からステップ344に移行し、ログ装置のフリートラックが得られる。ステップ344の後はステップ346であり、ここでは書込まれるトラックに対応する標準論理装置からのデータが、標準論理装置からステップ344で得られるログ装置のトラックにコピーされる。ステップ346の後はステップ348であり、トラックに対応する仮想装置ポインタが、ステップ344で得られるトラックを指差すように調整される。ステップ348の後はステップ352であり、ここでは仮想装置に対応する保護ビットが、標準論理装置のトラックデータ中でクリアされ、よって、標準装置のトラックへ書込時に仮想装置のための特別な処理が必要ではないことを示す。ステップ352の後はステップ354であり、ここでは書込が実行される。ステップ354では、書込まれるデータは、ステップ344で得られたトラックに書込まれるトラックまたはトラックの一部であることが可能である。ステップ354の後で本処理が完了する。データが全トラックに対応する場合、ステップ346を排除でき、それはステップ354で全トラックのデータを書込むことが、ステップ346でコピーしたデータの全てを上書きするため、標準論理装置のトラックからログ装置の新しいトラックにデータをコピーする。
検査ステップ342において、書込まれる仮想装置のトラックに対応するポインタが標準論理装置を指差していないと判断された場合、制御はステップ342から検査ステップ356に移行し、ここでは複数の仮想装置が標準論理装置に確立されているか否か判断される。NOの場合、制御はステップ356からステップ358に移行し、ここではログ装置のトラックに対応する通常の書込動作が行なわれる。検査ステップ356において、一または複数の仮想装置が標準論理装置に確立されていると判断された場合、制御はステップ356からステップ362に移行し、ここではログ装置からのフリートラックが得られる。
ステップ362の後はステップ364であり、ここでは書込まれる仮想装置に対応するトラックのデータが、ステップ362で得られたトラックにコピーされる。ステップ364の後はステップ366であり、仮想装置ポインタが、新しいトラックを指差すように調整される。1つの実施形態では書込まれる仮想装置に対応するポインタは、新しいトラックを指差すようになされる。これに代えて、書込まれる仮想装置に対応するポインタを変更しないことも可能であり、代わりに、ステップ366でトラックを指差す他の仮想装置の全てに対応する全てのポインタを調整できる。
ステップ366の後はステップ368であり、ここではログ装置のトラックに対応する仮想装置マップビットが修正される。ログ装置トラックについて、仮想装置マップビットは、どの仮想装置が各トラックを指差すかを示すために使用可能であり、ここでは1つの実施形態において、16ビットの仮想装置マップビットがあり、各ビットは、特定の仮想装置に対応する。このようにステップ356における検査は、トラックに対応する仮想装置マップビットを検査できる。
ステップ368の後はステップ369であり、ここでは書込が実行される。ステップ362で得られたトラックに、または書込まれる仮想装置によって最初に指差されるトラックに書込が実行されるか否かは、ポインタがステップ366でどのように調整されるかに依存することを注記しておく。しかし、全ての場合、データは、データが書込まれる仮想装置によって指差されたトラックに書込まれる。ステップ369の後で本処理が完了する。
図15に示すように、フローチャート370は、仮想装置の削除(すなわち排除)に対応して行なわれるステップを示す。一旦、仮想装置が確立され、意図した目的に使用されると、仮想装置を削除することが望ましいことがある。本処理は第1ステップ372で開始し、ここではポインタは、仮想装置の第1トラックを指差すように設定されている。仮想装置は、仮想装置に対応する各トラックを検査することによって削除される。
ステップ372の後はステップ374であり、ここでは検査されている仮想装置のトラックが標準論理装置を指差すか否か判断される。YESの場合、制御はステップ374からステップ376に移行し、削除される仮想装置に対応した標準論理装置のトラックの保護ビットをクリアする。ステップ376の後はステップ378であり、ここではポインタは、次のトラックを検査することによって処理を続けるために仮想装置の次のトラックを指差す。ステップ378の後はステップ382であり、ここでは処理が完了したか(すなわち仮想装置の全てのトラックが処理されているか)否か判断される。NOの場合、制御はステップ382から上述した検査ステップ374に移行する。
検査ステップ374において、検査されている仮想装置のトラックが標準論理装置を指差していないと判断された場合、制御はステップ374からステップ384に移行し、ここでは削除される仮想装置に対応するログ装置のトラックの仮想装置マップビットがクリアされる。ログ装置の各トラックは、どの仮想装置がログ装置のトラックを使用するかを示す1組の仮想装置マップビットを具備できる。このようにステップ384では、削除される仮想装置に対応する仮想装置マップビットがクリアされる。
ステップ384の後は検査ステップ386であり、ここではステップ384でクリアされたビットがトラックに対応して設定された最後の仮想装置マップビットであったか否か判断される。換言すれば、検査ステップ386は、ログ装置上のトラックを使用する他の仮想装置があるか否かを判断する。検査ステップ386では、最後の仮想装置マップビットがステップ384でクリアされたと判断された場合には(従って他の仮想装置がトラックを使用していない)、制御はステップ386からステップ388に移行し、ここでは別に議論されるように、ログ装置のトラックが、ログ装置のトラックのフリーリストに戻される。ステップ388の後、または上述したように、ステップ384でクリアされたビットが、ログ装置のトラックの最後の仮想装置マップビットではないと判断された場合のステップ386の後は、ステップ378であり、ここでは仮想装置の次のトラックは、後の検査のために指差される。一旦、仮想装置に対応するトラックが全て処理されると、テーブルと仮想装置に関連した他のデータ構造もまた削除できるが、幾つかの実施形態では仮想装置が確立解除後で仮想装置がホストによって使用可能にされていない限り、テーブル
と仮想装置からの他のデータ構造は、維持できる。
幾つかの例では、データの連続またはほぼ連続バックアップのための機構を提供することが望ましいことがある。もちろん上述したシステムは、各時間インクリメントTで新しい仮想装置を単に生成することによる機能を提供でき、ここではTは、比較的短い時間である。同様にデータの各書込の際に、新しい仮想装置を生成できる。しかし、相当数の新しい仮想装置を生成することは、望ましくないことがある方法において、相当量のオーバーヘッドと記憶領域を消費するであろう。
図16に示すように、ダイアグラム400は、図1〜図15に対応して上述した仮想装置と同様であるが、データの連続またはほぼ連続のバックアップを容易にする多くの方法(下で議論する)において異なる連続バックアップ(CB)仮想装置402を示す。連続バックアップ仮想装置402は、複数のトラックに対応する標準論理装置404へのポインタを含み、その結果、任意の特定トラックに対応して、連続バックアップ仮想装置402が標準論理装置404の対応するトラックを指差す場合、対応するトラックは、連続バックアップ仮想装置402の生成から変更されていない。この点において、連続バックアップ仮想装置402は、図1〜図15に対応して上述した仮想装置と同様である。トラックのほか、任意のサブセクションが、ここで記述されるシステムを実施するために使用できることを注記しておく。従ってトラックが言及されているが、可変サイズを含む別のサイズを有した他の単位のデータが使用されることがあることは、続く議論に対応して理解されなければならない。
連続バックアップ仮想装置402は、複数の対応するトラックに対応するログ装置406へのポインタを更に含む。ログ装置406は、連続バックアップ仮想装置402の生成から変化するトラックに対応するデータを含む。しかし、ログ装置406に対応して使用される内容とデータ構造は、図1〜図15に対応して上述したものとは異なる。ログ装置406は、一層詳細に下で議論する。
ダイアグラム400は、図1に示されるディスクアダプタユニット38a〜38cとホストアダプタ28a〜28cによってなされた入力と出力要求のような、他のモジュール間の入出力処理を扱うI/Oモジュール408を更に示す。I/Oモジュール408の動作は、一層詳細に以降に記述される。
I/Oモジュール408は、サイクルカウンタ412および/またはタイマ414からのデータを提供される。サイクルカウンタ412および/またはタイマ414の使用は、以下で詳述する。随意に、サイクルカウンタ412および/またはタイマ414は、複数の記憶装置(すなわち一貫性群(consistency group))に対応して記憶装置を同期させるために使用できる外部処理416によって制御できる。これも以下で詳述する。
図17に示すように、ログ装置406にデータを記憶するために使用できるデータ構造450が示される。データ構造450は、装置情報フィールド452を含む。装置情報フィールドは、装置識別子、シリンダ、ヘッド、および長さ識別子のような装置情報と、トラックIDテーブルとを含む。もちろん異なる実施形態に対応しては、異なる装置情報が装置情報フィールド452に提供できる。
データ構造450は、タイマフィールド454および/またはサイクルカウンタフィールド456を更に含み得る。タイマフィールド454は、図16のダイアグラム400に対応して上述したタイマデータ要素414に対応できる。同様にサイクルカウンタフィールド456は、図16のダイアグラム400のサイクルカウンタデータ要素412に対応
できる。フィールド454,456に提供される値は、データ構造450に対応するデータの例がそれぞれ生成される時点の対応するデータ要素412,414の値である。これは事実上、タイムスタンプである。
データフィールド462は、ログ装置406(ユーザによって書込まれるデータ)に記憶されている特定のデータに対応する。本実施形態ではデータフィールド462は、各要素を提供されるデータ量が変わるように可変サイズを具備できる。本実施形態ではデータフィールド462に提供されるデータは、複数のトラックには及ばず、従って単一のトラックよりも大きくはない。データ構造450は、後述のようにデータ要素の二重リンクリストを生成するための順方向ポインタフィールド464と逆方向ポインタフィールド466を更に含む。
図18に示すように、ログ装置406は、複数の二重リンクリスト482〜484を備えるように示される。リンクリスト482〜484の各々は、一または複数のデータ要素を含み、各々は、図17に示され、上述したような構造を具備する。本実施形態ではリンクリスト482〜484の各々は、標準論理装置404の特定トラックに(従って連続バックアップ仮想装置402の特定トラックに)対応する。もちろん単独リンクリストのような他のデータ構造が使用可能である。連続バックアップ仮想装置402の生成からデータが特定トラックに書込まれていない例では、対応するリンクリストは、ログ装置406に記憶されていないであろう。NOの場合、連続バックアップ仮想装置402における適切なトラック入力は、リンクリスト482〜484の各々の第1要素を指差す。本実施形態ではリンクリスト482〜484の各々の第1要素は、直前に書込まれた要素であり、次の要素は、次に直前に書込まれた要素である。もちろん任意の適切な要素の構成を使用できる。後述するようにリンクリスト482〜484の各々の各要素は、一部的なトラックのデータを含み得る。このようにリンクリスト482〜484の一または複数が、全トラックのデータを含まないことがある。
図19に示すように、フローチャート500は、ここで記述されるシステムにかかるデータ書込動作に対応して行なわれるステップを示す。本処理は第1検査ステップ502で開始し、ここでは書込まれるデータが、特定トラックに対応する第1データであるか否か(すなわち連続バックアップを開始してから、前の書込が行なわなかったか)が判断される。書込まれるデータが第1書込ではない場合、制御はステップ502からステップ504に移行し、ここではサイクルカウンタ412の現在値が、データが加えられるリンクリストの直前のデータ要素に対応するサイクルカウンタの値に等しいか否か判断される。本実施形態では直前の要素が連続バックアップ仮想装置402によって指差される。このように特定トラックに対応する書込について、ログ装置406におけるリンクリスト482〜484の対応する1つにおける第1要素は、サイクルカウンタフィールド456がサイクルカウンタデータ要素412に記憶された値に等しい値を含むか否かを確かめるために検査される。本実施形態では同一のサイクルカウンタ値である間に生じる書込動作は、同時に生じたと考えられる。従って連続バックアップの粒度は、サイクルカウンタの更新間の時間である。サイクルカウンタの更新は、以下で詳述する。
検査ステップ504において、サイクルカウンタの現在値が、データは書込まれるリンクリスト482〜484の1つの直前のデータ要素と共に記憶されたサイクルカウンタの値に等しいと判断された場合、制御はステップ504から検査ステップ506に移行し、行なわれる現在の書込が、直前のデータ要素のデータフィールド462内に適合するデータを含むか否か(すなわち第2書込動作が第1データ書込動作からのデータの部分集合であるか否か)を判断する。後述するようにデータフィールド462は、可変長であり、トラックの一部のみであることもあり、ないこともある。従ってステップ506の検査では、現在書込まれているデータが、直前のデータ要素のデータフィールド462を上書きで
きたか否か判断される。YESの場合、制御は検査ステップ506からステップ507に移行し、ここではデータが上書きされる。ステップ507の後はステップ508であり、ここでは装置情報フィールドは、ステップ507における上書きを反映するために更新される(たとえばトラックidテーブルが更新される)。ステップ508の後で本処理が完了する。
検査ステップ506において、現在書込まれているデータが、トラックに対応する直前のデータ要素のデータフィールド462内に適合しないと判断された場合、または検査ステップ504において、サイクルカウンタの現在値が、直前のデータ要素のサイクルカウンタフィールド456における値とは等しくないと判断された場合、制御はステップ512に移行し、新データ要素が割当てられる。ステップ512で新データ要素を割当てることは、データ構造450に対応して十分な領域を得ることを含む。データ構造450のサイズが、データフィールド462に書込まれるデータ量の関数である場合があることを注記しておく。本実施形態ではこれは図10の割当方法と異なることがあり、それはデータに対応する固定サイズを仮定できる。一方、図10の方法は、ステップ512に対応して使用される可変データサイズを提供するように構成できるが、幾つかの場合、同一のトラックに対応する前の割当てが十分に大きくない場合データを記憶するためにログ装置に新しいトラックを割当てることは有用である場合がある。
ステップ512の後はステップ514であり、ここでは新しく割当てられたデータ要素は、フィールド462にデータを書込むことによって、同様に装置情報フィールド452、タイマフィールド454、およびサイクルカウントフィールド456に対応する情報を提供することによって占められる。ステップ514の後はステップ516であり、ここでは順方向ポインタフィールド464は、リスト482〜484(またはリストが空の場合、null)のうちの1つの第1データ要素を指差すように設定され、逆方向ポインタフィールド466は、nullに等しくなるように設定される。ステップ516の後はステップ518であり、ここでは他のポインタは、適切なように調整される(たとえばリストの第1データ要素の逆方向ポインタフィールド466は、新しく割当てられたデータ要素を指差すように設定される)。ステップ518の後はステップ522であり、ここでは連続バックアップ仮想装置402からの適切なテーブルは、新しく割当てられたデータ要素を指差すように設定される。ステップ522の後で本処理が完了する。
検査ステップ502において、書込まれるデータが、連続バックアップを開始してから書込まれた第1データであると判断された場合、制御はステップ502からステップ524に移行し、ここでは全トラックのデータに対応する領域が割当てられる。本実施形態では標準論理装置404への第1書込は、書込に対応する単なるデータ量ではなく、たとえばステップ512,514で行われるように、全トラックのデータをコピーさせる。他の実施形態では異なる量のデータが、特定トラックに対応する第1書込の際にさえ、標準論理装置404からコピーできる。ステップ524の後はステップ526であり、ここでは全トラックのデータがコピーされる。ステップ526でコピーされるデータは、対応する任意の修正に先立つ標準論理装置404からのデータであることを注記しておく。ステップ526の後は上述したステップ512である。
書込がホストに受入れられ承認後、図19のフローチャート500に示す処理が行なわれることが可能であることを注記しておく。これを行なうことは、より便利な時間に(たとえば記憶装置がそれほど忙しくない場合)処理が行なわれることを可能にし、ホスト書込が直ちに認められることを可能にすることによって如何なる相当の応答時間の不利益も回避する。
図20に示すように、フローチャート540は、現在のデータを読取る読取動作(すな
わち記憶装置の現在の状態のデータを読取ること)に対応して行なわれるステップを示す。本処理は第1ステップ542で開始し、ここでは連続バックアップ仮想装置402が、標準論理装置404を指差すか否か判断される。YESの場合、制御は検査ステップ542からステップ544に移行し、ここでは標準論理装置が、読取られるデータを検索するために使用される。ステップ544の後で本処理が完了する。
検査ステップ542において、連続バックアップ仮想装置402が標準論理装置404を指差していないと判断された場合、制御は検査ステップ542からステップ546に移行し、ここではログ装置406のリンクリストを通じて反復するために使用されるポインタ(反復ポインタ)が、処理されるリスト(すなわちデータが読取られるトラックに対応するリスト)の第1要素を指差すように設定される。ステップ546の後はステップ548であり、ここでは反復ポインタによって指差される要素からのデータは、読取られるデータを受入れるために使用される変数またはデータ領域に書込まれる。データを読取るためには、より最近のデータに先に与えて、逆時間順でデータ要素を処理することが必要であることを注記しておく。リンクリスト482〜484の要素は、それぞれ、必ずしもデータの全トラックを含む必要がないため、読取動作に対応して要求されているデータを構築する複数のデータ要素を通じて詳細検討することが必要である場合がある。
ステップ548の後は検査ステップ552であり、ここでは要求データが全て検索されているか否か判断される。YESの場合、本処理が完了する。NOの場合、制御は検査ステップ552からステップ554に移行し、ここではリストの要素を通じて反復するために使用されるポインタは、次の要素を指差すようになされる(すなわち順方向ポインタフィールド464を使用して)。ステップ554の後は検査ステップ556であり、ここではリストの要素を通じて反復するために使用されるポインタは、リストの終端を通過しているか(すなわちnullに等しい)否か判断される。NOの場合、上述したように、制御は検査ステップ556からステップ548に移行し、付加的なデータに書込む。NOの場合、制御は、検査ステップ556からステップ558に移行し、連続バックアップ仮想装置402が生成後、第1書込に生成されたベーストラックから標準論理装置404へのデータを、残りの(欠落した)データに書込む。ステップ558でデータを使用することは、連続バックアップ仮想装置402が生成後、対応するデータが書込まれなかったことを意味する。ステップ558の後で本処理が完了する。
図21に示すように、フローチャート570は、それが特定の時間(目標時刻)に存在したときのデータを得るべく、記憶装置の前の状態(前の時間)からのデータを読取ることに対応して行なわれるステップを示す。ここで記述されるシステムは、データの連続またはほぼ連続バックアップを提供でき、その結果、任意の時点からの(システム起動以来の)データが読取可能である。フローチャート570によって示されるステップは、特定時点の書込まれるデータを読取ること(復元)に対応する。
本処理は第1検査ステップ572で開始し、ここではデータが読取られるトラックは、標準論理装置404を指差す連続バックアップ仮想装置402における入力を有しているか否か判断される。後述するように特定トラックに対応する入力が標準論理装置404を指差す場合、特定トラックは、システム起動から書込まれていない。検査ステップ572において、要求データが標準論理装置404にない(すなわち連続バックアップ仮想装置402における対応する入力が標準論理装置404を指差していない)と判断された場合、制御は検査ステップ572からステップ574に移行し、ここではリンクリスト482〜484のうちの1つの要素を通じて反復するために使用されるポインタ(すなわち反復ポインタ)は、リストの第1要素を指差すように設定される。
ステップ574の後は、検査ステップ576であり、ここでは反復ポインタによって指
差されるデータ要素が、目標時刻の後に書込まれるデータに対応するか否か判断される。タイマフィールド454またはサイクルカウンタフィールド456のいずれかは、対象の特定時点を指定するために、および、現在データが目標時刻の後であるか否かを判断するために使用できることを注記しておく。タイマおよびサイクルカウンタの使用は、以下で詳述する。
検査ステップ576において、リストの要素を通じて反復するために使用されるポインタによって指差されるデータ要素が、目標時刻の後で書込まれるデータに対応すると判断された場合、制御は検査ステップ576からステップ578に移行し、ここでは反復ポインタが、次のデータ要素を指差すようになされる。ステップ578の後は、検査ステップ582であり、反復ポインタが、リストの終端を指差すか否かを判断する。NOの場合、制御は上述した、検査ステップ582から検査ステップ576に移行する。
検査ステップ582において、反復ポインタが、要素のリストの終端を指差す(すなわちnullを指差す)と判断された場合、制御は検査ステップ582からステップ584に移行し、ここでは標準論理装置404が、要求データを与えるために使用される。そのような状況では、書込動作が全て目標時刻の後で生じ、その結果、所望のデータが、標準論理装置404に記憶される。ステップ584の後で本処理が完了する。連続バックアップ仮想装置402における入力が標準論理装置404を指差すと判断された場合、ステップ584もまた検査ステップ572から至ったものであり、システム起動から特定トラックへの書込が生じていないことを示すことを注記しておく。
検査ステップ576において、反復ポインタが目標時刻の後ではないデータを指差すと判断された場合、制御は検査ステップ576からステップ588に移行し、ここでは反復ポインタによって指差される要素からのデータは、読取られるデータを受入れるために使用される変数またはデータ領域に書込むために使用される。データを読取るために、より最近のデータに先に与えて、逆時間順でデータ要素を処理する必要があることを注記しておく。しかし、リンクリスト482〜484の要素は、それぞれ、必ずしもデータの全トラックを含んでいないため、読取動作に対応して要求されているデータを構築する複数のデータ要素を通じて詳細検討する必要がある場合がある。
ステップ588の後は検査ステップ592であり、ここでは要求データが全て検索されているか否か判断される。YESの場合、本処理が完了する。NOの場合、制御は検査ステップ592からステップ594に移行し、ここでは反復ポインタが、次の要素を指差すようになされる(すなわち順方向ポインタフィールド464を使用して)。ステップ594の後は検査ステップ596であり、ここでは反復ポインタが、リストの終端を通過しているか(すなわちnullに等しい)否か判断される。NOの場合、上述したように、制御は検査ステップ596からステップ588に移行し、いずれかの付加的なデータに書込む。NOの場合、制御は検査ステップ596からステップ598に移行し、連続バックアップ仮想装置402が生成後、標準論理装置404への第1書込で生成されたベーストラックからのデータで残りの(欠落した)データに書込む。ステップ598でデータを使用することは、連続バックアップ仮想装置402が生成後で書込まれた対応するデータがなかったことを意味する。ステップ598の後で本処理が完了する。
図22に示すように、フローチャート610は、対象の特定時点(目標時刻)における状態にデータを戻すこと、そして状況によって、あたかもそれが先の時点において書込まれたかのように、戻されたデータに新データを書込むか、または新データを挿入することに対応して行なわれるステップを示す。本処理は第1ステップ612で開始し、ここではトラックの全てを通じて反復するために使用されるポインタ(トラック反復ポインタ)は、連続バックアップ仮想装置402の第1トラックを指差すように設定される。ステップ
612の後は検査ステップ614であり、連続バックアップ仮想装置402に対応する入力は、標準論理装置404を指差すか否かを判断する。NOの場合、制御は検査ステップ614からステップ616に移行し、ここではログ装置406の対応する要素を通じて反復するために使用されるポインタ(要素反復ポインタ)は、トラック反復ポインタによって指差される特定トラックに対応するリンクリストの最後(直前)の要素を指差すように設定される。
ステップ616の後は検査ステップ618であり、要素反復ポインタが、目標時刻(所望の復元時間)の後である時間を有する要素を指差すか否かを判断する。YESの場合、制御は検査ステップ618からステップ622に移行し、ここでは要素反復ポインタによって指差される要素が配置される(すなわち要素によって使用されるメモリは、使用されるメモリ管理方法に対応する或る方法における使用に対応して解除される)。ステップ622の後はステップ624であり、適切なポインタが調整される。ステップ624では、要素反復ポインタは、次の直前の要素を指差すようになされる。更にデータがステップ622で配置される場合、連続バックアップ仮想装置402、ログ装置406などに対応するデータ構造によって使用されるポインタが調整可能である。しかし、一層詳細に下で議論するように、代替の実施形態に対応しては、データが配置されないこともある。ステップ624に続いて、制御は次の反復のためのステップ618に戻る。目標時刻が、サイクルカウンタに対応する特定値またはタイマに対応する特定値のいずれかの点から表現できることを注記しておく。
代替の実施形態は、要素反復ポインタが、所望の復元時間の後である時間を有する要素を指差すときの、ステップ618から直接ステップ624への経路625によって示される。本実施形態では復元時間の後であるデータは廃棄されない。
検査ステップ618において、要素反復ポインタによって指差された要素が目標時刻の後ではない関連する時間を有すると判断された場合、制御は検査ステップ618からステップ626に移行し、ここではデータは、標準論理装置404に書き戻されるデータに対応して蓄積され、標準論理装置404を目標時刻における状態に戻させる。ステップ626でデータを蓄積することは、書込まれる新データ(もしあれば)で開始し、次に、たとえば図21のフローチャート570に対応して示されるような処理を使用して、いずれかのギャップを埋める(たとえば新データを書込まれていないトラックの一部)ことを含み得る。ステップ626の後はステップ627であり、ここではステップ626で蓄積されたデータは、標準論理装置404に書込まれる。ステップ627における書込は、従来の書込であることが可能であるか、または連続バックアップの書込であることが可能である。ステップ627の後は上述したステップ628である。
一旦、連続バックアップ仮想装置402が特定の状態に復元されると、システムへの新データの書込を提供することを含む動作を継続できることを注記しておく。幾つかの例では、特定の目標時刻で新データを挿入するか(新データを書込む)、または特定の目標時刻からのデータを削除することが望ましいことがある。これらの2つの動作は、ユーザがデータを挿入することを可能にするように共に使用可能であり、その結果を検査し、続いて、挿入されたデータを削除できることを注記しておく。たとえばユーザは、午後5:00にデータベース中のデータ矛盾を発見し、午後3:00に付加的なデータ(または異なるデータ)の書込をシミュレートすることによって矛盾にアドレスすることを試みることが可能である。しかし、それが問題を解決しない場合、ユーザは、シミュレートした書込を取消し、何か他のことを試みることを望むことがある。もちろん異なる時点においてデータを挿入と削除する機能は、任意数の用途を具備できる。
図23に示すように、フローチャート650は、特定の目標時刻に新データを挿入する
(すなわちあたかもそれが、現在の時刻に先立つ、また続くデータ書込動作に先立つことがある特定の目標時刻で生じるかのように、データを書込む)か、または特定の目標時刻からのデータを削除することに対応して行なわれるステップを示す。フローチャート650に対応する処理は、第1検査ステップ652で開始し、ここでは連続バックアップ仮想装置402のためのトラックに対応する入力が、標準論理装置404を指差すか否か判断される。YESの場合、制御は検査ステップ652から検査ステップ653に移行し、ここではデータの挿入が行なわれているか否か判断される。YESの場合、制御はステップ653からステップ654に移行し、通常の書込動作が行なわれる。状況によってデータを削除する場合、連続バックアップ仮想装置402が標準論理装置404を指差していれば、削除するデータがないことを注記しておく。ステップ654の後で本処理が完了する。
検査ステップ652において、連続バックアップ仮想装置402用のトラックが標準論理装置404を指差していないと判断された場合、制御は検査ステップ652からステップ656に移行し、ここでは要素反復ポインタは、トラックに対応する要素のリンクリストにおける第1要素を指差すようになされる。ステップ656の後は検査ステップ658であり、ここでは要素反復ポインタがリストの終端を過ぎて指差すか否か判断される。NOの場合、制御は検査ステップ658から検査ステップ662に移行し、ここでは要素反復ポインタを指差すが、目標時刻の後で関連する時間を有する要素を指差すか否か判断される。YESの場合、制御は検査ステップ662からステップ664に移行し、ここでは要素反復ポインタは、次の要素を指差すようになされる。ステップ664に続いて、制御は上述した検査ステップ658に移行する。
検査ステップ658において、要素反復ポインタがリンクリストの終端を過ぎて指差すと判断される場合、または検査ステップ662において、要素反復ポインタが、目標時刻の後ではない関連する時間を有する要素を指差すと判断される場合、制御はステップ666に移行し、ここでは挿入されるデータに対応する新しい要素が加えられるか、または指差した要素が削除される。他の実施形態では削除される要素は、特にマークまたはタグ付け可能である(たとえば挿入時点に)か、または削除される要素を識別するために多くの技術のうちのいずれか1つが使用可能である。
ステップ666の後はステップ668であり、ここではリンクリストのポインタは、新しい要素の追加、あるいは一または複数の要素の削除を提供するように調整される。ステップ668の後で本処理が完了する。
データ要素を削除するか、または複数のデータ要素を加える場合、図23のフローチャート650のステップのうちの幾つかまたは全てを反復して実行できることを注記しておく。たとえば特定の特性またはマークを有するデータの例を全て削除するために、フローチャート650のステップは、対象の個々のトラックに対応して実行できる。
図24に示すように、フローチャート680は、標準論理装置404から読取動作、または標準論理装置404への書込動作に対応して行なわれるステップを示す。一方、標準論理装置404は、先の時点に対応する状態に戻される。幾つかの実施形態では標準論理装置404に対応するI/O動作を全て保留できる。一方、復元が、上述したように、図22のフローチャート610によって示される復元動作のように行なわれている。しかし、他の例では、I/O動作の保留は、受入れ難いことがあり、その場合、復元が行なわれている間のI/O動作を可能にすることが必要になる。
フローチャート680に対応する処理は、検査ステップ682で開始し、ここではアクセスされているトラックを復元する必要があるか否かを判断する。幾つかの場合、アクセ
スされているトラックが既に復元されているか、またはトラックが修正されなかったので復元される必要がないことがある。如何なる場合も、検査ステップ682において、アクセスされているトラックが復元される必要がある(すなわちトラックが修正され、まだ復元されていない)と判断された場合、制御はステップ682からステップ684に移行し、ここでは復元動作がトラックに対応して行なわれる。ステップ684で行なわれる復元動作は、図22のフローチャート610に対応して上述した復元動作と同様である。ステップ684の後は、または復元が必要ではない場合のステップ682の後は、ステップ686であり、ここでは通常の読取または書込動作は、標準論理装置の(今復元した)トラックに行なわれる。ステップ686の後で本処理が完了する。
図25に示すように、ダイアグラム700は、図16のダイアグラム400に示された外部処理416に結合される複数の記憶装置702〜704を示す。記憶装置702〜704は、一貫性群の一部であることが可能である。外部処理416は、タイマ414および/またはサイクルカウンタ412を同期させることによって、記憶装置702〜704を同期させるために使用できる。本実施形態では同期は、タイマ414および/またはサイクルカウンタ412を更新するのに先立って一時的に書込動作を停止することによって行なわれることが可能である。これに代えて、外部処理416は、タイマ414および/またはサイクルカウンタ412を更新するのに先立って、記憶装置702〜704のための書込動作が静止するのを待機できる。
ここで記述されるシステムの初期化は、単に連続バックアップ仮想装置402を生成し、サイクルカウンタ412とタイマ414を初期値に設定し、動作を開始することによって行なわれることが可能であることを注記しておく。外部処理が使用される実施形態416において、外部処理は、初期化され、複数の記憶装置に対応する連続バックアップ動作を同時に開始するために使用可能である。NOの場合、外部処理416(または均等物)が使用されない実施形態ではサイクルカウンタ412および/またはタイマ414の更新は、入力と出力動作を扱う処理408を含む任意の適切な手段によって行なわれることが可能である。
幾つかの場合、ホストによって書込まれる記憶装置とは異なる記憶装置に連続バックアップを提供することが望ましいことがある。ホストは、第1(ローカル)記憶装置に結合可能であり、第1記憶装置は、ここで記述されるようなデータの連続バックアップを維持する第2(リモート)記憶装置に結合できる。幾つかの実施形態では連続バックアップは、ローカル記憶装置とリモート記憶装置によって維持できる。一方、他の実施形態では連続バックアップは、リモート記憶装置のみによって維持可能である。
図26に示すように、ダイアグラム820は、ホスト822、ローカル記憶装置824、およびリモート記憶装置826の間の関係を示す。記憶装置824,826は、上述したように、記憶装置24と同様であることが可能である。ホスト822は、ローカル記憶装置824からデータを読取り、ローカル記憶装置824にデータを書込む。ダイアグラム820は、単に1つのホスト822を示すが、当然のことながら、複数のホストが存在できる。ローカル記憶装置824からのデータは、それらの間のリンクを介してリモート記憶装置826に転送できる。1つのリンクのみが示されるが、記憶装置824,826間に付加的なリンクを具備でき、記憶装置824,826の1つまたは両方と他の記憶装置(図示略)との間にリンクを具備可能である。
本実施形態ではホスト822からローカル記憶装置824に書込まれたデータは、図19〜図24に対応してここで記述されるもののようなリモート記憶装置826における処理を使用してリモート記憶装置826によって連続的にバックアップされる。幾つかの実施形態ではデータは、ローカル記憶装置824によって連続的にバックアップできる。一
方、他の実施形態ではデータは、リモート記憶装置826で単に連続的にバックアップされる。ここでは一層詳細に他で記述されるように、ホスト822によって書込まれたデータは、ローカル記憶装置824による特定のサイクル番号に関連する。ローカル記憶装置によって割当てられたサイクル番号は、図17に対応して上述したサイクルカウンタフィールド456に対応する。次に、データと関連したサイクル番号は、リモート記憶装置826に送信され、それは連続バックアップを行なうための標準論理装置、連続バックアップ仮想装置、およびログ装置を有する。ホスト822によって書込まれるデータをサイクル番号に関連させること、および、ローカル記憶装置824からリモート記憶装置826にデータを転送することは、ここでは一層詳細に後述される。
図27に示すように、ダイアグラム830は、ここでは上で別に議論した連続バックアップ仮想装置402と同様の連続バックアップ(CB)仮想装置832を示す。連続バックアップ仮想装置832は、複数のトラックに対応する標準論理装置834へのポインタを含み、その結果、任意の特定トラックに対応しては、連続バックアップ仮想装置832が標準論理装置834の対応するトラックを指差す場合、対応するトラックは、連続バックアップ仮想装置832の生成から変更されていない。連続バックアップ仮想装置832は、複数の対応するトラックに対応するログ装置836へのポインタを更に含む。ログ装置836は、連続バックアップ仮想装置832の生成から変更されたトラックに対応するデータを含み、上述したようなログ装置406と同様である。連続バックアップ仮想装置832、標準論理装置834、およびログ装置836は全て、リモート記憶装置826上に具備可能である。
ダイアグラム830は、連続バックアップ記憶装置用のリモート記憶装置826によって受信されたデータの受信と記憶を扱うI/Oモジュール838を更に示す。I/Oモジュール838の動作は、ここでは別に議論したI/Oモジュール408の動作と同様である。I/Oモジュール838には、リモート記憶装置826の一時記憶装置842に記憶されるデータが与えられる。一時記憶装置842は、たとえばリモート記憶装置826の揮発性メモリおよび/またはリモート記憶装置826の専用ディスク記憶領域を使用して実施できる。一時記憶装置842内のデータは、ここでは一層詳細に他で記述されるように、ローカル記憶装置824からリモート記憶装置826に提供される。
次の議論は、ローカル記憶装置824上のデータを、リモート記憶装置826上に連続バックアップすることを提供することに関する。複数の実施形態は、適切な連続番号(サイクル番号)を有するデータがローカル記憶装置824からリモート記憶装置826に提供されることがある様々な方法に対応して、開示される。
図28に示すように、データの経路は、ホスト822からローカル記憶装置824とリモート記憶装置826まで示される。ホスト822からローカル記憶装置824に書込まれるデータは、ローカル記憶装置824のデータ要素851によって示されるように、ローカルに記憶できる。データをローカルに記憶することは、ローカル記憶装置824の論理記憶装置にデータを直接書込むこと、および/またはローカル記憶装置824における、ここで記述される連続バックアップ機能を提供することを含み得る。ホスト822によってローカル記憶装置824に書込まれるデータもまた、ローカル記憶装置824によってリモート記憶装置826に送信されるのに対応してローカル記憶装置824によって維持できる。
ここで記述したシステムでは、ホスト822によるデータ書込(たとえばレコード、複数のレコード、トラックなど)は、それぞれ連続番号(サイクル番号)を割当てられる。連続番号は、書込に関連した適切なデータフィールドに提供できる。図28では、ホスト822による書込は、連続番号Nを割当てられるように示される。連続番号Nを割当てら
れているホスト822によって行なわれる書込は、全てデータ852の単一の塊に集められる。塊852は、ほぼ同時に生じるホスト822による複数の互いに別個の書込を表わす。
一般に、ローカル記憶装置824は、1つの連続番号の塊を蓄積する。一方、以前に蓄積された塊(前の連続番号を有する)をリモート記憶装置826に送信する。このようにローカル記憶装置824は、連続番号Nを割当てられたホスト822からの書込を蓄積する。一方、前の連続番号(N−1)に対応して生じた書込は、ローカル記憶装置824によってリモート記憶装置826に送信される。塊854は、リモート記憶装置826にまだ送信されていない連続番号N−1を割当てられたホスト822からの書込を表わす。
リモート記憶装置826は、連続番号N−1を割当てられた書込に対応する塊854からデータを受信し、連続番号N−1を有したホスト書込の新しい塊856を構築する。リモート記憶装置826が塊854からデータを全て受信した場合、ローカル記憶装置824は、塊856に対応するN−1の連続番号を割当てられたデータを全てコミットするためにリモート記憶装置826にコミットメッセージを送信する。一般に、一旦、特定の連続番号に対応する塊がコミットされれば、塊は、リモート記憶装置826の論理記憶装置に書込まれ、および/またはリモート記憶装置826における連続バックアップを提供するために使用できる。これは図28において、連続番号N−2を割当てられた書込に対応する塊858と共に示される(すなわちホスト822によるローカル記憶装置826への書込に対応して使用されている現在の連続番号の2つ前)。
図28では、塊858は、データ要素862に書込まれるように示され、リモート記憶装置826におけるディスク記憶および/または連続バックアップを表わす。このようにリモート記憶装置826は、連続番号N−1に対応する塊856を受信と蓄積する。一方、前の連続番号(N−2)に対応する塊858は、リモート記憶装置826のディスク記憶に書込まれ、および/またはデータ要素862によって示されるようなリモート連続バックアップに対応して使用される。
このように動作では、ホスト822は、データ要素851にローカルに記憶されるデータをローカル記憶装置824に書込、場合によっては、ローカル記憶装置824によって連続的にバックアップされ、塊852に蓄積される。一旦、特定の連続番号に対応するデータが全て蓄積されると(ここでは他で記述される)、ローカル記憶装置824は、連続番号をインクリメントする。現在の連続番号よりも小さいものに対応する塊854のデータは、ローカル記憶装置824からリモート記憶装置826に転送される。塊858は、リモート記憶装置826にメッセージを送信するローカル記憶装置824によってコミットされた連続番号に対応するデータに対応する。塊858のデータは、リモート記憶装置826のディスク記憶装置に書込まれ、および/またはリモート記憶装置826によって連続的にバックアップされる。
図29に示すように、ダイアグラム870は、塊852,854を構築と維持するために使用される要素を示す。ローカル記憶装置824上に設けられた標準論理装置872は、ホスト822によって書込まれるデータを含み、図28のデータ要素851に対応する。標準論理装置872は、ホスト822によってローカル記憶装置824に書込まれるデータを含む。
ポインタ874,876の2つのリンクリストは、標準論理装置872に対応して使用される。リンクリスト874は、複数のポインタ881〜885を含み、各々は、ローカル記憶装置824に対応して使用されるデータの一部を指差す。データは、ローカル記憶装置824のキャッシュメモリ888に提供できる。同様にリンクリスト876は、複数
のポインタ891〜895を含み、各々は、キャッシュメモリ888に提供されるデータの一部を指差す。キャッシュメモリ888は、複数のキャッシュスロット902〜904を含み、それは標準論理装置872への書込に対応して使用され、同時にリンクリスト874,876に対応して使用できる。
リンクリスト874,876の各々は、データ852,854の塊のうちの1つに使用可能であり、その結果、たとえばリンクリスト874は、連続番号Nに対応するデータ852の塊に対応できる。一方、リンクリスト876は、連続番号N−1に対応するデータ854の塊に対応できる。このようにデータがホスト822によってローカル記憶装置824に書込まれる場合、データは、キャッシュ888に与えられ、そして或る場合には(ここでは他で記述される)、リンクリスト874の適切なポインタが生成される。後述のようにデータが標準論理装置872にデステージされ、データがもはやリンクリスト874のポインタ881〜885のうちの1つによっては指差されないようになるまでデータは、キャッシュ888から削除されないであろうということを注記しておく。
本実施形態ではリンクリスト874,876のうちの一方は「アクティブである」と考えられ、他方は「非アクティブである」と考えられる。このようにたとえば連続番号Nが偶数の場合、リンクリスト874がアクティブであり、一方リンクリスト876は非アクティブであることが可能である。リンクリスト874,876のうちのアクティブな方は、ホスト822からの書込を扱う。一方、リンクリスト874,876のうちの非アクティブな方は、ローカル記憶装置824からリモート記憶装置826に送信されるデータに対応する。ホスト822によって書込まれるデータが、リンクリスト874,876のうちのアクティブな方(連続番号N用)を使用して蓄積される。一方、リンクリスト874,876のうちの非アクティブな方(前の連続番号N−1用)に対応するデータは、ローカル記憶装置824からリモート記憶装置826に送信される。
一旦、リンクリスト874,876のうちの1つにおけるポインタの特定の1つに対応するデータがリモート記憶装置826に送信されると、ポインタの特定の1つは、リンクリスト874,876の適切な1つから削除できる。更にデータは、キャッシュ888からの削除のためにマークを付けられることが可能であり(すなわちスロットは、後の無関係な使用のためにスロットのプールに復帰できる)、スロットにおけるデータは、NOの場合別の目的に必要とされない(たとえば標準論理装置872にデステージされる)。機構は、全ての装置がもはやデータを使用しなくなるまでデータがキャッシュ888から削除されないことを保証するために使用できる。
図30に示すように、スロット920は、キャッシュ888のスロット902〜904のうちの1つのように、ヘッダ922とデータ924を含む。ヘッダ922は、スロット920を管理するために本システムによって使用されるオーバーヘッド情報に対応する。データ924は、スロット920に(一時的に)記憶されている対応するデータである。ヘッダ922内の情報は、ローカル記憶装置のディスク記憶装置に戻すポインタ、タイムスタンプ824などを含む。
ヘッダ922は、ここで記述されるシステムに対応して使用されるキャッシュスタンプ926を更に含む。本実施形態ではキャッシュスタンプ926は、8バイトである。そのうちの2バイトは、スロット920がここで記述されるシステムによって使用されているか否かを示す「パスワード」である。他の実施形態ではパスワードは、1バイトである。一方、次のバイトは、パッドに使用できる。後述のように特定値に等しい2バイトのパスワード(または場合に応じて1バイト)は、リンクリスト874,876のうちの少なくとも1つの入力によってスロット920が指差されることを示す。特定値とは等しくないパスワードは、リンクリスト874,876の入力によってスロット920が指差されて
いないことを示す。パスワードの使用は、ここでは他で記述される。
キャッシュスタンプ926は、スロット920のデータ924の連続番号(たとえばN,N−1,N−2など)を示す2バイトのフィールドを更に含む。後述のようにキャッシュスタンプ926の連続番号フィールドは、ここで記述される処理を容易にするために使用できる。キャッシュスタンプ926の残りの4バイトは、後述のようにポインタに使用できる。もちろんパスワードが、リスト874,876のうちの1つにおける少なくとも1つの入力によってスロット920が指差されることを示す特定値に等しい場合だけ、連続番号の2バイトとポインタの4バイトは有効である。
図31に示すように、フローチャート940は、書込動作を行なうホスト822に対応して、ローカル記憶装置824によって行なわれるステップを示す。もちろんホスト822が書込を行なう場合、本処理はデータがリモート記憶装置826によって連続的にバックアップされるか否かに関係なく、通常の方法で書込を扱うように生じる。
本処理は第1ステップ942で開始し、ここでは書込に対応するスロットがロックされる。本実施形態ではキャッシュ888のスロット902〜904の各々は、標準論理装置872上のデータのトラックに対応する。ステップ942でスロットをロックすることは、付加的な処理が、フローチャート940のステップに対応するローカル記憶装置824によって行なわれる処理中の関連するスロット上で動作することを防止する。
ステップ942の後はステップ944であり、Nに対応する値に対応して、連続番号が設定される。後述するようにステップ944で得られる連続番号に対応する値は、ローカル記憶装置824によって行なわれる書込動作全体の間、維持される。一方、スロットは、ロックされる。後述するように連続番号は、書込が属するデータ852,854の塊のうちの1つを設定するために各書込に割当てられる。ホスト822によって行なわれる書込は、現在の連続番号を割当てられる。単一の書込動作が同一の連続番号全体を維持することは有用である。
ステップ944の後は検査ステップ946であり、キャッシュスロットのパスワードフィールドが有効であるか否かを判断する。上述したように、ここで記述されるシステムは、キャッシュスロットが既にポインタ874,876のリンクリストのうちの1つにあることを示すために、パスワードフィールドを所定値に設定する。検査ステップ946において、パスワードフィールドが有効ではない(スロットが新しく、リスト874,876からのポインタがスロットを指差していない)と判断された場合、制御はステップ946からステップ948に移行し、ここでは新しいスロットのキャッシュスタンプがパスワードを所定値に設定し、連続番号フィールドをNに設定し、ポインタフィールドをnullに設定することによって設定される。他の実施形態ではポインタフィールドは、スロット自体を指差すように設定できる。
ステップ948の後はステップ952であり、ここでは新しいスロットへのポインタが、ポインタリスト874,876のうちのアクティブな方に加えられる。本実施形態ではリスト874,876は、循環的な二重リンクリストであり、新しいポインタは、従来の方法の循環的な二重リンクリストに加えられる。もちろん他の適切なデータ構造は、リスト874,876を管理するために使用できる。ステップ952の後はステップ954であり、ここではフラグが設定される。ステップ954では、書込保留フラグは、スロットがリモート記憶装置826に送信される必要があることを示すように設定できる。更にステップ954では、キャッシュフラグは、スロットが標準論理装置872にデステージされる必要があることを示すように設定される。ステップ954の後はステップ956であり、ここではホスト822によって書込まれるデータがスロットに書込まれる。ステップ
956の後はステップ958であり、ここではスロットがロック解除される。ステップ958の後で本処理が完了する。
検査ステップ946において、スロットのパスワードフィールドが有効である(スロットがリスト874,876のうちの少なくとも1つのポインタによって既に指差されることを示す)と判断された場合、制御はステップ946から検査ステップ962に移行し、ここではスロットの連続番号フィールドが現在の連続番号Nに等しいか否か判断される。有効なパスワードを持ったスロットの連続番号フィールドに対応する有効な可能性が2つある。連続番号フィールドは、N(現在の連続番号)に等しくなることが可能である。これが、スロットが連続番号Nを持った前の書込に対応する場合に生じる。他の可能性は、連続番号フィールドがN−1に等しい場合である。これはスロットが連続番号N−1を持った前の書込に対応する場合に生じる。連続番号フィールドに対応しては、他の値はいずれも無効である。このように幾つかの実施形態に対応しては、ステップ962においてエラー/妥当性チェックを含むか、または状況によって互いに別個のステップをエラー/妥当性チェック可能である。そのようなエラーは、任意の適切な方法で扱われることが可能であり、それはユーザにメッセージを提供することを含み得る。
ステップ962において、スロットの連続番号フィールドにおける値が現在の連続番号Nに等しいと判断された場合、特別な処理は必要ではなく、制御はステップ962から上述したステップ956に移行し、ここではデータがスロットに書込まれる。NOの場合、連続番号フィールドの値がN−1である(他の有効な値のみ)場合、制御はステップ962からステップ964に移行し、ここでは新しいスロットが得られる。ステップ964で得られた新しいスロットは、書込まれたデータを記憶するために使用できる。
ステップ964の後はステップ966であり、ここでは古いスロットからのデータが、ステップ964で得られた新しいスロットにコピーされる。コピーされたデータは、書込保留フラグ含み、それはスロットが最初に生成された場合前の書込にステップ954で設定されているべきであったことを注記しておく。ステップ966の後はステップ968であり、ここではパスワードフィールドを適切な値に設定し、連続番号フィールドを現在の連続番号Nに設定し、および、ポインタフィールドを古いスロットを指差すように設定することによって、新しいスロットに対応するキャッシュスタンプが設定される。ステップ968の後はステップ972であり、ここでは新しいスロットへのポインタがリンクリスト874,876のうちのアクティブな方に加えられる。ステップ972の後は上述したステップ956であり、ここではデータがスロットに書込まれ、この場合、スロットは新しいスロットである。
図32に示すように、フローチャート1000は、データが、図29に対応して示された実施形態に従って蓄積された場合、ローカル記憶装置824からリモート記憶装置826にデータ送信するためにリスト872,874のうちの非アクティブな方を走査するローカル記憶装置824に対応して行なわれるステップを示す。上述したように、リスト872,874のうちの非アクティブな方は、Nサイクルがリスト872,874のうちのアクティブな方を使用してホスト822によってローカル記憶装置824に書込まれる場合ローカル記憶装置824に対応するN−1サイクルに対応するスロットを指差す。
本処理は第1ステップ1002で開始し、ここではリスト872,874のうちの非アクティブな方に入力があるか否か判断される。データが送信される場合、対応する入力は、リスト872,874のうちの非アクティブな方から削除される。更に新しい書込は、リスト872,874のうちのアクティブな方に提供され、一般にリスト72,74のうちの非アクティブな方には提供されない。このようにリスト872,874のうちの非アクティブな方が、或る時点においてデータを含まないことがある(後述のように望ましい
)。ステップ1002において、送信されるデータがないと判断された場合、リスト872,874のうちの非アクティブな方は、データが利用可能になるまで連続的に獲得される。送信用のデータがサイクル切換に対応して利用可能になり(別に議論する)、ここではリスト872,874のうちの非アクティブな方は、リスト872、874のうちのアクティブな方になり、アクティブな1つが非アクティブになる。
ステップ1002において、送信に利用可能なデータがあると判断された場合、制御はステップ1002からステップ1004に移行し、ここではスロットが正しいと確認される。ステップ1004で行なわれる処理は、随意の「正当性チェック」であり、それはたとえばパスワードフィールドが正しいことを確認し、連続番号フィールドが正しいことを確認することを含み得る。スロットに正しくない(予期しない)データがある場合、エラー処理が行なわれることが可能であり、それはエラーと状況によってはエラー復元処理についてユーザに通知することを含み得る。
ステップ1004の後はステップ1012であり、ここではデータがローカル記憶装置824からリモート記憶装置826に適切な方法で送信される。本実施形態ではスロット全体が送信されるわけではない。むしろ適切なミラービットセット(レコードが変更されたことを示す)を有したスロット内のレコードだけが、リモート記憶装置826に送信される。しかし、他の実施形態ではリモート記憶装置826が適切なミラービットセットを有するレコードに対応するデータを単に書込、トラックに対応する他のデータを無視すれば、全スロットを送信でき、それは有効であることもあるし、有効ではないこともある。ステップ1012の後は検査ステップ1014であり、送信されたデータがリモート記憶装置826によって承認されたか否か判断される。NOの場合、データは、ステップ1014からステップ1012に戻るフローによって示されるように再送信される。他の実施形態では様々な一層関与した処理は、データ送信し、受信を承認するために使用できる。そのような処理は、エラー報告と、データ送信する幾つかの試みが失敗後で行なわれる代替処理とを含み得る。
一旦、検査ステップ1014において、データ送信に成功したと判断されれば、制御はステップ1014からステップ1016に移行し、書込保留フラグをクリアする(データ送信に成功したので)。ステップ1016の後は検査ステップ1018であり、ここではスロットが、リスト872,874のうちの非アクティブな方における既存の入力を既に有するスロットへの書込に対応して生成された複製スロットであるか否か判断される。この可能性は、ステップ962,964,966,968,972に対応して上述した。ステップ1018において、スロットが複製スロットであると判断された場合、制御はステップ1018からステップ1022に移行し、ここではスロットが利用可能なスロット(再使用される)のプールに戻される。更にスロットは、スロットに提供されるデータが任意の他の目的に対応して有効ではないため、他のスロットの先立つ即時再使用に備えるために古くなることがある(または適用される幾つかの他の適切な機構を有する)。ステップ1022の後、またはスロットが複製スロットではない場合のステップ1018の後はステップ1024であり、ここではスロットヘッダのパスワードフィールドがクリアされ、その結果、スロットが再使用される場合、図31のステップ946の検査は、スロットを新しい(未使用の)スロットとして適切に分類する。
ステップ1024の後はステップ1026であり、ここではリスト872,874のうちの非アクティブな方における入力が削除される。ステップ1026の後、制御は上述したステップ1002に移行し、ここでは転送される必要があるデータに対応するリスト872,874のうちの非アクティブな方に付加的な入力があるか否か判断される。
図33に示すように、フローチャート1050は、連続番号を増加させる、ローカル記
憶装置824に対応して行なわれるステップを示す。本処理は第1ステップ1052で開始し、ここではローカル記憶装置824は、連続番号を増加させる前に少なくともM秒間待機する。本実施形態ではMは、30であるが、もちろんMは、任意の数であることが可能である。より大きいMの値は、記憶装置824,826間の通信が中断した場合、失われるデータ量を増加させる。しかし、より小さいMの値は、連続番号を一層頻繁にインクリメントすることによって引き起こされるオーバーヘッドの合計量を増加させる。
ステップ1052の後は検査ステップ1054であり、前の連続番号に関連したローカル記憶装置824への書込動作が全て完了したか否かを判断する。幾つかの例では、単一のI/Oは、比較的長時間掛かり、連続番号が変更後であっても依然として進行中であることがある。ステップ1054では、任意の適切な構造を使用できる。
検査ステップ1054において、前の連続番号からのI/Oが完了したと判断された場合、制御はステップ1054から検査ステップ1056に移行し、リスト874,876のうちの非アクティブな方が空であるか否かを判断する。連続番号の切換は、リスト874,876のうちの非アクティブな方に対応するデータが全てローカル記憶装置824からリモート記憶装置826に完全に送信されない限り且つそうなるまでなされないことがあることを注記しておく。一旦、リスト874,876のうちの非アクティブな方が空であると判断されれば、制御はステップ1056からステップ1058に移行し、ここでは前の連続番号に対応するコミットは、ローカル記憶装置824からリモート記憶装置826に送信される。特定の連続番号に対応するコミットメッセージを受信するリモート記憶装置826は、連続番号に対応するデータが全て送信されたことをリモート記憶装置826に示すであろう。
ステップ1058の後はステップ1062であり、リスト874,876のうちの非アクティブな方に対応するデータのコピーが保留される。後述するようにリストのうちの非アクティブな方は、対応するデータをローカル記憶装置824からリモート記憶装置826に送信するために走査される。コピーするデータを保留することは、連続番号切換えが完了するまで有用である。
ステップ1062の後はステップ1064であり、ここでは連続番号がインクリメントされる。ステップ1064の後は検査ステップ1072であり、リモート記憶装置826がステップ1058で送信されたコミットメッセージを承認したか否かを判断する。一旦、リモート記憶装置826がステップ1058で送信されたコミットメッセージを承認したと判断すれば、制御はステップ1072からステップ1074に移行し、ここではステップ1062によって提供されたコピーの保留がクリアされ、その結果、コピーが再開する。ステップ1074の後で本処理が完了する。連続番号を連続的にインクリメントする新しいサイクルを開始するために、ステップ1074からステップ1052に行くことも可能であることを注記しておく。
アクティブなデータとデータの非アクティブな塊に関連したスロットを収集するために、ローカル記憶装置824でテーブルを使用可能である。その場合、1つのテーブルは、非アクティブな連続番号に関連でき、別のテーブルは、アクティブな連続番号に関連できる。これは下で記述される。
図34に示すように、ダイアグラム1200は、塊852,854を構築と維持するために使用される要素を示す。標準論理装置1202は、ホスト822によって書込まれたデータを含み、上述したデータ要素851に対応する。標準論理装置1202は、ホスト822によってローカル記憶装置824に書込まれたデータを含む。
2つのテーブル1204,1206は、標準論理装置1202に対応して使用される。テーブル404,406は、たとえばローカル記憶装置824のメモリに記憶できる装置テーブルに対応できる。テーブル1204,1206の各トラック入力は、標準論理装置1202のトラックを指差すか、またはローカル記憶装置824に対応して使用されるキャッシュ1208のスロットを指差す。
キャッシュ1208は、複数のキャッシュスロット1212〜1214を含み、それは標準論理装置1202への書込に対応して使用され、同時にテーブル1204,1206に対応して使用できる。本実施形態ではテーブル1204,1206の各トラックテーブル入力は、標準論理装置1202の対応するトラックの使用を示すためにnullを含む。NOの場合、テーブル1204,1206の各々に対応するトラックテーブルにおける入力は、キャッシュ1208におけるスロット1212〜1214のうちの1つへのポインタを含む。
キャッシュテーブル1204,1206の各々は、データ852,854の塊のうちの1つに使用可能であり、その結果、たとえばテーブル1204は、連続番号Nに対応するデータ852の塊に対応できる。一方、テーブル1206は、連続番号N−1に対応するデータ854の塊に対応できる。このようにデータがホスト822によってローカル記憶装置824に書込まれる場合、データは、キャッシュ1208に提供され、テーブル1204の適切なポインタが調整される。データが標準論理装置1202にデステージされ、後述のようにデータがテーブル1204に関連した機構によって開放されるまでデータがキャッシュ1208から削除されないことを注記しておく。
本実施形態ではテーブル1204,1206のうちの一方が「アクティブである」と考えられる。他方が「非アクティブである」と考えられる。このようにたとえば連続番号Nが偶数の場合、テーブル1204は、アクティブである。一方、テーブル1206は、非アクティブであることが可能である。テーブル1204,1206のうちのアクティブな方は、ホスト822からの書込を扱う。一方、テーブル1204,1206のうちの非アクティブな方が、ローカル記憶装置824からリモート記憶装置826に送信されているデータに対応する。
ホスト822によって書込まれたデータが、テーブル1204,1206のうちのアクティブな方(連続番号Nに対応しての)を使用して蓄積される。一方、テーブル1204,1206のうちの非アクティブな方(前の連続番号N−1に対応しての)に対応するデータは、ローカル記憶装置824からリモート記憶装置826に送信される。
一旦、データがリモート記憶装置826に送信されると、テーブル1204,1206のうちの非アクティブな方における対応する入力は、nullに設定できる。更にスロットにおけるデータが別の目的(たとえば標準論理装置1202にデステージされること)にNOの場合必要とされない場合、データは、キャッシュ1208(すなわち後の使用のためにスロットのプールに戻されたスロット)から削除可能である。機構は、全てのミラーとテーブル1204,1206がもはやデータを使用しなくなるまでデータがキャッシュ1208から削除されないことを保証するために、使用できる。そのような機構は、たとえば1996年7月16日に発行された特許文献6に記述される。
図35に示すように、フローチャート1240は、2つのテーブルが使用される実施形態に対応する書込動作を行なう、ホスト822に対応してローカル記憶装置824によって行なわれるステップを示す。本処理は第1ステップ1242で開始し、ここでは書込に対応するスロットがロックされる。本実施形態ではキャッシュ1208のスロット1212〜1214の各々は、標準論理装置1202上のデータのトラックに対応する。ステッ
プ1242でスロットをロックすることは、フローチャート1240のステップに対応するローカル記憶装置824によって行なわれる処理中に関連するスロット上で付加的な処理が動作するのを防止する。
ステップ1242の後はステップ1244であり、ここではNに対応する値(連続番号)が設定される。ちょうど、テーブルではなくリストを使用する実施形態のように、ステップ1244で得られた連続番号に対応する値は、スロットがロックされている間、全書込動作中維持される。後述するように書込が属するデータ852,854の塊の1つを判断するために、連続番号が各書込に割当てられる。ホスト822によって行なわれる書込は、現在の連続番号を割当てられる。単一の書込動作が同一の連続番号全体を維持するは有用である。
ステップ1244の後は検査ステップ1246であり、それはテーブル1204,1206のうちの非アクティブな方が、ステップ1242でロックされたスロット(その際に動作されるスロット)を既に指差すか否かを判断する。これは連続番号が現在の連続番号よりも小さいものであった場合同一のスロットへの書込が提供される場合に生じることがある。前の連続番号に対応する書込に対応するデータは、リモート記憶装置826にまだ送信されていない場合がある。
検査ステップ1246において、テーブル1204,1206のうちの非アクティブな方がスロットを指差していないと判断される場合、制御は検査ステップ1246から別の検査ステップ1248に移行し、ここではテーブル1204,1206のうちのアクティブな方スロットを指差すか否か判断される。スロットに前の書込がある。一方、連続番号が現在の連続番号と同一のであった場合、テーブル1204,1206のうちのアクティブな方は、スロットを指差すことが可能である。検査ステップ1248において、テーブル1204,1206のうちのアクティブな方が、スロットを指差していないと判断された場合、制御は検査ステップ1248からステップ1252に移行し、ここでは新しいスロットがデータに対応して得られる。ステップ1252の後はステップ1254であり、ここではテーブル1204,1206のうちのアクティブな方がスロットを指差すようになされる。
ステップ1254の後、またはテーブル1204,1206のうちのうちのアクティブな方がスロットを指差す場合のステップ1248の後は、ステップ1256であり、ここではフラグが設定される。ステップ1256では、書込保留フラグは、スロットをリモート記憶装置826に送信する必要があることを示すように設定される。更にステップ1256では、IN_CACHEフラグは、スロットを標準論理装置1202にデステージする必要があることを示すように設定される。幾つかの例では、テーブル1204,1206のうちのアクティブな方が、スロットを既に指差す場合には(ステップ1248で判断されるように)、書込保留とIN_CACHEフラグは、ステップ1256の実行に先立って既に設定されていることが可能であることを注記しておく。しかし、ステップ1256でフラグを設定することは、フラグは、前の状態が何であっても適切に設定されることを保証する。
ステップ1256の後はステップ1258であり、ここではスロットを指差すトラックテーブルにおける間接的なフラグがクリアされ、関連するデータがスロットに提供され、間接的に指差される異なるスロットに提供されないことを示す。ステップ1258の後はステップ1262であり、ここではホスト822によって書込まれるデータがスロットに書込まれる。ステップ1262の後はステップ1264であり、ここではスロットがロック解除される。ステップ1264の後で本処理が完了する。
検査ステップ1246において、テーブル1204,1206のうちの非アクティブな方がスロットを指差すと判断される場合、制御はステップ1246からステップ1272に移行し、ここでは新しいスロットが得られる。ステップ1272で得られる新しいスロットは、移行を達成するために、テーブル1204,1206のうちの非アクティブな方に使用できる。一方、下で記述されるように、古いスロットが、テーブル1204,1206のうちのアクティブな方に関連できる。
ステップ1272の後はステップ1274であり、古いスロットからのデータが、ステップ1272で得られた新しいスロットにコピーされる。ステップ1274の後はステップ1276であり、ここでは間接的なフラグ(上述した)は、テーブル1204,1206のうちの非アクティブな方に対応するトラックテーブル入力が古いスロットを指差すが、データは、古いスロットによって指差される新しいスロットにあることを示すように設定される。このようにステップ1276で間接的なフラグを設定することは、データが新しいスロットにあることをトラックテーブル入力に示させるように、テーブル1204,1206のうちの非アクティブな方のトラックテーブルに影響する。
ステップ1276の後はステップ1278であり、ここでは新しいスロット内のレコードに対応するミラービットが調整される。新しいスロットの目的が、テーブルのうちの非アクティブな方に対応する移行を単に達成するものであるため、データがステップ1274で古いスロットから新しいスロットにコピーされた場合コピーされたいずれのローカルミラービットもクリアされる。古いスロットは、任意のローカルミラーを扱うために使用されるであろう。ステップ1278の後はステップ1262であり、ここではデータがスロットに書込まれる。ステップ1262の後はステップ1264であり、ここではスロットがロック解除される。ステップ1264の後で本処理が完了する。
図36に示すように、フローチャート1300は、データが図34に対応して示される実施形態によって蓄積される場合、データ854の塊をリモート記憶装置826に送信する、ローカル記憶装置824に対応して行なわれるステップを示す。送信は、テーブル1204,1206のうちの非アクティブな方がアクティブであった場合、前の反復中に書込まれたトラックに対応するテーブル1204,1206のうちの非アクティブな方を走査することを本質的に必要とする。
本処理は第1ステップ1302で開始し、ここではテーブル1204,1206のうちの非アクティブな方の第1トラックが、トラックの全てを通じた反復処理を開始するために指差される。第1ステップ1302の後は検査ステップ1304であり、ここでは書込保留フラグが設定されているか否か判断される。後述するように書込保留フラグは、リモート記憶装置826に送信される必要のあるデータをスロット(トラック)が含むことを示すために使用される。設定される書込保留フラグは、スロット(トラック)に対応する少なくとも幾つかのデータが送信されることを示す。本実施形態ではスロット全体が送信されるわけではない。むしろ適切なミラービットセット(レコードが変更されていることを示す)を有したスロット内のレコードだけが、リモート記憶装置826に送信される。しかし、他の実施形態ではリモート記憶装置826が適切なミラービットセットを有したレコードに対応するデータを単に書込、トラック用の他のデータを無視すれば、全スロットを送信でき、それは有効であることもあるが、有効ではないこともある。
検査ステップ1304において、処理されているキャッシュスロットが書込保留フラグセットを有すると判断された場合、制御はステップ1304から検査ステップ1305に移行し、ここではスロットがデータを含むか、またはスロットが、関連するデータを含む別のスロットを指差す間接的なスロットであるか否か判断される。幾つかの例では、スロットは、スロットに対応するディスクの一部に対応するデータを含まないことがある。代
わりに、スロットは、データを含む別のスロットを指差す間接的なスロットであることが可能である。ステップ1305において、スロットが間接的なスロットであると判断された場合、制御はステップ1305からステップ1306に移行し、ここではデータが得られる(間接的なスロットによって指差されるスロットから)。このようにスロットが直接的なスロットである場合、送信されるデータはスロットに記憶される。一方、スロットが間接的なスロットである場合、送信されるデータは、間接的なスロットによって指差される別のスロットにある。
ステップ1306の後、またはスロットが直接的なスロットである場合のステップ1305の後は、ステップ1307であり、ここでは送信されるデータ(スロットから直接的または間接的に)がリモート記憶装置826に送信される。ステップ1307の後は検査ステップ1308であり、ここではリモート記憶装置826が、データの受信を承認したか否か判断される。NOの場合、制御はデータを再送信するために、ステップ1308からステップ1307に移行する。他の実施形態では異なる一層関与した処理は、データ送信し、受信を承認するために使用できる。そのような処理は、エラー報告と、データ送信する幾らかの試みが失敗後で行なわれる代替処理とを含み得る。
一旦、検査ステップ1308において、データ送信に成功したと判断されれば、制御はステップ1308からステップ1312に移行し、書込保留フラグをクリアする(データ送信に成功したので)。ステップ1312の後はステップ1314であり、ここでは適切なミラーフラグは、少なくともリモート記憶装置826がもはやデータを必要としないことを示すためにクリアされる。本実施形態ではスロット(トラック)の一部であるレコードは、それぞれ、個々のミラーフラグを有し、どのミラーが特定のレコードを使用するかを示す。リモート記憶装置826は、レコードの各々に対応するミラーのうちの1つであり、それはステップ1314でクリアされるリモート記憶装置826に対応するフラグである。
ステップ1314の後は検査ステップ1316であり、それは処理されているトラックのレコードのうちのいずれが、任意の他のミラーフラグセット(他のミラーリング装置用の)を有するか否かを判断する。NOの場合、制御はステップ1316からステップ1318に移行し、ここではスロットが開放される(すなわちもう使用されていない)。幾つかの実施形態では未使用のスロットは、使用に利用可能なスロットのプールにおいて維持される。付加的なフラグが、スロットのレコードのうちの幾つかに対応して依然として設定されている場合、それはレコードが標準論理装置1202にデステージされる必要があるか、または幾つかの他のミラーによって使用されていることを意味することがあることを注記しておく。ステップ1318の後、または一層多くのミラーフラグが存在する場合のステップ1316の後は、ステップ1322であり、ここではテーブル1204,1206のうちの非アクティブな方の各トラック入力を通じて反復するために使用されるポインタが、次のトラックを指差すようになされる。ステップ1322の後は検査ステップ1324であり、処理されるテーブル1204,1206のうちの非アクティブな方のトラックが更にあるか否かを判断する。NOの場合、本処理が完了する。NOの場合、制御は上述した検査ステップ1304に移行する。書込保留フラグが、処理されるトラックに対応して設定されていないと判断された場合、ステップ1322は、検査ステップ1304からも至ることを注記しておく。
図37に示すように、ダイアグラム1500は、複数のローカル記憶装置1503〜1505に結合されたホスト1502を示す。ダイアグラム1500は。複数のリモート記憶装置1506〜1508を更に示す。3つのローカル記憶装置1503〜1505と3つのリモート記憶装置1506〜1508だけがダイアグラム1500に示されるが、ここで記述されるシステムは、任意数のローカルとリモート記憶装置を使用するために拡張
できる。一層詳細に下で議論するように、単一のローカル記憶装置に結合された単一のリモート記憶装置によって連続バックアップを提供することに関連した機能は、複数のローカルとリモート記憶装置によって動作するように拡張できる。
ローカル記憶装置1503〜1505の各々は、リモート記憶装置1506〜1508の対応する1つに結合され、その結果、たとえばローカル記憶装置1503は、リモート記憶装置1506に結合され、ローカル記憶装置1504は、リモート記憶装置1507に結合され、そしてローカル記憶装置1505は、リモート記憶装置1508に結合される。ローカル記憶装置1503〜1505は、リモート連続バックアップのためにデータをリモート記憶装置1506〜1508に転送でき、その結果、たとえばローカル記憶装置1503は、リモート連続バックアップデータをリモート記憶装置1506に転送できる。
幾つかの例では、ホスト1502は、ローカル記憶装置1503〜1505のうちの複数を同時に使用する単一のアプリケーションを実行できる。そのような場合、ホスト1502が任意の時間に動作を停止した場合、および/またはローカル記憶装置1503〜1505のうちの1つが失敗した場合、アプリケーションデータがローカル記憶装置1503〜1505で一貫性がある(復元可能である)ことを保証するように、アプリケーションが構成できる。しかし、ローカル記憶装置1503〜1505とリモート記憶装置1506〜1508との間の接続の各々が、他の接続から非同期であることが可能であるため、その後、アプリケーション用のデータがリモート記憶装置1506〜1508で一貫性がある(従って復元可能である)という保証はないことがある。すなわちたとえばローカル記憶装置1503とリモート記憶装置1506と(第1ローカル/リモート対)の間のデータ接続に一貫性があり、ローカル記憶装置1504とリモート記憶装置1507と(第2ローカル/リモート対)の間のデータ接続に一貫性があっても、第1および第2ローカル/リモート対間の同期がない場合、リモート記憶装置1506および1507上のデータに必ずしも常に一貫性がある必要はない。
複数のローカル記憶装置1503〜1505を同時に使用するホスト1502のアプリケーションについて、データがリモート記憶装置1506〜1508で一貫性があり、復元可能であることが望ましい。これはホスト1502が、ローカル記憶装置1503〜1505の各々における切換サイクルを制御し、その結果、ホスト1502上で実行されるアプリケーションからのデータが、リモート記憶装置1506〜1508で一貫性があり、復元可能であるような機構によって提供できる。この機能は、一層詳細に下で記述するように、複数のローカル記憶装置1503〜1505をマルチボックスモードに切換える、ホスト1502上で実行される特別なアプリケーションによって提供される。
図38に示すように、テーブル1530は、複数の入力1532〜1534を有する。入力1532〜1534の各々は、記憶装置の単一のローカル/リモート対に対応し、その結果、たとえば入力1532は、ローカル記憶装置1503とリモート記憶装置1506の対に対応でき、入力1533は、ローカル記憶装置1504とリモート記憶装置1507の対に対応でき、入力1534は、ローカル記憶装置1505とリモート記憶装置1508の対に対応できる。入力1532〜1534の各々は、複数のフィールドを有し、ここでは第1フィールド1536a〜1536cは、対応するローカル記憶装置の通し番号を表わし、第2フィールド1538a〜1538cは、マルチボックス群によって使用されるセッション番号を表わし、第3フィールド1542a〜1542cは、ローカル/リモート対の対応するリモート記憶装置の通し番号を表わし、第4フィールド1544a〜1544cは、マルチボックス群に対応するセッション番号を表わす。テーブル1530は、マルチボックスモードで動作することに対応してホスト1502によって構築と維持される。更にテーブル1530は、マルチボックス群の一部であるローカル記憶装置と
リモート記憶装置の各々に広められる。一層詳細に下で議論するように、テーブル1530は、復元を容易にするために使用できる。
様々なローカル/リモート対が、任意の順番にいつでも独立してマルチボックスモードに入ってもマルチボックスモードから出ることが可能である。ホスト1502は、マルチボックスモードへのローカル記憶装置/リモート記憶装置対の入力、および、マルチボックスモードからのローカル記憶装置/リモート記憶装置対の出力を管理する。これは一層詳細に下に記述される。
図39に示すように、フローチャート1550は、マルチボックスモードへのローカル/リモート対の入力、またはマルチボックスモードからのローカル/リモート対の出力に対応してホスト1502によって行なわれるステップを示す。本処理は第1ステップ1552で開始し、ここではマルチボックスモード動作が一時的に停止される。ステップ1552で一時的にマルチボックス動作を停止することは、マルチボックスモードへのリモート/ローカル対の入力、またはマルチボックスモードからのリモート/ローカル対の出力に対応して行なわれる変更を容易にするのに有用である。ステップ1552の後はステップ1554であり、ここではテーブル1530のようなテーブルが、必要に応じて入力を追加または削除して修正される。ステップ1554の後はステップ1556であり、ここでは修正されたテーブルが、マルチボックス群のローカル記憶装置とリモート記憶装置に広められる。ここでは一層詳細に別に議論するように、ステップ1556でテーブルを広めることは、復元を容易にする。
ステップ1556の後はステップ1558であり、メッセージが、変更を提供する影響を受けたローカル記憶装置に送信される。ローカル記憶装置は、ここでは一層詳細に他で記述されるように、マルチボックスモードで実行されるかまたはされないようにそれ自体を構成できる。一層詳細に下で議論するように、リモート連続バックアップを扱うローカル記憶装置は、それがマルチボックス群の一部として動作しているか否かに依存して異なるように動作する。ローカル記憶装置がマルチボックス群に加えられている場合、ステップ1558で送信されたメッセージは、それがマルチボックス群に加えられていることをローカル記憶装置に示し、その結果、ローカル記憶装置は、マルチボックスモードで実行されるようにそれ自体を構成する。これに代えて、ローカル記憶装置がマルチボックス群から削除されている場合、ステップ1558で送信されたメッセージは、それがマルチボックス群から削除されていることをローカル記憶装置に示し、その結果、ローカル記憶装置は、マルチボックスモードで実行されないようにそれ自体を構成する。
ステップ1558の後は検査ステップ1562であり、ここではローカル/リモート対がマルチボックス群に加えられているか否か(削除に対応するものとして)が判断される。YESの場合、制御は検査ステップ1562からステップ1564に移行し、ここでは加えられているローカル記憶装置にタグ値が送信される。タグ値は、データと共に連続番号を提供するのと同様の方法において、ローカル記憶装置からリモート記憶装置に送信されるデータを備える。タグ値は、ホストによって制御され、その結果、ローカル/リモート対が全て同一のサイクル中に同一のタグ値を有したデータ送信するように設定される。タグ値の使用は、一層詳細に下で議論する。ステップ1564の後、または新しいローカル/リモート対が加えられていない場合のステップ1562の後は、ステップ1566であり、ここではマルチボックス動作が再開される。ステップ1566の後で本処理が完了する。
図40に示すように、フローチャート1580は、マルチボックスモードにおける群として実行される複数のローカル/リモート対のためのホスト管理サイクル切換に対応して行なわれるステップを示す。後述するようにマルチボックスモードは、リモート記憶装置
中のデータの一貫性を維持する複数のリモート/ローカル対用のホスト同期サイクル切換を含む。サイクル切換は、ローカル記憶装置によって内部に生成されるよりも、むしろホストによって調整される。これは一層詳細に下で議論する。
フローチャート1580に対応する処理は、検査ステップ1582で開始し、M秒が経過したか否かを判断する。ちょうど非マルチボックス動作によるもののように、サイクル切換は、毎秒Mよりも早く生じることはなく、ここではMは、様々な動作パラメータを最適化するように選択される数である。Mの数が増加すると、切換に関連したオーバーヘッドの量は減少する。しかし、Mの増加は、失敗に対応して潜在的に失われることがあるデータ量も増加させる。本実施形態ではMとして30秒が選択されるが、当然のことながら、Mに対応しては他の値を使用可能である。
検査ステップ1582において、M秒が経過していないと判断された場合、制御はステップ1582に移行し、M秒が経過するまでポーリングし続ける。一旦、検査ステップ1582でM秒が経過したと判断されれば、制御はステップ1582からステップ1584に移行し、ここではホストは、マルチボックス群中のローカル記憶装置を全て問合せ、ローカル/リモート対が全て切換準備できているか否かを判断する。切換準備できているローカル/リモート対は、以下で詳述される。
ステップ1584の後は検査ステップ1586であり、ローカル/リモート対が全て切換準備できているか否かを判断する。NOの場合、制御はステップ1584に移行し、問合せを再開する。本実施形態では一旦、ローカル/リモート対が切換準備できていれば、対は切換が生じるまでそのままであるため、以前に切換準備できていなかったローカル/リモート対を問合せることが単に必要である。
一旦、検査ステップ1586において、マルチボックス群中のローカル/リモート対の全てが切換準備できていると判断されれば、制御はステップ1586からステップ1588に移行し、ここではインデックス変数Nが「1」に等しく設定される。インデックス変数Nは、ローカル/リモート対の全て(すなわちテーブル1530の入力1532〜1534の全て)を通じて反復するために使用される。ステップ1588の後は検査ステップ1592であり、インデックス変数Nがマルチボックス群中のローカル/リモート対の数よりも大きいか否かを判断する。NOの場合、制御はステップ1592からステップ1594に移行し、ここでは開いたウィンドウが、ホストによって、n番目の対のn番目のローカル記憶装置に対応して行なわれ、コマンド(たとえば適切なシステムコマンド)をn番目のローカル記憶装置に送信する。ステップ1594でn番目のローカル記憶装置に対応してウィンドウを開くことは、n番目のローカル記憶装置に書込を保留させ、その結果、ステップ1594でウィンドウを開く前に開始されないホストによる如何なる書込も、ウィンドウが閉じられるまで完了しない(下で記述される)。書込動作を完了しないことは、第2の依存する書込がサイクル切換の完了前に生じるのを防止する。ウィンドウを開く前に開始された進行中の如何なる書込も、ウィンドウが閉じられる前に完了できる。
ステップ1594の後はステップ1596であり、ここではサイクル切換は、n番目のローカル記憶装置に対応して行なわれる。ステップ1596でサイクル切換を行なうことは、ホスト1502からn番目のローカル記憶装置にコマンドを送信することを含む。n番目のローカル記憶装置によってホストからのコマンドを処理することは、一層詳細に下で議論される。ステップ1596で行なわれる処理の一部は、データに割当てられるタグに対応する新しい値をホストに提供させることを含み得る。タグは、ここでは一層詳細に別に議論される。代替の実施形態ではステップ1594,1596で行なわれる動作は、単一の統合されたステップ1597として行なわれることが可能であり、それはステップ1594,1596の近傍に描かれた箱によって示される。
ステップ1596の後はステップ1598であり、インデックス変数Nがインクリメントされる。ステップ1598の後、制御は検査ステップ1592に戻り、インデックス変数Nがローカル/リモート対の数よりも大きいか否かを判断する。
検査ステップ1592において、インデックス変数Nがローカル/リモート対の数よりも大きいと判断された場合、制御は検査ステップ1592からステップ1602に移行し、ここではインデックス変数Nが「1」に等しく設定される。ステップ1602の後は、検査ステップ1604であり、インデックス変数Nがローカル/リモート対の数よりも大きいか否かを判断する。NOの場合、制御はステップ1604からステップ1606に移行し、ここではn番目のローカル記憶装置用のウィンドウが閉じられる。ステップ1606のウィンドウを閉じることは、ホストによって行なわれ、n番目のローカル記憶装置に書込動作を再開させるために、コマンドをn番目のローカル記憶装置に送信する。このようにステップ1594でウィンドウを開くことによって一時停止された如何なる処理中の書込も、ここではステップ1606の実行後に完了できる。ステップ1606の後、制御はステップ1608に移行し、ここではインデックス変数Nがインクリメントされる。ステップ1608の後、制御は検査ステップ1604に移行し、インデックス変数Nがローカル/リモート対の数よりも大きいか否かを判断する。YESの場合、制御は検査ステップ1604からステップ1582に移行し、次のサイクル切換に対応する処理を開始する。
図41に示すように、フローチャート1630は、サイクル切換に対応してローカル記憶装置によって行なわれるステップを示す。図41のフローチャート1630は、例として図33のフローチャート1050を置換し、ここではローカル記憶装置は、マルチボックスモードと非マルチボックスモードの両方をサポートする。すなわちフローチャート1630は、非マルチボックスモードをサポートするために図33のフローチャート1050と同様に行なわれるステップを示し、これに更にマルチボックスモードをサポートするステップを含む。
本処理は第1検査ステップ1632で開始し、ローカル記憶装置がマルチボックスモードで動作しているか否かを判断する。図39のフローチャート1550は、ホストがメッセージをローカル記憶装置に送信するステップ1558を示すことを注記しておく。ステップ1558で送信されるメッセージは、ローカル記憶装置がマルチボックスモードであるか否かをローカル記憶装置に示す。ステップ1558でホストによって送信されたメッセージの受信に際して、ローカル記憶装置は、ローカル記憶装置がマルチボックスモードで動作しているか否かを示すために内部変数を設定する。内部変数は、検査ステップ1632で検査できる。
検査ステップ1632において、ローカル記憶装置がマルチボックスモードではないと判断された場合、制御は検査ステップ1632からステップ1634に移行し、サイクル切換に対応してM秒間待機する。ローカル記憶装置がマルチボックスモードで動作していない場合、ローカル記憶装置は、それ自身のサイクル切換を制御し、従ってステップ1634を実行し、次のサイクル切換を開始する前にM秒間待機する。
ステップ1634の後、またはローカル記憶装置がマルチボックスモードである場合のステップ1632の後は、検査ステップ1636であり、前の連続番号に対応するI/Oが全て完了したか否かを判断する。一旦、検査ステップ1636において、前のサイクル番号に対応するI/Oが全て完了したと判断されれば、制御は検査ステップ1636からステップ1688に移行し、ローカル記憶装置に対応する非アクティブな塊が空であるか否かを判断する。一旦、検査ステップ1688において、非アクティブな塊が空であると
判断されれば、制御はステップ1688からステップ1689に移行し、ここではローカル記憶装置からリモート記憶装置へのデータのコピーが一時停止される。連続番号切換が完了するまでコピーするデータを一時停止することは有用である。
ステップ1689の後は、検査ステップ1692であり、ローカル記憶装置がマルチボックスモードであるか否かを判断する。検査ステップ1692において、ローカル記憶装置がマルチボックスモードであると判断された場合、制御は検査ステップ1692から検査ステップ1694に移行し、対応するリモート記憶装置のアクティブな塊が空であるか否かを判断する。リモート記憶装置は、一旦、それがアクティブな塊を空にしたならば、ローカル記憶装置にメッセージを送信する。メッセージに応答して、ローカル記憶装置は、検査ステップ1694で検査される内部変数を設定する。
一旦、検査ステップ1694において、リモート記憶装置のアクティブな塊が空であることが判断されれば、制御は検査ステップ1694からステップ1696に移行し、ここでは内部変数は、ローカル記憶装置がサイクル切換の準備ができていることを示すようにローカル記憶装置上で設定される。フローチャート1580に対応して上述したように、ホストは、ローカル記憶装置の各々が切換準備できているか否かを判断するために、ローカル記憶装置の各々を問合せる。ホストによって提供される問合せに応答して、ローカル記憶装置は、ステップ1696で設定された内部変数を検査し、結果をホストに返す。
ステップ1696の後は検査ステップ1698であり、ローカル記憶装置は、サイクル切換を行なうためにホストからコマンドを受信するのを待機する。フローチャート1580に対応して上述したように、ホストは、ローカル記憶装置がマルチボックスモードで動作している場合、ローカル記憶装置にサイクルを切換えるコマンドを与える。このようにローカル記憶装置は、ステップ1698でコマンドを待機し、それはローカル記憶装置がマルチボックスモードで動作している場合のみ及ぶ。
一旦、ローカル記憶装置がホストから切換コマンドを受信したならば、制御はステップ1698からステップ1702に移行し、リモート記憶装置にコミットメッセージを送信する。ステップ検査1692において、ローカル記憶装置がマルチボックスモードではないと判断された場合、ステップ1702は、検査ステップ1692からも及ぶことを注記しておく。ステップ1702において、ローカル記憶装置は、リモート記憶装置にコミットメッセージを送信する。特定の連続番号に対応するコミットメッセージを受信することに応答して、リモート記憶装置は、ここで議論した連続バックアップ機能に従ってデータの記憶を開始するであろう。
ステップ1702の後はステップ1706であり、ここでは連続番号がインクリメントされ、タグに対応する新しい値(ホストからの)が記憶される。連続番号は上述した通りである。タグは、上述したように、ステップ1564とステップ1596でローカル記憶装置に与えられるタグである。後述するようにタグは、データ復元を容易にするために使用される。
ステップ1706の後はステップ1708であり、ここではサイクル切換の完了は、ローカル記憶装置からホストにメッセージを送信することによって、ローカル記憶装置からホストまで確認される。幾つかの実施形態ではローカル記憶装置がマルチボックスモードであるか否かをステップ1708で行なうことを条件付けることは可能である。なぜならば、ローカル記憶装置がマルチボックスモードではない場合、ホストは、サイクル切換がいつ生じるかを必ずしも対象にしないからである。
ステップ1708の後は検査ステップ1712であり、リモート記憶装置がコミットメ
ッセージを承認したか否かを判断する。ローカル/リモート対がマルチボックスモードで動作し、リモート記憶装置のアクティブな塊がステップ1694で空であると判断された場合、リモート記憶装置は、アクティブな塊が既に空であるため、リモート記憶装置が直ちにサイクル切換の準備ができてから、殆ど直ちにコミットメッセージを承認するべきであることを注記しておく。
一旦、検査ステップ1712において、コミットメッセージがリモート記憶装置によって承認されたと判断されれば、制御はステップ1712からステップ1714に移行し、ここではステップ1689によって提供されたコピーの保留がクリアされ、その結果、ローカル記憶装置からリモート記憶装置へのコピーが再開する。ステップ1714の後で本処理が完了する。
図42に示すように、フローチャート1740は、データが図29に対応して示された実施形態に従って蓄積された場合、ローカル記憶装置824からリモート記憶装置826にデータ送信するためにローカル記憶装置824の非アクティブなバッファの走査に対応して行なわれるステップを示す。フローチャート1740は、図32のフローチャート1000と同様であり、同様のステップには、同一の参照符号が与えられている。しかし、フローチャート1740は、図32のフローチャート1000では見られない2つの追加ステップ1742,1744を含む。追加ステップ1742,1744は、マルチボックス処理を容易にするために使用される。データがステップ1012で送信後、制御はステップ1012から検査ステップ1742に移行し、送信されたデータがローカル記憶装置の非アクティブな塊における最後のデータであるか否かを判断する。NOの場合、制御はステップ1742からステップ1014に移行し、本処理は図32のフローチャート1000に対応して上述したように継続する。NOの場合、検査ステップ1742において、送信されたデータが塊の最後のデータであると判断された場合、制御はステップ1742からステップ1744に移行し、最後のデータが送信されたことを示す特別なメッセージをローカル記憶装置824からリモート記憶装置826に送信する。ステップ1744に後、制御はステップ1014に移行し、図32のフローチャート1000に対応して上述したように本処理が継続する。幾つかの実施形態ではステップ1742,1744は、データを転送する本処理および/またはハードウェア装置とは異なる別個の処理(および/または別個のハードウェア装置)によって行なわれることが可能である。
図43に示すように、フローチャート1750は、データが、図34に対応して示された実施形態に従って蓄積された場合、ローカル記憶装置824からリモート記憶装置826にデータ送信するために非アクティブなバッファを走査する、ローカル記憶装置824に対応して行なわれるステップを示す。図43のフローチャート1750は、図36のフローチャート1300と同様であり、同様のステップには、同一の参照符号が与えられている。しかし、フローチャート1750は、図36のフローチャート1300では見られない追加ステップ1752を含む。追加ステップ1752は、マルチボックス処理を容易にするために使用され、図42のフローチャート1740の追加ステップ1744と同様である。検査ステップ1324において、ローカル記憶装置からリモート記憶装置に送るべきスロットがこれ以上ないと判断後、制御はステップ1324からステップ1752に移行し、塊に対応する最後のデータが送信されたことを示す特別なメッセージをローカル記憶装置824からリモート記憶装置826に送信する。ステップ1752の後で本処理が完了する。
後述するように連続バックアップは、データを生成するのと同一の記憶装置によって連続バックアップを提供することに対応してここで記述した技術を使用して提供されるデータをリモート記憶装置826に記憶させることによって、ローカル記憶装置824からのデータに対応してリモート記憶装置826によって提供できる(たとえば図19のフロー
チャート500)。しかし、ローカル記憶装置824とリモート記憶装置826を有することは、連続バックアップ記憶、アクセス、および復元の両方の付加的な可能性を与える。
上述した技術を使用して、特定のデータを読取り、データを全て戻すことによってリモート記憶装置826におけるデータを特定時点に復元できることを注記しておく。しかし、ホスト822がローカル記憶装置824に結合されるため、ホスト822に時点データへのアクセスを提供することは、リモート記憶装置826からのデータにホスト822をアクセスさせるか、またはリモート記憶装置826からローカル記憶装置824に戻されたデータを転送させることのいずれかを必要とする。
図44に示すように、フローチャート1760は、ローカル記憶装置824とリモート記憶装置826を使用して特定時点(目標時刻)にデータを復元することに対応して行なわれるステップを示す。本処理は第1ステップ1762で開始し、ここでは連続バックアップ処理が停止される。ステップ1762の後はステップ1766であり、ここではローカル記憶装置824は、ホスト822(または任意の他の装置)によってアクセスする準備ができていないようにされる。ステップ1766の後はステップ1768であり、ここではリモート記憶装置826上で使用される連続バックアップ仮想装置の対応するトラックがログ装置を指差す例において、ローカル記憶装置824上のトラックが無効である。ステップ1768で特定トラックを無効に設定することは、ホスト822に、それらのトラックに対応するデータ(またはローカル記憶装置824における任意の他の装置の読取データ)をリモート記憶装置826から読取らせる。
ステップ1768の後はステップ1772であり、データがリモート記憶装置826で目標時刻に復元される。ステップ1772で行なわれる処理は、ここでは他で記述される技術のうちのいずれかを含み得る。ステップ1772の後はステップ1774であり、ここではローカル記憶装置824は、ホスト822(または他の同様の装置)によるアクセス準備ができているようになされる。ステップ1774の後はステップ1776であり、ここでは連続バックアップ処理が再度開始される。ステップ1776の後で本処理が完了する。
図45に示すように、ダイアグラム1780は、リモート記憶装置826における連続バックアップ仮想装置1784へのアクセスを提供するために、仮想装置1782がローカル記憶装置824によって提供される実施形態を示す。ダイアグラム1780によって示される実施形態ではホスト822は、仮想装置1782にローカルにアクセスすることによって連続バックアップ仮想装置1784にアクセスできる。仮想装置1782からの読取と仮想装置1782への書込は、ローカル記憶装置824とリモート記憶装置826との間のデータリンクを介して、連続バックアップ仮想装置1784からの対応する読取と連続バックアップ仮想装置1784への対応する書込を生じさせる。このように図21のフローチャート570によって示された特定時点からデータを読取ることのような、ここでは他で示す処理を行なうために、仮想装置1782を使用できる。装置1782,1784の結合は、従来のミラーリング技術を含む任意の適切な技術によるものであることが可能である。
図46に示すように、ダイアグラム1800は、連続バックアップ仮想装置1802、標準論理装置1804、ログ装置1806、およびI/Oモジュール1808を有した代替の実施形態を示し、それらの全ては、ホストが直接のI/O動作を提供するのと同一の記憶装置によって連続バックアップを提供すること(図16)、またはホストが直接のI/O動作を提供する装置とは異なる装置でI/O動作を提供すること(図27)に対応して、概して上述したように動作する。ダイアグラム1800は、標準論理装置1804の
ローカルミラーを提供するミラー論理装置1804’を更に示す。ミラー論理装置1804’は、従来の方法で実施され、標準論理装置1804から分割する機能を具備でき、その結果、ミラー機能が停止し、ミラー論理装置1804’は、分割後に標準論理装置1804とは別個のI/O動作に対応してアクセスできる。
ミラー論理装置1804’は、多くの目的に対応して使用できる。たとえばミラー論理装置1804’は、全トラックに対応する領域を割当てる必要性を排除し、連続バックアップの開始時にミラー論理装置1804’を分割することによって第1書込で全トラックをコピーできる。このようにたとえば図19のフローチャート500のステップ502,524,526は、削除可能であり、ログ装置1806のベーストラックからNOの場合データを得る全ての他の処理は、代わりに、ミラー論理装置1804’からデータを得るであろう。これはトラックに対応する第1書込に関連したオーバーヘッドのうちの幾つかを回避する。これに代えて、図16と図27に対応して上述した実施形態は、ログ装置にコピーされる全トラックの初期の第1書込が、標準論理装置1804の代わりにミラー論理装置1804’からの全トラックのデータをコピーすることによってバックグラウンドタスクとして行なわれることが可能である以外は、記述されるように実施できる。
ここで記述したシステムは、或る目的に対応するデータの単位としてトラックを使用しているが、他のデータの単位(状況に応じて、データの可変長単位を含む)を使用可能であることは理解されなければならない。これは他のデータ構造とデータ単位にも適用される。更に幾つかの例では、フローチャートにおけるステップの順序は、適切であれば修正できる。
本実施形態ではタイマは、実際の時間経過(たとえば現実の時間)を追うものであることが可能である。たとえばタイマは、本システムが初期化されてからの秒数(またはミリ秒、分、時など)を表示可能である。これに代えて、タイマは、日付と組合わせて1日のうちの実際の時刻を表示可能である。対照的に、カウンタは、実時間への如何なる相関性を必ずしも必要としない異なる状態を通じてインクリメントするために使用できる。たとえばカウンタは、本システムへの書込毎に、N回の書込毎に、または或る特定の測定基準に従ってインクリメントできる。幾つかの実施形態ではカウンタは、タイマの値の関数(少なくとも部分的に)であることが可能である。
幾つかの実施形態では粒度を減少させる一方で必要メモリを減少させるように、データ変更を強固にするための機構を提供できる。データは、特定トラックまたはデータセグメントに対応して一または複数のログ装置上に記憶された連続する(時間的に)要素からのデータを併合することによって組合可能である。たとえばデータが収集される場合使用される元の粒度が1日未満(たとえば1分の粒度)であったとしても、1日に対応する変更を全て1つの要素に組合わせることが可能である。トレードオフは、複数の連続した要素を単一の要素に組合わせることが、記憶領域を節約するが、復元粒度を低減することである。しかし、粒度の低減は、或る程度の時間が通過後のような、或る例において容認可能である。たとえば初期の細かい粒度(たとえば1秒)で特定の日に対応する連続バックアップをまず提供するが、その後、第1時間量の後(たとえば1日)において、中間レベルの粒度(たとえば1分)を提供するために、粒度(また必要メモリ)を低減することは有用である場合がある。第2時間量が経過後で(たとえばもう1日)、粒度(および必要メモリ)は、更に低減される(たとえば1時間)ことが可能である。
本発明は、様々な実施形態に対応して開示されるが、対応する修正は、当業者にとっては容易に明白である。従って本発明の精神と範囲は、次の請求の範囲に記述される。