(57)【要約】【課題】障害からデータを保護するためにバックアップを確実にする。【解決手段】仮想ボリューム２０２を複数の同サイズのチャンクに分割し、該仮想ボリュームのコンテンツを指定時間（例えば午前８時）にフローズンイメージ２０８に記憶し、ポイントインタイム（ＰｉＴ）インスタンスを生成する。ＰｉＴインスタンスは、指定時間後の仮想ボリュームへの修正を記憶し上書き禁止のＰｉＴテンポラリ仮想ボリューム（ＰＴＶＶ）２０６と、仮想ボリュームの複数のチャンクのそれぞれの最新バージョンへの読み出しアクセスを提供するリアロケーションテーブルと、ＰＴＶＶに記憶されたチャンクの過去のバージョンへの読み出しアクセスを提供する連続データ保護（ＣＤＰ）ログとを備えている。これにより仮想ボリューム２０４が現在の仮想ボリュームとなり、該仮想ボリューム２０４のチャンクが修正されると、ＰｉＴインスタンスが更新される。別の例えば１１時にも同様にバックアップが採られる。【選択図】図２
2011054153.tif 000002
【特許請求の範囲】
【請求項１】
仮想ボリュームに対して連続データ保護を提供するための方法であって、
仮想ボリュームを複数の同サイズのチャンクに概念的に分割するステップと、
該仮想ボリュームのコンテンツを保護し、且つ第１の指定時間における仮想ボリュームへの直接書き込みアクセスを禁止するステップと、
第１の指定時間に仮想ボリュームに対して、第１のＰｉＴインスタンスを生成するステップであって、第１のＰｉＴインスタンスが、
第１の指定時間より後の仮想ボリュームへの修正を記憶するための、上書きが禁止された第１のＰｉＴテンポラリ仮想ボリューム（ＰＴＶＶ）と、
仮想ボリュームの複数のチャンクのそれぞれのためのエントリを備える第１のリアロケーションテーブルであって、仮想ボリュームの複数のチャンクのそれぞれの最新バージョンへの読み出しアクセスを提供するための第１のリアロケーションテーブルと、
第１のＰＴＶＶに記憶されたチャンクの過去のバージョンへの読み出しアクセスを提供するための第１の連続データ保護（ＣＤＰ）ログと
を備えている、生成ステップと、
仮想ボリュームの複数のチャンクが修正されている時に、第１のＰｉＴインスタンスを更新するステップと
を含むことを特徴とする方法。
【請求項２】
請求項１記載の方法において、仮想ボリュームの複数のチャンクのそれぞれが修正されている時に、第１のＰｉＴインスタンスを更新するステップを更新するステップはさらに、
修正されているチャンクの修正されたコンテンツを受信するステップと、
第１のＰＴＶＶに記憶されている既存のチャンクを上書きすることなしに、第１のＰＴＶＶに修正されたコンテンツを記憶するステップと、
修正されているチャンクに対応するエントリを、第１のリアロケーションテーブルに配置するステップと、
修正されているチャンクに対応するエントリが、割り当て済みとしてマークされているかどうかを決定するステップと、
修正されているチャンクに対応するエントリが、割り当て済みとしてマークされていない場合、第１のリアロケーションテーブルを更新するステップであって、
修正されているチャンクに対応するエントリを第１のＰＴＶＶに記憶されている修正されたコンテンツと関連付けるステップと、
修正されているチャンクに対応するエントリを割り当て済みとしてマークするステップと
を含む更新するステップと、
修正されているチャンクに対応するエントリが割り当て済みとしてマークされている場合に、ＣＤＰログ及び第１のリアロケーションテーブルを更新するステップであって、
ＣＤＰログにログエントリを作成し、かつ修正されたコンテンツを受信する前に、ログエントリを修正されているチャンクの過去のコンテンツと関連づけるステップと、
修正されているチャンクに対応するエントリを、第１のＰＴＶＶに記憶された修正されたコンテンツと関連付けるステップを含むステップと
を含む更新するステップと
からなることを特徴とする方法。
【請求項３】
請求項１記載の方法はにおいて、該方法はさらに、
第１の指定時間の後の第２の指定時間に、第１のＰｉＴインスタンスのコンテンツを保存し、且つ第１のＰｉＴインスタンスへ直接書き込みアクセスを禁止するステップと、
第２の指定時間に仮想ボリュームに対して第２のＰｉＴインスタンスを生成するステップであって、該第２のＰｉＴインスタンスは、
第２の指定時間の後に仮想ボリュームへの修正を記憶するための第２のＰＴＶＶであって、記憶されたデータの上書きが禁止されている第２のＰＴＶＶと、
仮想ボリュームの複数のチャンクのそれぞれのためのエントリを含む第２のリアロケーションテーブルであって、仮想ボリュームの複数のチャンクのそれぞれの最新バージョンへの読み出しアクセスを提供するための第２のリアロケーションテーブルと、
第２のＰＴＶＶに記憶されたチャンクの過去のバージョンへの読み出しアクセスを提供するための第２のＣＤＰログと
を備えている、生成ステップと、
仮想ボリュームの複数のチャンクの内のあるチャンクが修正されているときに、第２のＰｉＴインスタンスを更新するステップと
を含むことを特徴とする方法。
【請求項４】
請求項３記載の方法において、仮想ボリュームの複数のチャンクの内のあるチャンクが修正されているときに、第２のＰｉＴインスタンスを更新するステップは、
修正されているチャンクの修正されたコンテンツを受信するステップと、
第２のＰＴＶＶに記憶された既存のチャンクを上書きすることなしに、修正されたコンテンツを第２のＰＴＶＶに記憶するステップと、
修正されているチャンクに対応するエントリを、第２のリアロケーションテーブルに配置するステップと、
修正されているチャンクに対応するエントリが、割り当て済みとしてマークされているかを決定するステップと、
修正されているチャンクに対応するエントリが、割り当て済みとしてマークされていないときに、第２のリアロケーションテーブルを更新するステップであって、
修正されているチャンクに対応するエントリを第２のＰＴＶＶに記憶されている修正されたコンテンツと関連付けるステップと、
修正されているチャンクに対応するエントリを割り当て済みとしてマークするステップと
を含む更新するステップと、
修正されているチャンクに対応するエントリが割り当て済みとして表示されているときに、ＣＤＰログ及び第２のリアロケーションテーブルを更新するステップであって、
ＣＤＰログにログエントリを作成し、かつ修正されたコンテンツを受信する前に、ログエントリを修正されているチャンクの過去のコンテンツと関連づけるステップと、
修正されているチャンクに対応するエントリを、第２のＰＴＶＶに記憶された修正されたコンテンツと関連付けるステップと
を含む更新するステップと
を含むことを特徴とする方法。
【請求項５】
請求項１記載の方法において、該方法はさらに、
粒度の定義を受信するステップと、
該粒度の定義に基づいて、ＰｉＴインスタンスのＰＴＶＶに記憶されたチャンクを圧縮するステップと
を含むことを特徴とする方法。
【請求項６】
請求項１記載の方法はさらに、
指定のＰｉＴインスタンスを除去するステップと、指定のＰｉＴインスタンスのＰＴＶＶを、以前のＰｉＴ及び仮想ボリュームの少なくともいずれか１つに統合するステップと
を含むことを特徴とする方法。
【請求項７】
請求項１記載の方法において、仮想ボリュームを修正するステップは、仮想ボリュームの複数のチャンクのある１つのチャンク上で書き込み操作が実行されるときに生じることを特徴とする方法。
【請求項８】
請求項１記載の方法において、第１及び第２の指定時間の少なくとも１つを指定するステップは、オンデマンド要求及び所定の時間間隔の少なくともいずれかを使用することを特徴とする方法。
【請求項９】
仮想ボリュームに対して復元インスタンスを作成する方法であって、
復元時間を受信するステップと、
復元時間より前の最新作成時間を有するポイントインタイム（ＰｉＴ）インスタンスを識別するステップと、
識別されたＰｉＴインスタンスのリアロケーションテーブルを、復元インスタンスのリアロケーションテーブルに関連付けるステップと、
識別されたＰｉＴインスタンスの連続データ保護ログ（ＣＤＰログ）及び復元時間に基づいて、復元インスタンスのリアロケーションテーブルを更新するステップと
を含むことを特徴とする方法。
【請求項１０】
請求項９記載の方法において、識別されたＰｉＴインスタンスの連続データ保護ログ（ＣＤＰログ）及び復元時間に基づいて、復元インスタンスのリアロケーションテーブルを更新するステップは、
仮想ボリュームの特定のチャンクのために作成された、少なくとも１つのログエントリを、ＣＤＰログ内で識別するステップと、
特定のチャンクのために作成された少なくとも１つのログエントリにおいて、復元時間より前で最新作成時間を有するログエントリを識別するステップと、
特定のチャンクのためのエントリを復元インスタンスのリアロケーションテーブルに配置するステップと、
リアロケーションテーブル内の特定のチャンクのためのエントリを、復元ログエントリが関連付けられているチャンクバージョンと関連付けるステップと
を含むことを特徴とする方法。
【請求項１１】
仮想ボリュームに対して連続データ保護を提供するためのシステムであって、
仮想ボリュームを複数の同サイズのチャンクに概念的に分割する手段と、
仮想ボリュームのコンテンツを保護し、且つ第１の指定時間における仮想ボリュームへの直接書き込みアクセスを禁止する手段と、
第１の指定時間に仮想ボリュームに対して第１のポイントインタイム（ＰｉＴ）インスタンスを生成する手段であって、第１のＰｉＴインスタンスが、
第１の指定時間より後の仮想ボリュームへの修正を記憶するために構成された第１のＰｉＴテンポラリ仮想ボリューム（ＰＴＶＶ）であって、記憶されたデータの上書きが禁じられている第１のＰＴＶＶと、
仮想ボリュームの複数のチャンクのそれぞれのためのエントリを備える第１のリアロケーションテーブルであって、仮想ボリュームの複数のチャンクのそれぞれの最新バージョンへの読み出しアクセスを提供するための第１のリアロケーションテーブルと、
第１のＰＴＶＶに記憶されたチャンクの過去のバージョンへの読み出しアクセスを提供するための第１の連続データ保護（ＣＤＰ）ログと
を備える手段と、
仮想ボリュームの複数のチャンクが修正されているときに、第１のＰｉＴインスタンスを更新する手段と
を含むことを特徴とするシステム。
【請求項１２】
請求項１１記載のシステムにおいて、仮想ボリュームの複数のチャンクが修正されているときに、第１のＰｉＴインスタンスを更新する手段は、
修正されているチャンクの修正されたコンテンツを受信する手段と、
第１のＰＴＶＶに記憶されている既存のチャンクを上書きすることなしに、第１のＰＴＶＶに修正されたコンテンツを記憶する手段と、
修正されているチャンクに対応するエントリを、第１のリアロケーションテーブルに配置する手段と、
修正されているチャンクに対応するエントリが、割り当て済みとしてマークされているかどうかを決定する手段と、
修正されているチャンクに対応するエントリが、割り当て済みとしてマークされていないときに、第１のリアロケーションテーブルを更新する手段であって、
修正されているチャンクに対応するエントリを第１のＰＴＶＶに記憶されている修正されたコンテンツと関連付ける手段と、
修正されているチャンクに対応するエントリを割り当て済みとしてマークする手段と
を含む更新する手段と、
修正されているチャンクに対応するエントリが割り当て済みとしてマークされているときに、ＣＤＰログ及び第１のリアロケーションテーブルを更新する手段であって、
ＣＤＰログにログエントリを作成し、かつ修正されたコンテンツを受信する前に、ログエントリを修正されているチャンクの過去のコンテンツと関連づける手段と、
修正されているチャンクに対応するエントリを、第１のＰＴＶＶに記憶された修正されたコンテンツと関連付ける手段と
を含む更新する手段と
を含むことを特徴とするシステム。
【請求項１３】
請求項１１記載の方法において、該方法はさらに、
第１の指定時間の後の第２の指定時間に、第１のＰｉＴインスタンスのコンテンツを保存し、かつ第１のＰｉＴインスタンスへ直接書き込みアクセスを禁止する手段と、
第２の指定時間に仮想ボリュームに対して第２のＰｉＴインスタンスを作成する手段であって、
第２の指定時間の後の仮想ボリュームへの修正を記憶するための第２のＰＴＶＶであって、記憶されたデータの上書きが禁止される第２のＰＴＶＶと、
仮想ボリュームの複数のチャンクのそれぞれのためのエントリを含む第２のリアロケーションテーブルであって、仮想ボリュームの複数のチャンクのそれぞれの最新バージョンへの読み出しアクセスを提供するための第２のリアロケーションテーブルと、
第２のＰＴＶＶに記憶されたチャンクの過去のバージョンへの読み出しアクセスを提供するための第２のＣＤＰログと
を備える作成する手段と、
仮想ボリュームの複数のチャンクのある１つのチャンクが修正されているときに、第２のＰｉＴインスタンスを更新する手段と
を含むことを特徴とするシステム。
【請求項１４】
請求項１３記載のシステムにおいて、仮想ボリュームの複数のチャンクの内のあるチャンクが修正されているときに、第２のＰｉＴインスタンスを更新する手段はさらに、
修正されているチャンクの修正されたコンテンツを受信する手段と、
第２のＰＴＶＶに記憶された既存のチャンクを上書きすることなしに、修正されたコンテンツを第２のＰＴＶＶに記憶する手段と、
修正されているチャンクに対応するエントリを、第２のリアロケーションテーブルに配置する手段と、
修正されているチャンクに対応するエントリが、割り当て済みとしてマークされているかどうかを決定する手段と、
修正されているチャンクに対応するエントリが、割り当て済みとして表示されていない時に、第２のリアロケーションテーブルを更新する手段であって、
修正されているチャンクに対応するエントリを第２のＰＴＶＶに記憶されている修正されたコンテンツと関連付ける手段と、
修正されているチャンクに対応するエントリを割り当て済みとしてマークする手段と
を含む更新する手段と、
修正されているチャンクに対応するエントリが割り当て済みとマークされているときに、ＣＤＰログ及び第２のリアロケーションテーブルを更新する手段であって、
ＣＤＰログにログエントリを作成し、かつ修正されたコンテンツを受信する前に、ログエントリを修正されているチャンクの過去のコンテンツと関連づける手段と、
修正されているチャンクに対応するエントリを、第２のＰＴＶＶに記憶された修正されたコンテンツと関連付ける手段と
を更新する手段と
を含むことを特徴とするシステム。
【請求項１５】
請求項１１記載のシステムにおいて、該システムはさらに、
粒度の定義を受信する手段と、
粒度の定義に基づいて、ＰｉＴインスタンスのＰＴＶＶに記憶されたチャンクを圧縮する手段と
を含むことを特徴とするシステム。
【請求項１６】
請求項１１記載のシステムにおいて、該システムはさらに、
指定のＰｉＴインスタンスを除去する手段と、
指定のＰｉＴインスタンスのＰＴＶＶを、以前のＰｉＴ及び仮想ボリュームの少なくともいずれかに統合する手段と
を含むことを特徴とするシステム。
【請求項１７】
請求項１１記載のシステムにおいて、仮想ボリュームを修正する手段は、仮想ボリュームの複数のチャンクのある１つのチャンク上で書き込み操作が実行されるときに生じることを特徴とするシステム。
【請求項１８】
請求項１１記載のシステムにおいて、第１及び第２の指定時間の少なくとも１つを指定する手段は、オンデマンド要求及び所定の時間間隔の少なくともいずれか１つを使用することを特徴とするシステム。
【請求項１９】
請求項１１記載のシステムにおいて、該システムはさらに、
復元時間を受信する手段と、
復元時間より前の最新作成時間を有するポイントインタイム（ＰｉＴ）インスタンスを識別する手段と、
識別されたＰｉＴインスタンスのリアロケーションテーブルを、復元インスタンスのリアロケーションテーブルに関連付ける手段と、
識別されたＰｉＴインスタンスの連続データ保護ログ（ＣＤＰログ）及び復元時間に基づいて、復元インスタンスのリアロケーションテーブルを更新する手段と
を含むことを特徴とするシステム。
【請求項２０】
請求項１９記載のシステムにおいて、識別されたＰｉＴインスタンスの連続データ保護ログ（ＣＤＰログ）及び復元時間に基づいて、復元インスタンスのリアロケーションテーブルを更新する手段はさらに、
仮想ボリュームの特定のチャンクのために作成された、少なくとも１つのログエントリを、ＣＤＰログ内で識別する手段と、
特定のチャンクのために作成された少なくとも１つのログエントリにおいて、復元時間より前で最新の作成時間を有するログエントリを識別する手段と、
特定のチャンクのためのエントリを復元インスタンスのリアロケーションテーブルに配置する手段と、
リアロケーションテーブル内の特定のチャンクのためのエントリを、復元ログエントリが関連付けられているチャンクバージョンと関連付ける手段と
を含むことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子データストレージの分野に関し、さらに詳細には、アロケートオンライト（ａｌｌｏｃａｔｅ−ｏｎ−ｗｒｉｔｅ）のスナップショットを用いた連続データ保護を提供するためのシステム及び方法に関する。
【背景技術】
【０００２】
情報技術（ＩＴ）のユーザは、破滅的な障害（catastrophic failure）からデータを保護するために、重要なデータのバックアップを実行する。破滅的な障害が生じた場合、重要なデータをＩＴシステムに復元するために、バックアップが使用される。通常のバックアップは、バックアップが実行された時点の状態にデータを復元するのみである。バックアップが特定のスケジュールに従って実行される場合（例：一日に一度、週に一度等）、破滅的な障害が発生した時間によっては、バックアップ媒体上の重要なデータのコピーが相対的に古くなるので、障害前の状態にＩＴシステムを戻すために、かなりの追加的な処理が必要となる。さらに、最新のバックアップデータ自身が一部危険にさらされた（例：ウィルスに感染して）場合は、ユーザはさらに古いコピー（それが利用可能ならば）に戻る必要がある。
【発明の概要】
【０００３】
上記に鑑み、本発明は、仮想ボリュームに対して連続データ保護を提供するための方法を提供する。本発明の方法は、仮想ボリュームを概念的に分割して複数の同サイズのチャンクに分割するステップと、仮想ボリュームのコンテンツを保護し、且つ第１の指定時間における仮想ボリュームへの直接書き込みアクセスを禁止するステップと、第１の指定時間に仮想ボリュームに対して第１のポイントインタイム（ＰｉＴ:Point-in-Time）インスタンスを生成するステップであって、第１のＰｉＴインスタンスは、第１の指定時間より後の仮想ボリュームへの修正を記憶するために構成された第１のＰｉＴテンポラリ仮想ボリューム（ＰＴＶＶ:PiT Temporary Virtual Volume）であって、該ボリュームに記憶されたデータは上書きを禁じられる、第１のＰＴＶＶと、仮想ボリュームの複数のチャンクのそれぞれのためのエントリを備える、第１のリアロケーションテーブルであって、仮想ボリュームの複数のチャンクのそれぞれの最新バージョンへの読み出しアクセスを提供するために構成される、第１のリアロケーションテーブルと、第１のＰＴＶＶに記憶されたチャンクの過去のバージョンへの読み出しアクセスを提供するために構成される、第１の連続データ保護（ＣＤＰ:Continuous Data Protection）ログとを備える、ステップと、仮想ボリュームの複数のチャンクが修正されている時に、第１のＰｉＴインスタンスを更新するステップとを含む。
【０００４】
本発明の開示のさらなる実施形態では、仮想ボリュームに対して復元インスタンスを作成するための方法を対象とする。該方法は、復元時間を受信するステップと、復元時間より前の最新作成時間を有するポイントインタイム（ＰｉＴ）インスタンスを識別するステップと、識別されたＰｉＴインスタンスのリアロケーションテーブルを、復元時間のリアロケーションテーブルへコピーするステップと、識別されたＰｉＴインスタンスの連続データ保護ログ（ＣＤＰログ）及び復元時間に基づいて、復元時間のリアロケーションテーブルを更新するステップとを含む。
【０００５】
本発明の別の実施形態は、仮想ボリュームに対して連続データ保護を提供するためのシステムを対象とする。該システムは、仮想ボリュームを概念的に分割して複数の同サイズのチャンクに分割する手段と、仮想ボリュームのコンテンツを保護し、且つ第１の指定時間における仮想ボリュームへの直接書き込みアクセスを禁止する手段と、第１の指定時間に仮想ボリュームに対して第１のポイントインタイム（ＰｉＴ）インスタンスを生成する手段であって、第１のＰｉＴインスタンスは、第１の指定時間より後の仮想ボリュームへの修正を記憶するために構成された第１のＰｉＴテンポラリ仮想ボリューム（ＰＴＶＶ）であって、ここに記憶されたデータは上書きを禁じられる、第１のＰＴＶＶと、仮想ボリュームの複数のチャンクのそれぞれのためのエントリを備える、第１のリアロケーションテーブルと、第１のＰＴＶＶに記憶されたチャンクの過去のバージョンへの読み出しアクセスを提供するために構成される、第１の連続データ保護（ＣＤＰ）ログとを備える手段と、仮想ボリュームの複数のチャンクが修正されている時に、第１のＰｉＴインスタンスを更新する手段とを含む。
【０００６】
前述の一般的な説明及び後述の詳細な説明は両方とも、単なる例示であって、それにより特許請求の範囲に記載された発明を限定するものではない。本明細書に援用され且つその一部を構成する添付図面は、本発明の実施形態を示し、本発明の概要とともに、本発明の原理を説明するものである。
【図面の簡単な説明】
【０００７】
【図１】仮想ボリュームの構成を示すブロック図である。
【図２】仮想ボリュームに対してポイントインタイム（ＰｉＴ）インスタンスを作成するためのスナップショットメカニズムを示すブロック図である。
【図３】仮想ボリュームへの変更を保持するためにＰＴＶＶによって使用されるリアロケーションテーブル（ＲＴ）を示す図である。
【図４】リアロケーションテーブル内のエントリ及び仮想ボリュームのチャンクの関係を示す図である。
【図５】連続データ保護ログを示す図である。
【図６】本発明の開示の実施形態例に係る、論理ユニットに対する連続データ保護を提供するための方法を説明するフローチャートである。
【図７】本発明の開示の実施形態例に係る、仮想ボリュームに対する復元インスタンスを作成するための方法を示すフローチャートである。
【発明を実施するための形態】
【０００８】
本発明の好適実施形態の詳細を、その例を示す添付図面を参照して説明する。
連続データ保護（ＣＤＰ、連続バックアップ又はリアルタイムバックアップとしても知られる）は、データに加えられたあらゆる変更のコピーを自動的に記憶すること、本質的には、ユーザが作成したデータのあらゆるバージョンを捕捉することによる、コンピュータデータのバックアップを意味する。ＣＤＰを使用することでユーザ及び／又はアドミニストレータは、採用されているＣＤＰのメカニズム次第でデータをある時点に復元することができる。
【０００９】
ＣＤＰメカニズムには、重要なデータのスナップショットが頻繁な間隔で自動的に取られるような、スナップショット方式を利用するものもある。スナップショットメカニズムは、元データと比較したデータの差分のみを捕捉するよう構成されており、各スナップショットの完全なコピーを作成するものではない。スナップショットメカニズムはまた、ある論理ユニット（ＬＵ）に関して捕捉されたスナップショットの総数が所定の閾値に到達した時に、最古のスナップショットが削除されるというような「スライディングウィンドウ」方式も利用する。
【００１０】
本発明は、論理ユニットに対する連続データ保護を提供するための方法を対象とするものである。論理ユニットは仮想ボリュームにマッピングされ、該仮想ボリュームは複数の同じサイズのチャンクに概念的に分割される。ポイントインタイム（ＰｉＴ）インスタンスが、指定時間に仮想ボリューム対して作成される。ＰｉＴインスタンスは、ＰｉＴの作成以降に仮想ボリュームに加えられた変更を記憶するＰｉＴテンポラリ仮想ボリューム（ＰＴＶＶ）を含む。各ＰｉＴインスタンスのＰＴＶＶは、このＰｉＴインスタンスがアクティブである間（ＰｉＴインスタンスの作成時から次のＰｉＴインスタンスの作成時までの間、ＰｉＴインスタンスはアクティブである）に仮想ボリュームに加えられた全ての変更を記憶するよう構成される。このようにして、ＰｉＴインスタンスがアクティブである間に、仮想ボリュームの特定のチャンクが５回更新されると、ＰｉＴインスタンスのＰＴＶＶは、この特定のチャンクに関して５バージョンのデータコンテンツを記憶する。一実施形態では、ＰＴＶＶに記憶されたデータは、上書きが禁止される。
【００１１】
リアロケーションテーブルは、仮想ボリュームの各チャンクの最新バージョンにアクセスするために、ＰｉＴインスタンスによって使用される。連続データ保護（ＣＤＰ）ログは、ＰＴＶＶに記憶されているチャンクの最古バージョンにアクセスを提供するために使用される。このようにして、個々の書き込み操作の粒度で、過去の所定の時間に関する復元インスタンスを作成するためのメカニズムが提供される。
【００１２】
図１を参照すると、仮想ボリュームの構成を説明するブロック図が示されている。一実施形態では、論理ユニット（ＬＵ）がストレージ（記憶）デバイス（例：ストレージアレイ又は複数の独立したディスクの冗長アレイ）の仮想ボリューム１０２にマッピングされている。ストレージデバイスに配備されているストレージ仮想化マネージャ（ＳＶＭ）は、このようなマッピングを促進するために使用される。仮想ボリューム１０２は、１又は複数の仮想ボリュームセグメント１０４を含む。仮想ボリュームセグメント１０４はそれぞれ、仮想ボリュームの論理ブロックアドレス（ＬＢＡ）レンジの、仮想ドライブＬＢＡレンジへのマッピングを表わしている。仮想ドライブは、ストレージデバイスにおけるストレージ割り当てに対応している。例えば、仮想ドライブはレイド（ＲＡＩＤ）ボリュームに対応する。
【００１３】
図２を参照すると、仮想ボリュームに対してポイントインタイム（ＰｉＴ）インスタンスを作成するためのスナップショットメカニズムを説明するブロック図が示されている。例えば、ＳＶＭは、第１の指定時間（例：午前８時）に、仮想ボリューム２０２に対する第１のＰｉＴインスタンスを作成する。午前８時前は、ホストから仮想ボリューム２０２に対して発せられた書き込み命令が、仮想ボリューム２０２のデータコンテンツを直接修正する。しかしながら、午前８時に仮想ボリュームのデータコンテンツはフリーズし、かつ第１のＰｉＴテンポラリ仮想ボリューム（ＰＴＶＶ）２０６が、第１の指定時間である午前８時より後に生じた、仮想ボリュームへの全ての変更を保持する。その結果、午前８時以前の仮想ボリューム２０２のデータコンテンツは、第１のＰｉＴインスタンスが作成された時点で、フローズンイメージとして記憶される。フローズンイメージ２０８は、仮想ボリューム２０２のコンテンツを保護し、かつ、午前８時から仮想ボリューム２０２への書き込みアクセスを禁止する。仮想ボリュームに対してＰｉＴインスタンスを作成するためのスナップショットメカニズムは、仮想ボリュームにアクセスするホストには透過的である。上記の例では、ＰＴＶＶ２０６及びフローズンイメージ２０８はともに、現在の仮想ボリューム２０４として機能するが、これは仮想ボリュームにアクセスするホストに透過的すなわち認識可能である。
【００１４】
ＳＶＭはさらに、第２の指定時間（例：午前１１時）に、仮想ボリュームに対して第２のＰｉＴインスタンスを作成するよう構成されている。この例では、午前８時から午前１１時の間に仮想ボリュームへ加えられた変更は、第１のＰＴＶＶ２０６に保持される。午前１１時に、第１のＰＴＶＶ２０６のデータコンテンツはフリーズし、第１のＰＴＶＶ２０６の代わりに、第２の指定時間である午前１１時より後に生じた仮想ボリュームへの全ての変更を保持するために、第２のＰＴＶＶ２１２が作成される。その結果、第１のＰＴＶＶ２０６のコンテンツはフローズンイメージ２１４として、第２のＰｉＴインスタンスが作成された時点で、第１の指定時間に取得された元の仮想ボリュームのフローズンイメージ２０８とともに保存される。ＰＴＶＶ２１２、第１のＰＴＶＶのフローズンイメージ２１４、及び元の仮想ボリュームのフローズンイメージ２０８は、一緒に現在の仮想ボリューム２１０として機能するが、これは仮想ボリュームにアクセスするホストには透過的である。
【００１５】
追加のＰｉＴインスタンスが該仮想ボリュームに対して作成される。各ＰｉＴインスタンスは、ＰｉＴインスタンスの作成後の仮想ボリュームへの変更を保持するための新たなＰＴＶＶを含む。各ＰｉＴインスタンスは、元の仮想ボリュームのフローズンイメージ２０８及び以前のＰＴＶＶのフローズンイメージ（例：第１のＰＴＶＶのフローズンイメージ２１４）への読み出しアクセス権を有している。ＰｉＴ作成時間は、オンデマンド（例：コマンドを介して）で指定されるか、又は所定の時間間隔（例：毎時）に基づいて設定される。
【００１６】
図３には、仮想ボリュームへの変更を保持するためのＰＴＶＶによって使用されるリアロケーションテーブル（ＲＴ）が示されている。一実施形態では、仮想ボリュームのＬＢＡレンジは、同じサイズのチャンクに概念的に分割される。チャンクのサイズは、データ復元の粒度に対応する。例えばチャンクサイズが８バイトなら、データ復元の粒度は、仮想ボリュームに書き込まれたデータの８バイト毎である。
【００１７】
リアロケーションテーブル３０２は、各ＰｉＴインスタンスに対して作成される。一実施形態では、リアロケーションテーブル３０２は、仮想ボリュームの各チャンクのためのエントリを含む。ＰｉＴインスタンスが作成された後に、ホストによってチャンクが書き込まれた場合は、このチャンクのためのリアロケーションテーブル内の対応するエントリは、配置かつ「割り当て済み」と表示される。このチャンクのデータコンテンツは、ＰＴＶＶの次に利用可能なＬＢＡに配置／記憶される。リアロケーションテーブル３０２内のこのチャンクのためのエントリは、ＰＴＶＶに記憶されているチャンクのデータコンテンツと関連付けられる（レファレンス又はポインタを介して）。リアロケーションテーブルは各エントリに関して、チャンクがいつ書き込まれた／更新されたかを反映するタイムスタンプを追跡する。
【００１８】
図３に示されている例では、チャンク「ｊ」への書き込みコマンドを受けて、ＰＴＶＶはチャンク「ｊ」のためのエントリをリアロケーションテーブル３０２に配置し、このエントリを「割り当て済み」として表示する。ＰＴＶＶは、チャンク「ｊ」のデータコンテンツを、ＰＴＶＶにアクセス可能で次に利用できるＬＢＡ３０４に記憶する。ＰＴＶＶはさらに、リアロケーションテーブル３０２内のチャンク「ｊ」のためのエントリとＬＢＡ３０４に記憶されたチャンク「ｊ」のデータコンテンツを関連付ける。
【００１９】
別のチャンクへの後続の書き込みコマンドも同様に処理される。例えば、チャンク「ｉ」への書き込みコマンドを受けて、ＰＴＶＶはチャンク「ｉ」のためのエントリをリアロケーションテーブル３０２に配置し、このエントリを「割り当て済み」として表示する。ＰＴＶＶは、チャンク「ｉ」のデータコンテンツを、ＰＴＶＶにアクセス可能で次に利用できるＬＢＡ３０６に記憶する。ＰＴＶＶはさらに、リアロケーションテーブル３０２内のチャンク「ｉ」のためのエントリとＬＢＡ３０６に記憶されたチャンク「ｉ」のデータコンテンツを関連付ける。ＰＴＶＶに配置／記憶されるチャンクの順序は、オリジナルの仮想ボリューム内での順序に必ずしも対応していない。一実施形態では、図３に示されるように、ＰＴＶＶ内のチャンクは書き込まれた順序で配置される。
【００２０】
一実施形態では、現在の／アクティブなＰｉＴインスタンスにおける特定のチャンクのためのリアロケーションテーブルのエントリは、常にこの特定のチャンクの最新バージョン（すなわち有効チャンク）をポイントする。特定のチャンクの最新バージョンは、現在のＰｉＴインスタンスの作成前に作成／更新される。つまり、この特定のチャンクのデータコンテンツは、旧ＰＴＶＶ内に記憶されている。リアロケーションテーブル内のエントリ及び有効チャンクの関係が、図４に示されている。
【００２１】
図４に示す例では、チャンク「ｊ」は現在のＰｉＴインスタンスの作成後（すなわち、この例では午前１１時より後）に書き込まれる。したがって、チャンク「ｊ」のデータコンテンツは、現在の／アクティブなＰＴＶＶに記憶される。チャンク「ｉ」が最後に書き込まれたのは、午前８時から午前１１時の間のあるときである。従って、チャンク「ｉ」のデータコンテンツは、午前８時から午前１１時の間にアクティブであった旧ＰＴＶＶに記憶されており、これは書き込みコマンドからは保護されているが、読み出しアクセスはいまだ可能である。それゆえ、現在のＰｉＴインスタンスのリアロケーションテーブル内のチャンク「ｉ」のためのエントリは、読み出しアクセスのために旧ＰＴＶＶ内に記憶されたチャンク「ｉ」のデータコンテンツをポイントする。さらに、チャンク「ｋ」が最後に書き込まれたのは午前８時より前であり、これはこの例では第１のＰｉＴインスタンスの作成前である。従って、チャンク「ｋ」のデータコンテンツは、仮想ボリューム自身に記憶されており、現時点では書き込みコマンドからは保護されているが、読み出しアクセスはまだ可能である。したがって、現在のＰｉＴインスタンスのリアロケーションテーブル内のチャンク「ｋ」のためのエントリは、読み出しアクセスのために元の仮想ボリューム内に記憶されたチャンク「ｋ」のデータコンテンツをポイント可能である。
【００２２】
一実施形態では、チャンクのデータコンテンツは、ＰＴＶＶに記憶された後には、保護されて上書きされることはない。リアロケーションテーブルにすでに割り当てられたチャンクへの書き込み操作が処理される場合、チャンクの旧／過去のバージョンはＰＴＶＶに保持され、新たなバージョンがＰＴＶＶの新たなロケーション（例：次に利用可能なＬＢＡ）に記憶される。ＣＤＰログは、チャンクに関する過去のバージョンを維持し、アクセスを提供するために使用される。一実施形態では、ＣＤＰログはＰｉＴインスタンス毎に保持される。ＣＤＰログは、ＮＶＳＲＡＭ、バッテリバックキャッシュメモリ、ダムデバイスバックキャッシュメモリ、固形ドライブ（ＳＳＤ）等、高速で持続性のメモリを用いて実行される。
【００２３】
図５には、ＣＤＰログ５０２が示されている。一実施形態では、リアロケーションテーブル内の特定のチャンクのためのエントリは、この特定のチャンクの最新バージョンを常にポイントする。すでにリアロケーションテーブル内に割り当て済みの、チャンク「ｉ」への書き込みコマンドが処理される場合、チャンク「ｉ」に関する更新されたデータコンテンツ５１２はＰＴＶＶ内の次に利用可能なスロットに記憶され、リアロケーションテーブル５１０内のチャンク「ｉ」のためのエントリは、更新されたデータコンテンツ５１２をポイントするように更新される。チャンク「ｉ」５０８に関する旧データコンテンツは、ＰＴＶＶ内に残存するが、リアロケーションテーブルを介して直接アクセスすることはできない。チャンク「ｉ」５０８に関する旧データコンテンツと関連付けされた新規レコード５０４が、ＣＤＰログ５０２に追加される。一実施形態では、新規レコード５０４は、チャンク５０８に関するタイムスタンプ、ＰＴＶＶに記憶されたチャンク５０８のデータコンテンツへのポインタ（例：チャンクに関する開始ＬＢＡ）、及びリアロケーションテーブルのエントリとの関連付け（例：このＣＤＰログエントリがチャンク「ｉ」のためのものであることを示すチャンク識別子、又はリアロケーションテーブル内のエントリへのポインタ）を含む。ＰＴＶＶ及びＣＤＰログ上で実行される操作は、書き込みコマンドのイニシエータには透過的であり、且つ、書き込みコマンドのステータスは、操作が完了次第、イニシエータに報告される。
【００２４】
同様に、第２の書き込みコマンドがチャンク「ｉ」に対して処理される場合、チャンク「ｉ」に関する更新されたデータコンテンツ５１４は、ＰＴＶＶ内の次に利用可能なスロットに記憶され、リアロケーションテーブル５１０内のチャンク「ｉ」のためのエントリは、更新されたデータコンテンツ５１４をポイントするように更新される。チャンク「ｉ」に関する旧データコンテンツであるチャンク５０８及び５１２は、両方ともＰＴＶＶ内に残存するが、リアロケーションテーブルを介して直接アクセスすることはできない。既存のＣＤＰログエントリ５０４はそのままで、チャンク５１２と関連付けられている別のＣＤＰログエントリ５０６がＣＤＰログ５０２に追加される。
【００２５】
ＰｉＴインスタンスのＰＴＶＶ及びＣＤＰログはともに、個別の書き込み操作の粒度で、過去の特定時間に対する復元インスタンスを作成するためのメカニズムを提供する。例えば、ユーザは仮想ボリュームに対する復元インスタンスを、特定の復元時間（すなわち、過去のある時間）を指定することによって作成する。作成された復元インスタンスは、ユーザが指定した復元時間における仮想ボリュームのデータコンテンツを反映している。
【００２６】
一実施形態では、指定された復元時間を受信すると、復元メカニズムは、復元時間より前で最新の作成時間をもつＰｉＴインスタンスを識別且つ選択する。例えば、仮想ボリュームが午前７時、午前８時、午前９時に作成されたＰｉＴインスタンスを有し、且つユーザが指定した復元時間が午前８時半である場合は、午前８時半より前の最新作成時間であるから、午前８時に作成されたＰｉＴインスタンスが選択される。
【００２７】
選択されたＰｉＴインスタンスは、復元インスタンスを作成するための基礎として使用される。例えば、復元メカニズムは、選択ＰｉＴインスタンスのリアロケーションテーブルを、復元インスタンスにコピーするよう構成される。復元メカニズムはそれから、リアロケーションテーブルを更新し、且つ選択ＰｉＴインスタンスからの適切なチャンクと復元インスタンスとを、ＣＤＰログエントリ及び指定の復元時間に基づいて関連付ける。例えば、復元メカニズムは、仮想ボリュームの特定のチャンクのために作成されたＣＤＰログエントリを識別する。次に復元メカニズムは、これらのＣＤＰログエントリから、復元時間より前の最新作成時間を有する特定のログエントリを識別する。この特定のログエントリ（復元ログエントリとも称される）は、復元時間におけるこのチャンクのデータコンテンツを反映している。復元メカニズムは、このチャンクのためのエントリを復元インスタンスのリアロケーションテーブルに配置し、このチャンクのためのエントリを、復元ログエントリが関連付けられているデータコンテンツと関連づける。選択ＰｉＴインスタンスから適切なチャンクの実際のデータコンテンツが、復元インスタンスにコピーされる。あるいは、選択ＰｉＴインスタンスから適切なチャンクが識別されると、復元インスタンスは、復元インスタンスのＣＤＰログエントリを用いて、識別された適切なチャンクをポイントする（例：リファレンス又はポインタを介して）。
【００２８】
自身に関連付けられたＣＤＰログエントリを有する別のチャンクに対して、復元メカニズムは処理を反復する。更新されたリアロケーションテーブルを有する復元インスタンスは、指定された復元時間の仮想ボリュームのコンテンツを反映している。ユーザは、復元インスタンスを用いて仮想ボリュームのビュー（可視画像）を作成するオプション、及び仮想ボリュームを復元インスタンスに復元して、結果的に仮想ボリュームのコンテンツを指定された復元時間のものに変更するオプションを有する。
【００２９】
ＰｉＴインスタンスは、仮想ボリューム上のＩ／Ｏパターンによっては、直ちに肥大する場合がある。例えば、同じチャンクが頻繁に「上書き」される場合、ＰＴＶＶ内に同じチャンクの多数のバージョンができる。ＰｉＴインスタンスのアクティブ持続時間を制御するために、スケジュールが利用される。例えば、頻繁に更新される仮想ボリュームに対しては、新たなＰｉＴインスタンスを１時間毎に作成する、とスケジュールで指定する。別の例では、あまり頻繁に更新されない仮想ボリュームに対しては、３時間毎に新たなＰｉＴインスタンスを作成する、と別のスケジュールで指定できる。
【００３０】
また、仮想ボリュームに関して所定の構成可能数のＰｉＴインスタンスを維持するために、「スライディングウィンドウ」が用いられる。こうした構成では、システムが所定の数のＰｉＴインスタンスに到達すると、最古のＰｉＴインスタンスが除去／削除される。一実施形態では、ＰｉＴインスタンスが削除されると、該ＰｉＴの対応するＰＴＶＶ内のチャンクは、旧ＰｉＴ又は仮想ボリューム自身（旧ＰｉＴが存在しない場合）に再統合される。
【００３１】
さらに、古いＰｉＴインスタンスは、より粗い時間粒度にすることによって「圧縮」される。例えば、３日以内の任意の指定時間に対して、ユーザは復元インスタンスを作成することができる。しかしながら、１週間前の特定時間に対して復元インスタンスを作成するとユーザが選択した場合、その特定時間ちょうどに対して復元インスタンスを作成するのではなく、最も近い５分間、３０分間、又はそれどころか６０分間等に対して、より粗めの粒度で復元インスタンスが作成される。さらに古いＰｉＴインスタンス（例：一か月前に作成されたもの）はさらにもっと圧縮されて、例えば、最も近い日に圧縮される。
【００３２】
一実施形態では、古いＰｉＴインスタンスの圧縮は、ＰｉＴ（ＰＴＶＶ）からの特定のチャンクバージョンを削除し、所定の圧縮することによって達成される。例えば、粒度の定義（例：５分又は３０分等の粒度を示すこと）を受け取ると、そのＰｉＴインスタンスに対する時間粒度により削除されるチャンクバージョンを決定するために、ＣＤＰログのパススルーが実行される。粒度が５分毎に設定され、かつ同じ５分間内に２以上のチャンクバージョンがある場合は、その５分間内の最新バージョンが保持されて、その他のバージョンは削除される。圧縮はバックグランド処理により実行され、かつより古いＰｉＴインスタンスに適用可能である。
【００３３】
図６は、本発明の開示に係る、連続データ保護方法６００によって実行されるステップを説明するフロー図を示している。本方法６００は、仮想ボリュームに対する連続データ保護を提供するために用いられる。ステップ６０２において、仮想ボリュームを複数の同サイズのチャンクに概念チェキに分割する。ステップ６０４では、仮想ボリュームのコンテンツを保存し、第１の指定時間における仮想ボリュームへの直接書き込みアクセスを禁止する。ステップ６０６では、第１の指定時間における仮想ボリュームに対して第１のＰｉＴインスタンスを作成する。
【００３４】
第１のＰｉＴインスタンスは、第１の指定時間より後の仮想ボリュームへの修正を記憶するための第１のＰＴＶＶを含み、該第１のＰＴＶＶ内に記憶されたデータは、上書きを禁止される。第１のＰｉＴインスタンスはまた、第１のアロケーションテーブルを備え、該テーブルは、仮想ボリュームの複数のチャンクそれぞれのためのエントリを含んでいる。第１のリアロケーションテーブルは、仮想ボリュームの複数のチャンクのそれぞれの最新バージョンに対して、読み出しアクセスを提供する。第１のＰｉＴインスタンスはさらに、第１のＰＴＶＶ内に記憶されたチャンクの過去のバージョンに読み出しアクセスを提供するための第１のＣＤＰログを含む。
【００３５】
ステップ６０８では、仮想ボリュームの複数のチャンクの内のあるチャンクが修正された場合に、第１のＰＴＶＶを更新する。第１のＰｉＴインスタンスは、第２の指定時間に保存され、そして後続の修正を保持するための追加的なＰｉＴインスタンスが生成されて、第１のＰｉＴインスタンスに置き換わる。
【００３６】
図７は、本発明の開示に係る復元方法７００によって実行されるステップを説明するフロー図を示している。方法７００は、仮想ボリュームに対して復元インスタンスを作成するために用いられる。ステップ７０２では、ユーザにより指定された復元時間を受信する。ステップ７０４では、復元時間より前の最新作成時間を有するＰｉＴインスタンスを識別する。ステップ７０６では、識別されたＰｉＴインスタンスのリアロケーションテーブルを、復元インスタンスのリアロケーションテーブルにコピーする。ステップ７０８では、復元時間によるＣＤＰログに基づいて、復元インスタンスのリアロケーションテーブルを更新する。
【００３７】
本発明による前述された実施形態は、本明細書の教示に従ってプログラムされた従来の汎用デジタルコンピュータを用いて、簡便に実装できることは、コンピュータ技術の当業者には明らかであろう。適切なソフトウェアコーディングが、本開示の教示に基づいて熟練のプログラマによって容易に準備されることも、ソフトウェア技術の当業者には明らかであろう。
【００３８】
本発明は、ソフトウェアパッケージの形態で簡便に実現することができる。ソフトウェアパッケージは、開示された本発明の機能及びプロセスをコンピュータが実行するようプログラムするために用いられる、記憶されたコンピュータコードを備えたコンピュータ可読ストレージ媒体を採用している、コンピュータプログラム製品である。コンピュータ可読媒体は、任意のタイプの従来型フロッピディスク、光ディスク、ＣＤ−ＲＯＭ、磁気ディスク、ハードディスクドライブ、光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光カード、あるいは電子指示を記憶するための任意の別の適宜の媒体であるが、それに限定するものではない。
【００３９】
前述で開示された方法におけるステップの具体的な順序又は階層は、アプローチ例の例示である。設計の好みによって、該方法におけるステップの具体的な順序又は階層は、本発明の範囲内において再変更が可能である。添付の方法クレームは、見本的な順序でさまざまなステップの要素を提示したものであり、提示された具体的な順序又は階層に限定するものではない。
【００４０】
本発明及びそれに付随する多数の利点は、前述の記載によって理解されるべきである。また、本発明の精神および範囲を逸脱しない限りは、又はマテリアルアドバンテージの全てを犠牲にすることなしに、これに関する部品の形態、構造、及び配置において、多くの変更が可能である。前述された形式は、本発明の実施形態例にすぎないので、このような変更に関しては、以下に記載の特許請求の範囲に包含されるものとする。
【図１】
2011054153.tif 000003
【図２】
2011054153.tif 000004
【図３】
2011054153.tif 000005
【図４】
2011054153.tif 000006
【図５】
2011054153.tif 000007
【図６】
2011054153.tif 000008
【図７】
2011054153.tif 000009
【外国語明細書】
2011054153000001.pdf