(57)【要約】【課題】カスケード・ボリュームのソース・クリーニングのためのシステム、方法、およびコンピュータ・プログラムを提供する。【解決手段】カスケード・ボリュームのソース・クリーニングのために、様々なシステム、プロセス、およびプログラムを用いることができる。具体的な実施においては、カスケード・ボリュームのソース・クリーニングのためのシステム、プロセス、およびプログラムは、一次ボリュームおよび複数のカスケード・バックアップ・ボリュームを記憶する能力を含むことができる。また、このシステム、プロセス、およびプログラムは、バックアップ・ボリュームの１つへの書き込みが、カスケードにおける別のボリュームのバックグラウンド・コピーを行うことによるものであるか否かを判定し、書き込みがバックグランド・コピーによるものである場合、バックアップ・ボリュームのためのボリューム・マップにおけるバックグラウンド・コピー・インジケータを調節し、バックアップ・ボリュームの１つへの書き込みが、カスケードにおける別のボリュームへの書き込みによるものであるか否かを判定し、書き込みが別のカスケード・ボリュームへの書き込みによるものである場合、バックアップ・ボリュームのためのボリューム・マップにおける書き込みコピー・インジケータを調節する能力を含むことができる。【選択図】図５
2015525414.tif 000002
【特許請求の範囲】
【請求項１】
カスケード・ボリュームのソース・クリーニングのためのシステムであって、
一次ボリュームおよび前記一次ボリュームのための複数のカスケード・バックアップ・ボリュームを含むストレージと、
外部ソースから前記ボリュームの１つ以上に対する書き込みを受信すると共に、これに記憶するために前記書き込みを準備するように適合されたストレージ・コントローラであって、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームのバックグラウンド・コピーを行うことによるものであるか否かを判定し、
前記書き込みが前記カスケードにおける別のボリュームのバックグランド・コピーによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおけるバックグラウンド・コピー・インジケータを調節し、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームへの書き込みによるものであるか否かを判定し、
前記書き込みが前記カスケードにおける別のボリュームへの書き込みによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおける書き込みコピー・インジケータを調節する、
ように更に適合されているストレージ・コントローラと、
を含む、システム。
【請求項２】
前記ストレージ・コントローラが、
前記バックアップ・ボリュームの１つへの書き込みが前記ボリュームへの直接書き込みであるか否かを判定し、
書き込みが直接書き込みである場合、前記カスケードにおける下流ボリュームにデータを移動させる必要があるか否かを判定し、
前記カスケードにおける下流ボリュームにデータを移動させる必要がある場合、前記バックアップ・ボリュームの読み取りを実行し、
前記読み取ったデータを前記下流ボリュームに移動させ、
前記下流ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節し、
前記バックアップ・ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節する、
ように更に適合されている、請求項１に記載のシステム。
【請求項３】
ボリューム・マップが２つのビットマップを含み、各ビットマップが前記ボリュームの領域に対応するビットを含み、前記ビットマップの１つが、領域が書き込みによるデータを含むか否かを示し、前記ビットマップの１つが、領域がバックグラウンド・コピーによるデータを含むか否かを示す、請求項１に記載のシステム。
【請求項４】
ボリューム・マップがビットマップおよびインデックスを含み、前記ビットマップが、前記ボリュームの領域に対応するビットを含むと共に領域が書き込みによるデータを含むか否かを示し、前記インデックスが、ボリュームのどのくらいが別のボリュームのバックグラウンド・コピーによるデータを含むかを示す、請求項１に記載のシステム。
【請求項５】
前記ストレージ・コントローラが、
前記カスケードにおける前記バックアップ・ボリュームの１つをクリーニングするべきであるか否かを判定し、
バックアップ・ボリュームをクリーニングするべきである場合、前記ボリュームのボリューム・マップにおいてクリーニングする前記ボリュームの領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定し、
前記ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、別の領域を分析対象に選択する、
ように更に適合されている、請求項１に記載のシステム。
【請求項６】
前記ストレージ・コントローラが、
前記クリーニングされるボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、前記カスケードにおける下流ボリュームのボリューム・マップにおいて前記領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定し、
前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、別の領域を分析対象に選択し、
前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、クリーニングする前記ボリュームから前記下流ボリュームに前記領域のデータをコピーする、
ように更に動作可能である、請求項５に記載のシステム。
【請求項７】
前記ストレージ・コントローラが、前記下流ボリュームの前記ボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータを調節するように更に適合されている、請求項６に記載のシステム。
【請求項８】
前記ストレージ・コントローラが、ボリュームを前記カスケードから除去することに基づいて前記ボリュームをクリーニングするべきであると判定するように適合されている、請求項５に記載のシステム。
【請求項９】
カスケード・ボリュームのソース・クリーニングのための方法であって、
一次ボリュームおよび前記一次ボリュームのための複数のカスケード・バックアップ・ボリュームを記憶することと、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームのバックグラウンド・コピーを行うことによるものであるか否かを判定することと、
前記書き込みが前記カスケードにおける別のボリュームのバックグランド・コピーによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおけるバックグラウンド・コピー・インジケータを調節することと、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームへの書き込みによるものであるか否かを判定することと、
前記書き込みが前記カスケードにおける別のボリュームへの書き込みによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおける書き込みコピー・インジケータを調節することと、
を含む、方法。
【請求項１０】
前記バックアップ・ボリュームの１つへの書き込みが前記ボリュームへの直接書き込みであるか否かを判定することと、
書き込みが直接書き込みである場合、前記カスケードにおける下流ボリュームにデータを移動させる必要があるか否かを判定することと、
前記カスケードにおける下流ボリュームにデータを移動させる必要がある場合、前記バックアップ・ボリュームの読み取りを実行することと、
前記読み取ったデータを前記下流ボリュームに移動させることと、
前記下流ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節することと、
前記バックアップ・ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節することと、
を更に含む、請求項９に記載の方法。
【請求項１１】
ボリューム・マップが２つのビットマップを含み、各ビットマップが前記ボリュームの領域に対応するビットを含み、前記ビットマップの１つが、領域が書き込みによるデータを含むか否かを示し、前記ビットマップの１つが、領域がバックグラウンド・コピーによるデータを含むか否かを示す、請求項９に記載の方法。
【請求項１２】
ボリューム・マップがビットマップおよびインデックスを含み、前記ビットマップが、前記ボリュームの領域に対応するビットを含むと共に領域が書き込みによるデータを含むか否かを示し、前記インデックスが、ボリュームのどのくらいが別のボリュームのバックグラウンド・コピーによるデータを含むかを示す、請求項９に記載の方法。
【請求項１３】
前記カスケードにおける前記バックアップ・ボリュームの１つをクリーニングするべきであるか否かを判定することと、
バックアップ・ボリュームをクリーニングするべきである場合、前記ボリュームのボリューム・マップにおいてクリーニングする前記ボリュームの領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定することと、
前記ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、別の領域を分析対象に選択することと、
を更に含む、請求項９に記載の方法。
【請求項１４】
前記クリーニングされるボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、前記カスケードにおける下流ボリュームのボリューム・マップにおいて前記領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定することと、
前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、別の領域を分析対象に選択することと、
前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、クリーニングする前記ボリュームから前記下流ボリュームに前記領域のデータをコピーすることと、
を更に含む、請求項１３に記載の方法。
【請求項１５】
前記下流ボリュームの前記ボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータを調節することを更に含む、請求項１４に記載の方法。
【請求項１６】
ボリュームを前記カスケードから除去することに基づいて前記ボリュームをクリーニングするべきであると判定することを更に含む、請求項１３に記載の方法。
【請求項１７】
カスケード・ボリュームのソース・クリーニングのためのコンピュータ・プログラムであって、
コンピュータ読み取り可能記憶媒体と、
一次ボリュームおよび前記一次ボリュームのための複数のカスケード・バックアップ・ボリュームを記憶するための第１のプログラム命令と、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームのバックグラウンド・コピーを行うことによるものであるか否かを判定すると共に、前記書き込みが前記カスケードにおける別のボリュームのバックグランド・コピーによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおけるバックグラウンド・コピー・インジケータを調節するための第２のプログラム命令と、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームへの書き込みによるものであるか否かを判定すると共に、前記書き込みが前記カスケードにおける別のボリュームへの書き込みによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおける書き込みコピー・インジケータを調節するための第３のプログラム命令と、
を含み、前記プログラム命令が前記コンピュータ読み取り可能記憶媒体上に記憶されている、コンピュータ・プログラム。
【請求項１８】
前記バックアップ・ボリュームの１つへの書き込みが前記ボリュームへの直接書き込みであるか否かを判定し、書き込みが直接書き込みである場合、前記カスケードにおける下流ボリュームにデータを移動させる必要があるか否かを判定し、前記カスケードにおける下流ボリュームにデータを移動させる必要がある場合、前記バックアップ・ボリュームの読み取りを実行し、前記読み取ったデータを前記下流ボリュームに移動させ、前記下流ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節し、前記バックアップ・ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節するための第４のプログラム命令を更に含む、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
ボリューム・マップが２つのビットマップを含み、各ビットマップが前記ボリュームの領域に対応するビットを含み、前記ビットマップの１つが、領域が書き込みによるデータを含むか否かを示し、前記ビットマップの１つが、領域がバックグラウンド・コピーによるデータを含むか否かを示す、請求項１７に記載のコンピュータ・プログラム。
【請求項２０】
ボリューム・マップがビットマップおよびインデックスを含み、前記ビットマップが、前記ボリュームの領域に対応するビットを含むと共に領域が書き込みによるデータを含むか否かを示し、前記インデックスが、ボリュームのどのくらいが別のボリュームのバックグラウンド・コピーによるデータを含むかを示す、請求項１７に記載のコンピュータ・プログラム。
【請求項２１】
前記カスケードにおける前記バックアップ・ボリュームの１つをクリーニングするべきであるか否かを判定し、バックアップ・ボリュームをクリーニングするべきである場合、前記ボリュームのボリューム・マップにおいてクリーニングする前記ボリュームの領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定し、前記ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、別の領域を分析対象に選択するための第５のプログラム命令を更に含む、請求項１７に記載のコンピュータ・プログラム。
【請求項２２】
前記クリーニングされるボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、前記カスケードにおける下流ボリュームのボリューム・マップにおいて前記領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定し、前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、別の領域を分析対象に選択し、前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、クリーニングする前記ボリュームから前記下流ボリュームに前記領域のデータをコピーするための第６のプログラム命令を更に含む、請求項２１に記載のコンピュータ・プログラム。
【請求項２３】
前記下流ボリュームの前記ボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータを調節するための第７のプログラム命令を更に含む、請求項２２に記載のコンピュータ・プログラム。
【請求項２４】
ボリュームを前記カスケードから除去することに基づいて前記ボリュームをクリーニングするべきであると判定するための第８のプログラム命令を更に含む、請求項２１に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ・データの管理に関し、更に具体的にはカスケード・ボリュームのクリーニングに関する。
【背景技術】
【０００２】
ハードウェアの誤作動または自然災害あるいはその両方による損失に備えて、ストレージ・システムがバックアップしたディスクを有することは一般的である。バックアップ・ディスクは様々な技法によって生成することができる。例えばバックアップ・ディスクは、スナップショットまたはクローン技法を用いて生成することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
スナップショットは、一次ディスクに依存するポイント・イン・タイム・コピーである。スナップショットは例えばコピー・オン・ライト手順を用いて達成することができ、一次ディスク上のある領域に書き込みが行われる場合に、一次ディスク上のその領域に現在存在するデータをバックアップ・ディスクに書き込む。このため、バックアップ・ディスクが含むデータは一次ディスクで上書きされるものであり、一次ディスクの完全なコピーではない。典型的に、このタイプのバックアップ・コピーでは結果として低プロビジョニング・ボリューム（thinly provisioned volume）が生じ、ストレージが縮小される。一連のスナップショット・コピーをカスケードすることで、様々な時点での一次ディスクを表すことができる。しかしながら、スナップショット・コピーは通常、一次ディスクの完全なコピーを組み立て直すために一次ディスクに依存し続ける。
【０００４】
クローンは、一次ディスクに依存しないポイント・イン・タイム・コピーである。クローンは例えば、ディスクの領域を順次バックアップ・ディスクにコピーするバックグラウンド・コピー手順を実行し、更にコピー・オン・ライト手順を実行して、書き込みのために上書きされようとしておりバックグラウンド・コピー手順によってまだ処理されていない一次ディスク領域をすぐにコピーすることによって生成することができる。典型的に、クローンが用いられるのは、コピーが必要であり、そのコピーに対する入出力（ＩＯ）が一次ボリュームに対するＩＯに何も影響を与えてはならない場合である。また、クローンは、ソースに対する可用性によってコピーが影響されない場合に用いることができる。また、クローンはカスケードで用いることができる。
【課題を解決するための手段】
【０００５】
一つの実施において、カスケード・ボリュームのソース・クリーニングのためのプロセスは、一次ボリュームおよびこの一次ボリュームのための複数のカスケード・バックアップ・ボリュームを記憶することと、バックアップ・ボリュームの１つへの書き込みが、カスケードにおける別のボリュームのバックグラウンド・コピーを行うことによるものであるか、またはカスケードにおける別のボリュームへの書き込みによるかものであるかを判定することと、を含むことができる。書き込みがカスケードにおける別のボリュームのバックグランド・コピーによるものである場合、プロセスは、バックアップ・ボリュームのためのボリューム・マップにおけるバックグラウンド・コピー・インジケータを調節することを含むことができる。書き込みがカスケードにおける別のボリュームへの書き込みによるものである場合、プロセスは、バックアップ・ボリュームのためのボリューム・マップにおける書き込みコピー・インジケータを調節することを含むことができる。
【０００６】
様々な実施の詳細および特性は、以下の記載および添付図面によって示すことができる。
【図面の簡単な説明】
【０００７】
【図１】カスケード・ボリュームのソース・クリーニングのための一例のシステムを示すブロック図である。
【図２】カスケード・ボリュームのソース・クリーニングのための一例のボリューム・マップを示すブロック図である。
【図３】カスケード・ボリュームのソース・クリーニングのための一例のボリューム・マップを示すブロック図である。
【図４】カスケード・ボリュームのソース・クリーニングのための一例のプロセスを示すフローチャートである。
【図５】カスケード・ボリュームのソース・クリーニングのための別の一例のプロセスを示すフローチャートである。
【図６】カスケード・ボリュームのソース・クリーニングのための一例のコンピュータ・システムを示すブロック図である。
【発明を実施するための形態】
【０００８】
カスケード・ボリュームのソース・クリーニングは様々な技法によって達成可能である。特定の実施において、カスケード・ボリュームは、一次ボリューム、多数のカスケード・バックアップ・ボリュームを含むことができる。カスケード・ボリュームのソース・クリーニングは、バックアップ・ボリュームへの書き込みが、カスケードにおける別のボリュームのバックグラウンド・コピーを行うことによるものであるか、またはカスケードにおける別のボリュームへの書き込みによるものであるかの判定を含むことができる。バックアップ・ボリュームへの書き込みの理由は、各ボリュームのボリューム・マップに記録することができる。ボリュームの１つをクリーニングする必要がある場合（例えば除去または再開するために）、残りのボリュームのデータの完全性を維持するために、カスケード・ボリュームのボリューム・マップを分析して、クリーニング対象のボリューム上のどのデータを別のボリュームに移す必要があるかを判定することができる。
【０００９】
当業者によって認められるように、本開示の態様は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って本開示の態様は、全体的にハードウェアの環境、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、またはソフトウェアおよびハードウェアの態様を組み合わせた実施という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本開示の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する１つ以上のコンピュータ読み取り可能媒体において具現化されたコンピュータ・プログラムの形態を取ることも可能である。
【００１０】
１つ以上のコンピュータ読み取り可能媒体のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例（非網羅的な列挙）は以下を含む。すなわち、１本以上のワイヤを含む電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、または前述のもののいずれかの適切な組み合わせである。この開示の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することが可能な有形の（tangible）媒体とすることができる。
【００１１】
コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラム・コードを有する伝播データ信号を含むことができる。かかる伝播信号は様々な形態のいずれかを取ることができ、それらは限定ではないが、電磁、光、またはそれらのいずれかの適切な組み合わせを含む。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体でないが、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを伝達、伝播、または転送することが可能ないずれかのコンピュータ読み取り可能媒体とすることができる。
【００１２】
コンピュータ読み取り可能媒体上で具現化されるプログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、または前述のもののいずれかの適切な組み合わせを含むいずれかの媒体を用いて伝送することができる。
【００１３】
本開示の態様の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等および「Ｃ」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語等の１つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で、実行することができる。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、（例えばインターネット・サービス・プロバイダを用いてインターネットを介して）外部コンピュータに対して行うことができる。
【００１４】
実施に従った方法、装置（システム）、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して、本開示の態様について以下に記載する。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するための手段を生成するようになっている。
【００１５】
また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施する命令を含む製造品を生成するようになっている。
【００１６】
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するためのプロセスを提供するようになっている。
【００１７】
図１は、カスケード・ボリュームのソース・クリーニングのための一例のシステム１００を示す。システム１００は、外部システム１１０、ストレージ・システム１２０、および通信ネットワーク１３０を含む。
【００１８】
外部システム１１０は一般に、ストレージ・システム１２０に書き込みを発生することによってデータの一部を記憶させるいずれかのコンピュータ・システムとすることができる。外部システム１１０は例えば、記憶する必要があるデータを発生するサーバ・システムとすることができる。一例のサーバ・システムはウェブ・サーバを含む。外部システムがサーバ・システムである場合、サーバ・システムは１つ以上のサーバを含む場合があり、これは同じ場所に配置されるかまたは分散されることがある。
【００１９】
ストレージ・システム１２０は、このストレージ・システムに対してローカルまたはリモートであり得る様々な外部システム（例えばＡＩＸ（Advanced Interactive eXective）またはＷｉｎｄｏｗｓ（Ｒ）を実行するサーバ・システム）のためのデータを記憶することができる。特定の実施において、ストレージ・システム１２０はこの一例のシステムの一次ストレージを提供することができ、他のストレージ・システム（図示せず）がバックアップ・ストレージを（例えば同期または非同期の複製によって）提供する。ストレージ・システム１２０は例えば、ストレージ・エリア・ネットワーク、レイド・アレイ、ハード・ドライブ、テープ・ドライブ、またはデータを記憶するための他のいずれかのデバイスを含むことができる。ストレージ・システム１２０は、例えばブロック・アレイでデータを記憶することができる。
【００２０】
ストレージ・システム１２０は、ストレージ・コントローラ１２２およびストレージ１２４（例えばハード・ディスク、テープ等）を含む。ストレージ・コントローラ１２２はストレージ１２４にデータを配置する役割を有する。この考察のため、ストレージ１２４は一次ボリューム１２５およびバックアップ・ボリューム１２６〜１２７を含む。しかしながら、ストレージ１２４は通常、いかなる数のボリュームを含むように構成することも可能である。ボリューム１２５〜１２７は例えば、ストレージ１２４における実際の物理デバイス（例えばハード・ドライブ）、物理デバイスの部分、または物理デバイスの表現とすることができる。また、ストレージ１２４は、記憶する他の多数のボリュームを有することも可能である。
【００２１】
外部システム１１０およびストレージ・システム１２０は、通信ネットワーク１３０を介して相互に通信可能に結合されている。通信ネットワーク１３０は例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、またはインターネットとすることができる。外部システム１１０およびストレージ・システム１２０は、１つ以上のワイヤライン（例えばケーブルまたは光ファイバ）または無線リンク（例えば無線周波数）あるいはその両方を含むことができる通信リンク１３２を介して通信ネットワーク１３０に結合されている。
【００２２】
バックアップ・ボリューム１２６〜１２７は、様々な技法によって一次ボリューム１２５のバックアップを提供することができる。例えばバックアップは、スナップショット技法またはクローン技法あるいはその両方を用いて生成することができる。前述のように、スナップショットはポイント・イン・タイム・コピーとすることができ、一次ボリューム上のある領域に書き込みを行う場合に、一次ボリューム上のその領域に現在存在するデータをバックアップ・ボリュームに書き込む。このため、バックアップ・ディスクが含むデータは一次ディスクで上書きされるものであり、一次ディスクの完全なコピーではない。領域は、例えばボリュームのセクタまたは他のアドレス可能部分である場合がある。特定の実施において、１つの領域は約６４ＫＢのサイズとすることができる。
【００２３】
典型的に、このタイプのバックアップ・コピーでは結果として低プロビジョニング・ボリュームが生じ、ストレージが縮小されるので、一次ボリューム上でのデータ破損の場合に有用とすることができる。多くの場合、単一のソースに多くのスナップショットが同時に存在するので、それらのサイズを縮小することは有利である。スナップショットは、相当の時間量（例えば数か月または数年）にわたってボリュームのカスケードに存在し得るが、典型的には数時間または数日のみ保持される。
【００２４】
クローン・コピーは例えば、ボリュームの領域を順次コピーするバックグラウンド・コピー手順を実行し、更にコピー・オン・ライト手順を実行して、書き込みのために上書きされようとしておりバックグラウンド・コピー手順によってまだ処理されていないボリューム領域をすぐにコピーすることによって生成することができる。典型的に、クローンが用いられるのは、コピーが必要であり、そのコピーに対する入出力（ＩＯ）が一次ボリュームに対するＩＯに何も影響を与えてはならない場合である。また、クローンは、ソースに対する可用性によってコピーが影響されない場合に用いることができる。すなわち、クローンはカスケードから除去することができ、それでもなお適正に機能することができる。例えば、クローンを用いて別のサイトにデータベースを持っていくことができる。クローンは通常、いったん完成したらテープにコピーされる。
【００２５】
バックアップ・ボリューム１２６〜１２７は、相互にカスケードさせることによって一次ボリューム１２５のバックアップを提供することができる。インターナショナル・ビジネス・マシーンズ（ニューヨーク州アーモンク）からのSAN Volume Controller（ＳＶＣ）等のストレージ・コントローラは、カスケード実施を用いてソース・ボリュームを拡張することができる。
【００２６】
例えば、２つのバックアップ・ボリューム１２６〜１２７のうちバックアップ・ボリューム１２６が最初に一次ボリューム１２５にバックアップを提供すると想定する。バックアップ・ボリューム１２６は時点Ｔ１で開始するバックアップを提供することができ、バックアップ・ボリューム１２７は時点Ｔ２で開始するバックアップを提供することができる。Ｔ１では、カスケードは一次ボリューム１２５→バックアップ・ボリューム１２６である。Ｔ２では、カスケードは一次ボリューム１２５→バックアップ・ボリューム１２７→バックアップ・ボリューム１２６である。カスケード手法の動作においては、新しいバックアップ・ボリュームが開始した場合、一次ボリュームをそのソース・ボリュームとして用いている既存のバックアップ・ボリュームを変更して、新しいバックアップのターゲット・ボリュームをそのソース・ボリュームとして用いる。
【００２７】
バックアップ・ボリューム１２６がスナップショット技法によって動作すると想定すると、バックアップ・ボリューム１２６は、Ｔ１でのバックアップ開始以来の一次ボリューム１２５に対する変更を記憶することによってバックアップを提供する。この２要素カスケードでは、一次ボリューム１２５がソースであり、バックアップ・ボリューム１２６がターゲットである。従って一次ボリューム１２５を、一次ボリューム１２５→バックアップ・ボリューム１２６マップの有効ソースと称することができる。前述のように、このバックアップはコピー・オン・ライトを用いることによって達成可能である。このため、一次ボリューム１２５への書き込みは、一次ボリューム１２５上の書き込み対象領域のデータをバックアップ・ボリューム１２６にコピーすること、次いで新しいデータを一次ボリューム１２５の領域に書き込むことを含むことができる。従って、Ｔ１でバックアップ・ボリューム１２６へのバックアップがアクティブになった時に一次ボリューム１２５上にあったデータは、一次ボリューム１２５上に記憶され（すなわち書き込み対象でないボリューム領域について）、更にバックアップ・ボリューム１２６上に記憶される（すなわち書き込み対象であった領域について）。
【００２８】
バックアップ・ボリューム１２６上で読み取りを行う必要がある場合（例えばＴ１における一次ボリューム１２５上のデータを求めるため）、読み取りは最初にデータ・バックアップ・ボリューム１２６の位置の特定を試みることができる。データがそのボリューム上にない場合（すなわち一次ボリューム１２５で上書きされなかったので）、データを一次ボリューム１２５から読み取ることができる。
【００２９】
時として、一次ボリューム１２５をＴ１における状態に復元する必要があることがある。例えばこれはデータ破損のために起こり得る。バックアップ・ボリューム１２６がアクティブになった後に一次ボリューム１２５上で上書きされたデータをバックアップ・ボリューム１２６から検索して、一次ボリューム１２５をＴ１における状態に復元することができる。
【００３０】
後の時点すなわちＴ２では、バックアップ・ボリューム１２７へのバックアップがアクティブとなり、Ｔ２で開始する一次ボリューム１２５の表現を記憶することができる。この時点では、バックアップ・ボリューム１２７がＴ２における一次ボリューム１２５のデータを含むので、バックアップ・ボリューム１２６を更新する必要はない。このため、バックアップ・チェーンは一次ボリューム１２５→バックアップ・ボリューム１２７→バックアップ・ボリューム１２６となる。この時点で、一次ボリューム１２５→バックアップ・ボリューム１２６のマップは、有効ソースとしてソース・バックアップ・ボリューム１２７を有する。この変換が有効であるのは、バックアップ・ボリューム１２７がこの時点での一次ボリューム１２５の正確なコピーである（少なくとも記憶するデータ領域について）からである。
【００３１】
バックアップ・ボリューム１２７は、スナップショットまたはクローン技法によって動作することができる。これがスナップショット技法によって動作する場合、一次ボリューム１２５への書き込みは、一次ボリューム１２５→バックアップ・ボリューム１２６カスケードと同様に扱うことができるが、一次ボリューム１２５で上書きされるデータがバックアップ・ボリューム１２７に配置される点が異なる。バックアップ・ボリューム１２７がクローン技法によって動作する場合、一次ボリューム１２５の領域のバックアップ・ボリューム１２７への書き込みは、比較的長い時間期間を要する場合がある順次読み取りと、オン・デマンド書き込み（例えば一次ボリューム１２５への書き込みによりデータが上書きされることによる）との組み合わせによって行われる。
【００３２】
このカスケードにおいてデータを維持するため、ＩＯアルゴリズムを用いることができる。例えば読み取りでは、（１）バックアップ・ボリューム１２６の読み取りが要求された場合、要求されたデータがバックアップ・ボリューム１２６上にあるならばこのボリュームを読み取り（例えば領域に従って）、または要求されたデータがバックアップ・ボリューム１２７上にあるならばこのボリュームを読み取り、または一次ボリューム１２５を読み取る。（２）バックアップ・ボリューム１２７の読み取りが要求された場合、要求されたデータがこのボリューム上にあるならばこのボリュームを読み取り、または一次ボリューム１２５を読み取る。（３）一次ボリューム１２５の読み取りが要求された場合、このボリュームを読み取る。
【００３３】
書き込みでは、（１）バックアップ・ボリューム１２６への書き込みが要求された場合、このボリュームに書き込む。（２）バックアップ・ボリューム１２７への書き込みが要求された場合、（ａ）バックアップ・ボリューム１２６が一次ボリューム１２５上に保持されたデータを必要とするならば、一次ボリューム１２５を読み取り、結果をバックアップ・ボリューム１２６に書き込み、新しいデータをバックアップ・ボリューム１２７に書き込み、（ｂ）または、バックアップ・ボリューム１２６がバックアップ・ボリューム１２７に保持されたデータを必要とするならば、バックアップ・ボリューム１２７を読み取り、結果をバックアップ・ボリューム１２６に書き込み、新しいデータをバックアップ・ボリューム１２７に書き込み、または、（ｃ）バックアップ・ボリューム１２７に書き込む。（３）一次ボリューム１２５への書き込みが要求された場合、（ａ）バックアップ・ボリューム１２７が一次ボリューム１２５上に保持されたデータを必要とするならば、一次ボリューム１２５を読み取り、結果をバックアップ・ボリューム１２７に書き込み、次いで新しいデータを一次ボリューム１２５に書き込み、（ｂ）または、一次ボリューム１２５に書き込む。
【００３４】
このＩＯアルゴリズムによって、多数のターゲット（例えば２つ以上）をカスケードすることができる。更に、一次ボリューム１２５への書き込みが行われた場合、一次ボリューム１２５のバックアップ・ボリュームの数とは無関係に、バックアップ・ボリュームへの余分な書き込みは多くても１回である。このため、ソース／生成ＩＯ性能に対するバックアップ・マップの影響は比較的小さく、限られている。
【００３５】
Ｔ２の後の時点では、バックアップ・ボリューム１２６は通常バックアップ・ボリューム１２７に依存する。例えば、あるデータ領域が、Ｔ１とＴ２との間でバックアップ・ボリューム１２６に転送されなかった（例えばその時間中に一次ボリューム１２５への書き込みがなかったため）が、Ｔ２の後にバックアップ・ボリューム１２７に転送された（例えばＴ２の後に一次ボリューム１２５への書き込みがあったため）場合、バックアップ・ボリューム１２６は、Ｔ１における状態に一次ボリューム１２５を復元するためにこのデータを必要とする。この時点の後にバックアップ・ボリューム１２６に影響を与えることなくカスケードからバックアップ・ボリューム１２７を除去する場合、バックアップ・ボリューム１２７をクリーニングしなければならない。すなわち、（例えば外部システムからの）バックアップ・ボリューム１２６の読み取りに必要であるバックアップ・ボリューム１２７上のデータを、最初にバックアップ・ボリューム１２６にコピーしなければならない。このプロセスは比較的長い時間を要することがある。更に、バックアップ・ボリューム１２７がクローン技法によって構築された場合はバックアップ・ボリューム１２７が全体的に割り当てられる可能性があるが、更にバックアップ・ボリューム１２６がスナップショット技法によって構築された場合には、クリーニング動作において、バックアップ・ボリューム１２７のほとんどをバックアップ・ボリューム１２６に転送する必要があると判定されることがある。特に全体的に割り当てられる場合、バックアップ・ボリューム１２６に記憶されるデータ量が劇的に増大する可能性がある。
【００３６】
いくつかの動作モードでは、ボリューム上のデータ領域を分類して、領域上に保持されるデータをクリーニングしなければならないか否かを判定し、または、介在するボリューム（例えばバックアップ・ボリューム１２７）が除去されても、依存するボリューム（例えばバックアップ・ボリューム１２６）によって、（例えば一次ボリューム１２５上の）データを利用可能であるか否かを判定することができる。１つのターゲット・ボリューム領域が読み取り動作に戻すデータを含むか否かを追跡するために必要な最小メタデータ量は１ビットである。このため、ターゲット・ボリューム当たりの必要なメタデータ量は、ボリューム上の全データ領域について充分なビットを含むビットマップである。しかしながらこれは、なぜボリューム領域にデータが配置されたかについての判定を考慮に入れていない。例えば、ボリュームへのデータの書き込みの理由は、（例えば外部システムからの）書き込み、書き込みからの分割、または上流コピーのバックグラウンド・コピーが生成されたことであった可能性がある。「上流」ボリュームとは、現在のボリュームを基準として用いた場合に一次ボリュームに近い方向のものであり、「下流」ボリュームとは、現在のボリュームを基準として用いた場合に一次ボリュームから離れる方向のものである。
【００３７】
ストレージ・コントローラ１２２は、バックアップ・ボリューム１２６〜１２７上の領域に関するメタデータを記憶することができるボリューム・マップ１２３を含む。具体的には、ボリューム・マップ１２３は、ある領域内のデータがその領域にある理由を規定することができる。例えばボリューム・マップは、データが領域に配置された理由が、書き込みである（例えばスナップショット技法またはボリュームへの直接書き込みから）か、またはバックグラウンド・コピーである（例えばクローン技法から）かを特定することができる。
【００３８】
いくつかの実施において、各ボリューム・マップ１２３は２つのビットマップを含む。各ビットマップは、ボリューム上の割り当て済みまたはその可能性がある各領域についてのビットを含む。一方のビットマップを用いて、バックグラウンド・コピーによるデータを有する領域にマークを付けることができ、他方のビットマップを用いて、（例えばボリューム自体または別のボリュームへの）書き込みのデータを有する領域にマークを付けることができる。
【００３９】
例えば、３つのボリュームＡ、Ｂ、およびＣの各々が３つのデータ領域を含むと仮定する。更に、ボリューム・マップＡ→ＢおよびＢ→Ｃがあり、各々が２つのビットマップすなわちバックグラウンド・コピー・ビットマップおよび書き込みコピー・ビットマップを有すると仮定する。マップＡ→Ｂを開始すると、カスケードはＡ→（（０，０，０），（０，０，０））→Ｂによって表すことができる、ここで、→（（０，０，０），（０，０，０））→は、１つのボリューム・マップの２つのビットマップを表し、→（（バックグラウンド・コピー・ビットマップ），（書き込みコピー・ビットマップ））→である。
【００４０】
領域０においてボリュームＡへの書き込みがあると、ビットマップを変更して、上述のＩＯアルゴリズムに記載したデータの移動を反映させる。すなわち、Ａ→（（０，０，０），（１，０，０））→Ｂとなり、これは、ボリュームＢが領域０についてそれ自身のデータを保持すること、およびこれがバックグラウンド・コピーのためではないことを示す。ボリュームＡからボリュームＢへのコピーがクローンである場合、バックグラウンド・コピーはこの領域を再びコピーしようとはしない。ボリュームＢがすでにそれ自身のデータ・コピーを含まない場合に、ボリュームＡからボリュームＢに領域をコピーするだけである。ボリュームＢへの領域１のバックグラウンド・コピーがあると、この結果としてビットマップはＡ→（（０，１，０），（１，０，０））→Ｂのように見え、これは、ボリュームＢが領域１についてそれ自身のデータを保持すること、およびこれがバックグラウンド・コピーのためであることを示す。
【００４１】
この後、ボリュームＢからボリュームＣへのバックアップ・コピーが開始した場合、カスケードはＡ→（（０，１，０），（１，０，０））→Ｂ→（（０，０，０），（０，０，０））→Ｃのように見える。領域２におけるボリュームＢへの書き込みでは、カスケードはＡ→（（０，１，０），（１，０，１））→Ｂ→（（０，０，０），（０，０，１））→Ｃのように見え、これは、ボリュームＢおよびボリュームＣがそれ自身のデータ・コピーを含むこと、および（例えば外部システムからの）書き込みのためにそれらを取得したことを示す。ボリュームＣはボリュームＡの領域２からデータを取得した。ボリュームＢへの書き込みは、例えば試験または開発あるいはその両方を行うために使用可能である。
【００４２】
次いでボリュームＢをカスケードから除去する場合、ボリュームＢからボリュームＣへのバックアップをクリーニングする必要がある。ビットマップを調べることで、領域０をクリーニングする必要があると判定することができる。なぜなら、ボリュームＢがデータを含み、これがボリュームＡ上にはあり得ないからである。すなわち、ボリュームＢのボリューム・マップは、ボリュームＢが書き込みのために領域０のデータを取得したことを示し、これはそのデータがもはやボリュームＡ上に存在しないことを意味する。しかしながら領域１については、ボリュームＢのボリューム・マップは、ボリュームＢがバックグラウンド・コピーのためにデータを取得したことを示し、これはそのデータが今もなおボリュームＡに存在することを意味する。このため、ボリュームＣに領域１のコピーを行う必要はない。更に、ボリュームＢのボリューム・マップは、ボリュームＢが書き込みのために領域２のデータを取得したことを示すが、ボリュームＣのボリューム・マップは、ボリュームＣがすでにこの領域のデータを記憶したことを示し、これはボリュームＣがボリュームＢからの領域２のデータを必要としないことを意味する。
【００４３】
次いで、ボリュームＢの領域０からボリュームＣの領域０にデータをコピーすることによって、Ｂ→Ｃコピーをクリーニングすることができる。ボリュームＡは、ボリュームＣが必要とするデータを含まないので、ボリュームＣへのクリーニング書き込みは書き込みとして処理することができる。ボリュームＡとボリュームＣとの間の関係を示すように、ボリュームＣのボリューム・マップを調節することができる。すなわちＡ→（（０，０，０），（１，０，１））→Ｃとなり、これは、ボリュームＣの領域０が書き込みのためにそのデータを取得したこと、ボリュームＣの領域１がデータを有しないこと、およびボリュームＣの領域２が書き込みのためにそのデータを取得したことを示す。
【００４４】
この例では、クリーニングの量は半分に減っている。すなわち、ボリューム・マップがなかったら、クリーニングはボリュームＢの領域１からボリュームＣへの書き込みも実行しなければならないはずであった。このデータがボリュームＢに到達した理由が明らかでないからである。領域の数が増えれば、より大きな節約が可能となる。典型的には、該当する場合、１つのボリュームの少数のみの領域に書き込みが行われ、データのほとんどはバックグラウンド・コピーのために転送される。
【００４５】
別の例として、３つのボリュームＤ、Ｅ、およびＦの各々が４つのデータ領域を含むと仮定する。更に、ボリュームＤが一次ボリュームであり、ボリュームＥが早期バックアップ・ボリュームであり、ボリュームＦが後期バックアップ・ボリュームであり、結果としてチェーンＤ→Ｆ→Ｅになると仮定する。更に、ボリュームＥはコピー・オン・ライト技法を用いることによってバックアップを提供し、ボリュームＦはクローン技法を用いることによってバックアップを提供し、ボリュームＥおよびＦのボリューム・マップの各々が２つのビットマップすなわちバックグラウンド・コピー・ビットマップおよび書き込みコピー・ビットマップを含むと仮定する。
【００４６】
ボリュームＥによるボリュームＤのバックアップを開始すると、カスケードは、Ｄ→（（０，０，０，０），（０，０，０，０））→Ｅによって表すことができる。ここで、→（（０，０，０，０），（０，０，０，０））→はボリューム・マップの２つのビットマップを表し、→（バックグラウンド・コピー・ビットマップ），（書き込みコピー・ビットマップ）→である。
【００４７】
領域１においてボリュームＤへの書き込みがあると、ビットマップを変更して、上述のＩＯアルゴリズムに記載したデータの移動を反映させる。すなわち、Ｄ→（（０，０，０，０），（０，１，０，０））→Ｅとなり、これは、ボリュームＥが領域１についてそれ自身のデータを保持すること、およびこれがバックグラウンド・コピーのためではないことを示す。領域２においてボリュームＤへの書き込みがあると、ビットマップを再び変更して、ＩＯアルゴリズムに記載したデータの移動を反映させる。すなわち、Ｄ→（（０，０，０，０），（０，１，１，０））→Ｅとなる。
【００４８】
ここで、ボリュームＤからボリュームＦへのバックグラウンド・コピーが開始すると、カスケードはＤ→（（０，０，０，０），（０，０，０，０））→Ｆ→（（０，０，０，０），（０，１，１，０））→Ｅのように見える。ボリュームＤの領域１および３のバックグラウンド・コピーの実行前にこれらの領域への書き込みが行われ、バックグラウンド・コピーが完全に実行されたと想定すると、カスケードはＤ→（（１，０，１，０），（０，１，０，１））→Ｆ→（（０，０，０，０），（０，１，１，０））→Ｅとなる。ボリュームＤからボリュームＦへのコピーはクローンであるので、バックグラウンド・コピーは領域１および３を再びコピーしようとしない。これは、ボリュームＦがすでにそれ自身のデータ・コピーを含まない場合に、ボリュームＤからボリュームＦに領域をコピーする。ある領域のバックグラウンド・コピーが行われ、次いで上流ボリューム上でその領域への書き込みが行われた場合、下流ボリューム上の書き込みコピー・インジケータを更新することができる。あるいは、バックグラウンド・インジケータのみがセットされている場合、システムは、データが今もなお一次ボリューム上に存在すると判定することができる。
【００４９】
次いでボリュームＦをカスケードから除去する場合、ボリュームＦをクリーニングする必要があり得る。ビットマップを調べることで、領域３をクリーニングする必要があると判定することができる。なぜなら、ボリュームＦがデータを含み、これがボリュームＤ上にはあり得ないからである。すなわち、ボリュームＦのボリューム・マップは、ボリュームＦが書き込みのために領域３のデータを取得したことを示し、これはそのデータがもはやボリュームＤに存在しないことを意味する。しかしながら領域１については、ボリュームＦのボリューム・マップは、ボリュームＦが書き込みのために領域１のデータを取得したことを示すが、ボリュームＥのボリューム・マップは、ボリュームＥがすでにこの領域のデータを記憶したことを示し、これはボリュームＥがボリュームＦからの領域１のデータを必要としないことを意味する。
【００５０】
領域０および領域２については、ボリュームＦのボリューム・マップは、ボリュームＦがバックグラウンド・コピーのためにデータを取得したことを示し、これはデータが今もなおボリュームＤ上に存在することを意味する。このため、ボリュームＦにこれらの領域のコピーを行う必要はない。更に領域２については、ボリュームＥのボリューム・マップは、ボリュームＥが早期にボリュームＤからデータを取得したことを示し、これはボリュームＥがすでにボリュームＤからの必要なデータを有することを意味する。このため、ボリュームＦに領域２のコピーを行う必要はない。
【００５１】
次いで、ボリュームＦの領域３からボリュームＥの領域３にデータをコピーすることによってボリュームＦをクリーニングすることができる。ボリュームＤは、ボリュームＥが必要とするデータを含まないので、ボリュームＥへのクリーニング書き込みは書き込みとして処理することができる。ボリュームＤとボリュームＥとの間の関係を示すように、ボリュームＥのボリューム・マップを調節することができる。すなわちＤ→（（０，０，０，０），（０，１，１，１））→Ｅとなり、これは、ボリュームＥの領域１〜３が書き込みのためにそれらのデータを取得したこと、およびボリュームＥの領域０がデータを有しないことを示す。
【００５２】
この例では、クリーニングの量は半分に減っている。すなわち、ボリューム・マップがなかったら、クリーニングはボリュームＦの領域０からボリュームＥへの書き込みも実行しなければならないはずであった。このデータがボリュームＦに到達した理由が明らかでないからである。領域の数が増えれば、より大きな節約が可能となる。典型的には、該当する場合、１つのボリュームの少数のみの領域に書き込みが行われ、データのほとんどはバックグラウンド・コピーのために転送される。
【００５３】
いくつかの実施においては、ボリューム・マップのためのストレージ空間量を著しく低減することができる。例えば、ビットマップは主として、予想されるＩＯパターンがランダムである場合に必要とされる。これは通常、外部システムＩＯに当てはまるが、バックグラウンドＩＯには当てはまらない。バックグラウンドＩＯでは、ＩＯパターンは一般にボリュームの開始から終了までまたはその逆に配列されることが多い。従って、バックグラウンド・ビットマップをインデックスによって置換することができる（例えば、ボリュームの冒頭から始まるコピーについては高水位（watermark）、およびボリュームの最後から始まるコピーについては低水位）。インデックスを用いて、一方では全ての領域をコピーしたと見なし、他方では書き込みが発生しない限りコピーされていないと見なす。
【００５４】
上述の第１の例に戻ると、Ａ→ＢおよびＢ→Ｃが同時に開始した場合、Ａ→（ＨＭＷ＝０，（０，０，０））→Ｂ→（ＨＭＷ＝０，（０，０，０））→Ｃとなる。バックグラウンド・コピーが実行されると、マッピングはＡ→（ｈｍｗ＝１，（０，０，０））→Ｂ→（ｈｍｗ＝０，（０，０，０））→Ｃのように更新され、ボリュームへの書き込みが行われないと想定すると最終的にはＡ→（ｈｍｗ＝３，（０，０，０））→Ｂ→（ｈｍｗ＝０，（０，０，０））→Ｃとなる。この時点で、ボリュームＡのデータはバックグラウンド・コピーによってボリュームＢにコピーされており、カスケードからボリュームＢを除去するためにこの状態においてクリーニングは必要でない。通常、電子動作であるので何も実行しない場合（例えばＩＯが存在しない）、インデックスは迅速に最大値に達する。
【００５５】
ボリュームＡの領域０への書き込みがあると、ボリュームＢに転送する必要のあるデータが存在しない場合であっても、ボリューム・マップはＡ→（ｈｍｗ＝２，（１，０，０））→Ｂ→（ｈｍｗ＝０，（０，０，０））→Ｃとなる。次いで、ボリュームＢを除去するためには、領域０のみをクリーニングする必要があると判定することができ、この結果、Ａ→（ｈｍｗ＝０，（１，０，０））→Ｃとなる。このように、インデックスを用いることによってマッピングのためのストレージ空間量を約半分に減らすことができ、しかも、カスケードからボリュームを除去する場合に転送する必要があるデータの正確な計算は維持されたままである。この場合、例えば、ボリュームＢを除去した際に１つのみの領域がボリュームＣに転送されたが、もしもボリュームＢのマッピングが存在しなければ全ての領域を転送しなければならなかった。
【００５６】
図２から図３は、カスケード・ボリュームのための一例のボリューム・マップ２００および２５０をそれぞれ示す。ボリューム・マップ２００は、書き込みコピー・インジケータ２１０およびバックグラウンド・コピー・インジケータ２２０を含む。書き込みコピー・インジケータ２１０はビットマップ２１２を含み、各ビット２１４がそれぞれターゲット・ボリューム（例えばコピーが送信されるボリューム）上の領域に対応する。この例では、領域が書き込みを受信した場合、これを１で示し、領域が書き込みを受信していない場合、これをゼロで示す。この標示は他の実施においても維持することができる。同様に、バックグラウンド・コピー・インジケータ２１０はビットマップ２２２を含み、各ビット２２４がそれぞれターゲット・ボリューム上の領域に対応する。この例では、領域がバックグラウンド・コピー技法の実行による書き込みを受信した場合、これを１で示し、領域が書き込みを受信していない場合、これをゼロで示す。この標示は他の実施においても維持することができる。
【００５７】
ボリューム・マップ２５０は、書き込みコピー・インジケータ２６０およびバックグラウンド・コピー・インジケータ２７０を含む。書き込みコピー・インジケータ２６０はビットマップ２６２を含み、各ビット２６４がそれぞれターゲット・ボリューム（例えばコピーが送信されるボリューム）上の領域に対応する。ビットを様々な値にセットすることによって、書き込みコピー・インジケータ２６０は、ボリュームの様々な領域におけるデータが（例えば直接そのボリュームへのまたは上流ボリュームへの）書き込みによるものであるか否かを示すことができる。バックグラウンド・コピー・インジケータ２７０はインデックス２７２を含む。インデックス２７２はシーケンシャル・インジケータであり、複数のインジケータがボリューム上の複数の領域にマッピングする。例えばインデックス２７２は、ボリューム上の領域にマッピングする数（例えば整数）または１つ以上の文字を記憶することができる。インデックス２７２を調べることによって、ストレージ・コントローラは、バックグラウンド・コピーが１つのボリュームを別のボリュームにコピーする際にどのくらい進行したかを判定することができる。
【００５８】
図２から図３はボリューム・マップの２つの例を示すが、他のボリューム・マップの例も存在する。例えば、ビットマップを用いる代わりに、インジケータがフラグ（例えば真／偽）のアレイを用いて、条件が発生したか否かを示すことができる。一般に、ボリュームの領域に位置をマッピングすることができるいかなるタイプのアレイまたは構成物（construct）も使用可能である。更に、アレイは、単一のアレイ（例えば２ｘＮもしくはＮｘ２）または別個のアレイとして実施することができ、異なるメモリ部分の同一部分にあることも可能である。更に、論理的に認識できるいかなるインジケータも使用可能である。
【００５９】
この検討のため、ボリューム・マップ１２３内のメタデータは一般的に以下の方法で変更することでデータの正確な追跡を保証することができる。ボリュームに対する外部書き込みでは、そのボリュームの書き込みビットマップおよび下流ボリューム（存在する場合）の書き込みビットマップ内の領域にマークを付ける。下流ボリュームは、例えばボリュームが最も早いバックアップ・ボリュームである場合には存在しないことがある。ボリュームに対するバックグラウンド書き込みでは、領域のバックグラウンド・コピーが成功した場合にインジケータを調節する。バックグラウンド・ビットマップでは、これはその領域に関連付けられたビットをセットすることを含むことができる。インデックスでは、これはインデックスの増分を含むことができる。コピー・オン・ライトがすでに領域に実行されている場合、バックグラウンド・コピーについての書き込みの実行もバックグラウンド・ビットマップの調節も必要ない場合がある。従ってこれらの動作をスキップすることができる（例えば書き込みコピー・インジケータを調べることによって）。これ以上の動作を行う必要がないという指示で充分である場合がある。
【００６０】
読み取りは、この読み取りのために時間同期したボリュームで開始しなければならない。データがボリューム上で当該領域に存在する場合、そのボリュームを読み取る。データがボリューム上で当該領域に存在しない場合、次の上流ボリュームに進む。（１）ボリューム・マップを有しない場合、そのボリュームを読み取る（例えばチェーンが一次ボリュームまで戻る）。（２）ボリューム・マップによって、対象領域に書き込みが行われたことが示される場合、そのボリュームを読み取る。（３）ボリューム・マップによって、バックグラウンド・コピー・プロセスが対象領域を処理したことが示される場合、そのボリュームを読み取る。ボリューム・マップがこれらの条件のどれも満たさない場合、次の上流ボリュームに進んでそのボリューム・マップを同じ方法で分析する。
【００６１】
カスケードからボリュームを除去する場合のクリーニングでは、除去するボリュームのボリューム・マップを最初に分析する。マップによって、ボリューム内の領域が書き込みのために書き込まれたことが示される場合、その領域はカスケードの下流にある次のボリュームへと移動させる候補である。次いで下流ボリュームのボリューム・マップを当該領域についてチェックして、下流ボリュームがその領域についてすでにデータを有するか否かを判定する。下流ボリュームがその領域のデータを有しない場合、当該領域は除去するボリュームから下流ボリュームにコピーされる。更に、下流ボリュームのボリューム・マップにマークを付ける。
【００６２】
システム１００は様々な特性を有する。例えばシステム１００は、カスケードからボリュームを除去する場合に必要なクリーニング量を低減し、これによってボリュームを除去するために要する時間および労力の量を大幅に低減することができる。更に、これは残りのボリューム上に置かれるデータ量を減らすことができる。更に、この低減は、領域上に保持されるデータを分類するために必要なメタデータがわずかに増大するだけで達成可能である。このため、低いメタデータ・コストでクリーニングの向上という結果を得ることができる。
【００６３】
図１はカスケード・ボリュームのソース・クリーニングのためのシステムの１つの実施を示すが、他のシステムでは、含むコンポーネントの削減、追加、または異なる配置あるいはそれら全てを行うことも可能である。例えば、多数の外部システムがストレージ・システムに書き込みを行う場合がある。更に、ストレージ・システムは多数のカスケード・ボリューム・セットを有することができる。更に、当業者によって認められるように、多数のターゲット・カスケードが全く同一の方法で機能する。
【００６４】
図４は、カスケード・ボリュームのソース・クリーニングのための一例のプロセス３００を示す。プロセス３００は、例えばシステム１００と同様のシステムによって実行することができる。
【００６５】
プロセス３００は、ボリュームに対する書き込みが受信されたか否かの判定を要求する（動作３０４）。ボリュームに対する書き込みが受信されていない場合、プロセス３００はボリュームに対する書き込みの待機を要求する。
【００６６】
いったんボリュームに対する書き込みが受信されると、プロセス３００はこの書き込みがボリューム上に生成されるバックグラウンド・コピーによるものであるか否かの判定を要求する（動作３０８）。ストレージ・コントローラは、例えば他の構成データ（例えばメタデータ内の）と同じ方法でボリューム間のコピーのタイプ（例えばクローン対スナップショット）を常に監視することができる。書き込みがボリューム上に生成されるバックグラウンド・コピーによるものである場合、プロセス３００はボリュームのボリューム・マップ（すなわちクローンされるボリュームと書き込みを受信したボリュームとの間のマップ）におけるバックグラウンド・コピー・インジケータの調節を要求する。ボリューム・マップは、例えばインデックスの調節（例えば増分または減少）によって調節することができる。次いでプロセス３００は戻ってボリュームに対する別の書き込みを待つ。
【００６７】
書き込みがボリューム上に生成されるバックグラウンド・コピーによるものでない場合、プロセス３００は、書き込みがボリューム上に生成されるスナップショット・コピーによるものであるか否かの判定を要求する（動作３１６）。書き込みがボリューム上に生成されるスナップショット・コピーによるものである場合、プロセス３００は、ボリュームのボリューム・マップにおける書き込みコピー・インジケータの調節を要求する（動作３２０）。ボリューム・マップは、例えば領域に関連付けられたビットをセットすることによって調節可能である。バックグラウンド・コピーを実行した後に上流ボリュームへの書き込みが行われた場合、書き込みコピー・インジケータを調節することができる。次いでプロセス３００は戻ってボリュームに対する別の書き込みを待つ。
【００６８】
書き込みがボリューム上に生成されるスナップショット・コピーによるものでない場合（例えば書き込みが外部ソースから直接ボリュームに入来している場合）、プロセス３００は、書き込みがボリュームに対する直接書き込みによるものであるか否かの判定を要求する（動作３２４）。書き込みがボリュームに対する直接書き込みによるものでない場合、プロセス３００はボリュームに対する別の書き込みの待機を要求する（動作３０４）。
【００６９】
しかしながら、書き込みがボリュームに対する直接書き込みによるものである場合、プロセス３００は、下流ボリュームがデータを必要とするか否かの判定を要求する（動作３２８）。下流ボリュームがデータを必要とすることがあるのは、例えば、書き込みが下流ボリュームのデータを記憶している領域に対するものである場合、または書き込みが下流ボリュームのデータを記憶している上流ボリューム上のものに相当する領域に対するものである場合である（例えばある領域をカスケード中央のボリュームに書き込む際に、一次ボリュームがカスケードの更に下流にあるボリュームのデータを記憶している場合）。下流ボリュームがデータを必要としない場合、プロセス３００はボリュームに対する別の書き込みの待機を要求する（動作３０４）。
【００７０】
しかしながら、下流ボリュームがデータを必要とする場合、プロセス３００は書き込みに関連付けられた領域のデータの読み取りの実行を要求する（動作３３２）。読み取りは、例えば上述のＩＯルールに従って実行可能である。このため、読み取りは、書き込まれるボリュームまたは上流ボリュームのものであり得る。
【００７１】
また、プロセス３００は、読み取ったデータを下流ボリュームに移動することを要求する（動作３３６）。下流ボリュームはこのデータを分割書き込みまたはコピーとして受信する。プロセス３００は更に、ボリュームのボリューム・マップの書き込みコピー・インジケータの調節（動作３４０）、および、下流ボリュームのボリューム・マップの書き込みコピー・インジケータの調節（動作３４４）を要求する。次いで、プロセス３００は戻ってボリュームに対する別の書き込みを待つ。
【００７２】
プロセス３００は、バックアップ・ボリュームをコピーしている限り動作することができる。このためプロセス３００は、通常動作の間に多数回にわたって繰り返すことができる。
【００７３】
図５は、カスケード・ボリュームのソース・クリーニングのための別の一例のプロセス４００を示す。プロセス４００は、例えばシステム１００と同様のシステムによって実行することができる。更に、プロセス４００はプロセス３００と関連付けて使用可能である。
【００７４】
プロセス４００は、ボリュームをクリーニングするか否かの判定を要求する（動作４０４）。ボリュームは、例えばカスケードから除去するかまたは再開する場合にクリーニングする必要があり得る。ボリュームをクリーニングしない場合、プロセス４００はクリーニングするボリュームの待機を要求する。
【００７５】
ボリュームをクリーニングするならば、プロセス４００はクリーニングを開始するボリュームの領域の選択を要求する（動作４０８）。これは例えば、ボリューム上の第１の領域、ボリューム上の最後の領域、またはそれらの中間の領域を選択することで実行可能である。また、プロセス４００は、ボリュームのボリューム・マップの書き込みコピー・インジケータにおいてその領域にマークが付けられているか否かの判定を要求する（動作４１２）。例えば領域のためにインジケータ（例えばビットまたはフラグ）をセットした場合に、領域にマークを付けることができる。ボリュームのボリューム・マップの書き込みコピー・インジケータにおいて領域にマークが付けられていない場合、プロセス４００は、ボリュームにおいて分析する別の領域が存在するか否かの判定を要求する（動作４１６）。分析する別の領域が存在する場合、プロセスは、ボリュームのボリューム・マップの書き込みコピー・インジケータにおいてその領域にマークが付けられているか否かの判定を要求する（動作４１２）。プロセス４００は、ボリュームの全ての領域を分析してプロセス４００が終了する時点まで、またはボリュームのボリューム・マップの書き込みコピー・インジケータにおいてその領域にマークが付けられるまで、動作４１２から４１６を繰り返す。
【００７６】
ボリュームのボリューム・マップの書き込みコピー・インジケータにおいて領域にマークが付けられている場合、プロセス４００は、下流ボリュームのボリューム・マップの書き込みコピー・インジケータにおいて領域にマークが付けられているか否かの判定を要求する（動作４２０）。下流ボリュームのボリューム・マップの書き込みコピー・インジケータにおいて領域にマークが付けられている場合、プロセス４００は、ボリュームにおいて分析する別の領域が存在するか否かの判定を要求する（動作４１６）。下流ボリュームのボリューム・マップにおいて領域にマークが付けられていない場合、プロセス４００は、その領域のデータを下流ボリュームにコピーすることを要求する（動作４２４）。また、プロセス４００は、その領域のために下流ボリュームのボリューム・マップの書き込みコピー・インジケータを調節することを要求する（動作４２８）。次いでプロセス４００は、ボリュームにおいて分析する別の領域が存在するか否かの判定を要求する（動作４１６）。
【００７７】
プロセス４００は、バックアップ・ボリュームをコピーしている限り動作することができる。このためプロセス４００は、通常動作の間に多数回にわたって繰り返すことができる。
【００７８】
図面におけるフローチャートおよびブロック図は、本開示の様々な実施のシステム、方法、およびコンピュータ・プログラムのアーキテクチャ、機能性、および動作を例示する。この点で、フローチャートまたはブロック図における各ブロックは、規定された論理機能（複数の機能）を実施するための１つ以上の実行可能命令を含むことができるコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序通りでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した２つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、規定された機能もしくは行為を実行する特殊目的ハードウェア・ベースのシステム、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって実施可能であることに留意すべきである。
【００７９】
図６は、カスケード・コピーのソース・クリーニングを管理するための一例のコンピュータ・システム５００を示す。コンピュータ・システム５００は、例えばストレージ・システムのストレージ・コントローラのコンポーネントのいくつかを示すことができる。
【００８０】
システム５００は、プロセッサ５１０、入出力システム５２０、およびメモリ５３０を含み、これらはネットワーク５４０によって結合されている。図示のように、コンピュータ・システム５００はストレージ・システムのストレージ・コントローラとして機能している。
【００８１】
プロセッサ５１０は典型的に、（例えばソフトウェアからの）プログラム命令の指示のもとでデータを処理する論理処理ユニット（例えば演算論理ユニット）を含む。例えばプロセッサ５１０は、マイクロプロセッサ、マイクロコントローラ、または特定用途向け集積回路とすることができる。プロセッサは、ＲＩＳＣ（reduced instruction set computer：縮小命令セット・コンピュータ）またはＣＩＳＣ（complex instruction set computer：複合命令セット・コンピュータ）の原理によって動作することができる。一般に、プロセッサはデータを論理的に操作するいずれかのデバイスとすれば良い。
【００８２】
入出力システム５２０は、１つ以上の通信インタフェースまたは１つ以上の他のユーザ・インタフェースあるいはその両方を含むことができる。通信インタフェースは、例えばネットワーク・インタフェース・カード（無線もしくは有線）またはモデムとすることができる。ユーザ・インタフェースは、例えばユーザ入力デバイス（例えばキーボード、キーパッド、タッチパッド、スタイラス、もしくはマイクロフォン）、またはユーザ出力デバイス（例えばモニタ、ディスプレイ、もしくはスピーカ）とすれば良い。一般に、入出力システム５２０は、コンピュータ・システムがデータを受信および出力することができるデバイスのいずれかの組み合わせとすることができる。
【００８３】
メモリ５３０は、例えばランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュ・メモリ、またはディスク・メモリ、あるいはそれら全てを含むことができる。メモリの異なる部分に様々な時点で様々な項目を記憶することができる。メモリ５３０は一般に、データを記憶するためのデバイスのいずれかの組み合わせとすることができる。
【００８４】
メモリ５３０は命令５３２およびデータ５３６を含む。命令５３２は、オペレーティング・システム５３３（例えばＷｉｎｄｏｗｓ（Ｒ）、Ｌｉｎｕｘ、またはＵｎｉｘ）と、バックアップ・マネージャ５３５を含むアプリケーション５３４と、を含む。データ５３６は、アプリケーション５３４が必要とするかまたは生成するあるいはその両方であるデータを含み、これは書き込みデータ５３７およびボリューム・マップ５３８を含む。
【００８５】
ネットワーク５４０は、プロセッサ５１０、入出力システム５２０、およびメモリ５３０間のデータ通信を担う。ネットワーク５４０は、例えば異なるタイプのバス（例えばシリアルおよびパラレル）を含むことができる。
【００８６】
いくつかの動作モードにおいて、プロセッサ５１０は（例えば外部システムから）書き込みを受信して、コンピュータ・システムが管理する記憶のためにそれらを準備することができる。更にプロセッサ５１０は、バックアップ・マネージャ５３５に従って、ストレージ内のボリュームのためのバックアップ・ボリュームを発生することができる。各バックアップ・ボリュームは関連付けられたボリューム・マップ５３８を有することができ、これはボリュームにデータが配置された理由を領域ごとに示すことができる。ボリュームにデータが書き込まれると、プロセッサ５１０はボリューム・マップ５３８を更新することができる。更に、プロセッサ５１０は、ボリュームのカスケードからボリュームが除去される場合にボリューム・マップを用いることができる。プロセッサ５１０は、例えばプロセス３００〜４００の１つ以上の部分を含む上述の技法のいずれかを実施することによってこれを達成可能である。
【００８７】
本明細書において用いた用語は、特定の実施を記載する目的のためだけのものであり、限定は意図していない。本明細書において用いる場合、単数形「１つの（a）、（an）、（the）」は、文脈によって明らかに他の場合が示されない限り複数形を含むことが意図されている。また、「含む（comprises）」または「含んでいる（comprising）」という言葉あるいはその両方は、本明細書において用いられた場合、述べた特性、整数、ステップ、動作、要素、またはコンポーネント、あるいはそれら全ての存在を規定するが、１つ以上の他の特性、整数、ステップ、動作、要素、コンポーネント、またはそれらのグループあるいはそれら全ての存在または追加を除外するものではないことは、理解されよう。
【００８８】
以下の特許請求の範囲における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為、および均等物は、具体的に特許請求したような他の特許請求した要素と組み合わせて機能を実行するためのいずれかの構造、材料、または行為を含むことが意図されている。本実施の記載は、例示および記述の目的のために提示したが、網羅的であることや、開示した形態に実施を限定することは、意図していない。本発明の範囲から逸脱することなく、当業者には多くの変更および変形が明らかであろう。実施は、本開示の原理および実際的な用途を説明するため、更に、想定される特定の用途に適した様々な変更と共に様々な実施に関して当業者が本開示を理解することを可能とするために、選択し記載したものである。
【００８９】
カスケード・ボリュームのソース・クリーニングについて多数の実施を記載し、いくつかの他のものを言及または提示した。更に、カスケード・ボリュームのソース・クリーニングを達成しながら、これらの実施に対して多種多様な追加、削除、変更、および置換を実施可能であることは、当業者には認められよう。従って、保護される主題の範囲は、１つ以上の実施の１つ以上の概念を把握することができる以下の特許請求の範囲に基づいて判断されるものである。
【図１】
2015525414.tif 000003
【図２】
2015525414.tif 000004
【図３】
2015525414.tif 000005
【図４】
2015525414.tif 000006
【図５】
2015525414.tif 000007
【図６】
2015525414.tif 000008
【手続補正書】
【提出日】平成27年1月28日(2015.1.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
カスケード・ボリュームのソース・クリーニングのためのシステムであって、
一次ボリュームおよび前記一次ボリュームのための複数のカスケード・バックアップ・ボリュームを含むストレージと、
外部ソースから前記ボリュームの１つ以上に対する書き込みを受信すると共に、これに記憶するために前記書き込みを準備するように適合されたストレージ・コントローラであって、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームのバックグラウンド・コピーを行うことによるものであるか否かを判定し、
前記書き込みが前記カスケードにおける別のボリュームのバックグランド・コピーによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおけるバックグラウンド・コピー・インジケータを調節し、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームへの書き込みによるものであるか否かを判定し、
前記書き込みが前記カスケードにおける別のボリュームへの書き込みによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおける書き込みコピー・インジケータを調節する、
ように更に適合されているストレージ・コントローラと、
を含む、システム。
【請求項２】
前記ストレージ・コントローラが、
前記バックアップ・ボリュームの１つへの書き込みが前記ボリュームへの直接書き込みであるか否かを判定し、
書き込みが直接書き込みである場合、前記カスケードにおける下流ボリュームにデータを移動させる必要があるか否かを判定し、
前記カスケードにおける下流ボリュームにデータを移動させる必要がある場合、前記バックアップ・ボリュームの読み取りを実行し、
前記読み取ったデータを前記下流ボリュームに移動させ、
前記下流ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節し、
前記バックアップ・ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節する、
ように更に適合されている、請求項１に記載のシステム。
【請求項３】
ボリューム・マップが２つのビットマップを含み、各ビットマップが前記ボリュームの領域に対応するビットを含み、前記ビットマップの１つが、領域が書き込みによるデータを含むか否かを示し、前記ビットマップの１つが、領域がバックグラウンド・コピーによるデータを含むか否かを示す、請求項１に記載のシステム。
【請求項４】
ボリューム・マップがビットマップおよびインデックスを含み、前記ビットマップが、前記ボリュームの領域に対応するビットを含むと共に領域が書き込みによるデータを含むか否かを示し、前記インデックスが、ボリュームのどのくらいが別のボリュームのバックグラウンド・コピーによるデータを含むかを示す、請求項１に記載のシステム。
【請求項５】
前記ストレージ・コントローラが、
前記カスケードにおける前記バックアップ・ボリュームの１つをクリーニングするべきであるか否かを判定し、
バックアップ・ボリュームをクリーニングするべきである場合、前記ボリュームのボリューム・マップにおいてクリーニングする前記ボリュームの領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定し、
前記ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、別の領域を分析対象に選択する、
ように更に適合されている、請求項１に記載のシステム。
【請求項６】
前記ストレージ・コントローラが、
前記クリーニングされるボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、前記カスケードにおける下流ボリュームのボリューム・マップにおいて前記領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定し、
前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、別の領域を分析対象に選択し、
前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、クリーニングする前記ボリュームから前記下流ボリュームに前記領域のデータをコピーする、
ように更に動作可能である、請求項５に記載のシステム。
【請求項７】
前記ストレージ・コントローラが、前記下流ボリュームの前記ボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータを調節するように更に適合されている、請求項６に記載のシステム。
【請求項８】
前記ストレージ・コントローラが、ボリュームを前記カスケードから除去することに基づいて前記ボリュームをクリーニングするべきであると判定するように適合されている、請求項５に記載のシステム。
【請求項９】
カスケード・ボリュームのソース・クリーニングのための方法であって、
一次ボリュームおよび前記一次ボリュームのための複数のカスケード・バックアップ・ボリュームを記憶することと、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームのバックグラウンド・コピーを行うことによるものであるか否かを判定することと、
前記書き込みが前記カスケードにおける別のボリュームのバックグランド・コピーによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおけるバックグラウンド・コピー・インジケータを調節することと、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームへの書き込みによるものであるか否かを判定することと、
前記書き込みが前記カスケードにおける別のボリュームへの書き込みによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおける書き込みコピー・インジケータを調節することと、
を含む、方法。
【請求項１０】
前記バックアップ・ボリュームの１つへの書き込みが前記ボリュームへの直接書き込みであるか否かを判定することと、
書き込みが直接書き込みである場合、前記カスケードにおける下流ボリュームにデータを移動させる必要があるか否かを判定することと、
前記カスケードにおける下流ボリュームにデータを移動させる必要がある場合、前記バックアップ・ボリュームの読み取りを実行することと、
前記読み取ったデータを前記下流ボリュームに移動させることと、
前記下流ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節することと、
前記バックアップ・ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節することと、
を更に含む、請求項９に記載の方法。
【請求項１１】
ボリューム・マップが２つのビットマップを含み、各ビットマップが前記ボリュームの領域に対応するビットを含み、前記ビットマップの１つが、領域が書き込みによるデータを含むか否かを示し、前記ビットマップの１つが、領域がバックグラウンド・コピーによるデータを含むか否かを示す、請求項９に記載の方法。
【請求項１２】
ボリューム・マップがビットマップおよびインデックスを含み、前記ビットマップが、前記ボリュームの領域に対応するビットを含むと共に領域が書き込みによるデータを含むか否かを示し、前記インデックスが、ボリュームのどのくらいが別のボリュームのバックグラウンド・コピーによるデータを含むかを示す、請求項９に記載の方法。
【請求項１３】
前記カスケードにおける前記バックアップ・ボリュームの１つをクリーニングするべきであるか否かを判定することと、
バックアップ・ボリュームをクリーニングするべきである場合、前記ボリュームのボリューム・マップにおいてクリーニングする前記ボリュームの領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定することと、
前記ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、別の領域を分析対象に選択することと、
を更に含む、請求項９に記載の方法。
【請求項１４】
前記クリーニングされるボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、前記カスケードにおける下流ボリュームのボリューム・マップにおいて前記領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定することと、
前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、別の領域を分析対象に選択することと、
前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、クリーニングする前記ボリュームから前記下流ボリュームに前記領域のデータをコピーすることと、
を更に含む、請求項１３に記載の方法。
【請求項１５】
前記下流ボリュームの前記ボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータを調節することを更に含む、請求項１４に記載の方法。
【請求項１６】
ボリュームを前記カスケードから除去することに基づいて前記ボリュームをクリーニングするべきであると判定することを更に含む、請求項１３に記載の方法。
【請求項１７】
カスケード・ボリュームのソース・クリーニングのためのコンピュータ・プログラムであって、
一次ボリュームおよび前記一次ボリュームのための複数のカスケード・バックアップ・ボリュームを記憶するための第１のプログラム命令と、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームのバックグラウンド・コピーを行うことによるものであるか否かを判定すると共に、前記書き込みが前記カスケードにおける別のボリュームのバックグランド・コピーによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおけるバックグラウンド・コピー・インジケータを調節するための第２のプログラム命令と、
前記バックアップ・ボリュームの１つへの書き込みが、前記カスケードにおける別のボリュームへの書き込みによるものであるか否かを判定すると共に、前記書き込みが前記カスケードにおける別のボリュームへの書き込みによるものである場合、前記バックアップ・ボリュームのためのボリューム・マップにおける書き込みコピー・インジケータを調節するための第３のプログラム命令と、
を含み、これらのプログラム命令がコンピュータによって実行される、コンピュータ・プログラム。
【請求項１８】
前記バックアップ・ボリュームの１つへの書き込みが前記ボリュームへの直接書き込みであるか否かを判定し、書き込みが直接書き込みである場合、前記カスケードにおける下流ボリュームにデータを移動させる必要があるか否かを判定し、前記カスケードにおける下流ボリュームにデータを移動させる必要がある場合、前記バックアップ・ボリュームの読み取りを実行し、前記読み取ったデータを前記下流ボリュームに移動させ、前記下流ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節し、前記バックアップ・ボリュームのための前記ボリューム・マップにおける書き込みコピー・インジケータを調節するための第４のプログラム命令を更に含む、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
ボリューム・マップが２つのビットマップを含み、各ビットマップが前記ボリュームの領域に対応するビットを含み、前記ビットマップの１つが、領域が書き込みによるデータを含むか否かを示し、前記ビットマップの１つが、領域がバックグラウンド・コピーによるデータを含むか否かを示す、請求項１７に記載のコンピュータ・プログラム。
【請求項２０】
ボリューム・マップがビットマップおよびインデックスを含み、前記ビットマップが、前記ボリュームの領域に対応するビットを含むと共に領域が書き込みによるデータを含むか否かを示し、前記インデックスが、ボリュームのどのくらいが別のボリュームのバックグラウンド・コピーによるデータを含むかを示す、請求項１７に記載のコンピュータ・プログラム。
【請求項２１】
前記カスケードにおける前記バックアップ・ボリュームの１つをクリーニングするべきであるか否かを判定し、バックアップ・ボリュームをクリーニングするべきである場合、前記ボリュームのボリューム・マップにおいてクリーニングする前記ボリュームの領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定し、前記ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、別の領域を分析対象に選択するための第５のプログラム命令を更に含む、請求項１７に記載のコンピュータ・プログラム。
【請求項２２】
前記クリーニングされるボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、前記カスケードにおける下流ボリュームのボリューム・マップにおいて前記領域のための書き込みコピー・インジケータにマークが付けられているか否かを判定し、前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられている場合、別の領域を分析対象に選択し、前記下流ボリュームのボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータにマークが付けられていない場合、クリーニングする前記ボリュームから前記下流ボリュームに前記領域のデータをコピーするための第６のプログラム命令を更に含む、請求項２１に記載のコンピュータ・プログラム。
【請求項２３】
前記下流ボリュームの前記ボリューム・マップにおいて前記領域のための前記書き込みコピー・インジケータを調節するための第７のプログラム命令を更に含む、請求項２２に記載のコンピュータ・プログラム。
【請求項２４】
ボリュームを前記カスケードから除去することに基づいて前記ボリュームをクリーニングするべきであると判定するための第８のプログラム命令を更に含む、請求項２１に記載のコンピュータ・プログラム。
【国際調査報告】
2015525414.tif 000009
2015525414.tif 000010