(58)【調査した分野】(Int.Cl.,DB名)
前記電子ストレージ領域を識別する前記領域インジケータをセットすべきか否かの決定は、前記領域インジケータが予めセットされていたか否かの決定に少なくとも部分的に基づくことを特徴とする請求項2に記載の方法。
1つ以上の部分インジケータをセットするステップは、前記揮発性電子ストレージ内にインジケータをセットすること、及び前記不揮発性電子ストレージ内にインジケータをセットすることを含むことを特徴とする請求項1に記載の方法。
前記1つ以上の部分インジケータが前記不揮発性電子ストレージ内にセットされた後に、領域インジケータをアンセットするステップをさらに含むことを特徴とする請求項6に記載の方法。
前記1つ以上の部分インジケータは、1つ以上のダーティーなデータ部分を識別する、ビットマップ、ランリスト、レンジ、及びデータ構造、の少なくとも1つを備えることを特徴とする請求項1に記載の方法。
複数のレベルの領域インジケータを利用するステップをさらに含み、前記複数のレベルの領域インジケータは、電子ストレージのチェンジトラッキングのさらなる細分化を可能にすることを特徴とする請求項1に記載の方法。
前記領域インジケータを用いて電子ストレージのダーティー領域を識別して、増分バックアップを作成するステップをさらに含み、前記増分バックアップは、ダーティーとして示された領域の割り当てられた部分をキャプチャし、かつ、前記増分バックアップは、クリーン領域の変更された部分のみをキャプチャするものであることを特徴とする請求項1に記載の方法。
前記領域インジケータを用いて電子ストレージのダーティー領域を識別して1つ以上のデータ部分をバックアップから復元するステップであって、前記識別されたダーティー領域の割り当てられた部分の復元を行い、かつ、クリーン領域の1つ以上の変更された部分の復元を行うステップをさらに含むことを特徴とする請求項1に記載の方法。
少なくとも1つのプロセッサによって可読であるように構成され、請求項1に記載の方法を実行するためのコンピュータプロセスを実行することを、前記少なくとも1つのプロセッサに命令するためのコンピュータプログラム命令を格納するための、少なくとも1つのプロセッサ可読ストレージ媒体。
前記1つ以上のプロセッサはさらに、前記領域インジケータを用いて、システム照合、システムバックアップ、及びシステム復元の少なくとも1つを行うように構成されていることを特徴とする請求項18に記載のシステム。
【発明の概要】
【課題を解決するための手段】
【0006】
チェンジトラッキングを用いたシステムリカバリのための方法を開示する。1つの特定好適例では、当該方法は、チェンジトラッキングを用いたシステムリカバリのための、コンピュータにより実現される方法として実現され、この方法は、
不揮発性電子ストレージへの書き込み要求を受信するステップと、前記
不揮発性電子ストレー
ジ内の、前記書き込み要求に関連する
電子ストレージ領域を識別するステップと、
前記電子ストレージ領域をダーティーとして識別する領域インジケータを、揮発性電子ストレージ内にセットするステップと、前記電子ストレージ領域をダーティーとして識別する領域インジケータを
、不揮発性電子ストレージ内にセットするステップと、前記電子ストレージ領域の1つ以上のダーティー部分を識別する1つ以上の部分インジケータをセットするステップとを含む。
【0007】
この特定好適例の他の態様によれば、チェンジトラッキングを用いたシステムリカバリは、前記電子ストレージ領域を識別する領域インジケータをセットすべきか否かを決定するステップと、前記領域インジケータをセットすべきであることを決定した場合に、前記領域インジケータをセットするステップとをさらに含むことができる。
【0008】
この特定好適例のさらなる態様によれば、前記電子ストレージ領域を識別する前記領域インジケータをセットすべきか否かを決定するステップは、前記領域インジケータが
予めセットされてい
たか否かの決定に少なくとも部分的に基づくことができる。
【0009】
この特定好適例の追加的な態様によれば、チェンジトラッキングを用いたシステムリカバリは、前記1つ以上のダーティー部分を識別する前記1つ以上の部分インジケータをセットすべきか否かを決定するステップと、前記1つ以上の部分インジケータをセットすべきことを決定した場合に、前記1つ以上の部分インジケータをセットするステップとをさらに含むことができる。
【0010】
この特定好適例の追加的な態様によれば、前記1つ以上のダーティー部分を識別する前記1つ以上の部分インジケータをセットすべきか否かを決定するステップは、前記1つ以上の部分インジケータが
予めセットされてい
たか否かの決定、前記電子ストレージ領域のすべての部分インジケータが
予めセットされてい
たか否かの決定、前記電子ストレージ領域の割り当てられた部分をキャプチャすることの決定、及び前記電子ストレージ領域の割り当てられた部分を復元することの決定、の少なくとも1つに、少なくとも部分的に基づくことができる。
【0012】
この特定好適例の追加的な態様によれば、1つ以上の部分インジケータをセットするステップは、揮発性電子ストレージ内にインジケータをセットすること及び不揮発性電子ストレージ内にインジケータをセットすることを含むことができる。
【0013】
この特定好適例の追加的な態様によれば、不揮発性電子ストレージ内の前記1つ以上の部分インジケータをセットする時点を識別することは、所定期間に亘って追加の部分インジケータがセットされていないことの決定、前記電子ストレージ領域用のすべての部分インジケータがセットされたことの決定、及び前記識別される時点における、前記領域に関連するより低レベルのディスク動作、の少なくとも1つに基づくことができる。
【0014】
この特定好適例の追加的な態様によれば、チェンジトラッキングを用いたシステムリカバリは、前記1つ以上の部分インジケータが不揮発性電子ストレージ内にセットされた後に、領域インジケータをアンセット(リセット)するステップをさらに含むことができる。
【0015】
この特定好適例の追加的な態様によれば、前記1つ以上の部分インジケータは、1つ以上のダーティーなデータ部分を識別する、ビットマップ、ランリスト、レンジ(値域)、及びデータ構造、の少なくとも1つを備えることができる。
【0016】
この特定好適例の追加的な態様によれば、チェンジトラッキングを用いたシステムリカバリは、複数のレベルの領域インジケータを利用するステップをさらに含むことができ、前記複数のレベルの領域インジケータは前記電子ストレージのチェンジトラッキングのさらなる細分化を可能にする。
【0017】
この特定好適例の追加的な態様によれば、前記ダーティー部分は、ブロック、セクタ及びクラスタの少なくとも1つで構成することができる。
【0018】
この特定好適例の追加的な態様によれば、前記ダーティー部分は、セグメントで構成することができる。
【0019】
この特定好適例の追加的な態様によれば、前記チェンジトラッキングを用いたシステムリカバリは、前記電子ストレージのイメージを作成するステップと、前記領域インジケータを用いて前記電子ストレージのダーティー領域を識別して前記電子ストレージのイメージを前記電子ストレージのバックアップと比較するステップと、前記電子ストレージにおける、前記部分インジケータに対応する1つ以上の部分がバックアップ後に変更されていることの決定に基づいて、前記識別されたダーティー領域の前記1つ以上の部分インジケータを更新するステップとをさらに含むことができる。
【0020】
この特定好適例の追加的な態様によれば、チェンジトラッキングを用いたシステムリカバリは、前記領域インジケータを用いて前記電子ストレージのダーティー領域を識別して、増分バックアップを作成するステップをさらに含み、前記増分バックアップは、ダーティーとして示された領域の割り当てられた部分をキャプチャし、かつ、前記増分バックアップは、クリーン領域の変更された部分のみをキャプチャするものである。
【0021】
この特定好適例の追加的な態様によれば、チェンジトラッキングを用いたシステムリカバリは、前記領域インジケータを用いて前記電子ストレージのダーティー領域を識別して1つ以上のデータ部分をバックアップから復元するステップをさらに含み、このステップでは、識別されたダーティー領域の割り当て部分の復元を行い、かつ、クリーン領域の1つ以上の変更された部分の復元を行う。
【0022】
この特定好適例の追加的な態様によれば、これらの方法は、少なくとも1つのプロセッサによって可読であるように構成され、請求項1に記載の方法を実行するためのコンピュータプロセスを実行することを、前記少なくとも1つのプロセッサに命令するためのコンピュータプログラム命令を格納するための、少なくとも1つのプロセッサ可読
ストレージ媒体として実現することができる。
【0023】
他の特定好適例では、これらの方法は、チェンジトラッキングを用いたシステムリカバリを提供するための
プログラムとして実現することができ、この
プログラムは、
プロセッサに、不揮発性電子ストレージへの書き込み要求を受信
するステップと、前記不揮発性電子ストレージ内の、前記書き込み要求に関連する電子ストレージ領域を識別
するステップと、前記電子ストレージ領域をダーティーとして識別する領域インジケータを、揮発性電子ストレージ内にセット
するステップと、前記電子ストレージ領域をダーティーとして識別する領域インジケータを、不揮発性電子ストレージ内にセット
するステップと、前記電子ストレージ領域の1つ以上のダーティー部分を識別する1つ以上の部分インジケータをセットする
ステップとを実行させる。
【0024】
さらに他の特定好適例では、これらの方法は、チェンジトラッキングを用いたシステムリカバリを提供するシステムとして実現することができ、このシステムは、ネットワークに通信可能に結合された1つ以上のプロセッサを備え、前記1つ以上のプロセッサは、
不揮発性電子ストレージへの書き込み要求を受信し、前記
不揮発性電子ストレージ内の前記書き込み要求に関連する
電子ストレージ領域を識別し、
前記電子ストレージ領域をダーティーとして識別する領域インジケータを、揮発性電子ストレージ内にセットし、前記電子ストレージ領域をダーティーとして識別する領域インジケータを
、不揮発性電子ストレージ内にセットし、前記電子ストレージ領域の1つ以上のダーティー部分を識別する1つ以上の部分インジケータをセットするように構成されている。
【0025】
この特定好適例の他の態様によれば、前記1つ以上のプロセッサは、前記領域インジケータを用いて、システム照合、システムバックアップ、及びシステム復元の少なくとも1つを行うように構成することができる。
【0026】
以下、本発明を、添付の図面に示す好適な実施形態を参照しながら、より詳細に説明する。以下では本発明を、好適な実施形態を参照しながら説明するが、本発明はこれらの実施形態に限定されないことは明らかである。本明細書の教示に接した当業者であれば、追加的な実現、変更、実施形態、並びに他の使用分野を認識し、これらは本明細書に説明する本発明の範囲内であり、これらに関して、本発明は大きな有用性を有する。
【発明を実施するための形態】
【0029】
ここで
図1を参照し、
図1に、本発明の実施形態によるシステムリカバリを提供するためのシステム100を示す。
図1は、システム100の略図であり、システム100は、図示されていない追加の要素を含むことができる。ネットワーク要素104及び110は、ネットワーク102に通信可能に結合することができる。ネットワーク要素104は、変更トラッキング(追跡)モジュール114を含むことができる。コンピュータ108は、ネットワーク102に通信可能に結合することができる。データ106は、ネットワーク要素104に通信可能に結合することができる。ストレージ112は、ネットワーク要素110に通信可能に結合することができる。
【0030】
ネットワーク102は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、セルラネットワーク、衛星ネットワーク、又はネットワーク要素104及び110、コンピュータ108、及びネットワーク102に通信可能に結合された他の装置の相互間の通信を可能にする他のネットワークとすることができる。
【0031】
ネットワーク要素104及び110は、アプリケーションサーバ、バックアップサーバ、ネットワークストレージ装置、メディアサーバ、又はネットワーク102に通信可能に結合された他の装置とすることができる。ネットワーク要素104及び110は、アプリケーションデータ、バックアップデータ、又は他のデータの記憶のためにストレージ112を利用することができる。
【0032】
ネットワーク要素104及び110は、それ自体と、バックアップ装置、バックアッププロセス、及び/又はストレージとの間で伝送されるデータを処理することができる、アプリケーションサーバ等のホストであることができる。
【0033】
ネットワーク要素110は、ストレージ112に接続されたバックアップサーバとすることができる。1つ以上の実施形態では、ネットワーク要素110は、ストレージ112から受信したデータ又はストレージ112へ送信するデータを処理することができる。他の実施形態では、ネットワーク要素110は、ストレージエリアネットワークに結合されたネットワークアプライアンスを表すことができる。
【0034】
コンピュータ108は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ又は他のコンピュータとすることができる。コンピュータ108は、ユーザ入力、データベース、ファイル、ウェブサービス、及び/又はアプリケーションプログラミングインタフェースから、データを受信することができる。コンピュータ108は、他のシステム、及び/又は、ローカル又はリモートストレージ、例えばデータ110、ネットワーク要素104及び110、及びストレージ112に対してクエリ(問合せ)を発することができる。コンピュータ108は、バックアップシステム、データリカバリシステム又は他のデータ管理システムへのユーザインタフェースを提供することができる。
【0035】
データ106は、ネットワークからアクセス可能なストレージとすることができ、ネットワーク要素104及び110に対してローカルにすること、リモートにすること、あるいはこれらの組合せとすることができる。データ106は、テープ、ディスク、ストレージエリアネットワーク(SAN)、又は他のコンピュータからアクセス可能なストレージを利用することができる。1つ以上の実施形態では、データ106は、データベース又は他のアプリケーションインスタンスを表すことができる。
【0036】
1つ以上の実施形態においては、ストレージ112内のデータは、スナップショット、又は他のファイルシステムのブロックレベルのバックアップ等のイメージとすることができる。ネットワーク要素110は、データをバックアップする要求を処理することのできる、バックアップサーバであることができる。
【0037】
ネットワーク要素104は、変更トラッキングモジュール114を含むことができる。変更トラッキングモジュール114は、データ106への書き込み要求を追跡することができる。1つ以上の実施形態では、変更トラッキングモジュール114は、チェンジトラッキングドライバとすることができる。変更トラッキングモジュール114は、書き込み要求をインメモリ(メモリ上)で追跡することができ、あるいは、書き込み要求を、バックアップサーバ又はネットワーク要素110等の他のネットワーク要素に送信することができる。変更トラッキングモジュール114によって追跡した変更は、メモリに及び/又はディスク等の不揮発性ストレージに記憶することができる。
【0038】
1つ以上の実施形態によれば、変更トラッキングモジュール114は、複数レベルのチェンジトラッキングを利用することができる。例えば、変更トラッキングモジュール114は、データ106等のストレージを、論理的に、領域に細分化するロジック又はデータを含むことができる。ボリューム等の記憶単位には、複数の領域が存在することができる。領域の個数は、ボリュームの大きさ又は他の要因に依存することができる。一部の実施形態では、領域の個数は、設定可能にすることができる。領域は、セグメント等、ストレージの論理的区分とすることができる。領域は、ブロック、セクタ、及び/又はクラスタ等、複数のデータ記憶部分で構成することができる。ブロック等、データ記憶部分の大きさは、オペレーティングシステム又は他の要因に依存することができる。一部の実施形態では、この大きさは、設定可能とすることができる。変更トラッキングモジュール114は、領域レベルで、及びブロックレベル等のより微細な精度で、変更を追跡することができる。
【0039】
変更トラッキングモジュール114は、変更を追跡するために複数のデータ構造を作成することができ、これらのデータ構造は例えば、ビットマップ、ランリスト(例えば、使用されているストレージの最初の部分のアドレス及び使用されているストレージの長さ又は単位数を提供することのできるデータ構造)、アレイ、ポインタ、レンジ、及び電子ストレージの使用されている部分を効率的に識別するための他のデータ構造である。変更トラッキングモジュール114は、第1データ構造を用いて、電子ストレージの変更された領域を識別することができ、この第1データ構造は「ダーティー領域マップ」と称することができる。ダーティー領域マップは、変更トラッキングモジュール114によって追跡されている、ボリューム等の記憶単位上の領域毎に、1ビット又は他のインジケータを含むことができる。ダーティー領域マップは、揮発性及び不揮発性ストレージ内に維持することができる。
【0040】
変更トラッキングモジュール114は、領域毎に、当該領域のデータ記憶部分、例えばブロック毎にビットまたは他のインジケータを有するデータ構造を維持することができる。これは、ブロックマップと称することができる。
【0041】
変更トラッキングモジュール114によって書き込み要求が検出されると、変更トラッキングモジュール114は、この書き込み要求に対応する領域を識別して、この領域に対応する適切なビット又は他のインジケータを、ダーティー領域マップ中にセットすることができる。変更トラッキングモジュール114は、メモリ内の1つ以上のブロックマップ中に適切なビット又はインジケータをセットすることもでき、これらのビット又はインジケータは、各ダーティー領域の変更された部分を識別することができる。
【0042】
上述のように、ダーティー領域マップは、揮発性及び不揮発性のストレージ内にて維持することができる。例えば、書き込みに先立って、メモリ内及びディスク上のダーティー領域マップ中に適切なビットをセットすることができる。適切なビットは、1つ以上のブロックマップに対して、インメモリでセットすることもできる。したがって、システムクラッシュ、不適切なシャットダウン又は他の障害が発生した場合、1つ以上の変更された領域を示すダーティー領域マップは、不揮発性メモリ内に保存することができる。
【0043】
しかし、一部の実施形態によれば、追跡される書き込み要求の処理中には、ブロックマップを不揮発性ストレージに書き込むことができないことがある。例えば、書き込み要求は、ディスクに書き込むことができるが、システムリカバリのために変更されたブロックのトラッキングは、メモリに(例えば、1つ以上のブロックマップに)書き込むことができる。一旦、書き込み要求が完了すると、変更されたブロックのトラッキングをディスクに書き込むことができる。書き込み要求は一般に群発し、このため、多数の書き込み要求が連続的に、同じ領域に対して発生する。後続する、この領域への書き込み要求毎に、変更トラッキングモジュール114は、メモリ内のダーティー領域マップ中に適切なビットがセットされていることを確認することができ、そして、これらの書き込み要求は、変更を追跡するために追加の書き込みを必要とせずに処理することができる。一旦、或る領域への書き込み要求が停止又は一時停止すると、ダーティー領域マップ中でフラグ又はインジケータで示された1つ以上の領域について、変更トラッキングモジュール114は、不揮発性ストレージ上のブロックマップに書き込んで(例えば、ブロックマップをディスクへフラッシュ(flush)して)、どのブロックが変更されたかを示すことができる。一旦、或る領域についてのブロックマップを不揮発性ストレージに書き込むと、ダーティー領域マップを更新して、当該領域についてのインジケータをアンセット又はクリアすること(即ち、当該領域をクリーンとしてマークすること)ができる。
【0044】
変更トラッキングモジュール114は、追加のフラグ又はインジケータを使用することができる。例えば、領域毎に2つの追加のインジケータを設けることができる。第1インジケータは、領域が以前にダーティーでなかった場合(例えば、最後のバックアップ以降その領域のブロックに変更が生じていない場合)に、セットすることができる。これは、変更トラッキングモジュール114が、まず、更新する必要があるブロックマップがディスク上に存在するか否かを確認せずに、当該領域についてのブロックマップをメモリから直接にディスクに書き込むことを可能にし得る。第2インジケータは、領域内のすべてのブロックが変更された場合に、セットすることができる。領域内のすべてのブロックが変更された場合、トラッキングモジュール114は、領域内のブロックの変更を追跡することを停止することができる(即ち、バックアップ操作等の後続の操作は、すべてのブロックをキャプチャすべきことを理解することができる)。
【0045】
システムクラッシュ又は障害の場合には、ネットワーク要素110上で実行中のバックアッププロセス等のバックアップコンポーネント又はプロセスが、
図4を参照して以下で詳述されるように、ダーティー領域マップを用いて照合操作を行うことができる。これは、変更/チェンジトラッキングを継続することを可能にし得る。バックアッププロセス又はバックアップコンポーネントは、照合操作に加えて、あるいはその代りに、他の操作を行うことができる。例えば、
図5を参照して以下に詳述するように、バックアッププロセス又はバックアップコンポーネントは、ダーティー領域マップ及び1つ以上のブロックマップを用いて、増分バックアップを行うこともできる。バックアッププロセス又はバックアップコンポーネントはさらに、
図5を参照して以下に説明するように、ダーティー領域マップ及び1つ以上のブロックマップを用いて、復元操作を行うことができる。
【0046】
図2を参照し、
図2に、本発明の実施形態による、システムリカバリを提供するためのリカバリ・チェンジトラッキングモジュール210を示す。図に示すように、リカバリ・チェンジトラッキングモジュール210は、1つ以上のコンポーネントを備えることができ、これらは、書き込みトラッキングモジュール212、照合モジュール214、増分バックアップモジュール216、復元モジュール218、及びエラーハンドリングモジュール220を含む。
【0047】
書き込みトラッキングモジュール212は、ディスク等の不揮発性ストレージへ書き込むための割り込み又は要求を検出することができる。書き込みトラッキングモジュール212は、書き込み要求に関連する領域を特定し、当該領域がダーティーであること(即ち、当該領域に書き込みが行われているが、システムリカバリのために追跡されたブロック変更/チェンジは、不揮発性ストレージ内のブロックマップに保存されていないこと)を示すビット、フラグ、又は他のインジケータをセットすることができる。これらのインジケータ、ビット、又はフラグは、インメモリでセットして、ディスクへ書き込むことができる。
【0048】
書き込みトラッキングモジュール212は、ブロック等、領域の複数部分の変更を追跡することができる。これらの変更は、メモリ内の1つ以上のブロック内に、フラグ、インジケータ、又はビットをセットすることによって追跡することができる。一旦、領域への書き込み要求が治まると、書き込みトラッキングモジュール212は、1つ以上のブロックマップを不揮発性ストレージに書き込む(例えば、ブロックマップをディスクへフラッシュする)ことができる。ブロックマップを不揮発性ストレージに書き込む時点の決定は、種々のアルゴリズムに基づくことができる。一部の実施形態によれば、領域への書き込み回数レベルを監視することができ、領域への書き込み回数レベルが特定の閾値を下回ってから特定期間後に、1つ以上のブロックマップを不揮発性ストレージに書き込むことができる。例えば、領域への書き込み要求が停止してから30秒経過後に、ブロックマップを不揮発性ストレージに書き込むことができる。
【0049】
一旦、領域についての1つ以上のブロックマップが不揮発性ストレージに書き込まれると、書き込みトラッキングモジュール212は、当該領域をクリーンとしてマークすることができる。書き込みトラッキングモジュール212は、ダーティー領域マップ中の適切な領域に対応するインジケータ、フラグ、又はビットをアンセット又はセットすることによって、領域をクリーンとしてマークすることができる。ダーティー領域マップは、複数の領域インジケータを含むことができる。一部の実施形態によれば、書き込みトラッキングモジュール212は、複数レベルのダーティー領域マップを管理することができる。例えば、最上位レベルマップは、ダーティー領域マップのサブレベルに対応するインジケータを含むことができる。これらのダーティー領域マップの各々は、複数のブロックマップを含むことができる。領域に対するブロックマップの個数、領域のレベルまたは領域レイヤの個数、ブロックマップの大きさ、及びダーティー領域マップの大きさは、ストレージの大きさ、利用可能なメモリ、ユーザの選択、算出されたバックアップシステム動作の処理時間を含む複数のファクタによって決定することができる。
【0050】
照合モジュール214は、システムクラッシュ、不適切なシャットダウン、停電又は他のシステム障害後の、変更トラッキングの照合を可能にすることができる。このような照合は、ダーティー領域内の変更を識別して、不揮発性ストレージ内の1つ以上のブロックマップに書き込んで、ダーティー領域をクリーンとして設定することを可能にすることができる(例えば、ダーティー領域マップ中の対応するインジケータをリセットすることができる)。照合モジュール214は、システムクラッシュまたは停電後のストレージの、スナップショット等のイメージを作成することができる。そして照合モジュール214は、ダーティー領域マップを用いて、このイメージを最新のバックアップと比較することができる。照合モジュール214は、ブロック等の、イメージの1つ以上の部分を、最新のバックアップの対応する部分に対して照合することができる。照合モジュール214は、イメージ及び/又はバックアップの、ダーティー領域マップによってダーティーとして示された領域内の1つ以上の部分のみを照合することができる。バックアップにおける、イメージと異なる部分に対応する1つ以上のブロックマップを更新して、これらの部分が変更されたことを示すことができる(例えば、照合操作を、ダーティーとしてマークされている照合領域に向けることができるので、これらの領域は既にダーティーとして示されている場合がある)。一旦、ダーティー領域の変更された部分が、このダーティー領域の対応するブロックマップ中に適切に示されると、その領域についての照合プロセスは完了する。すべてのダーティー領域が照合されると、照合を完了することができる。ユーザの選択、システム設定、又は他のファクタによっては、照合プロセスは、ダーティー領域内のブロックマップのみに対して、インメモリで更新を行うことができる。ブロックマップの不揮発性コピーへの書き込みは、不揮発性ストレージ領域への書き込み動作のレベルに応じて、後で行うことができる。
【0051】
1つ以上の実施形態では、照合モジュール214がイメージを作成すると、第2組のチェンジトラッキングマップを作成することがきる。照合プロセスは、以前のチェンジトラッキングマップの組(即ち、1つ以上のダーティー領域マップ及び1つ以上のブロックマップ)を用いて継続することができる。変更トラッキングは継続することができ、第2組のチェンジトラッキングマップを用いることができる。照合が完了した後は、以前のダーティー領域マップは必要でなくなり、破棄することができる。以前のブロックマップは、新しいブロックマップと、バックアップ時等の後の時点で併合することができる。
【0052】
増分バックアップモジュール216は、システムクラッシュ、停電、又は他の障害の後の、増分バックアップを可能にすることができる。ダーティー領域マップ中でクリーンとして示された1つ以上の領域(例えば、ダーティー領域マップ中でフラグで示されていない領域)について、1つ以上の領域の1つ以上のブロックマップ中で変更されたものとしてマークされている部分(ブロック等)をバックアップすることができる。ダーティー領域マップ中でダーティーとしてマークされている1つ以上の領域については、1つ以上の領域内の使用されている全ての記憶部分をバックアップすることができる。このことは、完全なバックアップよりも大幅に高速にすることができ、書込み毎に、変更された各部分(ブロック等)が不揮発性ストレージ内でフラグで示されている場合に比べて、より小さい領域を使用し、より少ないオーバーヘッド及びI/O処理で済ますことができる。
【0053】
復元モジュール218は、システムクラッシュ、停電、又は他の障害後のデータの復元を可能にすることができる。ユーザは、データをロールバックするか、システムを以前の状態に戻したいことがある(例えば、ソフトウェアのアップグレード又はインストールがクラッシュの原因となることがあり、復元によって、以前の安定なバージョンに戻すことができる)。復元モジュール218は、ダーティー領域マップ及び1つ以上のブロックマップを用いて、復元すべき、変更されたデータを識別することができる。ダーティー領域マップ中でクリーンとして示された1つ以上の領域内では、復元モジュール218は、1つ以上のブロックマップによって示される、最後のバックアップ以後に変更されたデータ部分のみを復元することができる。ダーティー領域マップ中でダーティーとしてマークされた1つ以上の領域内では、復元モジュール218は、データの全部分又は全ブロックを復元することができる。ダーティー領域の個数は、一般には少なく、クリーン領域内の変更された部分の個数は、全体の領域内の変更された部分の個数よりも大幅に少なくすることができる。したがって、復元に要する時間及びI/O処理は、完全な復元に要する時間及びI/O処理よりも大幅に少なくすることができる。
【0054】
エラーハンドリングモジュール220は、変更トラッキング、変更トラッキングの照合、バックアップ、及び復元に関連するエラーを処理することができる。エラーハンドリングモジュール220は、変更トラッキング中に生じるエラー等のエラー及び他のエラー関連事象を記録しておくことができる。
【0055】
図3を参照し、
図3に、本発明の実施形態によるシステムリカバリを提供する方法300を示す。ブロック302で、方法300を開始することができる。
【0056】
ブロック304では、方法300は、ストレージへの書き込み要求を受信するステップを含むことができる。この要求は、ディスク、テープ、又は他の記憶媒体等のストレージへの書き込み要求を追跡しているデバイスドライバによって受信することができる。
【0057】
ブロック306では、方法300は、書き込み要求の対象とするストレージエリアに関連する領域を識別することを含むことができる。ボリューム等のストレージエリアの1つ以上の領域の大きさ及び個数は、ストレージエリアの大きさ、オペレーティングシステム、又は他のファクタに応じて変化し得る。一旦、書き込み要求に対応する領域を識別すると、対応するインジケータ、フラグ、又はダーティー領域マップに対応するビットを識別することができる。一部の実施形態では、複数のダーティー領域マップが存在することができ、適切なダーティー領域マップを識別することができる(例えば、最上位レベルのダーティー領域マップは、ストレージのさらなる細分化を提供することのできる複数の下位レベルダーティー領域マップへのインジケータを含むことができる)。
【0058】
ブロック308では、方法300は、ダーティー領域インジケータ、ビット、又はフラグをセットする必要があるか否かを決定することを含むことができる。領域の1つ以上のブロックマップをディスクへフラッシュして以来の、当該領域への最初の書き込み中には、当該領域は、ダーティー領域マップ中でクリーンとして示されていることがあり、当該領域がダーティーであることを示すためにインジケータをセットする必要があり得る。不揮発性ストレージ内の1つ以上のブロックマップ中に記録されていない、当該領域への他の書き込みが発生した場合には、当該領域は、ダーティー領域マップ中で既にダーティーとして示されており得る。領域をダーティーとセットすべきか否かを決定するに際しては、他のファクタを考慮することができる。例えば、領域のすべての部分が、不揮発性ストレージ内の対応するブロックマップ中で既に変更されたものとして示されている場合、一部の実施形態では、領域をダーティーとしてマークする必要がないことがある。対応する領域インジケータをセットすべき場合、方法300は、ブロック310に進むことができる。対応する領域インジケータをセットすべきでない場合、方法300はブロック312に進むことができる。
【0059】
ブロック310では、方法300は、ダーティーとしてマークすべき領域(即ち、当該領域への書き込み要求が受信された領域)に対応する適切なフラグ、ビット、又はインジケータをセットすることを含むことができる。フラグ、ビット、又は他のインジケータのセットは、インメモリで行うことができ、続いてダーティー領域マップの更新された部分をディスク等の不揮発性ストレージに書き込む。不揮発性ストレージへダーティー領域マップの更新を書き込んだ後は、方法300は、ブロック311に進む。
【0060】
ブロック311では、書き込み要求を完了することができる。書き込み要求において識別されたデータは、ディスク等の不揮発性ストレージに書き込むことができる。
【0061】
ブロック312では、方法300は、ストレージにおける、書き込み要求において変更された部分に対応する1つ以上のブロックインジケータを不揮発性ストレージに書き込むべきか否かを決定することを含むことができる。ブロックインジケータは、メモリ内のブロックマップ中にセットできる。しかし、ブロックマップをメモリからディスク等の不揮発性ストレージに書き込むべきか否かの決定を行うこともできる。決定は、発生しているストレージI/O処理のレベルに基づいて行うことができ、例えばディスクの対応する領域に関連するI/O処理のレベル等に基づくことができる。1つ以上の実施形態では、他のファクタも考慮することができる。例えば、不揮発性ストレージ上で或る領域のすべての部分が変更されたものとして示されている場合(例えば、不揮発性ストレージ内で或る領域についてのブロックマップのすべてのビットが以前にセットされ、かつ、以前に当該領域がクリーンとしてマークされている場合)、フラグ又はインジケータをセットすることができる。或る領域についてのブロックインジケータがすべてセットされているが故に又は他のファクタ故に、当該領域についての1つ以上のブロックインジケータをセットすべきでない場合、方法300は、ブロック320で終了することができる。ストレージI/O処理のレベルにより又は他のファクタにより、或る領域についての1つ以上のブロックインジケータを現時点でセットすべきでない場合、方法300は、ブロック314に進むことができる。或る領域についての1つ以上のブロックインジケータをセットすべきである場合、方法300は、ブロック316に進むことができる。
【0062】
ブロック314では、方法300は、待機することを含むことができる。待機期間は、ユーザまたはシステムによって指定するか、アルゴリズムによって決定するか、あるいは入力として受信することができる。待機期間の終了後、方法300は、ブロック312に戻ることができる。
【0063】
ブロック316では、方法300は、変更されたブロックに対応するブロックインジケータをセットすることを含むことができる。1つ以上のブロックマップを不揮発性ストレージに書き込むことができる。これは、前のブロックマップを不揮発性ストレージから読み込んで、それを更新することを含むことができる。一部の実施形態においては、追加のインジケータを用いることができる。例えば、領域が以前にダーティーではなかった場合に、その領域のためにセットするインジケータが存在することができる。このインジケータがセットされている場合、その領域内のブロックの更新は、ブロックマップの更新前に、不揮発性ストレージからブロックマップを読み込むことを必要しないことがある。なぜならば、その領域内のブロックマップは、以前にセットされていないからである。
【0064】
ブロック318では、方法300は、1つ以上の領域インジケータをクリアすることを含むことができる。一旦、領域についてのすべてのブロックマップをストレージに書き込むと、対応するダーティー領域マップ中の領域インジケータをクリアすることができる。
【0065】
ブロック320では、方法300を終了することができる。
【0066】
図4を参照し、
図4に、本発明の実施形態による、システム照合を提供する方法400を示す。ブロック402では、方法400を開始することができる。
【0067】
ブロック404では、方法400は、チェンジトラッキングを継続すべきか、あるいはバックアップまたは復元等の他の動作を行うべきかに関して決定すること、あるいはこれに関する入力を受信することを含むことができる。チェンジトラッキングを継続すべき場合、方法400は、ブロック414に進むことができる。そうでない場合、方法400は、ブロック406に進むことができる。
【0068】
ブロック406では、方法400は、次に行うべき動作について決定すること、あるいは、これについての入力を受信することを含むことができる。バックアップを取るべき場合、方法400は、ブロック410に進むことができる。復元を行うべきである場合、方法400は、ブロック408に進むことができる。
【0069】
ブロック408では、方法400は、復元操作を行うことを含むことができる。チェンジトラッキングを用いて復元操作を行うことは、
図6を参照してより詳細に後述する。
【0070】
ブロック410では、方法400は、増分バックアップ等のバックアップを行うことを含むことができる。チェンジトラッキングを用いて増分バックアップを行うことは、
図5を参照してより詳細に後述する。
【0071】
ブロック414では、方法400は、スナップショット等の、ストレージのイメージを作成することを含むことができる。1つ以上の実施形態によれば、一旦、イメージが作成されると、チェンジトラッキングを再開することができる。
【0072】
ブロック416では、方法400は、ダーティー領域マップによってダーティーとして示された領域内のイメージの部分と、バックアップ内の対応する部分とを比較することを含むことができる。比較によって、ダーティー領域における、バックアップ作成時以降に変更された1つ以上の部分を、識別することができる。
【0073】
ブロック418では、方法400は、1つ以上のフラグ、ビット、又は他のインジケータを、1つ以上のブロックマップ上で更新することを含むことができる。更新は、ブロック416内で変更されたものとして識別された部分に対応することができる。
【0074】
ブロック420では、方法400は、チェンジトラッキングを継続することを含むことができる。
【0075】
ブロック422では、方法400を終了することができる。
【0076】
図5を参照し、
図5に、本発明の実施形態による、増分バックアップを提供する方法500を示す。ブロック502では、方法500を開始することができる。
【0077】
ブロック504では、方法500は、領域がクリーンであるかダーティーであるかを決定することを含むことができる。方法500は、1つ以上のダーティー領域マップを用いて、マップ上の対応するダーティー領域インジケータを識別することを含むことができる。対応するインジケータがセットされている場合には、方法500は、ブロック508に進むことができる。対応するインジケータがセットされていない場合には、方法500は、ブロック506に進むことができる。
【0078】
ブロック506では、方法500は、クリーンとして示された領域内の変更されたものとして示されたブロックを、バックアップ向けにキャプチャすることを含むことができる。変更されたブロックの部分集合のみ、即ちファイルシステムによって割り当てられたブロックのみをキャプチャすることができる。
【0079】
ブロック508では、方法500は、ダーティーとして示された領域内の、ファイルシステムによって割り当てられたブロックを、バックアップ向けにキャプチャすることを含むことができる。
【0080】
ブロック510では、方法500は、バックアップすべき領域がさらにあるか否かを決定することを含むことができる。バックアップすべき領域がさらにある場合には、方法500は、ブロック504に戻ることができる。バックアップすべき領域がもう無い場合には、方法は、ブロック512に進むことができる。
【0081】
ブロック512では、方法500は、バックアップデータの重複を排除することを含むことができる。このような重複排除は、冗長データを削減及び/又は排除することができ、バックアップデータのために必要なストレージ及びI/O処理を削減することができる。例えば、ブロック508でキャプチャされたブロックの一部が以前のバックアップ以降変更されていない場合、このステップは、それらのブロックを、以前バックアップされているものとして識別することができる。これにより、ブロックが2回(即ち、冗長に)保存されることを回避することができる。
【0082】
ブロック514では、方法500を終了することができる。
【0083】
図6を参照し、
図6に、本発明の実施形態による、システム復元を提供する方法600を示す。ブロック602では、方法600を開始することができる。
【0084】
ブロック604では、方法600は、領域がクリーンであるかダーティーであるかを決定することを含むことができる。方法600は、1つ以上のダーティー領域マップを用いて、マップ上の対応するダーティー領域インジケータを識別することを含むことができる。対応するインジケータがセットされている場合、方法600は、ブロック608に進むことができる。対応するインジケータがセットされていない場合、方法600は、ブロック605に進むことができる。
【0085】
ブロック606では、方法600は、クリーンとして示された領域内で変更されたものとして示されているブロック等のバックアップ部分を復元することを含むことができる。
【0086】
ブロック608では、方法600は、ダーティーとして示された領域内のすべてのバックアップブロックを復元することを含むことができる。
【0087】
ブロック610では、方法600は、追加の領域を復元するべきか否かを決定することを含むことができる。追加の領域を復元すべき場合、方法600は、ブロック604に戻ることができる。復元すべき追加の領域が無い場合、方法600は、ブロック612に進むことができる。
【0088】
ブロック612では、方法600を終了することができる。
【0089】
なお、ここで、以上で説明した、本発明に基づくシステムリカバリを提供することは、一般に、入力データの処理及び出力データの生成を、ある程度含む。この入力データの処理及び出力データ生成は、ハードウエア又はソフトウェアで実現することができる。例えば、上述した本発明によれば、特定の電子部品を、システムリカバリ―用のモジュール内で、あるいは、システムリカバリの提供に関連する機能を実現するための類似または関連する回路内で用いることができる。代案としては、上述した本発明によれば、命令に従って動作する1つ以上のプロセッサが、システムリカバリの提供に関連する機能を実現することができる。こうした場合には、そのような命令を1つ以上のプロセッサ可読媒体(例えば、磁気ディスク又は他の記憶媒体)に格納することができること、あるいはそのような命令を、1つ以上の搬送波として具体化される1つ以上の信号を介して、1つ以上のプロセッサへ伝送することができることは、本発明の範囲内である。
【0090】
本発明は、本明細書中にて説明した特定実施形態に限定されるものではない。実際に、以上の説明及び図面より本明細書で説明した実施形態及び変更に加えて、本発明の他の種々の実施形態又は変更が、当業者にとって明らかである。したがって、こうした他の実施形態及び変更は、本発明の範囲内であることを意図している。さらに、本明細書では、本発明を、特定環境内での特定目的用の特定の実施現に関連して説明してきたが、当業者は、本発明の有用性はこれらに限定されず、いくつもの目的用にいくつもの環境内で有益に実現することができることは、当業者の認める所である。したがって、以下の特許請求の範囲は、上述した本発明の全容とのその精神を考慮して解釈すべきである。