(57)【要約】ホスト・コンピュータは、第１コマンドを記憶装置に送信し論理記憶エリアを登録することによって、記憶装置の論理記憶エリアと記憶装置の仮想記憶エリアとの間に結合を設定する。第１コマンドに続いて、ホスト・コンピュータは第２コマンドを記憶装置に送信し、論理記憶エリアを仮想記憶エリアに関係付ける。第２コマンドに続いて、ホスト・コンピュータは、第３コマンドを記憶装置に送信し、論理記憶エリアと仮想記憶エリアとの間の結合を活性化する。結合を活性化した後、仮想記憶エリアのポインタは、論理記憶エリアの区間を指し示し、論理記憶エリアへの書き込みによって、データが論理記憶エリアから記憶装置の別のエリアにコピーされる。【特許請求の範囲】
【請求項１】
ホスト・コンピュータが、記憶装置の論理記憶エリアと該記憶装置の仮想記憶エリアとの間の結合を設定するための方法であって、
前記ホスト・コンピュータが第１コマンドを前記記憶装置に送り、前記論理記憶エリアを登録し、
前記第１コマンドに続いて、前記ホスト・コンピュータが第２コマンドを前記記憶装置に送信し、前記論理記憶エリアを前記仮想記憶エリアに関係付け、
前記第２コマンドに続いて、前記ホスト・コンピュータが第３コマンドを前記記憶装置に送信し、前記論理記憶エリアと前記仮想記憶エリアとの間の前記結合を活性化することを備え、前記結合を活性化した後、前記仮想記憶エリアのポインタが前記論理記憶エリアの区間を指し示し、前記論理記憶エリアへの書き込みによって、前記論理記憶エリアから前記記憶装置の別のエリアにデータがコピーされ、前記仮想記憶エリアの対応するポインタが前記別のエリアを指し示すようにする、方法。
【請求項２】
請求項１記載の方法において、前記第１コマンドが前記仮想記憶エリアを作成させる、方法。
【請求項３】
請求項１記載の方法において、前記第２コマンドが、前記仮想記憶エリアを作成させる、方法。
【請求項４】
請求項１記載の方法において、前記第２コマンドが、前記仮想記憶エリアの新たな名称と、前記仮想記憶エリアがホストに使用可能であるか否か判断するインディケータとから成る群から選択された追加パラメータを含む、方法。
【請求項５】
請求項１記載の方法において、前記記憶エリアが装置である、方法。
【請求項６】
ホスト・コンピュータが、記憶装置の複数の論理記憶エリアの少なくとも１つと、前記記憶装置の複数の仮想記憶エリアの対応する１つの少なくとも１つとの間で結合を設定するための方法であって、
前記ホストが、前記記憶装置にコマンドを送信し、前記論理記憶エリアの前記少なくとも１つを前記仮想記憶エリアの対応する１つと関係付け、
前記ホストがコマンドを送信した後に、前記ホストが、前記複数の論理記憶エリアの少なくとも１つと前記複数の仮想記憶エリアの対応するものとの間の結合を活性化させることを備え、活性化の後、前記結合に対応する前記仮想記憶エリアの少なくとも１つのポインタが、前記論理記憶エリアの対応する１つの区間を指し示し、前記論理記憶エリアの前記対応する１つへの書き込みによって、論理記憶エリアの前記対応する１つから前記記憶装置の別のエリアにデータがコピーされ、前記仮想記憶エリアの前記少なくとも１つの対応するポインタが前記別のエリアを指し示す、方法。
【請求項７】
請求項６記載の方法において、前記ホストがコマンドを送信することによって、前記仮想記憶エリアの前記少なくとも１つが作成される、方法。
【請求項８】
請求項６記載の方法において、活性化を行うことが、ホストが追加コマンドを送信することを含む、方法。
【請求項９】
請求項８記載の方法において、前記追加コマンドが、前記仮想記憶エリアの少なくとも１つの新たな名称と、前記仮想記憶エリアの少なくとも１つがホストに使用可能であるか否か判断するインディケータとから成る群から選択されたパラメータを含む、方法。
【請求項１０】
データ区間を含まない仮想記憶エリアを設ける方法であって、
各々がデータ区間を含む第１および第２記憶エリアを設け、
前記仮想記憶エリアの複数のポインタであって、各ポインタが前記第１記憶エリアの区間および前記第２記憶エリアの区間の一方を指し示す前記複数のポインタを設け、
前記仮想記憶エリアの特定のポインタが指し示す前記第１記憶エリアの特定の区間にホストがデータを書き込む前に、前記特定の区間を前記第２記憶エリアにコピーし、前記特定のポインタにそれを指し示させることを備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ記憶装置に関し、更に特定すれば、コンピュータ記憶装置上に格納されたデータの一部のコピーを供給する分野に関する。
【背景技術】
【０００２】
ホスト・プロセッサ・システムは、複数のホスト・インターフェース・ユニット（ホスト・アダプタ）、ディスク・ドライブ、およびディスク・インターフェース・ユニット（ディスク・アダプタ）を内蔵した記憶装置を用いて、データの格納や検索が可能である。かかる記憶装置は、例えば、マサチューセッツ州Ｈｏｐｋｉｎｔｏｎのイーエムシー・コーポレーション（ＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎ）が供給しており、かかる記憶装置は、例えば、マサチューセッツ州Ｈｏｐｋｉｎｔｏｎのイーエムシー・コーポレーション（ＥＭＣ  Ｃｏｒｐｏｒａｔｉｏｎ）が供給しており、ヤナイその他（Ｙａｎａｉ  ｅｔ  ａｌ．）の米国特許第５，２０６，９３９号、ガルツアーその他（Ｇａｌｔｚｕｅｒ  ｅｔ  ａｌ．）の米国特許第５，７７８，３９４号、ビシュリスキーその他（Ｖｉｓｈｌｉｚｋｙ  ｅｔ  ａｌ．）の米国特許第５，８４５，１４７号、およびオフェック（Ｏｆｅｃｋ）の米国特許第５，８５７，２０８号に開示されている。ホスト・システムは、記憶装置に設けられている複数のチャネルを通じて記憶装置にアクセスする。ホスト・システムは、記憶装置のチャネルを通じてデータやアクセス制御情報を供給し、記憶装置もチャネルを通じてデータをホスト・システムに供給する。ホスト・システムは、記憶装置のディスク・ドライブに直接アドレスするのではなく、ホスト・システムにとっては複数の論理ボリュームのように見えるものにアクセスする。論理ボリュームは、実際のディスク・ドライブに対応する場合も、しない場合もある。
【０００３】
場合によっては、論理ボリュームのコピーを備え、このコピーに他のプロセスがアクセスすることが望ましいこともある。例えば、実際に格納されているデータに対して新たなソフトウエアを検査するには、このデータを含む論理ボリュームのコピーを作成し、元のデータではなく、このコピーを用いて新たなソフトウエアの検査が行われ得る。一旦検査が完了した場合、コピーは廃棄され得る。このようにすれば、実際のデータに影響を及ぼすことなく、実際のデータで新たなソフトウエアが検査できる。これによって、新たなソフトウエアの検査および／または機能が実際のデータにエラーが生じる可能性が減少する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
かかるコピー作成に伴う問題の１つに、データを得る元になる論理ボリュームと同じだけの記憶空間が必要となることがあげられる。何故なら、コピー・プロセスは、単に元のボリュームのデータ全てを含む新たなボリュームを作成するに過ぎないからである。加えて、場合によっては、元のボリュームとコピーとの間の差が極めて少ないこともある。つまり、かかる論理ボリュームのコピーに必要とされる余分な記憶空間はどちらかと言えば非効率的に用いられている。何故なら、これは既に存在するデータを単に複製するに過ぎないからである。したがって、記憶空間を効率的に用いる方法でデータをコピーする機構を提供することが望ましい。
【課題を解決するための手段】
【０００５】
本発明によれば、格納データへのアクセスは、少なくとも２つの別の記憶エリアの区間を指し示すポインタのテーブルを有する仮想記憶エリアを設け、この仮想記憶エリアにはデータの区間を設けず、仮想記憶エリアのデータにアクセスする要求に応答して、別の記憶エリアのうちのデータを含む特定の１つのエリアを決定し、ポインタのテーブルを用いて、別の記憶エリアの特定の１つのエリアにあるデータにアクセスすることを含む。また、格納データへのアクセスは、別の記憶エリアのうちの第１のエリアを仮想記憶エリアと関連付けることを含んでもよく、仮想記憶エリアは別の記憶エリアのうちの第１エリアのデータのコピーを表す。また、格納されているデータへのアクセスは、仮想記憶エリアを別の記憶エリアのうちの第１エリアと最初に関連付けるときに、テーブルの全ポインタが初期状態において別の記憶エリアのうちの第１エリアの区間を指し示すようにすることを含んでもよい。また、格納データへのアクセスは、別の記憶エリアの第１エリア上の第１区間への書き込みに応答して、第１区間のデータを別の記憶エリアの第２エリア上にある第２区間にコピーし、テーブルのポインタの対応する１つに第２区間を指し示させることを含んでもよい。第１区間から第２区間にデータをコピーする前に、第２区間を、データを含まない空き区間として保持してもよい。また、格納データへのアクセスは、別の記憶エリアの第２エリアの空き区間全ての二重リンク・リストを保持することを含んでもよい。また、格納データへのアクセスは、データ・インディケータを別の記憶エリアの第１エリアの区間と関連付けることを含んでもよく、特定の区間に対するデータ・インディケータは、別の記憶エリアの第１エリアを仮想記憶エリアと関連付けた後に、この特定の区間に対して書き込み動作が実行されたか否かを指示する。また、格納データへのアクセスは、別の記憶エリアの第１エリア上の第１区間への書き込みと、別の記憶エリアの第１エリアを仮想記憶エリアと関連付けた後に第１区間に対して書き込み動作が行われていないことを示すインディケータとに応答して、第１区間のデータを別の記憶エリアの第２エリア上にある第２区間にコピーすることと、テーブルのポインタの対応する１つに第２区間を指し示させることを含んでもよい。また、格納データへのアクセスは、第１区間から第２区間にデータをコピーした後に、書き込み動作を実行させた装置にステータス情報を送信することを含んでもよい。データの区間の各々は、データのトラックであってもよい。記憶エリアの各々は記憶装置であってもよい。
【０００６】
更に本発明によれば、格納データへのアクセスは、少なくとも２つの別の記憶エリアの区間を指し示すポインタの第１テーブルを有する第１仮想記憶エリアであって、データの区間を含んでいない第１仮想記憶エリアを設け、別の記憶エリアの第１エリアを第１時点における別の記憶エリアの第１エリアのデータのコピーを表す第１仮想記憶エリアと関連付け、少なくとも２つの別の記憶エリアの区間を指し示すポインタの第２テーブルを有する第２仮想記憶エリアであって、データの区間を含んでいない第２仮想記憶エリアを設け、別の記憶エリアの第１エリアを第２時点における別の記憶エリアの第１エリアのデータのコピーを表す第２仮想記憶エリアと関連付け、仮想記憶エリアの１つのデータにアクセスする要求に応答して、別の記憶エリアのうちの特定の１つがデータを収容しているか判定を行い、ポインタのテーブルの１つを用いて、別の記憶エリアの特定の１つのデータにアクセスすることを含む。また、格納データへのアクセスは、第１仮想記憶エリアを別の記憶エリアの第１エリアに最初に関連付けるときに、第１テーブルのポインタ全てに別の記憶エリアの第１エリアの区間を最初に指し示させ、第２仮想記憶エリアを別の記憶エリアの第１エリアに最初に関連付けるときに、第２テーブルのポインタ全てに別の記憶エリアの第１エリアの区間を最初に指し示させることを含んでもよい。更に、格納データへのアクセスは、第１データ・インディケータを別の記憶エリアの第１エリアの区間と関連付け、第２データ・インディケータを別の記憶エリアの第１エリアの区間と関連付けることを含む。ここで、記憶エリアの第１の別のエリアの特定の区間に対する第１データ・インディケータは、別の記憶エリアの第１エリアを第１仮想記憶エリアと関連付けた後に、特定の区間に対して書き込み動作が実行されたか否かを示す。又、記憶エリアの第１の別のエリアの特定の区間に対する第２データ・インディケータは、別の記憶エリアの第２エリアを第２仮想記憶エリアと関連付けた後に、特定の区間に対して書き込み動作を実行したか否かを示す。また、格納データへのアクセスは、別の記憶エリアの第１エリア上にある第１区間への書き込みと、別の記憶エリアの第１エリアを第１仮想記憶エリアと関連付けた後に、第１区間に対して書き込み動作を実行していないことを示すデータ・インディケータとに応答して、別の記憶エリアの第２エリア上にある第２区間に第１区間のデータをコピーし、第１テーブルのポインタの対応する１つに第２区間を指し示させることを含んでもよい。また、格納データへのアクセスは、別の記憶エリアの第１エリア上にある第１区間への書き込みと、別の記憶エリアの第１エリアを第１および第２仮想記憶エリアと関連付けた後に、第１区間に対して書き込み動作を実行していないことを示すデータ・インディケータとに応答して、第１区間のデータを別の記憶エリアの第２エリア上にある第２区間にコピーし、第１テーブルのポインタの対応する１つと第２テーブルのポインタの対応する１つとに第２区間を指し示させることを含んでもよい。また、格納データへのアクセスは、第２区間に対応する第１仮想記憶エリアに対する書き込みに応答して、第２区間から第３区間にデータをコピーすることを含んでもよい。また、格納データへのアクセスは、第１テーブルのポインタの対応する１つに第３区間を指し示させることを含んでもよい。また、格納データへのアクセスは、第２テーブルのポインタの対応する１つに第３区間を指し示させることを含んでもよい。第１時点は、第２時点と同一であってもよい。第１時点は、第２時点と異なっていてもよい。データの区間の各々は、データのトラックであってもよい。記憶エリアの各々は記憶装置であってもよい。
【０００７】
更に、本発明によれば、コンピュータ・プログラム生産物が、少なくとも２つの別の記憶エリアの区間を指し示すポインタのテーブルを有する仮想記憶エリアであって、データの区間を含まない仮想記憶エリアを提供する実行可能コードと、仮想記憶エリアのデータにアクセスする要求に応答して別の記憶エリアのどの特定の１つがデータを収容しているかを判定する実行可能コードと、ポインタのテーブルを用いて、別の記憶エリアの特定の１つのデータにアクセスする実行可能コードとを含む。また、コンピュータ・プログラム生産物は、別の記憶エリアの第１エリアを別の記憶エリアの第１エリアのデータのコピーを表す仮想記憶エリアと関連付ける実行可能コードを含んでもよい。また、コンピュータ・プログラム生産物は、仮想記憶エリアを別の記憶エリアの第１エリアに最初に関連付けるときに、テーブルのポインタ全てに別の記憶エリアの第１エリアの区間を最初に指し示させる実行可能コードを含んでもよい。また、コンピュータ・プログラム生産物は、別の記憶エリアの第１エリア上の第１区間に対する書き込みに応答して、別の記憶エリアの第２エリア上にある第２区間に第１区間のデータをコピーし、テーブルのポインタの対応する１つに第２区間を指し示させる実行可能コードを含んでもよい。また、コンピュータ・プログラム生産物は、データ・インディケータを別の記憶エリアの第１エリアの区間と関連付ける実行可能コードを含んでもよい。特定の区間に対するデータ・インディケータは、別の記憶エリアの第１エリアを仮想記憶エリアと関連付けた後に、特定の区間に対して書き込み動作が実行されたか否かを示す。また、コンピュータ・プログラム生産物は、別の記憶エリアの第１エリア上の第１区間に対する書き込みと、別の記憶エリアの第１エリアを仮想記憶エリアと関連付けた後に第１区間に書き込み動作が実行されていないことを示すデータ・インディケータとに応答して、第１区間のデータを、別の記憶エリアの第２エリア上にある第２区間にコピーし、テーブルのポインタの対応する１つに第２区間を指し示させる実行可能コードを含んでもよい。また、コンピュータ・プログラム生産物は、第１区間から第２区間へのデータ・コピーに続いて、書き込み動作を実行させた装置にステータス情報を送信する実行可能コードを含んでもよい。データの区間の各々は、データのトラックとすることができる。記憶エリアの各々は記憶装置としてもよい。
【０００８】
更に、本発明によれば、仮想記憶装置は、仮想記憶装置を仮想記憶装置のデータの区間の記憶領域である標準記憶装置と関連付け、区間の記憶領域の第１の部分が標準記憶装置のデータの区間である少なくとも１つのテーブルと、少なくとも１つのテーブルを備えた第１の複数のポインタとを含み、ポインタのうちの少なくとも一部が、第１の部分に対応する標準記憶装置の区間を指し示す。また、仮想記憶装置は、記憶領域の第２の部分であって、当該第２の部分にマップする標準記憶装置の対応する区間上のデータとは異なるデータを収容する区間の記憶領域の第２の部分と、少なくとも１つのテーブルを備えた第２の複数のポインタとを含んでもよく、第２の複数のポインタが、標準記憶装置とは異なる装置の区間を指し示す。第２の部分の各区間は、標準記憶装置の対応する区間上のデータの以前のバージョンを収容することができる。データの区間の各々は、データのトラックとすることができる。
【０００９】
本発明によれば、ホスト・コンピュータが、記憶装置の論理記憶エリアと記憶装置の仮想記憶エリアとの間で結合を設定する際、第１コマンドを記憶装置に送信して論理記憶エリアを登録し、第１コマンドに続いて、ホスト・コンピュータは第２コマンドを記憶装置に送り、論理記憶エリアを仮想記憶エリアに関係付け、第２コマンドに続いて、ホスト・コンピュータは第３コマンドを記憶装置に送り、論理記憶エリアと仮想記憶エリアとの間の結合を活性化する。結合の活性化に続いて、仮想記憶エリアのポインタは、論理記憶エリアの区間を指し示し、論理記憶エリアに対する書き込みによって、論理記憶エリアから記憶装置の別のエリアにデータがコピーされ、仮想記憶エリアの対応するポインタにこの別のエリアを指し示させる。第１コマンドによって、仮想記憶エリアを作成させるようにしてもよい。第２コマンドによって仮想記憶エリアを作成させるようにしてもよい。第２コマンドは、仮想記憶エリアの新たな名称と、仮想記憶エリアがホストに使用可能か否かを判定するインディケータとから成る群から選択され得る追加のパラメータを含んでもよい。
【００１０】
更に、本発明によれば、ホスト・コンピュータは、記憶装置の複数の論理記憶エリアの少なくとも１つと、当該記憶装置の複数の仮想記憶エリアの対応する１つの少なくとも１つとの間で結合を設定し、その際、記憶装置にコマンドを送信して、論理記憶エリアの少なくとも１つを仮想記憶エリアの対応する１つに関係付け、コマンドを送信した後に、複数の論理記憶エリアの少なくとも１つと複数の仮想記憶エリアの対応するものとの間の結合を活性化させ、活性化の後、結合に対応する仮想記憶エリアの少なくとも１つのポインタが、論理記憶エリアの対応する１つの区間を指し示し、論理記憶エリアの対応する１つに対する書き込みによって、論理記憶エリアの対応する１つから記憶装置の別のエリアにデータがコピーされ、仮想記憶エリアの少なくとも１つの対応するポインタに、この別のエリアを指し示させる。ホストがコマンドを送信することによって、仮想記憶エリアの少なくとも１つを作成することができる。活性化させる際、ホストが追加コマンドを送信することを含んでもよい。追加のコマンドは、仮想記憶エリアの少なくとも１つの新たな名称、および仮想記憶エリアの少なくとも１つがホストに使用可能か否かを判定するインディケータから成る群から選択され得るパラメータを含んでもよい。また、記憶装置の複数の論理記憶エリアの少なくとも１つと記憶装置の複数の仮想記憶エリアの対応する１つの少なくとも１つの間の結合を設定するホスト・コンピュータは、ホストが論理記憶エリアおよび仮想記憶エリアのリストを保持することを含んでもよい。結合の活性化は、リストをホストから記憶装置に受け渡すことを含んでもよい。リストは、リンク・リストとすることができる。リストの受け渡しは、リストおよび当該リストへのポインタのうちの一方を収容するデータ構造にポインタを渡すことを含んでもよい。論理記憶エリアは、全て、単一の統一群の一部であってもよい。結合を活性化させるには、ホストが１つの活性化コマンドを記憶装置に、論理記憶エリア／仮想記憶エリア対毎に供給することを含めばよい。結合を活性化させるには、ホストが単一の活性化コマンドを記憶装置に供給し、論理記憶エリア／仮想記憶エリア対の全てを活性化させればよい。記憶エリアを装置としてもよい。
【００１１】
更に、本発明によれば、記憶装置の論理記憶エリアと記憶装置の仮想記憶エリアとの間で結合を設定するコンピュータ・ソフトウエアは、第１コマンドを記憶装置に送信して論理記憶エリアを登録する実行可能コードと、第１コマンドを送信した後に、第２コマンドを記憶装置に送信して論理記憶エリアを仮想記憶エリアに関係付ける実行可能コマンドと、第２コマンドの後に、第３コマンドを記憶装置に送信して、論理記憶エリアと仮想記憶エリアとの間の結合を活性化する実行可能コードとを含み、結合の活性化後に、仮想記憶エリアのポインタが論理記憶エリアの区間を指し示し、論理記憶エリアに対する書き込みによって、論理記憶エリアから記憶装置の別のエリアにデータがコピーされ、仮想記憶エリアの対応するポインタにこの別のエリアを指し示させる。第２コマンドは、仮想記憶エリアの新たな名称、および仮想記憶エリアがホストに使用可能か否か判定するインディケータから成る群から選択され得る追加パラメータを含んでもよい。
【００１２】
更に、本発明によれば、記憶装置の複数の論理記憶エリアの少なくとも１つと記憶装置の複数の仮想記憶エリアの対応する１つの少なくとも１つとの間で結合を設定するコンピュータ・ソフトウエアは、コマンドを記憶装置に送り、論理記憶エリアの少なくとも１つを仮想記憶エリアの対応する１つに関係付ける実行可能コードと、コマンドを送信した後に、複数の論理記憶エリアの少なくとも１つと複数の仮想記憶エリアの対応する１つとの間の結合を活性化する実行可能コードとを含み、活性化後に、結合に対応する仮想記憶エリアの少なくとも１つのポインタが、論理記憶エリアの対応する１つの区間を指し示し、論理記憶エリアの対応する１つに対する書き込みによって、論理記憶エリアの対応する１つから記憶装置の別のエリアにデータがコピーされ、仮想記憶エリアの少なくとも１つの対応するポインタにこの別のエリアを指し示させる。活性化させる実行可能コードは、追加のコマンドを送信することもできる。追加のコマンドは、仮想記憶エリアの少なくとも１つの新たな名称、および仮想記憶エリアの少なくとも１つがホストに使用可能か否かを判定するインディケータから成る群から選択され得るパラメータを含んでもよい。また、コンピュータ・ソフトウエアは、論理記憶エリアおよび仮想記憶エリアのリストを保持する実行可能コードも含んでもよい。
【００１３】
更に、本発明によれば、データの処理は、データの区間を含む第１タイプの第１記憶エリアを提供し、データの区間を含む第１タイプの第２記憶エリアを提供し、第２タイプの第３記憶エリアを提供し（ここで、第２タイプは、その区間毎に、第１記憶エリアのデータの対応する区間および第２記憶エリアのデータの対応する区間の一方に対するポインタを有する）、第３記憶エリアをアクセス可能にさせないようにし、第３記憶エリアをアクセス可能にさせないようにした後に、第２記憶エリアの区間を指し示す第３記憶エリアのポインタに対応する第２記憶エリアからデータを供給することを含む。また、データの処理は、記憶エリアを設けた後で、第３記憶エリアを使用可能にさせないようにする前に、第３記憶エリアの対応するポインタが指し示す第１記憶エリアの特定区間に対する書き込みを処理することも含んでもよく、その際、第１記憶エリアの特定区間から第２記憶エリアの対応区間にデータをコピーし、第３記憶エリアの対応するポインタを調節して、第２記憶エリアの対応区間を指し示すようにする。また、データの処理は、第３記憶エリアを使用可能にさせないようにした後に、第１記憶エリアの特定区間にデータを書き込むことによって、これに対する書き込みを処理することも含んでもよい。第３記憶エリアを使用可能にさせない場合、第１記憶エリアのヘッダに値を与えることを含んでもよく、この値は、データを第１記憶エリアの対応する区間に書き込むときに、保護ビットが設定されていることの発見に伴って、動作を実行すべきではないことを示す。また、データの処理は、ヘッダに値を与える前に第１記憶エリアへのアクセスを禁止し、値をヘッダに与えた後に第１記憶エリアへのアクセスを許可することを含んでも良い。記憶エリアは装置としてもよい。
【００１４】
更に、本発明によれば、仮想記憶エリアからの要求データの検索は、仮想記憶エリアが不活性化状態にあるか否かの判定を行い、仮想記憶エリアが不活性化状態にある場合、要求データが、不活性化される前に仮想記憶エリアによって処理されたデータに対応するか否か判定を行い、要求データが、不活性化される前に仮想記憶エリアによって処理されたデータに対応する場合、要求データを供給することを含む。要求データが、不活性化される前に仮想記憶エリアによって処理されたデータに対応するか否か判定する際、対応する標準論理記憶エリアの保護ビットを試験することを含んでもよい。要求データを供給する際、仮想記憶エリアを読み取ることを含んでもよい。記憶エリアは装置としてもよい。
【００１５】
更に、本発明によれば、データを以前のバージョンに復元することは、データの現バージョンを取得し、以前に保管したデータの区間を取得し、データが以前のバージョンのデータに対応するまで、以前に保管したデータの区間を繰り返し現バージョンおよび得られた中間バージョンに適用することを含む。以前に保管した区間は、保管以前に存在した区間のバージョンに対応することもある。保管することは、論理記憶エリアのデータの区間のポインタを収容する仮想記憶エリアを用意し、論理記憶エリアの区間に対する書き込みに応答して、論理記憶エリアから別のエリアにデータをコピーし、仮想記憶エリアに別のエリアを指し示させることを含んでもよく、別のエリアは保管データを収容する。
【００１６】
更に、本発明によれば、コンピュータ・ソフトウエアは、データの区間を含む第１タイプの第１記憶エリア、データの区間を含む第１タイプの第２記憶エリア、および第２タイプの第３記憶エリアと共に用いるデータを処理する。第２タイプは、その区間毎に、第１記憶エリアのデータの対応する区間および第２記憶エリアのデータの対応する区間の一方に対するポインタを有する。ソフトウエアは、第３記憶エリアをアクセス可能にさせないようにする実行可能コードと、第３記憶エリアがアクセス不可能になった後に、第２記憶エリアの区間を指し示す第３記憶エリアのポインタに対応する第２記憶エリアからデータを供給する実行可能コードを含む。第３記憶エリアを使用可能にさせないようにする実行可能コードは、第１記憶エリアのヘッダに値を供給する実行可能コードを含んでもよく、この値は、データを第１記憶エリアの対応する区間に書き込むときに、保護ビットが設定されていることの発見に伴って、動作を実行すべきではないことを示す。
【００１７】
更に、本発明によれば、仮想記憶エリアから要求データを検索するコンピュータ・ソフトウエアは、仮想記憶エリアが不活性化状態にあるか否か判定する実行可能コードと、仮想記憶エリアが不活性化状態にある場合、要求データが、不活性化の前に仮想記憶エリアによって処理されたデータに対応するか否か判定を行う実行可能コードと、要求データが、不活性化の前に仮想記憶エリアによって処理されたデータに対応する場合、要求データを供給する実行可能コードとを含む。また、このソフトウエアは、対応する標準論理記憶エリアの保護ビットを試験する実行可能コードを含んでもよい。また、このソフトウエアは、仮想記憶エリアを読み取る実行可能コードを含んでもよい。
【００１８】
更に、本発明によれば、データを以前のバージョンに復元するコンピュータ・ソフトウエアは、現バージョンのデータを取得する実行可能コードと、以前に保管したデータの区間を取得する実行可能コードと、データが以前のバージョンのデータに対応するまで、現バージョンおよび得られた中間バージョンに以前に保管したデータの区間を繰り返し適用する実行可能コードを含む。以前に保管した区間は、保管以前に存在した区間のバージョンに対応してもよい。
【００１９】
更に、本発明によれば、データのアクセスは、ホスト・コンピュータが、データを収容する第１タイプの第１記憶エリアと、第１タイプの記憶エリアに供給されたデータへのポインタを収容する第２タイプの第２記憶エリアとの間で関係を確立することを含む。記憶エリアは、ホストに結合された記憶装置内に設けられており、関係を確立した後の第１記憶エリアの特定区間にホストがデータを書き込むことに応答して、書き込み動作が実行される前に、特定区間が第１記憶エリアから第１タイプの第３記憶エリアにコピーされ、第２記憶エリアの対応するポインタが第３記憶エリアを指し示すように調節される。また、データのアクセスは、第２記憶エリアから第１記憶エリアにデータを復元することを含んでもよい。また、データのアクセスは、第２記憶エリアから第１タイプの第４記憶エリアにデータを復元することを含んでもよい。第４記憶エリアは、第１記憶エリアの分割ミラーであってもよい。第１および第２記憶エリアは、記憶装置としてもよい。関係を確立することは、ホストが第２記憶装置に任意の新たな名称を与えることを含んでもよい。関係を確立することは、ホストが第２記憶装置に任意のオンライン／オフライン・パラメータを与えることを含んでもよい。また、データのアクセスは、第２記憶エリアをホストが使用できなくすることによって、第２記憶エリアを不活性化することを含んでもよい。また、データのアクセスは、第１記憶エリアから第３記憶エリアにコピーした区間をホストが使用できるようにすることを含んでもよい。記憶エリアは装置としてもよい。
【００２０】
更に、本発明によれば、データの区間を収容しない仮想記憶エリアを設けることは、各々データの区間を含む第１および第２記憶エリアを設け、複数のポインタを設け、各ポインタが、第１記憶エリアの区間および第２記憶エリアの区間の一方を指し示すことを含む。仮想記憶エリアは、第１記憶エリアのポイント・イン・タイム・コピーを表すことができる。仮想記憶エリアの特定のポインタが指し示す第１記憶エリアの特定区間にデータを書き込む前に、この特定区間が第２記憶エリアにコピーされ、特定のポインタがこれを指し示すようにしてもよい。ポインタ、仮想記憶エリア、第１記憶エリア、および第２記憶エリアは全て、記憶装置上に設けられる。仮想記憶エリアに対応するデータは、記憶装置に結合されている複数のホスト・プロセッサによってアクセスすることができる。記憶エリアは記憶装置としてもよい。
【００２１】
更に、本発明によれば、データの区間を収容していない仮想記憶エリアに関連付けて格納したデータにアクセスすることは、このデータに対応する仮想記憶エリアのポインタを取得し、第１記憶エリアを指し示すポインタに応答して、第１記憶エリアにアクセスし、第２記憶エリアを指し示すポインタに応答して、第２記憶エリアにアクセスすることを含む。ポインタ、仮想記憶エリア、第１記憶エリア、および第２記憶エリアは全て、記憶装置上に設けることができる。仮想記憶エリアに対応するデータは、記憶装置に接続されている複数のホスト・プロセッサによってアクセスすることができる。記憶エリアは装置としてもよい。
【００２２】
更に、本発明によれば、データの区間を含まない仮想記憶エリアを設けるソフトウエアは、各々データの区間を含む第１および第２記憶エリアを設ける実行可能コードと、複数のポインタを設ける実行可能コードとを含み、各ポインタが、第１記憶エリアの区間および第２記憶エリアの区間のうちの一方を指し示す。仮想記憶エリアは、第１記憶エリアのポイント・イン・タイム・コピーを表すことができる。また、コンピュータ・ソフトウエアは、仮想記憶エリアの特定のポインタが指し示す第１記憶エリアの特定区間にデータを書き込む前の実行可能コードと、特定区間を第２記憶エリアにコピーし、第２記憶エリアを指し示すように特定のポインタを調節する実行可能コードとを含む。
【００２３】
更に、本発明によれば、データの区間を含まない仮想記憶エリアに関連付けて格納したデータにアクセスするコンピュータ・ソフトウエアは、このデータに対応する仮想記憶エリアのポインタを取得する実行可能コードと、第１記憶エリアを指し示すポインタに応答して、第１記憶エリアにアクセスする実行可能コードと、第２記憶エリアを指し示すポインタに応答して、第２記憶エリアにアクセスする実行可能コードとを含む。
【００２４】
更に、本発明によれば、複数の記憶エリアを設置することは、データの区間を含む第１タイプの第１の複数の記憶エリアの各々を、第１タイプのデータ記憶エリアの代替区間へのポインタを有する第２タイプの第２の複数の記憶エリアの対応するものと関連付け、初期状態では、第２の複数の記憶エリアのいずれも、それに対応するデータにアクセスするために使用できず、第１および第２の複数の記憶エリアを全て関連付けた後、第２の複数の記憶エリアを活性化して第２の複数の記憶エリアをデータのアクセスに使用可能とすることを含む。また、複数の記憶エリアを設置することは、第２の複数の記憶エリアを活性化する前に、第２の複数の記憶エリアのポインタを、第１の複数の記憶エリアの対応するものの区間を指し示すように設定することを含んでもよい。また、複数の記憶エリアを設置することは、第２の複数の記憶エリアを活性化した後、第１の複数の記憶エリアの１つに対する書き込みに応答して、そのデータの一部をデータ記憶エリアの代替区間にコピーし、第２の複数の記憶エリアの対応する１つのポインタを調節して、データ記憶エリアの代替区間を指し示すようにすることを含んでもよい。また、複数の記憶エリアを設置することは、第２の複数の記憶エリアを活性化する前に、第１の複数の記憶エリアへの排他的アクセスを有効にし、第２の複数の記憶エリアを活性化した後、第１の複数の記憶エリアへの排他的アクセスを無効にすることを含んでもよい。また、複数の記憶エリアを設置することは、第２の複数の記憶エリアの対応する１つを活性化する前に、第１の複数の記憶エリアの１つへの排他的アクセスを有効にし、第２の複数の記憶エリアの対応する１つを活性化した後に、第１の複数の記憶エリアの１つへの排他的アクセスを無効にすることを含んでもよい。第２の複数の記憶エリアを活性化することは、第２の複数の記憶エリアの各々の装置ヘッダに値を与えることを含んでもよい。また、複数の記憶エリアを設置することは、論理記憶エリアおよび仮想記憶エリアに統一群を設置することを含んでもよい。第１の複数の記憶エリアの各々を第２の複数の記憶エリアの対応するものと関連付けることは、記憶エリアの活性化に伴って用いられる関連の記憶エリアのリストを作成することを含んでもよい。このリストは、リンク・リストであってもよい。第２の複数の記憶エリアを活性化することは、第１の複数の記憶エリアの各々の各区間に対して特定の保護ビットを設定し、第１の複数の記憶エリアの各々のヘッダの各々に値を設定することを含んでもよく、この値は、保護ビットが設定されている第１の複数の記憶エリアの区間に対する書き込みに応答して、特殊処理を実行することを示す。記憶エリアは装置としてもよい。
【００２５】
本発明によれば、複数の記憶エリアを設置するコンピュータ・ソフトウエアは、データの区間を含む第１タイプの第１の複数の記憶エリアの各々を、第１タイプのデータ記憶エリアの代替区間に対するポインタを有する第２タイプの第２の複数の記憶エリアの対応するものと関連付け、初期状態では、第２の複数の記憶エリアのいずれも、それに対応するデータにアクセスするために使用できず、第１および第２の複数の記憶エリアを全て関連付けた後、第２の複数の記憶エリアを活性化して第２の複数の記憶エリアをデータのアクセスに使用可能とする実行可能コードを含む。また、このコンピュータ・ソフトウエアは、第２の複数の記憶エリアを活性化する前に、第２の複数の記憶エリアのポインタを、第１の複数の記憶エリアの対応するものの区間を指し示すように設定する実行可能コードを含んでもよい。また、コンピュータ・ソフトウエアは、第２の複数の記憶エリアを活性化した後に、第１の複数の記憶エリアの１つに対する書き込みに応答して、そのデータの一部をデータ記憶エリアの代替区間にコピーし、第２の複数の記憶エリアの対応する１つのポインタを調節し、データ記憶エリアの代替区間を指し示すようにする実行可能コードを含んでもよい。また、コンピュータ・ソフトウエアは、第２の複数の記憶エリアを活性化する前に第１の複数の記憶エリアへの排他的アクセスを有効にする実行可能コードと、第２の複数の記憶エリアを活性化した後に、第１の複数の記憶エリアへの排他的アクセスを無効にする実行可能コードとを含んでもよい。また、コンピュータ・ソフトウエアは、第２の複数の記憶エリアの対応する１つを活性化する前に、第１の複数の記憶エリアの１つへの排他的アクセスを有効にする実行可能コードと、第２の複数の記憶エリアの対応する１つを活性化した後に、第１の複数の記憶エリアの１つへの排他的アクセスを無効にする実行可能コードとを含んでもよい。第２の複数の記憶エリアを活性化する実行可能コードは、第２の複数の記憶エリアの各々の装置ヘッダに値を与える実行可能コードを含んでもよい。また、コンピュータ・ソフトウエアは、論理記憶エリアおよび仮想記憶エリアに統一群を設置する実行可能コードを含んでもよい。第１の複数の記憶エリアの各々を第２の複数の記憶エリアの対応するものと関連付ける実行可能コードは、記憶エリアの活性化に伴って用いられる関連の記憶エリアのリストを作成することもできる。このリストは、リンク・リストであってもよい。第２の複数の記憶エリアを活性化する実行可能コードは、第１の複数の記憶エリアの各々の各区間に対する特定の保護ビットを設定してもよく、更に第１の複数の記憶エリアの各々のヘッダの各々に値を設定してもよく、この値は、保護ビットが設定された第１の複数の記憶エリアの区間に対する書き込みに応答して特殊処理が実行されることを示す。
【００２６】
更に、本発明によれば、データを復元することは、データの区間を含む第１タイプの第１記憶エリアにデータを供給し、第２タイプの第２記憶エリアにデータを供給し（ここで、第２タイプは、そのデータ区間毎に、第１記憶エリアのデータの対応する区間へのポインタと、第１タイプの第３記憶エリアのデータの対応する区間へのポインタの少なくとも一方を有する）、第３記憶エリアへのポインタを有する第２記憶エリアのデータの特定の区間毎に、第１記憶エリアの対応する区間を第３記憶エリアへのポインタに置換することを含む。また、データを復元することは、第１記憶エリアの特定区間全てを置換した後に、第２記憶エリアを除外することを含んでもよい。また、データを復元することは、第１記憶エリアの特定区間の全てを置換した後、第３記憶エリアから第１記憶エリアにデータをコピーすることを含んでもよい。記憶エリアは装置としてもよい。
【００２７】
更に、本発明によれば、データの復元は、データの区間を含む第１タイプの第１記憶エリアにデータを供給し、第２タイプの第２記憶エリアにデータを供給し、第２タイプが、そのデータの区間毎に、第１記憶エリアのデータの対応する区間へのポインタと、第１タイプの第３記憶エリアのデータの対応する区間へのポインタのうちの少なくとも１つを有し、第３記憶エリアへのポインタを有する第２記憶エリアのデータの特定区間毎に、第１タイプの第４記憶エリアの対応する区間を第３記憶エリアへのポインタと置換し、第１記憶エリアへのポインタを有する第２記憶エリアのデータの特定区間毎に、第４記憶エリアの対応する区間を第１記憶エリアへのポインタと置換することを含む。また、データを復元することは、第４記憶エリアの特定区間の全てを置換した後に、第２記憶エリアを除外することを含んでもよい。また、データを復元することは、第４記憶エリアの特定区間の全てを置換した後、第１および第３記憶エリアから第４記憶エリアにデータをコピーさせることを含んでもよい。記憶エリアは装置としてもよい。
【００２８】
更に、本発明によれば、データを復元することは、データの区間を含む第１タイプの第１記憶エリアにデータを供給し、第２タイプの第２記憶エリアにデータを供給し（ここで、第２タイプは、そのデータの各区間毎に、第１記憶エリアのデータの対応する区間へのポインタと、第１タイプの第３記憶エリアのデータの対応する区間へのポインタのうちの少なくとも１つを有する）、第３記憶エリアへのポインタを有する第２記憶エリアのデータの特定区間毎に、第１タイプの第４記憶エリアの対応する区間を、第３記憶エリアへのポインタに置換することを含み、第４記憶エリアは少なくとも第１記憶エリアのミラー・コピーの一部である。また、データを復元することは、第４記憶エリアの特定区間の全てを置換した後に、第２記憶エリアを除外することを含んでもよい。また、データを復元することは、第４記憶エリアの特定区間の全てを置換した後に、第３記憶エリアから第４記憶エリアにデータをコピーさせることを含んでもよい。記憶エリアは装置としてもよい。
【００２９】
更に、本発明によれば、データを復元することは、データの区間を含む第１タイプの第１記憶エリアにデータを供給し、第２タイプの第２記憶エリアにデータを供給し（ここで、第２タイプは、そのデータの区間毎に、第１記憶エリアのデータの対応する区間へのポインタ、および第１タイプの第３記憶エリアのデータの対応する区間へのポインタのうちの少なくとも一方を有する）、第２記憶エリアから第２タイプの第３記憶エリアにデータをコピーすることを含む。また、データを復元することは、データのコピー後、第２記憶エリアを除外することを含んでもよい。
【００３０】
更に、本発明によれば、コンピュータ・ソフトウエアが、システムと共に、データを復元し、このシステムが、データの区間を含む第１タイプの第１記憶エリアにデータを供給し、第２タイプの第２記憶エリアにデータを供給する。第２タイプは、そのデータの区間毎に、第１記憶エリアのデータの対応する区間へのポインタ、および第１タイプの第３記憶エリアのデータの対応する区間へのポインタのうちの少なくとも一方を有する。このソフトウエアは、第３記憶エリアへのポインタを有する第２記憶エリアのデータの特定区間毎に、第１記憶エリアの対応する区間を第３記憶エリアへのポインタに置換する実行可能コードを含む。また、このソフトウエアは、第１記憶エリアの特定区間を全て置換した後に、第３記憶エリアから第１記憶エリアにデータをコピーさせる実行可能コードを含んでもよい。
【００３１】
更に、本発明によれば、コンピュータ・ソフトウエアが、システムと共に、データを復元し、このシステムが、データの区間を含む第１タイプの第１記憶エリアにデータを供給し、第２タイプの第２記憶エリアにデータを供給する。第２タイプは、そのデータの区間毎に、第１記憶エリアのデータの対応する区間へのポインタ、および第１タイプの第３記憶エリアのデータの対応する区間へのポインタのうちの少なくとも一方を有する。このソフトウエアは、第３記憶エリアへのポインタを有する第２記憶エリアのデータの特定区間毎に、第１タイプの第４記憶エリアの対応する区間を第３記憶エリアへのポインタと置換する実行可能コードと、第１記憶エリアへのポインタを有する第２記憶エリアのデータの特定区間毎に、第４記憶エリアの対応する区間を第１記憶エリアへのポインタに置換する実行可能コードとを含む。また、このコンピュータ・ソフトウエアは、第４記憶エリアの特定区間を全て置換した後に、第１および第３記憶エリアから第４記憶エリアにデータをコピーさせる実行可能コードも含む。
【００３２】
更に、本発明によれば、コンピュータ・ソフトウエアが、システムと共に、データを復元し、このシステムが、データの区間を含む第１タイプの第１記憶エリアにデータを供給し、第２タイプの第２記憶エリアにデータを供給する。第２タイプは、そのデータの区間毎に、第１記憶エリアのデータの対応する区間へのポインタ、および第１タイプの第３記憶エリアのデータの対応する区間へのポインタのうちの少なくとも一方を有する。このソフトウエアは、第３記憶エリアへのポインタを有する第２記憶エリアのデータの特定区間毎に、第１タイプの第４記憶エリアの対応する区間を第３記憶エリアへのポインタに置換する実行可能コードを含み、第４記憶エリアが、少なくとも第１記憶エリアのミラー・コピーの一部である。また、コンピュータ・ソフトウエアは、第４記憶エリアの特定区域を全て置換した後、第３記憶エリアから第４記憶エリアにデータをコピーさせる実行可能コードも含む。
【００３３】
更に、本発明によれば、コンピュータ・ソフトウエアが、システムと共に、データを復元し、このシステムが、データの区間を含む第１タイプの第１記憶エリアにデータを供給し、第２タイプの第２記憶エリアにデータを供給する。第２タイプは、そのデータの区間毎に、第１記憶エリアのデータの対応する区間へのポインタ、および第１タイプの第３記憶エリアのデータの対応する区間へのポインタのうちの少なくとも一方を有する。このソフトウエアは、第２記憶エリアから第２タイプの第３記憶エリアにデータをコピーする実行可能コードを含む。
【発明を実施するための最良の形態】
【００３４】
図１を参照すると、記憶装置３０は、複数のホスト・アダプタ（ＨＡ）３２〜３４、複数のディスク・アダプタ（ＤＡ）３６〜３８、および複数のディスク・ドライブ４２〜４４を含む。ディスク・ドライブ４２〜４４の各々は、ＤＡ３６〜３８のうちの対応する１つに接続されている。また、記憶装置３０は、ＨＡ３２〜３４およびＤＡ３６〜３８がアクセス可能なグローバル・メモリ４６も含む。また、記憶装置３０は、グローバル・メモリ４６にアクセス可能なＲＤＦアダプタ（ＲＡ）４８も含む。ＲＡ４８は、データ・リンク５２を通じて、１つ以上の追加の遠隔記憶装置（図示せず）および／または１つ以上の他の遠隔装置（図示せず）と通信することができる。ＨＡ３２〜３４、ＤＡ３６〜３８、グローバル・メモリ４６およびＲＡ４８は、バス５４に接続されている、バス５４は、これらの間の通信をしやすくするために設けられている。
【００３５】
ＨＡ３２〜３４の各々は、記憶装置３０にアクセスする１つ以上のホスト・コンピュータ（図示せず）に接続することができる。ホスト・コンピュータ（ホスト）は、ディスク・ドライブ４２〜４４上に格納されているデータを読み取り、ディスク・ドライブ４２〜４４にデータを書き込む。グローバル・メモリ４６は、ディスク・ドライブ４２〜４４からのデータ・トラックを保持するキャッシュ・メモリ、およびＨＡ３２〜３４、ＤＡ３６〜３８、およびＲＡ４８がアクセス可能なテーブル用の記憶領域を含む。尚、ここでの記載では、データ・ブロックのことをトラック又はデータ・トラックと記述することを注記しておく。しかしながら、ここに記載するシステムは、適当なデータ増分量またはデータ区間のいずれとでも動作し、可変データ増分量および／または固定データ増分量も含み得ることを、当業者には理解し得る。
【００３６】
図２を参照すると、記憶装置３０が、複数の標準論理装置６１〜６８を含むものとして示されている。標準論理装置６１〜６８の各々は、記憶装置３０に接続されている１つ以上のホストにアクセス可能なボリュームに対応している。標準論理装置６１〜６８の各々は、ディスク・ドライブ４２〜４４の１つに対応しても、しなくてもよい。したがって、例えば、標準論理装置６１はディスク・ドライブ４２に対応することができ、ディスク・ドライブ４２の一部に対応することができ、またディスク・ドライブ４２の一部およびディスク・ドライブ４３の一部に対応することもできる。標準論理装置６１〜６８の各々は、ホストにはディスクの記憶領域の連続ブロックのように見えるが、標準論理装置６１〜６８の各々は、ディスク・ドライブ４２〜４４の実際の連続物理記憶領域に対応しても、しなくてもよい。
【００３７】
また、記憶装置３０は、複数の仮想装置７１〜７４も含むことができる。仮想装置７１〜７４は、記憶装置３０に接続されているホストには、データ記憶領域の連続ブロックを含むボリュームのように見える。仮想装置７１〜７４の各々は、標準論理装置６１〜６８のうちの１つの全体、標準論理装置６１〜６８のうちの１つの一部、または標準論理装置６１〜６８のうちのいくつかの一部または全体の組み合わせのポイント・イン・タイム・コピー（point in time copy)を表すことができる。しかしながら、この明細書でいずれ更に詳しく述べるが、仮想装置７１〜７４は標準論理装置６１〜６８からのトラック・データを含まない。代わりに、仮想装置７１〜７４の各々は、トラック・データの一部または全部を格納するログ装置７６またはログ装置７８に接続されている。これについてはこの明細書中でいずれ更に詳しく説明する。仮想装置７１〜７４は、標準論理装置６１〜６８またはログ装置７６、７８のいずれかのデータのトラックを指し示すテーブルを含む。
【００３８】
仮想装置７１は、標準論理装置６１のポイント・イン・タイム・コピーを表すことができる。この明細書中でいずれ更に詳しく説明するが、仮想装置７１は、ホストに対して仮想装置７１が標準論理装置６１のポイント・イン・タイム・コピーであるかのように見えることを容易にするトラック・データを含むログ装置７６に接続されている。１つよりも多い仮想装置に対して単一のログ装置を用いることが可能である。したがって、仮想装置７２〜７４は、ログ装置７８に接続されるものとして示されている。同様に、１つよりも多い仮想装置が単一の標準論理装置のポイント・イン・タイム・コピーを表すことも可能である。したがって、仮想装置７２、７３は、標準論理装置６４のポイント・イン・タイム・コピーとして示されている。仮想装置７２、７３は、標準論理装置６４の同じポイント・イン・タイム・コピーを表すことができ、あるいは異なる時刻に取得した標準論理装置６４のポイント・イン・タイム・コピーを表すことができる。尚、標準論理装置６１〜６８の一部のみが、仮想装置７１〜７４の対応する一つのものと関連付けて示されており、その他の標準論理装置６１〜６８はそのようにされていないことを注記しておく。
【００３９】
実施形態によっては、記憶装置の代わりに、記憶エリアを用いて、本明細書に記載するシステムを実施することも可能である。したがって、例えば、仮想装置７１〜７４を仮想記憶エリアとし、標準論理装置６１〜６８を標準論理エリアとし、ログ装置７６、７８をログ・エリアとしてもよい。場合によっては、かかる実施態様は混成論理／仮想装置も考慮することができ、この場合、単一の論理装置は、標準論理装置として振る舞う部分、仮想装置として振る舞う部分、および／またはログ装置として振る舞う部分を有する。したがって、適当な場合には、この明細書中の説明における装置に対する言及を、記憶装置と直接対応する、または対応しない記憶エリアにも適用可能であることは言うまでもない。
【００４０】
図３を参照すると、図は、標準論理装置８２、仮想装置８４、およびログ装置８６を示す。先に説明したように、仮想装置８４は標準論理装置８２の全部または一部のポイント・イン・タイム・コピーを表す。仮想装置８４にアクセスする記憶装置に接続されているホストは、当該ホストが標準論理装置８２にアクセスするのと同様に、仮想装置８４にアクセスすることができる。しかしながら、仮想装置８４は、標準論理装置８２からのトラック・データを全く含んでいない。代わりに、仮想装置８４は、標準論理装置８２またはログ装置８６のいずれかのトラックを指し示す複数のテーブル・エントリを含む。
【００４１】
仮想装置８４を設置するとき（例えば、標準論理装置８２のポイント・イン・タイム・コピーを作成するとき）、仮想装置８４が作成され、設置の時点で標準論理装置８２のトラックを指し示す適切なテーブル・エントリが設けられる。仮想装置８４にアクセスしてトラックを読み取るホストは、標準論理装置８２のトラックを指し示す仮想装置８４のテーブル・エントリに基づいて、標準論理装置８２から適切なトラックを読み取る。
【００４２】
仮想装置８４が設置された後、ホストは標準論理装置８２にデータを書き込むことが可能となる。この場合、標準論理装置８２上に格納されていた以前のデータは、ログ装置８６にコピーされ、標準論理装置８２のトラックを以前に指し示していた仮想装置８４のテーブル・エントリは、データがコピーされたログ装置８６の新たなトラックを指し示すように変更される。このようにして、仮想装置８４にアクセスするホストは、仮想装置８４が設置されて以来変化していない標準論理装置８２からのトラックを読み取るか、あるいは仮想装置８４が設置された後に標準論理装置８２からコピーされたデータを含むログ装置８６から対応するトラックを読み取る。標準論理装置８２および仮想装置８４に対する読み出しおよび書き込みに伴うデータおよびポインタの調節については、この明細書中でいずれ更に詳しく説明する。
【００４３】
ここに記載する実施形態では、ホストは、ログ装置８６には直接アクセスすることができない。即ち、ログ装置８６は、仮想装置８４（およびこの明細書中でいずれ更に詳しく説明するような他の仮想装置も可能である）と共に用いられることに限られる。加えて、ここに記載する実施形態では、標準論理装置８２、仮想装置８４、およびログ装置８６を単一の記憶装置３０上に設けることができる。しかしながら、異なる論理装置およびログ装置を別個の記憶装置上に設け、例えば、ＲＤＦプロトコルまたはその他の遠隔通信プロトコルを用いて相互接続することも可能である。加えて、標準論理装置８２、仮想装置８４、および／またはログ装置８６の１つ以上の一部を、別個の記憶装置上に設け、適宜相互接続することも可能である。
【００４４】
図４を参照すると、仮想装置の別の使用例では、標準論理装置９２、複数の仮想装置９４〜９７、およびログ装置９８が示されている。図４の例では、仮想装置９４は、午前１０時に作成した標準論理装置９２のポイント・イン・タイム・コピーを表す。同様に、仮想装置９５は、正午に作成した標準論理装置９２のコピーを表し、仮想装置９７は、午後４時に作成した標準論理装置９２のコピーを表す。尚、仮想装置９４〜９７の全てがログ装置９８を共有してもよいことを注記しておく。加えて、仮想装置８４〜９７のうちの２台以上のテーブル・エントリ、または仮想装置９４〜９７のテーブル・エントリのサブセットが、ログ装置９８の同じトラックを指し示すことも可能である。図４では例えば、仮想装置９５および仮想装置９６は、ログ装置９８の同じトラックを指し示すテーブル・エントリを有するものとして示されている。
【００４５】
ここで説明する実施形態では、ログ装置９８および他のログ装置は、記憶装置３０が管理するログ装置の集合体によって設けられる。その場合、仮想装置はログ装置の追加のトラックを必要とするので、仮想装置のために、ログ装置集合体機構を用いて、余分なログ装置記憶領域が作成される（既存のログ装置または新たなログ装置のための追加トラックという形態）。このような記憶装置集合体資源は、当技術分野では公知である。集合体を用いない他の技法を用いても、ログ装置記憶領域を設けることは可能である。
【００４６】
図５を参照すると、図１００は、装置情報を追跡するために用いられるテーブルを示す。第１テーブル１０２は、記憶装置またはＨＡおよび／またはＤＡのような記憶装置の要素によって用いられる装置全てに対応する。テーブル１０２は、記憶装置（または記憶装置の一部）によって用いられる論理装置全てに対応する、複数の論理装置エントリ１０６〜１０８を含む。テーブル１０２内のエントリは、標準論理装置、仮想装置、ログ装置、およびその他の種類の論理装置についての記述を含む。
【００４７】
テーブル１０２のエントリ１０６〜１０８の各々は、各論理装置毎の情報を収容する別のテーブルに対応する。例えば、エントリ１０７はテーブル１１２に対応することができる。テーブル１１２は、オーバーヘッド情報を収容するヘッダを含む。また、テーブル１１２は、論理装置の各シリンダに対するエントリ１１６〜１１８を含む。ここに開示する実施形態では、論理装置をどのように初期化するかに応じて、論理装置はいずれの数のシリンダでも収容することができる。しかしながら、他の実施形態では、論理装置は固定数のシリンダを収容するようにしてもよい。
【００４８】
テーブル１１２は、余剰トラック・バイト１１９のための区間を含むものとして示されている。余剰トラック・バイト１１９は、この明細書中でいずれ説明する方法で、ログ装置と共に用いられる。ここに開示する実施形態では、ログ装置のトラック毎に８つの余剰トラック・バイトがある。論理装置ではない装置には、余剰トラック・バイト１１９を用いることはできない。
【００４９】
シリンダ・エントリ１１６〜１１８の各々は、トラック・テーブルに対応する。例えば、エントリ１１７は、オーバーヘッド情報を有するヘッダ１２４を含むトラック・テーブル１２２に対応することができる。また、トラック・テーブル１２２は、各トラックに対するエントリ１２６〜１２８も含む。ここに開示する実施形態では、全シリンダに対して１５個のトラックがある。しかしながら、別の実施形態では、シリンダ毎に異なる数のトラックを有することや、シリンダ毎に可変数のトラックを有することさえも可能な場合もある。標準論理装置およびログ装置では、エントリ１２６〜１２８の各々の情報は、記憶装置３０（または、システムの構成によっては、遠隔記憶装置）のディスク・ドライブ４２〜４４の１つの物理アドレスへの（直接的または間接的な）ポインタを含む。したがって、トラック・テーブル１２２を用いると、テーブル１０２、１１２、１２２に対応する論理装置の論理アドレスを、記憶装置３０のディスク・ドライブ４２〜４４上の物理アドレスにマップすることができる。仮想装置では、テーブル１２２のエントリ１２６〜１２８の各々は、対応する標準論理装置または対応するログ装置のトラックを指し示す。しかしながら、他の実施形態では、異なる機構を用いることも可能な場合もあり、その際、テーブル１０２、１１２、１２２は、データのトラックを収容する標準論理装置のみに用いられ、一方、単純なトラックのアレイのような、他の形式のテーブルが仮想装置によって用いられ、仮想装置のトラックが対応する標準論理装置またはログ装置のトラックにマップされる。
【００５０】
ログ装置の各トラックは、仮想装置によって用いられていないことを意味する空き状態か、あるいは当該トラックが１つ以上の仮想装置においてテーブル・エントリによって指し示されていることを意味する割当済み状態のいずれかにある。ここに開示する実施形態では、ログ装置のトラックを管理するには、最初に、ログ装置の空きトラック全ての二重リンク・リストを作成する。二重リンク・リストに対するポインタは、テーブル１１２の余剰トラック・バイト１１９によって与えられ、その結果ログ装置の余剰トラック・バイト１１９は、ログ装置のあらゆるトラックに対する８バイトを含む。ログ装置の各空きトラックについて、余剰８バイトは、ログ装置の次の空きトラックを指し示す順方向ポインタと、ログ装置の直前の空きトラックを指し示す逆方向ポインタとを含む。このように二重リンク・リストを用いることによって、ログ装置の空きトラックへのアクセスが容易となる。
【００５１】
加えて、ログ装置のトラックが割り当てられた場合（即ち、１つ以上の仮想装置によって用いられる場合）、当該トラックに対応する余剰トラック・バイト１１９を用いて、標準論理装置の対応するトラックを逆に指し示すことができる。したがって、仮想装置を設置した後に標準論理装置に書き込みを行う場合、標準論理装置からのデータをログ装置の新たなトラックにコピーし、論理装置の新たなトラックに対応する余剰トラック・バイトが、データの発信元である標準論理装置のトラックを逆に指し示すようにする。ログ装置の各トラックに、標準論理装置の対応するトラックを逆に指し示すようにさせることは、例えば、データ復元の状況では有用である。
【００５２】
加えて、ここに開示する実施形態では、割り当てられたトラックに対するトラック毎の余剰の８バイトに対するポインタも、データと共に格納される。即ち、ログ装置の特定のトラックが割り当てられると、標準論理装置の対応するトラックへ戻るポインタが、余剰トラック・バイト１１９と共に格納され、加えて、ログ装置のトラック上に、トラック・データ自体と共にポインタが格納される。ＣＫＤフォーマット・トラックでは、余剰の８バイトはブロック０に格納することができる。ＦＢＡフォーマット・トラックでは、余剰の８バイトは、トラック終端に添付される追加ブロック内に格納することができる。ここに開示する実施形態では、１ブロックは５１２バイトであり、ＦＢＡトラックは４０ブロックを含み、追加のブロックが添付されると、４１に増加する。例えば、ヤナイ他（Ｙａｎａｉ  ｅｔ  ａｌ．）の米国特許第５，２０６，９３９号に、異なるトラック・フォーマットが開示されている。その内容はこの言及により本願にも含まれるものとする。
【００５３】
図５のテーブル１０２、１１２、１２２は、記憶装置３０のグローバル・メモリ４６に格納することもできる。加えて、特定のホストによってアクセスされる装置に対応するテーブルも、ＨＡ３２〜３６のうちの対応する１つの内部メモリ内に格納することができる。加えて、ＲＡ４８および／またはＤＡ３６〜３８も、テーブル１０２、１１２、１２２の一部を用いてそれらデーブルを内部に格納することができる。
【００５４】
図６を参照すると、フロー・チャート１４０は、ホストが、仮想装置を介してアクセス可能なトラックに対応する装置テーブルからデータを読み出す際に実行するステップを示す。即ち、フロー・チャート１４０は、仮想装置に対してテーブル・エントリによって指し示されたトラックに関する情報を取得することを示す。
【００５５】
処理は、検査ステップ１４２から開始し、ここで、対象のトラック（即ち、読み出すテーブル・エントリに対応するトラック）が標準論理装置またはログ装置のどちらにあるか判断を下す。この決定を行うには、仮想装置の装置テーブル・エントリにアクセスし、対象のトラックのテーブル・エントリが、標準論理装置またはログ装置のいずれかを指し示しているか否かの判定を行う。検査ステップ１４２において、仮想装置のテーブル内のポインタが標準論理装置を指し示していると判断した場合、制御はステップ１４２からステップ１４８に移り、対象のテーブル・エントリを読み出す。ステップ１４８の後、処理は完了する。
【００５６】
検査ステップ１４２において、対象のトラックに対する仮想装置の装置テーブル内のポインタがログ装置を指し示していると判断した場合、制御はステップ１４２からステップ１５８に移行し、対象のログ・テーブル・エントリを読み出す。ステップ１５８の後、処理は完了する。
【００５７】
尚、場合によっては、データへのアクセスは、フラグまたはロックによって制御され、多数のプロセスが同時にデータにアクセスすることを禁止するようにしてもよいことを注記しておく。これは、特に、装置テーブルを読み出したり、変更している場合には有用である。ここに開示するシステムは、多数のプロセスによるデータへのアクセスを制御するための様々な機構のいずれをも想定しており、「フラグ」または「セマファー(semaphores)」としても知られている、ソフトウエアおよび／またはハードウエア・ロックの従来の組み合わせを含む。場合によっては、データにアクセスするプロセスは、別のプロセスがデータを解放するまで、待たなければならない場合もあり得る。一実施形態では、ハードウエア・ロックがソフトウエア・ロック（フラグ）へのアクセスを制御し、プロセスが最初にハードウエア・ロックの制御を取得し、ソフトウエア・ロックを検査し、次いでソフトウエア・ロックが解除されている場合、プロセスはソフトウエア・ロックを設定し、次いでハードウエア・ロックを解除する。プロセスがハードウエア・ロックを得て、ソフトウエア・ロックが解除されていないと判断すると、プロセスはハードウエア・ロックを解除し、ソフトウエア・ロックを設定した別のプロセスが、後の時点でソフトウエア・ロックを解除できるようにする。更に、場合によっては、最初に特定のトラックに対応するテーブル・エントリを読み出し、このトラックをキャッシュ・スロットに読み込み（トラックが未だキャッシュにない場合）、キャッシュ・スロットをロックし、次いで対応するテーブル・エントリを再度読み出すことも有用であることを注記しておく。
【００５８】
図７を参照すると、フロー・チャート１７０は、標準論理装置またはログ装置に対応する仮想装置に対する装置テーブルへの情報の書き込みに伴って実行されるステップを示す。処理は、第１ステップ１７２において開始し、書き込まれる装置テーブルのエントリに対応する特定のトラックは、標準論理装置またはログ装置のどちらにあるのか判断する。対象である特定のトラックが標準論理装置上にある場合、制御はステップ１７２からステップ１７８に移り、書き込まれる装置テーブルのエントリに対応するトラックをロックする。ステップ１７８においてトラックをロックすることによって、現プロセスが、トラックに対応する装置テーブルのエントリを修正している間他のプロセスがこのトラックにアクセスすることを防止し、かつ対応するテーブル・エントリを変更することを防止する。ステップ１７８に続いて、ステップ１８２において書き込み処理を実行する。ステップ１８２に続いて、ステップ１８４においてトラックのロックを解除する。ステップ１８４の後、処理は完了する。
【００５９】
検査ステップ１７２において、変更している仮想装置のテーブル・エントリに対応するトラックがログ装置を指し示す場合、制御はステップ１７２からステップ１９４に移り、書き込まれる装置テーブルのエントリに対応するログ装置のトラックをロックする。ステップ１９４に続くステップ１９６において、書き込み処理が実行される。ステップ１９６に続いて、ステップ１９８において、トラックのロックを解除する。ステップ１９４の後、処理は完了する。
【００６０】
図８を参照すると、フロー・チャート２１０は、仮想装置に対応する装置テーブルの変更に伴って実行するステップを示す。これは、仮想装置の装置テーブルのトラックのエントリが指し示す標準論理装置またはログ装置の装置テーブルの変更を示す図７のフロー・チャート１７０と対比するとよい。フロー・チャート２１０では、標準論理装置の装置テーブルやログ装置の装置テーブルではなく、仮想装置の装置テーブルが変更される。
【００６１】
処理は、第１ステップ２１２にて開始し、テーブルに対する変更が仮想装置の設置に関係するか否か判定を行う。この明細書中でいずれ説明するが、仮想装置の設置には、仮想装置を作成した後に、仮想装置へのホストによるアクセスを可能にすることが含まれる。仮想装置を設置することによって、仮想装置を標準論理装置と関連付けることになる（したがって、設置の時点における標準論理装置のポイント・イン・タイム・コピーを表す）。標準論理装置と関連付ける前では、仮想装置は設置されておらず、ホストによるアクセスも不可能である。設置後、仮想装置はホストによるアクセスが可能になる。
【００６２】
ステップ２１２において、テーブルに対する変更が仮想装置の設置に関係すると判定した場合、制御はステップ２１２からステップ２１４に移り、仮想装置に対する装置ロックを設定し、他のプロセスによるテーブルへのアクセスを禁止する。装置ロックは、この明細書中でいずれ説明するキャッシュ・スロット・ロックに匹敵する。
【００６３】
ステップ２１４に続いて、ステップ２１６において、仮想装置テーブルのポインタが、標準論理装置のトラックを指し示すようにし、更に設置した仮想装置に対応する標準論理装置のトラックの各々に対して保護ビットを設定する。ここに開示する実施形態では、標準論理装置のトラックは、各々、保護ビットとして設定可能な１６ビットを有し、標準論理装置に対して設置された各論理装置毎に１ビットずつである。実施形態の中には、仮想装置には無関係に保護ビットを用いる場合もある。新たに設置される仮想装置には、１６ビット・フィールド内に新たなビット位置が割り当てられるが、標準論理装置のトラック毎のビットを設定することができる。この明細書中でいずれ更に詳しく説明するが、保護ビットの設定、およびこれに続く標準論理装置に対する書き込みは、設置した仮想装置を標準論理装置に対応させるには特殊な処理を行う必要があることを示す。この特殊な処理については、この明細書中でいずれ更に詳しく説明する。ステップ２１６において、仮想装置の装置テーブルのトラック・エントリを全て、標準論理装置の対応するトラックを指し示すように変更する。したがって、仮想装置が最初に設置されるときには、仮想装置の装置テーブルのポインタは全て、標準論理装置のトラックを指し示すことになる。
【００６４】
ステップ２１６に続いて、ステップ２１７において、仮想装置をレディ状態(ready state)に設定し、仮想装置をホストに対してアクセス可能にする。ステップ２１７に続いて、ステップ２１８において仮想装置のロックを解除し、他の装置によるアクセスを可能にする。ステップ２１８の後、処理は完了する。
【００６５】
検査ステップ２１２において、仮想装置を設置していない（即ち、何らかの別の処理が実行されている）と判定した場合、制御は検査ステップ２１２からステップ２２２に移り、変更されている仮想装置の装置テーブルのエントリに対応するトラックをロックする。尚、ステップ２２２においてロックされるトラックは、標準論理装置上のトラック（仮想装置の装置テーブルにおける対象のエントリが標準論理装置を指し示す場合）、またはログ装置のトラック（対象のエントリがログ装置を指し示す場合）のいずれかとすることができる。ステップ２２２に続いて、ステップ２２４において、仮想装置の装置テーブルの変更を行う。ステップ２２４に続いて、ステップ２２６において、トラックのロックを解除する。ステップ２２６の後、処理は完了する。
【００６６】
図９を参照すると、フロー・チャート２３０は、ログ装置のトラック操作に伴って実行されるステップを示す。先に説明したように、ログ装置のトラックを維持するには、空いているログ装置のトラック（即ち、新たなデータを受け入れるために使用可能なトラック）の二重リンク・リストを作成する。したがって、１つ以上のトラックが、対応する仮想装置と共に使用するために必要な場合、二重リンク・リストから空きトラックを取得する。二重リンク・リストは、仮想装置の使用のために提供したトラックがもはや空きでないことを示すように、従来通りに変更される。逆に、１つ以上の仮想装置によって使用された１つ以上のトラックがもはや必要でなくなった場合、従来通りに、トラックを二重リンク・リストに戻し、トラックが空きであることを示す。図９のフロー・チャート２３０は、トラックを操作する多数のプロセスによるトラック（およびトラック・ポインタ）へのアクセスの制御に伴って実行されるステップを示す。
【００６７】
処理は、ステップ２３２において開始し、実行中の処理が、空きリスト上にあるトラックのみを変更するのか否か判定を行う。尚、例えば、空きトラックをリストのある部分から別の部分に、またはある空きリストから別の空きリストに（多数の空きリストの場合）移転させることにより空きリスト上のみでトラックを変更しても、いずれのデータに対応するトラックの変更も伴わないことを注記しておく。検査ステップ２３２において、実行中の変更が、空きリスト上のトラックのみに関与するのではないと判定した場合、制御はステップ２３２からステップ２３４に移行し、トラックをロックして、他のプロセスによるアクセスを防止する。
【００６８】
ステップ２３４に続いて、またはステップ２３４に到達しない場合はステップ２３２に続いて、検査ステップ２３６において、操作が割当済みのトラックのみに関与するのか否か判定を行う。割当済みトラックのみに関与するいずれの処理も、空きトラックのログ装置リストをロックする必要はない。ステップ２３６において、実行中の動作が割当済みトラックのみを操作しているのではないと判定した場合、制御はステップ２３６からステップ２３８に移行し、空きトラックのログ装置リストをロックし、他のプロセスによるアクセスを防止する。ステップ２３８の後、またはステップ２３８を実行しない場合はステップ２３６の後、ステップ２４２において、変更を実行する。
【００６９】
ステップ２４２の後、検査ステップ２４４において、操作が割当済みトラックのみに関与するのか否か判定を行う。ステップ２４４において、実行中の変更が割当済みトラックのみに関与するのではないと判定した場合、制御はステップ２４４からステップ２４６に移行し、ログ装置の空きリストのロックを解除する。ステップ２４６に続いて、またはステップ２４６に到達しない場合にはステップ２４４に続いて、検査ステップ２４８において、実行中の動作が空きリスト上にあるトラックのみを変更しているのか否かについて判定を行う。ステップ２４８において、実行中の動作が、空きリスト上にあるトラックのみを変更していると判定した場合、制御はステップ２４８からステップ２５２に移行し、ステップ２３４においてロックしたトラックのロックを解除する。ステップ２５２の後、またはステップ２４８の後ステップ２５２を実行しない場合、処理は完了する。
【００７０】
図１０を参照すると、フロー・チャート２８０は、仮想装置からのデータ読み出しに伴って実行されるステップを示す。処理は、検査ステップ２８２にて開始し、仮想装置の対象トラックに対する装置テーブル・エントリが標準論理装置を指し示しているのか、またはログ装置を指し示しているのか判定を行う。ステップ２８２において、テーブルが標準論理装置を指し示していると判定した場合、制御はステップ２８２からステップ２８４に移り、標準論理装置からトラックを読み出す。ステップ２８４の後、処理は完了する。一方、ステップ２８２において、仮想装置の装置テーブルがログ装置を指し示していると判定した場合、制御はステップ２８２からステップ２８６に移り、対象のトラックをログ装置から読み出す。ステップ２８６の後、処理は完了する。
【００７１】
尚、場合によっては、検査ステップ２８２に先だって、読み取りの対象であるトラックが既にキャッシュ・メモリ（グローバル・メモリ）内にあるか否か判定を行うことも可能なこともある。その場合、ステップ２８２、２８４、２８６のいずれも実行することなく、キャッシュ・メモリからトラックを取得することができる。
【００７２】
図１１を参照すると、フロー・チャート３００は、仮想装置を既に設置してある標準論理装置のトラックへの書き込みに伴ってＤＡが実行するステップを示す。処理は、ステップ３０２にて開始し、標準論理装置上で書き込もうとしているトラックの保護ビットが設定されているか否か判定を行う。検査ステップ３０２において、保護ビットが設定されていないと判定した場合、制御はステップ３０２からステップ３０４に移行し、通常の書き込み動作を実行する。即ち、ステップ３０４において、標準論理装置に対して既に設置されている仮想装置の存在には係わらず、従来通りに標準論理装置にデータを書き込む。ステップ３０４の後、処理は完了する。
【００７３】
ステップ３０２において、書き込まれている標準論理装置のトラック上に１つ以上の保護ビットが設定されていると判定した場合、制御はステップ３０２からステップ３０６に移り、ログ装置の空きトラックを取得する。ログ装置の空きトラックは、標準論理装置のトラックからデータをコピーするために必要となる。また、この明細書中でいずれ更に詳しく説明するが、ログ装置の空きトラックは、空きトラックの二重リンク・リストを用いて管理することができる。したがって、ステップ３０６において、ログ装置の空きトラックのリストを照査し、ポインタを適宜変更して使用するための空きトラックの１つを取り出して、空きトラックを取得することも可能である。
【００７４】
ステップ３０６に続いて、ステップ３０８において、ステップ３０２で設定されていると判定された保護ビットに対応する仮想装置毎に、初期状態において標準論理装置上で書き込まれているトラックを指し示していた仮想装置のポインタを、ステップ３０６において取得したログ装置の空きトラックを指し示すようにステップ３０８において変更する。先の説明したように、１つの標準論理装置に対して１つよりも多い仮想装置を設置させることが可能である。特定の標準論理装置に対して設置した仮想装置毎に、特定の保護ビットが標準論理装置のトラックの各々に対して設定される。したがって、ステップ３０８において、ステップ３０２で設定されていることが検出された保護ビットに対応する仮想装置全てについて、トラック・ポインタを変更する。このように仮想装置の装置テーブルにおけるトラック・ポインタが変更され、ステップ３０６において取得した新たなトラックを指し示すようにする。
【００７５】
ステップ３０８に続いて、ステップ３１２において、標準論理装置からステップ３０６において取得したログ装置上の新たなトラックにデータをコピーさせる。ここに開示する実施形態では、データのコピーは、ディスクの記憶領域から記憶装置のグローバル・メモリに（例えば、キャッシュ・スロットに）データを移動させ、ステップ３０６において取得したログ装置のトラックにデータをコピーさせるように書き込み保留インディケータ(write pending indicator)を設定することによって、行うことができる。ステップ３１２は、書き込みが行われている標準論理装置のトラックから、ステップ３０６において取得したログ装置の新たなトラックにデータをコピーすることを表す。ステップ３０８において全てのポインタを変更するので、トラックに書き込む前に標準論理装置に対して設置されていたいずれの仮想装置も、今では古いデータ（即ち、仮想装置が設置されたときに標準論理装置のトラック上に存在していたデータ）を指し示すことになる。尚、トラックのコピーに関連して、標準論理装置のトラックの保護ビットを、ログ装置上のトラックに対する仮想装置マップ・ビットにコピーすることも注記しておく。これについては、この明細書中でいずれ更に詳しく説明する。
【００７６】
ステップ３１２に続いて、ステップ３１４において、ステップ３０６で取得したログ装置のトラックを変更し、テーブル（この明細書中の別のところで説明した）内の余剰ビットに、書き込みが行われている標準論理装置のトラックを逆に指し示させる。ログ装置のトラックに、データを供給した標準論理装置の対応するトラックを指し示させることは、多くの場合に有用である。例えば、データ復元に関して有用な場合がある。ステップ３１４に続いて、ステップ３１６において、書き込みが行われる標準論理装置のトラックの保護ビットをクリアする。ステップ３１６に続いて、ステップ３１８においてＨＡにステータスを送信する。ステップ３１８の後、処理は完了する。
【００７７】
尚、一旦ＨＡがステータスを受信すると、ＨＡは通常の書き込み動作を実行することができ、その場合、検査ステップ３０２において、保護ビットを設定しないことを注記しておく。何故なら、これらのビットはステップ３１６においてクリアされているからである。書き込み動作を実行しているＨＡは、ステップ３０２において設定された保護ビットを見て、該当するＤＡに保護要求を送信する。次いで、ＨＡはＤＡから切断し、通常の書き込みを実行してもよいことを示すステータスがＤＡから到達するのを待つ。ＨＡが切断され、ＤＡからのステータスを待っている間、ＤＡはフロー・チャート３００に開示したステップを実行することができる。これについて、以下で更に詳しく説明する。
【００７８】
図１２を参照すると、フロー・チャート３２０は、１つ以上の仮想装置が設置されている標準論理装置への書き込みに伴ってＨＡが実行するステップを示す。処理は、第１検査ステップ３２２において開始し、書き込みが行われている標準論理装置のトラックに対して、いずれかの保護ビットが設定されているか否か判定を行う。検査ステップ３２２において、設定されている保護ビットがないと判定した場合、制御はステップ３２２からステップ３２４に移り、通常の書き込みを実行する。ステップ３２４の後、処理は完了する。
【００７９】
検査ステップ３２２において、書き込みが行われている標準論理装置のトラックに対して１つ以上の保護ビットが設定されていると判定した場合、制御はステップ３２２からステップ３２６に移り、ＨＡは要求をＤＡに送信し、当該トラックに保護ビットが設定されていることを示す。ＤＡが、ステップ３２６において送信された要求を受信すると、ＤＡは、先に説明した図１１のフロー・チャート３００において明記した動作を実行する。ステップ３２６に続いて、ステップ３２８において、ＨＡはＤＡから切断し、他のプロセスおよび／または他のＨＡによってＤＡと共に（恐らく無関係な）動作を実行することができるようにする。
【００８０】
ステップ３２８に続いて、ステップ３３２において、ＨＡは、ＤＡが図１１のフロー・チャート３００に明記した動作を実行し、ＨＡに設定されている保護ビットを処理するための適切なステップが実行されたことを示すステータスを送信する。ステップ３３２に続いて、処理はステップ３２２に戻り、標準論理装置のトラックの保護ビットを再度検査する。尚、２回目の繰り返しでは、ＤＡはフロー・チャート３００のステップを実行するのに伴って保護ビットをクリアしたので、書き込みが行われている標準論理装置のトラックの保護ビットはステップ３２２においてクリアされていると予想されることに注意されたい。勿論、ＤＡが保護ビットをクリアし、ステップ３２２を再度実行する間に、標準論理装置に対して新たな仮想装置が設置されることは常に可能である。しかしながら、通常、標準論理装置の特定のトラックに対するステップ３２２の２回目の繰り返しでは、全ての保護ビットがクリアされていると判定することが予想され、制御はステップ３２２からステップ３２４に移行し、通常の書き込みを実行する。
【００８１】
図１３を参照すると、フロー・チャート３４０は、仮想装置への書き込みに伴って実行されるステップを示す。フロー・チャート３４０は、ＨＡおよびＤＡ双方によって実行されるステップを表し、したがって、図１１のフロー・チャート３００および図１２のフロー・チャート３２０と同様の、２つのフロー・チャートとして提示することも可能である。しかしながら、フロー・チャート３４０は、フロー・チャート３００、３２０において明記し、かつ本明細書の本文の対応する部分に記載されたステップと同様のステップの一部を表すことは、当業者には理解されよう。
【００８２】
処理は、第１ステップ３４２において開始し、仮想装置が標準論理装置を指し示しているか否か判定を行う。指し示している場合、制御は検査ステップ３４２からステップ３４４に移行し、ログ装置の空きトラックを取得する。ステップ３４４に続いて、ステップ３４６において、書き込みが行われているトラックに対応する標準論理装置からのデータを、標準論理装置から、ステップ３４４において取得したログ装置のトラックにコピーする。ステップ３４６に続いて、ステップ３４８において、仮想装置のトラックに対するポインタを調節し、ステップ３４４において取得したトラックを指し示すようにする。ステップ３４８に続いて、ステップ３５２において、仮想装置に対応する保護ビットを、標準論理装置のトラック・データにおいてクリアし、標準論理装置のトラックに書き込みを行うときに、仮想装置のために特殊な処理が必要ないことを示す。ステップ３５２に続いて、ステップ３５４において、書き込みを実行する。ステップ３５４において、書き込むデータは、ステップ３４４において取得したトラックに書き込まれるトラックまたはトラックの一部である場合もある。ステップ３５４の後、処理は完了する。データがトラック全体に対応する場合、標準論理装置のトラックからログ装置の新たなトラックにデータをコピーするステップ３４６を省略することも可能である。何故なら、ステップ３５４においてトラック全体分のデータを書き込むと、ステップ３４６においてコピーしたデータ全てを上書きしてしまうからである。
【００８３】
ステップ３４２において、書き込みが行われている仮想装置のトラックのポインタが標準論理装置を指し示していないと判定した場合、制御はステップ３４２から検査ステップ３５６に移行し、標準論理装置に対して１つよりも多い仮想装置が設置されているか否か判定を行う。されていない場合、制御はステップ３５６からステップ３５８に移行し、ログ装置のトラックに通常の書き込み動作を実行する。検査ステップ３５６において、１つよりも多い仮想装置が標準論理装置に対して設置されていると判定された場合、制御はステップ３５６からステップ３６２に移行し、ログ装置から空きトラックを取得する。
【００８４】
ステップ３６２に続いて、ステップ３６４において、書き込みが行われる仮想装置に対応するトラックのデータを、ステップ３６２において取得したトラックにコピーする。ステップ３６４に続いて、ステップ３６６において、仮想装置のポインタを調節し、新たなトラックを指し示すようにする。一実施形態では、書き込みが行われている仮想装置のポインタに、新たなトラックを指し示させる。あるいは、書き込みが行われている仮想装置のポインタを変化させず、代わりに、ステップ３６６においてトラックを指し示す他の仮想装置全てのポインタ全てを調節することも可能である。
【００８５】
ステップ３６６に続いて、ステップ３６８において、ログ装置のトラックに対する仮想装置マップ・ビットを変更する。ログ装置のトラックでは、仮想装置マップ・ビットを用いて、どの仮想装置が各トラックを指し示すかを示すことができ、その場合、一実施形態では、１６の仮想装置マップ・ビットがあり、各ビットが個々の仮想装置に対応する。つまり、ステップ３５６における検査は、トラックに対する仮想装置マップ・ビットを調べてもよい。
【００８６】
ステップ３６８に続いて、ステップ３６９において書き込みを実行する。尚、書き込みを実行するのは、ステップ３６２において取得したトラックに対してなのか、または書き込みが行われる仮想装置によって初期に指し示されたトラックに対してなのかは、ステップ３６６においてどのようにポインタを調節するかによって左右される。しかしながら、いずれにしろ、データが書き込まれている仮想装置によって指し示されているトラックにデータは書き込まれる。ステップ３６９の後、処理は完了する。
【００８７】
図１４を参照すると、フロー・チャート３７０は、仮想装置の除去（即ち、削除）に伴って実行されるステップを示す。一旦仮想装置が設置され、その意図する目的で用いられた後、この仮想装置を除去することが望ましい場合もある。処理は、第１ステップ３７２において開始し、仮想装置の最初のトラックを指し示すように、ポインタを設定する。仮想装置を除去する際、この仮想装置に対応する各トラックを試験する。
【００８８】
ステップ３７２に続いて、ステップ３７４において、試験されている仮想装置のトラックが、標準論理装置を指し示すか否か判定を行う。指し示す場合、制御はステップ３７４からステップ３７６に移行し、除去する仮想装置に対応する標準論理装置のトラックの保護ビットをクリアする。ステップ３７６に続いて、ステップ３７８において、ポインタが仮想装置の次のトラックを指し示し、次のトラックを試験することによって、処理を継続する。ステップ３７８に続いて、ステップ３８２において、処理が完了したか否か（即ち、仮想装置の全トラックを処理したか否か）判定を行う。完了していない場合、制御はステップ３８２から、先に説明したステップ３７４に戻る。
【００８９】
検査ステップ３７４において、試験される仮想装置のトラックが標準論理装置を指し示していないと判定した場合、制御はステップ３７４からステップ３８４に移行し、除去する仮想装置に対応する論理装置のトラックに対する仮想装置マップ・ビットをクリアする。ログ装置の各トラックは、１組の仮想装置マップ・ビットを有し、どの仮想装置がログ装置のトラックを用いるかを示すことができる。したがって、ステップ３８４において、除去する仮想装置に対応する仮想装置マップ・ビットをクリアする。
【００９０】
ステップ３８４に続いて、検査ステップ３８６において、ステップ３８４でクリアしたビットが、トラックに対して設定した最後の仮想装置マップ・ビットであったか否か判定を行う。言い換えると、ステップ３８６では、ログ装置上のトラックを用いている仮想装置が他にもあるか否かについて判定を行う。ステップ３８６において、最後の仮想装置マップ・ビットがステップ３８４においてクリアされた（したがって、他にトラックを使用している仮想装置がない）と判定した場合、制御はステップ３８６からステップ３８８に移行し、ログ装置のトラックを、この明細書中の別のところで説明した、ログ装置のトラックの空きリストに戻す。ステップ３８８に続いて、またはステップ３８４においてクリアされたビットがログ装置のトラックの最後の仮想装置マップ・ビットではないと判定した場合にはステップ３８６に続いて、先に説明したステップ３７８において、仮想装置の次のトラックを後続の試験のために指し示させる。一旦仮想装置に対応するトラック全てを処理したなら、仮想装置に関連するテーブルやその他のデータ構造も除去することができるが、実施形態によっては、仮想装置を消滅させた後(deestablished)、仮想装置をホストによって使用できるようにしないまでは、仮想装置からのテーブルやその他のデータ構造を保持していてもよい。
【００９１】
実施形態によっては、フロー・チャート３７０が示すステップを実行する前は、仮想装置をホストが使えるようにしなくてもよい。あるいは、ホストが仮想装置を使える間にフロー・チャート３７０によって示されるステップを実行し、かつフロー・チャート３７０のステップを実行している間に仮想装置にアクセスしようとする任意のホスト、および／または破棄した仮想装置のトラック（即ち、空きトラックのリストに戻した）にアクセスしようとする任意のホストに、単にエラー・メッセージを発行することも可能である。
【００９２】
図８のステップ２１６において標準論理装置のトラックに保護ビットを設定するためには、種々の技法のいずれでも用いることができる。例えば、標準論理装置のトラックの保護ビットは、保護ビットの全てを設定している間、標準論理装置全体をロックする（したがって、標準論理装置への他のいずれのアクセスも禁止する）ことによって設定することができる。しかしながら、保護ビットの全てを設定している間に標準論理装置全体を保護することは、場合によっては容認できない場合もある。したがって、以下に述べる他の技法は、トラック全てに対して保護ビットを全て設定している間は、標準論理装置を必ずしもアクセス不可能にしなくてもよい方法で、保護ビットを設定するために使用することができる。
【００９３】
図１５Ａ、図１５Ｂおよび図１５Ｃを参照すると、フロー・チャート４００、４１０、４２０は、標準論理装置の保護ビットを設定する技法に関連して実行されるステップを示す。フロー・チャート４００、４１０、４２０は、プロセスの異なる部分を別個に実行できることを例示するために、別々に示されている。
【００９４】
図１５Ａの最初のフロー・チャート４００では、処理は第１ステップ４０４にて開始し、セッション番号を取得して特定のセッションを予約する。実施形態によっては、セッション番号の予約を「セッションの添付(attaching a session)」と呼ぶこともある。ここに開示する実施形態では、個々のセッション番号は、各々、保護ビット・マスクの個々のビット位置に対応する（即ち、個々の保護ビットに対応する）。ステップ４０４の後、処理は完了する。実施形態によっては、多数のプロセスが同時にセッション番号を取得しようとする場合、追加の機能を設けて、２つのプロセスが同じセッション番号を取得しないようにすることが必要な場合もある。この機能は、例えば、セッション番号の取得に先だってセッション資源をロックし（ソフトウエア・ロック、ハードウエア・ロック、または双方を用いて）、次いでセッション番号を取得した後にロックを解除することによって、設けることができる。勿論、多数のプロセスが同時にセッション番号を要求していても、ステップ４０４において一意のセッション番号を、セッション番号を要求するプロセスに返すようにするために他の技法も用いることができる。
【００９５】
図１５Ｂを参照すると、フロー・チャート４１０は、セッションを非活性化状態に確立し、保護ビットを設定するステップを示す。処理は第１ステップ４１２にて開始し、標準論理装置への（または少なくとも、続く動作に関係する標準論理装置の部分への）排他的アクセスを有するコール元プロセスが行われる。場合によっては、操作する資源への排他的アクセスを有するコール元プロセスを行うことは有用である。何故なら、多数のプロセスによる同時（またはほぼ同時）アクセスによって、不適正な動作が生ずる虞れがあるからである。したがって、ステップ４１２およびこの出願全体を通じて他の場合にも、読み出し元プロセスに排他的アクセスが与えられる。加えて、排他的アクセスを与える機構は、ハードウエア・ロック、ソフトウエア・ロック（例えば、システム・レベル・データの）、タイム・スライシング(time slicing)等の種々の技法のいずれも含むことができる。勿論、コール元プロセスが１つしかあり得ない実施形態では（例えば、非マルチタスキング・システム）、コール元プロセスに排他的アクセスを可能にするステップ４１２に示すような処理を実行する必要はない。
【００９６】
ステップ４１２に続いて、ステップ４１４では、セッション（先に説明したステップ４０４において既に予約されている）が非活性化状態に確立される。この明細書中の一実施形態では、セッションを非活性化状態に固定するには、標準論理装置の装置テーブルのヘッダ内のある位置に第１の値を移動させる。先に説明したように、図５には装置テーブル１１２におけるヘッダ・フィールド１１４が示されている。ヘッダ・フィールド１１４は種々のデータ位置を収容することができ、その各データ位置が保護ビットの１つに対応する（即ち、各ビット位置が個々のセッション番号に対応する）。これらの位置の各々に置かれた値は、対応する１つの設定された保護ビットを有するトラックに対して書き込みが行われるときに実行されるべき動作を示す。例えば、ヘッダ・フィールド１１４に１６バイト長のデータ位置があるとすると、各データ位置は１６個の可能な保護ビットの１つに対応する（例えば、バイト０は保護ビット０に対応し、バイト１は保護ビット１に対応する等）。ステップ４１４において、ヘッダ・フィールド１１４の位置の１つに第１の値を供給し、対応するセッションを非活性化状態に設定する。
【００９７】
ステップ４１４においてセッションを非活性化状態に設定したことにより、対応する保護ビットが設定されているときには、何の動作も行われなくなる。したがって、保護ビットが設定されているトラックに書き込みが行われると、保護ビットの管理を扱うコードが装置ヘッダから対応するデータを取り込む。この場合、対応するセッションが非活性化状態にあることを示す。これに応答して、保護ビットの管理を扱うコードが保護ビットを設定したままにして、他の動作を実行しない。このことの有用性については、この明細書中でいずれ説明する。
【００９８】
ステップ４１４に続いて、ステップ４１６では、ステップ４１２において与えた排他的アクセスを無効にする。ステップ４１６において排他的アクセスを無効にすることにより、ステップ４１２において排他的アクセスが与えられた資源に対して、多数のプロセスの同時アクセスが可能となる。実施形態によっては、ステップ４１６において排他的アクセスを無効にすることは、単にステップ４１２において行われたことが解除されるに過ぎない（例えば、ロックされていた資源のロックを解除する）。
【００９９】
ステップ４１６に続いて、ステップ４１８において、ステップ４０４において取得したセッション番号に対するヘッダ・フィールド１１４の位置に対応するトラックの各々に、対応する保護ビットを設定する。尚、ステップ４１８が実行されている間、多数のプロセスによるアクセスが標準論理装置になされていることを注記しておく。しかしながら、対応するセッションが非活性化されているので、ステップ４１８が実行されている間にステップ４１８において設定されたビットを有するトラックに対していかなる書き込みが行われようとしても、何の動作も行われず、保護ビットは設定されたままとなる。ステップ４１８の後、処理は完了する。尚、ステップ４１８における保護ビットの設定は、セッションを非活性化した後（そして、以下で説明するように、セッションを活性化する前）であればいつ実行してもよいことを注記しておく。したがって、ステップ４１８は、必ずしもセッションを非活性化するために実行されるステップの直後に実行する必要はない。
【０１００】
実施形態によっては、標準論理装置の資源への排他的アクセスを有効／無効にする必要がない場合もある。例えば、セッションを非活性化状態に固定するステップ４１４を単一の一元ステップ（例えば、１回の割り込み不可能な書き込み動作）で実行できる場合、ステップ４１２、４１６を実行する必要がない場合もある。これは、フロー・チャート４１０において示す代替経路４１９ａ、４１９ｂによって例示されている。
【０１０１】
図１５Ｃを参照すると、フロー・チャート４２０は、セッションを活性化するために実行されるステップを示す。処理は、第１ステップ４２２にて開始し、標準論理装置への排他的アクセスを有効にし（先に説明したステップ４１２と同様）、他のプロセスによるこれへのアクセスを防止する。ステップ４２２に続いて、ステップ４２４では、例えば、標準論理装置のテーブルのヘッダ・フィールド１１４に第２の値を書き込むことによって、セッションを活性化する。第２の値は、第１の値と同じ場所に供給され、第１の値を上書きする。第２の値は、設定されている対応の保護ビットに関連して実行される特殊な処理を示す。かかる特殊な処理は、例えば、仮想装置に対する特殊処理を表す図１１および図１２に示されている。
【０１０２】
ステップ４２４に続いて、ステップ４２６では、標準論理装置への排他的アクセスを無効にする。ステップ４２６の後では、保護ビットが設定されているトラックに対して書き込みが後に行われる度に、標準論理装置の装置テーブルのヘッダ・フィールド１１４に供給された第２の値によって示されるように、特殊動作が実行される。例えば、ステップ４２４において供給された第２の値が、対応するトラックがログ装置にコピーされるべきであることを示す場合、このコピーは、設定された保護ビットを有するトラックへの書き込みに伴って実行される処理である。勿論、ステップ４２４において供給された第２の値は、保護ビットが設定されたトラックに伴って実行される多数の特殊プロセスのいずれでも示すことができ、例えば、スナップ動作に伴って実行される処理等がある。ステップ４２６の後、処理は完了する。
【０１０３】
前述のフロー・チャート４１０と全く同じように、実施形態によっては、ステップ４２４に関連して用いた標準論理装置の資源への排他的アクセスを有効／無効にする必要がない場合もある。例えば、セッションを非活性化状態に固定するステップ４１４を単一の一元ステップ（例えば、１回の割り込み不可能な書き込み動作）で実行できる場合、ステップ４１２、４１６を実行する必要がない場合もある。これは、フロー・チャート４２０において示す代替経路４２８ａ、４２８ｂによって例示されている。
【０１０４】
図１６Ａを参照すると、フロー・チャート３００’の一部が、図１１のフロー・チャート３００のステップに対応するステップを示す。フロー・チャート３００’のステップは、図１５Ａ、図１５Ｂ、および図１５Ｃに示し先に説明した保護ビット方式の使用を考慮して変更されている。１対のステップ３０２’、３０２”が、図１１のフロー・チャート３００のステップ３０２と置き換わっている。ステップ３０２’は、ステップ３０２と同様の検査ステップであり、書き込みが行われるトラックの保護ビットが設定されているか否か判定を行う。設定されていない場合、制御はステップ３０２’から、図１１に関連して上記したステップ３０４に移り、通常の書き込みが行われる。ステップ３０４の後、処理は完了する。
【０１０５】
ステップ３０２’において、書き込みが行われるトラックの保護ビットが設定されていると判定した場合、制御はステップ３０２’からステップ３０２”に移り、対応するセッションが非活性化されているか否か判定を行う。図１５Ａ、図１５Ｂ、および図１５Ｃに関連して先に説明したように、セッションが非活性化されているのであれば、設定されている保護ビットに応答して何の動作も行われない。ステップ３０２”において、セッションが非活性化されていると判定した場合、制御はステップ３０２”から、先に説明したステップ３０４に移る。それ以外の場合、制御はステップ３０２”から、図１１に関連して先に説明したステップ３０６における動作に進む。
【０１０６】
図１６Ｂを参照すると、フロー・チャート３２０’の一部が、図１５Ａ、図１５Ｂ、および図１５Ｃに示し先に説明した保護ビット方式の使用を考慮して変更された、図１２のフロー・チャート３２０のステップに対応するステップを示す。１対のステップ３２２’、３２２”が、図１２のフロー・チャート３２０のステップ３２２に置き換わっている。ステップ３２２’は、ステップ３２２と同様の検査ステップであり、書き込みが行われるトラックの保護ビットが設定されているか否か判定を行う。設定されていない場合、制御はステップ３２２’から、図１２に関連して先に説明したステップ３２４に移り、通常の書き込みが行われる。ステップ３２４の後、処理は完了する。
【０１０７】
ステップ３２２’において、書き込みが行われるトラックの保護ビットが設定されていると判定した場合、制御はステップ３２２’からステップ３２２”に移り、対応するセッションが非活性化されているか否か判定を行う。ステップ３２２”において、対応するセッションが非活性化されていると判定した場合、制御はステップ３２２”から、先に説明したステップ３２４に移る。それ以外の場合、制御はステップ３２２”から、図１２に関連して先に説明したステップ３２６に移る。
【０１０８】
仮想装置を標準論理装置に対して設置する際、３つの別個のシステム・コールを用いて行うことも可能である。第１に、Ｒｅｇｉｓｔｅｒが、セッション番号と、標準論理装置の保護ビットにおける対応するビット位置とを保持し、実施形態によっては、対応する仮想装置を作成または取得する。第２に、Ｒｅｌａｔｅが、先に説明したように仮想装置に対するポインタを変更することによって仮想装置を標準論理装置に関係付け、更に標準論理装置の保護ビットを設定する。第３に、Ａｃｔｉｖａｔｅが、仮想装置に、Ａｃｔｉｖａｔｅを呼び出した時点におけるポイント・イン・タイム・コピーを表示せ、場合によっては、仮想装置をホストが使用できるようにする。３つのシステム・コールを用いる場合、先に説明した図８のステップ２１４、２１６、２１７、２１８は、実行しなくても、または別の仕方で実行してもよい。これについては、以下の説明において明かとなる。
【０１０９】
加えて、以下で更に詳しく説明するが、仮想装置および標準論理装置の多数の対に対してＲｅｇｉｓｔｅｒおよびＲｅｌａｔｅステップを実行し、次いで単一のＡｃｔｉｖａｔｅステップを実行して、仮想装置全てをこれらに対応する標準論理装置に対して設置させるようにすることが可能な場合もある。尚、この明細書中における説明の目的上、標準論理装置は、一般にそれ自体の記憶トラックを有する任意の論理記憶装置（トラックの一部がときどき間接的になる可能性があっても）を意味し、一方仮想記憶装置は、定義上、他の装置の記憶トラックを用いる記憶装置を意味することを注記しておく。
【０１１０】
図１７を参照すると、フロー・チャート４３０は、標準論理装置の登録に伴って実行されるステップを示す。登録を実行するには、システム・コール（シスコール）を用い、標準論理装置、そして実施形態によっては、対応する仮想装置の識別子をシステム・コールに渡す。実施形態によっては、Ｒｅｇｉｓｔｅｒシスコールには、標準論理装置だけ渡せばよく、Ｒｅｇｉｓｔｅｒシスコールが作成した仮想装置の識別子を返すことができる。他の実施形態では、Ｒｅｇｉｓｔｅｒシスコールは、仮想装置を全く扱わず、単に標準論理装置だけが渡される。
【０１１１】
処理は、第１ステップ４３２にて開始し、図１５Ａのステップ４０４に関連して先に説明したのと同様に、セッション番号を保持する。ステップ４３２に続いて、ステップ４３３において、図１５Ｂおよび図１５Ｃに関連して先に説明したのと同様に、該当する資源（例えば、標準論理装置の）への排他的アクセスを有効にする。ステップ４３３に続いて、ステップ４３４において、図１５Ｂのステップ４１４に関連して先に説明したのと同様に、対応するセッションを非活性化状態に固定する。ステップ４３４に続いて、ステップ４３６において、先に説明したのと同様に、該当する資源への排他的アクセスを無効にする。尚、セッションを非活性化状態に固定することは、標準論理装置に対する書き込み処理を変更しないことを注記しておく。また、図１５Ｂおよび図１５Ｃと同様、実施形態によっては、ステップ４３４に関連して用いられる資源への排他的アクセスを有効および無効にする必要がない場合もあることも注記しておく。これを代替経路４３７ａ、４３７ｂで例示する。
【０１１２】
ステップ４３６に続いて、検査ステップ４３８において、直前のステップ４３２〜４３４、４３６で実行した処理が問題なく行われたか否か判定を行う。動作が問題なく行われなかった場合、種々の理由があるが、例えば、標準論理装置の保護ビットが全て既に他の目的のために用いられていたという事情が含まれる。ここに例示する実施形態では、１６個の保護ビットがある。したがって、ステップ４３２を実行する前に、標準論理装置の１６個の保護ビット全てが用いられていた場合、検査ステップ４３８における結果は、直前の処理が正しく行われなかったことを示す。ステップ４３８において、直前の処理が正しく行われなかったと判定した場合、制御はステップ４３８からステップ４４２に移り、エラーを返す。ステップ４４２の後、処理は完了する。
【０１１３】
ステップ４３８において、直前の処理が問題なく行われたと判定した場合、制御はステップ４３８からステップ４４４に移り、仮想装置を作成する。実施形態によっては、仮想装置をステップ４４４で作成し、Ｒｅｇｉｓｔｅｒルーチンのコール元に戻す。他の実施形態では、仮想装置は、Ｒｅｇｉｓｔｅｒルーチンを呼び出す前に存在していてもよく、この場合、ステップ４４４において新たな仮想装置を作成する必要はない。更に別の実施形態（以下で説明する）では、Ｒｅｇｉｓｔｅｒルーチンは仮想装置を全く扱わない（即ち、作成も受け渡しもしない）。むしろ、Ｒｅｌａｔｅルーチン（以下で説明する）、または全体的システム構成の一部としてというように、仮想装置は、Ｒｅｇｉｓｔｅｒルーチンの前または後のいずれかで、別個のステップにおいて作成または取得してもよい。
【０１１４】
ステップ４４４に続いて、ステップ４４６において、標準論理装置（そして、Ｒｅｇｉｓｔｅｒルーチンに伴って作成および／または使用される場合には、恐らく仮想装置）に関する情報を、標準論理装置の装置テーブルのヘッダに置く。標準論理装置の装置テーブルのヘッダに情報を供給することによって、一旦標準論理装置および対応する仮想装置を活性化した後の処理が容易となる（以下で説明する）。実施形態によっては、ヘッダに情報を置く前に、標準論理装置の該当する資源への排他的アクセスを有効にすると有用な場合もある。ステップ４４６の後、処理は完了する。
【０１１５】
尚、フロー・チャート４３０に示した処理は、いずれの仮想装置も、標準論理装置のポイント・イン・タイム・コピーであるようにはさせず、いずれの仮想装置もアクセス可能にはしないことを注記しておく。フロー・チャート４３０に示すＲｅｇｉｓｔｅｒルーチンは、標準論理装置／仮想装置対の後の活性化を容易にする予備処理に対応する。また、ステップ４３８からステップ４４６までの代替経路４４８は、Ｒｅｇｉｓｔｅｒルーチンが仮想装置を全く作成させない実施形態を例示することも注記しておく。したがって、Ｒｅｇｉｓｔｅｒルーチンが仮想装置を扱わない場合、Ｒｅｇｉｓｔｅｒ動作が問題なく行われれば、制御はステップ４３８から直接ステップ４４６に、経路４４８を通って移ることになる。
【０１１６】
図１８を参照すると、フロー・チャート４５０は、仮想装置の標準論理装置に対する関係付けに伴って実行されるステップを示す。Ｒｅｇｉｓｔｅｒルーチンと同様、Ｒｅｌａｔｅルーチンも、標準論理装置／仮想装置対の活性化および使用に先だって実行される予備処理の一部である。関係付けを実行するには、システム・コールを行い、パラメータを標準論理装置とし、実施形態によっては、対応する仮想装置（例えば、ホストによって渡された）もパラメータとすればよい。他の実施形態では、Ｒｅｌａｔｅルーチンにより仮想装置を作成させてもよく（例えば、別個の作成ルーチンをコールすることによって）、またはシステム構成と共に供給されるか、または何らかの別の手段によって供給される既存の未使用の仮想装置を単に取得することもできる。これらの実施形態では、新たに作成／取得した仮想装置の識別子を置くために、Ｒｅｌａｔｅルーチンが用いる記憶領域へのポインタをＲｅｌａｔｅルーチンに渡せばよい。
【０１１７】
処理は第１検査ステップ４５２にて開始し、関係付ける標準論理装置が既に登録されているか否か判定を行う。尚、標準論理装置が予め登録されていないならば、この標準論理装置のためにコールしなくてよいことを注記しておく。標準論理装置が登録されていない場合、制御はステップ４５２からステップ４５４に移り、エラーを返す。ステップ４５４の後、処理は完了する。尚、ステップ４５４（およびここに記載するその他のエラー・ステップ）は、実際には、エラーの報告とは異なる何かを行う別個のエラー処理を意味する場合もあることを注記しておく。例えば、ステップ４５４において実行する処理は、エラーを訂正し処理を実行するために講ずる処置を含むこともできる。
【０１１８】
検査ステップ４５２において、標準論理装置が登録されていると判定した場合、制御はステップ４５２からステップ４５５に移り、仮想装置を取得して、標準論理装置と対にする。実施形態によっては、仮想装置はＲｅｇｉｓｔｅｒルーチンに関連して（または少なくともＲｅｌａｔｅルーチンをコールする前）作成または取得され、その場合、ステップ４５５は、既に作成されている（例えば、ホストによって）または取得されている仮想装置をＲｅｌａｔｅルーチンに渡すことを示し、仮想装置の識別子がコール元ルーチンに戻される。他の実施形態では、ステップ４５５において、Ｒｅｌａｔｅルーチンによって仮想装置が作成または取得される。ステップ４５５に続いて、ステップ４５６では、図１５Ｂおよび図１５Ｃに関連して先に説明したのと同様に、該当する資源（例えば、標準論理装置）への排他的アクセスを有効にする。ステップ４５６に続いて、ステップ４５８において、仮想装置の装置テーブルにおけるポインタ全てに、標準論理装置の対応するトラックを指し示させる。ステップ４５８において実行する処理は、先に説明した図８のフロー・チャート２１０のステップ２１６において行ったポインタの変更に類似している。ステップ４５８に続いて、ステップ４６１において、標準論理装置／仮想装置対に関する情報を標準論理装置および仮想装置双方のヘッダ内に置く。この情報は、後に装置にアクセスする際に付随的に用いられる。これについてはこの明細書中でいずれ説明する。ステップ４６１に続いて、ステップ４６２では、先の説明したのと同様に、該当する資源への排他的アクセスを無効にする。実施形態によっては、排他的アクセスは、ヘッダに情報を置く前に有効にすることができ、情報をその中に置いた後に無効にすることができる。尚、図１５Ｂおよび図１５Ｃと同様に、実施形態によっては、ステップ４５８および／またはステップ４６１に関連して用いられる資源への排他的アクセスを有効および無効にする必要がない場合もあることを注記しておく。これを代替経路４６３ａ、４６３ｂで例示する。
【０１１９】
ステップ４６２に続いて、ステップ４６４において、標準論理装置の保護ビットを設定し、この標準論理装置のトラックに書き込みが行われる場合、特殊処理が実行されるべきであることが示される。しかしながら、ステップ４６４において保護ビットを設定した場合、標準論理装置のトラックへの書き込み時には特殊処理は行われないことを注記しておく。何故なら、先に説明したように、セッションは初期状態において非活性化されているからである。したがって、ステップ４６４において保護ビットがトラックに対して設定されても、標準論理装置への書き込みによって特殊処理が実行されることはない。何故なら、セッションが非活性化されているからである。これは、図１６Ａおよび図１６Ｂのステップ３０２”および３２２”に関連して先に示した。
【０１２０】
ステップ４６４に続いて、ステップ４６６において、標準論理装置／仮想装置対をリストに追加する。以下で更に詳しく説明するが、１回のコールで複数の標準論理装置／仮想装置対を活性化することができる。ステップ４６６において用いられるリストは、関係付けられているが未だ活性化されていない対のリストを収容する。以下で更に詳しく説明するが、このリストはＡｃｔｉａｔｉｏｎルーチンによって用いられる。あるいは、Ｒｅｌａｔｅルーチンが、標準論理装置／仮想装置対（あるいは仮想装置のみまたは標準論理装置のち）を、リストを保持しているコール元（例えば、ホスト・アプリケーション）に返すこともできる。また、代わりに、Ｒｅｌａｔｅルーチンにリスト識別子を渡し、これをＲｅｌａｔｅルーチンが用いて、標準論理装置／仮想装置対を追加する特定のリストを決定するようにしてもよい。その場合、別個のルーチンを有し、このルーチンがリスト識別子および／またはリスト構造／記憶領域を作成し、そのリストを保持するようにしてもよい。リストおよび／リストｉｄが渡されるパラメータである場合、コール元ルーチンが１つよりも多いリストを保持することも可能である。Ｒｅｌａｔｅルーチンは、複数の標準論理装置、および任意に対応する複数の仮想装置を渡された後にリストを作成することができる。この場合、Ｒｅｌａｔｅルーチンには、作成されたリストが返される。
【０１２１】
図１９Ａを参照すると、フロー・チャート４８０は、１つ以上の標準論理装置／仮想装置対を活性化するＡｃｔｉｖａｔｅルーチンに伴って実行されるステップを示す。活性化の前では、いずれのホストも未使用の仮想装置を使用することはできない。しかしながら、活性化の過程で、１つ以上のホストが仮想装置を使用できるようにする。
【０１２２】
処理は、第１ステップ４８２にて開始し、フロー・チャート４５０のステップ４６６に関連して先に説明したリストと同様、リスト上の最初の項目を指し示すようにポインタを設定する。ポインタは、リスト上の種々の要素を指し示すために用いられる。リストは、パラメータとしてＡｃｔｉｖａｔｅルーチンに渡すことができる。あるいは、リストｉｄをＡｃｔｉｖａｔｅルーチンに渡してもよく、その場合、Ａｃｔｉｖａｔｅルーチンはリストｉｄを用いて、Ａｃｔｉｖａｔｅルーチンがアクセスすることができるリスト間で識別を行う。更に、代わりに、ＲｅｌａｔｅおよびＡｃｔｉｖａｔｅルーチンが単一のグローバル・リストを用い、Ａｃｔｉｖａｔｅルーチンに対する任意のコールが、以前に関係付けた標準論理装置／仮想装置対全てを活性化させるようにしてもよい。勿論、正式なリスト構造の代わりに、標準論理装置／仮想装置対の各々をパラメータとしてＡｃｔｉｖａｔｅルーチンに渡すことが可能な場合もある。
【０１２３】
ステップ４８２に続いて、ステップ４８４において処理が完了したか否か（即ち、リストの終端に達したか否か）について判定を行う。これは、リスト全体を反復するために用いるポインタを調べることによって判定することができる。リストの処理が完了していない場合、制御はステップ４８４からステップ４８５に移り、ポインタが示す標準論理装置／仮想装置対に対して以前にＲｅｌａｔｅ動作が実行されたことがあるか否か判定を行う。Ｒｅｌａｔｅ動作が以前に実行されたことがない（したがって、活性化が不可能である）場合、制御はステップ４８５からステップ４８６に移行し、エラーを返す。ステップ４８６の後、処理は完了する。
【０１２４】
ステップ４８５において、活性化する標準論理装置／仮想装置対に対してＲｅｌａｔｅルーチンが実行されたと判定した場合、制御はステップ４８５からステップ４８７に移行し、図１５Ｂおよび図１５Ｃに関連して先に説明したのと同様に、該当する資源（例えば、標準論理装置）への排他的アクアセスを有効にする。ステップ４８７に続いて、ステップ４８８において、ポインタに、リスト上の次の標準論理装置／仮想装置対を指し示させる。ステップ４８８に続いて、制御は検査ステップ４８４に戻り、リストの処理が完了したか否か判定を行う。
【０１２５】
検査ステップ４８４において、リストの処理が完了した（したがって、活性化すべき仮想装置に対応する標準論理装置の全てが、既に関連付けられていると判定された）場合、制御はステップ４８４からステップ４９２に移り、リスト上の要素を追跡するポインタに、標準論理装置／仮想装置対のリストにおける最初の項目を指し示させる。ステップ４９２に続いて、検査ステップ４９４において、リスト全体の処理が完了したか否かについて判定を行う。完了していない場合、制御はステップ４９４からステップ４９６に移行し、標準論理装置／仮想装置対に対して設定した保護ビットに対応するセッションを活性化する。ステップ４９６におけるセッションの活性化は、先に説明した図１５Ｃのフロー・チャート４２０におけるステップ４２４で実行した処理に類似している。ステップ４９６においてセッションを活性化したことにより、保護ビットが設定されている標準論理装置のトラックに書き込みが行われるときに、この明細書中の別のところで説明した、特殊仮想装置処理を実行する。加えて、セッションの活性化により、仮想装置がホストに使用可能となる。ステップ４９６に続いて、ステップ４９８において、リスト上で処理した項目を追跡しているポインタに、次の項目を指し示させる。ステップ４９８に続いて、制御は検査ステップ４９４に戻る。
【０１２６】
検査ステップ４９４において、標準論理装置／仮想装置対のリスト全体を処理し終えた（したがって、活性化される仮想装置に対応する標準論理装置の全てに対応するセッションが活性化された）と判定した場合、制御はステップ４９４からステップ５０２に移行し、リストにおける最初の標準論理装置／仮想装置対を、ポインタに指し示させる。ステップ５０２に続いて、ステップ５０４において、リスト全体を処理し終えたか否かの判定を行う。リスト全体を処理し終えたと判定した場合、制御はステップ５０４からステップ５０６に移行し、先に説明したのと同様に、該当する資源（ステップ４８７において取得した）への排他的アクセスを無効にする。ステップ５０６に続いて、ステップ５０８において、ポインタに、リスト上の次の項目を指し示させる。ステップ５０８に続いて、制御は検査ステップ５０４に戻り、リストの終端に達したか否か判定を行う。
【０１２７】
ステップ５０４において、リストの終端に達したと判定した場合、制御はステップ５０４からステップ５１２に移行し、リストをクリアし、その後にＡｃｔｉｖａｔｅルーチンをコールしても、既に活性化されている標準論理装置／仮想装置対を再度活性化しないようにする。ステップ５１２の後、処理は完了する。尚、図１５Ｂおよび図１５Ｃと同様、実施形態によっては、ステップ４８７、５０６に関連して用いられる資源への排他的アクセスを有効および無効にする必要がない場合もあることを注記しておく。これを代替経路５１３ａ、５１３ｂで例示する。
【０１２８】
尚、場合によっては、リストの標準論理装置の一部への排他的アクセスは、リスト上の装置の１つがステップ４８５においてエラーを起こす前に、ステップ４８７において有効にしておくとよいことを注記しておく。その場合、ステップ４８６の実行に先だって、排他的アクセスが既に有効とされていた標準論理装置への排他的アクセスは、ステップ５０２、５０４、５０６、５０８に関連して先に例示したのと同様に、無効にされている。
【０１２９】
実施形態によっては、標準論理装置／仮想装置対を追跡するために図１８のステップ４６６においてリストを用いないことも可能な場合もある。代わりに、種々の標準論理装置／仮想装置対を直接渡すことによって、Ａｃｔｉｖａｔｅルーチンをコールすることができる。その場合、図１９Ａのフロー・チャート４８０が示す処理において用いられるリストは、Ａｃｔｉｖａｔｅルーチンに渡されるパラメータのリストとなる。
【０１３０】
別の実施形態では、Ｂｅｇｉｎ  ＧｒｏｕｐおよびＰｒｏｃｅｓｓ  Ｇｒｏｕｐのような追加のコールを設けることが可能な場合もあり、Ｂｅｇｉｎ  Ｇｒｏｕｐコールは、複数のＲｅｌａｔｅコール（またはＲｅｇｉｓｔｅｒおよびＲｅｌａｔｅコール）の前に設けられる。次いで、Ｂｅｇｉｎ  Ｇｒｏｕｐコールの後に登録され関係付けられた種々の標準論理装置／仮想装置対を活性化する時期になったときに、Ｐｒｏｃｅｓｓ  Ｇｒｏｕｐへのコールを行う。Ｐｒｏｃｅｓｓ  Ｇｒｏｕｐコールは、実際には、Ｂｅｇｉｎ  Ｇｒｏｕｐコールの後に登録され関係付けられた標準論理装置／仮想装置対の全てを活性化する。かかる実施形態は、図１８および図１９Ａと関連して先に説明したリストを用いることができ、Ｂｅｇｉｎ  Ｇｒｏｕｐコールは新たな空のリストを作成し、Ｐｒｏｃｅｓｓ  Ｇｒｏｕｐコールによって、図１９Ａのフロー・チャート４８０に示す処理が実行される。かかるシステムでは、Ｂｅｇｉｎ  Ｇｒｏｕｐ／Ｐｒｏｃｅｓｓ  Ｇｒｏｕｐ対に一括されていないＲｅｌａｔｅコール（即ち、Ｂｅｇｉｎ  Ｇｒｏｕｐコール後にコールされたのではないＲｅｌａｔｅ）は、関係付けが問題なく完了した後直ちに、Ａｃｔｉｖａｔｅを実行させることができる。即ち、Ｂｅｇｉｎ  Ｇｒｏｕｐコール以降でない、標準論理装置／仮想装置対に対するいずれのＲｅｇｉｓｔｅｒコールまたはＲｅｌａｔｅコールでも、標準論理装置／仮想装置対の自動活性化を行わせることができる。別の実施形態では、Ａｃｔｉｖａｔｅコールは自動ではない。また、実施形態によっては、多数のリストを用いて、標準論理装置／仮想装置対の異なる組を別々に活性化することも可能なこともある。これらの場合、特定のリストが、Ｐｒｏｃｅｓｓ  Ｇｒｏｕｐコールに渡されるパラメータとなり、このリストは何らかの方法でＡｃｔｉｖａｔｅルーチンに渡すことができる。
【０１３１】
実施形態によっては、Ｒｅｇｉｓｔｅｒ、Ｒｅｌａｔｅおよび／またはＡｃｔｉｖａｔｅコールのいずれもが、仮想装置の装置名称（またはその他の装置識別子）を変更する任意のパラメータを含むことができる。これは、完全に同じ名称および／または装置識別子を有する２つの識別子を有することが許容されないオペレーティング・システムでは有用であろう。仮想装置が標準論理装置のコピーである場合、仮想装置の名称を変えなければならない場合もある。加えて、実施形態によっては、仮想装置が活性化時にオンラインかまたはオフラインかを示す任意のパラメータを有することが可能な場合もある。オペレーティング・システムの中には、オンライン装置がホストにアクセス可能である（ホストに使用可能である）が、オフライン装置はアクセス可能でない（ホストに使用可能でない）ものもある。したがって、仮想装置を作成したいが、それに対するアクセスを許可したくないホスト・アプリケーションでは、Ｒｅｇｉｓｔｅｒ、Ｒｅｌａｔｅおよび／またはＡｃｔｉｖａｔｅコールのいずれか１つにパラメータを渡し、活性化時に仮想装置がオンラインかまたはオフラインかを示すことが可能な場合もある。
【０１３２】
図１９Ｂを参照すると、フロー・チャート４８０’は、１つ以上の標準論理装置／仮想装置対を活性化する活性化ルーチンの別の実施形態に伴って実行されるステップを示す。処理は第１ステップ４８２’にて開始し、フロー・チャート４５０のステップ４６６に関連して先に説明したリストと同様のリスト上の最初の項目を指し示すように、ポインタを設定する。ポインタは、リスト上の種々の要素を指し示すために用いられる。リストは、パラメータとしてＡｃｔｉｖａｔｅルーチンに渡すことができる。あるいは、リストｉｄを渡すこともでき、この場合、Ａｃｔｉｖａｔｅルーチンがリストｉｄを用いて、Ａｃｔｉｖａｔｅルーチンがアクセスできるリスト間で区別する。更に、代わりに、ＲｅｌａｔｅおよびＡｃｔｉｖａｔｅルーチンが単一のグローバル・リストを用い、Ａｃｔｉｖａｔｅルーチンに対する任意のコールが、以前に関係付けた標準論理装置／仮想装置対全てを活性化させるようにしてもよい。勿論、正式なリスト構造の代わりに、標準論理装置／仮想装置対（または１対のみ）の各々をパラメータとしてＡｃｔｉｖａｔｅルーチンに渡すことが可能な場合もある。
【０１３３】
ステップ４８２’に続いて、検査ステップ４８４’において、処理が完了したか否か（即ち、リストの終端に達したか否か）判定を行う。これは、リスト全体を反復するために用いるポインタを調べることによって判定することができる。リストの処理が完了していない場合、制御はステップ４８４’からステップ４８５’に移り、ポインタが示す標準論理装置／仮想装置対に対して以前にＲｅｌａｔｅ動作が実行されたことがあるか否か判定を行う。Ｒｅｌａｔｅ動作が以前に実行されたことがない（したがって、活性化が不可能である）場合、制御はステップ４８５’からステップ４８６’に移行し、エラーを返す。ステップ４８６’の後、処理は完了する。
【０１３４】
ステップ４８５’において、活性化する標準論理装置／仮想装置対に対してＲｅｌａｔｅルーチンが実行されたことがあると判定した場合、制御はステップ４８５’からステップ４８８’に移行し、ポインタに、リスト上の次の標準論理装置／仮想装置対を指し示させる。ステップ４８８’に続いて、制御は検査ステップ４８４’に戻り、リストの処理が完了したか否か判定を行う。
【０１３５】
検査ステップ４８４’において、リストの処理が完了した（したがって、活性化する仮想装置に対応する標準論理装置全てが、既に関連付けられていると判定された）場合、制御はステップ４８４’からステップ４９２’に移り、リスト上の要素を追跡するポインタに、標準論理装置／仮想装置対のリストにおける最初の項目を指し示させる。ステップ４９２’に続いて、検査ステップ４９４’において、リスト全体の処理が完了したか否かについて判定を行う。完了していない場合、制御はステップ４９４’からステップ４９５’に移行し、図１５Ｂおよび図１５Ｃに関連して先に説明したのと同様に、該当する資源（例えば、標準論理装置）への排他的アクセスを有効にする。ステップ４９５’に続いて、ステップ４９６’において、標準論理装置／仮想装置対に対して設定した保護ビットに対応するセッションを活性化する。ステップ４９６’におけるセッションの活性化は、先に説明した図１５Ｃのフロー・チャート４２０におけるステップ４２４で実行した処理に類似している。ステップ４９６’においてセッションを活性化したことにより、保護ビットが設定されている標準論理装置のトラックに書き込みが行われるときに、この明細書中の別のところで説明した、特殊仮想装置処理を実行する。加えて、セッションの活性化により、仮想装置がホストに対して使用可能となる。ステップ４９６’に続いて、ステップ４９７’において、先に説明したのと同様に、該当する資源への排他的アクセスを無効にする。ステップ４９７’に続いて、ステップ４９８’において、リスト上で処理した項目を追跡しているポインタに次の項目を指し示させる。ステップ４９８’に続いて、制御は検査ステップ４９４’に戻る。
【０１３６】
検査ステップ４９４’において、標準論理装置／仮想装置対のリスト全体を処理し終えた（したがって、活性化する仮想装置に対応する標準論理装置全ての対応するセッションが活性化された）と判定した場合、制御はステップ４９４’からステップ５１２’に移行し、リストをクリアし、その後にＡｃｔｉｖａｔｅルーチンにコールしても、既に活性化されている標準論理装置／仮想装置対を再度活性化しないようにする。ステップ５１２’の後、処理は完了する。尚、図１５Ｂおよび図１５Ｃと同様、実施形態によっては、ステップ４９６’に関連して用いられる資源への排他的アクセスを有効および無効にする必要がない場合もあることを注記しておく。これを代替経路５１３ａ’、５１３ｂ’で例示する。
【０１３７】
図１９Ｂのフロー・チャート４８０’によって例示する代わりの実施形態は、標準論理装置／仮想装置対全てを同期して活性化することが必須な場合、および／またはホスト・アプリケーションが必要に応じて活性化を同期させる処理を実行する場合に用いることができる。図１９Ｂ（または図１９Ａ）と共に用いるホスト・アプリケーション処理に対する異なる選択肢については、この明細書中でいずれ説明する。
【０１３８】
場合によっては、仮想装置を対応する標準論理装置または別の標準論理装置に再度格納することが望ましい場合もある。即ち、仮想装置を、それ自体のデータ記憶領域を有する実際の論理装置に変換すること、または仮想装置を別の仮想装置に転送することが有用な場合もある。
【０１３９】
図２０Ａを参照すると、標準論理装置５３２は、仮想装置５３４およびログ装置５３６に対応するものとして示されている。ここでは、仮想装置５３４を、自己の記憶領域を有する論理装置に復元することが望ましい。尚、図２０Ａの例において、仮想装置５３４を設置して以来、仮想装置５３４によって指し示される標準論理装置５３２のトラックの一部は変更されていないことを注記しておく。仮想装置５３４によって指し示されているログ装置５３６の他のトラックは、仮想装置５３４を設置した以降に変更されている標準論理装置５３２のトラックに対応する。
【０１４０】
図２０Ｂを参照すると、仮想装置５３４を図２０Ａの標準論理装置５３２に復元した結果（ｏｌｄ  ｓｔｄ  ｄｅｖ）が示されている。仮想装置５３４は除外されている。加えて、仮想装置５３４によって指し示されている標準論理装置５３２のいずれのトラックについても、特殊処理は実行されていない。しかしながら、仮想装置５３４によって指し示されているログ装置５３６のトラックについては、標準論理装置５３２の対応するトラックを変更し、ログ装置５３６の対応するトラックを指し示すようにしている。したがって、標準論理装置５３２にアクセスするホストは、実際には、ログ装置５３６のトラック上のデータにアクセスすることになる。この間接機構によって、全てのデータをログ装置５３６から標準論理装置５３２に直ちに移動させることなく、標準論理装置５３２を復元する方法が得られる。この明細書中の一実施形態では、標準論理装置５３２の該当するトラックに、ログ装置５３６の対応するトラックを指し示させ、加えて、バックグラウンド・コピー・プロセスが、標準論理装置５３２に、標準論理装置５３２が指し示すトラックをコピーする。この明細書中の一実施形態では、バックグラウンド・コピー・プロセスは、標準論理装置５３２の通常アクセスと認め得る程の干渉をしないように設計されている。加えて、ログ装置５３６のトラックを指し示す標準論理装置５３２のトラックにアクセスする場合、トラックにアクセスするときにコピーも実行し、バックグラウンド・タスクがトラックをコピーするのを待つことはない。尚、仮想装置を設置した対象である標準論理装置に仮想装置を復元する場合、標準論理装置に設置した他の仮想装置はない。しかしながら、以下で説明する別のタイプの復元では、仮想装置を別の標準論理装置または別の仮想装置に復元する前に、１つよりも多い仮想装置が標準論理装置に設置されてもよい。
【０１４１】
図２０Ｃを参照すると、別のタイプの復元が示されており、図２０Ａの仮想装置５３４によって表されるデータを、新たな標準論理装置５３８にコピーする。その場合、新たな標準論理装置５３８は、仮想装置５３４が以前に標準論理装置５３２を指し示していた場合には標準論理装置５３２、あるいは仮想装置５３４が以前にログ装置５３６を指し示していた場合にはログ装置５３６を指し示す間接的トラックから成る。図２０Ｂに示す実施形態におけると同様、バックグラウンド・コピー・タスクを用いて、標準論理装置５３２およびログ装置５３６から標準論理装置５３８のトラックにデータをコピーし、最終的に標準論理装置５３８が復元動作からの間接トラックを全く収容しないようにすることができる。また、図２０Ｂの実施形態と同様、標準的論理装置５３８の特定のトラックにアクセスすると、バックグラウンド・コピーがこのトラックを移動するのを待つのではなく、アクセスに伴ってこのトラックをコピーする。
【０１４２】
図２０Ｄを参照すると、ミラー論理装置５３２’は、標準論理装置５３２のポイント・イン・タイム・コピーを表す論理ボリュームである。標準論理装置５３２と同様、ミラー論理装置５３２’は、データのトラックのために自己の記憶領域を内蔵している。この明細書中の一実施形態では、まずミラー論理装置５３２’を標準論理装置５３２に対して設置すると、これによって最初にデータが標準論理装置５３２からミラー論理装置５３２’にコピーされる。一旦初期コピーが完了すると、論理装置５３２、５３２’は「同期化」される。標準論理装置５３２に対して行われる書き込み動作は、ミラー論理装置５３２’の対応するトラックにも行われる。キャッシュ内にないトラックに対する読み出し動作は、装置５３２、５３２’のいずれに対して行ってもよい。
【０１４３】
ミラー論理装置５３２’を標準論理装置５３２に対して設置した後、装置５３２、５３２’を「分割」し、装置５３２、５３２’の一方に対して行われる動作（例えば、書き込み）が、装置５３２、５３２’の他方にも自動的に行われないようにすることができる。しかしながら、装置５３２、５３２’を分割した後であっても、分割後に生ずる変化を追跡する機構を設けることもできるので、例えば、分割後に、標準論理装置５３２からミラー論理装置５３２’に全てのデータをコピーすることなく、装置５３２、５３２’を再同期させることが可能である。
【０１４４】
図２０Ｄによって例示する実施形態では、仮想装置５３４を標準論理装置５３２に対して設置した後、ミラー論理装置５３２’を標準論理装置５３２から分割した。この場合、仮想装置５３４をミラー論理装置５３２’に復元することは、図２０Ｂに示すように、仮想装置を標準論理装置５３２に復元するのと同様であり、仮想装置５３４を設置した後に変化したミラー論理装置５３２’のトラックを、ログ装置５３６のトラックに対する間接的ポインタとし、仮想装置５３４を設置した後に変化しなかったトラックに、ミラー論理装置５３２’上で直接アクセスすることができる。これについて、以下で更に詳しく説明する。尚、図２０Ｄの実施形態は、図２０Ｂの実施形態の利点（間接動作が少なく、バックグラウンド・コピーも少ない）、および図２０Ｃの実施形態の利点（復元を実行するために標準論理装置５３２を変更しない）を明示することを注記しておく。
【０１４５】
図２０Ｅを参照すると、仮想装置５３４を新たな仮想装置５３４’に復元する。この場合、新たな仮想装置５３４’は本質的に元の仮想装置５３４のコピーであり、ポインタは標準論理装置５３２およびログ装置５３６を指し示している。
【０１４６】
実施形態によっては、復元用に任意のパラメータを設け、復元に伴って仮想装置を復元する装置の名称変更を可能にするとよい場合がある。同様に、任意のパラメータを用いて、仮想装置を復元している装置をオンラインまたはオフラインにするようにしてもよい。加えて、仮想装置の設置に関連して先に説明したのと同様に、Ｂｅｇｉｎ  ＧｒｏｕｐおよびＰｒｏｃｅｓｓ  Ｇｒｏｕｐコマンドを同期して用い、多数の装置を復元可能にしてもよい。
【０１４７】
図２１を参照すると、フロー・チャート５５０は、図２０Ｂに示し先に説明したのと同様に、復元の実行に伴って実行されるステップを示す。ここでは、仮想装置が既に設置されている標準論理装置に、仮想装置を復元する。処理は、第１ステップ５５２にて開始し、仮想装置の最初のトラックを指し示す。仮想装置の各トラックを反復し各トラックを処理するためにポインタが用いられる。ステップ５５２に続いて、検査ステップ５４４では、処理すべきトラックが残っているか否か判定を行う。残っていない場合、制御はステップ５５４からステップ５５５に移行し、復元が標準論理装置に対して実行されたことを示す値を、仮想装置に用いていたセッションに対応する装置テーブルのヘッダ・フィールドの一部に書き込む。ステップ５５５に続いて、ステップ５５７では、図１４に関連して先に説明したのと同様に、仮想装置の割り当てを外すが、勿論、ログ・トラックは空きリストには戻されない。
【０１４８】
ステップ５５７に続いて、ステップ５５８において、セッション・タイプを変更する。この明細書中の一実施形態では、標準論理装置がログ装置のトラックを間接的に指し示すトラックを有していることを示すためにセッション・タイプをステップ５５８において変更する（以下で更に詳しく説明する）。このセッション・タイプに対して、トラックを徐々にログ装置から標準論理装置に移動させる。この移動は、ステップ５５８において設定したセッション・タイプに対する間接トラックを解明するシステム全体のタスク(system-wide task)によって行うことができる。あるいは、バックグラウンド・コピー・タスク（スナップ動作において用いることができるバックグラウンド・コピーと同様）を明示的に開始することも可能である。バックグラウンド・コピー・タスクは、ログ装置のトラックから標準論理装置にデータをコピーすることによって、間接ポインタを解明する。尚、トラックを標準論理装置からログ装置に移動させるに連れて、他の仮想装置によって指し示されていないログ装置のトラックは、図１４のステップ３８６、３８８に関連して先に説明したのと同様に、空きリストに戻されることを注記しておく。また、ログ装置のトラックを指し示す標準ログ装置の間接トラックに書き込みが行われた場合、書き込みが実行される前に、データを収容するトラックが最初にログ装置から標準論理装置にコピーされる（そして、恐らくログ装置トラックの空きリストに戻される）ことも注記しておく。他の実施形態では、データがログ装置上にある間接トラックへの書き込みによって、ログ装置のトラックに直接書き込みが実行されるようにしてもよい。ステップ５５８の後、処理は完了する。
【０１４９】
ステップ５５４において、処理すべきトラックが残っていると判定した場合、制御はステップ５５４からステップ５６２に移り、処理される仮想装置トラックが標準論理装置を指し示しているか否か判定を行う。指し示していない場合（仮想装置のトラックがログ装置を指し示していることを意味する）、制御はステップ５６２からステップ５６４に移行し、標準論理装置のトラックに、ログ装置の対応するトラックを指し示させる。このように、標準論理装置のトラックに後にアクセスすると、ログ装置のトラック上に格納されているデータが取り込まれる。しかしながら、先に説明したように、トラックはログ装置から標準論理装置に移動するので、最終的には、ログ装置上に最初に供給されたデータは、標準論理装置に収容されることになる。尚、この明細書中で説明したように記憶装置のトラックにアクセスし、変更するには、例えば、トラックの状態を判断する前および／またはトラックを変更する前に、当該トラックをロックすることによって、他のプロセスによるアクセスを禁止しなければならないことを注記しておく。他のプロセスによるアクセスを禁止するステップは、ここでは明示的に示さないが、かかるステップは必要なときに実行されることは理解されよう。
【０１５０】
ステップ５６４に続いて、ステップ５６７において、トラックの保護ビットが設定されているか否か判定を行う。仮想装置のトラックがログ装置を指し示しているので、この明細書中で説明した他の処理によれば、保護ビットはこのステップではクリアになっていることが予想される。したがって、ステップ５６７において、トラックの保護ビットが設定されていると判定した場合、制御はステップ５６７からステップ５６８に移り、エラー処理を実行する。エラー処理は、単にエラーを記録し、処理を中断し、エラー・インディケータを返し、エラーを訂正する処置を講ずる等を含むことができる。
【０１５１】
ステップ５６７において、トラックの保護ビットが設定されていないと判定した場合、またはステップ５６８に続いて、制御はステップ５７２に移行し、仮想装置の次のトラックを指し示させ、ここに記載した処理を実行する。ステップ５７２に続いて、制御は先に説明したステップ５５４に戻る。
【０１５２】
ステップ５６２において、処理される仮想装置トラックが標準論理装置を指し示していると判定した場合、制御はステップ５６２からステップ５７４に移行し、このトラックの保護ビットが設定されているか否か判定を行う。ここで説明した他の処理によれば、仮想装置トラック（テーブル）が標準論理装置を指し示している場合、保護ビットが設定されていることが予想される。したがって、ステップ５７４において、保護ビットが設定されていないと判定した場合、制御はステップ５７４から、先に説明したステップ５６８に移行する。
【０１５３】
ステップ５７４において、保護ビットが設定されていると（予想通り）判定した場合、制御はステップ５７４からステップ５７８に移行し、保護ビットをクリアして、標準論理装置のトラックへの書き込みに伴って、以前の標準論理装置／仮想装置セッションのために特殊処理が実行されないようにする。しかしながら、以下で説明するが、他のタイプの復元動作では、標準論理装置のトラックへの書き込みに伴って、特殊処理が必要となる場合もあることを注記しておく。ステップ５７８に続いて、制御はステップ５７２に移行し、次のトラックを処理する。
【０１５４】
図２２を参照すると、フロー・チャート５８０は、図２０Ｃに示し先に説明したような、仮想装置を新たな標準論理装置に復元することに伴って実行されるステップを示す。処理は、第１ステップ５８２にて開始し、仮想装置の最初のトラックを指し示す。ステップ５８２に続いて、ステップ５８３において、処理すべき仮想装置のトラックが未だ残っているか否か判定を行う。残っていない場合、制御はステップ５８３からステップ５８４に移行し、ステップ５５５に関連して先に説明したのと同様に、仮想装置の復元を実行したことを示す値を、仮想装置のために用いられたセッションに対応する、標準論理装置の装置テーブルのヘッダ・フィールドの一部に書き込む。しかしながら、フロー・チャート５８０の場合、保護ビット全てをクリアするための対応するステップがないことを注記しておく。これは、以下で更に詳しく説明するが、この実施形態では、復元の後に保護ビットが用いられるからである。
【０１５５】
ステップ５８４に続いて、ステップ５８５では、図２１に関連して先に説明したのと同様に、仮想装置を除外する。ステップ５８５に続いて、ステップ５８６では、ステップ５５８に関連して先に説明したのと同様に、セッション・タイプを変更し、トラックの移動を容易にする。尚、この場合、しかしながら、新たな標準論理装置のトラックの全てが間接的であるので、ログ装置と、復元しようとしている仮想装置に以前に関連付けられた標準論理装置との双方から、トラックを移動することを注記しておく。しかしながら、図２１の実施形態におけると同様、ログ装置の空きトラックを空きリストに戻し、間接トラックへの書き込みによって、トラックをコピーさせ、間接動作を解消することもできる。別の実施形態では、ログ装置上の間接トラックへの書き込みによって、ログ装置のトラックに直接書き込みが実行されるようにすることもできる。ステップ５８６の後、処理は完了する。
【０１５６】
ステップ５８３において、処理すべきトラックが残っていると判定した場合、制御はステップ５８３から検査ステップ５８８に移行し、仮想装置のトラック（テーブル）が標準論理装置を指し示しているか否か判定を行う。指し示している場合、制御は検査ステップ５８９に移行し、保護ビットがこのトラックに対して設定されているか否か判定を行う。ここで説明した他の処理によれば、標準論理装置を指し示す仮想装置の保護ビットが設定されていることが予想される。したがって、ステップ５８９において、保護ビットが設定されていないと判定した場合、制御はステップ５８９からステップ５９１に移行し、ステップ５６８に関連して先に説明したのと同様に、エラー処理を実行する。実施形態によっては、ステップ５９１における処理は、保護ビットを正しい値に設定することを含む。ステップ５８９において標準論理装置に対する保護ビットが設定されていると判定した場合、またはステップ５９１に続いて、制御はステップ５９２に移行し、新たな標準論理装置のトラックを、古い標準論理装置（即ち、復元する仮想装置に対して以前に設置された標準論理装置）のトラックに対する間接的ポインタとなるように設定する。
【０１５７】
ステップ５８８において、仮想装置のトラック（テーブル）が標準論理装置を指し示していないと判定した場合、制御は検査ステップ５９３に移行し、このトラックの保護ビットが設定されているか否か判定を行う。ここで説明した他の処理によれば、仮想装置が標準論理装置を指し示していない（即ち、ログ装置を指し示している）場合、保護ビットは設定されていないことが予想される。したがって、ステップ５９３において、保護ビットが設定されている場合、制御はステップ５９３から、先に説明したステップ５９１に移行する。ステップ５９３において標準論理装置に対する保護ビットが設定されていないと判定した場合、またはステップ５９１に続いて、制御はステップ５９５に移行し、新たな標準論理装置のトラックを、ログ装置の対応するトラックに対する間接ポインタとなるように設定する。
【０１５８】
ステップ５９２またはステップ５９５に続いて、ステップ５９８において、仮想装置の次のトラックを処理する。ステップ５９８に続いて、制御は先に説明したステップ５８３に戻る。
【０１５９】
前述のように、復元した仮想装置のセッションに対応する保護ビットは、図２２に示す実施形態ではクリアされない。これは、図２０Ａおよび図２０Ｂを参照しながら説明することができる。まず、標準論理装置５３２のトラックの一部には、仮想装置５３４が設置された後には、決して書き込まれることはなく、したがってこれらのトラックは、標準論理装置５３２上で元の状態のまま残っていることを注記しておく。図２０Ｃに示すように、まず仮想装置５３４を新たな標準論理装置５３８に復元するとき、標準論理装置５３２のこれらのトラックは、標準論理装置５３８の対応するトラックによって間接的に指し示される。トラックが標準論理装置５３８にコピーされる前に、標準論理装置上のこれらのトラックの１つに次の書き込みが行われると、標準論理装置５３８は、標準論理装置５３２上に新たに書き込まれたトラックを間接的に参照しており、もはや仮想装置５３４を復元したものには対応しなくなる。しかしながら、トラックの保護ビットがこれを防止する。図２０Ｃに示すような復元を実行した後、保護ビットが設定されている標準論理装置５３２のトラックに書き込みが行われると、書き込みが行われる前に、まずこのトラックが標準論理装置５３８にコピーされる。尚、各トラックを標準論理装置５３２から標準論理装置５３８にコピーした後、設定された保護ビットに起因する特殊処理に伴ってコピーが行われるか、またはステップ５８８において開始したトラック移動によってコピーが行われるかには係わらず、各トラックの保護ビットをクリアしてもよいことを注記しておく。したがって、一旦全てのデータが標準論理装置５３２から標準論理装置５３８に移動したなら、セッションに関連する保護ビット全てはクリアされていることが予想される。
【０１６０】
図２３を参照すると、部分的なフロー・チャート６００は、図２０Ｄに関連して先に示したような、仮想装置をミラー論理装置に復元する際に実行されるステップを示す。フロー・チャート６００が示すのは、図２１のフロー・チャート５５０のステップとは異なって実行されるステップである。フロー・チャート６００において、フロー・チャート５５０と接続しこれに流れ込む部分（即ち、同じ動作が行われるところ）を図２３に示し、ここで説明する。
【０１６１】
処理は、第１ステップ６０２において開始し、分割動作が行われて以来ミラー論理装置上で行われた全ての変化（例えば、書き込み）を取り消し、ミラー論理装置を、分割の直前の時点における標準論理装置と実質的に同一にする。ここに開示する実施形態では、分割を行うことができるのは、仮想装置を標準論理装置に対して設置した後で、しかも仮想装置を復元する前である。分割以降の変化の取り消しは、ミラー機能が構造追跡を用いて、分割以降に生じた変化を記録し追跡することによって行うことができる。
【０１６２】
ステップ６０２に続いて、図２１のステップ５５２と同様のステップ６０４において、仮想装置の最初のトラックを指し示すように、ポインタを設定する。ステップ６０４に続いて、図２１の検査ステップ５５４と同様の検査ステップ６０６において、処理するトラックが残っているか否か判定を行う。残っていない場合、制御は、先に説明した図２１のステップ５５５に移行する。それ以外の場合、制御は、図２１のステップ５６２と同様の検査ステップ６０８に移行し、仮想装置のポインタが標準論理装置を指し示しているか否か判定を行う。指し示している場合、制御は、先に説明した図２１のステップ５７４に移行する。
【０１６３】
ステップ６０８において、処理する仮想装置のトラックが標準論理装置を指し示していない（少なくとも１回の書き込みが、仮想装置の設置後に行われたことを示す）と判定した場合、制御はステップ６０８からステップ６１２に移行し、処理するトラックに対する書き込み動作の全てが、ミラー論理装置を標準論理装置から分割した後に行われたのか否か判定を行う。尚、そうである場合、ステップ６０２における取り消し動作によって、ミラー論理装置のトラックを、仮想装置の設置前の、標準論理装置の対応するトラックと同じ状態に既に戻してあるはずであることを注記しておく。
【０１６４】
全ての書き込みが分割後に行われたのではないと判定した場合、制御はステップ６０８から、先に説明した図２１のステップ５６４に移行し、図２１に関連して先に説明したのと同様に、ミラー論理装置の対応するトラックに、ログ装置の該当するトラックを間接的に指し示させる。検査ステップ６１２において、全ての書き込みが分割の後に行われたと判定した場合、制御はステップ６１２から検査ステップ６１４に移行し、その仮想装置が、ログ装置の対応するトラックを指し示す最後の仮想装置（即ち、唯一の仮想装置）であるか否か判定を行う。最後の仮想装置である場合、制御はステップ６１４からステップ６１６に移行し、ログ装置のトラックをログ装置トラックの空きリストに戻す。ステップ６１４、６１６は、先に説明した図１４のステップ３８６、３８８に類似している。ステップ６１６に続いて、またはログ装置のトラックが１つよりも多い仮想装置によって用いられている場合はステップ６１４に続いて、図２１のステップ５６７において、保護ビットが適正な状態にあるか否か検査し、保護ビットをクリアする。しかしながら、この場合、標準論理装置５３２およびミラー論理装置５３２’双方の保護ビットをクリアする。尚、ステップ５６７への移行により、ミラー論理装置のトラックは、データにアクセスするための直接トラックとなることを注記しておく。
【０１６５】
記憶装置にアクセスするホスト・アプリケーションにとっては、ここに記載した機能性の一部を用いることができると有用である。例えば、ホスト・アプリケーションは、標準論理装置のポイント・イン・タイム・コピーを表す仮想装置を作成し、次いで仮想装置からバックアップを実行し、その後仮想装置を除外したい場合が考えられる。その他の場合でも、仮想装置を用いれば、標準論理装置を用いるソフトウエアを検査するときに、標準論理装置からのデータのポイント・イン・タイム・コピーを維持することができる。検査期間の後、仮想装置によって表されるポイント・イン・タイム・コピーを標準論理装置に復元することもできる。
【０１６６】
図２４を参照すると、図６２０は記憶装置６２６にアクセスする複数のホスト６２２〜６２４を示す。ホスト６２２〜６２４の各々は、システム・コールを記憶装置６２６に対して行うことによって、ここに記載したような標準論理装置／仮想装置対を作成し、設置し、除外し、復元することができる。ここに開示する一実施形態では、ホスト６２２〜６２４上で実行するアプリケーションは、直接的にシステム・コールを行わない。代わりに、ソフトウエアの基礎になる層が、ホスト６２２〜６２４からのより高いレベルのコールを、適切なシステム・コールに変換し、記憶装置６２６に供給する。例えば、ホスト６２２が有するアプリケーションは、Ｅｓｔａｂｌｉｓｈルーチンをコールすることによって、標準論理装置／仮想装置対を設置し、例えば、ホスト６２２上で実行するアプリケーション、ホスト６２２上で実行するオペレーティング・システムのルーチン、またはその他の何らかの適当な機構にリンクされたライブラリを用いて、最終的に適切なシステム・コール（例えば、Ｒｅｇｉｓｔｅｒ、Ｒｅｌａｔｅ、およびＡｃｔｉｖａｔｅ）をコールすることができる。
【０１６７】
Ｅｓｔａｂｌｉｓｈルーチンに渡されるパラメータは、１つ以上の標準論理装置／仮想装置対、１つ以上の任意の名称変更パラメータ（先に説明した）、および先に説明したように、新たに設置された仮想装置がオンラインかまたはオフラインかを判断する１つ以上のオンライン／オフライン・インディケータを含むことができる。実施形態によっては、アプリケーションからコールされるＥｓｔａｂｌｉｓｈルーチンは、１つの標準論理装置／仮想装置対だけを受け入れる場合もある。別の実施形態では、Ｅｓｔａｂｌｉｓｈルーチンは、多数の標準論理装置／仮想装置対（例えば、先に説明したようなリストまたはリストｉｄ）を受け入れる。多数の標準論理装置／仮想装置対を受け入れる実施形態では、基礎となるシステム・コールが、この明細書中の別のところで説明した方法で、仮想装置を同期して設置させるようにしてもよいし、しなくてもよい。場合によっては、ホストが、例えば、２００２年４月２９日に出願された米国特許出願第１０／１３４，４２０号に開示されている機構を用いて、多数の標準論理装置／仮想装置対の同期設置を処理し、適切な統一群(consistency group)を設置し活性化動作の同期化を行わせることも可能である。この特許出願の内容は、この言及により本願にも含まれるものとする。加えて、ホストが、対の一部である装置のいずれかに対して動作を実行する前に全ての対が設置されるのを単に待つことによって、複数の対を同期して設置することも可能な場合がある。実施形態によっては、ｅｓｔａｂｌｉｓｈルーチンが作成および／または取得した１つ以上の標準論理装置および対応する仮想装置を、当該Ｅｓｔａｂｌｉｓｈルーチンに渡すこともできる。
【０１６８】
図２５を参照すると、フロー・チャート６３０は、１つ以上の標準論理装置／仮想装置対を設置するための上位アプリケーション・コールを、記憶装置６２６に対して行うことができる適切なシステム・コールに変換する際に、Ｅｓｔａｂｌｉｓｈルーチンが実行するステップを示す。変換は、ホスト装置６２２〜６２４の１つにおけるオペレーティング・システムによって、または上位アプリケーション・コールをシステム・コールに変換するその他の適切な機構のいずれかを用いることによって、アプリケーション自体にリンクされているライブラリ・コードにおいて実行することができる。
【０１６９】
処理は、第１ステップ６３２にて開始し、１つよりも多い標準論理装置／仮想装置対が設置されているか否か判定を行う。先に説明したように、実施形態によっては、単一のコールにおいて１つよりも多い標準論理装置／仮想装置対を設置することが可能であり、実施形態によっては、仮想装置の全てを同期して活性化させるようにすることも可能である。検査ステップ６３２において、１つよりも多い標準論理装置／仮想装置対が設置されていると判定した場合、制御はステップ６３２からステップ６３４に移り、Ｂｅｇｉｎ  Ｇｒｏｕｐコールを実行して、先に説明した標準論理装置／仮想装置対のリストを作成する。尚、前述のように、Ｂｅｇｉｎ  ＧｒｏｕｐやＰｒｏｃｅｓｓ  Ｇｒｏｕｐを用いずに、多数の標準論理装置／仮想装置対を同期して処理し設置することも可能であることを注記しておく。これらの場合、先に説明した１つ以上のもの（例えば、リスト、リストｉｄ）のような、別の適切な機構をステップ６３４において呼び出せば、多数の標準論理装置／仮想装置対を同時に設置させることができる。更に、代わりに、先に引用した米国特許出願第１０／１３４，４２０に記載されているように、適切な統一群を設置し、この統一群機構を用いて多数の対を同期して活性化することも可能なこともある。
【０１７０】
ステップ６３２において１つのみの標準論理装置／仮想装置対を設置すると判定した場合、またはステップ６３４に続いて、ステップ６３６において、最初の標準論理装置／仮想装置対を指し示し、その処理を容易にする。実施形態によっては、各標準論理装置／仮想装置対をデータ構造（恐らく、新たな名称および／またはオンライン／オフライン指定のような、別の任意のパラメータを収容する）に格納する。このデータ構造は、リンク・リストにおいて一緒にリンクすることができる。したがって、ステップ６３６において設定し、後続の処理に用いるポインタを用意して、リストを照査する。Ｅｓｔａｂｌｉｓｈルーチンが対応する仮想装置を作成するかまたは何らかの方法で用意する実施形態では、データ位置をＥｓｔａｂｌｉｓｈルーチンに受け渡すことができ、Ｅｓｔａｂｌｉｓｈルーチンは該当する仮想装置識別子をその位置に置く。
【０１７１】
ステップ６３６に続いて、ステップ６３８において、受け渡されたパラメータ・リストの処理が完了したか否か判定を行う（例えば、ポインタがリストの終端を指し示すか否か）。勿論、最初の繰り返しでは、ステップ６３８の検査結果は、処理が完了していないことを示すことが予想される。ステップ６３８において、標準論理装置／仮想装置対（または、実施形態によっては、標準論理装置のみ）の全てが処理されていないと判定した場合、制御はステップ６３８からステップ６４２に移行し、先に説明したＲｅｇｉｓｔｅｒルーチンを呼び出す。
【０１７２】
ステップ６４２に続いて、検査ステップ６４４において、任意の新たな名称が指定されているか否か判定を行う。検査ステップ６４４において、任意の新たな名称が与えられていないと判定した場合、制御はステップ６４４から検査ステップ６４６に移行し、任意のオンライン／オフライン・ブール(boolean)・パラメータが与えられているか否か判定を行う。先に説明したように、オンライン／オフライン選択肢によって、コール元ルーチンは、設置時に、設置されている仮想装置がオンライン（ホストに使用可能になる）かまたはオフライン（ホストには使用できない）か判定することが可能となる。ステップ６４６において、オンライン／オフライン・パラメータが与えられていないと判定した場合、制御は検査ステップ６４６からステップ６４８に移り、Ｒｅｌａｔｅシステム・コールを設けて、標準論理装置／仮想装置対を関係付ける。
【０１７３】
ステップ６４６において、任意のオンライン／オフライン・パラメータが与えられていると判定した場合、制御はステップ６４６からステップ６５２に移行し、Ｒｅｌａｔｅシステム・コールを行う。しかしながら、ステップ６５２において、オンライン／オフライン・パラメータをシステム・コールによって受け渡し、設置の時点で仮想装置をオンラインまたはオフラインのどちらにすべきかを示すこともできる。
【０１７４】
ステップ６４４において、仮想装置に新たな名称が与えられていると判定した場合、制御はステップ６４４からステップ６５３に移行し、任意のオンライン／オフライン・パラメータが与えられているか否か判定を行う。ステップ６５５において、任意のオンライン／オフライン・パラメータが与えられていないと判定されると、制御はステップ６５３からステップ６５４に移行し、システム・コールを行って、先に説明したように、対を新たな名称パラメータと共に関係付ける。
【０１７５】
ステップ６５３において、標準論理装置／仮想装置対に関連して任意のオンライン／オフライン・パラメータが与えられていると判定した場合、制御はステップ６５３からステップ６５６に移行し、仮想装置の新たな名称、および設置時に仮想装置をオンラインまたはオフラインのどちらにするかについての指示と共に、対を関係付ける。
【０１７６】
ステップ６４８、６５２、６５４、６５６の各々に続いて、ステップ６５８では、ステップ６３６において設定したポインタに、次の標準論理装置／仮想装置対があれば、これを指し示させる。ステップ６５８に続いて、制御は検査ステップ６３８に移行し、標準論理装置／仮想装置対を全て処理し終えたか否か判定を行う。
【０１７７】
ステップ６３８において、標準論理装置／仮想装置対を全て処理し終えたと判定した場合、制御はステップ６３８からステップ６６２に移行し、Ａｃｔｉｖａｔｅシステム・コールを対の各々に与える（または、先に説明した異なる実施形態では、Ａｃｔｉｖａｔｅは、対の全てについてコールしてもよい）。ステップ６６２に続いて、ステップ６６４において、１つよりも多い標準論理装置／仮想装置対があるか否か判定を行う。ある場合、制御はステップ６６４からステップ６６６に移行し、Ｐｒｏｃｅｓｓ  Ｇｒｏｕｐコールを行う。Ｂｅｇｉｎ  Ｇｒｏｕｐをコールしたステップ６３４と全く同様に、ステップ６６６は多数の標準論理装置／仮想装置対を同期して設置するための別の機構を表すと考えられる。実施形態によっては、フロー・チャート６３０が示す処理を実行するルーチンは、標準論理装置／仮想装置対のリストを追跡し、その場合、先に説明したように、リスト全体（または、先に説明したようにリストｉｄ）をＡｃｔｉｖａｔｅルーチンに渡してもよい。別の実施形態では、前述の米国特許出願第１０／１３４，４２０号に記載されているように、統一群を形成する。
【０１７８】
ステップ６６６に続いて、または標準論理装置／仮想装置対が１つしかない場合はステップ６６４に続いて、ステップ６６８において、これまでのステップに明記した処理を実行した結果を、コール元ルーチンに返す（例えば、成否、実施形態によっては、新たに設置した仮想装置の識別子）。ステップ６６８の後、処理は完了する。
【０１７９】
また、Ｒｅｓｔｏｒｅルーチンを設け、ホスト６２２〜６２４の１つにおいてアプリケーションからコールすることも可能であり、その場合、Ｒｅｓｔｏｒｅルーチンは、パラメータとして、１つ以上の標準論理装置／仮想装置対、ならびに仮想装置を復元する標準論理装置を改名するための任意の名称、および標準論理装置がオンラインかまたはオフラインかを示す任意のオンライン／オフライン・ブール値を取り込む。これらのパラメータは、Ｅｓｔａｂｌｉｓｈルーチンに関連して先に説明したのと同様に、リンク・リストにおいて渡すこともできる。また、Ｒｅｓｔｏｒｅルーチンの場合、標準論理装置／仮想装置対の標準論理装置は、仮想装置を設置した標準論理装置と同一であってもよく、または先に説明したように異なる標準論理装置またはミラー論理装置とすることも可能であることを注記しておく。また、先に説明したように、仮想装置を別の仮想装置に復元してもよい。
【０１８０】
図２６を参照すると、フロー・チャート６８０は、図２０Ｂ、図２０Ｃ、図２０Ｄ、図２０Ｅに示したように、ホスト・アプリケーションがＲｅｓｔｏｒｅルーチンをコールして仮想装置を復元する際に、これに伴って実行されるステップを示す。処理は、第１ステップ６９２にて開始し、任意の新たな名称がパラメータとしてＲｅｓｔｏｒｅルーチンに与えられているか否か判定を行う。先に説明したように、場合によっては、仮想装置を標準論理装置または新たな仮想装置に復元し、同時に標準論理装置または新たな仮想装置に、古い仮想装置と関連付けられた名称とは異なる名称を与えることができる。検査ステップ６９２において、新たな名称が与えられていると判定した場合、制御はステップ６９２から検査ステップ６９４に移行し、任意のオンライン／オフライン・パラメータが与えられているか否か判定を行う。先に説明したように、場合によっては、仮想装置を標準論理装置または新たな仮想装置に復元し、同時に、標準論理装置または仮想装置をホストに使用不可能にする（オフライン）ことが可能である。
【０１８１】
検査ステップ６９４において、任意のオンライン／オフライン・パラメータが与えられていないと判定した場合、制御はステップ６９４からステップ６９６に移行し、先に説明したように、Ｒｅｓｔｏｒｅシステム・コールを行うことによって仮想装置を復元する。あるいは、ステップ６９４において、任意のオンライン／オフライン・パラメータが与えられていると判定した場合、制御は検査ステップ６９４からステップ６９８に移行し、任意のオンライン／オフライン・パラメータを用いて、Ｒｅｓｔｏｒｅシステム・コールを行う。
【０１８２】
ステップ６９２において、新たな名称がＲｅｓｔｏｒｅルーチンに与えられていると判定した場合、制御はステップ６９２から検査ステップ７０２に移行し、任意のオンライン／オフライン・パラメータも与えられているか否か判定を行う。与えられていない場合、制御は検査ステップ７０２からステップ７０４に移行し、標準論理装置または新たな仮想装置の新たな名称と共にＲｅｓｔｏｒｅシステム・コールを行い、仮想装置を復元する。検査ステップ７０２において、オプションのオンライン／オフライン・パラメータが与えられていると判定した場合、制御は検査ステップ７０２からステップ７０６に移行し、新たな名称およびオンライン／オフライン・パラメータを用いて、Ｒｅｓｔｏｒｅシステム・コールを実行する。ステップ６９６、６９８、７０４、７０６のいずれの後でも、処理は完了する。
【０１８３】
場合によっては、仮想装置を不活性化させ（除外ではなく）、仮想装置にはもはやアクセスできないが、仮想装置の使用に伴ってログ装置に書き込んだトラックは引き続き使用できるようにすることが望ましい場合もある。即ち、仮想装置を不活性化するためのコールが、仮想装置にアクセスしようとするいずれのホストにも、この仮想装置を使用できないようにし、対応する標準論理装置への書き込みが行われても、先に説明したような特殊処理が実行されないようにする。実際、不活性化された仮想装置は、仮想装置を設置した時点から仮想装置を不活性化した時点までに変化した、対応する標準論理装置のトラックを表す。例えば、仮想装置を正午に設置し、午後６時に不活性化した場合、不活性化された仮想装置のテーブルによって指し示される論理装置のトラックは、正午と午後６時との間に変化した標準論理装置のトラックのみを表す。
【０１８４】
図２７を参照すると、フロー・チャート７３０は、仮想装置の不活性化に伴って実行されるステップを示す。処理は、第１ステップ７３２にて開始し、図１５Ｂおよび図１５Ｃに関連して先に説明したのと同様に、該当する資源（例えば、仮想装置）への排他的アクセスを有効にする。ステップ７３２に続いて、ステップ７３４において、図１５Ｂおよび図１５Ｃに関連して先に説明したのと同様に、該当する資源（例えば、対応する標準論理装置）への排他的アクセスを有効にする。
【０１８５】
ステップ７３４に続いて、ステップ７３６において、例えば、適切な値を装置ヘッダ・フィールドに書き込むことによって、標準論理／仮想装置対に対応するセッションを非活性化する。この後、標準論理装置に書き込もうとしても、特殊処理は実行されない。これは、事実上、仮想装置に対する変更を凍結する。
【０１８６】
ステップ７３６に続いて、ステップ７３８において、標準論理装置の該当する資源への排他的アクセスを、先に説明したのと同様に、無効にする。尚、ステップ７３６においてセッションを非活性化しているので、標準論理装置にその後に書き込みを行っても、仮想装置には影響を及ぼさない。ステップ７３８に続いて、ステップ７４２では、仮想装置を使用不可能にする。ステップ７４２において仮想装置を使用不可能にすることによって、例えば、ホストによって仮想装置が変更されるのを防止する。しかしながら、仮想装置に対応するログ装置のトラックにアクセスするために、仮想装置に対応するテーブルを保持する。別の実施形態では、ステップ７３６においてセッションを非活性化することに関連して、ステップ７４２において仮想装置に書き込みができないようにすることによって、仮想装置を通じて（即ち、仮想装置の読み取りを通じて）ログ装置のトラックを読み取ることができる。
【０１８７】
ステップ７４２に続いて、ステップ７４４において、先に説明したのと同様に、標準論理装置の該当する資源への排他的アクセスを無効にする。しかしながら、ステップ７４４における処理は、いずれのホストの仮想装置へのアクセス（または、少なくとも書き込みアクセス）にも寄与しないことを注記しておく。何故なら、仮想装置はステップ７４２において使用不可能にされているからである。加えて、ステップ７４４における処理では、対応する標準論理装置からのデータを仮想装置に書き込ませない。何故なら、前述のように、ステップ７３６においてセッションを非活性化して、標準論理装置のために仮想装置のこれ以上の操作を防止しているからである。ステップ７４４の後、処理は完了する。
【０１８８】
図１５Ｂおよび図１５Ｃと全く同様に、実施形態によっては、ステップ７３６、７４２の１つ以上に関連して用いられる資源への排他的アクセスを有効および無効にする必要がない場合もあることを注記しておく。これを代替経路７４６ａ〜７４６ｄで例示する。
【０１８９】
ホスト・アプリケーションは、２回のシステム・コールを行うことによって、不活性化された仮想装置に対応するログ装置のトラックにアクセスすることができる。最初のシステム・コールで、標準論理装置の保護ビットを読み出すことによって、仮想装置のどのトラックがログ装置を指し示しているか、つまり、どのトラックが仮想装置を設置した時点と仮想装置を不活性化した時点との間で変更したトラックに対応するかに関する情報を得る。即ち、設定されている標準論理装置のいずれの保護ビットに対しても、不活性化された仮想装置には、ログ装置を指し示す対応するトラックはない。逆に、標準論理装置のトラックに対するビットをクリアすることによって、仮想装置を設置した後で仮想装置を不活性化する前にトラックへの書き込みが行われたことが示されると、ログ装置上には不活性化された仮想装置が指し示す対応するトラックが存在する。このシステム・コールは、パラメータとして、トラックの識別子を渡し、代わりに当該トラックの保護ビットの状態を受ける。あるいは、ある範囲のトラック（全トラックを含む）の状態を格納するデータ構造に対するポインタをシステム・コールに渡し、コール元ルーチンに返すこともできる。
【０１９０】
別のシステム・コールによって、不活性化した仮想装置に対応する、セーブされているトラックの読み出しが可能となる。不活性化した仮想装置のセーブされているトラックを読み出すルーチンは、パラメータとして、仮想装置の識別子、およびどのトラックを読み出すのかを示すトラック識別子を取り込む。尚、不活性化した仮想装置に対応するログ・トラックを読み出すために可能な機構の１つは、仮想装置に書き込みを不可能とし、仮想装置に対応するセッションを不活性化することであることを注記しておく。かかる場合、仮想装置を読み出すことによって、仮想装置を通じてログ・トラックにアクセスすることができる。
【０１９１】
図２８を参照すると、フロー・チャート７５０は、不活性化した仮想装置のトラックを読み出す実施形態において実行されるステップを示す。処理は、第１ステップ７５２にて開始し、不活性化した仮想装置に対応するトラックを読み出すためのルーチンにパラメータとして渡された仮想装置が、実際に不活性化した仮想装置であるのか否か判定を行う。そうでない場合、制御はステップ７５２からステップ７５４に移り、コール元ルーチンにエラーを返す。ステップ７５４の後、処理は完了する。
【０１９２】
ステップ７５２において、コール元ルーチンによって渡された仮想装置の識別子が不活性化した仮想装置に対応すると判定した場合、制御はステップ７５２からステップ７５６に移り、要求したトラックが、ログ装置を指し示す仮想装置上のトラックに対応するか否か判定を行う。先に説明したように、仮想装置のトラックの一部のみが、ログ装置のトラックに対応する（即ち、仮想装置を設置した後で、仮想装置を不活性化する前に書き込まれた標準論理装置のトラックに対応するトラック）。仮想装置が設置された時点と仮想装置が不活性化された時点との間に書き込まれなかったトラックは、ログ装置上で仮想装置によって指し示されない。したがって、ステップ７５６において、コール元ルーチンによって渡されたトラック識別子が、仮想装置によって指し示されるトラックに対応しない場合、制御はステップ７５６からステップ７５４に移り、先に説明したように、エラーを返す。それ以外の場合、ステップ７５６において、トラックが仮想装置によって指し示されていると判定した場合、制御はステップ７５６からステップ７５８に移り、要求されたトラック・データを返す。ステップ７５８の後、処理は完了する。尚、実施形態によっては、１回のコールで複数のトラックからのデータを要求することも可能な場合がある。
【０１９３】
ある時点では、不活性化した仮想装置を除外することが有用な場合もある。その場合、図１４のフロー・チャート３７０に関連して先に説明したルーチンを読み出すことが可能である。尚、フロー・チャート３７０に示すステップは、不活性化した仮想装置を除外するために実行するものと同一であることを注記しておく。
【０１９４】
場合によっては、過去の特定の時点においてコンピュータ・システム上に存在していたデータを取得することができると有用である。毎日バックアップを行いセーブしているシステムでは、特定の日からのファイルまたはファイル・セットを要求する可能性もある。しかしながら、場合によっては、１日の精度がある種のアプリケーションには十分でないこともある。加えて、かかるシステムは、毎日システム全体分のデータをセーブしなければならず、これは相当な量になり得る。他の場合では、増分バックアップ(incremental backup)を備えればよい場合もある。しかしながら、増分バックアップでは、最初にデータを完全にバックアップし、次いで先に進んで、完全なバックアップまたは最新の増分バックアップ以降変更したファイルのみをセーブしなければならないのが通例である。これに伴う難点は、場合によっては、ファイルのトラックが１つだけ変更した場合であっても、ファイル全体をセーブすることである。加えて、特定の日からファイルを検索するには、ファイル全体を復元し、次いでシステムを先に進める必要がある。場合によっては、代わりに、システムの現在の状態から開始することができ、逆方向に処理することができる方が望ましい場合もある。
【０１９５】
図２９を参照すると、フロー・チャート７６０は、仮想装置を用いてトラック・レベルの増分バックアップを行うバックアップ・システムを示す。フロー・チャート７６０のステップは、ホスト・アプリケーションを実行するホスト・システムによって実行してもよい。処理は、第１ステップ７６２にて開始し、バックアップの対象である標準論理装置に対して、新たな仮想装置を設置する。ステップ７６２に続いて、ステップ７６４において、以前に標準論理に対して設置された古い仮想装置を不活性化する。ステップ７６４に続いて、ステップ７６６において、古い仮想装置に対応するトラックをセーブする。トラックをセーブするには、例えば、先に説明した機構を用いて、不活性化した仮想装置が指し示すトラック（即ち、仮想装置を設置した時点から仮想装置を不活性化した時点の間に変更したトラック）を収集することを伴う。トラックをセーブするには、標準論理装置の対応するソース・トラック（先に説明したように、ログ装置の各トラックにセーブされている）を示せばよい。セーブしてもよい他の情報には、セーブしたトラックの元になるバックアップ・セッションを示すタイム・スタンプまたは識別子を含むとよい。
【０１９６】
フロー・チャート７６０のステップは、６時間毎というように、増分期間ごとに実行してもよい。したがって、これら６時間ずつの期間の１つからファイルの１バージョンを有することを望むユーザは、以下に説明するようにすれば、そのようにすることができる。尚、実施形態によっては、ステップ７６６を実行した後に、不活性化した仮想装置を除外できることも注記しておく。
【０１９７】
図３０を参照すると、フロー・チャート７８０は、図２９のフロー・チャート７６０に関連してセーブしたトラックを用いてデータを復元する際に伴うステップを示す。フロー・チャート７８０のステップは、ホスト・アプリケーションを実行するホスト・システムによって実行してもよい。処理は、第１ステップ７８２にて開始し、現データ画像から開始する。ステップ７８２に続いて、ステップ７８４において、セーブされている最新のトラックを指し示すように、ポインタを設定する。ステップ７８４に続いて、ステップ７８６において、指し示されたトラックを画像に適用する。ステップ７８６は、セーブしたトラックを画像にコピーし、画像をその以前の時点における状態に戻すことを表す。
【０１９８】
ステップ７８６に続いて、ステップ７８８において、セーブしたトラックのうち最新から２番目のセットを、ポインタに指し示させる。ステップ７８８に続いて、検査ステップ７９２において、処理が完了したか否か（即ち、ローリング・バックアップが所望の時点まで戻って行われたか否か）判定を行う。ステップ７９２において、処理が完了していないと判定した場合、制御はステップ７８６に戻る。それ以外の場合、ステップ７９２において、処理は完了したと判定する。
【０１９９】
以上、種々の実施形態に関連付けて本発明を開示したが、それらに対する変更は、当業者には容易に明白となろう。したがって、本発明の精神および範囲は、特許請求の範囲に明記したものとする。
【図面の簡単な説明】
【０２００】
【図１】ここに記載されたシステムと共に用いられる記憶装置の図。
【図２】ここに記載されたシステムと共に用いられる種々の論理ボリュームを示す記憶領域の図。
【図３】ここに記載されたシステムによる仮想装置の使用状態を示す図。
【図４】ここに記載されたシステムによる複数の仮想装置の使用状態を示す図。
【図５】ここに記載されたシステムと共に用いる装置テーブルを示す図。
【図６】ここに記載されたシステムにて仮想装置と共に用いられるテーブルの読み出しを示すフロー・チャート。
【図７】ここに記載されたシステムにて仮想装置と共に用いられるテーブルの書き込みを示すフロー・チャート。
【図８】仮想装置テーブルの変更、およびここに記載されたシステムによる仮想装置の設置を示すフロー・チャート。
【図９】ここに記載されたシステムにてログ装置のトラックを処理するために用いられるデータ構造の変更を示すフロー・チャート。
【図１０】ここに記載されたシステムにて仮想装置の読み取りに伴って実行されるステップを示すフロー・チャート。
【図１１】ここに記載されたシステムにて仮想装置を設置した標準論理装置に対する書き込みに伴って、ディスク・アダプタが実行するステップを示すフロー・チャート。
【図１２】ここに記載されたシステムにて仮想記憶装置を設置した標準論理装置に対する書き込みに伴って、ホスト・アダプタが実行するステップを示すフロー・チャート。
【図１３】ここに記載されたシステムにて仮想装置への書き込みに伴って実行されるステップを示すフロー・チャート。
【図１４】仮想装置の除去に伴って実行されるステップを示すフロー・チャート。
【図１５】Ａ〜Ｃは、ここに記載されたシステムの一実施形態にて記憶装置のトラックの保護ビットの変更を示すフロー・チャート。
【図１６】Ａ及びＢは、図１５Ａ、図１５Ｂおよび図１５Ｃのフロー・チャートに従って保護ビットを設定する際の、図１１のフロー・チャートの代わりの処理を示すフロー・チャートの一部。
【図１７】ここに記載されたシステムによる標準論理装置／仮想装置対の登録を示すフロー・チャート。
【図１８】ここに記載されたシステムによる、標準論理装置の仮想装置に対する関係付けを示すフロー・チャート。
【図１９Ａ】ここに記載されたシステムにて１つ以上の標準論理装置／仮想装置の活性化に伴って実行されるステップを示すフロー・チャート。
【図１９Ｂ】ここに記載されたシステムの別の実施形態にて１つ以上の標準論理装置／仮想装置の活性化に伴って実行されるステップを示すフロー・チャート。
【図２０Ａ】ここに記載されたシステムにて仮想装置を標準論理装置または別の仮想装置に復元する一方法を示す図。
【図２０Ｂ】ここに記載されたシステムにて仮想装置を標準論理装置または別の仮想装置に復元する一方法を示す図。
【図２０Ｃ】ここに記載されたシステムにて仮想装置を標準論理装置または別の仮想装置に復元する一方法を示す図。
【図２０Ｄ】ここに記載されたシステムにて仮想装置を標準論理装置または別の仮想装置に復元する一方法を示す図。
【図２０Ｅ】ここに記載されたシステムにて仮想装置を標準論理装置または別の仮想装置に復元する一方法を示す図。
【図２１】ここに記載されたシステムの第１実施形態にて、仮想論理装置を標準論理装置に復元する際に実行されるステップを示すフロー・チャート。
【図２２】ここに記載されたシステムの第２実施形態にて、仮想論理装置を標準論理装置に復元する際に実行されるステップを示すフロー・チャート。
【図２３】ここに記載されたシステムの第３実施形態にて、仮想論理装置をスプリット・ミラー標準論理装置に復元する際に実行されるステップを示すフロー・チャート。
【図２４】ホストとここに記載されたシステムによる記憶装置との間の相互接続を示すフロー・チャート。
【図２５】ここに記載されたシステムにて標準論理装置／仮想装置対を設置するためのホスト・アプリケーションのコールを示すフロー・チャート。
【図２６】ここに記載されたシステムにて仮想装置を標準論理装置に復元するためのホスト・アプリケーションのコールを示すフロー・チャート。
【図２７】ここに記載されたシステムによる仮想装置の不活性化を示すフロー・チャート。
【図２８】ここに記載されたシステムによる不活性化した仮想装置のトラックからのデータ取得を示すフロー・チャート。
【図２９】ここに記載されたシステムにてローリング・バックアップの実行に伴って実行されるステップを示すフロー・チャート。
【図３０】ここに記載されたシステムによるローリング・バックアップからのデータ復元を示すフロー・チャート。
【図１】
2005537530.tif 000002
【図２】
2005537530.tif 000003
【図３】
2005537530.tif 000004
【図４】
2005537530.tif 000005
【図５】
2005537530.tif 000006
【図６】
2005537530.tif 000007
【図７】
2005537530.tif 000008
【図８】
2005537530.tif 000009
【図９】
2005537530.tif 000010
【図１０】
2005537530.tif 000011
【図１１】
2005537530.tif 000012
【図１２】
2005537530.tif 000013
【図１３】
2005537530.tif 000014
【図１４】
2005537530.tif 000015
【図１５】
2005537530.tif 000016
【図１６】
2005537530.tif 000017
【図１７】
2005537530.tif 000018
【図１８】
2005537530.tif 000019
【図１９Ａ】
2005537530.tif 000020
【図１９Ｂ】
2005537530.tif 000021
【図２０Ａ】
2005537530.tif 000022
【図２０Ｂ】
2005537530.tif 000023
【図２０Ｃ】
2005537530.tif 000024
【図２０Ｄ】
2005537530.tif 000025
【図２０Ｅ】
2005537530.tif 000026
【図２１】
2005537530.tif 000027
【図２２】
2005537530.tif 000028
【図２３】
2005537530.tif 000029
【図２４】
2005537530.tif 000030
【図２５】
2005537530.tif 000031
【図２６】
2005537530.tif 000032
【図２７】
2005537530.tif 000033
【図２８】
2005537530.tif 000034
【図２９】
2005537530.tif 000035
【図３０】
2005537530.tif 000036