(57)【特許請求の範囲】
【請求項１】
マルチターゲット・アーキテクチャにおいてソースと空間効率の良い（ＳＥ）ターゲットとの間の関係を削除するための方法であって、前記マルチターゲット・アーキテクチャは一つのソースと当該ソースにマッピングされた複数のＳＥターゲットとを含み、コンピュータが、
前記ソースと一つのＳＥターゲットとの間のポイント・イン・タイム・コピー関係をマッピングする第１の関係を前記マルチターゲット・アーキテクチャから見つけるステップと、
前記第１の関係に関連付けられた空間効率の良い（ＳＥ）ターゲットを前記マルチターゲット・アーキテクチャから見つけるステップであって、前記ＳＥターゲットの論理トラック内のデータはリポジトリ内に物理的に記憶されている、前記見つけるステップと、
前記ソースとポイント・イン・タイム・コピー関係にあり且つ前記ＳＥターゲットと異なるポイント・イン・タイムでの兄弟ＳＥターゲットを前記マルチターゲット・アーキテクチャから見つけるステップであって、前記兄弟ＳＥターゲットが前記データのコピーにより前記ＳＥターゲットから当該データを継承し、前記兄弟ＳＥターゲットは、前記ＳＥターゲットの最も近い年長の兄弟（ＣＯＳ）ＳＥターゲットであり、前記最も近い年長の兄弟ＳＥターゲットは、前記ＳＥターゲットの直前にマッピングされたターゲットである、前記見つけるステップと、
前記ＳＥターゲットの論理トラック内のデータを前記リポジトリの物理トラック内のデータにマッピングするマッピング構造を、前記リポジトリの前記物理トラック内の前記データを前記兄弟ＳＥターゲットの前記論理トラックにマッピングするように修正するステップであって、前記リポジトリは前記複数のＳＥターゲットのデータを物理的に記憶する、前記修正するステップと、
前記第１の関係を前記マルチターゲット・アーキテクチャから削除するステップであって、当該削除によって前記ソースと前記ＳＥターゲットとの間のポイント・イン・タイム・コピー関係が終了する、前記削除するステップと
を実行することを含む、前記方法。
【請求項２】
前記マッピング構造を修正するステップが、
（１）前記兄弟ＳＥターゲット内に論理的に記憶されておらず且つＳＥターゲット内に論理的に記憶されたデータを見つけるステップと、
（２）前記ＳＥターゲット内に論理的に記憶されているが前記兄弟ＳＥターゲット内に論理的に記憶されていないデータが前記兄弟ＳＥターゲット内に論理的に記憶されるように、前記マッピング構造を修正するステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
マルチターゲット・アーキテクチャにおいてソースと空間効率の良い（ＳＥ）ターゲットとの間の関係を削除するための装置であって、前記マルチターゲット・アーキテクチャは一つのソースと当該ソースにマッピングされた複数のＳＥターゲットとを含み、前記装置が、
前記ソースと一つのＳＥターゲットとの間のポイント・イン・タイム・コピー関係をマッピングする第１の関係を前記マルチターゲット・アーキテクチャから見つけるための第１の構成要素と、
前記第１の関係に関連付けられた空間効率の良い（ＳＥ）ターゲットを前記マルチターゲット・アーキテクチャから見つけるための第２の構成要素であって、前記ＳＥターゲットの論理トラック内のデータはリポジトリ内に物理的に記憶されている、前記第２の構成要素と、
前記ソースとポイント・イン・タイム・コピー関係にあり且つ前記ＳＥターゲットと異なるポイント・イン・タイムでの兄弟ＳＥターゲットを前記マルチターゲット・アーキテクチャから見つけるための第３の構成要素であって、前記兄弟ＳＥターゲットが前記データのコピーにより前記ＳＥターゲットから当該データを継承し、前記兄弟ＳＥターゲットは、前記ＳＥターゲットの最も近い年長の兄弟（ＣＯＳ）ＳＥターゲットであり、前記最も近い年長の兄弟ＳＥターゲットは、前記ＳＥターゲットの直前にマッピングされたターゲットである、前記第３の構成要素と、
前記ＳＥターゲットの論理トラック内のデータを前記リポジトリの物理トラック内のデータにマッピングするマッピング構造を、前記リポジトリの前記物理トラック内の前記データを前記兄弟ＳＥターゲットの前記論理トラックにマッピングするように修正するための第４の構成要素であって、前記リポジトリは前記複数のＳＥターゲットのデータを物理的に記憶する、前記第４の構成要素と、
前記第１の関係を前記マルチターゲット・アーキテクチャから削除するための第５の構成要素であって、当該削除によって前記ソースと前記ＳＥターゲットとの間のポイント・イン・タイム・コピー関係が終了する、前記第５の構成要素と
を備えている、前記装置。
【請求項４】
マルチターゲット・アーキテクチャにおいてソースと空間効率の良い（ＳＥ）ターゲットとの間の関係を削除するための方法であって、前記マルチターゲット・アーキテクチャは一つのソースと当該ソースにマッピングされた複数のＳＥターゲットとを含み、コンピュータが、
前記ソースと一つのＳＥターゲットとの間のポイント・イン・タイム・コピー関係をマッピングする第１の関係を前記マルチターゲット・アーキテクチャからから見つけるステップと、
前記第１の関係に関連付けられた空間効率の良い（ＳＥ）ターゲットを前記マルチターゲット・アーキテクチャから見つけるステップであって、前記ＳＥターゲットの論理トラック内のデータはリポジトリ内に物理的に記憶されている、前記見つけるステップと、
前記ソースとポイント・イン・タイム・コピー関係にあり且つ前記ＳＥターゲットと異なるポイント・イン・タイムでの兄弟ＳＥターゲットを前記マルチターゲット・アーキテクチャから見つけるステップであって、前記兄弟ＳＥターゲットが前記データのコピーにより前記ＳＥターゲットから当該データを継承し、前記兄弟ＳＥターゲットは、前記ＳＥターゲットの最も近い年長の兄弟（ＣＯＳ）ＳＥターゲットであり、前記最も近い年長の兄弟ＳＥターゲットは、前記ＳＥターゲットの直前にマッピングされたターゲットである、前記見つけるステップと、
前記ＳＥターゲットから前記兄弟ＳＥターゲットに前記データをコピーするステップと、
前記第１の関係を前記マルチターゲット・アーキテクチャから削除するステップあって、当該削除によって前記ソースと前記ＳＥターゲットとの間のポイント・イン・タイム・コピー関係が終了する、前記削除するステップと
を実行することを含む、前記方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ複製(replication)に関し、より具体的に言えば、データ重複(duplication)を最小限にしながらデータのポイント・イン・タイム（point-in-time）・コピー（以下において、「時点コピー」という）を作成するための装置および方法に関する。
【背景技術】
【０００２】
ＩＢＭ（Ｒ）ＦｌａｓｈＣｏｐｙ（Ｒ）、Ｈｉｔａｃｈｉ  ＳｈａｄｏｗＩｍａｇｅなどのデータ複製機能を使用して、論理ボリュームまたはデータセットのほぼ同時の時点コピーを生成することができる。他の用途の中でも、これらの時点コピーは障害回復およびビジネス継続性の目的で使用することができる。特にＩＢＭ（Ｒ）ＦｌａｓｈＣｏｐｙ（Ｒ）は、ソース・ボリュームとターゲット・ボリュームとの間の関係を確立（または「マッピング」）することによって、時点コピーを作成する。この関係が確立されると、ソース・ボリュームまたはターゲット・ボリュームのいずれかからデータを読み取ることができる。ターゲット・ボリュームに関連付けられたターゲット・ビット・マップは、どのデータ・トラックが実際にソース・ボリュームからターゲット・ボリュームにコピーされたかを追跡する。あるケースでは、ボリュームは、あるボリュームがターゲットおよびソースの両方として機能するように、カスケード構成内に配置可能である。他のケースでは、ボリュームは、ソース・ボリュームが複数のターゲット・ボリュームとの関係を有するように、フラット（または「マルチターゲット」）構成内に配置可能である。
【０００３】
それにもかかわらず、カスケードまたはマルチターゲットのいずれかの構成内でボリュームの数が増加した場合、Ｉ／Ｏ性能は大幅に影響を受ける可能性がある。たとえば、カスケード構成では、ソース・ボリュームへの書き込みは、カスケード内の様々なボリューム間でデータがコピーされ、書き込みが実行できるようになるまで待機が必要な可能性がある。したがって、カスケード内のボリューム数が多いほど、データがソース・ボリュームに書き込めるまでにより多くのコピーを実行する必要がある。同様に、マルチターゲット構成では、ソース・ボリュームへの書き込みは、接続されたそれぞれのターゲットにデータがコピーされ、書き込みが実行できるようになるまで待機が必要な可能性がある。マルチターゲット構成内のボリューム数が多いほど、データがソース・ボリュームに書き込めるまでにより多くのコピーを実行する必要がある。これにより、ソース・ボリュームへの書き込みが非常に遅くなる可能性がある。このため、現在のＦｌａｓｈＣｏｐｙ（Ｒ）実装は、性能影響を許容範囲内で維持するためにマルチターゲット構成内に限定数のターゲットのみを許可する。
【０００４】
上記に鑑み、カスケードまたはマルチターゲット構成内に多数のボリュームを有することの性能影響を軽減するための方法が求められている。たとえば、読み取りおよび書き込みを実行する場合に、カスケードまたはマルチターゲット構成内のデータ複製を削減するための方法が求められている。さらに、カスケードまたはマルチターゲット構成内での関係を効率良く削除するための方法が求められている。したがって、当分野では前述の問題に対処することが求められている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、現況技術に応答して、具体的には、現在使用可能な方法では未だ完全に解決できていない当分野における問題および必要性に応答して、開発されてきた。したがって本発明の目的は、マルチターゲット・アーキテクチャにおけるソースと空間効率の良い（SE:space-efficient）ターゲットとの間の関係を削除するための方法、装置、コンピュータ・プログラム製品、およびコンピュータ・プログラムを提供することである。本発明の特徴および利点は、以下の説明および添付の特許請求の範囲からより完全に明らかとなるか、または以下に記載されるような本発明の実践によって習得可能である。
【課題を解決するための手段】
【０００６】
上記内容に一致する、マルチターゲット・アーキテクチャにおいてソースとターゲットの間の関係を削除するための方法が開示される。マルチターゲット・アーキテクチャは、ソースと、ソースにマッピングされた複数の空間効率の良い（ＳＥ）ターゲットとを含む。一実施形態では、こうした方法は、マルチターゲット・アーキテクチャからの削除のために、関係を初期に識別することを含む。次に、関係に関連付けられた空間効率の良い（ＳＥ）ターゲットが識別される。マッピング構造は、ＳＥターゲットの論理トラック内のデータをリポジトリの物理トラックにマッピングする。次に方法は、ＳＥターゲットからデータを継承する兄弟（sibling）ＳＥターゲットを識別する。ＳＥターゲットおよび兄弟ＳＥターゲットが識別されると、方法は、リポジトリの物理トラック内のデータが兄弟ＳＥターゲットの論理トラックにマッピングされるようにマッピング構造を修正する。次に、ソースとＳＥターゲットとの間の関係は削除される。
【０００７】
第１の態様から見ると、本発明は、マルチターゲット・アーキテクチャにおいてソースと空間効率の良い（ＳＥ）ターゲットとの間の関係を削除するための方法を提供し、マルチターゲット・アーキテクチャはソースとソースにマッピングされた複数のＳＥターゲットとを備え、方法は、マルチターゲット・アーキテクチャからの削除のために第１の関係を識別すること、第１の関係に関連付けられた空間効率の良い（ＳＥ）ターゲットを識別することであって、マッピング構造はＳＥターゲットの論理トラック内のデータをリポジトリの物理トラックにマッピングする、識別すること、ＳＥターゲットからデータを継承する兄弟ＳＥターゲットを識別すること、リポジトリの物理トラック内のデータを兄弟ＳＥターゲットの論理トラックにマッピングするようにマッピング構造を修正すること、および、第１の関係を削除することを含む。
【０００８】
他の態様から見ると、本発明は、マルチターゲット・アーキテクチャにおいてソースと空間効率の良い（ＳＥ）ターゲットとの間の関係を削除するためのコンピュータ・プログラム製品を提供し、マルチターゲット・アーキテクチャはソースとソースにマッピングされた複数のＳＥターゲットとを備え、コンピュータ・プログラム製品は、処理回路によって読み取り可能であり、本発明のステップを実行するための方法を実行するために処理回路によって実行するための命令を記憶する、コンピュータ読み取り可能ストレージ・メディアを備える。
【０００９】
他の態様から見ると、本発明は、プログラムがコンピュータ上で実行された場合、本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ読み取り可能メディア上に記憶され、デジタル・コンピュータの内部メモリにロード可能な、コンピュータ・プログラムを提供する。
【００１０】
他の態様から見ると、本発明は、マルチターゲット・アーキテクチャにおいてソースと空間効率の良い（ＳＥ）ターゲットとの間の関係を削除するための装置を提供し、マルチターゲット・アーキテクチャはソースとソースにマッピングされた複数のＳＥターゲットとを備え、装置は、マルチターゲット・アーキテクチャからの削除のために第１の関係を識別するための識別構成要素と、第１の関係に関連付けられた空間効率の良い（ＳＥ）ターゲットを識別するためにさらに動作可能な識別構成要素であって、マッピング構造はＳＥターゲットの論理トラック内のデータをリポジトリの物理トラックにマッピングする、識別構成要素と、ＳＥターゲットからデータを継承する兄弟ＳＥターゲットを識別するためにさらに動作可能な識別構成要素と、リポジトリの物理トラック内のデータを兄弟ＳＥターゲットの論理トラックにマッピングするようにマッピング構造を修正するための修正構成要素と、第１の関係を削除するための削除構成要素とを備える。
【００１１】
他の態様から見ると、本発明は、マルチターゲット・アーキテクチャ内のターゲット・ボリューム（ターゲットｘ）への書き込みを実行するための方法を提供し、マルチターゲット・アーキテクチャはソース・ボリュームとソース・ボリュームにマッピングされた複数のターゲット・ボリュームとを備え、方法は、ターゲットｘが最も近い年長の兄弟（ＣＯＳ）を有するかどうかを判別することであって、ＣＯＳはターゲットｘの直前に確立されたターゲット・ボリュームである、判別すること、ターゲットｘおよびＣＯＳのそれぞれに関するターゲット・ビット・マップ（ＴＢＭ）が設定されているかどうかを判別すること、ＣＯＳおよびターゲットｘの両方に関するＴＢＭが設定されている場合、高位のソース（ＨＳ）ボリュームからＣＯＳにデータをコピーすること、ＣＯＳに関するＴＢＭが設定されており、ターゲットｘに関するＴＢＭが設定されていない場合、ターゲットｘからＣＯＳにデータをコピーすること、および、ターゲットｘへの書き込みを実行することを含む。
【００１２】
他の態様から見ると、本発明は、マルチターゲット・アーキテクチャ内のターゲット・ボリューム（ターゲットｘ）上で読み取りを実行するための方法を提供し、マルチターゲット・アーキテクチャはソース・ボリュームとソース・ボリュームにマッピングされた複数のターゲット・ボリュームとを備え、方法は、ターゲットｘに関連付けられたターゲット・ビット・マップ（ＴＢＭ）を読み取ること、ＴＢＭが設定されているかどうかを判別すること、ＴＢＭが設定されている場合、高位のソース（ＨＳ）ボリュームからデータを読み取ること、ここでＨＳボリュームからデータを読み取ることは、ターゲットｘに関連付けられたソース・ボリュームを見つけること、ソース・ボリューム上での生成数（ＧＮ）を検査することによって、ターゲットｘに関して次に若い（next younger）（以下において、「次の年少」という）の兄弟を見つけること、および、次の年少の兄弟に関連付けられたＴＢＭが設定されていない場合、次の年少の兄弟からデータを読み取ることを含む。
【００１３】
他の態様から見ると、本発明は、マルチターゲット・アーキテクチャ内のソース・ボリュームへの書き込みを実行するための方法を提供し、マルチターゲット・アーキテクチャはソース・ボリュームとソース・ボリュームにマッピングされた複数のターゲット・ボリュームとを備え、方法は、ソース・ボリュームのトラック内のデータをソース・ボリュームにマッピングされたターゲット・ボリューム（ターゲットｘ）にコピーすること、ソース・ボリュームにマッピングされた少なくとも１つの兄弟ターゲット・ボリューム（兄弟）がターゲットｘからデータを継承できるようにすること、および、ソース・ボリュームのトラックへの書き込みを実行することを含む。
【００１４】
他の態様から見ると、本発明は、マルチターゲット・アーキテクチャにおいてソースとターゲットとの間の関係を削除するための方法を提供し、マルチターゲット・アーキテクチャはソースとソースにマッピングされた複数のターゲットとを備え、方法は、マルチターゲット・アーキテクチャからの削除のために第１の関係を識別すること、第１の関係に関連付けられたターゲットを識別すること、ターゲットからデータを継承する兄弟ターゲットを識別すること、ターゲットから兄弟ターゲットにデータをコピーすること、および第１の関係を削除することを含む。
【００１５】
次に、本発明を、以下の図面に示されるような好ましい実施形態を参照しながら単なる例として説明する。
【図面の簡単な説明】
【００１６】
【図１】従来技術に従い、本発明の好ましい実施形態が内部で実装可能な、様々なタイプのストレージ・システムを備えるネットワーク・アーキテクチャの一例を示す高水準ブロック図である。
【図２】従来技術に従い、本発明の好ましい実施形態が内部で実装可能な、方法の、ストレージ・システムの一例を示す高水準ブロック図である。
【図３】本発明の好ましい実施形態に従った、複数のターゲット・ボリュームにマッピングされたソース・ボリュームを備えるマルチターゲット・アーキテクチャの一例を示す高水準ブロック図である。
【図４】本発明の好ましい実施形態に従った、ターゲット・ボリュームからトラックを読み取るための方法の一実施形態を示す高水準ブロック図である。
【図５】本発明の好ましい実施形態に従った、ソース・ボリュームへの書き込みに応答してデータ・トラックをコピーするための方法の一実施形態を示す流れ図である。
【図６】本発明の好ましい実施形態に従った、ターゲット・ボリュームへの書き込みに応答してデータ・トラックをコピーするための方法の一実施形態を示す流れ図である。
【図７】本発明の好ましい実施形態に従った、ボリュームへの読み取りに応答して高位のソース（ＨＳ）ボリュームを見つけるための方法の一実施形態を示す流れ図である。
【図８】本発明の好ましい実施形態に従った、ボリュームへの書き込みに応答して高位のソース（ＨＳ）ボリュームを見つけるための方法の一実施形態を示す流れ図である。
【図９】本発明の好ましい実施形態に従った、生成数の使用を示すマルチターゲット・アーキテクチャの一例を示す高水準図である。
【図１０】本発明の好ましい実施形態に従った、様々な書き込みが実行された後の、図９に示されたボリュームに関するデータおよびＴＢＭボリュームを示す表である。
【図１１】本発明の好ましい実施形態に従った、様々な書き込みが実行された後の、図９に示されたボリュームに関するデータおよびＴＢＭボリュームを示す表である。
【図１２】本発明の好ましい実施形態に従った、ソース・ボリュームとターゲット・ボリュームとの間の関係の削除を示す高水準ブロック図である。
【図１３】本発明の好ましい実施形態に従った、ソース・ボリュームと空間効率の良い（ＳＥ）ターゲット・ボリュームとの間の関係の削除を示す高水準ブロック図である。
【図１４】本発明の好ましい実施形態に従った、メモリ内のソースとターゲットの関係エントリを示す高水準ブロック図である。
【図１５】本発明の好ましい実施形態に従った、マルチターゲット・アーキテクチャ内でのソースとＳＥターゲットとの間の関係を削除するための方法の一実施形態を示す流れ図である。
【図１６】本発明の好ましい実施形態に従った、削除された関係を処理するための方法の一実施形態を示す流れ図である。
【図１７】本発明の好ましい実施形態に従った、削除された関係を処理するための方法の他の実施形態を示す流れ図である。
【発明を実施するための形態】
【００１７】
本明細書の図面に全体として説明および図示されるように、本発明の構成要素は多種多様な異なる構成内に配置および設計可能であることは容易に理解されよう。したがって、図面内に表されたような本発明の好ましい実施形態の以下のより詳細な説明は、請求されたように、本発明の範囲を限定することは意図されておらず、本発明に従った現在企図されている好ましい実施形態のある例の単なる代表である。説明された本実施形態は、全体を通じて同じ部分が同じ数字によって指定された図面を参照することにより、最も良く理解されるであろう。
【００１８】
当業者であれば理解されるように、本発明は装置、システム、方法、またはコンピュータ・プログラム製品として具体化可能である。さらに本発明は、ハードウェア実施形態、ハードウェアを動作させるように構成されたソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、本明細書ではすべて全体として「モジュール」または「システム」と呼ばれることのあるソフトウェアおよびハードウェアの態様を組み合わせた実施形態の、形を取ることができる。さらに本発明は、内部に記憶されたコンピュータ使用可能プログラム・コードを有する任意の有形な表現メディア内に具体化されたコンピュータ使用可能ストレージ・メディアの形を取ることができる。
【００１９】
１つまたは複数のコンピュータ使用可能またはコンピュータ読み取り可能ストレージ・メディアの任意の組み合わせを利用して、コンピュータ・プログラム製品を記憶することができる。コンピュータ使用可能またはコンピュータ読み取り可能ストレージ・メディアは、たとえば電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイスとすることができるが、これらに限定されない。コンピュータ読み取り可能ストレージ・メディアのより具体的な例（非網羅的リスト）は、１本または複数本のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤＲＯＭ）、光ストレージ・デバイス、または磁気ストレージ・デバイスを含むことができる。本書との関連において、コンピュータ使用可能またはコンピュータ読み取り可能ストレージ・メディアは、命令実行のシステム、装置、またはデバイスによって、またはこれらに関して使用するためのプログラムを含む、記憶する、または移送することが可能な、任意のメディアとすることができる。
【００２０】
本発明の動作を実施するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。本発明を実装するためのコンピュータ・プログラム・コードは、アセンブリ言語などの低水準プログラミング言語でも作成可能である。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、または、完全にリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを通じてユーザのコンピュータに接続可能であるか、または（たとえばインターネット・サービス・プロバイダを使用し、インターネットを介して）外部コンピュータに接続することができる。Ｊａｖａ（Ｒ）およびすべてのＪａｖａベースの商標およびロゴは、Ｏｒａｃｌｅ社あるいはその関連会社またはその両方の商標または登録商標である。
【００２１】
本発明は、本発明の実施形態に従った方法、装置、システム、およびコンピュータ・プログラム製品の流れ図あるいはブロック図またはその両方を参照しながら、以下で説明することができる。流れ図あるいはブロック図またはその両方の各ブロック、および、流れ図あるいはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令またはコードによって実装可能であることを理解されよう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図またはその両方のブロックに指定された機能／動作を実装するための手段を作成するように、汎用コンピュータ、特定用途向けコンピュータ、または機械を生成するための他のプログラマブル・データ処理装置のプロセッサに提供可能である。
【００２２】
コンピュータまたは他のプログラマブル・データ処理装置に特定の様式で機能するように指示可能なコンピュータ・プログラム命令を、コンピュータ読み取り可能ストレージ・メディア内に記憶することが可能であるため、結果としてコンピュータ読み取り可能ストレージ・メディア内に記憶された命令が、流れ図あるいはブロック図またはその両方のブロック内に指定された機能／動作を実装する命令手段を含む製品を生成する。一連の動作ステップをコンピュータまたは他のプログラマブル装置上で実行させ、コンピュータ実装プロセスを生成するために、コンピュータ・プログラム命令を、コンピュータまたは他のプログラマブル・データ処理装置上にロードすることもできるため、結果として、コンピュータまたは他のプログラマブル装置上で実行する命令が、流れ図あるいはブロック図またはその両方のブロックに指定された機能／動作を実装するためのプロセスを提供する。
【００２３】
図１を参照すると、ネットワーク・アーキテクチャ１００の一例が示されている。ネットワーク・アーキテクチャ１００は、本発明に従った時点コピー方法が実装可能な環境の一例を示すために提示される。ネットワーク・アーキテクチャ１００は、制限ではなく単なる例として提示される。実際に、本明細書で開示される方法は、図示されたネットワーク・アーキテクチャ１００に加えて、多種多様な異なるコンピュータ、サーバ、ストレージ・デバイス、およびネットワーク・アーキテクチャに適用可能である。
【００２４】
図に示されるように、ネットワーク・アーキテクチャ１００は、ネットワーク１０４によって相互接続された１つまたは複数のコンピュータ１０２、１０６を含む。ネットワーク１０４は、たとえばローカル・エリア・ネットワーク（ＬＡＮ）１０４、ワイド・エリア・ネットワーク（ＷＡＮ）１０４、インターネット１０４、イントラネット１０４などを含むことができる。ある実施形態では、コンピュータ１０２、１０６はクライアント・コンピュータ１０２およびサーバ・コンピュータ１０６（本明細書では「ホスト・システム」１０６とも呼ばれる）の両方を含むことができる。一般に、クライアント・コンピュータ１０２は通信セッションを開始するが、サーバ・コンピュータ１０６はクライアント・コンピュータ１０２からの要求を待機する。ある実施形態では、コンピュータ１０２あるいはサーバ１０６またはその両方は、１つまたは複数の内部または外部の直接接続ストレージ・システム１１２（たとえばハードディスク・ドライブ、ソリッドステート・ドライブ、テープ・ドライブなどのアレイ）に接続可能である。これらのコンピュータ１０２、１０６、および直接接続ストレージ・システム１１２は、ＡＴＡ、ＳＡＴＡ、ＳＣＳＩ、ＳＡＳ、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌなどのプロトコルを使用して通信可能である。ストレージ・システム１１２のうちの１つまたは複数は、本明細書で開示された時点コピー方法を利用することができる。
【００２５】
ある実施形態では、ネットワーク・アーキテクチャ１００は、サーバ１０６の後ろに、ストレージ・エリア・ネットワーク（ＳＡＮ）１０８またはＬＡＮ１０８（たとえばネットワーク接続ストレージを使用する場合）などの、ストレージ・ネットワーク１０８を含むことができる。このネットワーク１０８は、ハードディスク・ドライブまたはソリッドステート・ドライブのアレイ１１０ａ、テープ・ライブラリ１１０ｂ、個々のハードディスク・ドライブ１１０ｃまたはソリッドステート・ドライブ１１０ｃ、テープ・ドライブ１１０ｄ、ＣＤ−ＲＯＭライブラリなどの、１つまたは複数のストレージ・システム１１０に、サーバ１０６を接続することができる。ホスト・システム１０６は、ストレージ・システム１１０にアクセスするために、ホスト１０６上の１つまたは複数のポートからストレージ・システム１１０上の１つまたは複数のポートへの物理接続を介して通信することができる。接続は、スイッチ、ファイバ、直接接続などを介することができる。ある実施形態では、サーバ１０６およびストレージ・システム１１０は、ファイバ・チャネル（ＦＣ）などのネットワーキング標準を使用して通信することができる。ストレージ・システム１１０のうちの１つまたは複数は、本明細書で開示された時点コピー方法を利用することができる。
【００２６】
図２を参照すると、ハードディスク・ドライブ２０４あるいはソリッドステート・ドライブ２０４またはその両方のアレイを含むストレージ・システム１１０ｂの一実施形態が示されている。ある実施形態では、本明細書で開示された時点コピー方法がこうしたストレージ・システム１１０ｂ内で実装可能であるため、ストレージ・システム１１０ｂの内部構成要素が示されているが、方法は他のストレージ・システム１１０にも適用可能である。図に示されるように、ストレージ・システム１１０ｂは、ストレージ・コントローラ２００、１つまたは複数のスイッチ２０２、および、ハードディスク・ドライブ２０４またはソリッドステート・ドライブ２０４などの（フラッシュ・メモリ・ベース・ドライブ２０４などの）１つまたは複数のストレージ・デバイス２０４を含む。ストレージ・コントローラ２００は、１つまたは複数のホスト１０６（たとえば、オープン・システムあるいはメインフレーム・サーバまたはその両方１０６）の１つまたは複数のストレージ・デバイス２０４内のデータへのアクセスを実行可能にすることができる。
【００２７】
選択された実施形態では、ストレージ・コントローラ２００は１つまたは複数のサーバ２０６を含む。ストレージ・コントローラ２００は、ストレージ・コントローラ２００をそれぞれホスト・デバイス１０６およびストレージ・デバイス２０４に接続するために、ホスト・アダプタ２０８およびデバイス・アダプタ２１０を含むこともできる。複数のサーバ２０６ａ、２０６ｂは、接続されたホスト１０６が常にデータを利用できることを保証するために冗長性を提供することができる。したがって、一方のサーバ２０６ａに障害が発生すると、Ｉ／Ｏがホスト１０６とストレージ・デバイス２０４との間で続行できることを保証するために、他方のサーバ２０６ｂが障害サーバ２０６ａのＩ／Ｏロードを受信する。このプロセスは「フェイルオーバ」と呼ばれることがある。
【００２８】
図２に示されたアーキテクチャと同様のアーキテクチャを有するストレージ・システム１１０ｂの一例は、ＩＢＭ  ＤＳ８０００（Ｒ）エンタープライズ・ストレージ・システムである。ＩＢＭ  ＤＳ８０００（Ｒ）は、連続動作をサポートするように設計されたディスク・ストレージを提供する高性能、高容量ストレージ・コントローラである。それにもかかわらず、本明細書で開示された方法はＩＢＭ  ＤＳ８０００（Ｒ）エンタープライズ・ストレージ・システム１１０ｂに限定されず、システム１１０に関連付けられた製造業者、製品名、あるいは構成要素または構成要素名に関係なく、任意の同等または類似のストレージ・システム１１０内で実装可能である。さらに、本発明の１つまたは複数の好ましい実施形態から恩恵を受けることが可能な任意のストレージ・システムは、本発明の範囲内に入るものとみなされる。したがって、ＩＢＭ  ＤＳ８０００は単なる例として提示され、限定的であることは意図されていない。ＩＢＭ、ＦｌａｓｈＣｏｐｙ、ＤＳ８０００は、多くの管轄区域内で世界規模に登録されたインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。
【００２９】
選択された実施形態では、各サーバ２０６は１つまたは複数のプロセッサ２１２およびメモリ２１４を含むことができる。メモリ２１４は揮発性メモリ（たとえばＲＡＭ）ならびに不揮発性メモリ（たとえばＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ハード・ディスク、フラッシュ・メモリなど）を含むことができる。ある実施形態では、揮発性および不揮発性メモリは、プロセッサ２１２上で実行し、ストレージ・デバイス２０４内のデータにアクセスするために使用される、ソフトウェア・モジュールを記憶することができる。サーバ２０６は、これらのソフトウェア・モジュールの少なくとも１つのインスタンスをホストすることができる。これらのソフトウェア・モジュールは、ストレージ・デバイス２０４内の論理ボリュームへのすべての読み取りおよび書き込み要求を管理することができる。
【００３０】
選択された実施形態では、メモリ２１４はキャッシュ２１８を含む。ホスト１０６（たとえばオープン・システムまたはメインフレーム・サーバ１０６）は読み取り動作を実行し、読み取りを実行するサーバ２０６は、これが再度必要になったイベントで、ストレージ・デバイス２０４からデータをフェッチし、これをそのキャッシュ２１８内に保存することができる。データがホスト１０６によって再度要求された場合、サーバ２０６は、ストレージ・デバイス２０４からそれをフェッチする代わりに、キャッシュ２１８からデータをフェッチし、時間およびリソースの両方を節約することができる。同様に、ホスト１０６が書き込みを実行する場合、書き込み要求を受信するサーバ１０６はこの書き込みをそのキャッシュ２１８内に記憶することができる。次にサーバ１０６は、時間およびリソースが許せば、ストレージ・デバイス２０４への書き込みをデステージ（destage）することができる。
【００３１】
図３を参照すると、時点コピーを作成するためのマルチターゲット・アーキテクチャ３００の一例が示されている。こうしたアーキテクチャ３００は、図２に示されたストレージ・システム１１０ｂなどのストレージ・システム１１０内で実装可能である。図に示されるように、マルチターゲット・アーキテクチャ３００はソース・ボリューム３０２および１つまたは複数のターゲット・ボリューム３０４ａ〜ｄを含む。ターゲット・ボリューム３０４ａ〜ｄのそれぞれは、ソース・ボリューム３０２内のデータの時点コピーを含む。ＦｌａｓｈＣｏｐｙ（Ｒ）実装などの選択された実施形態では、時点コピーはソース・ボリューム３０２とターゲット・ボリューム３０４との間に関係を確立（または「マッピング」）することによって作成される。この関係が確立されると、たとえデータが依然としてソース・ボリューム３０２からターゲット・ボリューム３０４にコピーできない場合であっても、ソース・ボリューム３０２またはターゲット・ボリューム３０４のいずれかからデータを読み取ることができる。ターゲット・ボリューム３０４に関連付けられたターゲット・ビット・マップ（ＴＢＭ）３０６は、どのデータ・トラックが実際にソース・ボリューム３０２からターゲット・ボリューム３０４にコピーされたかを追跡する。たとえば、ＴＢＭ３０６内の「０」はデータ・トラックがコピーされた（すなわちターゲット・ボリューム３０４がそれ自体のデータを有する）旨を示すことができるが、「１」はデータ・トラックが未だにコピーされていない旨を示すことができる。ＴＢＭ３０６が「１」を含む場合、ターゲット・ボリューム３０４上のトラックへの読み取りはソース・ボリューム３０２上の対応するトラックに向けて送ることができる。本開示では、ＴＢＭ３０６内のビットは「１」を含む場合に「設定」されており、「０」を含む場合に「リセット」されていると言われるが、これは他の実施形態では逆の可能性がある。ソース３０２およびターゲット３０４は例示された実施形態では「ボリューム」とラベル付けされるが、ソース３０２およびターゲット３０４はデータセットまたは他のデータの集合とすることができることを理解されたい。
【００３２】
前述のように、従来のマルチターゲット・アーキテクチャ３００では、ソース・ボリューム３０２への書き込みは、ソース・ボリューム３０２内のデータが、それ自体のデータを含まない接続された各ターゲット・ボリューム３０４ａ〜ｄにコピーされ（すなわちデステージされ）、ソース・ボリューム３０２への書き込みを完了できるまで待機が必要な可能性がある。すなわち、ソース・ボリューム３０２のデータ・トラック上で書き込みが実行される前に、既存のデータ・トラックを、ソース・ボリューム３０２上のデータ・トラックが上書きされる前にすでに未だデータ・トラックを含んでいないターゲット・ボリューム３０４ａ〜ｄにコピーする必要がある。マルチターゲット・アーキテクチャ３００内のターゲット・ボリューム３０４ａ〜ｄの数が多くなるほど、データをソース・ボリューム３０２に正常に書き込むことができるまでに実行が必要なコピーの数も多くなる。これにより、ソース・ボリューム３０２への書き込みが非常に遅くなる可能性がある。このため従来の時点コピー技術は、性能影響を許容範囲内に維持するためにマルチターゲット・アーキテクチャ３００内で限定数（たとえば１２）のターゲット３０４のみをサポートすることができる。
【００３３】
以下でより詳細に説明されるように、本発明の好ましい実施形態に従った改良された方法を使用して、ソース・ボリューム３０２にマッピングされた複数のターゲット・ボリューム３０４ａ〜ｄを有することの性能影響を軽減することができる。ソース・ボリューム３０２上で書き込みが実行される場合に複数のターゲット３０４ａ〜ｄにデータをコピーする代わりに、改良された方法は、単一のターゲット３０４またはターゲット３０４のサブセットにデータをコピーする。次に継承方式は、他のターゲット３０４が、データを含む単一のターゲット３０４またはターゲット３０４のサブセットからデータを継承できるようにする。このようにして、ソース・ボリューム３０２への書き込みは、ソース・ボリューム３０２上で書き込みを完了できるまでに、単一のターゲット３０４またはターゲット３０４のサブセットにデータをコピーするだけでよいものとすることができる。図４から図８に示された流れ図は、こうした方法を実装するための方法の様々な特有の例を示す。
【００３４】
図４を参照すると、ターゲット・ボリューム３０４からトラックを読み取るための方法４００の一例が示されている。ターゲット・ボリューム３０４からデータ・トラックを読み取るための要求を受け取ると、方法４００は、ターゲット・ボリューム３０４のＴＢＭが設定されているかどうかを判別する（４０２）。ＴＢＭが設定されていない場合（ターゲット・ボリューム３０４が要求されたデータを含むことを示す）、方法４００は単にターゲット・ボリューム３０４から要求されたデータ・トラックを読み取る（４０６）。他方で、ＴＢＭが設定されている場合（ターゲット・ボリューム３０４が要求されたデータを含まないことを示す）、方法４００は、データの読み取り元である高位のソース（ＨＳ）ボリュームを見つけ（４０４）、ＨＳボリュームから読み取る（４０４）。ＨＳボリュームを見つけるための１つの方法７００は、図７に関連して説明される。本開示では、ＨＳボリュームは、要求されたデータを含む、ターゲット・ボリューム３０４の継承元のボリュームである。
【００３５】
図５を参照すると、ソース・ボリューム３０２への書き込みに応答してデータ・トラックをデステージするための方法５００の一実施形態が示されている。図に示されるように、方法５００は初期にソース・ボリューム３０２の最年少の子（ＹＣ）を見つける（５０２）。本開示では、ＹＣは、ソース・ボリューム３０２に最後にマップされたターゲット・ボリューム３０４である。選択された実施形態では、生成数（ＧＮ）を使用して、時点コピーを生成するためにターゲット・ボリューム３０４がソース・ボリューム３０２に追加された順序を特定することができる。ソース・ボリューム３０２にターゲット３０４がマッピングされた順序を決定するためにＧＮが使用される様式について、図９に関連して考察する。
【００３６】
方法５００はＹＣを見つけると、ＹＣのＴＢＭが設定されているかどうかを判別する（５０４）。ＴＢＭが設定されていない場合（ＹＣ３０４がそれ自体のデータのコピーを含むことを示す）、ＹＣ３０４がすでにデータのコピーを有するため、方法５００は何も実行しない（５０８）。他方で、ＴＢＭが設定されている場合（ＹＣ３０４がそれ自体のデータのコピーを含まないことを示す）、方法５００はソース・ボリューム３０２からＹＣ３０４にデータをコピーする（５０６）。このようにして、ソース・ボリューム３０２への書き込みが実行された場合、データを含まないすべてのターゲット・ボリューム３０４にデータをコピーするのとは反対に、ソース・ボリューム３０２とＹＣ３０４との間で単一のコピーが実行される。そこで、他のターゲット・ボリューム３０４（ＹＣ３０４ではない）は、他のボリューム３０４への読み取りが実行される場合、または他のボリューム３０４からデータがコピーされる場合など、このデータをＹＣ３０４から継承することができる。
【００３７】
図６を参照すると、ターゲット・ボリューム３０４（ターゲットｘ）への書き込みに応答してデータ・トラックをデステージするための方法６００の一実施形態が示されている。図に示されるように、方法６００は初期に、ターゲットｘ３０４および最も近い年長の兄弟（ＣＯＳ）３０４に関するＴＢＭが、書き込まれているトラックについて設定されているかどうかを判別する（６０２）。本開示では、ＣＯＳはターゲットｘ３０４の直前にマッピングされたターゲット・ボリューム３０４である。両方のＴＢＭが設定されている場合（どちらのボリュームも書き込まれているトラック内にデータを含まないことを示す）、方法６００は高位ソース（ＨＳ）ボリュームからＣＯＳ３０４にデータ・トラックをコピーする（６０４）。ＨＳボリュームを見つけるための方法については、図８に関連して考察する。他方で、ターゲットｘに関するＴＢＭが設定されておらず、ＣＯＳに関するＴＢＭが設定されている（ターゲットｘ３０４が上書きされているデータ・トラック内にデータを含むことを示す）ことが、ステップ６０６で判別された場合、方法６００はデータ・トラックをターゲットｘからＣＯＳ３０４にコピーする（６０８）、すなわちデータ・トラックはターゲットｘ３０４からＣＯＳ３０４にデステージされる。他方で、ＣＯＳのＴＢＭが設定されていない場合（ＣＯＳがデータを含むことを示す）、ＣＯＳは存在せず、方法６００はコピーの必要がないため、何も実行しない（６１０）。方法６００が終わりに達すると、ターゲットｘ上で書き込みを実行することができる。
【００３８】
前述の方法５００、６００は、本発明から逸脱することなく様々な方法で修正可能であることを理解されたい。たとえば最年少の子（ＹＣ）を最年長の子に置き換えることが可能であり、最も近い年長の兄弟（ＣＯＳ）を最も近い年少の兄弟に置き換えることが可能である。したがって本開示では、ＹＣおよびＣＯＳを利用する実施形態は、最年長の子および最も近い年少の兄弟を利用する実施形態を包含するものともみなされる。他の変形も可能であり、本発明の範囲内にある。
【００３９】
図７を参照すると、読み取りのためにＨＳボリュームを見つけるための方法７００の一実施形態が示されている。こうした方法７００は、図４のステップ４０４に関連して使用可能である。図に示されるように、方法７００は、読み取られているボリュームがターゲット・ボリューム３０４であるかどうかを初期に判別する（７０２）。ターゲット・ボリューム３０４でない場合、ソース・ボリューム３０２であるため、方法７００はこのボリュームから読み取る。ボリュームがターゲット・ボリューム３０４である場合、方法は、ボリュームのＴＢＭが設定されているかどうかを判別する（７０６）。ＴＢＭが設定されていない場合、方法７００はボリューム３０４から読み取る（７０４）。ボリュームのＴＢＭが設定されて居る場合、方法７００はターゲット・ボリューム３０４に関連付けられたソース・ボリューム３０２を見つける（７０８）。次に方法７００は、対象ターゲット・ボリューム３０４の生成数（ＧＮ）の次に高位の生成数（ＧＮ）との次の関係を見つける（７１０）。ＧＮの使用法については、図９の例でより詳細に説明する。
【００４０】
一般に、意思決定ステップ７１０は、（ステップ７０２で識別された）対象ターゲット・ボリューム３０４に関連付けられた関係の次の年少のソース・ボリューム３０２に関する関係を見つける。次に方法７００は、この関係のターゲット３０４を見つける（７１４）。このターゲット３０４のＴＢＭが設定されている場合７１６、方法７００はターゲット３０４から読み取る。このターゲット３０４のＴＢＭが設定されていない場合７１６、方法７００はステップ７１０、７１４を反復し、次の年少のターゲット３０４を見つけて、そのＴＢＭが設定されているかどうかを判別する（７１６）。このようにして、方法７００は、所望のデータを含むターゲット・ボリューム３０４が見つかるまで、ステップ７０２で識別されたターゲット・ボリューム３０４の年少の兄弟をトラバースする。このデータが見つかると、方法７００はターゲット３０４から読み取る（７１８）。所望のデータを含む年少の兄弟ターゲット３０４が見つからない場合、方法は単にソース・ボリューム３０２から読み取る（７１２）。このようにしてターゲット・ボリューム３０４は、兄弟３０４への読み取りが実行された場合に、兄弟３０４からデータを継承することができる。
【００４１】
図８を参照すると、データのコピー元のＨＳボリュームを見つけるための方法８００の一実施形態が示される。こうした方法８００は、図６のステップ６０４に関連して使用可能である。図に示されるように、方法８００は初期に、書き込み先のボリュームがターゲット・ボリューム３０４であるかどうかを判別する。ターゲット・ボリューム３０４でない場合、ステップ８０４で反映されるように、コピーは不要である。ボリュームがターゲット・ボリューム３０４である場合、方法は、ボリュームのＴＢＭが設定されているかどうかを判別する（８０６）。ＴＢＭが設定されていない場合、コピーは不要である。ボリュームがターゲット・ボリューム３０４であり、ボリュームのＴＢＭが設定されている場合、方法はターゲット・ボリューム３０４に関連付けられたソース・ボリューム３０２を見つける（８０８）。次に方法８００は、前述のように、高位の生成数（ＧＮ）との次の関係を見つける。
【００４２】
次に高位のＧＮを見つけると、方法８００は、ステップ８０２で識別されたターゲット３０４の兄弟であるこの関係のターゲット３０４を見つける（８１４）。この兄弟ターゲット３０４のＴＢＭが設定されていない場合８１６（所望のデータを含むことを示す）、方法８００は、兄弟ターゲット３０４からＣＯＳ３０４にデータをコピーする（８１８）。この兄弟ターゲット３０４のＴＢＭが設定されている場合８１６（所望のデータを含まないことを示す）、方法８００はステップ８１０、８１４を反復し、次の年少の兄弟ターゲット３０４を見つけて、そのＴＢＭが設定されているかどうかを判別する（８１６）。このようにして、方法８００は、所望のデータを含む兄弟ターゲット・ボリューム３０４が見つかるまで、ステップ８０２で識別されたターゲット・ボリューム３０４の年少の兄弟をトラバースする。このデータが見つかると、方法８００は、兄弟ターゲット３０４からＣＯＳにデータをコピーする（８１８）。所望のデータを含む兄弟ターゲット３０４が見つからない場合、方法８００はソース・ボリューム３０２からＣＯＳにデータをコピーする（８１２）。データがコピーされると、ステップ８０２で識別されたターゲット３０４上での書き込みが実行可能である。
【００４３】
図９を参照すると、生成数（ＧＮ）の使用を示すマルチターゲット・アーキテクチャ３００の一例が示される。この例で、ソース・ボリューム（ＳＶ）３０２と第１のターゲット・ボリューム（ＴＶ１）３０４ａとの間の関係が第１に作成され、次にソース・ボリューム３０２と第２のターゲット・ボリューム（ＴＶ２）３０４ｂとの間の関係、次にソース・ボリューム３０２と第３のターゲット・ボリューム（ＴＶ３）３０４ｃとの間の関係が作成されたものと想定する。新しい関係がソース・ボリューム３０２に追加される毎に、生成数が増分される。したがって、ソース・ボリューム３０２に示されるように、第１の関係は生成数「１」に関連付けられ、第２の関係は生成数「２」に関連付けられ、第３の関係は生成数「３」に関連付けられる。
【００４４】
初期に、ソース・ボリューム３０２と第１および第２のターゲット・ボリューム３０４ａ、３０４ｂとの間の関係が確立されるが、ソース・ボリューム３０２と第３のターゲット・ボリューム３０４ｃとの間の関係は未だ確立されていないものと想定する。このシナリオでは、第２のターゲット・ボリューム３０４ｂのトラック１への書き込みを実行するために、トラック１内のデータがソース・ボリューム３０２（高位のソース）から第１のターゲット・ボリューム３０４ａ（最も近い年長の兄弟、すなわちＣＯＳ）にコピーされ、第１のターゲット・ボリューム３０４ａのＴＢＭがリセットされる。その後、第２のターゲット・ボリューム３０４ｂのトラック１への書き込みが実行され、第２のターゲット・ボリューム３０４ｂのＴＢＭがリセットされる。同様に、ソース・ボリューム３０２のトラック２への書き込みを実行するために、トラック２内のデータがソース・ボリューム３０２から第２のターゲット・ボリューム３０４ｂ（最年少の子、すなわちＹＣ）にコピーされ、第２のターゲット・ボリューム３０４ｂのＴＢＭがリセットされる（ここでデータを含むことを示す）。その後、ソース・ボリューム３０２のトラック２への書き込みが実行される。２つの書き込み後に第１のターゲット・ボリューム（ＴＶ１）３０４ａおよび第２のターゲット・ボリューム（ＴＶ２）３０４ｂ内に常駐するデータが、図１０に示される。ＴＢＭ内の値も示される。
【００４５】
ここで、ソース・ボリューム３０２と第３のターゲット・ボリューム３０４ｃとの間の第３の関係が確立されるものと想定する。ソース・ボリューム３０２のトラック３への書き込みを実行するために、トラック３内のデータがソース・ボリューム３０２から第３のターゲット・ボリューム３０４ｃ（最年少の子、すなわちＹＣ）にコピーされ、第３のターゲット・ボリューム３０４ｃのＴＢＭがリセットされる。次に、ソース・ボリューム３０２のトラック３への書き込みが実行される。第２のターゲット・ボリューム３０４ｂのトラック４への書き込みを実行するために、トラック４内のデータがソース・ボリューム３０２（高位のソース）から第１のターゲット・ボリューム３０４ａ（最も近い年長の兄弟、すなわちＣＯＳ）にコピーされ、第１のターゲット・ボリューム３０４ａのＴＢＭがリセットされる。次に、第２のターゲット・ボリューム３０４ｂのトラック４への書き込みが実行され、第２のターゲット・ボリューム３０４ｂのＴＢＭがリセットされる。
【００４６】
第１のターゲット・ボリューム３０４ａのトラック５への書き込みを実行するために、最も近い年長の兄弟、すなわちＣＯＳが存在しないため、コピーは実行されない。次に、第１のターゲット・ボリューム３０４ａのトラック５への書き込みが実行され、第１のターゲット・ボリューム３０４ａのＴＢＭがリセットされる。第３のターゲット・ボリューム３０４ｃのトラック６への書き込みを実行するために、トラック６内のデータがソース・ボリューム３０２（高位のソース）から第２のターゲット・ボリューム３０４ｂ（最も近い年長の兄弟、すなわちＣＯＳ）にコピーされ、第２のターゲット・ボリューム３０４ｂのＴＢＭがリセットされる。次に、第３のターゲット・ボリューム３０４ｃのトラック６への書き込みが実行され、第３のターゲット・ボリューム３０４ｃのＴＢＭがリセットされる。前述の６つすべての書き込み後、第１のターゲット・ボリューム（ＴＶ１）３０４ａ、第２のターゲット・ボリューム（ＴＶ２）３０４ｂ、および第３のターゲット・ボリューム（ＴＶ３）３０４ｃ内に常駐するデータが、図１１に示される。ＴＢＭ内の値も示される。
【００４７】
図１２を参照すると、ある環境では、ソース・ボリューム３０２とターゲット・ボリューム３０４との間の関係、またはソース・ボリューム３０２といくつかのターゲット・ボリューム３０４との間のいくつかの関係を、マルチターゲット・アーキテクチャ３００から削除することができる。マルチターゲット・アーキテクチャ３００から関係が削除された場合、ソース・ボリューム３０２と関係に関連付けられたターゲット・ボリューム３０４との間の時点コピー関係が終了する。ある実施形態では、これにより、関係が削除されたターゲット・ボリューム３０４からデータを継承するための他の兄弟ターゲット・ボリューム３０４の機能が終了する可能性がある。したがって、ある実施形態では、関係の削除に先立って、関係に関連付けられたターゲット・ボリューム３０４上のデータを１つまたは複数の兄弟ターゲット・ボリューム３０４にコピーすることが可能であるため、結果として兄弟ターゲット・ボリューム３０４は依然としてデータにアクセス可能である。
【００４８】
たとえば、ソース・ボリューム３０２とターゲット・ボリューム３０４ｃとの間の関係が（点線矢印で示されるように）削除用に識別されるものと想定する。関係の削除に先立って、ターゲット・ボリューム３０４ｃ上に記憶され、他の兄弟ターゲット・ボリューム３０４によって継承されるデータを、１つまたは複数の兄弟ターゲット・ボリューム３０４にコピーすることが可能であるため、結果として兄弟ターゲット・ボリューム３０４は依然としてデータにアクセス可能である。たとえばある実施形態では、図４から図８で説明された時点コピー方法を使用する場合など、データが最も近い年長の兄弟（ＣＯＳ）にコピーされることになる。他の時点コピー方法を使用して、データをＣＯＳ以外の他の兄弟ターゲット・ボリューム３０４にコピーすることができる。それにもかかわらず、本開示では、データがＣＯＳにコピーされるものと想定される。ターゲット・ボリューム３０４ｃに記憶され、他の兄弟ターゲット・ボリューム３０４によって継承されるすべてのデータがＣＯＳにコピーされると、ソース・ボリューム３０２とターゲット・ボリューム３０４ｃとの間の関係は削除可能であり、それにより、ソース・ボリューム３０２とターゲット・ボリューム３０４ｃとの間の時点コピー関係は終了する。
【００４９】
図１３を参照すると、あるケースでは、ソース・ボリューム３０２と空間効率の良い（ＳＥ）ターゲット・ボリューム３０４との間の関係を削除することができる。ＳＥターゲット・ボリューム３０４は、データがボリューム内に物理的に記憶されないという点で、標準の（図１２に示されたような）ターゲット・ボリューム３０４とは異なる。むしろＳＥターゲット・ボリューム３０４は、そのデータが共通リポジトリ１２００内に物理的に記憶される（点線で示されるような）仮想ボリュームである。マッピング構造１２０２は、ＳＥターゲット・ボリュームのデータがリポジトリ１２００内のどこに物理的に配置されるかを追跡する。言い換えれば、マッピング構造１２０２は、ＳＥターゲット・ボリューム３０４の論理トラックをリポジトリ１２００の物理トラックにマッピングする。ホスト・デバイスの観点から見ると、ＳＥターゲット・ボリューム３０４からの読み取りまたはＳＥターゲット・ボリューム３０４への書き込みは、標準ターゲット・ボリュームからの読み取りまたは標準ターゲット・ボリュームへの書き込みと同じとすることができる。
【００５０】
ＳＥターゲット・ボリューム３０４はいかなるデータも物理的に記憶しないため、関係が削除される場合、ＳＥターゲット・ボリューム３０４から他の兄弟ＳＥターゲット・ボリューム３０４へのデータの物理的コピーは不要である。むしろ他の兄弟ＳＥターゲット・ボリューム、より具体的に言えばＣＯＳボリュームが、リポジトリ１２００内のＳＥターゲット・ボリュームのデータを指し示すように、マッピング構造１２０２を修正することができる。言い換えれば、１つのＳＥターゲット・ボリュームから他へデータを物理的にコピーする代わりに、標準ターゲット・ボリュームで実行し得るように、１つのＳＥターゲット・ボリューム内に論理的に記憶されたデータがここでは他のＳＥターゲット・ボリューム内に論理的に記憶されるように、マッピング構造１２０２を修正することができる。本開示では、以下で言及されるすべてのターゲット・ボリュームが空間効率の良い（ＳＥ）ターゲット・ボリュームであるものと想定される。
【００５１】
図１４を参照すると、ある実施形態では、マルチターゲット・アーキテクチャ３００内のそれぞれの関係を追跡するために、関係テーブル１３００がメモリ２１４内に記憶される。ある実施形態では、各関係は、それらと、関係のソースに対応するソース関係エントリ１３０２ａおよび関係のターゲットに対応するターゲット関係エントリ１３０２ｂとを関連付けている。以下でより詳細に説明されるように、関係を削除する場合、関係の削除が進行中である（すなわちマッピング構造が、関係を削除するのに備えてデータをＣＯＳにマッピングするように修正中である）ことを示すために、関係に関連付けられたソース関係エントリ１３０２ａおよびターゲット関係エントリ１３０２ｂを「削除」とマーク付けすることができる。このように関係エントリ１３０２ａ、１３０２ｂを作成することで、その関係の削除が進行中であるＳＥターゲット・ボリューム３０４にデータが書き込まれないよう保証することもできる。ＳＥターゲット・ボリューム内に論理的に記憶されたデータがＣＯＳ内に論理的に記憶されるようにマッピング構造が修正されると、関係を削除することができる。関係の削除は、関係テーブル１３００からの関係に関連付けられたソース関係エントリ１３０２ａおよびターゲット関係エントリ１３０２ｂの削除を含むことができる。
【００５２】
図１５を参照すると、マルチターゲット・アーキテクチャ３００内のソース３０２とＳＥターゲット３０４との間の関係を削除するための方法１４００の一実施形態が示されている。図に示されるように、方法１４００は初期に、撤回（withdraw）の要求（すなわち関係を削除する要求）が受け取られたかどうかを判別する（１４０２）。撤回の要求が受け取られた場合、方法１４００は、関係に関連付けられた関係エントリを「削除」とマーク付けする（１４０４）。これは、関係に関連付けられたソース関係エントリ１３０２ａおよびターゲット関係エントリ１３０２ｂの両方を「削除」とマーク付けすること１４０４を含むことができる。次に方法１４００は、関係がすでに進行中かどうか、すなわちマッピング構造１２０２が関係削除に備えてデータをＣＯＳにマッピングするよう修正中であるかどうかを判別する（１４０６）。
【００５３】
関係がすでに進行中である場合、方法１４００は関係をキューに入れる（１４０８）。関係をキューに入れると、方法１４００は、年少関係に先立って年長関係を処理するために、キュー内の関係を最年長から最年少へとソートする（１４０８）。これにより、マッピング構造１２０２が修正される回数が理想的に最小限となる。たとえば、マッピング構造１２０２が、その関係が削除される番にあるＣＯＳにデータをマッピングするように修正される場合、マッピング構造１２０２は再度修正される必要があり、時間とリソースの両方が無駄である。最年長から最年少へと関係を処理することで、マッピング構造１２０２の修正が最小回数であることを保証するのに役立つ。
【００５４】
様々な方法または技法を使用して、関係の年齢を決定することができる。ある実施形態では、関係の年齢は、図９に示されたような生成数を使用して決定される。たとえば、ソース・ボリューム３０２上の生成数を検査することによって、関係の年齢が容易に決定できる。図９に示された例では、生成数は新しい関係が生成される毎に増分される。したがって、生成数「１」に関連付けられた関係は最年長であり、生成数「３」に関連付けられた関係は最年少である。この規則は、他の実施形態では逆にすることができる。
【００５５】
キュー内に関係がない場合、方法１４００は単に関係を処理する（１４１０）。キュー内に１つまたは複数の関係がある場合、方法１４００はキュー内の次の関係を処理する（１４１０）。関係を処理する（１４１０）ための様々な方法は、図１６および図１７に関連して説明される。関係が処理されると、すなわちマッピング構造１２０２がＳＥターゲット３０４に関してＣＯＳ３０４にデータをマッピングするように修正されると、方法１４００は、関係テーブル１３００から関係に関連付けられた関係エントリ１３０２ａ、１３０２ｂを除去する（１４１２）。これにより、関係は終了する。次に方法は、いずれかの他の関係がキュー内にあるかどうかをチェックする１４１４。キューが空の場合、方法１４００は撤回する次の要求を待機する（１４０２）。キューが空でない場合、方法１４００はキュー内の次の関係を処理する（１４１０）。これが、キュー内のすべての関係が処理されるまで続行される。
【００５６】
ある実施形態では、方法１４００は任意の特定の時点でいくつかの関係が進行中であることが可能なように構成される。ある実施形態では、任意の特定の時点で進行中の関係の数を、ストレージ・デバイス２０４（たとえばディスク・ドライブ、ソリッドステート・ドライブなど）またはストレージ・デバイス２０４に関連付けられたデバイス・アダプタ２１０をオーバドライブ（overdrive）しないように制限することができる。たとえばある実施形態では、デバイスをオーバドライブしないように、デバイス・アダプタ２１０およびストレージ・デバイス２０４を任意の特定の時点でいくつか（たとえば４つ）の関係を処理するように制限することができる。いくつかの関係を同時に処理している場合、マッピング構造１２０２が修正される回数を最小限にするために、新しい関係よりも古い関係に優先権を与えることができる。
【００５７】
図１６を参照すると、関係を処理するための方法１４１０の実施形態が示される。こうした方法１４１０は、図１５で説明されるように、関係が処理される場合１４１０はいつでも実行可能である。図に示されるように、関係を処理するために、方法１４１０は関係に関連付けられたＳＥターゲットを初期に識別する（１５００）。次に方法１４１０は、ＳＥターゲットの最も近い年長の兄弟（ＣＯＳ）を識別する（１５０２）。次に方法１４１０は、ＳＥターゲットおよびＣＯＳの第１のトラックを検査する（１５０４）。方法１４１０が、トラックに関するＳＥターゲットのＴＢＭが設定されていないこと（ＳＥターゲットがデータのコピーを含むことを示す）を判別し（１５０６）、トラックに関するＣＯＳのＴＢＭが設定されていること（ＣＯＳがデータのコピーを含まないことを示す）を判別する（１５０８）と、方法１４１０は、リポジトリ１２００内のデータをＣＯＳにマッピングするようにマッピング構造１２０２を修正する（１５１０）。次に、データのコピーを含むことを示すように、トラックに関するＣＯＳのＴＢＭがリセットされる（１５１０）。しかしながら、トラックに関するＳＥターゲットのＴＢＭが設定されている場合（ＳＥターゲットがデータのコピーを含まないことを示す）、またはトラックに関するＣＯＳのＴＢＭが設定されていない場合（ＣＯＳがすでにデータのコピーを含むことを示す）、マッピング構造１２０２は修正されず、方法１４１０は意思決定ステップ１５１２に進む。
【００５８】
方法１４１０がトラックを検査し、マッピング構造１２０２を修正するか、または修正が不要であるものと判別すると、方法１４１０は、ＳＥターゲット３０４の最終トラックに到達したかどうかを判別する（１５１２）。最終トラックに到達していない場合、方法１４１０はＳＥターゲットの次のトラックおよびＣＯＳの対応するトラックを検査し（１５１４）、ステップ１５０６、１５０８、１５１０、１５１２を反復する。ＳＥターゲット３０４内のすべてのトラックが検査され、必要であればそれらのトラックに関してマッピング構造１２０２が修正された場合、方法１４１０は終了する。
【００５９】
図１７を参照すると、関係を処理するための方法１４１０の他の実施形態が示される。こうした方法１４１０は、関係が処理される場合１４１０には必ず図１６の方法の代わりに実行可能である。図１７に示された方法１４１０を使用して、データセットレベルの時点コピー実装などの、ＳＥターゲット内のトラックの異なる範囲が異なる最も近い年長の兄弟（ＣＯＳ）を有する実装に対処することができる。
【００６０】
図に示されるように、関係を処理するために、方法１４１０は初期に、関係に関連付けられたＳＥターゲットを識別し（１６００）、ＳＥターゲットの第１のトラック範囲（たとえば第１の５０のトラック）を識別する（１６０２）。次に方法１４１０は、トラック範囲に関連付けられた最も近い年長の兄弟（ＣＯＳ）を識別する（１６０４）。次に方法１４１０は、トラック範囲の第１のトラックおよびＣＯＳの対応するトラックを検査する（１６０６）。方法１４１０が、トラック範囲内のトラックに関するＴＢＭが設定されていないこと（トラックがデータのコピーを含むことを示す）を判別し（１６０８）、ＣＯＳの対応するトラックに関するＴＢＭが設定されていること（ＣＯＳ内のトラックがデータのコピーを含まないことを示す）を判別した（１６１０）場合、方法１４１０は、リポジトリ１２００内のデータをＣＯＳにマッピングするようにマッピング構造１２０２を修正する（１６２０）。次に、ＣＯＳ内のトラックに関するＴＢＭが、ここでデータのコピーを含むことを示すようにリセットされる（１６２０）。しかしながら、ＳＥターゲット上のトラックに関するＴＢＭが設定されている（ＳＥターゲットがデータのコピーを含まないことを示す）か、または対応するトラックに関するＣＯＳのＴＢＭが設定されていない（ＣＯＳがすでにデータのコピーを含むことを示す）場合、マッピング構造１２０２は修正されず、方法１４１０は意思決定ステップ１６１８に進む。
【００６１】
方法１４１０がトラック範囲内のトラックを検査し、マッピング構造１２０２を修正するかまたは修正が不要であると判別すると、方法１４１０はトラック範囲内に他のトラックが存在するかどうかを判別する（１６１８）。トラック範囲内に他のトラックが存在する場合、方法１４１０は、ステップ１６０８、１６１０、１６２０、１６１８を反復することによって、トラック範囲の次のトラック並びにＣＯＳ内の対応するトラックを検査する（１６１６）。トラック範囲内のすべてのトラックが検査され、必要であれば、それらのトラックに関してマッピング構造１２０２が修正された場合、方法１４１０は、ＳＥターゲット内に他のトラック範囲があるかどうかを判別する（１６１４）。他のトラック範囲がある場合、方法１４１０はそのトラック範囲に関するＣＯＳを識別し（１６０４）、トラック範囲および識別されたＣＯＳに関してステップ１６０６、１６０８、１６１０、１６２０、１６１８、１６１６を反復する。これは、ＳＥターゲットのすべてのトラック範囲内のすべてのトラックが検査され、必要であればそれらのトラックに関してマッピング構造１２０２が修正されるまで続行される。ＳＥターゲットのすべてのトラック範囲内のすべてのトラックが検査され、マッピング構造１２０２が適宜修正されると、方法１４１０は終了する。
【００６２】
図面内の流れ図およびブロック図は、本発明の様々な好ましい実施形態に従ったシステム、方法、およびコンピュータ使用可能メディアの可能な実装のアーキテクチャ、機能、および動作を示す。この点で、流れ図またはブロック図内の各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部分を表すことができる。いくつかの代替実装では、ブロック内に示された機能が図面内に示された順序以外で実行可能であることにも留意されたい。たとえば関連する機能に応じて、連続して示された２つのブロックが実際にはほぼ同時に実行可能であるか、または時にブロックは逆の順序で実行可能である。ブロック図あるいは流れ図またはその両方の各ブロック、およびブロック図あるいは流れ図またはその両方内のブロックの組み合わせが、指定された機能を実行する特定用途向けハードウェアベース・システム、または特定用途向けハードウェアおよびコンピュータ命令の組み合わせによって、実装可能であることにも留意されよう。
【図１】
0006048976.tif 000002
【図２】
0006048976.tif 000003
【図３】
0006048976.tif 000004
【図４】
0006048976.tif 000005
【図５】
0006048976.tif 000006
【図６】
0006048976.tif 000007
【図７】
0006048976.tif 000008
【図８】
0006048976.tif 000009
【図９】
0006048976.tif 000010
【図１０】
0006048976.tif 000011
【図１１】
0006048976.tif 000012
【図１２】
0006048976.tif 000013
【図１３】
0006048976.tif 000014
【図１４】
0006048976.tif 000015
【図１５】
0006048976.tif 000016
【図１６】
0006048976.tif 000017
【図１７】
0006048976.tif 000018