(57)【特許請求の範囲】
【請求項１】
アプリケーションに対応するアプリケーション特有データを回復するための、コンピューターシステムが実施する方法であって、
アプリケーション特有データコンテナーはスナップショットからの回復を受けるべきであると判定することであって、前記アプリケーション特有データコンテナーは、特定のアプリケーションに対応するデータを含み、前記スナップショットは、運用ボリューム中のデータを含み、前記運用ボリューム中の前記データは、前記アプリケーション特有データコンテナーに対応するデータと、前記アプリケーション特有データコンテナーに対応する前記データ以外のデータとを含む、判定することと、
判定することに応答して、前記スナップショットからの前記アプリケーション特有データコンテナーのコンテンツの前の状態の回復を、前記コンテンツの前のバージョンを前記スナップショットから前記運用ボリューム中の前記アプリケーション特有データコンテナーにコピーすることを始めることによって開始する一方で、前記アプリケーション特有データコンテナーに対応する前記データ以外の前記データを回復せず、前記アプリケーション特有データコンテナーのコンテンツの前記前の状態のみが前記スナップショットから回復されるようにすることと、
前記アプリケーション特有データコンテナーの前記コンテンツの前記前のバージョンが、前記スナップショットから前記アプリケーション特有データコンテナーにコピーされている間、前記アプリケーション特有データコンテナーに対する読み出し動作および書き込み動作を前記特定のアプリケーションが実施することを許可することと
を含む方法。
【請求項２】
請求項１に記載の方法であって、
前記アプリケーション特有データコンテナーに対する読み出し動作および書き込み動作を前記アプリケーションが実施することを許可した後であるが前記回復が完了する前に、前記アプリケーション特有データコンテナーからのコンテンツのアドレス領域に対する読み出し要求を前記アプリケーションが発行したことを検出すること
をさらに含む方法。
【請求項３】
請求項２に記載の方法であって、
前記アプリケーション特有データコンテナーからのコンテンツのアドレス領域に対する読み出し要求を前記アプリケーションが発行したことを検出した後に、前記回復を中断することと、
前記読み出し動作を実施することと、
前記読み出し動作を実施した後に、前記回復を再開することと
をさらに含む方法。
【請求項４】
請求項２に記載の方法であって、前記読み出し要求に応答して、
前記読み出し要求に対応する前記アドレス領域が前記運用ボリューム中の前記アプリケーション特有データコンテナーに既に復元されたと判定することと、
前記読み出し要求に対応する前記アドレス領域が既に復元されたと判定することに応答して、前記運用ボリューム中の前記アプリケーション特有データコンテナーから前記アドレス領域の前記コンテンツを読み出すことと
をさらに含む方法。
【請求項５】
請求項４に記載の方法であって、前記読み出し要求に対応する前記アドレス領域が既に復元されたと判定することは、前記コンテンツの前記前のバージョンの前記スナップショットから前記運用ボリューム中の前記アプリケーション特有データコンテナーへの前記コピーの進行を調べることによって実施される、方法。
【請求項６】
請求項４に記載の方法であって、前記読み出し要求に対応する前記アドレス領域が既に復元されたと判定することは、前記アプリケーション特有データコンテナーの前記アドレス領域に前記回復を始めてから書き込まれていることを示すものを調査することによって実施される、方法。
【請求項７】
請求項２に記載の方法であって、前記読み出し要求に応答して、
前記読み出し要求に対応する前記アドレス領域が前記運用ボリューム中の前記アプリケーション特有データコンテナーにまだ復元されていないと判定することと、
前記読み出し要求に対応する前記アドレス領域がまだ復元されていないと判定することに応答して、前記スナップショットから前記コンテンツを読み出すことと、
読み出された前記コンテンツを前記アプリケーションに提供することと
をさらに含む方法。
【請求項８】
請求項７に記載の方法であって、
前記スナップショットから前記コンテンツを読み出すことに応答して、読み出した前記コンテンツを前記運用ボリュームの前記アプリケーション特有データコンテナーの前記アドレス領域に書き込むこと
をさらに含む方法。
【請求項９】
請求項１に記載の方法であって、
前記アプリケーション特有データコンテナーに対する読み出し動作および書き込み動作を前記アプリケーションが実施することを許可した後であるが前記回復が完了する前に、前記アプリケーション特有データコンテナーのアドレス領域に対して書き込み要求を前記アプリケーションが発行したことを検出すること
をさらに含む方法。
【請求項１０】
請求項９に記載の方法であって、
前記アプリケーション特有データコンテナーのアドレス領域に対して書き込み要求を前記アプリケーションが発行したことを検出した後に、前記回復を中断することと、
前記書き込み動作を実施することと、
前記書き込み動作を実施した後に、前記回復を再開することと
をさらに含む方法。
【請求項１１】
請求項９に記載の方法であって、前記書き込み要求に応答して、
前記書き込み要求に対応する前記アドレス領域が前記運用ボリューム中の前記アプリケーション特有データコンテナーに既に復元されたと判定することと、
前記書き込み要求に対応する前記アドレス領域が既に復元されたと判定することに応答して、前記書き込み要求に対応するコンテンツを前記アドレス領域に前記運用ボリューム中の前記アプリケーション特有データコンテナーから書き込むことと
をさらに含む方法。
【請求項１２】
請求項１１に記載の方法であって、前記書き込み要求に対応する前記アドレス領域が既に復元されたと判定することは、前記コンテンツの前記前のバージョンの前記スナップショットから前記運用ボリューム中の前記アプリケーション特有データコンテナーへの前記コピーの進行を調べることによって実施される、方法。
【請求項１３】
請求項１１に記載の方法であって、前記書き込み要求に対応する前記アドレス領域が既に復元されたと判定することは、前記アプリケーション特有データコンテナーの前記アドレス領域に前記回復を始めてから書き込まれていることを示すものを調査することによって実施される、方法。
【請求項１４】
請求項９に記載の方法であって、前記書き込み要求に応答して、
前記書き込み要求に対応する前記アドレス領域が前記運用ボリューム中の前記アプリケーション特有データコンテナーにまだ復元されていないと判定することと、
前記書き込み要求に対応する前記アドレス領域がまだ復元されていないと判定することに応答して、前記コンテンツを前記運用ボリューム中の前記アプリケーション特有データコンテナーの前記アドレス領域に書き込むことと、
書き込むことに応答して、前記アプリケーション特有データコンテナーの前記アドレス領域に前記回復を始めてから書込まれていることを示すものを記録することと
をさらに含む方法。
【請求項１５】
請求項１に記載の方法であって、アプリケーションの前記アプリケーション特有データコンテナーがスナップショットからの回復を受けるべきであると判定した後且つ回復を開始する前に、
前記アプリケーションにとってアクセス可能でないように、前記アプリケーション特有データコンテナーを閉じること
をさらに含む方法。
【請求項１６】
請求項１５に記載の方法であって、前記アプリケーション特有データコンテナーを閉じることは、前記運用ボリュームを閉じることなく実施され、前記運用ボリュームが少なくとも１つの他のアプリケーションにとって利用可能であることを保ちつつ、前記アプリケーション特有データコンテナーは閉じられる、方法。
【請求項１７】
請求項１に記載の方法であって、前記アプリケーションはバーチャルマシンを含む、方法。
【請求項１８】
請求項１７に記載の方法であって、前記アプリケーション特有データコンテナーはバーチャルハードドライブである、方法。
【請求項１９】
コンピューターシステムにアプリケーションに対応するアプリケーション特有データを回復するための方法を実施させるコンピュータープログラムであって、前記方法は、
アプリケーション特有データコンテナーはスナップショットからの回復を受けるべきであると判定することであって、前記アプリケーション特有データコンテナーは、特定のアプリケーションに対応するデータを含み、前記スナップショットは、運用ボリューム中のデータを含み、前記運用ボリューム中の前記データは、前記アプリケーション特有データコンテナーに対応するデータと、前記アプリケーション特有データコンテナーに対応する前記データ以外のデータとを含む、判定することと、
判定することに応答して、前記スナップショットからの前記アプリケーション特有データコンテナーのコンテンツの前の状態の回復を、前記コンテンツの前のバージョンを前記スナップショットから前記運用ボリューム中の前記アプリケーション特有データコンテナーにコピーすることを始めることによって開始する一方で、前記アプリケーション特有データコンテナーに対応する前記データ以外の前記データを回復せず、前記アプリケーション特有データコンテナーのコンテンツの前記前の状態のみが前記スナップショットから回復されるようにすることと、
前記アプリケーション特有データコンテナーの前記コンテンツの前記前のバージョンが、前記スナップショットから前記アプリケーション特有データコンテナーにコピーされている間、前記アプリケーション特有データコンテナーに対する読み出し動作および書き込み動作を前記特定のアプリケーションが実施することを許可することと
を含む、コンピュータープログラム。
【請求項２０】
アプリケーションの対象とする回復を、システム全体を回復することなく行うことができるシステムであって、
１つまたは複数のコンピュータープロセッサーと、
アプリケーションに対応するアプリケーション特有データを回復するためのステップを実施するためのコンピューター実行可能命令を記憶したコンピューターメモリーであって、前記コンピューター実行可能命令は、前記１つまたは複数のコンピュータープロセッサーに、
アプリケーション特有データコンテナーはスナップショットからの回復を受けるべきであると判定することであって、前記アプリケーション特有データコンテナーは、特定のアプリケーションに対応するデータを含み、前記スナップショットは、運用ボリューム中のデータを含み、前記運用ボリューム中の前記データは、前記アプリケーション特有データコンテナーに対応するデータと、前記アプリケーション特有データコンテナーに対応する前記データ以外のデータとを含む、判定することと、
判定することに応答して、前記スナップショットからの前記アプリケーション特有データコンテナーのコンテンツの前の状態の回復を、前記コンテンツの前のバージョンを前記スナップショットから前記運用ボリューム中の前記アプリケーション特有データコンテナーにコピーすることを始めることによって開始する一方で、前記アプリケーション特有データコンテナーに対応する前記データ以外の前記データを回復せず、前記アプリケーション特有データコンテナーのコンテンツの前記前の状態のみが前記スナップショットから回復されるようにすることと、
前記アプリケーション特有データコンテナーの前記コンテンツの前記前のバージョンが、前記スナップショットから前記アプリケーション特有データコンテナーにコピーされている間、前記アプリケーション特有データコンテナーに対する読み出し動作および書き込み動作を前記特定のアプリケーションが実施することを許可することと
をさせる、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]コンピューターおよびコンピューティングシステムは、現代生活のほぼあらゆる状況に影響を及ぼしている。コンピューターは、仕事、娯楽、健康管理、交通、エンターテインメント、家庭管理などに全体的に関与している。コンピューターの機能性は、通常、ソフトウェアコードを実行するコンピューティングシステムの成果である。コンピューターは、ボリュームを使用して、ソフトウェアコードを記憶し、またデータを記憶する。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
[0002]ときどき、ボリュームは、壊れることがある、またはボリューム自体が損傷を被る恐れがある。いずれの場合も、ボリュームは、使用に適さなくなる。そのような故障事象に備えるために、コンピューティングシステムに、ボリュームのスナップショットを定期的に撮らせることができる。故障事象が生じた場合、ボリュームは、損傷を受けた場合、交換することができ、回復モジュールが、最新の有効なスナップショットをボリューム中にコピーバックすることによって、スナップショット用ボリュームの回復を容易にすることができる。そのようにして、ボリュームの故障にもかかわらず、ボリュームは、前の状態に戻されて、コンピューター機能性を戻すことが可能になる。
【課題を解決するための手段】
【０００３】
[0003]本明細書に述べる少なくとも一実施形態によれば、アプリケーションに対応するアプリケーション特有データの対象とする回復が述べられている。実施例として、アプリケーションは、バーチャルマシンとすることができるはずであり、一方アプリケーション特有データは、バーチャルマシンに対応するバーチャルハードドライブとすることができるはずである。アプリケーション特有データの回復は、全ボリュームの回復を実施せずに行われる。
【０００４】
[0004]回復は、前のスナップショットからアプリケーション特有データコンテナーのコンテンツの前の状態を、アプリケーションによってアクセス可能な運用ボリューム中のアプリケーション特有データコンテナーにコピーすることを始めることによって開始される。しかし、アプリケーション特有データコンテナーのコンテンツがスナップショットからアプリケーション特有データコンテナーに依然としてコピーされている間、アプリケーションは、アプリケーション特有データコンテナーに対して読み出しおよび書き込み動作を実施することを依然として許可されている。それ故、アプリケーション特有データコンテナーのコンテンツの回復が、バックグラウンドで依然として続いているにもかかわらず、アプリケーション特有データコンテナーは、アプリケーションにとって十分アクセス可能に見える。
【０００５】
[0005]この発明の概要は、特許請求する主題の重要な特徴または必須の特徴を識別するように意図されず、また、特許請求する主題の範囲を決定する上での助けとして使用するようにも意図されていない。
【０００６】
[0006]様々な実施形態のより具体的な記述は、上記に述べた、および他の利点および特徴を得ることができるような方法で述べるために、添付図面を参照して提供するものである。これらの図面は、サンプルの実施形態だけを描き、したがって本発明の範囲を限定するものと見なすべきでないことを理解され、実施形態は、追加の具体性および細部を用いて添付図面の使用を通じて述べ説明することにする。
【図面の簡単な説明】
【０００７】
【図１】[0007]本明細書に述べるいくつかの実施形態を用いることができるコンピューティングシステムを抽象的に例示する図である。
【図２】[0008]本明細書に述べる原理によって、全システムを回復することなく、アプリケーションの対象とする回復を行うことができる実施例のシステムを概略的に例示する図である。
【図３】[0009]アプリケーションに対応するアプリケーション特有データを回復するための方法のフローチャートを例示する図である。
【図４】[0010]回復動作が依然として進行している間、読み出し動作を実施するための方法のフローチャートを例示する図である。
【図５】[0011]回復動作が依然として進行している間、書き込み動作を実施するための方法のフローチャートを例示する図である。
【発明を実施するための形態】
【０００８】
[0012]本明細書に述べる実施形態によれば、全ボリュームの回復を実施することなく、アプリケーションに対応するアプリケーション特有データの対象とする回復について述べられる。回復は、前のスナップショットからアプリケーション特有データコンテナーのコンテンツの前の状態を、アプリケーションによってアクセス可能な運用ボリューム中のアプリケーション特有データコンテナーにコピーすることを始めることによって開始される。しかし、アプリケーション特有データコンテナーのコンテンツが、スナップショットからアプリケーション特有データコンテナーに依然としてコピーされている間、アプリケーションは、以下にさらに述べる原理を使用して、アプリケーション特有データコンテナーに対して読み出しおよび書き込み動作を実施することを依然として許可されている。そのようにして、アプリケーション特有データコンテナーのコンテンツの回復が、バックグラウンドで依然として続いているにもかかわらず、アプリケーション特有データコンテナーは、アプリケーションにとって十分アクセス可能に見える。
【０００９】
[0013]コンピューティングシステムのいくつかの前置きの議論を図１に関して述べることにする。次いで、図２〜図５に関して上記に提示した順序で、対象とする回復を述べる。
【００１０】
[0014]現在、コンピューティングシステムは、ますます多岐にわたる形態を取りつつある。コンピューティングシステムは、たとえば、携帯型デバイス、電化製品、ラップトップコンピューター、デスクトップコンピューター、メインフレーム、分散型コンピューティングシステムとすることができる、または従来コンピューティングシステムと見なされていなかったデバイスとさえすることができる。この記述および特許請求の範囲では、用語「コンピューティングシステム」は、いずれかのデバイスまたはシステム（またはその組合せ）を含むものとして広く定義され、それは、少なくとも１つの物理的および有形のプロセッサー、およびプロセッサーによって実行することができるコンピューター実行可能な命令をそこに有することが可能な物理的および有形のメモリーを含む。メモリーは、いずれかの形態を取ることができ、コンピューティングシステムの性質および形態によって決めることができる。コンピューティングシステムは、ネットワーク環境の至る所に分散させることができ、多様な構成要素のコンピューティングシステムを含むことができる。
【００１１】
[0015]図１に例示するように、コンピューティングシステム１００は、そのもっとも基本的な構成で、少なくとも１つの処理ユニット１０２およびコンピューター可読媒体１０４を含む。コンピューター可読媒体１０４は、物理的なシステムメモリーを含むものとして概念的に考えることができ、システムメモリーは、揮発性、不揮発性またはその２つのある組合せとすることができる。また、コンピューター可読媒体１０４は、不揮発性の大容量記憶装置を概念的に含む。コンピューティングシステムが分散化される場合、処理、メモリーおよび／または記憶能力は、同様に分散化させることができる。
【００１２】
[0016]用語「実行可能なモジュール」または「実行可能な構成要素」は、本明細書で使用するとき、コンピューティングシステムにおいて実行することができるソフトウェアオブジェクト、ルーティングまたは方法を指すことができる。本明細書に述べる様々な構成要素、モジュール、エンジンおよびサービスは、コンピューティングシステムで実行されるオブジェクトまたはプロセスとして実装することができる（たとえば、別々のスレッドとして）。そのような実行可能なモジュールは、型安全性が強化され、プロセスがそれら自体の他と全く別個のメモリーオブジェクトを割り当てられる管理された環境下で実行されている場合、マネージコードとすることができる。また、そのような実行可能なモジュールは、実行可能なモジュールがＣまたはＣ＋＋など、ネイティブコードで書かれている場合、アンマネージコードとすることができる。
【００１３】
[0017]次に続く記述では、実施形態は、１つまたは複数のコンピューティングシステムによって実施されるアクト（ａｃｔｓ；行為）を参照して述べる。そのようなアクトがソフトウェアで実装される場合、アクトを実施する、関連するコンピューティングシステムの１つまたは複数のプロセッサーは、実行されているコンピューター実行可能な命令に応答して、コンピューティングシステムの動作を指示する。たとえば、そのようなコンピューター実行可能な命令は、コンピュータープログラム製品を形成する１つまたは複数のコンピューター可読媒体において具体化することができる。そのような動作の実施例は、データの操作を伴う。コンピューター実行可能な命令（および操作されたデータ）は、コンピューティングシステム１００のメモリー１０４中に格納することができる。また、コンピューティングシステム１００は、コンピューティングシステム１００が他のプロセッサーとそれを通じて通信することを可能にする、たとえばネットワーク１１０など、通信チャネル１０８を含むことができる。
【００１４】
[0018]本明細書に述べる実施形態は、以下でより詳細に述べるように、たとえば１つまたは複数のプロセッサーおよびシステムメモリーなど、コンピューターハードウェアを含む特殊目的または汎用のコンピューターを含む、または利用することができる。また、本明細書に述べる実施形態は、コンピューター実行可能な命令および／またはデータ構造を伝える、または格納するための物理的および他のコンピューター可読媒体を含む。そのようなコンピューター可読媒体は、汎用または特殊目的のコンピューターシステムによってアクセスすることができる、任意の利用できる媒体とすることができる。コンピューター実行可能な命令を格納するコンピューター可読媒体は、物理的な記憶媒体である。コンピューター実行可能な命令を伝えるコンピューター可読媒体は、伝送媒体である。それ故、例としてだけで限定せず、本発明の実施形態は、少なくとも２つのはっきりと異なる種類のコンピューター可読媒体、すなわちコンピューター記憶媒体および伝送媒体を含むことができる。
【００１５】
[0019]コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置、または他の磁気記憶装置、あるいはコンピューター実行可能な命令またはデータ構造の形態で所望のプログラムコード手段を格納するために使用することができ、汎用または特殊目的のコンピューターによってアクセスすることができる、いずれかの他の有形の記憶媒体を含む。
【００１６】
[0020]「ネットワーク」は、コンピューターシステムおよび／またはモジュールおよび／または他の電子デバイスの間で電子データの搬送をできるようにする１つまたは複数のデータリンクとして定義される。ネットワークまたは別の通信接続（ハードワイヤード、ワイヤレス、またはハードワイヤードとワイヤレスの組合せのいずれか）を通じて情報がコンピューターに移される、または提供されるとき、コンピューターは、伝送媒体としてその接続を適切に見る。伝送媒体は、コンピューター実行可能な命令またはデータ構造の形態で所望のプログラムコード手段を伝えるために使用することができ、汎用または特殊目的のコンピューターによってアクセスすることができる、ネットワークおよび／またはデータリンクを含むことができる。また、上記の組合せは、コンピューター可読媒体の範囲内に含めるべきである。
【００１７】
[0021]さらに、コンピューター実行可能な命令またはデータ構造の形態のプログラムコード手段は、それが様々なコンピューターシステム構成要素に到達したとき、伝送媒体からコンピューター記憶媒体に自動的に移すことができる（またはその逆も同様に）。たとえば、ネットワークまたはデータリンクを通じて受け取られたコンピューター実行可能な命令またはデータ構造は、ネットワークインターフェースコントローラ（たとえば、「ＮＩＣ」）内のＲＡＭ中にバッファし、次いで最終的には、コンピューターシステムのＲＡＭに、および／またはコンピューターシステムにおけるそれほど揮発性でないコンピューター記憶媒体に移すことができる。それ故、コンピューター記憶媒体は、また（または主としてさえ）伝送媒体を利用するコンピューターシステム構成要素中に含めることができることを理解すべきである。
【００１８】
[0022]コンピューター実行可能な命令は、たとえば、命令およびデータを含み、命令は、プロセッサーで実施されたとき、汎用コンピューター、特殊目的のコンピューターまたは特殊目的の処理デバイスに、ある機能または機能のグループを実施させる。コンピューター実行可能な命令は、たとえば、バイナリ、アセンブリ言語などの中間形式の命令（intermediate format instruction）とする、またはソースコードとさえすることができる。主題が構造上の特徴および／または方法論的なアクトに特有の言語で述べられているが、添付の特許請求の範囲で定義される主題が、述べる特徴または上記に述べたアクトに必ずしも限定されないことを理解すべきである。むしろ、述べる特徴およびアクトは、請求項を実装する実施例の形態として開示される。
【００１９】
[0023]当業者は、パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、メッセージプロセッサー、携帯型デバイス、マルチプロセッサーシステム、マイクロプロセッサーベースまたはプログラマブルな消費家電製品、ネットワークＰＣ、ミニコンピューター、メインフレームコンピューター、携帯電話、ＰＤＡ、ポケットベル、ルーター、スイッチなど、多くのタイプのコンピューターシステム構成を備えるネットワークコンピューティング環境下で、本発明を実践することができることを認識するであろう。また、本発明は、ネットワークを通じてリンクされる（ハードワイヤードデータリンク、ワイヤレスデータリンクによって、またはハードワイヤードおよびワイヤレスのデータリンクの組合せによって、いずれかで）ローカルおよびリモートのコンピューターシステムが両方ともタスクを実施する分散型システム環境下で実践することができる。分散型システム環境下では、プログラムモジュールは、ローカルおよびリモートのメモリー記憶デバイスの両方中に配置することができる。
【００２０】
[0024]図２は、本明細書に述べる原理によって、全システムを回復することなく、アプリケーションの対象とする回復を行うことができる実施例のシステム２００を概略的に例示する。システム２００は、多様なアプリケーション２０１Ａにとってアクセス可能な運用上のボリューム２１０を含み、したがってアプリケーション２０１Ａは、運用上のボリューム２１０から読み出し、そこに書き込むことができる。たとえば、アプリケーション２０１は、省略記号２０１Ｅによって本明細書に述べる原理が特定の数のアプリケーションを動作させるシステムに全く限定されないことが表されているとはいえ、４つのアプリケーション２０１Ａ、２０１Ｂ、２０１Ｃおよび２０１Ｄを含むものとして例示されている。システム２００は、単一のアプリケーション２０１Ａまたはすべてが運用上のボリューム２１０を共有する恐らく何千ものアプリケーションを動作させることができる。「ボリューム」は、連続する論理的または物理的なアドレスを含むようなファイルシステムによって認識される単一のネームスペースである。
【００２１】
[0025]運用上のボリューム２１０が、省略記号２１１Ｂによって表されたようなアプリケーション特有データコンテナー以外に大量のデータを格納することができるが、運用上のボリューム２１０は、アプリケーション特有データコンテナー２１１Ａを格納する。アプリケーション特有データコンテナー２１１Ａは、ライン２１２によって表されたようにアプリケーション２０１Ａと関連付けられる。アプリケーション特有データコンテナー２１１Ａは、たとえば、アプリケーション特有ファイルとすることができる。
【００２２】
[0026]一実施例では、アプリケーション２０１は、それぞれ、バーチャルマシンとすることができる。その場合、アプリケーション２０１Ａは、バーチャルマシンとすることができ、アプリケーション特有データコンテナー２１１Ａは、アプリケーション２０１Ａと関連するバーチャルハードドライブとすることができるはずである。その場合、システム２００は、多様なバーチャルマシンをホストするホストコンピューティングシステムの一部分とすることができる。ホストコンピューティングシステムは、ボリューム２１０が１つだけ図２に例示されているが、多数のボリュームを備えることができる。
【００２３】
[0027]本明細書に述べる原理は、アプリケーション特有データコンテナーがそこに格納されるボリュームの全体を回復することなく、アプリケーション特有データコンテナーの都合のよい回復を可能にする。たとえば、図２では、アプリケーション特有データコンテナー２１１Ａは、全ボリューム２１０を回復することなく回復することができる。これは、ときどきアプリケーション特有データコンテナー２１１Ａが壊れた、または信頼できなくなる恐れがあり、一方ボリューム２１０自体が全体としては壊れていないままである際、有用である。さらにまた、全ボリュームの回復は、ボリュームの一部分だけの回復よりもっとより長い時間がかかる可能性がある。
【００２４】
[0028]重要なことは、システム２００は、アプリケーション特有データコンテナー２１１Ａの回復がバックグラウンドで行われていながら、アプリケーション２０１Ａが継続してアプリケーション特有データコンテナー２１１Ａ上で動作するようにさらに動作する。それ故、アプリケーション２０１Ａの観点から、回復が、迅速に、恐らくわずかな時間で起こるとはいえ、実際、回復は、バックグラウンドでずっとより長い期間行われる。
【００２５】
[0029]この対象とする迅速な回復を容易にするために、システム２００は、管理モジュール２２１、スナップショットモジュール２２２および回復モジュール２２３を含む、いくつかの実行可能なモジュールを含む。これらのモジュールのそれぞれは、以下でさらに述べる。
【００２６】
[0030]モジュール２２１〜２２３は、それぞれ、コンピュータープログラム製品を含むコンピューティング可読記憶媒体に格納された１つまたは複数のコンピューター実行可能な命令を実行するコンピューティングシステムのプロセッサー（たとえば、プロセッサー（複数可）１０２）に応答するコンピューティングシステム（コンピューティングシステム１００など）によって、実例を示す、および／または動作させることができる。具体的なアクトは、モジュール２２１および２２３と関連するものとして述べるが、そのようなアクトは、述べる具体的なモジュールによって実施する必要がない。
【００２７】
[0031]回復のために可能な必要事項を準備するために、スナップショットモジュール２２２は、少なくともアプリケーション特有データコンテナー２１１Ａの、しかし、恐らくボリューム２１０のより大きいセグメントの、または恐らく全体として全ボリューム２１０さえのスナップショットを撮る。これらのスナップショットは、定期的に、および／または特定の事象に応答して取ることができる。いずれにしても、図２は、スナップショットモジュールが、アプリケーション特有データコンテナー２１１Ａの３つのスナップショット２３１Ａ、２３１Ｂおよび２３１Ｃを撮り、そしてマルチヘッドの矢印２４１で表すように、スナップショット２３１Ａ、２３１Ｂおよび２３１Ｃをスナップショット用ボリューム２３０中に提供する実施例を例示する。この実施例では、スナップショット２３１Ａは、アプリケーション特有データコンテナー２１１Ａのもっとも古い、スナップショットであり、スナップショット２３１Ｂは、その次に撮られスナップショットであり、スナップショット２３１Ｃは最新のスナップショットである。
【００２８】
[0032]管理モジュール２２１は、アプリケーション特有データコンテナーが、スナップショット用ボリューム２３０内のスナップショットからの回復を受けるべきであるのかどうか、およびいつ実施するのかを決定する。それに応じて、回復モジュール２２３は、矢印２４２によって表すように、スナップショット用ボリューム２３０中のスナップショット２３１Ｃからアプリケーション特有データコンテナー２２１Ａの回復を実施して、アプリケーション特有データコンテナー２２１Ａのコンテンツが再配置される。回復が開始されている間、アプリケーション特有データコンテナー２１１Ａは、アプリケーション２０１Ａにとって一時的に利用できない恐れがあるはずだが、回復が開始された直後、管理モジュール２２１は、アプリケーション２０１Ａがアプリケーション特有データコンテナー２１１Ａに対して読み出しおよび書き込み動作を実施することを許可することができる。
【００２９】
[0033]図３は、アプリケーションに対応するアプリケーション特有データを回復するための方法３００のフローチャートを例示する。方法３００が、図２のシステム２００内で実施することができるので、ここで図２に関して方法３００を述べる。
【００３０】
[0034]方法３００は、アプリケーションの特定のアプリケーション特有データコンテナーが、スナップショットからの回復を受けるべきであると判定されたとき、開始される（アクト３０１）。たとえば、図２を参照すると、管理モジュール２２１は、アプリケーション２０１Ａのアプリケーション特有コンテナー２１１Ａが、スナップショット２３１Ｃからの回復を受けるべきであると判定する。
【００３１】
[0035]それに応答して、方法は、たとえばアプリケーション特有データコンテナーを閉じることによって、アプリケーション特有データコンテナーをアプリケーションにとって一時的に利用できないようにする（アクト３０２）。たとえば、図２では、管理構成要素２２１が、アプリケーション特有データコンテナー２１１Ａを閉じることができる。アプリケーション特有データコンテナー２１１Ａは、回復動作の全期間と比較して、ほんの短時間閉じられたままになる。さらにまた、アプリケーション特有データコンテナー２１１Ａは、運用上のボリューム２１０を閉じることなしに、閉じられ、それ故、アプリケーション特有データコンテナー２１１Ａが閉じられた間、運用上のボリューム２１０が、少なくとも１つの他のアプリケーション（たとえば、アプリケーション２０１Ｂ）にとって利用できる状態に保たれる。
【００３２】
[0036]次いで、回復動作が開始される（アクト３０３）。たとえば、図２の場合、回復モジュール２２３が、矢印２４２によって表すように、前のスナップショット２３１Ｃからアプリケーション特有データコンテナー２０１Ａのコンテンツの前の状態のコピーを始めることによって、回復を開始する。回復モジュール２２３は、前のスナップショット２３１Ｃからアプリケーション特有データコンテナー２０１Ａの一領域に一度にコピーすることを進めることになる。回復モジュール２２３は、領域を回復するのに先立ち、その領域に対して範囲ロックを掛けることになる。
【００３３】
[0037]一度回復動作が開始されると、アプリケーション特有データコンテナーは、開かれ（アクト３０５）、それによって、そこから読み出され、そこに書き込まれる記憶場所を含む領域に対する範囲ロックが回復モジュールによって保持されていない限り、アプリケーションは、アプリケーション特有データコンテナーに対して読み出しおよび書き込み動作を実施することが許可される。アプリケーション特有データコンテナーは、たとえ回復動作が継続されて（アクト３０４）、そして実際、ただわずか前に始まった可能性があるにもかかわらず、開かれる。それ故、図２を参照すると、回復モジュール２２３は、バックグラウンドで回復を継続し（矢印２４２によって表すように）、一方管理モジュール２２１は、継続して、アプリケーション２０１Ａがアプリケーション特有データコンテナー２１１Ａに対して読み出しおよび書き込み動作を実施することを可能にする。
【００３４】
[0038]回復が依然として処理中である間（アクト３０４）、管理モジュール２２１は、読み出しおよび書き込み要求に対して、本明細書に述べるような回復との一貫性を与えるような方法で、アプリケーション２０１Ａからの読み出しおよび書き込み要求に応答するように動作する。
【００３５】
[0039]たとえば、アプリケーション２０１Ａがアプリケーション特有データコンテナーから読み出す要求をコンテンツのアドレス領域に対して発行したことが検出されたとき（決定ブロック３１１で「イエス」）、管理モジュール２２１は、回復がそのアドレス領域に接近した場合、またはそのアドレス領域に達した場合でさえ、回復が中断されるように、そのアドレス領域のための回復を一時的に中断させる（アクト３１２）。読み出し動作が実施され（アクト３１３）、その後、回復が領域に接近することになる、または達したとしても、回復が中断されないようにして、そのアドレス領域のための回復が再び始められる（アクト３１４）。実施例として、読み出し動作は、図４に関して例示し述べる方法で実施することができる。アクト３１２〜３１４は、アプリケーション２０１Ａがアプリケーション特有データコンテナー２１１Ａに対して読み出し要求を発行するたびに、実施することができる可能性がある。
【００３６】
[0040]アプリケーション２０１Ａがアプリケーション特有データコンテナーのアドレス領域に対して書き込み要求を発行したことが検出されたとき（決定ブロック３２１で「イエス」）、管理モジュール２２１は、回復がそのアドレス領域に接近した場合、またはそのアドレス領域に達した場合でさえ、回復が中断されるように、やはりそのアドレス領域のための回復を一時的に中断させる（アクト３２２）。書き込み動作が実施され（アクト３２３）、その後、回復が領域に接近することになる、または達したとしても、回復が中断されないようにして、回復が再び始められる（アクト３２４）。実施例として、書き込み動作は、図５に関して例示し述べる方法で実施することができる。アクト３１２〜３１４は、アプリケーション２０１Ａがアプリケーション特有データコンテナー２１１Ａに対して読み出し要求を発行するたびに、実施することができる可能性がある。
【００３７】
[0041]図４は、回復動作が依然として処理中である間、読み出し要求に応答するための方法４００を例示する。方法４００は、図３のアクト３１３の読み出し動作を実施するために、実施することができる。それ故、方法４００は、図３のアクト３１２の後開始することができる。
【００３８】
[0042]方法４００は、読み出し要求に対応するアドレス領域が、運用上のボリューム中のアプリケーション特有データコンテナーに既に復元されたかどうかを判定する（決定ブロック４０１）。これは、回復進行状況２５１を調べ、回復モジュール２２３によって達成することができる。たとえば、回復モジュール２２３がスナップショット２３１Ｃからコンテンツを連続的にコピーした場合、回復進行状況２５１は、アプリケーション特有データコンテナー中で回復された最高位アドレスを表す高基準値を示す可能性がある。加えて、これは、アプリケーション特有データコンテナーのアドレス領域が、回復の始まりから、書き込まれたことを示す書き込み済表示２５２を調べ、回復モジュール２２３によって達成することができる。たとえば、たとえアドレス領域が、アクト３０４によって実施される通常の回復を通じてもそれでも、まだ到達されていないとしても、アドレス領域は、以下でさらに述べる方法５００の実施に応答して、または図４のアクト４０６に応答して、書き込まれている可能性がある。
【００３９】
[0043]読み出し要求に対するアドレス領域がアプリケーション特有データコンテナーに既に復元された場合（決定ブロック４０１で「イエス」）、アドレス領域のコンテンツは、運用上のボリューム中のアプリケーション特有データコンテナーから読み出され（アクト４０２）、それ故、読み出し要求に応答して、アプリケーション２０１Ａにとって利用できるようになる（アクト４０３）。読み出し要求に対するアドレス領域が、アプリケーション特有データコンテナーにまだ復元されていない場合（決定ブロック４０１で「ノー」）、コンテンツは、その代りに、スナップショットの対応する部分から読み出され（アクト４０４）、そしてコンテンツは、アプリケーションに提供され（アクト４０３）、さらに読み出されたコンテンツは、また、アプリケーション特有データコンテナーに任意選択で提供される（アクト４０５）。さらにまた、書き込み済表示は、任意選択で、回復が始まってから、書き込みがアプリケーション特有データコンテナーのアドレス領域に対して行われたことを反映するために、アップデートされる（アクト４０６）。一度読み出し動作が完了すると、方法４００は、図３のアクト３１４に戻り、回復動作が再開される。方法４００は、回復プロセスの間受け取られた読み出し要求毎に、何度も繰り返すことができる。一度回復プロセスが完了すると（アクト３０６）、読み出し動作は、管理モジュール２２１からの介入なしに通常通りに継続することができる。
【００４０】
[0044]図５は、回復動作が依然として処理中である間、書き込み要求に応答するための方法５００を例示する。方法５００は、図３のアクト３２３の書き込み動作を実施するために、実施することができる。それ故、方法５００は、図３のアクト３２２の後、開始することができる。
【００４１】
[0045]方法５００は、運用ボリューム中のアプリケーション特有データコンテナーのアドレス領域に、書き込み要求と関連するコンテンツを書き込むことによって、書き込み動作を実施する（アクト５０１）。また、方法５００は、書き込み要求に対応するアドレス領域が、運用上のボリューム中のアプリケーション特有データコンテナーに既に復元されたかどうかを判定する（決定ブロック５０２）。これは、やはり、回復進行状況２５１を調べ、回復モジュール２２３によって達成することができる。加えて、これは、回復始まりから、アプリケーション特有データコンテナーのアドレス領域に書き込まれたことを示す書き込み済表示２５２を調べ、回復モジュール２２３によって達成することができる。たとえば、たとえアドレス領域が、アクト３０４によって実施される通常の回復を通じてもそれでも、まだ到達されていないとしても、アドレス領域は、方法５００の前の実施に応答して、または図４のアクト４０６に応答して、書き込まれている可能性がある。
【００４２】
[0046]書き込み要求に対するアドレス領域がアプリケーション特有データコンテナーに既に復元された場合（決定ブロック５０２で「イエス」）、これは書き込み動作を完了させ、それによって図３のアクト３２４に戻り、復元動作が再開される。書き込み要求に対するアドレス領域がアプリケーション特有データコンテナーにまだ復元されていない場合（決定ブロック５０２で「ノー」）、書き込み済インジケーター２５２は、回復動作が始まってから、アドレス領域に書き込まれたことを反映するためにアップデートされる（アクト５０３）。その後、再びそれによって図３のアクト３２４に戻り、復元動作が再開される。方法５００は、回復プロセスの間に受け取られた書き込み要求毎に、何度も繰り返すことができる。一度回復プロセスが完了すると（アクト３０６）、書き込み動作は、通常通り管理モジュール２２１からの介入がなく、継続させることができる。
【００４３】
[0047]回復モジュールの観点から、回復モジュール２２３は、アプリケーションの特定のアプリケーション特有データコンテナーが、スナップショットからの回復を受けるべきと判定する。たとえば、回復モジュール２２３は、管理モジュール２２１が図３のアクト３０１を実施するのに応答して、管理モジュール２２１から回復命令を受け取ってしまうことができる。それに応答して、回復モジュールは、回復を開始する。
【００４４】
[0048]回復モジュールは、スナップショットからコンテンツをアプリケーション特有データコンテナーに一度に一部分コピーすることによって、回復を継続し、それは図３のアクト３０４に類似している。回復モジュールは、中断命令にまさに応答して、アクト３１２、３１４、３２２および３２４に応えて回復を再開するが、しかしそうでなければ、単に回復を進める。そのような一時的な中断にもかかわらず、回復動作は、依然として、アクト３０４中に示したように継続されると言えることになる。
【００４５】
[0049]また、回復モジュールは、回復対象を除く運用上のボリューム中のアプリケーション特有コンテナーに対してなされる書き込み要求に対応する、少なくとも１つのアドレス領域を追跡する。たとえば、これは、図２の書き込み済インジケーター２５２を使用して達成することができる。回復モジュールは、スナップショットから一度に一部分をコピーするとき、インジケーター２５２内で表示されているように既に書き込まれたいずれものアドレスに対してコピーを飛ばして進む。これは、アプリケーション２０１Ａが回復の間処理を継続することを可能にすることによって生成されたより新しいデータを、回復によって上書きされないように防止する。
【００４６】
[0050]ここで、衝突防止をどのようにして容易にすることができるのかの実施例の実装形態を、まず、読み出し／書き込み動作の観点から、次いで回復の観点から述べることにする。
【００４７】
[0051]アプリケーションが読み出しまたは書き込み要求を発行したとき、システムは、読み出しまたは書き込み要求によってアドレス指定された領域に対する範囲ロックを掛ける。回復が同じ範囲に対して働いている場合、この読み出し／書き込み動作は、未決にされて後で再開されることになる。次に、回復の高基準値（回復進行状況２５１の実施例）が評価され、ダーティーマップ（書き込み済インジケーター２５２の実施例）と一緒に評価されて、上記に述べたような適切な処置が決定される。たとえば、読み出し動作の場合、データコンテナーから読み出すのかどうか（アクト４０２）、またはスナップショットから読み出すのかどうか（アクト４０３）が判定される。書き込み動作の場合、書き込みを反映するために、ダーティーマップをアップデートする必要があるのかどうか（アクト５０３）が判定される。次いで、適切なＩ／Ｏ動作が実施され、次いで領域に対する範囲ロックが解除される。回復がこの領域に対して未決であった場合、回復がその領域について再開される。
【００４８】
[0052]回復の観点からの衝突防止は、一度にアドレスの１つの範囲で行われる。回復される領域毎に、回復プロセスは、回復される領域に対して範囲ロックを掛ける。読み出し／書き込み動作がその領域に対して既に範囲ロックが掛けられている場合、その領域に対する回復は、未決にされて、読み出し／書き込みの完了時に後で再開される。一度回復がその領域に対する範囲ロックを得ることができると、回復は、ダーティーマップに基づき実施される。たとえば、回復は、ダーティーマップ中に既に書き込まれたとしてマークが付けられたそれらのアドレスのすべてについて、スナップショットからのコピーを飛ばして進むことになる。一度領域が回復されると、回復プロセスは、範囲ロックを解除する。これによって、いずれもの未決の読み出し／書き込み要求を、その範囲に対して完了することが可能になる。
【００４９】
[0053]それ故、本明細書に述べる原理は、全ボリュームの回復を必要とすることなしに、またアプリケーションが、回復される処理中のアプリケーション特有データコンテナーに対して継続して動作することを可能としながら、アプリケーション特有データコンテナーの対象とする回復のための有効で効率のよいメカニズムを提供する。
【００５０】
[0054]本発明は、その趣旨または必須の特性から逸脱せずに、他の具現化することができる。述べた実施形態は、すべての点で例示的で限定するものでないと単に見なすべきである。したがって、本発明の範囲は、前の記述によってよりもむしろ添付の特許請求の範囲によって示される。特許請求の範囲と同等の意味および範囲内に収まるすべての変更は、請求項の範囲内に包含すべきである。
【図１】
0006431521.tif 000002
【図２】
0006431521.tif 000003
【図３】
0006431521.tif 000004
【図４】
0006431521.tif 000005
【図５】
0006431521.tif 000006