(57)【要約】第1メモリに記憶したデータの仮想コピーを作成する方法が開示される。第1メモリに記憶したデータの仮想コピーは、該第1メモリに記憶した全データのコピー作成要求に応じ第2メモリに作成される。一実施例で、仮想コピーを作成するステップは、各々複数のマルチビットエントリを有する第1及び第2テーブルをメモリに作成するステップを含む。第1テーブルの各エントリは第1メモリの1のメモリ領域に対応する。第2テーブルの各エントリは第2メモリの1のメモリ領域に対応する。第1テーブルの各第1のビットは第1メモリの対応メモリ領域が有効なデータを含んでいるか否かを示す。第2テーブルの各第2のビットは第1メモリの対応メモリ領域が第1テーブル作成後に変更されたか否かを示す。第2テーブルの各第1のビットは第2メモリの対応メモリ領域が第2テーブル作成後に変更されたか否かを示す。本発明の利用で第1メモリに記憶されたデータの2以上の仮想コピーが一度に作成可能である。更に本発明の利用で仮想コピーの仮想コピーが作成可能である。
2005525633.tif 000002
【特許請求の範囲】
【請求項１】
第1のメモリのメモリ領域から第2のメモリのメモリ領域にデータをコピーするステップと、
前記第2のメモリのメモリ領域に対応する第1のビットをメモリ内に設定するステップであって、該第1のビットは前記第2のメモリのメモリ領域が前記第1のメモリのメモリ領域からコピーされたデータを記憶していることを示すために設定されるものと、
前記第1のメモリのメモリ領域から前記第2のメモリのメモリ領域にデータがコピーされた後、前記第2のメモリのメモリ領域に記憶された該データを変更するステップと、
メモリ内に第2のビットを設定するステップであって、該第2のビットは、前記第2のメモリのメモリ領域に記憶された前記データが前記第1のメモリのメモリ領域からコピーされた後に変更されたことを示すために設定されるものと
を具備する方法。
【請求項２】
前記第1のメモリの第2のメモリ領域から前記第2のメモリの第2のメモリ領域にデータをコピーするステップをさらに具備し、
前記第1のメモリの前記第2のメモリ領域から前記第2のメモリの前記第2のメモリ領域にデータをコピーする前に、前記第2のメモリの前記メモリ領域に記憶されたデータを変更することを特徴とする請求項1に記載の方法。
【請求項３】
前記第1のメモリのすべてのデータを前記第2のメモリにコピーする要求を発するステップをさらに具備し、
前記すべてのデータをコピーする要求が発せられた後であって、前記第1のメモリにおける残りのデータが前記第2のメモリにコピーされる前に、前記第2のメモリの前記メモリ領域に記憶されているデータが変更されることを特徴とする請求項1に記載の方法。
【請求項４】
前記第1のメモリの前記メモリ領域に記憶されているデータを変更するステップをさらに具備し、前記第1のメモリの前記メモリ領域のデータが変更される前に、前記第1のメモリの前記メモリ領域から前記第2のメモリの前記メモリ領域にデータがコピーされることを特徴とする請求項1に記載の方法。
【請求項５】
各々が複数のマルチビットエントリを有する第1のテーブルおよび第2のテーブルをメモリに作成するステップをさらに具備し、
前記第1のメモリおよび前記第2のメモリの各々が複数のメモリ領域を有し、
前記第1のテーブルの各エントリが前記第1のメモリの1つのメモリ領域に対応し、
前記第2のテーブルの各エントリが前記第2のメモリの1つのメモリ領域に対応し、
前記第1のビットおよび前記第2のビットが前記第2のテーブルの１つのエントリを構成し、
前記第2のテーブルが、前記第1のメモリのすべてのデータを前記第2のメモリにコピーする要求に応じて、作成されることを特徴とする請求項1に記載の方法。
【請求項６】
コンピュータシステムによって実行可能な命令を格納するためのコンピュータによって読取り可能なメモリであって、前記コンピュータシステムが該命令を実行することに応じて、
第1のメモリに記憶されたデータの第1の仮想コピーを作成するステップであって、前記第1の仮想コピーが第2のメモリに作成されるものと、
前記第1のメモリに記憶されたデータの第2の仮想コピーを作成するステップであって、前記第2の仮想コピーが第3のメモリに作成されるものであり、前記第2の仮想コピーが前記第1の仮想コピーの作成後に作成されるものと
を具備する方法が実行されることを特徴とするコンピュータ読取り可能なメモリ。
【請求項７】
コンピュータシステムによって実行可能な命令を格納するためのコンピュータによって読取り可能なメモリであって、前記コンピュータシステムが該命令を実行することに応じて、
第1のメモリに記憶されたデータの仮想コピーを作成するステップであって、前記第1のメモリに記憶されたデータの仮想コピーが、前記第1のメモリに記憶されたすべてのデータを前記第2のメモリにコピーする要求に応じて第2のメモリに作成されるもの
を具備する方法が実行されることを特徴とするコンピュータ読取り可能なメモリ。
【請求項８】
前記第1のメモリに記憶されたデータの仮想コピーを作成するステップが、各々が複数のマルチビットエントリを有する第1のテーブルおよび第2のテーブルをメモリに作成するステップを含み、
前記第1のテーブルの各エントリが前記第1のメモリの1つのメモリ領域に対応し、
前記第2のテーブルの各エントリが前記第2のメモリの1つのメモリ領域に対応し、
前記第1のテーブルの各第1のビットが、前記第1のメモリの対応するメモリ領域がデータを記憶しているか否かを示し、
前記第1のテーブルの各第2のビットが、前記第1のメモリの対応するメモリ領域のデータが、前記第1のテーブルが作成された後に変更されたか否かを示し、
前記第2のテーブルの各第1のビットが、前記第2のメモリの対応するメモリ領域が前記第1のメモリからコピーされたデータを記憶しているか否かを示し、
前記第2のテーブルの各第2のビットが、前記第2のメモリの対応するメモリ領域のデータが、前記第2のテーブルが作成された後に変更されたか否かを示す
ことを特徴とする請求項7に記載のコンピュータ読取り可能なメモリ。
【請求項９】
前記方法が、
前記第2のメモリの前記メモリ領域におけるデータを変更する要求に応じて、前記第1のメモリの前記メモリ領域から前記第2のメモリの前記メモリ領域にデータをコピーするステップと、
前記第2のメモリの前記メモリ領域に対応する前記第2のテーブルの１つのエントリの第1のビットを設定するステップであって、該第2のテーブルの1つのエントリの第1のビットが、前記第2のメモリの前記メモリ領域が前記第1のメモリの前記メモリ領域からコピーされたデータを記憶していることを示すために設定されるものと、
前記第1のメモリの前記メモリ領域から前記第2のメモリの前記メモリ領域にデータがコピーされた後、前記第2のメモリの前記メモリ領域に記憶されたデータを変更するステップと、
前記第2のテーブルの前記1つのエントリの第2のビットを設定するステップであって、該第2のビットは、前記第2のメモリの前記メモリ領域に記憶されたデータが前記第1のメモリの前記メモリ領域から前記第2のメモリの前記メモリ領域にコピーされた後に変更されたことを示すために設定されるものと、
をさらに具備したことを特徴とする請求項8に記載のコンピュータ読取り可能なメモリ。
【請求項１０】
前記方法が、
第1のメモリのメモリ領域から第2のメモリのメモリ領域にデータをコピーするステップと、
前記第2のメモリの前記メモリ領域に対応する第1のビットをメモリに設定するステップであって、該第1のビットは前記第2のメモリの前記メモリ領域が前記第1のメモリの前記メモリ領域からコピーされたデータを記憶していることを示すために設定されるものと、
前記第1のメモリの前記メモリ領域から前記第2のメモリの前記メモリ領域にデータがコピーされた後、前記第2のメモリの前記メモリ領域に記憶されたデータを変更するステップと、
メモリに第2のビットを設定するステップであって、該第2のビットは、前記第2のメモリの前記メモリ領域に記憶されたデータが前記第1のメモリの前記メモリ領域からコピーされた後に変更されたことを示すために設定されるものと、
をさらに具備したことを特徴とする請求項7に記載のコンピュータ読取り可能なメモリ。
【請求項１２】
コンピュータシステムと、
前記コンピュータシステムに接続された第1のデータ記憶システムであって、第1のメモリを備えたものと、
前記コンピュータシステムに接続された第2のデータ記憶システムであって、第2のメモリを備えたものと
を具備するシステムであって、
前記コンピュータシステムが、命令を実行するためのプロセッサと、方法を実行するために前記プロセッサによって実行可能な命令を格納したメモリとを備え、
前記方法が、前記第1のメモリに記憶されたデータの仮想コピーを作成するステップであって、該第1のメモリに記憶されたデータの仮想コピーが、前記第1のメモリに記憶されたデータのコピーを作成する要求に応じて、前記第2のメモリに作成されるものを備える
ことを特徴とするシステム。
【請求項１３】
前記第1のメモリのすべてのデータを前記第2のメモリにコピーする要求を発するステップをさらに具備し、
前記第1のメモリから前記第2のメモリにコピーされたデータが、前記第1のメモリのすべてのデータが前記第2のメモリにコピーされる前にアクセス可能または変更可能である
ことを特徴とする請求項1に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
企業では、データを記憶し処理するために大規模のデータ処理システムを使用している。図1は、ホストコンピュータシステム12、トランザクションログ14、主データ記憶システム16および補助データ記憶システム18を備えたデータ処理システム10の一例における関連構成要素を示す。前記主データ記憶システム16および補助データ記憶システム18はデータメモリ22、24をそれぞれ備えており、該データメモリ22、24は、後で詳細に述べるように、主データボリュームおよび補助データボリュームをそれぞれ格納するものである。前記主データボリュームは、前記ホストコンピュータシステム12がデータを読み書きしまたは変更するためのトランザクション(すなわち、命令)に応じてアクセスする"作業"データボリュームまたはデータ内容である。前記バックアップデータボリュームは、前記主データボリュームの設定時間毎のコピー(point-in-time copy)であり、主データ記憶システムが故障したとき、または、該主データ記憶システムに格納されている主データボリュームがオペレータのエラーもしくは正しくないソフトウエアの動作によって論理的に破損または破壊されたときに、使用される。
【０００２】
ホストコンピュータシステム12は、受け取ったアクセストランザクションに応じて、メモリ22の主データボリュームのデータにアクセス(読み書き、または変更)する。コンピュータシステム10が例えば前記主データボリュームの特定のデータファイルにアクセスするトランザクションを受け取った場合、前記ホストコンピュータシステム12は、先ず、前記ファイルのファイル名をメモリ22の1または複数の物理メモリブロックの位置にマッピングするインデックステーブルにアクセスする。前記メモリブロックの位置が分かると、前記ホストコンピュータシステム12は、前記トランザクションに従って、前記メモリブロックにアクセスし、該メモリブロックからデータを読み出しまたは該メモリブロックにデータを書き込む。
【０００３】
図1に示すようなデータ処理システムでは、しばしば、それらの主データボリュームにおけるデータの論理的破損または破壊、または、主データ記憶システムにおける物理的な故障に遭遇する。これらの出来事が発生したとき、主データボリュームに対するアクセスが拒絶される。前記主データボリュームのバックアップが無い場合、そのデータ処理システムに依存する企業は、これらの出来事によって深刻な影響を受ける。
【０００４】
前記主データボリュームにおける論理的な破損、または、主データ記憶システムにおける物理的な故障の後でも動作し続けるために、企業では、しばしば、前記主データボリュームの設定時間毎のバックアップコピー(point-in-time backup copy)を作成する。図1において、メモリ22における主データボリュームのバックアップコピーは、補助データ記憶システム18のメモリ24に作成されることができる。前記主データボリュームのバックアップコピーを作成する処理は、当該技術分野において周知の処理である。前記ホストコンピュータシステム12がバックアップコマンドを発する毎に、メモリ24にバックアップコピーが作成される。トランザクションログ14は、前記主データボリュームのバックアップコピーが作成された後に前記主データボリュームのデータを変更するすべてのトランザクションのコピーを維持する。なお、前記主データボリュームのバックアップコピーが作成される毎に、前記主データボリュームの全内容をメモリ24にコピーしなくてもよい。むしろ、各主ボリュームバックアップ時において、前記メモリ24の対応するメモリブロックの内容とは異なる前記メモリ22の内容のみが更新されればよい。さらに、ホストコンピュータシステム12がメモリ22における前記主データボリュームに対してデータ書込みまたはデータ変更を行う度に、前記主データボリュームがバッアップされなくてもよい。
【０００５】
例えば、主データ記憶システム16が物理的な故障に遭遇した場合、前記補助データ記憶システム18およびそこに作成されたバックアップを使用して、前記ホストコンピュータシステム12に与えられる読出しまたは書込みトランザクションに対応することができる。しかしながら、バックアップコピーが使用可能になる前に、該バックアップコピーは、そのデータ内容が前記主データ記憶システム16が故障する直前の主データボリュームの内容を正確に反映するよう、その作成時から更新されなければならない。更新処理においては、前記バックアップコピー作成時と前記故障発生時との間に発生した前記ログ14におけるすべてのトランザクションは、前記ホストコンピュータシステム12によって、補助データ記憶システム18内のバックアップコピーに適応される。すべてのトランザクションが適用されると、前記バックアップコピーは故障直前の主データボリュームと同一であるはずであり、前記ホストコンピュータシステム12は、前記バックアップコピーをそれがあたかも主データボリュームであるかのように使用して、受け取ったトランザクションの処理を再開することができる。
【０００６】
不運なことに、前記バックアップコピーにおけるデータを更新することによって、前記主データボリュームにおけるオリジルまたは安定した設定時間毎のコピーが損なわれる。前記補助データ記憶システム18が物理的な故障に遭遇した場合、または、例えばオペレータのエラーによって論理的なデータ破損が更新されたバックアップコピーに発生した場合にも、前記ホストコンピュータシステム12は、受け取ったトランザクションを処理することができない。これを回避するためには、好ましくは付加的なデータ格納システム(図示せず)にバックアップコピーデータのコピーを作成することが一般的であった。その後、前記ログ14に格納されたトランザクションを使用して、バックアップコピーのコピーが更新される。前記コピーが更新されると、前記ホストコンピュータシステム12では、前記バックアップコピーのコピーを使用して、新たに受け取ったトランザクションを処理することができる。しかし、不運なことに、前記バックアップコピーの全内容をコピーするためには相当な時間量が必要となることがある。例えばその主データ記憶システム16の故障の後、できる限り速やかにトランザクションの処理を続行しようとする企業にとっては、このような時間遅れは容認できない。
【発明の開示】
【０００７】
第1のメモリに記憶されたデータの仮想コピーを作成するための方法が開示されている。前記第1のメモリに記憶されたデータの仮想コピーは、該第1のメモリに記憶されたすべてのデータのコピーを作成する要求に応じて、第2のメモリに作成される。一実施の形態において、前記仮想コピーを作成するステップは、各々が複数のマルチビットのエントリ(記入データ)を記憶した第1のテーブルおよび第2のテーブルをメモリに作成するステップを含む。前記第1のテーブルの各エントリは、前記第1のメモリの1つのメモリ領域に対応する。前記第2のテーブルの各エントリは、前記第2のメモリの1つのメモリ領域に対応する。前記第1のテーブルの各第1のビットは、前記第1のメモリの対応するメモリ領域が有効なデータを含んでいるか否かを示す。前記第1のテーブルの各第2のビットは、前記第1のメモリの対応するメモリ領域が、前記第1のテーブル作成後に、変更されたか否かを示す。前記第2のテーブルの各第1のビットは、前記第2のメモリの対応するメモリ領域が前記第1のメモリからコピーされたデータを含んでいるか否かを示す。前記第2のテーブルの各第2のビットは、前記第2のメモリの対応するメモリ領域が、前記第2のテーブル作成後に、変更されたか否かを示す。さらに、本発明を利用することによって、前記第1のメモリに記憶されたデータの2つ以上の仮想コピーが、一度に作成可能である。さらに、本発明を利用することによって、前記仮想コピーの仮想コピーが作成可能である。
【発明を実施するための最良の形態】
【０００８】
本発明は、その作成後直ぐにアクセスされることが可能な、データボリュームの仮想コピーを作成するための装置および方法に関する。こうして、該仮想コピーは、前記データボリュームの実際のコピー(実コピー)に変換されることができる。しかしながら、本発明は、前記仮想コピーが実コピーに変換される前に、該仮想コピーに対するアクセスを可能にする。この概念については後述する。
【０００９】
図2は、本発明の一実施の形態を使用したデータ処理システム30の関連構成要素を示す図である。該データ処理システム30は、ホストコンピュータシステム32、および、データ記憶システム34, 36, 38を具備している。前記データ記憶システム34, 36, 38は、それぞれ、データメモリ40, 42, 44を有する。該データメモリ40-44は、ダイナミック型もしくはスタティック型のランダムアクセスメモリ、磁気式もしくは光学式のデータ記憶ディスク、または、磁気式もしくは光学式の記憶テープ等の形態であってよい。なお、前記データメモリ40-44は、これらのハードウエア構成要素に限られるものではない。むしろ、前記データメモリ40-44は、データが記憶され、アクセスされ得る任意のハードウエア、ソフトウエアまたはこれらの組合せの形態をとることができる。前記データメモリは、ソフトウエアの指示の下に動作するいくつかのハードウエア構成要素からなる複合構造体の形態をとってもよい。前記データメモリは、ミラード(mirrored)ハードウエアの形態をとることもできる。
【００１０】
図3は、前記データメモリ40-44の論理構造を示すブロック図である。図3に示すように、前記データメモリ40-44の各々は、データを格納可能な最大n個(nmax)のメモリ領域またはメモリブロックを有する。前記メモリブロックは、図3に示すように連続したものでなくてもよい。前記データメモリ40-44における対応するメモリブロックのサイズは等しい。従って、前記メモリ40のメモリブロック1は、前記メモリ42,44のメモリブロック1とサイズが等しい。また、前記メモリ40の各メモリブロックは、サイズにおいてそれぞれ等しい。代案として、前記メモリ40の各メモリブロックはサイズが異なっていてもよい。
【００１１】
説明のために、前記メモリ40がメモリブロック1から最大n番目のメモリブロックまでの個々のブロック間に分散したデータボリュームを含んでおり、メモリ42はデータを含んでいない、と仮定する。一実施の形態において、ホストコンピュータ32は、要求に応じて、図5のテーブル52、54のような1対の有効性/変更(V/M)テーブルをメモリ(ホストコンピュータ32のメモリまたはメモリ42)に作成することによって、メモリ42に、前記メモリ40に記憶されたデータボリュームの仮想コピーを作成する。前記ホストコンピュータは、テーブル52、54をメモリ40, 42にそれぞれ対応付ける。各前記V/Mテーブル52、54は、各々が2ビットからなる最大n個のエントリ(記入データ)を有する。前記テーブル52の各エントリはメモリ40の1つのメモリブロックに対応し、前記テーブル54の各エントリはメモリ42の1つのメモリブロックに対応する。初期段階において、前記テーブル52の全てのビットおよび前記テーブル54のすべてのmnビットは、論理値0に設定されてよい。また、初期段階において、前記テーブル52のすべてのｖ(n)ビットは、論理値1に設定されてよい。
【００１２】
各前記テーブルの第1ビットをｖ(n)と言い、各前記テーブルの第2ビットをm(n)と言うことにする。各エントリのｖ(n)は、その状態に応じて、対応するメモリの対応するメモリブロックが有効なデータを含んでいるか否かを示す。例えば、論理値1に設定されている場合、テーブル52のｖ(2)はメモリ40のメモリブロック2が有効なデータを含んでいることを示し、論理値0に設定されている場合、テーブル52のｖ(2)はメモリ40のメモリブロック2が有効なデータを含んでいないことを示す。また、各エントリのm(n)は、その状態に応じて、対応するメモリの対応するメモリブロック内のデータが変更されていることを示す。例えば、論理値1に設定されている場合、テーブル54のm(3)はメモリ42のメモリブロック3が変更されたデータを含んでいることを示し、論理値0に設定されている場合、テーブル54のm(3)はメモリ42のメモリブロック3が変更されていないデータを含んでいることを示す。
【００１３】
仮想コピーを作成した後、ホストコンピュータ32は、メモリ40のメモリブロックのデータ内容をメモリ42の対応するメモリブロックにコピーするバックグラウンド処理を行ってよい。こうして、結局、このバックグラウンド処理は、前記データボリュームの内容を完全にメモリ42にコピーし、これにより、仮想コピーを実コピーに変換することになる。しかしながら、前記バックグラウンドコピー処理が開始される前、または、前記バックグラウンドコピー処理が完了させられる前に、前記ホストコンピュータ32は、該ホストコンピュータ32が受け取ったトランザクション要求に応じて、メモリ40内のデータボリュームまたはメモリ42内に記憶されているその仮想コピーに対するデータの読出しまたは書込みを行うことができる。前記ホストコンピュータ32がメモリ40内のボリュームまたはメモリ42内のその仮想コピーに対するデータの読出しまたは書込みを行うことに関する特徴については、図4A _ 図4Cを参照して後述する。
【００１４】
図4Aは、メモリ42内での仮想コピーの作成の後に、メモリ40に記憶された主データボリュームのブロックnに対してデータの書込みまたは変更を行う要求を受け取ることに応じて動作する前記ホストコンピュータシステム32の動作的特徴を示す図である。前記メモリ40のブロックn内の主データボリュームに対してデータを書き込む要求に応じて、前記ホストコンピュータは、仮想コピーのV/Mテーブルにアクセスして、前記メモリ42における仮想コピーの対応するブロックnが有効なデータを含んでいるか否かを判定する。言い換えると、前記ホストコンピュータは、ｖ(n)が1に設定されているか否かを判定する。上述のバックグラウンドコピー処理によって、または、メモリ40またはメモリ42のブロックnに対してデータを書き込みまたは該データを変更するための前の要求に応じて、メモリ40のブロックnの内容が前記メモリ42のブロックnに既にコピーされている場合、前記メモリ42のブロックnは有効なデータを有する(すなわち、ｖ(n)が1に設定されている)ことになる。
【００１５】
ｖ(n)が1に設定されている場合、前記ホストコンピュータシステム32は、ステップ60に示すように、メモリ40のブロックnのデータを変更する。しかしながら、当該仮想コピーについてのｖ(n)が0に設定されていると前記ホストコンピュータシステム32が判定した場合、該システム32は、メモリ40のブロックnの内容を前記メモリ42のブロックnにコピーし、これに応じて前記仮想コピーについてのｖ(n)を設定する。その後、ホストコンピュータシステム32は、当該データボリュームについてのビットm(n)を1に設定する。結局、前記ホストコンピュータシステム32は、メモリ40のブロックnのデータをステップ60に示すように変更する。なお、前記ホストコンピュータシステム32は、メモリ40のブロックnのデータの変更の後に、前記ビットm(n)を1に設定してもよい。しかしながら、説明のために、前記ホストコンピュータ32が対応するメモリブロックにおけるデータ変更の前に変更ビットを設定する、ものと仮定する。しかし、本発明はこれに限定されるものではない。
【００１６】
図4Bは、メモリ42における仮想コピーのブロックnに対してデータの書込みまたは変更を行う要求を受け取ることに応じて動作する前記ホストコンピュータシステム32の動作的特徴を示す図である。より詳しくは、ステップ62において、前記ホストコンピュータシステム32は、前記要求の受取りに応じて、前記仮想コピーについての有効ビットｖ(n)が1であるか否かを判定する。ｖ(n)が1である場合、ホストプロセッサは、ステップ64に示すように、受け取った書込み要求に従って、前記メモリ42のブロックnのデータを変更する。しかしながら、前記仮想コピーのｖ(n)が0に設定されている場合、前記ホストコンピュータは、ステップ66において、先ずメモリ40のブロックnの内容をメモリ42のブロックnにコピーし、仮想コピーについてのｖ(n)を1に設定する。ｖ(n)を1に設定されると、前記ホストコンピュータシステム32は、m(n)を1に設定する。こうして、結局、前記ホストコンピュータは、ステップ64に示すように、前記メモリ42のブロックnのデータを変更する。
【００１７】
図4Cは、メモリ42における仮想コピーのブロックnからデータを読み出す要求を受け取ることに応じて動作する前記ホストコンピュータシステム32の動作的特徴を示す図である。ステップ68において、前記ホストコンピュータシステム32は、メモリ42のブロックnからデータを読み出す要求の受取りに応じて、前記仮想コピーについてのｖ(n)テーブルにアクセスしてｖ(n)が1であるか否かを判定する。ｖ(n)が1である場合、メモリ42のブロックnからデータが読み出される。しかしながら、ｖ(n)が1ではない場合、メモリ40のブロックnからデータが読み出される。
【００１８】
図4A-4Cを参照して説明した上記の方法を使用して、前記メモリ40, 42およびそれらの対応するテーブル52, 54にアクセスする前記ホストコンピュータシステム32またはその他のコンピュータシステムは、メモリ40における当該データボリュームのサイズによっては完了するまでにかなりの時間を必要とする処理である該メモリ40からのすべてのデータをコピーする処理の前に、メモリ42における仮想コピーにアクセスできる。以下にさらに詳しく述べるように、テーブル52, 54のもののような変更ビットm(n)を使用して、ボリュームリストア(volume restore)のような機能を迅速且つ効率的に実行することができる。
【００１９】
上記処理の拡張形態として、前記ホストコンピュータシステム32によって仮想コピーの仮想コピーが作成されてよい。例えば、メモリ40内に格納されたデータボリュームの仮想コピーを作成した後、前記ホストコンピュータシステム32は、メモリ42に格納された仮想コピーの仮想コピーを作成するコマンドを受け取ってもよい。この仮想コピーの仮想コピーは、図2に示すデータ記憶システム38のメモリ44内に作成されてよい。前記仮想コピーの仮想コピーを作成する要求に応じて、前記ホストコンピュータシステム32は、図5に示したものと同様なテーブル56を作成する。初期段階において、前記テーブル56におけるすべてのエントリは論理値0に設定されている。テーブル52, 54と同様に、テーブル56の各エントリの第1ビットをｖ(n)と言い、第2ビットをm(n)と言うことにする。また、テーブル52, 54と同様に、1に設定されているテーブル56のｖ(n)は、メモリ44のブロックnがメモリ42の対応するブロックnからのデータの有効なコピーを含んでいることを示す。さらに、テーブル52, 54と同様に、1に設定されているテーブル56のm(n)は、メモリ44のブロックnに格納されているデータが変更されていることを示す。
【００２０】
前記仮想コピーの仮想コピーに対するホストコンピュータシステム32のアクセスは、図4A-図4Cを参照して上述したものと同様である。さらに、ホストコンピュータシステム32は、作成された仮想コピーの仮想コピーに対して、その作成直後に、アクセスしてこれを変更できる。例えば、メモリ44における前記仮想コピーの仮想コピーの作成直後に、ホストコンピュータシステム42は、メモリ44のブロックnに含まれているデータにアクセスしてこれを変更する要求を受け取ることができる。前記ホストコンピュータは、このアクセス要求に応じて、先ずテーブル56にアクセスしてｖ(n)が1に設定されているか否かを判定する。ｖ(n)が論理値0に設定されている場合、ブロックnが有効なデータを含んでいる場合、該ブロックnのデータ内容がメモリ42からメモリ44にコピーされる。ブロックnが有効なデータを含んでいない(すなわち、メモリ42のブロックnについてのｖ(n)が0に設定されている)場合、データがメモリ40のブロックnにコピーされる。データがメモリ40のブロックnにコピーされると、前記ホストコンピュータシステムは、ｖ(n)を論理値1に設定する。その後、ホストコンピュータシステム32は、m(n)を論理値1に設定し、メモリ44のブロックnにコピーされたデータを変更する。図2に示すホストコンピュータシステム32は、該システム32によって作成されたコピーのうちのいずれのコピーのデータにアクセスできる。
【００２１】
図6は、図2のデータ処理システム30に付加的なデータ記憶装置70-74を設けたシステムを示す。前記データ記憶装置70-74は、それぞれ、メモリ80-84を有し、各前記メモリは、ホストコンピュータ32によって作成されたデータの仮想コピーを格納できる。ホストコンピュータ32、または、他のコンピュータシステム(図示せず)は、各仮想コピーにアクセス可能である。
【００２２】
メモリ42-44および70-74に記憶された仮想コピーは、相互に関連付けられる。たとえば、メモリ80は、メモリ44のデータボリュームの仮想コピーを含んでいる。ある意味において、メモリ80の仮想コピーは、メモリ44の親データの子供である。いずれの仮想コピーもいわゆる親/子関係を有することになり、仮想コピーは、コピーされる親データボリュームの子供である。メモリ44は、メモリ42のデータボリュームの仮想コピーを記憶している。メモリ42は、メモリ40のデータボリームの仮想コピーを記憶している。メモリ84は、メモリ82のデータボリームの仮想コピーを記憶している。最後に、メモリ82は、メモリ40のデータボリームの仮想コピーを記憶している。前記メモリ42, 82の仮想コピーは、メモリ40のデータボリームの子供である。
【００２３】
前記メモリ42-44, 80に記憶されている仮想コピーは、ホストコンピータ32によって順次作成され、メモリ80の仮想コピーは、メモリ44の仮想コピーの作成後に作成される。同様に、前記メモ84に記憶されている仮想コピーは、メモリ82の仮想コピーの作成後に作成される。メモリ82, 84の仮想コピーは、メモリ80の仮想コピーの作成前または後に作成されてよい。図示していないが、ホストコンピータ32は、メモリ80-84における各仮想コピーの作成と共に、図5に示すようなV/MテーブルのようなV/Mテーブルを作成する。メモリ42, 82に対応づけられるV/Mテーブルは、該メモリ42, 82に記憶された２つの子仮想コピーをメモリ40に記憶された1つの親データボリュームに対応づける。
【００２４】
図6は多数の仮想コピーが作成可能であることを示すものであり、これらの仮想コピーの各々は、それらの作成後直ぐにホストコンピータ32(または、図6に図示されていないその他のコンピュータシステム)によってアクセス可能である。図6および図7は、図6のデータボリュームのいずれかにアクセスするステップを示す。
【００２５】
図7は、ホストコンピータ32がメモリ40に記憶されたデータボリューム、または、図6のメモリに記憶された仮想コピーのデータを変更する要求の受け取る際のホストコンピータ32の動作的な特徴を示すフローチャートである。説明を容易にするために、ボリューム(x)はメモリxのデータボリュームを示すものとし、ここで、xは前記メモリ40-44, 80-84のいずれかである。さらに、ｖx(n)およびmx(n)は、メモリxにおけるブロックnの有効性ビットおよび変更ビットをそれぞれ示すものとし、ここで、xは前記メモリ40-44, 80-84のいずれかである。
【００２６】
ステップ90において、前記ホストコンピータは、図6のメモリの1つxに記憶されたデータボリューム(x)におけるメモリブロックnのデータを変更する要求を受け取る。これに応じて、前記ホストコンピータ32は、ボリューム(x)についてのV/Mxテーブルにアクセスして、ボリューム(x)のブロックnに対応する有効性ビットｖx(n)が1に設定されているかを判定する。ボリューム(x)のブロックnが有効なコピーを有していない場合(すなわち、ｖx(n)が0に設定されている場合)、前記ホストコンピータ32は、ボリューム(x)の親データボリュームからボリューム(x)のブロックnにデータをコピーするためにステップ94-104を行う。説明を容易にするために、ボリューム(x-1)をボリューム(x)の親データボリュームを示すものとする。
【００２７】
ステップ94-104において、前記ホストコンピータ32は、要求されているデータの有効なコピーが見つかるまで、前記ボリューム(x)が従属する関連データボリュームについてのV/Mテーブルに順次アクセスする。ステップ94において、前記ホストコンピータは、ダミー変数aをxに、つまり、ボリューム(x)を記憶するメモリを特定する値に設定する。その後、ステップ96において、前記ホストコンピータシステムは、前記変数の値を1デクリメントする。ボリューム(a)は、aが減じられた後のボリューム(x)の親を示す。ステップ100において、前記ホストコンピータシステムは、ボリューム(a)に対応するV/Maテーブルが、ボリューム(a)のブロックnに対応づけられた有効性ビットｖaが1に設定されているか否かを示すもの、か否かを示す。前記有効性ビットｖaが1に設定されている場合、ステップ102に示すように、前記ホストコンピータシステムは、ボリューム(a)のブロックnの内容をボリューム(x)のブロックnにコピーする。前記有効性ビットｖaが0に設定されており、従って、ボリューム(a)がそのブロックnにデータnの有効なコピーを有さない場合、そのブロックnに有効なデータを含む関連ボリューム(例えばボリューム(a-1)、ボリューム(a-2)等)が見つかるまで、ステップ96およびステップ100が繰り返される。
【００２８】
関連ボリュームからのメモリブロックnの内容がステップ102においてボリューム(x)のブロックnにコピーされると、ホストコンピータ32は、ステップ104に示すように、ボリューム(x)の有効性ビットｖxを1に設定する。その後、または、ステップ92においてホストコンピータ32によってボリューム(x)の有効性ビットｖxが1に設定されていることが確認されるのに応じて、前記ホストコンピータ32は、ステップ106において、子データボリューム、すなわち、データボリューム(x+1)がボリューム(x)の後に作成されたか否かを判定する。ボリューム(x+1)が作成されたと前記ホストコンピータ32が判定した場合、該ホストコンピータ32は、ボリューム(x+1)のブロックnが有効データを含んでいるか否かを判定しなければならない。ステップ110において、ホストコンピータ32は、データボリューム(x+1)についてのV/Mx+1テーブルにアクセスし、その有効性ビットｖx+1(n)の状態をチェックする。ステップ110によって前記有効性ビットが1に設定されていると判定された場合、前記ホストコンピータ32は、ステップ112に進み、ボリューム(x)の変更ビットmx(n)を1に設定し、ボリューム(x)のブロックnのデータを変更する。一方、ステップ110において、ボリューム(x+1)の有効性ビットｖx+1(n)が0に設定されているとホストコンピータ32が判定すると、該ホストコンピータは、ステップ116に示すようにボリューム(x)のブロックnの内容をボリューム(x+1)のメモリブロックnにコピーする。その後、前記ホストコンピータ32は、ボリューム(x+1)に対応するV/Mテーブルの有効性ビットｖx+1(n)を1に設定し、ステップ112に示すようにボリューム(x)のブロックnのデータを変更する。
【００２９】
前記ホストコンピータ32は、図6に示したメモリにおけるデータボリュームのいずれかのデータを読み出すよう構成されている。図8は、トランザクション要求の受取りに応じてボリュームからデータを読み出す際の前記ホストコンピータ32の動作的特徴を示すフローチャートである。より詳しくは、ステップ120に示すように、ホストコンピータ32は、図6のボリュームのうちの1つ(ボリューム(x))のメモリブロックのデータを読み出す要求を受け取る。これに応じて、前記ホストコンピータ32は、ボリューム(x)に関するV/Mxテーブルにアクセスして、有効性ビットｖx(n)が1に設定されているかを判定する。有効性ビットｖx(n)が1に設定されている場合、前記ホストコンピータは、ボリューム(x)のメモリブロックnからデータを読み出し、当該処理が終了する。
【００３０】
一方、ボリューム(x)の有効性ビットｖx(n)が0に設定されている場合、前記ボリューム(x)が従属するボリュームのうちの１つのブロックnからデータを読み出す。そして、ステップ124では、前記ホストコンピータ32は、ダミー変数aをxに設定し、る。その後、ステップ126において、前記変数の値を1デクリメントする。ステップ130において、前記ホストコンピータ32は、ボリューム(a)の有効性ビットｖaをチェックする。この有効性ビットが1に設定されている場合、前記ボリューム(a)は要求されているデータのコピーを含んでいることになる。前記有効性ビットが0に設定されている場合、そのブロックnに有効なデータのコピーを含む関連ボリューム(例えばボリューム(a-1)、ボリューム(a-2)等)が見つかるまで、ステップ126-130が繰り返される。前記データが見つかった場合、前記ホストコンピータ32は、ステップ132において、そのブロックnからデータを読み出し、そして、処理が終了する。
【００３１】
前記背景技術の部分で述べたように、主データ記憶装置の故障またはそこに記憶されている主データボリュームの論理的な破損は、迅速に解決されなければならない問題点である。図9Aは、図2のデータ処理システム30および該システムに付加されたトランザクションログ140を示す。図9Aにおいて、メモリ40は、受け取った読み、書きトランザクション要求に応じて、ホストコンピータ32によってアクセス可能な主データボリュームを記憶する。メモリ42は、メモリ40の前記主データボリュームのバックアップボリュームを記憶する。前記バックアップボリュームは、バックアップコマンドが開始される毎に、ホストコンピータ32によって作成される。トランザクションログ140は、メモリ42でのバックアップの後に前記主データボリュームにおけるデータを変更するすべてのトランザクション要求のコピーを記憶する。
【００３２】
従来の技術においては、主データ記憶装置の故障またはそこに記憶されているデータの破損から復旧するための好ましい方法は、先ずバックアップデータボリュームの内容の実コピーを作成することを含むものであった。メモリ42に記憶されたバックアップボリュームは、例えばメモリ44に完全にコピーされることができる。その後、メモリ44の実コピーは、トランザクションログ140内に記録されたトランザクションを利用して更新されることができる。更新されると、メモリ44に記憶されたボリュームは、主データ記憶装置34が故障する直前またはその中に含まれるデータが破損する直前の時点における、メモリ40の主ボリュームを正確に映し出すものである。その後、ホストコンピータ32は、メモリ44における更新されたボリュームを使用してトランザクション処理を再開することができる。上述の如く、主データボリュームの故障または破損に対応するためのこの処理は、前記データ処理システムを使用する企業によるトランザクション処理の再開を実質的に遅延させる。
【００３３】
上述の方法を使用して、データ処理システム30は、より短時間内に、記憶システム34の故障または主データボリュームの破損から復旧可能である。説明のために、図9Aのホストコンピータ32は、上述の方法を使用して、主データ記憶システム34の故障またはそこに記憶されたデータの破損の直後に、メモリ42に記憶されたバックアップの仮想コピーを作成する、ものと仮定する。
【００３４】
その後、前記ホストコンピータシステム32は、トランザクションログ140に記憶されたトランザクションを、図4Bを参照して上述した方法を使用してメモリ44に作成された仮想コピーに適用する。後で理解されるように、メモリ42のあるメモリブロックからのデータは、メモリ44のデータがログ140のトランザクションによって変更され得るようになる前に、先ず。メモリ44における対応するブロックにコピーされなければならない。ログ140からのすべてのトランザクションが適用されると、メモリ44に記憶されたデータの仮想コピーは、あたかもその内容が記憶システム34が故障しまたはそこに記憶されたデータが破損した時点でのメモリ40の内容を正確に映し出しているかのように見なすことができる。そして、前記ホストコンピータシステム32は、記憶システム34の故障またはそこに記憶された主データボリュームの破損の後に受け取ったトランザクションに従って、メモリ40にアクセスできる。ホストコンピータシステム32は、メモリ42に記憶されたバッアップボリュームの全内容がメモリ44に実際にコピーされるのを待つ必要はない。従って、従来の技術とは対照的に、ホストコンピータシステム32は、主データ記憶システム34の故障またはそこに記憶されたデータの破損の直後に、(図4Bおよび4Cを参照して説明した方法を使用して)トランザクションの処理を再開することができる。
【００３５】
メモリ44の仮想コピーは、メモリ40に記憶された主ボリュームの内容を回復させるために使用されることができる。ここで、ホストコンピータシステム32が、データ記憶システム34の物理的な故障に応じて、メモリ44に仮想コピーを作成する、と仮定する。上述の如く、ログ140に記録されたすべてのトランザクションに従って更新されるバックアップの仮想コピーがメモリ44に作成可能である。しかしながら、前記ホストコンピータは、上述のように物理的な故障の後にホストコンピータシステム32によって受け取られたトランザクションに従ってメモリ40の仮想コピーのデータを変更する代わりに、更新された仮想コピーの仮想コピーを作成する。図9Bは、付加的なデータ処理システム70をさらに備えた図9Aのデータ処理システムを示すものである。図9Bにおいて、前記仮想コピーの仮想コピーは、上述の方法に従って、データ処理システム70のメモリ80に作成されることができる。ホストコンピータシステム32は、メモリ80の仮想コピーについてのV/Mテーブルを作成する。その後、ホストコンピータシステム32は、データ記憶システム34の故障後に受け取ったトランザクションに従って、メモリ80の仮想コピーのデータを変更する。前記ホストコンピータは、図7で説明した方法を使用してメモリ80のデータを変更する。その結果、新たに作成されたV/Mテーブルの数個の変更ビットm(n)が1に設定されることになる。
【００３６】
さらに、結局、前記ホストコンピータシステム32が該記憶システム34に対するアクセスを再開できるよう記憶システム34が修復される、と仮定する。このように修復されると、前記メモリ40は、迅速にメモリ80の内容に回復されることができる。この回復処理は、ホストコンピータ32がメモリ40のメモリブロックの内容を、対応するm(n)が変更ビット1に設定されたメモリ80の対応するメモリブロックの内容と置換することを含む。例えば、メモリ80における仮想コピー作成以後、メモリ80のメモリブロック3, 4, 9のデータのみが変更された、と仮定する。このような仮定において、前記新たに作成されたV/Mテーブルの変更ビットm(3), m(4), m(9)のみが1に設定される。前記メモリ40をメモリ80の内容に回復させるためには、前記ホストコンピータ32は、前記メモリ80のメモリブロック3, 4, 9の内容をメモリ40のメモリブロック3, 4, 9にそれぞれコピーするたけでよい。この方法を使用して、前記メモリ40の主データボリュームは、前記記憶システム34が故障から復旧した後に回復されることができる。
【００３７】
図9Bおよびそれに関連する記載は、１つの主データボリュームが仮想データボリュームの内容に回復させることができる１つの方法を説明するものである。この方法は、V/Mテーブルの変更ビットを利用する。一般的に、V/Mテーブルの変更ビットは、１つのボリュームが迅速に他のボリュームの内容に回復されることを可能にする。図11は、ボリューム(x)をボリューム(z)の内容に回復させる際の前記ホストコンピータ32の動作的特徴を示すフローチャートである。説明のために、ボリューム(x)およびボリューム(z)は、図6のメモリ40-44および80-84内に記憶されたデータボリュームのうちの2つのデータボリュームであるとする。図12Aは、ホストコンピータシステム32がボリューム(x)をボリューム(z)の内容に回復させる要求を受け取った時点における、前記ボリューム(x)およびボリューム(z)にそれぞれ対応するV/Mテーブル120, 122を示すものである。一実施の形態において、前記ホストコンピータシステム32は、ボリューム(x)をボリューム(z)の内容に回復させるコマンドを開始した後直ぐにボリューム(x)にアクセスすることができる。この目的のために、前記回復コマンドが開始された後、ホストコンピータシステム32は、ボリューム(x)に対応するV/Mテーブルに第3のコラムを追加する。図12Bは、第3のコラムrx(n)が付加されたテーブル120を示している。rx(n)は、1に設定されている場合、ボリューム(x)の対応するメモリブロックnがボリューム(z)のメモリブロックnの内容に回復させられた、ことを示す。全データボリューム(x)が回復されると、前記コラムrx(n)はテーブル120から除去されることができる。しかしながら、以下の説明で明らかになるように、前記回復コマンドがコンピータシステム32によって開始された後、前記コラムrx(n)はボリューム(x)に対する即時のアクセスを可能にする。
【００３８】
図11において、先ず、ステップ150において、前記ホストコンピータシステム32はnを0に設定する。ステップ152においては、前記ホストコンピータシステムは、nの現在値がｎmaxであるか否かを判定する。現在値がｎmaxである場合、前記回復処理が完了したことになる。しかしながら、当初はnの現在値が0であるので、処理はステップ152に進み、該ステップにおいて、前記ホストコンピータシステム32はnを1インクリメントする。ステップ154では、前記ホストコンピータシステム32は、ｒx(n)の状態をチェックし、該ｒx(n)が1に設定されているのかまたは0に設定されているのかを判定する。ｒx(n)が1に設定されている場合、ボリューム(x)の対応するメモリブロックnが回復させられていることになり、処理は次のメモリブロックに進む。ｒx(n)が0に設定されている場合、ブロックnの内容が未だ回復されていないことになり、処理はステップ156に進み、該ステップ156において、ボリューム(z)についての有効性ビットｖz(n)が1に設定されているのかまたは0に設定されているのかを判定する。ボリューム(z)のｖz(n)が1に設定されている場合、処理はステップ160に進み、該ステップ160において、ボリューム(z)のブロックnの変更ビットｖz(n)が判定される。ボリューム(z)のブロックnのデータが変更されている場合、ｍz(n)が1に設定され、処理はステップ162に進み、該ステップ162において、ボリューム(z)がボリューム(x)の仮想コピーであるか否かが判定される。ボリューム(z)がボリューム(x)の仮想コピーではない場合、ボリューム(z)のブロックnは有効で変更されたデータを含むので、ステップ166においてボリューム(z)のブロックnの内容がボリューム(x)のブロックnにコピーされ、ｒx(n)ビットが、ボリューム(x)のブロックn の内容が回復させられた旨示す1に設定される。その後、処理はステップ152から繰り返される。
【００３９】
しかしながら、ステップ162において、ボリューム(z)がボリューム(x)の仮想コピーであると前記ホストコンピータシステムが判定した場合、前記ホストコンピータシステムは、ステップ164において、ボリューム(z)のブロックnのデータが変更されたか否かを判定する。ボリューム(z)のブロックnのデータが変更されていない場合、ボリューム(x)およびボリューム(z)のブロックnの内容が同一ということになり、コピーを行う必要がない。しかしながら、ステップ164においてｍx(n)が1に設定されている場合、ボリューム(x)およびボリューム(z)のブロックnの内容が異なることになるので、ボリューム(z)のブロックnのデータ内容がボリューム(x)のブロックnにコピーされる必要がある。
【００４０】
ステップ156において、ホストコンピータシステム32が、前記処理中に、ボリューム(z)のブロックnが有効なデータを含まない(すなわち、ｖz(n)が0に設定されている)と判定した場合、処理はステップ172に進み、該ステップ172において、ホストコンピータシステム32はダミー変数aをボリューム(z)が含まれるメモリを示すzに設定する。その後、ホストコンピータシステム32は、ステップ174においてダミー変数aを1デクリメントし、ステップ176においてボリューム(a)のｖa(n)の状態をチェックする。この時点において、ボリューム(a)はボリューム(z)の親である。ボリューム(a)についてのｖa(n)が0に設定されている場合、ボリューム(a)のブロックnは有効なデータを含まないことになり、ホストコンピータ32は、関連ボリュームのブロックnにおける有効データを見つけるまで、ステップ174およびステップ176を繰り返す。
【００４１】
関連ボリュームのブロックnに有効データを見つかると、処理はステップ182に進み、該ステップ182において、ホストコンピータシステム32はボリューム(a)がボリューム(x)の仮想コピーであるか否かを判定する。ボリューム(a)がボリューム(x)の仮想コピーではない場合、ボリューム(a)がブロックnに有効で変更されたデータを含むので、ステップ184において、ボリューム(a)のブロックnの内容がボリューム(x)のブロックnにコピーされ、そして、ステップ170において、前記ホストコンピータシステム32は、ボリューム(x)についてのｒx(n)を1に設定する。しかしながら、ボリューム(a)がボリューム(x)の仮想コピーである場合、ステップ184において、前記ホストコンピータシステム32は、ボリューム(x)のブロックnのデータが変更されているか否かを判定する。そうであれば、ボリューム(a)およびボリューム(x)のブロックnの内容が異なることになり、従って、ステップ186において、ボリューム(a)のブロックnのデータをボリューム(x)のブロックnにコピーする必要がある。結局、ステップ170において、前記ホストコンピータシステム32は、ボリューム(x)についてのｒx(n)を1に設定し、処理はステップ152に進み、該ステップ152において、ボリューム(x)のすべてのブロックが回復させられたか否かを判定する。
【００４２】
先に述べたように、前記ホストコンピータシステム32は、回復コマンドの開始後直ぐであって、該回復コマンドの完了の前に、回復させられたボリューム(x)にアクセスすることができる。図13は、ボリューム(x)をボリューム(z)の内容に回復させるための回復コマンドが開始された後であって、回復コマンドの完了前に該ボリューム(x)にデータを書き込む動作上の特徴を示すものである。より詳しくは、ステップ190において、ホストコンピータシステム32は、ボリューム(x)のブロック(n)に対応する回復ビットｒx(n)が1に設定されているか否かを判定する。これは、ボリューム(x)に対応するテーブルに付加的なコラムｒx(n)が存在することを推定するものである。コラムｒx(n)が存在しない場合、ボリューム(x)は、ホストコンピータシステム32がボリューム(x)のブロックnにデータを書き込む要求を受け取ったときの回復対象ではないことになる。ステップ190においてｒx(n)が1であると判定された場合、処理はステップ192に進み、ホストコンピータシステム32は、該システム32が受け取った書込みコマンドに従ってボリューム(x)のブロックnにデータを書き込む。ボリューム(x)のブロックnは既に回復させられているので、ステップ192がこの時点で実行される。前記書込みコマンドを実行する前にブロックnが回復させられない場合、ボリューム(x)のブロックnのデータは破損する恐れがある。
【００４３】
ステップ190において、ｒx(n)が1に設定されておらず、従って、ボリューム(x)のブロックnが回復させられていないと判定された場合、処理はステップ194に進み、該ステップ194において、ボリューム(z)のブロックnの有効性がチェックされる。ボリューム(z)のブロックnが有効なデータを含んでいる場合、処理はステップ196に進み、該ステップ196において、ホストコンピータシステム32は、ボリューム(z)のブロックnが変更されているか否かを判定する。変更されている場合、ボリューム(z)のブロックnとボリューム(x)のブロックnとに含まれるデータの間に差違があることになる。その結果、前記ホストコンピータシステムは、ステップ200において、ボリューム(z)のブロックnのデータをボリューム(x)のブロックnにコピーする。要するに、ホストコンピータシステム32は、ステップ200において、ボリューム(x)のブロックnの回復処理を行う。回復されると、ホストコンピータシステム32は、ステップ192において、該システム32が受け取ったコマンドに従って、ボリューム(x)のブロックnにデータを書き込むことができる。しかしながら、ステップ196においてボリューム(z)のブロックnが変更されていないと判定された場合、前記ホストコンピータは、ステップ202において、ボリューム(z)がボリューム(x)の仮想コピーであるか否かを判定する。ここでも、ボリューム(z)がボリューム(x)の仮想コピーではない場合、ホストコンピータ32は、ステップ200においてその内容をコピーし、しかる後、ステップ192においてボリューム(x)のブロックnにデータを書き込む。ステップ222においてボリューム(z)がボリューム(x)の仮想コピーではないと判定された場合、ホストコンピータ32は、ステップ204において、ボリューム(x)のブロックnのデータが変更されているか否かを判定する。ボリューム(x)のブロックnのデータ変更されている場合、ボリューム(x)のブロックnのデータとボリューム(z)のブロックnのデータの間に差違があることになる。従って、ボリューム(z)の内容がボリューム(x)のブロックnにコピーされなければならない。ステップ200では、ホストコンピータシステム32が受け取った書込みコマンドに従ってデータがボリューム(x)のブロックnに書き込まれる。
【００４４】
ステップ194において、ボリューム(z)のブロックnが有効なデータを含んでいないと前記ホストコンピータシステムが判定した場合、該ホストコンピータシステム32は、必要な場合には、データがコピーされ得るコピー元の関連ボリュームを見つけなければならない。この目的のために、ホストコンピータシステム32は、ステップ206において、ダミー変数aをzに設定する。そして、前記ホストコンピータは、変数を1デクリメントし、ボリューム(a)に対応するV/Mテーブルにアクセスし、ステップ212において、ボリューム(a)のブロックnが有効なデータを含んでいるか否かを判定する。ボリューム(a)がブロックnに有効なデータのコピーを含んでいる場合、前記ホストコンピータは、ステップ214において、前記データが変更されているか否かを判定する。ステップ214において前記データが変更されていると判定された場合、ブロックnとボリューム(x)とが内容において異なる場合、ステップ216においてボリューム(a)のブロックnのデータ内容がボリューム(x)のブロックnにコピーされる必要がある。その後、ボリューム(x)のブロックnが回復されると、ホストコンピータシステム32は、該ボリューム(x)のブロックnにデータを書き込むことができる。ステップ214において、ボリューム(a)のブロックnのデータが変更されていないとホストコンピータシステム32が判定した場合、該ホストコンピータは、ステップ220において、ボリューム(a)がボリューム(x)のブロックnの仮想コピーであるか否かを判定する。そうでない場合、ボリューム(a)のブロックnからボリューム(x)のブロックnにデータがコピーされる。一方、ボリューム(a)がボリューム(x)のブロックnの仮想コピーである場合、前記ホストコンピータは、ステップ222において、ボリューム(x)のブロックnのデータが変更されているか否かを判定する。そうである場合、ボリューム(x)のブロックnのデータ内容がボリューム(a)のブロックnのデータ内容と異なることになり、前記ホストコンピータ32は、ステップ216において、ボリューム(a)のブロックnの内容をボリューム(x)のブロックnにコピーする。一方、ボリューム(x)のブロックnのデータが変更されていない場合、ボリューム(a)とボリューム(x)とではブロックnの内容が同じであるので、ステップ192における書込み処理の前にボリューム(x)の回復処理を行う必要がない。
【００４５】
上述の如く、前記ホストコンピータ32は、ボリューム(x)の回復処理が開始された後であって、ボリューム(x)の全体がボリューム(z)の内容に回復される前に、ブロックnのデータを読み出す要求を実行できる。図14は、ボリューム(x)をボリューム(z)の内容に回復させるコマンドの開始後に該ボリューム(x)のブロックnからデータを読み出す一実施の形態の動作的特徴を示すフローチャートである。ホストコンピータシステム32は、先ずステップ230において、ボリューム(x)についてのｒx(n)が1に設定されているか否か、すなわち、前記読出しコマンドに係るメモリブロックが既にボリューム(z)のブロックnの内容に回復させられているか否かを判定する。ボリューム(x)のブロックnの回復がなされている場合、前記ホストコンピータは、ステップ232において、前記読出しコマンドを実行し、ボリューム(x)のブロックnからデータを読み出す。一方、ステップ230においてボリューム(x)のブロックnが未だ回復されていない場合、ホストコンピータ32は、ステップ234において、ボリューム(z)のブロックnが有効なデータを含んでいるか否かを判定する。そうである場合、前記ホストコンピータは、ステップ236において、ボリューム(z)のブロックnからデータを読み出す。一方、ステップ234においてボリューム(z)のブロックnが有効なデータを含んでいないと判定した場合、前記ホストコンピータは、ステップ240において、zを1デクリメントし、そのブロックnに有効なデータを含む中間ボリュームが見つかるまでステップ234を繰り返す。
【００４６】
以上本発明のいくつかの実施の形態について説明したが、本発明はここに開示された特定の形態に限定されるものではなく、添付請求項に定義されている本発明の精神に包含される変更例および均等物をも含むものである。
【図面の簡単な説明】
【００４７】
【図１】主データボリュームおよび補助データボリュームを記憶するための記憶システムを使用したデータ処理システムを示す図。
【図２】本発明の一実施の形態を使用したデータ処理システムを示す図。
【図３】図2に示した記憶システムのメモリ構造を示すブロック図。
【図４Ａ】図3のメモリ40にデータを書き込む動作的特徴を示すフローチャート図。
【図４Ｂ】図3のメモリ42にデータを書き込む動作的特徴を示すフローチャート図。
【図４Ｃ】図3のメモリ42にデータを読み込む動作的特徴を示すフローチャート図
【図５】本発明の一実施の形態に従って作成された検証/変更テーブルを示すブロック図。
【図６】本発明の一実施の形態を使用したデータ処理システムを示す図。
【図７】図6のメモリのうちの1つのメモリのデータを変更する動作的特徴を示すフローチャート図。
【図８】図6のメモリのうちの1つメモリからにデータを読み出す動作的特徴を示すフローチャート図。
【図９Ａ】本発明の一実施の形態を使用したデータ処理システムを示すブロック図。
【図９Ｂ】付加的なデータ記憶システムを備えた図9Aのデータ処理システムを示す図。
【図１１】図6の1つのメモリのボリュームを図6の他のメモリのボリュームの内容に回復させる動作的特徴を示すフローチャート図。
【図１２Ａ】照合/変更テーブルを示すブロック図。
【図１２Ｂ】変更/照合テーブルを示すブロック図。
【図１３】図6のボリュームにデータを書き込む動作的特徴を示すフローチャート図。
【図１４】図6のメモリからにデータを読み出す動作的特徴を示すフローチャート図。
【図１】
2005525633.tif 000003
【図２】
2005525633.tif 000004
【図３】
2005525633.tif 000005
【図４Ａ】
2005525633.tif 000006
【図４Ｂ】
2005525633.tif 000007
【図４Ｃ】
2005525633.tif 000008
【図５】
2005525633.tif 000009
【図６】
2005525633.tif 000010
【図７】
2005525633.tif 000011
【図８】
2005525633.tif 000012
【図９Ａ】
2005525633.tif 000013
【図９Ｂ】
2005525633.tif 000014
【図１１】
2005525633.tif 000015
【図１２Ａ】
2005525633.tif 000016
【図１２Ｂ】
2005525633.tif 000017
【図１３】
2005525633.tif 000018
【図１４】
2005525633.tif 000019
【国際調査報告】
2005525633.tif 000020
2005525633.tif 000021