(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムで実行される方法であって、
マップのターゲット・ディスクが、ＦｌａｓｈＣｏｐｙカスケード内のアップストリーム・ディスクからの、ダウンストリーム・ディスクが使用できないデータを含むかどうかを判別するステップと、
前記ダウンストリーム・ディスクが前記データのコピーを有するかどうかを検出するステップと、
前記マップの前記ターゲット・ディスクが、前記アップストリーム・ディスクからの、前記ダウンストリーム・ディスクが使用できないデータを含み、前記ダウンストリーム・ディスクが前記データの前記コピーを有さない場合、前記ターゲット・ディスクから前記ダウンストリーム・ディスクへデータをコピーするステップと、
前記マップの前記ターゲット・ディスクが、前記アップストリーム・ディスクからの、前記ダウンストリーム・ディスクが使用できないデータを含まないか、または前記ダウンストリーム・ディスクが前記データの前記コピーを有する場合、前記ターゲット・ディスクから前記ダウンストリーム・ディスクへ前記データをコピーしないようにするステップと、
前記ＦｌａｓｈＣｏｐｙカスケードから前記マップを除去するステップと、
を有する、方法。
【請求項２】
前記ターゲット・ディスクから前記ダウンストリーム・ディスクへの前記データのコピーが実行された場合、前記ダウンストリーム・ディスクから新しいソース・ディスクへのマッピングを反映するために、ダウンストリーム・マップを更新することをさらに含む、請求項１に記載の方法。
【請求項３】
前記マップが増分マップである、請求項１に記載の方法。
【請求項４】
前記増分マップが、
前記ターゲット・ディスクが特定のグレインに関するデータの実際のコピーを含むかどうか、または前記特定のグレインに関する前記データを含むソース・ディスクに依拠するかどうかを示す、分割ビットマップ値と、
前記ターゲット・ディスクの前記特定のグレイン上に含まれるデータが、前記ソース・ディスクの対応するグレイン上に含まれるデータと異なるかどうかを示す、差異ビットマップ値と、
を備える、請求項３に記載の方法。
【請求項５】
前記特定のグレインに関する分割ビットマップ値０および前記特定のグレインに関する差異ビットマップ値０が、前記マップの前記ターゲット・ディスクが、前記アップストリーム・ディスクからの、前記ダウンストリーム・ディスクが使用できない前記特定のグレインに関するデータを含まないことを示す、請求項４に記載の方法。
【請求項６】
前記特定のグレインに関する分割ビットマップ値０および前記特定のグレインに関する差異ビットマップ値１が、前記マップの前記ターゲット・ディスクが、前記アップストリーム・ディスクからの、前記ダウンストリーム・ディスクが使用できない前記特定のグレインに関するデータを含まないことを示す、請求項４に記載の方法。
【請求項７】
前記特定のグレインに関する分割ビットマップ値１および前記特定のグレインに関する差異ビットマップ値０の場合、前記コピーが必要であるかどうかを判別するために、アップストリーム・マップのビットマップ値を使用することをさらに含む、請求項４に記載の方法。
【請求項８】
対応するグレインに関するアップストリーム・マップの分割ビットマップ値が１であり、前記対応するグレインに関するアップストリーム・マップの差異ビットマップ値が１である場合、前記ダウンストリーム・ディスクへの前記特定のグレインのコピーが実行される、請求項７に記載の方法。
【請求項９】
前記特定のグレインに関する分割ビットマップ値１および前記特定のグレインに関する差異ビットマップ値０が、前記マップの前記ターゲット・ディスクが、他のアップストリーム・ディスクからの、前記ダウンストリーム・ディスクが使用できない前記特定のグレインに関するデータを含むことを示す、請求項４に記載の方法。
【請求項１０】
前記ダウンストリーム・ディスクが高スペース効率ディスクであり、
前記高スペース効率ディスク上で必要最低数のグレインを割り振ること、及び
前記マップの除去後、前記高スペース効率ディスク上の特定のグレインが前記他のアップストリーム・ディスク上で使用可能である場合、前記高スペース効率ディスク上のスペースを割り振り解除すること、およびダウンストリーム・マップを更新することをさらに含む、
請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にＦｌａｓｈＣｏｐｙに関し、より具体的に言えば、増分マップを含むＦｌａｓｈＣｏｐｙカスケード内でのマップのクリーニングを最適化するための方法に関する。
【背景技術】
【０００２】
ＦｌａｓｈＣｏｐｙ（Ｒ）とは、論理ボリュームまたはデータ・セット全体のポイントインタイム・コピー（point-in-time copies）をほぼ瞬時に作成することが可能な、様々なストレージ・デバイス上でサポートされる機能である。（ＦｌａｓｈＣｏｐｙ（Ｒ）は、米国、諸外国、またはその両方における、インターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。）したがって、ＦｌａｓｈＣｏｐｙの機能により、データのポイントインタイムの全ボリューム・コピーを作成することが可能であり、このコピーは読み取りまたは書き込みアクセスに即時に利用することができる。このコピーを、コンピューティング環境で利用可能な標準的なバックアップ・ツールと共に使用して、テープ上にバックアップ・コピーを作成することができる。
【０００３】
さらにＦｌａｓｈＣｏｐｙは、ターゲット・ボリューム上にソース・ボリュームのポイントインタイム・コピーを作成する。ＦｌａｓｈＣｏｐｙ動作が開始された場合、ソース・ボリュームとターゲット・ボリュームとの間にＦｌａｓｈＣｏｐｙ関係が作成される。したがって、ＦｌａｓｈＣｏｐｙ関係とは、ＦｌａｓｈＣｏｐｙソース・ボリュームおよびＦｌａｓｈＣｏｐｙターゲット・ボリュームの「マッピング」のことである。このマッピングによって、そのソース・ボリュームのポイントインタイム・コピーを、関連付けられたターゲット・ボリュームへとコピーすることができる。ＦｌａｓｈＣｏｐｙ関係は、ＦｌａｓｈＣｏｐｙ動作が開始された時点から、ストレージ・ユニットがすべてのデータをソース・ボリュームからターゲット・ボリュームへとコピーするまで、または、ＦｌａｓｈＣｏｐｙ関係が削除されるまで、このボリューム・ペアの間に存在する。さらに、カスケードＦｌａｓｈＣｏｐｙ構成とは、あるマップのソース・ディスクが他のマップのターゲット・ディスクである構成のことである。たとえば、あるマップがソース・ディスクＡおよびターゲット・ディスクＢで定義され、他のマップがソース・ディスクＢおよびターゲット・ディスクＣで定義される場合がある。カスケードは、この３つのディスクＡ、Ｂ、およびＣ、ならびに２つのマップを含むことになる。コピーが作成されると、このコピーは読み取りおよび書き込みの両方のアクセスに即時に利用可能である。
【０００４】
データが物理的にコピーされる場合、バックグラウンド・プロセスは、トラック（またはグレイン（grain））をソース・ボリュームからターゲット・ボリュームへとコピーする。バックグラウンド・コピーを完了するのに要する時間は、たとえば、コピーされるデータの量、実行中のバックグラウンド・コピー・プロセスの数、および、ストレージ・システム上で実行中の他の作業、その他に応じて決まる。
【０００５】
ＦｌａｓｈＣｏｐｙ動作がソース・ボリュームからターゲット・ボリュームへとデータをコピーする場合、そのソース・ボリュームは、同時に複数のＦｌａｓｈＣｏｐｙ関係に関与することができる（複数関係ＦｌａｓｈＣｏｐｙとして知られる）。すなわち、複数関係ＦｌａｓｈＣｏｐｙ機能により、ソース・ボリュームは複数のターゲットを同時に有することができる。あるボリューム上のトラックが既存のＦｌａｓｈＣｏｐｙ関係のターゲット・トラックでない場合、新しいＦｌａｓｈＣｏｐｙ関係におけるターゲットとなることができる。
【０００６】
したがって、たとえば同じデータの複数のコピーが必要な場合、この複数関係ＦｌａｓｈＣｏｐｙ機能により、ＦｌａｓｈＣｏｐｙボリュームが確立され次第、単一のソース・ボリュームを異なるターゲット・ボリュームに複数回（たとえば１２回まで）コピーすることができる。たとえば、ＦｌａｓｈＣｏｐｙを使用してボリュームＡをボリュームＢにコピーすると想定する。そのＦｌａｓｈＣｏｐｙ関係が確立され次第、ボリュームＡはボリュームＣにコピーすることができる。この関係が確立されると、ボリュームＡはボリュームＤにコピーできる、という具合である。加えて、単一ボリューム内に複数のセッションが可能である。
【０００７】
複数ターゲットＦｌａｓｈＣｏｐｙは、カスケード方法を使用して実装された場合、コピー数に関してかなりのスケーラビリティを提供する一方で、ユーザにコピーのコピーを作成する機能も与える。しかしながら、複数ターゲットＦｌａｓｈＣｏｐｙは、カスケード方法を使用して実装された場合、ＦｌａｓｈＣｏｐｙマップをカスケードから除去する前に「クリーニング」しなければならない、という望ましくない概念も導入してしまう。このクリーニング・プロセスによって、カスケード内のディスクが、除去されるマップのターゲット・ディスクにいっさい依存しないことが保証される。クリーニング・プロセスが完了するにはかなりの時間を要する可能性がある。
【０００８】
加えてＦｌａｓｈＣｏｐｙは、高スペース効率（space-efficient）のボリュームを利用することができる。ＦｌａｓｈＣｏｐｙの高スペース効率（ＳＥ）機能により、実際にソース・ボリュームからターゲット・ボリュームへトラック（またはグレイン）をコピーする場合にのみ、ターゲット・ボリューム上のスペースを使用することにより、「必要に応じて」ストレージ・スペースを割り振る。高スペース効率ボリュームを使用しない場合、ＦｌａｓｈＣｏｐｙ機能は、ターゲット・ボリューム上のスペースでたとえデータがコピーされない場合であっても、そのすべてのスペースが割り振られ、使用可能であることを必要とする。しかしながら、高スペース効率ボリュームを使用すると、ＦｌａｓｈＣｏｐｙは、ＦｌａｓｈＣｏｐｙ関係の存続期間中に変化するデータの書き込みに必要なトラック（またはグレイン）数のみを使用するため、スペースは「必要に応じて」割り振られる。高スペース効率のＦｌａｓｈＣｏｐｙボリュームは、ソース・ボリュームとまったく同じ寸法のターゲット・ボリュームを必要としないため、ＦｌａｓｈＣｏｐｙ  ＳＥ機能は、システム・ストレージをより効果的に使用できる可能性を高くする。
【０００９】
ボリューム作成プロセス中に、ターゲット・ボリュームに対して高スペース効率属性を定義することができる。高スペース効率ボリュームは、すでに作成済みの高スペース効率ストレージを有する任意の範囲のプールから作成可能である。高スペース効率のソースおよびターゲット・ボリュームが作成されており、それらが使用可能である限り、ＦｌａｓｈＣｏｐｙ関係が作成された場合にそれらを選択することができる。
【００１０】
したがって前述のように、ＦｌａｓｈＣｏｐｙ  ＳＥ機能は、システム・ストレージをより効果的に使用できる可能性を高くする。しかしながら、複数ターゲットＦｌａｓｈＣｏｐｙと高スペース効率ボリュームとを組み合わせることによって、クリーニング・プロセスに別の問題が加えられる。すなわち、顧客が毎日のバックアップ・コピーを有し、たとえば、顧客が毎日このバックアップの新しい高スペース効率のコピーを作成する、という状況を考えてみる。カスケードおよび複数ターゲットのＦｌａｓｈＣｏｐｙおよび高スペース効率ボリュームによって、このセットアップは実行可能である。また、毎日のバックアップを完了するために要する時間を削減するために、ＦｌａｓｈＣｏｐｙマップが増分的に作成されると考えてみる。このシナリオにおけるクリーニング・プロセスの問題は、クリーニング・プロセスに、毎日のバックアップから最新の高スペース効率コピーへとすべてのデータをコピーする必要が生じることである。しかしながら、毎日のコピーは完全なコピーであるため、高スペース効率のコピー全体が割り振られる必要がある。したがって、このシナリオでは、高スペース効率ボリュームの利用は、カスケード・クリーニング方法によって「中断（broken）」される。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
したがって当分野では、前述の欠点および制限を克服することが求められている。
【課題を解決するための手段】
【００１２】
本発明の第１の態様では、ある方法は、プログラミング命令を有するコンピュータ読み取り可能媒体上に具体的に実施された（tangibly embodied）コンピュータ実行可能コードを有するコンピュータ・インフラストラクチャ内で実装される。このプログラミング命令は、マップのターゲット・ディスクが、ＦｌａｓｈＣｏｐｙカスケード内のアップストリーム・ディスクからの、ダウンストリーム・ディスクが使用できないデータを含むかどうかを判別すること、および、ダウンストリーム・ディスクがこのデータのコピーを有するかどうかを検出することを、実行するように動作可能である。加えて、プログラミング命令は、マップのターゲット・ディスクが、アップストリーム・ディスクからの、ダウンストリーム・ディスクが使用できないデータを含み、ダウンストリーム・ディスクがそのデータのコピーを有さない場合、ターゲット・ディスクからダウンストリーム・ディスクへデータをコピーするように動作可能である。さらに、プログラミング命令は、マップのターゲット・ディスクが、アップストリーム・ディスクからの、ダウンストリーム・ディスクが使用できないデータを含まないか、またはダウンストリーム・ディスクがそのデータのコピーを有する場合、ターゲット・ディスクからダウンストリーム・ディスクへデータをコピーしないように動作可能である。さらにプログラミング命令は、ＦｌａｓｈＣｏｐｙカスケードからマップを除去するように動作可能である。
【００１３】
本発明の他の態様では、あるシステムは、ＦｌａｓｈＣｏｐｙカスケード内のマップに関するビットマップ値を検出すること、および、この検出に基づいてＦｌａｓｈＣｏｐｙクリーニング・プロセスが必要であるかどうかを判別し、必要である場合、ＦｌａｓｈＣｏｐｙクリーニング・プロセスを実行することを、実行するように動作可能なビットマップ・ツールを備える。加えて、このビットマップ・ツールは、ＦｌａｓｈＣｏｐｙクリーニング・プロセスが実行される場合、ＦｌａｓｈＣｏｐｙカスケード内のダウンストリーム・マップに関するビットマップ値を修正するように動作可能である。さらにこのビットマップ・ツールは、ＦｌａｓｈＣｏｐｙカスケードからマップを除去するように動作可能である。
【００１４】
本発明の追加の態様では、媒体内に実施された読み取り可能プログラム・コードを有するコンピュータ使用可能ストレージ媒体を備えるコンピュータ・プログラム製品が提供される。このコンピュータ・プログラム製品は、マップのターゲット・ディスクが、カスケード内のアップストリーム・ディスクからの、ダウンストリーム・ディスクが使用できないデータを含むかどうかを判別すること、および、ダウンストリーム・ディスクがこのデータのコピーを有するかどうかを検出することを、実行するように動作可能な、少なくとも１つのコンポーネントを含む。加えて、少なくとも１つのコンポーネントは、マップのターゲット・ディスクが、アップストリーム・ディスクからの、ダウンストリーム・ディスクが使用できないデータを含み、ダウンストリーム・ディスクがそのデータのコピーを有さない場合、ターゲット・ディスクからダウンストリーム・ディスクへデータをコピーするように動作可能である。さらに、少なくとも１つのコンポーネントは、マップのターゲット・ディスクが、アップストリーム・ディスクからの、ダウンストリーム・ディスクが使用できないデータを含まないか、またはダウンストリーム・ディスクがそのデータのコピーを有する場合、ターゲット・ディスクからダウンストリーム・ディスクへデータをコピーしないように動作可能である。さらに少なくとも１つのコンポーネントは、カスケードからマップを除去するように動作可能である。
【００１５】
本発明の他の態様では、ある方法は、マップのターゲット・ディスクが、ＦｌａｓｈＣｏｐｙカスケード内のアップストリーム・ディスクからの、ダウンストリーム・ディスクが使用できないデータを含むかどうかを判別すること、および、ダウンストリーム・ディスクがこのデータのコピーを有するかどうかを検出することを、実行するように動作可能な、コンピュータ・インフラストラクチャを提供することを含む。加えて、コンピュータ・インフラストラクチャは、マップのターゲット・ディスクが、アップストリーム・ディスクからの、ダウンストリーム・ディスクが使用できないデータを含み、ダウンストリーム・ディスクがそのデータのコピーを有さない場合、ターゲット・ディスクからダウンストリーム・ディスクへデータをコピーするように動作可能である。さらに、コンピュータ・インフラストラクチャは、マップのターゲット・ディスクが、アップストリーム・ディスクからの、ダウンストリーム・ディスクが使用できないデータを含まないか、またはダウンストリーム・ディスクがそのデータのコピーを有する場合、ターゲット・ディスクからダウンストリーム・ディスクへデータをコピーしないように動作可能である。さらにコンピュータ・インフラストラクチャは、ターゲット・ディスクからダウンストリーム・ディスクへデータをコピーすることが、ダウンストリーム・ディスクから新しいソース・ディスクへのマッピングを反映するために実行される場合、ダウンストリーム・マップを更新するように動作可能である。加えてコンピュータ・インフラストラクチャは、ＦｌａｓｈＣｏｐｙカスケードからマップを除去するように動作可能である。
【００１６】
本発明については、以下の、本発明の例示的諸実施形態の非限定的な例として示された複数の図面を参照しながら、発明を実施するための形態で説明する。
【図面の簡単な説明】
【００１７】
【図１】本発明に従った諸ステップを実装するための例示的環境を示す図である。
【図２】本発明の態様に従った例示的ＦｌａｓｈＣｏｐｙカスケードを示す図である。
【図３】本発明の態様に従った例示的ＦｌａｓｈＣｏｐｙカスケードを示す図である。
【図４】本発明の態様に従った例示的ＦｌａｓｈＣｏｐｙカスケードを示す図である。
【図５】本発明の態様に従った例示的ＦｌａｓｈＣｏｐｙカスケードを示す図である。
【図６】本発明の態様に従った例示的ＦｌａｓｈＣｏｐｙカスケードを示す図である。
【図７】本発明の諸態様を実施するための例示的流れを示す図である。
【発明を実施するための形態】
【００１８】
本発明は、一般にＦｌａｓｈＣｏｐｙカスケードに関し、より具体的に言えば、増分マップを含むＦｌａｓｈＣｏｐｙカスケード内でのマップのクリーニングを最適化するための方法に関する。本発明を実装することによって、カスケード内に増分マップがある場合、ＦｌａｓｈＣｏｐｙマップをクリーニングするために要する時間を削減することができる。加えて、本発明を実装することで、高スペース効率コピー上でのグレインのクリーニングを制限し、スペースの不要な割り振りを防ぐことができる。
【００１９】
当業者であれば理解されるように、本発明は、システム、方法、またはコンピュータ・プログラム製品として具体化することができる。したがって本発明は、完全なハードウェア実施形態、完全なソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、本明細書では一般に「回路」、「モジュール」、または「システム」と呼ばれる可能性のあるソフトウェア態様およびハードウェア態様を組み合わせた実施形態の、形を取ることができる。さらに本発明は、媒体内に実施されたコンピュータ使用可能プログラム・コードを有する任意の具体的な式の媒体内に実施された、コンピュータ・プログラム製品の形を取ることができる。
【００２０】
１つまたは複数のコンピュータ使用可能媒体またはコンピュータ読み取り可能媒体の、任意の組み合わせを使用することができる。コンピュータ使用可能媒体またはコンピュータ読み取り可能媒は、たとえば電子、磁気、光、電磁、赤外線、または半導体の、システム、装置、または伝搬媒体とすることができるが、これらに限定されるものではない。コンピュータ読み取り可能媒体のより具体的な例（非網羅的リスト）には、以下のものが含まれる。
−１本または複数本のワイヤを有する電気接続
−ポータブル・コンピュータ・ディスケット
−ハード・ディスク
−ランダム・アクセス・メモリ（ＲＡＭ）
−読み取り専用メモリ（ＲＯＭ）
−消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）
−光ファイバ
−ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤＲＯＭ）
−光ストレージ・デバイス
−インターネットまたはイントラネットをサポートするような伝送媒体、または磁気ストレージ・デバイス
【００２１】
コンピュータ使用可能媒体またはコンピュータ読み取り可能媒体は、その上にプログラムが印刷される紙または他の好適な媒体とすることも可能であるため、このプログラムは、たとえば紙または他の媒体の光学スキャンを介して電気的に取り込まれ、その後コンパイルされ、解釈されるか、または必要であれば他の好適な様式で処理された後、コンピュータ・メモリ内に格納されることが可能である。
【００２２】
本書との関連において、コンピュータ使用可能媒体またはコンピュータ読み取り可能媒体は、命令実行システム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、包含、格納、通信、伝搬、または移送することが可能な、任意の媒体とすることができる。コンピュータ使用可能媒体は、コンピュータ使用可能プログラム・コードがベースバンド内に、または搬送波の一部として実施された、伝搬データ信号を含むことができる。コンピュータ使用可能プログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなどを含むがこれらに限定されない、任意の適切な媒体を使用して伝送することができる。
【００２３】
本発明の諸動作を実施するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などの、オブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語などの、従来の手続き型プログラミング言語を含む、任意の組み合わせの１つまたは複数のプログラミング言語で作成可能である。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモート・コンピュータは、任意のタイプのネットワークを介してユーザのコンピュータに接続可能である。これは、たとえばローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含むことが可能であるか、あるいは（たとえばインターネット・サービス・プロバイダを使用し、インターネットを介して）外部コンピュータに接続することが可能である。
【００２４】
図１は、本発明に従ったプロセスを管理するための例示的環境１０を示す。この範囲で、環境１０は、本明細書で説明されるプロセスを実行できるサーバまたは他のコンピューティング・システム１２を含む。具体的に言えば、サーバ１２はコンピューティング・デバイス１４を含む。コンピューティング・デバイス１４は、第三者サービス・プロバイダのネットワーク・インフラストラクチャまたはコンピューティング・デバイス（そのうちのいずれかが全体として図１に表されている）上に常駐することができる。
【００２５】
コンピューティング・デバイス１４は、ビットマップ・ツール３０を含む。ビットマップ・ツール３０は、マップのビットマップ値を検出し、マップのビットマップ値を変更し、たとえば本明細書で説明されるプロセスなどのＦｌａｓｈＣｏｐｙプロセスを開始するように動作可能である。ビットマップ・ツール３０は、別々のモジュールまたは結合モジュールとしてメモリ２２Ａ内に格納されたプログラム・コントロール４４内に、１つまたは複数のプログラム・コードとして実装可能である。
【００２６】
コンピューティング・デバイス１４は、プロセッサ２０、メモリ２２Ａ、Ｉ／Ｏインターフェース２４、およびバス２６も含む。メモリ２２Ａは、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量ストレージ、および、実行中に大容量ストレージからコードを取り出さなければならない回数を削減するために少なくともいくつかのプログラム・コードの一時ストレージを提供するキャッシュ・メモリを含むことができる。加えて、コンピューティング・デバイスは、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、およびＣＰＵを含む。
【００２７】
コンピューティング・デバイス１４は、外部Ｉ／Ｏデバイス／リソース２８およびストレージ・システム２２Ｂと通信している。たとえばＩ／Ｏデバイス２８は、ある個人が、コンピューティング・デバイス１４、あるいはコンピューティング・デバイス１４が任意のタイプの通信リンクを使用して１つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイスと、対話できるようにする、任意のデバイスを備えることができる。外部Ｉ／Ｏデバイス／リソース２８は、たとえばハンドヘルド・デバイス、ＰＤＡ、ハンドセット、キーボードなどとすることができる。
【００２８】
一般に、プロセッサ２０は、メモリ２２Ａあるいはストレージ・システム２２Ｂまたはその両方に格納可能な、コンピュータ・プログラム・コード（たとえばプログラム・コントロール４４）を実行する。さらに本発明の諸態様によれば、プログラム・コードを有するプログラム・コントロール４４はビットマップ・ツール３０を制御する。プロセッサ２０は、コンピュータ・プログラム・コードを実行しながら、メモリ２２Ａ、ストレージ・システム２２Ｂ、あるいはＩ／Ｏインターフェース２４、またはそれらすべてとの間で、データの読み取りあるいは書き込みまたはその両方を実行することができる。プログラム・コードは本発明の諸プロセスを実行する。バス２６は、コンピューティング・デバイス１４内の各コンポーネント間に通信リンクを提供する。
【００２９】
コンピューティング・デバイス１４は、その上にインストールされたコンピュータ・プログラム・コードを実行することが可能な任意の汎用コンピューティング製品（たとえばパーソナル・コンピュータ、サーバなど）を備えることができる。しかしながら、コンピューティング・デバイス１４は、本明細書で説明される諸プロセスを実行可能な、様々な可能な等価コンピューティング・デバイスの代表に過ぎないことを理解されよう。この点で、諸実施形態において、コンピューティング・デバイス１４によって提供される機能は、汎用あるいは特定用途向けまたはその両方の、ハードウェアあるいはコンピュータ・プログラム・コードまたはその両方の、任意の組み合わせを含む、コンピューティング製品によって実装可能である。各実施形態において、プログラム・コードおよびハードウェアは、それぞれ標準的なプログラミングおよびエンジニアリング技法を使用して作成可能である。
【００３０】
同様に、コンピューティング・インフラストラクチャ１２は、本発明を実装するための様々なタイプのコンピュータ・インフラストラクチャの単なる例である。たとえば諸実施形態では、サーバ１２は、本明細書で説明されるプロセスを実行するために、ネットワーク、共有メモリなどの任意のタイプの通信リンクを介して通信する、２つまたはそれ以上のコンピューティング・デバイス（たとえばサーバ・クラスタ）を備える。さらに、サーバ１２上の１つまたは複数のコンピューティング・デバイスは、本明細書で説明される諸プロセスを実行しながら、任意のタイプの通信リンクを使用してサーバ１２の外部にある１つまたは複数の他のコンピューティング・デバイスと通信することができる。この通信リンクは、有線あるいは無線またはその両方のリンクの任意の組み合わせを備える、１つまたは複数タイプのネットワーク（たとえばインターネット、ワイド・エリア・ネットワーク、ローカル・エリア・ネットワーク、仮想専用ネットワークなど）の任意の組み合わせを備える、あるいは、伝送技法およびプロトコルの任意の組み合わせを利用する、またはそれらすべてが可能である。
【００３１】
諸実施形態では、本発明は、加入、広告、あるいは料金またはそれらすべてに基づいて、本発明の諸ステップを実行するビジネス方法を提供する。すなわち、Ｓｏｌｕｔｉｏｎ  Ｉｎｔｅｇｒａｔｏｒなどのサービス・プロバイダは、本明細書で説明される諸プロセスを実行するように提供可能である。この場合サービス・プロバイダは、１人または複数の顧客に対して本発明のプロセス・ステップを実行するコンピュータ・インフラストラクチャの作成、維持、展開、サポートなどを、実行することができる。これらの顧客は、たとえば技術を使用する任意のビジネスとすることができる。次にサービス・プロバイダは、加入あるいは料金またはその両方の契約に基づいて顧客から支払いを受けることが可能である、あるいはサービス・プロバイダは、１人または複数の第三者に対する広告コンテンツの販売から支払いを受けることが可能である、または、その両方が可能である。
【００３２】
増分マップ
本発明の諸態様によれば、増分マップはソース・ディスクとターゲット・ディスクとの間の差異を追跡することが可能なメカニズムを提供する。前述のように、ＦｌａｓｈＣｏｐｙマップのクリーニングは、ターゲット・ディスク上にあるデータを読み取ること、および、そのデータを必要とするカスケード内の次のダウンストリーム・ディスクにそれを書き込むことを、含むことができる。ここで、ダウンストリーム・ディスクが高スペース効率である場合、ダウンストリーム・ディスクにいずれかのデータが書き込まれることによって、そのディスク上でスペースが割り振られることになる。しかしながら、クリーニング・マップのターゲット上にあるデータが、クリーニング・マップのソース上にあるデータと同じである場合、ソース・ディスクとターゲット・ディスクとの間のマップが除去された後、ダウンストリーム・ディスクは依然としてソース・ディスクからデータを取得できるため、本発明の諸態様に従って、このデータはクリーニングされる必要がない。
【００３３】
図２は、本発明の諸態様に従った２つのマップの例示的カスケードを示す。より具体的に言えば、図２は３つのディスク２０５、２１０、および２１５を示す図である。図２に示されるように、ディスクの上部はそれぞれのディスクからたとえばホストに提示されるデータを示し、ディスクの図の下部は、それぞれのディスク上に実際に格納されたデータを示す。したがって、ディスク１  ２０５は、データの４つのグレイン（またはトラック）Ａ、Ｂ、Ｃ、Ｄをユーザに提示し、実際にそれらのグレインＡ、Ｂ、Ｃ、Ｄはディスク１  ２０５上に格納されている。これに対して、ディスク２  ２１０はデータの４つのグレインＡ、Ｆ、Ｃ、Ｄをユーザに提示する。しかしながら、ディスク２  ２１０の下部に示されているように、ディスク２  ２１０上には実際にはグレイン２および４（それぞれＦおよびＤ）のみが格納されており、ホストにグレイン１および３（それぞれＡおよびＣ）を提示するためには、ディスク１  ２０５に格納されたデータに依拠する。
【００３４】
さらに、ディスク１  ２０５およびディスク２  ２１０は、それぞれ完全に割り振られたディスクである。すなわち、完全に割り振られたディスクを用いて（すなわち、高スペース効率ボリュームを用いずに）前述したように、ＦｌａｓｈＣｏｐｙ機能は、たとえそこにデータがコピーされない場合であっても、ターゲット・ボリューム上のすべてのスペースの割り振りおよび使用が可能であることを必要とする。したがって、図２に示されるように、たとえディスク２  ２１０の内部にグレインＡおよびＣの実際のコピーが含まれなくとも、それらのグレイン用のスペース（疑問符によって示される）は割り振られる。
【００３５】
さらに、図２の例で示されるように、ディスク３  ２１５は高スペース効率ディスクである。すなわち前述のように、高スペース効率ディスクでは、実際にソース・ボリュームからターゲット・ボリュームへトラック（またはグレイン）をコピーする場合にのみ、ターゲット・ボリューム上のスペースを使用することによって、ストレージ・スペースが「必要に応じて」割り振られる。したがって図２に示されるように、ディスク３  ２１５はグレインＢ用のスペース（ディスク３  ２１５上に格納されたデータ図の黒塗りの部分で示される）のみが割り振られている。
【００３６】
加えて図２に示されるように、マップ１  ２２０はディスク１  ２０５とディスク２  ２１０との間の増分マップである。すなわち、マップ１  ２２０は分割ビットマップ（分割）および差異ビットマップ（差異）を含む。本発明の諸態様によれば、分割ビットマップはデータの位置を追跡するためにＦｌａｓｈＣｏｐｙプロセスで使用される。より具体的に言えば、分割ビットマップ内の「０」はデータがソース・ディスク上に配置されていることを示し、分割ビットマップ内の「１」はデータがターゲット・ディスク上に配置されていることを示す。さらに差異ビットマップは、ソース・ディスクとターゲット・ディスクの間の差異、たとえば仮想ディスクを追跡するために、ＦｌａｓｈＣｏｐｙプロセスで使用される。より具体的に言えば、差異ビットマップ内の「０」は、ソース・ディスクおよびターゲット・ディスク上に配置されたデータ間に差がないことを示し、差異ビットマップ内の「１」は、ソース・ディスク上に配置されたデータとターゲット・ディスク上に配置されたデータとの間に差があることを示す。
【００３７】
したがって、図２の例を参照すると、マップ１  ２２０の分割ビットマップは、グレインＡおよびＣがソース・ディスク（ディスク１  ２０５）上に配置され、グレインＦおよびＤがターゲット・ディスク（ディスク２  ２１０）上に配置されていることを示す。さらにマップ１  ２２０の差異ビットマップは、グレイン１、グレイン３、およびグレイン４には、ソース・ディスク（ディスク１  ２０５）とターゲット・ディスク（ディスク２  ２１０）との間に差異がないことを示す。すなわち、ソース・ディスクとターゲット・ディスクとの間で、グレイン１、３、および４、すなわちそれぞれＡ、Ｃ、およびＤは依然として同じままである。しかしながら、マップ１  ２２０の差異ビットマップは、グレイン２がソース・ディスク（ディスク１  ２０５）とターゲット・ディスク（ディスク２  ２１０）との間に差異があることを示す。すなわち図２に示されるように、グレイン２は、ディスク１  ２０５上のＢからディスク２  ２１０上のＦへと変化している。
【００３８】
マップ２  ２２５は、ディスク２  ２１０とディスク３  ２１５との間のマップである。さらにマップ２  ２２５は増分マップではなく、分割ビットマップのみを示す。しかしながら、非増分マップを用いる場合、分割ビットマップおよび差異ビットマップは同じになる。したがって分割ビットマップのみが示されている。しかしながら諸実施形態では、分割ビットマップおよび差異ビットマップの両方をマップによって明示的に示すことが可能であることを理解されたい。
【００３９】
理解されるように、マップ２  ２２５は、グレイン１、３、および４（それぞれＡ、Ｃ、およびＤ）がソース・ディスク（ディスク２  ２１０）上に配置され、グレイン２（Ｂ）がターゲット・ディスク（ディスク３  ２１５）上に配置されることを示す。さらにマップ２  ２２５は、グレイン１、３、および４（それぞれＡ、Ａ、Ｃ、およびＤ）はソース・ディスク（ディスク２  ２１０）とターゲット・ディスク（ディスク３  ２１５）との間で同じであり、グレイン２はソース・ディスク（ディスク２  ２１０）とターゲット・ディスク（ディスク３  ２１５）との間で同じでないことも示す。
【００４０】
クリーニング・プロセス
従来の実装を上回るカスケード実装の欠点は、ターゲット・ディスク間に追加の依存性を生み出すことである。カスケード実装は、一方のターゲット・ディスクからの読み取り要求を満たすために、カスケード内の他方のターゲット・ディスクからデータを読み取らなければならない可能性がある。したがって、ユーザがカスケードの一部であるＦｌａｓｈＣｏｐｙマッピングを停止および削除したい場合、第１に、カスケード内の他のターゲット・ディスクによって要求されるすべてのデータを、別のターゲット・ディスクにコピーする必要がある。このデータのコピー・プロセスがクリーニングと呼ばれる。この状態では、クリーニング動作の完了を保証するために、除去されているマップのターゲット・ディスクにアクセスすることはできない。ターゲット・ディスクがクリーンな場合のみ、マップを停止して削除することができる。
【００４１】
したがって図２に示されるように、２つのグレインがディスク１  ２０５からディスク２  ２１０にコピーされている。しかしながら、ディスク３  ２１５上の第２のグレインのみが割り振られている。ここでマップ１  ２２０をカスケードから除去するためには、ディスク３  ２１５が、ディスク２  ２１０を除去する前にホストに提示するイメージを維持できることが保証されなければならない。したがって、前述のようにマップ１  ２２０が増分であると想定すると、ビットマップ・ツール３０は、ディスク１  ２０５上のグレイン４（Ｄ）がディスク２  ２１０と同じであるものと決定する。
【００４２】
したがって本発明の諸態様によれば、この例示的シナリオでは、ディスク２  ２１０をカスケードから除去する前に、ディスク２  ２１０からディスク３  ２１５にコピーする必要のあるグレインはない。すなわち、クリーニング・プロセスで増分マップを利用しない従来の手法を用いる場合、クリーニングするか否かの決定は分割ビットマップに基づくことになる。そこでこの例では、従来の手法を使用して、マップ１  ２２０の分割ビットマップが、ディスク２がグレインＤを含むことを示すため、ディスク３  ２１５上にグレインＤ用のスペースが割り振られることになり、グレインＤはディスク２  ２１０からディスク３  ２１５へとコピーされることになる。しかしながら本発明を実装することにより、ビットマップ・ツール３０は、グレインＤのクリーニングが不要であり、したがって回避可能であることを決定できる。
【００４３】
クリーニング・プロセスを回避することの利点は２点存在する可能性がある。第１に、不要なクリーニング・プロセスを回避することによって、時間およびリソースが消費されない。さらに、ダウンストリームの高スペース効率ディスク上のスペースが、どこからでもアクセス可能なデータの格納用に不要に利用されない。これにより、高スペース効率ディスク上のこのディスクは、他の目的、たとえば他のグレインまたはデータの格納などのために利用することができる。
【００４４】
図３は、図２に示された例示的カスケード２００のマップ１がカスケードから除去され、ディスク２が除去された後の、例２００’を示す。図３に示されるように、マップ２  ２２５は維持されるが、ここではマップ２  ２２５はディスク１  ２０５とディスク３  ２１５との間のマップである。さらに図３に示されるように、この例でビットマップ・ツール３０は、マップ２  ２２５を、ディスク１  ２０５とディスク３  ２１５との間のマップとして働くように修正する必要はない。
【００４５】
図４は、図２に示された例示的カスケード２００のマップ１がカスケードから除去され、ディスク２が除去された後の、他の例２００”を示す。諸実施形態では、本発明は高スペース効率ディスク上のフリー・スペースを最大にすることが望ましいものと企図する。図４に示されるように、ディスク３  ２１５”は、ディスク１  ２０５上に格納されたデータと同じデータをホストに提示している。したがって、ディスク３  ２１５”のグレイン２（Ｂ）は、そのデータがディスク１  ２０５上に格納されているため、ディスク３（図３に図示）上に残っている必要はない。したがって本発明の諸態様に従い、図４に示されるように、ビットマップ・ツール３０はディスク３  ２１５”からグレイン２（Ｂ）を除去している。ディスク３  ２１５”からグレイン２（Ｂ）を除去することによって、グレイン２用にあらかじめ割り振られていたスペースを、たとえば他のデータを格納するために使用できる可能性がある。
【００４６】
さらに図４に示されるように、ビットマップ・ツール（図１に図示）は、図２に示されたマップ２  ２２５から修正されたマップ２  ２２５”を有する。より具体的に言えば、ビットマップ・ツールは、マップ２  ２２５”の分割ビットマップを、グレイン２用のゼロを含むように修正しており、これは、ディスク３  ２１５”がもはやグレイン２（Ｂ）のコピーを含まないが、ディスク１  ２０５内に格納されたグレイン２のコピーに依拠することを示す。これは、ディスク３がグレイン２（Ｂ）のそれ自体のコピーを維持し、マップ２  ２２５を変更する必要のない、図３とは対照的である。さらに図４の例に示されるように、ここでマップ２  ２２５”は、マップ２  ２２５”内のゼロによって示されるように、そのすべてのグレインをディスク１  ２０５にマッピングする。
【００４７】
図５は、本発明の諸態様に従った２つのマップの追加の例示的カスケードを示す。より具体的に言えば、図５は３つのディスク２０５、２１０、および５１５の図を示す。ディスク１  ２０５は、データの４つのグレインをユーザに提示し、それらのグレインＡ、Ｂ、Ｃ、Ｄをディスク１  ２０５上に実際に格納している。対照的に、ディスク２  ２１０はデータＡ、Ｆ、Ｃ、Ｄの４つのグレインをユーザに提示する。しかしながら、ディスク２１０の下部に示されるように、ディスク２  ２１０は、実際にはグレイン２および４（それぞれＦおよびＤ）のみを格納しており、グレイン１および３（それぞれＡおよびＣ）をホストに提示するためにはディスク１  ２０５に格納されたデータに依拠する。
【００４８】
さらに図５の例に示されるように、ディスク３  ５１５は高スペース効率ディスクである。すなわち前述のように、高スペース効率ディスクを用いると、ソース・ボリュームからターゲット・ボリュームへと実際にトラックをコピーする場合にのみ、ターゲット・ボリューム上のスペースを使用することによって、ストレージ・スペースは「必要に応じて」割り振られる。したがって図５に示されるように、ディスク３  ５１５は、いずれのグレイン用にもスペースは割り振られない（ディスク３  ５１５上に格納されたデータ図の黒塗りの部分で示される）。さらにマップ２  ５２５によって示されるように、ディスク３は、ホストに提示されるすべてのグレインに関してディスク２  ２１０に依拠している。したがってグレイン２（Ｆ）およびグレイン４（Ｄ）はディスク２  ２１０によって提供される。さらにディスク２は、マップ１  ２２０によって示されるように、グレイン１（Ａ）およびグレイン３（Ｃ）に関してディスク１  ２０５に依拠しているため、ディスク３  ５１５はディスク１  ２０５に格納されたグレイン１（Ａ）およびグレイン３（Ｃ）のコピーに依拠している。
【００４９】
ここでカスケードからマップ１  ２２０（増分マップである）を除去するために、ビットマップ・ツールは、ディスク３  ５１５が、ディスク２  ２１０を除去する前にホストに提示するイメージを維持できることを保証しなければならない。したがって、前述のようにマップ１  ２２０が増分であると想定すると、ビットマップ・ツールは、ディスク１  ２０５上のグレイン４（Ｄ）がディスク２  ２１０と同じであるものと決定することができる。したがって前述のように、本発明の諸態様によれば、グレイン４（Ｄ）をダウンストリーム・ディスク（ディスク３  ２１５）にコピーしないことによって、リソースが節約される。
【００５０】
しかしながら、ディスク１  ２０５上のグレイン２はディスク２  ２１０と同じではない。したがって本発明の諸態様によれば、この例示的シナリオを用いて、ビットマップ・ツールはＦｌａｓｈＣｏｐｙプロセスを開始し、マップ１  ２２０がカスケードから除去され、ディスク２  ２１０が除去される前に、グレイン２（Ｆ）がディスク２  ２１０からディスク３  ５１５へとコピーされる。
【００５１】
図６は、図５に示された例示的カスケード５００で、ビットマップ・ツール３０がカスケードからマップ１を除去し、ディスク２が除去された後の、例５００’を示す。図６に示されるようにマップ２  ５２５’は残っているが、ここでマップ２  ５２５’はディスク１  ２０５とディスク３  ５１５’との間のマップである。さらに図６に示されるように、この例でビットマップ・ツール３０はマップ２  ５２５’に関して、マップ２  ５２５’を、ディスク１  ２０５とディスク３  ５１５’との間のマップとして働くように修正する必要はない。すなわち、ディスク３  ５１５’はグレイン２（Ｆ）のそれ自体のコピーを含み、これはディスク１  ２０５がこのデータを含まないためである。したがって、図６に示されるように、ビットマップ・ツール３０は、ディスク３  ５１５’がグレイン２（Ｆ）のコピーを含むこと、およびディスク３  ５１５’のグレイン２がディスク１  ２０６のグレイン２とは異なることを反映するように修正された、マップ２  ５２５’を有する。
【００５２】
したがって、本発明の諸態様に従って増分マップを使用することは、クリーニング動作を完了するために必要な作業を減らすだけでなく、ダウンストリームの高スペース効率ディスク、たとえばディスク３  ５１５’上に割り振られるグレインの数を最小限にすることが保証される。
【００５３】
一般規則
さらに本発明の諸態様によれば、グレインをクリーニングする必要があるかどうかを決定する場合、一般規則に従うことができる。より具体的に言えば、ビットマップ・ツール３０は、カスケードから除去されることになるマップに関するターゲット・ディスクが、ターゲット・ディスクのアップストリームで取得できないデータをそのディスク上に有するかどうかを判別するために、増分マップ値を使用する。さらにビットマップ・ツール３０は、（除去されることになるマップのターゲット・ディスクに対する）ダウンストリーム・ディスクが、除去されることになるマップのターゲット・ディスクのアップストリームで取得できないデータのコピーをすでに有するかどうかを判別するために、増分マップを使用することができる。さらに、ダウンストリーム・ディスクがそのデータのコピーを未だに有していない場合、本発明の諸態様に従い、ビットマップ・ツールは、カスケードからマップを除去するのに先立ち、除去されることになるマップのターゲット・ディスクからダウンストリーム・ディスクへとこのデータをコピーする。
【００５４】
したがって、本発明の諸態様によれば、除去されることになるマップのビットマップを参照すると、差異ビットマップ値０および分割ビットマップ値０は、クリーニング（またはカスケードから除去されることになるマップのターゲット・ディスクからダウンストリーム・ディスクへとデータをコピーすること）が不要であることを示す。さらに差異ビットマップ値１および分割ビットマップ値０は、クリーニングが不要であることを示す。
【００５５】
さらに、差異ビットマップ値０および分割ビットマップ値１は、クリーニングが必要な可能性があることを示す。このシナリオでは、次のアップストリーム・マップを使用して、クリーニングが必要であるかどうかが決定される。すなわち、ビットマップ・ツールが、次のアップストリーム・マップが分割ビットマップ値１および差異ビットマップ値１を有すると決定した場合、グレインをクリーニングしなければならない。それ以外の場合、グレインをクリーニングする必要はない。さらにアップストリーム・マップがない場合、分割ビットマップ値１および差異ビットマップ値０、ならびにクリーニングの必要性はないものと想定される。
【００５６】
最後に、差異ビットマップ値１および分割ビットマップ値１は、ダウンストリーム・ディスクが未だにデータのコピーを含まない場合、クリーニング（またはカスケードから除去されることになるマップのターゲット・ディスクからダウンストリーム・ディスクへとデータをコピーすること）が必要であることを示す。前述のように、マップが増分でない場合、差異ビット値は分割ビット値に等しいことに留意されたい。
【００５７】
したがって、図２を再度参照すると、マップ１  ２２０のグレイン２が差異ビットマップ値１および分割ビットマップ値１を有することがわかるであろう。増分ビットマップのこれらの値は、ダウンストリーム・ディスクが未だにデータのコピーを含まない場合、クリーニング（またはカスケードから除去されることになるマップのターゲット・ディスクからダウンストリーム・ディスクへとデータをコピーすること）が必要であることを示す。しかしながら図２で見られるように、ダウンストリーム・ディスク３  ２１５は、マップ２  ２２５のグレイン２によって示されるように「Ｂ」のコピーをすでに含む。
【００５８】
したがって図３に示されるように、マップ１  ２２０およびディスク２  ２１０はカスケードから除去されている。さらに本発明の諸態様によれば、たとえばディスク３  ２１５などのターゲット・ディスクが、たとえば「Ｂ」などのデータのコピーをすでに含んでいたため、クリーニング（またはターゲット・ディスクへのデータのコピー）は不要であった。
【００５９】
対照的に、図５を再度参照すると、マップ１  ２２０のグレイン２が差異ビットマップ値１および分割ビットマップ値１を有することがわかるであろう。したがって、増分ビットマップのこれらの値は、ダウンストリーム・ディスクが未だにデータのコピーを含まない場合、クリーニング（またはカスケードから除去されることになるマップのターゲット・ディスクからダウンストリーム・ディスクへとデータをコピーすること）が必要であることを示す。さらに図５で見られるように、ダウンストリーム・ディスク３  ５１５は、マップ２  ５２５のグレイン２によって示されるようにグレインＦのコピーを含んでいない。
【００６０】
したがって図６に示されるように、マップ１  ２２０およびディスク２  ２１０はカスケードから除去されている。さらに本発明の諸態様により、カスケードからのマップ１  ２２０の除去およびディスク２  ２１０の除去に先立って、クリーニング・プロセスが実行され、ここでデータはディスク２  ２１０からダウンストリーム・ディスク３  ５１５’へとコピーされている。さらに図５に示されるように、ビットマップ・ツール３０は、ディスク３  ５１５’がグレインＦのそれ自体のコピーを含むことを反映するように、マップ２  ５２５’を更新している。
【００６１】
さらに前述の一般規則が、特定のグレインに対する読み取りが、マップのクリーニングが存在するか否かと同じであることを示すことから、本発明はいずれのカスケードにも拡張可能であることを理解されたい。
【００６２】
流れ図
図７は、本発明の諸態様を実行するための例示的流れを示す。図７の諸ステップは、たとえば図１の環境で実装可能である。この流れ図は、同様に、本発明の高水準ブロック図を表すことができる。図７の流れ図あるいはブロック図またはその両方は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラム製品の、可能な実装のアーキテクチャ、機能、および動作を示す。この点で、流れ図またはブロック図における各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能命令を備えるコードのモジュール、セグメント、または部分を表すことができる。いくつかの代替の実装では、ブロック内に示された機能が図に示された順序以外で実行可能であることにも留意されたい。たとえば連続して示されている２つのブロックは、実際にはほぼ同時に実行することが可能であるか、またはこれらのブロックは、関与する機能に応じて時折逆の順序で実行される場合がある。流れ図の各ブロック、および流れ図の組み合わせは、前述のように、指定された機能または作業を実行する特定用途向けのハードウェア・ベース・システム、あるいは、特定用途向けハードウェアおよびコンピュータ命令あるいはソフトウェアまたはその両方の組み合わせによって、実装することができる。さらに流れ図の諸ステップは、クライアント・サーバ関係にあるサーバから実装および実行可能であるか、またはユーザ・ワークステーションに搬送される動作情報を使用して、ユーザ・ワークステーション上で実行可能である。ある実施形態では、ソフトウェア要素にはファームウェア、常駐ソフトウェア、マイクロコードなどが含まれる。
【００６３】
さらに本発明は、コンピュータまたは任意の命令実行システムによって、あるいはこれらに関連して使用するためのプログラム・コードを提供する、コンピュータ使用可能媒体またはコンピュータ読み取り可能媒体からアクセス可能な、コンピュータ・プログラム製品の形を取ることができる。ソフトウェアあるいはコンピュータ・プログラム製品は、図１の環境で実装可能である。説明のために、コンピュータ使用可能媒体またはコンピュータ読み取り可能媒体は、命令実行のシステム、装置、またはデバイスによって、あるいはこれらに関連して使用するためのプログラムを、包含、格納、通信、伝搬、または移送することが可能な、任意の装置とすることができる。媒体は、電子、磁気、光、電磁、赤外線、または半導体のシステム（あるいは装置またはデバイス）あるいは伝搬媒体とすることができる。コンピュータ読み取り可能媒体の例には、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、固定磁気ディスク、および光ディスクが含まれる。光ディスクの現行例には、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク読み取り／書き込み（ＣＤ−Ｒ／Ｗ）、およびＤＶＤが含まれる。
【００６４】
図７の例示的流れ図に示されるように、ステップ７０５でビットマップ・ツールは、除去されることになるマップの増分ビットマップを検討する。ステップ７１０でビットマップ・ツールは、ターゲット・ディスク上の特定のグレインに関して、分割／差異ビットマップがそれぞれ０／０または０／１のいずれかであるかどうかを判別する。ステップ７１０でビットマップ・ツールが、分割／差異ビットマップがそれぞれ０／０または０／１のいずれかであると決定した場合、ビットマップ・ツールはクリーニングを実行しない。加えて、ステップ７６５でビットマップ・ツールは、除去されることになるマップのターゲット・ディスク上に別のグレインが存在するかどうかを判別する。ステップ７６５でビットマップ・ツールが、除去されることになるマップのターゲット・ディスク上に別のグレインが存在すると決定した場合、プロセスはステップ７０５へと進む。ステップ７６５でビットマップ・ツールが、除去されることになるマップのターゲット・ディスク上に別のグレインが存在しないと決定した場合、プロセスはステップ７７０で終了する。
【００６５】
ステップ７１０でビットマップ・ツールが、分割／差異ビットマップが０／０または０／１のいずれでもないと決定した場合、プロセスはステップ７２０へと進む。ステップ７２０でビットマップ・ツールは、除去されることになるマップのターゲット・ディスク上の特定のグレインに関して、分割／差異ビットマップがそれぞれ１／０であるかどうかを判別する。ステップ７２０でビットマップ・ツールが、ターゲット・ディスク上の特定のグレインに関して、分割／差異ビットマップが１／０であると決定した場合、プロセスはステップ７２５へと進む。ステップ７２０でビットマップ・ツールが、ターゲット・ディスク上の特定のグレインに関して、分割／差異ビットマップが１／０でないと決定した場合、分割／差異ビットマップは１／１であると想定可能であり、プロセスはステップ７３５へと進む。
【００６６】
ステップ７２５でビットマップ・ツールは、カスケード内にアップストリーム・マップが存在するかどうかを判別する。ステップ７２５でビットマップ・ツールが、アップストリーム・マップが存在すると決定した場合、ステップ７３０でビットマップ・ツールは、アップストリーム・マップ上の特定のグレインに関して、分割／差異が１／１であるかどうかを判別する。ステップ７３０でビットマップ・ツールが、次のアップストリーム・マップ上の特定のグレインに関して、分割／差異が１／１であると決定した場合、ステップ７５５でビットマップ・ツールは、除去されることになるマップのターゲット・ディスクからダウンストリーム・ディスクへとグレインをコピーすることによって、その特定のグレインのクリーニングを実行する。加えて、ステップ７４５でマップは、ダウンストリーム・ディスク上にその時点で格納されているデータを反映するように更新される。ステップ７３０でビットマップ・ツールが、次のアップストリーム・マップ上の特定のグレインに関して、分割／差異が１／１でないと決定した場合、ステップ７５０でビットマップ・ツールはクリーニングを実行しない。ステップ７２５でビットマップ・ツールが、アップストリーム・マップが存在しないと決定した場合、ステップ７５０でビットマップ・ツールはクリーニングを実行せず、プロセスはステップ７６０へと進む。
【００６７】
ステップ７３５でビットマップ・ツールは、ダウンストリーム・ディスクがグレインのコピーを含むかどうかを判別する。ステップ７３５でビットマップ・ツールが、ダウンストリーム・ディスクがグレインのコピーを含むと決定した場合、プロセスはステップ７５０へと進む。ステップ７３５でビットマップ・ツールが、ダウンストリーム・ディスクがグレインのコピーを含まないと決定した場合、プロセスはステップ７４０へと進む。ステップ７４０でクリーニングが実行され、これによってグレインは、除去されることになるマップのターゲット・ディスクからダウンストリーム・ディスクへとコピーされる。ステップ７４５でマップは、ダウンストリーム・ディスク上にその時点で格納されているデータを反映するように更新され、プロセスはステップ７６０へと進む。
【００６８】
ステップ７６０でビットマップ・ツールは、除去されることになるマップのターゲット・ディスク上に他のグレインが存在するかどうかを判別する。ステップ７６０でビットマップ・ツールが、除去されることになるマップのターゲット・ディスク上に他のグレインが存在すると決定した場合、プロセスはステップ７０５へと進む。ステップ７６０でビットマップ・ツールが、除去されることになるマップのターゲット・ディスク上に他のグレインが存在しないと決定した場合、プロセスはステップ７７０で終了する。
【００６９】
本明細書で使用される用語は、特定の実施形態を説明するためのみのものであり、本発明を限定することは意図されていない。本明細書で使用される場合、特に明確に指定されていない限り、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は複数形も同様に含むものと意図される。「含む」あるいは「含んでいる」またはその両方の用語は、本明細書で使用される場合、示された機能、整数、ステップ、動作、要素、あるいはコンポーネント、またはそれらすべての存在を指定するものであるが、１つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、あるいはそのグループ、またはそれらすべての存在または追加を排除するものではないことを、さらに理解されよう。
【００７０】
特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価物は、適用可能であれば、具体的に請求された他の請求要素と組み合わせて機能を実行するための、任意の構造、材料、または動作を含むことが意図される。本発明の説明は、例示および説明の目的で提示してきたものであるが、本発明を網羅すること、または開示された形に限定することは意図されていない。当業者であれば、本発明の範囲および趣旨を逸脱することなく、多くの修正および変形が明らかとなろう。実施形態は、本発明の原理および実際の適用範囲を最もよく説明するため、ならびに、当分野の他の通常の技術者が、企図された特定の用途に好適な様々な修正を伴う様々な実施形態に関して本発明を理解できるようにするために、選択および説明された。したがって、本発明について諸実施形態に関して説明してきたが、当業者であれば、本発明が、修正を伴い、添付の特許請求の範囲の趣旨および範囲内で実践可能であることを理解されよう。
【図１】
0004932063.tif 000002
【図２】
0004932063.tif 000003
【図３】
0004932063.tif 000004
【図４】
0004932063.tif 000005
【図５】
0004932063.tif 000006
【図６】
0004932063.tif 000007
【図７】
0004932063.tif 000008