(57)【要約】  １つまたは複数の仮想マシンをホストしているホストサーバは、ホストボリュームおよびそれにインストールされている１つまたは複数の仮想マシンを、アプリケーション整合方法でバックアップすることができる。一実装形態では、ホストレベルのリクエスタは、どの仮想マシンがアプリケーション整合バックアップにふさわしいかを識別するようホストレベルのライタに指示する。次いで、ホストレベルのリクエスタは、適切に構成された各仮想マシンにおけるゲストレベルのリクエスタを介して、仮想マシンバックアップを開始するようホストレベルのライタに指示し、仮想マシンは、仮想マシンボリューム内にアプリケーション整合バックアップを作成する。ホストレベルのリクエスタは、次いで、ホストレベル上のサーバボリュームのスナップショットを開始する。したがって、仮想マシンレベルのスナップショットを、サーバボリュームのホストレベルのスナップショット内から取り出すことができる。
2009533777.tif 000002
【特許請求の範囲】
【請求項１】
ホストサーバが１つまたは複数のホストボリュームにインストールされている１つまたは複数の仮想マシンを有し、前記仮想マシンが前記１つまたは複数のホストボリューム上の１つまたは複数の仮想マシンボリュームを管理するよう構成されているコンピュータ化された環境における前記ホストサーバにおいて、必ずしも前記１つまたは複数の仮想マシンの停止または再起動を必要とすることなく、仮想マシンボリュームデータのアプリケーション整合バックアップを作成する方法であって、
ライタが関与するバックアッププロセスのための１つまたは複数の構成要素を有する少なくとも１つの仮想マシンを識別する行為と、
前記少なくとも１つの仮想マシンに、１つまたは複数の仮想マシンボリュームの対応する１つまたは複数の仮想マシンレベルのスナップショットを準備する旨の命令を送信する行為と、
前記少なくとも１つの仮想マシンでのスナップショット操作が完了したことを識別する行為と、
前記少なくとも１つの仮想マシンがインストールされている１つまたは複数のホストボリュームの１つまたは複数のホストレベルのスナップショットを作成する行為と、
前記１つまたは複数のホストボリュームの前記１つまたは複数のホストレベルのスナップショットから前記１つまたは複数の仮想マシンボリュームの前記１つまたは複数の仮想マシンレベルのスナップショットを取り出す行為と
を含むことを特徴とする方法。
【請求項２】
前記１つまたは複数の仮想マシンボリュームの前記仮想マシンレベルのスナップショットは、アプリケーション整合であることを特徴とする請求項１に記載の方法。
【請求項３】
前記ホストレベルスナップショットは、前記１つまたは複数の仮想マシンボリュームの１つまたは複数の異なるスナップショットを含み、前記方法は、前記１つまたは複数のホストレベルのスナップショット内の前記１つまたは複数の異なるスナップショットのデータを、１つまたは複数の仮想マシンボリュームの前記１つまたは複数の仮想マシンレベルのスナップショットのデータと取り替える行為をさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記１つまたは複数のホストレベルのスナップショットを読み取り専用データから書き込み可能データに変換する行為をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
ホストリクエスタは、前記バックアップ命令を、前記ホストライタを介して、前記１つまたは複数の仮想マシンのそれぞれのゲストリクエスタに中継することを特徴とする請求項１に記載の方法。
【請求項６】
前記１つまたは複数の仮想マシンレベルのボリュームは、異なるスナップショットのそれぞれが仮想マシンレベルのスナップショットが含まれている仮想ディスクファイルのスナップショットを含むように、１つまたは複数の仮想ディスクファイル内において管理されることを特徴とする請求項１に記載の方法。
【請求項７】
前記１つまたは複数の異なるスナップショットのそれぞれに対応する装置識別子をマウントする行為をさらに含み、前記少なくとも１つの仮想マシンの各仮想ハードディスクファイルは、前記ホスト上の物理ディスクとして提示されることを特徴とする請求項６に記載の方法。
【請求項８】
ライタが関与するバックアッププロセスのための前記１つまたは複数の構成要素を識別することができない１つまたは複数の異なる仮想マシンを識別する行為をさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記１つまたは複数の異なる仮想マシンは、保存されたか電源が切断されたかの一方であることを識別する行為をさらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記１つまたは複数の構成要素を識別することができない１つまたは複数の異なる仮想マシンを識別する前記行為は、前記１つまたは複数の異なる仮想マシンが適切に構成されたゲストリクエスタおよび適切に構成された仮想マシンレベルのアプリケーションライタのうちの少なくとも１つを含まないことを識別する行為をさらに含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記１つまたは複数の異なる仮想マシンのそれぞれの状態を保存する行為をさらに含むことを特徴とする請求項８に記載の方法。
【請求項１２】
前記１つまたは複数の異なる仮想マシンの操作を少なくとも瞬間的に一時停止する行為をさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記状態が保存されたことを識別すると、前記１つまたは複数の異なる仮想マシンがインストールされている各ホストボリュームのスナップショットを作成する行為をさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記１つまたは複数の異なる仮想マシンのそれぞれに、操作を再開するよう指示するステップをさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記少なくとも１つの仮想マシンがインストールされている前記１つまたは複数のホストボリュームは、１つまたは複数の外部記憶構成要素によってホストされる１つまたは複数のディスクに実装され、前記１つまたは複数の外部記憶構成要素は、
（ｉ）ハードウェアベースのスナップショット作成方法
（ｉｉ）１つまたは複数のストレージアレイによって提示されるスナップショット作成方法
のうちの少なくとも１つを使用して、前記１つまたは複数の外部ディスクの１つまたは複数のスナップショットを作成するよう構成されていることを特徴とする請求項１に記載の方法。
【請求項１６】
１つまたは複数のホストボリュームの１つまたは複数のホストレベルのスナップショットを作成する前記行為は、前記１つまたは複数のホストレベルのスナップショットを前記ホストサーバ上で独立して管理できるようにし、前記１つまたは複数のホストレベルのスナップショットは、別々の読み取り−書き込みボリュームにおいて変換することができ、前記１つまたは複数の仮想マシンレベルのスナップショットは、前記１つまたは複数のホストレベルのスナップショット内から取り出すことができることを特徴とする請求項１５に記載の方法。
【請求項１７】
仮想マシンがホストサーバボリュームにインストールされている、コンピュータ化された環境における前記仮想マシンにおいて、前記ホストサーバのホストライタからの命令に応答して、１つまたは複数の仮想マシンボリュームのアプリケーション整合バックアップを作成する方法は、
使用可能なソフトウェア構成要素を識別する旨の要求をホストライタから受信する行為と、
前記使用可能なソフトウェア構成要素のうちの少なくとも１つを備える前記仮想マシンによってホストされる１つまたは複数のボリュームのスナップショットを作成する旨の要求を、前記ホストライタから受信する行為と、
前記スナップショットのために対応する１つまたは複数の仮想マシンアプリケーションを準備する旨の命令を、前記仮想マシン上の１つまたは複数のアプリケーションライタに送信する行為と、
前記仮想マシンによってホストされている前記１つまたは複数のボリュームのそれぞれについてのスナップショット操作が完了したことの信号を前記ホストライタに送信する行為と
を含むことを特徴とする方法。
【請求項１８】
前記少なくとも１つの使用可能なソフトウェア構成要素は、前記仮想マシンと共にインストールされたゲストリクエスタであり、前記ゲストリクエスタは、前記ホストライタから前記要求を受信し、前記１つまたは複数のアプリケーションライタに前記命令を送信することを特徴とする請求項１７に記載の方法。
【請求項１９】
前記１つまたは複数の仮想マシンボリュームのうちの少なくとも１つは、ネットワーク記憶媒体に存在し、前記方法は、
前記少なくとも１つのボリュームのスナップショットを、ネットワークを介して前記ネットワーク記憶媒体から前記ホストサーバにインポートする行為と、
前記ホストサーバにおける前記スナップショットを論理装置番号として表に上げる行為であって、前記ホストサーバは、前記論理装置番号に対応する前記スナップショットを整合性がとれたデータとしてバックアップすることができる行為と
をさらに含むことを特徴とする請求項１７に記載の方法。
【請求項２０】
１つまたは複数の仮想マシンがインストールされている、コンピュータ化された環境におけるホストサーバにおいて、実行されると、前記ホストサーバにおける１つまたは複数のプロセッサに、必ずしも前記１つまたは複数の仮想マシンの停止または再起動を必要とすることなく、前記１つまたは複数の仮想マシンのそれぞれのアプリケーション整合バックアップの作成の方法を実行させるコンピュータ実行可能命令が格納されているコンピュータプログラム製品であって、
ライタが関与するバックアッププロセスのための１つまたは複数の構成要素を有する少なくとも１つの仮想マシンを識別する行為と、
前記少なくとも１つの仮想マシンに、１つまたは複数の仮想マシンボリュームの対応する１つまたは複数の仮想マシンレベルのスナップショットを準備する旨の命令を送信する行為と、
前記少なくとも１つの仮想マシンでのスナップショット操作が完了したことを識別する行為と、
前記少なくとも１つの仮想マシンがインストールされている１つまたは複数のホストボリュームの１つまたは複数のホストレベルのスナップショットを作成する行為と、
前記１つまたは複数のホストボリュームの前記１つまたは複数のホストレベルのスナップショットから前記１つまたは複数の仮想マシンボリュームの前記１つまたは複数の仮想マシンレベルのスナップショットを取り出す行為と
を含むことを特徴とするコンピュータプログラム製品。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータ化されたシステムは、人気が高まってきたので、電子ファイル、並びにユーザおよびそれに関連するアプリケーションによって作成された他の通信を格納し、バックアップする必要がある。一般に、コンピュータシステムおよび関連の装置は、例えば仕事の場においてワード処理文書を作成したり、より高度なデータベースの目的で使用されるファイルを作成したりする一般的な場合において、様々な理由でファイルを作成する。さらに、こうした文書の多くは、価値のある作業生産物、または保護すべき機密情報を含み得る。したがって、組織が、定期的に電子ファイルをバックアップし、それによって必要なときに最初に作成されたファイルの信頼できる復元を作成することを望む様々な理由があることを理解されよう。
【０００２】
コンピュータ化されたシステムがより複雑なソフトウェアおよびハードウェア構成に頻繁に開発されるにつれて、これらの構成のバックアップに関連する厄介な問題も増加した。その最も簡単な形では、コンピュータのバックアップは、単に、コンピュータディスクまたはボリュームから情報をコピーし、その情報をバックアップ場所に渡すことを伴う。しかし、ネットワーク上の複数のサーバにおける大量のデータの組をバックアップするとき、特に、バックアッププロセス中にそのデータの組が頻繁に変わるとき、ディスクからデータを単にコピーすることは、かなり複雑になる。例えば、単なるデータのバックアップと共に、大きい組織のいくつかの問題は、データがすぐに回復可能でもあるように、素早い、信頼できる、比較的不断のやり方で、データを格納する必要を含み得る。その他の問題は、特に、各サーバが所与のバックアッププログラムに別のサーバより多くまたはより少なくアクセスできるようにする異なる機能を有し得るため、第一に、様々なサーバデータにどのようにアクセスするかを含む。
【０００３】
サーバデータのバックアップにおけるこうしたタイプの複雑さは、仮想化されたサーバ環境において特に難しい可能性がある。一般に、仮想サーバ環境は、１つまたは複数の「仮想マシン」をインストールすることができるホストサーバの使用を伴う。こうした仮想マシンは、ホストサーバのディスクの空き容量およびリソース（ホストメモリなど）の割り振られた部分にインストールされているオペレーティングシステムの一意のインスタンスを含み、したがって別個のマシン境界を含む。したがって、各仮想マシンは、一意のネットワーク識別子によって表すことができ、したがって、ネットワークにおいて、ホストサーバ自体とは分離し、異なるように見え得る。さらに、各仮想マシンは、仮想マシンに割り振られたホストスペース上に作られた追加のストレージパーティションを有し得る。さらに、ホストサーバとは異なるマシンに見えることに加えて、仮想マシンは、ホストサーバの物理ディスク上に存在するにもかかわらず、複数のドライブまたはボリュームをホストするようにも見え得る。したがって、仮想マシンは、組織においてハードウェアリソースをより効率的に分配するいくつかの重要な方法で使用することができることがわかる。
【０００４】
こうした利点にもかかわらず、仮想マシンがインストールされているホストボリュームを単にコピーし、そのデータを必要なだけ有用にする（例えば整合性がとれ、有効である）ことは簡単なことではない。この難しさの理由の１つは、仮想マシン自体の性質が原因であり、それによって、仮想マシンは、他の仮想マシンに対して、および対応するホストサーバに対して、別個の識別を有する（例えば別個のオペレーティングシステムを含む）と考えられる。例えば、ホストサーバは、単に、仮想マシン内のアプリケーションに、そのデータの「アプリケーション整合」スナップショットを作成するよう指示することができない。というのは、こうしたアプリケーションは、一般に、仮想マシンの制御下にあるからである。したがって、仮想マシンがインストールされているボリュームのスナップショットまたはバックアップコピーをホストが作成するとき、仮想マシン内のプロセスは、稼働し続けることができ、したがって、仮想マシンのコピーは、様々な時に有効であるデータおよびファイル状態を含み得る。すなわち、仮想マシンデータのコピーは、「アプリケーション整合」ではないことになる。こうした仮想マシンを復元する場合、仮に機能するとしても、適切に機能しない可能性がある。
【０００５】
一般に、「アプリケーション整合」バックアップとは、アプリケーションがバックアップ準備プロセスに参加し、何が物理ディスク上にあり、何がメモリ内にあるかに基づいてバックアップされるアプリケーションファイルを生成することを意味する。したがって、バックアップされるこれらのファイルまたはスナップショットは、アプリケーションの現在の状態との整合性がとれており、後でアプリケーションによって復元可能である。それに対して、「クラッシュ整合（crash-consistent）」データは、一般に、最初にデータを作成するために使用されるアプリケーションにかかわるメリットなしにバックアップされるデータを指す。その結果、クラッシュ整合バックアップ中の１次生産物は、何がメモリ内にあるか、およびアプリケーションの状態を考察に入れない、バックアッププロセス中に物理ディスクにあるものと同じ１組のデータである。これは、電力の損失中または再起動中など、全体的なシステムクラッシュ中にファイルデータがどのように存在し得るかに似ており、したがって、例えばアプリケーション整合である保証はない。特に、いくつかの複雑な動作環境の場合、特に、バックアップ後できるだけシームレスな遷移を確実にすることが重要である場合、整合（すなわちアプリケーションおよび／またはファイルシステム）−整合バックアップアプローチが好ましい。
【０００６】
ボリュームデータの整合バックアップを作成する様々な方法がある。残念ながら、仮想マシン（およびそれによって管理される対応するボリューム）のアプリケーション整合バックアップの作成を試行する従来のシステムは、一般に、仮想マシンを最初に一時停止したり、その電源を切ったりすることなく、アプリケーション整合バックアップを効率的に作成することはできない。一般に、これによって多少の望ましくないダウンタイムがもたらされ、ある特定の「ミッションクリティカル」ソフトウェアがあるいくつかの場合において、管理者にとって特別の難問をもたらす可能性がある。こうする理由の１つとして、対象のボリュームを、追加の書き込みがボリュームに行われていない間にコピーすることができるようにするためであり、アプリケーションを介して生成されたデータがすべて、同じ時において整合性がとれるようになる。当然、迅速で絶え間ない、効率的なデータアクセスが重要である環境において、バックアップコピーを行うために仮想マシンを一時停止したりその電源を切ったりすることは、あまり望ましくなく、組織のリソースの浪費をもたらす可能性がある。
【０００７】
組織が仮想マシンのアプリケーション整合バックアップを作成しようと試みる他の方法は、所与の仮想マシンの各インスタンス内の特定のバックアップエージェントをインストールすることによるものである。一般に、バックアップエージェントは、通常ホストサーバのメインボリュームについてホストレベルで行われ得るように、アプリケーション整合バックアップを作成するために、オペレーティングシステム内のアプリケーションライタと対話するように構成されている。残念ながら、単に仮想マシンごとに新しいバックアップエージェントをインストールすることは簡単なことではない。例えば、組織は、一般に、仮想マシンごとに新しい別個のバックアップエージェント（またはライセンス）を購入し、次いで、仮想マシン内に各バックアップエージェントをインストールする必要がある。このことが、何十、何百、または何千もの仮想マシンを稼働させている可能性のある大きい組織に、コストおよびリソースの出費（例えば、管理オーバーヘッドを含めて）に関して、かなり重要な難問を提示し得ることは理解されよう。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、対処することができる仮想マシンのバックアップに関連する難問がいくつかある。
【課題を解決するための手段】
【０００９】
本発明の実装形態は、１つまたは複数の仮想マシンの整合性がとれたホストレベルのバックアップを作成するよう構成されているシステム、方法、およびコンピュータプログラム製品を提供する。特に、本発明の実装形態は、必ずしも１つまたは複数の仮想マシンの操作への重大な割り込みを被ることなく、整合性がとれたやり方で、既存のバックアップリクエスタおよびライタを使用して、ホストサーバおよび対応する１つまたは複数の仮想マシンをバックアップする機能を提供する。例えば、一実装形態において、ホストサーバライタ（仮想サーバＶＳＳライタなど）は、各仮想マシンに、それ自体の仮想マシンレベルのボリュームデータの１つまたは複数のアプリケーション整合スナップショットを作成するよう指示する。また、ホストサーバ上のバックアップアプリケーションは、１つまたは複数の仮想マシン（その仮想ハードディスクファイルなど）がインストールされているホストレベルのボリュームのスナップショットを作成する。次いでホストサーバは、以前作成された仮想マシンレベルのスナップショットを、ホストレベルのスナップショット内から取り出し、バックアッププロセスを終了することができる。
【００１０】
例えば、必ずしも１つまたは複数の仮想マシンを停止したり再起動したりする必要なく、仮想マシンボリュームデータの整合バックアップを作成するホストサーバの立場から見た方法は、ライタが関与するバックアッププロセスのための１つまたは複数の構成要素を有する少なくとも１つの仮想マシンを識別することを伴い得る。さらに、この方法は、仮想マシンレベルのアプリケーション整合スナップショットを準備する旨の命令を１つまたは複数の仮想マシンのそれぞれに送信することを伴い得る。また、この方法は、少なくとも１つの仮想マシンでのスナップショット操作が完了したことを識別することを伴い得る。さらに、この方法は、識別された１つまたは複数の仮想マシンがインストールされている１つまたは複数のホストボリュームの１つまたは複数のホストレベルのスナップショットを作成することを伴う。この方法は、さらに、少なくとも１つの仮想マシンによって作成された仮想マシンボリュームのアプリケーション整合スナップショットを取り出すことを伴い得る。
【００１１】
それに対して、ホストサーバのホストライタからの命令に応答して、１つまたは複数の仮想マシンボリュームの整合バックアップを作成する仮想マシンの立場から見た方法は、使用可能なソフトウェア構成要素を識別する旨の要求をホストライタから受信することを伴い得る。また、この方法は、使用可能なソフトウェア構成要素のうちの少なくとも１つを備える仮想マシンによってホストされる１つまたは複数のボリュームのスナップショットを取得する旨の要求をホストライタから受信することも伴う。さらに、この方法は、バックアップのために対応する１つまたは複数の仮想マシンアプリケーションを準備する旨の命令を、仮想マシン上の１つまたは複数のアプリケーションライタに送信することを伴い得る。さらに、この方法は、仮想マシン内でホストされている１つまたは複数のボリュームのそれぞれについてのスナップショットの準備が完了したことの信号をホストライタに送信することを伴う。
【００１２】
この概要は、詳細な説明において下記でさらに説明されるいくつかの概念を簡単な形で紹介するために提供される。本概要は、特許請求された主題の鍵となる特徴または重要な特徴を識別するためのものではなく、特許請求された主題の範囲の画定の手助けとして使用されるためのものでもない。
【００１３】
本発明の他の特徴および利点を以下の説明に記載し、一部はその説明から明らかになり、あるいは本発明の実施から学びとることができよう。本発明の特徴および利点は、特に添付の特許請求の範囲で指摘した手段および組み合わせによって実現し、取得することができる。本発明のこれらおよび他の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかになり、または以下に記載するように本発明を実施することによって学びとることができる。
【００１４】
本発明の上記および他の利点および特徴を取得できる方法を説明するために、上記で簡単に説明した本発明について、添付の図面に示したその特定の実施形態を参照することにより、さらに特定の説明を行う。これらの図面は、本発明の一般の実施形態のみを示しており、したがってその範囲を限定するものとみなされるべきではないことを理解し、本発明を、添付の図面を使用して、さらに詳しく詳細に記載し、説明する。
【発明を実施するための最良の形態】
【００１５】
本発明の実装形態は、１つまたは複数の仮想マシンの整合性がとれたホストレベルのバックアップを作成するよう構成されているシステム、方法、およびコンピュータプログラム製品にまで及ぶ。特に、本発明の実装形態は、必ずしも１つまたは複数の仮想マシンの操作への重大な割り込みを被ることなく、整合性がとれたやり方で、既存のバックアップリクエスタおよびライタを使用して、ホストサーバおよび対応する１つまたは複数の仮想マシンをバックアップする機能を提供する。例えば、一実装形態において、ホストサーバライタ（仮想サーバＶＳＳライタなど）は、各仮想マシンに、それ自体の仮想マシンレベルのボリュームデータの１つまたは複数のアプリケーション整合スナップショットを作成するよう指示する。また、ホストサーバ上のバックアップアプリケーションは、１つまたは複数の仮想マシン（その仮想ハードディスクファイルなど）がインストールされているホストレベルのボリュームのスナップショットを作成する。次いでホストサーバは、以前作成された仮想マシンレベルのスナップショットを、ホストレベルのスナップショット内から取り出し、バックアッププロセスを終了することができる。
【００１６】
この明細書および特許請求の範囲を読んだ後、（例えば仮想サーバライタを介して）ホストサーバは、整合（例えばアプリケーションおよび／またはファイルシステム）−整合バックアッププロセスのために構成されたものと容易に識別することができない場合でさえ、それにもかかわらず仮想マシンの整合バックアップの作成を可能にすることもできることを理解されよう。例えば、仮想マシンは、電源が切断され、そうでなければ稼働していないかもしれず、または仮想マシンは、適切なソフトウェアまたはハードウェア構成要素と共にインストールされないかもしれない。それにもかかわらず、ホストサーバは、状態を維持し、次いで仮想マシンを少なくとも瞬間的に一時停止または停止する方法で、ホストボリュームおよび対応する仮想マシンをコピーするために、異なる構成要素を使用することができる。次いで、ホストサーバライタによって、仮想マシンは、ホストボリュームのスナップショットが作られた後、再開することができる。
【００１７】
本明細書および特許請求の範囲を読んだ後、本発明の実装形態は、ダウンタイムを最低限に抑えるように、かつ新しいバックアップエージェントの購入およびインストールの必要なしに、仮想マシンの整合バックアップを提供することができることを理解されよう。したがって、仮想マシンソリューションを実装する組織は、組織のリソースの支出を最低限に抑える方法で、ネットワークシステムにおけるより良いホストサーバ、仮想マシン、およびデータ可用性を提供することができる。
【００１８】
したがって、図１Ａは、ボリューム１１０および１１５を管理するよう構成されているホストサーバ例１００を示す。ボリューム１１０および１１５には、それぞれ仮想マシン１２０および１３０がインストールされている。説明として、各仮想マシン１２０、１３０は、１つのレベルの別個のコンピュータ化されたシステムとして考えることができるが、ホスト１００のレベルから見たとき、各仮想マシン１２０、１３０は、「ファイル」の集まり（例えば、仮想マシン構成、すなわち「ＶＭＣ」ファイル、および１つまたは複数の仮想ハードディスク−「ＶＨＤ」−ファイル）として考えることもできる。いずれにしても図１Ａは、ボリューム当たり１つの仮想マシンを示すが、これは必須ではなく、所与のホストサーバ１００ボリューム上にインストールされた仮想マシンがいくつかあってもよい。同様に、各仮想マシンは、１つまたは複数のホストサーバ上の複数のボリュームにまたがることもできる。
【００１９】
さらに、各仮想マシンは、事実上、所与の仮想マシンがインストールされるボリュームの割り振り内の追加のボリュームの割り振りである追加のドライブを管理することができる。例えば、図１Ａは、仮想マシン１２０が、それにもかかわらずホストボリューム１００の一部である１つまたは複数の仮想物理ディスクも管理することを示す。一般に、各仮想物理ディスクは、仮想ハードディスクファイル（すなわちＶＨＤ１２３、１２７など）などのファイルによって表すこともできる。特に、ＶＨＤファイルは、それ自体のグローバル一意識別子（「ＧＵＩＤ」）をそれぞれ有する、追加の１つまたは複数のボリューム（図示せず）をさらに含み得る仮想マシン内の物理的なディスクとして提示される。したがって、ＶＨＤファイル１２３（簡単にするために、この例においては、１つのボリュームのみを含む）は、したがってドライブ「ｍ：￥」または所与のオペレーティングシステムに適した他の何らかの一意の識別子として表示されるボリュームを有し、ＶＨＤ１２７（この場合も１つのボリュームのみを含む）は、ネットワーク上にドライブ「ｎ：￥」などと表示されるボリュームを有し得る。
【００２０】
さらに、図１Ａは、ホスト１００が、「ホストリクエスタ」または「ホストレベルリクエスタ」と呼ぶこともできるバックアップアプリケーション１０５を含むことを示している。一般に、バックアップアプリケーション１０５は、バックアップイベントをホスト１００に向けるよう構成されている一連のコンピュータ実行可能命令を含む。一実装形態では、例えばＭＩＲＯＳＯＦＴ動作環境などにおいて、バックアップアプリケーション１０５は、ボリュームシャドウコピーサービス（「ＶＳＳ」）リクエスタを含む。図１Ａは、次いでバックアップアプリケーション１０５が、「ホストライタ」、「ホストレベルライタ」、または「ホストレベル仮想サーバＶＳＳライタ」と呼ぶこともできるホストライタ１２５を介してそのバックアップ命令を向けるよう構成することができることも示す。
【００２１】
一般に、ホストライタ１２５は、バックアップアプリケーション１０５から受信されたバックアップ命令を実装するよう構成されている一連のコンピュータ実行可能命令を含む。一実装形態では、例えばＭＩＣＲＯＳＯＦＴ環境などにおいて、ホストライタ１２５は、ＭＩＣＲＯＳＯＦＴ  ＶＩＲＴＵＡＬ  ＳＥＲＶＥＲと共に使用されるＶＳＳライタなどのＶＳＳ  Ｗｒｉｔｅｒを含み得る。説明として、本明細書でのＭＩＣＲＯＳＯＦＴ構成要素への言及は、例にすぎない。特に、本明細書および特許請求の範囲を読んだ後、本明細書に記載されている構成要素、モジュール、システム、および機能を、他の動作環境において使用される様々な構成要素、モジュール、および機能に適用することができることを理解されよう。
【００２２】
仮想マシンの整合バックアップを行うために、ホスト１００は、一般に、ホストされている仮想マシンのどれが、最初に整合バックアップを可能にするよう構成されている適切な構成要素を報告することができるかを決定する必要がある。前置きとして、本明細書では、「アプリケーション整合」バックアップまたはスナップショットプロセスについて引き続き言及する。しかし、アプリケーション整合バックアッププロセスは、本発明の実装形態による「整合性がとれた」バックアップ操作の一例にすぎないことは理解されよう。整合バックアッププロセスの別の例には、ファイルシステムおよび／またはクラッシュ整合バックアッププロセスなどがある。
【００２３】
いずれにしても、アプリケーション整合バックアップに関して、例えば、仮想マシンの中には、アプリケーション整合バックアップを行うのに適切なライタおよびリクエスタと共にインストールされ得るものもあれば、適切なライタおよびリクエスタなしにインストールされ得るものもある。こうした適切な構成要素なしに稼働している仮想マシンの場合、ホスト１００は、こうした仮想マシンを依然としてバックアップすることができるが、必ずしも、適切な構成要素と共に稼働するものと同じように、バックアップしない場合もある。特に、ホスト１００を、ダウンタイムや割り込みなしに（または事実上なしに）適切な構成要素を報告する仮想マシンをバックアップするよう構成することができ、あるいは、少なくとも多少のダウンタイムまたは割り込みを伴って適切な構成要素を報告しない（すなわち行方不明の、または動作していない）仮想マシンをバックアップするよう構成することができる。
【００２４】
したがって、図１Ａは、バックアップアプリケーション１０５（すなわち「ホストリクエスタ」）が、少なくとも一部分、要求１０３をホストライタ１２５に送信することによってバックアップサービスを開始することを示している。この場合、要求１０３は、ホストライタ１２５に、どの仮想マシンを「ダウンタイムなし」にバックアップすることができるかを識別するよう指示する。例えば、要求１０３は、ホストライタ１２５に、内部アプリケーション整合バックアップを行うのに、仮想マシン１２０、１３０などのどれが適切なゲストライタおよび／またはリクエスタを含むかを確認するよう指示する。例えばＭＩＣＲＯＳＯＦＴ環境などの一実装形態において、こうした構成要素は、ＭＩＣＲＯＳＯＦＴ  ＶＩＲＴＵＡＬ  ＳＥＲＶＥＲインフラストラクチャ内で使用される場合、「ＶＭ  Ａｄｄｉｔｉｏｎｓ」との互換性があるものを含むことができる。
【００２５】
これらおよび他の同様に構成された仮想マシン構成要素は、仮想マシン内、例えばホストレベル仮想サーバＶＳＳライタなどと対話する（およびそれからの命令に応答する）よう構成されている。また、図１Ａは、要求１０３を受信すると、ホストライタ１２５が、メッセージ１１１（例えばプライベートアプリケーションプログラムインターフェイス−「プライベートＡＰＩ」とすることができる）を介して仮想マシン１２０と通信することができ、仮想マシン１２０が「バージョンｘ」に従った構成要素を報告することを識別することも示している。例えば、図１Ａは、仮想マシン１２０が「ゲストリクエスタ１４０」を含むことを示している。
【００２６】
また、図１Ａは、ホストライタ１２５がさらに、（例えばメッセージ１１１を介して）仮想マシン１３０と通信し、仮想マシン１３０が「バージョンｙ」に従った構成要素を報告することをホストライタ１２５が識別することも示す。この特定の場合、「バージョンｙ」は、仮想マシン１３０が整合バックアッププロセスに適切な構成要素を有していないことを示す。仮想マシン（１２０、１３０など）とのその通信に応答して、ホストライタ１２５は、その収集された応答の１つまたは複数のメッセージをバックアップアプリケーションに送り返すことができる。例えば、ライタは、仮想マシン１２０がバージョン「ｘ」のものであり、適切な構成要素を報告することを示し、さらに、仮想マシン１３０がバージョン「ｙ」のものであるが、適切な構成要素を報告しないことを示すメッセージ１１３を送信する。
【００２７】
図１Ａは、受信すると、バックアップアプリケーション１０５が、メッセージ１１３を取得し、バックアップすべき仮想マシンおよびバックアップすべきでない仮想マシンについての決定を行うことを示している。例えば、図１Ａは、決定モジュール１０７がメッセージ１１３の情報を構文解析し、仮想マシン１２０を「ダウンタイムなしにバックアップすべきＶＭ」のカテゴリに入れ、仮想マシン１３０を「多少のダウンタイムを伴ってバックアップすべきＶＭ」（またはバックアップすべきでないＶＭ）のカテゴリに入れることを示している。別の実装形態では、ホストライタ１２５は、単に、どれをバックアップし、どれをバックアップすべきでない（または多少のダウンタイムを伴ってバックアップする）かについての決定を行い、次いで、こうしたカテゴリ化をバックアップアプリケーション１０５に報告する。いずれにしても、示されたカテゴリ化は、必ずしも、仮想マシン１３０がそれ自体バックアップされないことを意味するわけではない。ほとんどの場合、これは単に、適切に整合性がとれた方法で仮想マシン１２０をバックアップすることができないことを意味し、仮想マシン１３０は、多少のダウンタイムを伴って整合性がとれたやり方でバックアップされるように構成され得るだけであることを意味する。各仮想マシンをカテゴリ化した後、バックアップアプリケーション１０５は、バックアッププロセスを実施し始める。
【００２８】
例えば、図１Ｂに示されているように、バックアップアプリケーション１０５は、命令１１７ａをホストライタ１２５に送信する。次いで命令１１７ａは、ホストライタ１２５に、少なくとも仮想マシン１２０に関して、アプリケーション整合バックアッププロセスを開始するよう伝える。次いで、ホストライタ１２５は、「ライタが関与する」バックアッププロセスを開始するよう仮想マシンに伝えるそれ自体の通信１１７ｂを準備する。次いでホストライタ１２５は、バックアップアプリケーション１０５によって示された各仮想マシン（１２０など）にメッセージ１１７ｂを送信し、次いで、示された各仮想マシンは、その対応するゲスト内リクエスタを介してメッセージ１１７ｂを受信する。
【００２９】
例えば、図１Ｂは、仮想マシン１２０のゲストリクエスタ１４０がメッセージ１１７ｂを受信することを示す。一実装形態において、ホストライタ１２５は、１つまたは複数のプライベートＡＰＩを介して、遠隔手続き呼び出し（「ＲＰＣ」）を介してなど、ゲストリクエスタ１４０と通信する（例えばメッセージ１１１、１１７ｂなど）ことができるが、これは、すべての実装形態において必須ではない。別の実施形態において、例えばホストライタ１２５およびゲストリクエスタ１４０が別個のネットワーク場所（それどころか異なるドメイン）に配置されている場合、ホストライタ１２５は、他の適切な通信インターフェイスおよびまたは構成要素と通信することができる。特に、広域ネットワークを介してリモート位置から仮想マシンをバックアップする必要があるときでさえ、本発明の実装形態を実施することができることを理解されよう。
【００３０】
いずれにしても、トリガされると、ゲストリクエスタ１４０は、こうしてバックアップアプリケーション１０５の最初の命令に従ってそのボリュームのバックアッププロセスを開始する。例えば、図１Ｂに示されるように、ゲストリクエスタ１４０は、仮想マシン内部メッセージ１１７ｃを、仮想マシン１２０によって管理されている任意のボリュームにインストールされているアプリケーションに送信する。メッセージ１１７ｃは、その物理ディスク（すなわちＶＨＤファイル１２３、１２７によって表される）に含まれるボリューム内で管理される各ボリュームのアプリケーション整合バックアッププロセスを準備する旨のアプリケーションライタ（図示していないＶＳＳライタなど）ごとの命令を含み得る。一般に、各アプリケーションライタは、仮想マシン内のアプリケーションおよびサービスに含めることができ、アプリケーションデータのアプリケーション整合バックアップの提供を助けることができるコンピュータ実行可能命令を含み得る。
【００３１】
要求１１７ｃの受信時に稼働しているアプリケーションでは、アプリケーションライタは、例えば、そのデータストアを準備し、スナップショットが作成されている間にボリューム（１２３、１２７など）に書き込みが行われないことを確実にすることによって応答し得る。また、ディスク上のデータを整合性がとれるようにするために、アプリケーションライタは、そのバッファをディスクにフラッシュする、またはメモリ内のデータをディスクに書き出すことができる。さらに、アプリケーションライタは、含めるべきまたは排除すべきアプリケーション名、アイコン、ファイル、およびファイルを復元する戦略についての情報を提供し得る。稼働していないアプリケーションでは、対応するアプリケーションライタは、メッセージ１１７ｃに応答せず、したがってゲストリクエスタ１４０は、ボリューム上のアプリケーションライタによって処理されるすべてのデータは整合性がとれており、データベースが閉じられ、バックアップを行うための追加の労力は必要ないと仮定し得る。
【００３２】
一般に、本発明の１つまたは複数の実装形態によるアプリケーションライタを、１つまたは複数の構成要素と関連付けることができる。次いで、各構成要素は、全体としてコピーされるべきファイル群（データベースおよび１組のログファイル）を含み得る。したがって、各アプリケーションライタは、各構成要素のデータおよびその構成要素の対応する各ファイルを適切なバックアップサービス（例えばゲストリクエスタ１４０などの仮想マシンリクエスタなど）に提供する必要がある。各アプリケーションライタは、さらに、構成要素ごと（およびしたがって構成要素ファイルごと）にデータの復元についての情報を提供することができる。一実装形態において、例えば、ホストライタ１２５は、管理されている仮想マシン（１２０、１３０など）についての永続的な情報を保持するために使用されるファイルのリストを提供することができる。ホストライタ１２５は、例えば、仮想マシンごとに、特定の仮想マシン構成ファイルのパス、仮想ハードディスクファイルの任意のパスなどを報告し得る。
【００３３】
いずれにしても、命令１１７ｃに応答して、図１Ｂは、ボリューム１２３および１２７内の対応するアプリケーションライタがそのボリュームデータのアプリケーション整合状態をそこで生成することを示す。対応する物理的ディスクファイル（例えばＶＨＤ１２３、１２７）内のボリュームについて関連のアプリケーションによって報告されたボリュームデータは、ボリュームスナップショットに含まれる。例えば、図１Ｂは、ＶＨＤ１２３内のボリュームデータ１４５が「データのクリーンコピー（clean copy）」１５５としてコピーされ、ＶＨＤ１２７内のデータ１５０が「データのクリーンコピー」１６０としてコピーされることを示す。一般に、こうしたデータの「クリーン」コピー１５５、１６０は、ゲストボリュームスナップショット内のデータの整合性がとれたコピー（例えば、ボリュームシャドウコピー）であり、一般に、スナップショット自体と別のコピーを構成しない。特に、「クリーンコピー」１５５、１６０は、本質的に、それぞれ仮想ハードディスクファイル（ＶＨＤ）１２３および１２７（図１Ａ）に含まれるスナップショット内のボリュームデータのアプリケーション整合コピーである。
【００３４】
適切に構成された各仮想マシン（１２０など）が、その物理ディスクボリュームのそれ自体の内部のアプリケーション整合（「またはクリーン」）コピー（例えばデータ１４５のコピー１５５など）を行うと、ホストライタ１２５によって、バックアップアプリケーション１０５は、適切に構成された仮想マシン（１２０など）がインストールされているホストボリューム（１１０など）のスナップショットを作成し始める。しかし、これらのホストレベルのスナップショット内の仮想マシンボリュームデータは、必ずしもアプリケーション整合ではない（すなわち「ダーティ」または「クラッシュ整合」）。
【００３５】
一般に、「ダーティ」コピー（dirty copy）は、少なくとも一部分仮想マシン内でアプリケーションライタが関与するスナップショットプロセスを呼び出さないため、仮想マシンボリュームデータに関してアプリケーション整合として保証することができないものである。例えば、ホスト１００は、ホストレベルアプリケーションライタ（例えばホストライタ１２５）を使用して、ライタが関与するプロセスでボリューム１１０のデータをバックアップすることができるが、上述したように、これらのホストレベルのアプリケーションライタは、ホスト側から見える通りに、仮想マシンファイル全体をコピーするだけである。その結果、ホストレベルのボリュームデータのアプリケーション整合コピーを作成するためにホストレベルのアプリケーションライタを使用する場合でさえ、基礎を成す各仮想マシンは、ボリューム１１０のホストレベルのバックアップを行う時点で様々なデータ変更を被る可能性がある。
【００３６】
例えば、図１Ｃは、ホストライタ１２５がメッセージ１５７をバックアップアプリケーション１０５に送信することを示しており、メッセージ１５７は、仮想マシン（１２０など）のバックアップが完了したことを示す。したがって、バックアップアプリケーション１０５は、ホストボリューム１１０（および、該当する場合、ボリューム１１５など）のホストレベルのスナップショットを作成し始めることができる。それに応答して、図１Ｃは、この例において、バックアップアプリケーション１０５がボリューム１１０、１１５などでバックアッププロセスを開始する（信号１３５など）ことを示す。一実装形態において、例えば、ホストリクエスタ１０５は、ライタが関与するバックアッププロセスを開始し、ホストレベルＶＳＳ構成要素（図示せず）を介してホストレベルボリューム１１０、１１５上のデータのアプリケーション整合スナップショット（すなわち、仮想マシンファイルを除いたアプリケーション整合）を生成する。
【００３７】
例えば、図１Ｃは、ホスト１００がホストボリューム１１０、１１５のスナップショット１６７、１７３を作成することを示す。スナップショット１６７、１７３は、仮想マシンＶＨＤファイルのコピーも含む（すなわち、ボリューム１１０内のＶＨＤファイル１２３など）。ホストレベルのスナップショット中、仮想マシン１２０、１３０は、それらの対応するライタをスナップショットプロセスに関与させていないため、新しいホストレベルスナップショットは、アプリケーション整合ではない仮想マシンレベルのボリュームのＶＨＤボリュームデータ（１５６、１６１など）を含む。それにもかかわらず、関連の仮想マシンは、そのボリュームのアプリケーション整合コピーをすでに作成しているため、ホストレベルのスナップショット１６７内のＶＨＤデータ１５６は、以前作成された（すなわち仮想マシンで作成された）アプリケーション整合スナップショット１５５を含む。同様に、ホストレベルのスナップショット１６７内のＶＨＤデータ１６１は、以前作成された（すなわち仮想マシンで作成された）アプリケーション整合スナップショット１６０を含む。上述したように、ＶＨＤファイル１２３、１２７のホストレベルのスナップショット１６７（および１７３）内のＶＨＤデータ１５６、１６１は、一般に、概してクラッシュ整合である。
【００３８】
ホストレベルボリュームのホストレベルのスナップショット１６７、１７３を作成すると、ホスト１００は、ホストレベルのボリュームスナップショット１６７、１７３内から仮想マシンレベルスナップショットを取り出す必要がある。一実装形態において、これは、ホストレベルのＶＨＤスナップショットデータ１５６、１６１を対応する仮想マシンレベルのスナップショットデータ１５５、１６０に戻すことを伴う。そうするために、ホストライタ１２５は、最初に、基礎を成すデータを提示するために、任意の数の適切な構成要素を使用して、これらのホストレベルおよび仮想マシンレベルのスナップショットをファイルシステム内にマウントすることができる。例えば、バックアップアプリケーション１０５は、ホストライタ１２５を、ホストスナップショット１６７、１７３など（および基礎を成すＶＨＤファイルスナップショット）を書き込み可能（読み取り専用ではなく）にするよう構成することができる。さらに、ホストライタ１２５は、ホストレベルのスナップショットについての装置ＩＤを取得し、これらを使用して、カプセル化されたＶＨＤファイル（１２３、１２７など）に対応する異なる「装置ＩＤ」を識別することができる。
【００３９】
書き込み可能なホストレベルのスナップショット１６７、１７３内からの仮想マシンＶＨＤファイルを提示すると、次いでホストサーバ１００は、各ＶＨＤファイルがホストレベルの物理ディスクとして表示されるように、ＶＨＤファイルに対応する各装置ＩＤをマウントすることができる。特に、ホストライタ１２５は、ＶＨＤファイル１２３および１２７内の各ボリュームを識別するために、画像マウント構成要素（image mounter component）と共に、ホストスナップショット内のＶＨＤファイル１２３および１２７の装置ＩＤを使用することができる。例えば、図１Ｃは、ホストサーバは（例えばホストライタ１２５を介して）、ＶＨＤファイル１２３およびＶＨＤファイル１２７の装置ＩＤを引数として含めて、装置ＩＤをマウントする旨の命令１７５を送信することを示す。例えば特にＭＩＣＲＯＳＯＦＴ動作環境に関する一実施形態において、ホスト１００は、「ＶＨＤＩｍａｇｅＭｏｕｎｔｅｒ」構成要素を使用して、マウント命令１７５を受信し、実行することができる。
【００４０】
ホストスナップショット１６７内からのＶＨＤファイル１２３、１２７をマウントすると、次いで、それらのＶＨＤファイル内のオペレーティングシステムを提供することができ、次いで、仮想マシンレベルのスナップショット１５５、１６０をホストサーバ１００上に提示することができる。特に、この場合、ボリューム１１０のホストスナップショット１６７内からのＶＨＤファイル１２３、１２７をマウントすることによって、ホストスナップショット１６７の異なるＶＨＤデータ１５６、１６１内の仮想マシンレベルのスナップショット１５５、１６０が提示される。したがって、図１Ｃは、ホスト１００が、ホストスナップショット１６７内のＶＨＤファイル１２３をドライブ「ｘ：￥」としてマウントし、それによりＶＨＤデータ１５６が提示され、さらに以前作成された仮想マシンレベルのスナップショットデータ１５５が提示されること、さらに、ホストスナップショット１６７内からのＶＨＤファイル１２７をドライブ「ｙ：￥」としてマウントし、ホストスナップショット１６７が、以前作成された仮想マシンレベルのスナップショットデータ１６０がその中で提示されるＶＨＤデータ１６１も含んでいることを示す。
【００４１】
バックアップアプリケーション１０５がホストスナップショット１６７内からのＶＨＤファイル１２３、１２７をマウントしたので、バックアップアプリケーション１０５は、ホストレベルのスナップショット１６７のＶＨＤデータ１５６、１６１を、仮想マシンレベルのボリュームスナップショットのＶＨＤデータ１５５、１６０に戻すことができる。図１Ｄに示されるように、例えば、バックアップアプリケーション１０５は、構成要素インターフェイス１８５（ＶＳＳ構成要素インターフェイスなど）を使用して、ドライブ「ｘ」および「ｙ」内のダーティなおよびクリーンなスナップショットデータを戻す。一実装形態において、バックアップアプリケーション１０５は、インターフェイス１８５を使用して、単に、ＶＨＤデータ１５６、１６１を削除し、またはそのデータに上書きし、それを対応するクリーンなＶＨＤデータ１５５、１６０と取り替える。
【００４２】
この取り替えを行うと、バックアップアプリケーション１０５は、ＶＨＤファイル１２３、１２７のスナップショットデータを訂正または調整する（すなわち戻す、取り替える）だけではなく、ホストレベルスナップショット１６７全体を変更しており、したがって、その基礎を成す仮想マシンレベルのボリュームデータは、今や完全に整合性がとれている。すなわち、ホストレベルのスナップショット内のすべての仮想マシンデータも、今やアプリケーション整合と考えることができる。さらに、仮想マシンレベルのスナップショット１５５、１６０の制御は、ホスト１００のバックアッププロセスの制御に置かれている。したがって、ホスト１００がそのボリュームスナップショットのそれ自体のアプリケーション整合バックアップを行うとき、このホストレベルのバックアップは、今や、適切に構成された各仮想マシンのアプリケーション整合バックアップを含み得る。
【００４３】
上記で識別された構成要素およびプロセスは、主に、識別された仮想マシン（１２０など）が、整合バックアップを作成するのに適切なソフトウェア構成要素を備える構成を示す応答を提供する場合について記載されている。具体的には、こうした仮想マシン（１２０など）を、わずかのダウンタイムを伴って、またはダウンタイムなしでバックアップすることができる。しかし、上述したように、所与の仮想マシンが、稼働していないために応答を提供しない、または整合バックアップを行うように構成されていないことを示す応答を提供する代替の例があり得る。例えば、仮想マシン１３０は、適切なアプリケーションライタ（正しいバージョンのシャドウコピーサービスなど）、適切なゲストリクエスタ（１４０など）など、いくつかの必要なソフトウェア構成要素を含まないオペレーティングシステムを稼働させているかもしれない。こうした代替の例では、本発明の実装形態は、後でデータが確実に整合性がとれることを必要とする場合、少なくとも多少の後のダウンタイムを必要とするかどうかわからない少なくとも仮想マシン（１３０など）のクラッシュ整合バックアップを依然として提供することができる。
【００４４】
例えば、ホストライタ１２５は、通信インターフェイス（図示せず）を呼び出し、インターフェイスに、仮想マシン１３０（および／または他の同じように限られた仮想マシン）の状態のすべてを保存するよう命令することができる。例えば、特にＭＩＣＲＯＳＯＦＴ動作環境に関する一実装形態において、ホストライタ１２５は、仮想サーバ通信インターフェイス（すなわち、図示していない「ＶＳ  ＣＯＭ  ＡＰＩ」）を呼び出すことができる。次いで、通信インターフェイスは、仮想マシン１３０の状態を保存し終えたとき、ホストライタ１２５に報告することができる。特に、通信インターフェイスは、これをホストライタ１２５に報告することができ、次いで、バックアップアプリケーション１０５は、仮想マシン１３０が存在する対応するホストボリューム（すなわちボリューム１１５）のスナップショットを作成することができる。
【００４５】
仮想マシン１３０の状態を保存することに加えて、通信インターフェイスは、任意の適した仮想および／またはプライベートＡＰＩを使用することによって、仮想マシン操作を瞬間的に一時停止または停止することもできる。通信インターフェイスが、例えば仮想マシン１３０の状態への任意の変更を識別すると、通信インターフェイスは、この情報を報告することができる。こうした報告は、次いで、バックアップ操作を行わず、より適切なときに再開させることができる。特に、バックアップアプリケーション１０５は、バックアップアプリケーション１０５が所望の整合性の状態でボリューム１１５のスナップショットの作成を終了するまで、これらのステップを引き続き繰り返すことができる。
【００４６】
バックアップ操作が完了すると、ホスト１００は、こうしてボリューム１１０およびその対応する仮想マシン（１２０など）のアプリケーション整合コピーを作成しており、さらに、ボリューム１１５およびその対応する仮想マシン（１３０など）の整合性がとれた（すなわち少なくともクラッシュ整合）コピーを作成している。ボリューム１１５のこのコピーは、クラッシュ整合だけではなく、ＶＨＤファイルの状態に関して「ＶＨＤ整合」とすることもできることを理解されよう。特に、仮想マシンの状態を保存することは、後のある時点に、必要に応じて、正常に復元することができる有効で整合性がとれたＶＨＤファイルを提供することができる。
【００４７】
さらに別の実装形態では、本発明による構成要素は、上述した整合性がとれたスナップショット機能の多くを提供するためのハードウェアプロバイダの使用をさらに含み得る。「ＶＳＳハードウェアプロバイダ」（網／ミラープロバイダ（plex/mirror provider）など）など、ハードウェアプロバイダを使用すると、ボリューム１１０、１１５のストレージは、別個の場所で「ミラーリング」されている「ディスクアレイ」上に存在することができる。ホストレベルのスナップショット（すなわち仮想マシンについて非アプリケーション整合）を作成すべきときであるとき、ハードウェアプロバイダは、ボリュームとその対応するミラーとの間のミラーを単に「壊す」ことができる。これによって、別個のスタンドアロンディスク装置としてホストレベルのスナップショットを提示することができる。次いでバックアップアプリケーション１０５は、任意の数の仮想ディスクサービス（「ＶＤＳ」）および／またはボリュームシャドウコピーサービス（「ＶＳＳ」）ＡＰＩを呼び出して、ボリュームのミラーを書き込み可能にし、ボリュームのミラーを操作し、次いで基礎を成すクリーンな（すなわちアプリケーション整合）スナップショットデータ１５５、１６０を提示し、マウントすることができる。この種のハードウェアソリューションは、いくつかの記憶媒体を介して配布される仮想マシンのアプリケーション整合バックアップを作成するために、ストレージエリアネットワーク（「ＳＡＮ」）環境においてなど、リモートに接続されたストレージボリュームと共に使用することもできる。
【００４８】
これらの方針に従えば、本発明の実装形態は、例えば、特定の仮想マシン（１２０など）内のハードウェア可搬型のアプリケーション整合スナップショットを作成するために、ゲストリクエスタ１４０の使用をさらに含み得る。例えば、ＳＡＮボリューム（例えば、適切に構成されたＶＳＳ構成要素など）のスナップショットのために構成された例えば仮想マシン１２０内の構成要素は、ゲスト（仮想マシン１２０、１３０など）に添付されたリモートボリュームのライタが関与するスナップショット（図示せず）を作成することができ、この場合、したがってホストサーバ１００ＶＨＤファイルはない。次いで、ゲストリクエスタ１４０は、スナップショットをインポートし、ホストサーバ上の別個の論理装置番号（「ＬＵＮ」）としてスナップショットを表に上げる。次いで、ホストライタ１２５は、仮想マシン１２０のバックアップの一部として、ＬＵＮをバックアップするようバックアップアプリケーション１０５（すなわちホストリクエスタ）に要求することができる。したがって、バックアップアプリケーション１０５は、ＬＵＮ全体（すなわち、ゲストまたは仮想マシンレベルのスナップショット）をバックアップすることができ、したがって、例えば、仮想マシンボリュームのホストレベルのスナップショットによる戻りは必要ない。
【００４９】
したがって、図１Ａ〜１Ｄ、および対応する本文は、整合性がとれた方法で、仮想マシンのホストレベルの効率的なバックアップを提供するためのいくつかのシステム、構成要素、およびインターフェイスを提供している。上記に加えて、本発明の実装形態は、特定の結果を達成するための１つまたは複数の行為を含む方法の点から説明することができる。例えば、図２は、仮想マシンのホストレベルのアプリケーション整合バックアップを作成するためのホスト１００および仮想マシン１２０の立場から見たフロー図を示している。以下、図２の方法および対応する行為について、図１Ａ〜１Ｄのシステムおよび構成要素を参照して説明する。
【００５０】
例えば、図２は、必ずしも１つまたは複数の仮想マシンの停止または一時停止を必要とせず、１つまたは複数の仮想マシンのそれぞれのアプリケーション整合バックアップを作成するホスト１００の立場から見た方法が、ホスト上での１つまたは複数の仮想マシンを識別する行為２１０を含むことを示す。行為２１０は、ライタが関与するバックアッププロセスのための１つまたは複数の構成要素を有する少なくとも１つの仮想マシンを識別することを含む。例えば、バックアップアプリケーション１０５（すなわち「ホストリクエスタ」１０５）は、（メッセージ１０３を介して）ホストライタ１２５に、どの仮想マシンがホスト１００に存在しているか、およびこれらの仮想マシンのうちのどれを、アプリケーション整合方法（すなわち、わずかのダウンタイムを伴って、またはダウンタイムなしで）でバックアップすることができるかを尋ねる。
【００５１】
ＶＳＳライタなどホストライタ１２５は、対応するバージョン要求１１１を各仮想マシン（１２０、１３０など）に送信し、アプリケーション整合バックアップを作成するために使用することができる構成要素など、（ゲストリクエスタ１４０など）バックアッププロセスを助けるためにどんなソフトウェア構成要素が存在するかを識別する。次いで、ホストライタ１２５は、対応する応答１１３をバックアップアプリケーション１０５に送信する。次いで、バックアップアプリケーション１０５は、例えば決定モジュール１０７を介して、識別された仮想マシンのうちのどれが、アプリケーション整合方法を使用してバックアップされ得るか（すなわち、適切な構成要素を含む「バックアップすべきＶＭ」）、および他の方法を使用してバックアップすべきもの（すなわち適切な構成要素を含まない、または電源が切断されている「多少のダウンタイムを伴ってバックアップすべきＶＭ」）を決定する。
【００５２】
したがって、図２は、さらに、１つまたは複数の仮想マシンボリュームの整合バックアップを作成する仮想マシン１２０の立場から見た方法が、構成要素を識別する旨の要求を受信する行為２１０を含むことを示す。行為２１０は、使用可能なソフトウェア構成要素を識別する旨の要求をホストライタから受信することを含む。例えば、仮想マシン１２０は（例えばゲストリクエスタ１４０を介して）、仮想マシンがゲストリクエスタおよび１つまたは複数のアプリケーションライタ（および／またはその適切なバージョン）を含むかどうかを識別する旨の要求を含むバージョン要求１１１を受信する。というのは、これらがアプリケーション整合バックアップを作成するのに適切な構成要素であるからである。次いで、仮想マシン１２０は、ホストライタ１２５がメッセージ１１３としてフォーマットし、バックアップアプリケーション１０５に送信する対応する応答を戻す。
【００５３】
さらに、図２は、ホスト１００の立場から見た方法が、仮想マシンの組にバックアップ要求を送信する行為２２０を含むことを示す。行為２２０は、１つまたは複数の仮想マシンボリュームの１つまたは複数のマシンレベルのスナップショットを準備する旨の命令を、１つまたは複数の仮想マシンのそれぞれに送信することを含む。例えば、図１Ｂに示されるように、バックアップアプリケーション１０５は、仮想マシン１２０をバックアップする旨の命令１１７ａをホストライタ１２５に送信し、ここでは、仮想マシン１２０は、わずかのダウンタイムを伴って、またはダウンタイムなしでアプリケーション整合スナップショットを作成するのに適切な構成要素を有する１組の仮想マシンの一部である。次いで、ホストライタ１２５は、ライタが関与するバックアップの準備を開始する旨の命令１１７ｂを仮想マシン１２０のゲストリクエスタ１４０に送信する。
【００５４】
したがって、図２は、仮想マシン１２０の立場から見た方法が、ホストライタからスナップショット要求を受信する行為２３０も含むことを示している。行為２３０は、使用可能なソフトウェア構成要素のうちの少なくとも１つを備える仮想マシンによってホストされる１つまたは複数のボリュームのスナップショットを作成する旨の要求を、ホストライタから受信することを伴う。例えば、ゲストリクエスタ１４０は、ホストライタ１２５からメッセージ１１７ｂを受信し、ここでは、メッセージ１１７ｂは、ライタが関与するスナップショットのプロセスを開始する旨の要求を含む。したがって、仮想マシンは、各ＶＨＤファイル（１２３、１２７など）によって管理されるそのボリュームのスナップショットの準備を開始する。
【００５５】
さらに、図２は、仮想マシン１２０の立場から見た方法が、１つまたは複数のアプリケーションライタにバックアップ命令を送信する行為２４０を含むことを示す。行為２４０は、スナップショットのために対応する１つまたは複数の仮想マシンアプリケーションを準備する旨の命令を、仮想マシン上の１つまたは複数のアプリケーションライタに送信することを含む。例えば、図１Ｂは、ゲストリクエスタ１４０がメッセージ１１７ｃをＶＨＤファイル１２３、１２７内のボリューム上のアプリケーションライタ（図示せず）に送信することを示す。一実装形態では、これは、関連のボリュームデータのスナップショットを準備する旨の要求を、データベース、電子メール、または他の類似のアプリケーションなどのアプリケーションに対応するライタに送信することを伴い得る。
【００５６】
さらに、図２は、仮想マシン１２０の立場から見た方法が、仮想マシンスナップショットの完了を示す信号を送信する行為２５０を含むことを示す。行為２５０は、仮想マシン内でホストされている１つまたは複数のボリュームのそれぞれについてのスナップショット操作が完了したことの信号をホストライタに送信することを含む。例えば、仮想マシンスナップショットのアクティビティが完了すると、ゲストリクエスタが、完了信号（図示せず）をホストライタ１２５に送信する。この信号に応答して、次いでホストライタ１２５は、メッセージ１５７をバックアップアプリケーション１０５に送信して、バックアップアプリケーション１０５に、ホストレベルのスナップショット操作を終了するよう伝えることができる。
【００５７】
したがって、図２は、ホスト１００の立場から見た方法が、仮想マシンスナップショットの完了を識別する行為２６０を含むことも示す。行為２６０は、少なくとも１つの仮想マシンでのスナップショット操作が完了したことを識別することを含む。例えば、上述したように、ホストライタ１２５は、仮想マシンレベルスナップショットが完了したことを示すメッセージ１５７を送信する。
【００５８】
さらに、図２は、ホスト１００の立場から見た方法が、１つまたは複数のホストレベルのスナップショットを作成する行為２７０を含むことを示す。行為２７０は、少なくとも１つの仮想マシンがインストールされている１つまたは複数のホストボリュームの１つまたは複数のホストレベルスナップショットを作成することを含む。例えば、バックアップアプリケーション１０５は、ホストボリューム１１０、１１５においてバックアッププロセスを続ける旨の命令（１３５など）を送信する。図１Ｂに示されるように、これによって、非アプリケーション整合ＶＨＤファイル１２３、１２７のデータ１５６、１６１を含むホストスナップショット１６７がもたらされ得る。本明細書で説明したように、ホストレベルのスナップショット１６７の異なるＶＨＤデータは、必ずしもＶＨＤ１２３、１２７についてアプリケーション整合ではないが、それにもかかわらず、以前作成されたアプリケーション整合ＶＨＤスナップショットデータ１５５、１６０を含む。特に、ボリューム１１０のホストレベルのスナップショット１６７は、ＶＨＤファイル１２３、１２７などを除くすべての点で、アプリケーション整合とすることができる。
【００５９】
ハードウェアプロバイダを用いるものなど、別の実装形態では、ミラーリングされたホストレベルのボリュームの場合、仮想マシンがインストールされているホストボリュームと対応するミラーボリュームとの間のミラーを壊すことによって、ホストレベルのスナップショットを作成することができる。したがって、ミラーボリュームは、ホストボリュームのスナップショットを含む。このスナップショットは、その１つまたは複数のボリュームの以前取得された仮想マシンレベルのスナップショットも含み、この場合、仮想マシンレベルのスナップショットは、アプリケーション整合である。したがって、仮想マシンレベルのスナップショットは、ホストのミラーボリュームから取り出すことができる。
【００６０】
さらに、図２は、ホスト１００の立場から見た方法が、ホストスナップショットのＶＨＤファイル内にカプセル化された仮想マシンレベルのスナップショットを取り出す行為２８０を含むことを示す。行為２８０は、１つまたは複数のホストボリュームの１つまたは複数のホストレベルのスナップショットから１つまたは複数の仮想マシンボリュームの１つまたは複数の仮想マシンレベルのスナップショットを取り出すことを含む。例えば、図１Ｄに示されるように、ホスト１００は、（例えばＶＳＳ構成要素を介して）ＶＨＤ１２３内のホストレベルのＶＨＤスナップショットデータ１５６を、仮想マシンレベルのＶＨＤスナップショットデータ１５５と取り替えることができる。同様に、ホスト１００は、ＶＨＤ１２７内のホストレベルのＶＨＤデータ１６１を仮想マシンレベルのＶＨＤスナップショットデータ１６０と取り替えることができる。あるいは、ハードウェアプロバイダ（すなわち、ホストボリュームとミラーボリュームとの間のミラーを壊す）の場合、仮想マシンレベルのスナップショットは、上述したように、マウントされたミラーボリュームから提示し、取り出すことができる。いずれにせよ、ホストレベルのバックアップデータ（１９５など）は、したがって仮想マシンレベルのスナップショットデータに少なくとも一部分基づき得る。
【００６１】
したがって、図１Ａ〜２、および対応する本文は、１つまたは複数のホストボリューム上の仮想マシンの適切な整合バックアップコピーを作成するために使用できるいくつかのシステム、構成要素、および機構を提供している。本明細書に記述したように、本発明による構成要素は、仮想マシンのダウンタイムを必要とせず、別個にインストールされ、管理される必要がある追加のバックアップエージェントの購入も必要としない、仮想マシンの整合バックアップの作成に使用することができる。さらに、本明細書に記載した構成要素は、従来のシャドウコピーサービスを利用して、仮想マシンの整合性がとれたスナップショットを生成し、次いで、ホストレベルのスナップショット内から仮想マシンスナップショットを取り出すことができる。
【００６２】
本発明の実施形態は、以下でより詳しく説明するように、様々なコンピュータハードウェアを含む専用または汎用コンピュータを含み得る。本発明の範囲内の実施形態は、コンピュータ実行可能命令を含む、またはデータ構造を格納しているコンピュータ可読媒体も含む。こうしたコンピュータ可読媒体は、汎用または専用のコンピュータからアクセスできる使用可能な任意の媒体でよい。
【００６３】
それだけには限定されないが一例として、こうしたコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、または他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、または所望のプログラムコード手段をコンピュータ実行可能命令、またはデータ構造の形式で運ぶまたは格納するのに使用でき、かつ汎用または専用コンピュータシステムからアクセスできる他の任意の媒体を含み得る。情報がネットワークまたは他の通信接続（配線式、無線のいずれか、または配線式または無線の組み合わせ）を介してコンピュータに転送または提供されるとき、コンピュータは、接続をコンピュータ可読媒体として適切に捉える。したがって、こうした任意の接続は、適切にコンピュータ可読媒体と呼ばれる。また、上記の組み合わせもコンピュータ可読媒体の範囲内に含まれるものとする。
【００６４】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に、ある機能または機能群を実行させる命令およびデータを含む。本主題は、構造的な特徴および／または方法動作に固有の言葉で記載されているが、添付の特許請求の範囲に定義された主題は、上記の固有の特徴および動作に必ずしも限定されるわけではないことを理解されたい。むしろ、上述した固有の特徴および動作は、特許請求の範囲を実施する形式例として開示される。
【００６５】
本発明は、その意図または本質的な特徴から逸脱することなく他の特定の形で具体化することができる。記載した実施形態は、あらゆる点で例示的なものとみなされ、制限的なものとみなされないものとする。したがって、本発明の範囲は、上記の説明ではなく、添付の特許請求の範囲に示されている。特許請求の範囲の均等物の意味および範囲内に含まれるすべての変更は、その範囲内に含まれるものとする。
【図面の簡単な説明】
【００６６】
【図１Ａ】ホストレベルのバックアップアプリケーションが、１つまたは複数の仮想マシンのどれを整合性がとれた方法でバックアップすることができるかを識別する本発明の一実装形態による概略図である。
【図１Ｂ】本発明の一実装形態による、ホストサーバが仮想マシンにおける仮想マシンレベルのゲストリクエスタと共にバックアッププロセスを開始する図１Ａの構成要素を示す図である。
【図１Ｃ】ホストレベルのスナップショットが仮想マシンボリュームデータも含んでおり、仮想マシンボリュームデータが仮想マシンによって以前実行された仮想マシンレベルのスナップショットを含むように、１つまたは複数の仮想マシンがインストールされているホストボリュームのスナップショットをホストサーバリクエスタが作成する図１Ａ〜図１Ｂの構成要素を示す図である。
【図１Ｄ】図１Ａ〜１Ｃに示されているバックアップアプリケーションが仮想マシンレベルのスナップショットデータが含まれているホストレベルのスナップショットデータを取り出す本発明の一実装形態による概略図である。
【図２】１つまたは複数のホストサーバボリュームにインストールされている仮想マシンのアプリケーション整合バックアップを提供するホストサーバおよび仮想マシンの立場から見た本発明の実装形態による一連の行為を含む方法のフロー図である。
【図１Ａ】
2009533777.tif 000003
【図１Ｂ】
2009533777.tif 000004
【図１Ｃ】
2009533777.tif 000005
【図１Ｄ】
2009533777.tif 000006
【図２】
2009533777.tif 000007
【国際調査報告】
2009533777.tif 000008
2009533777.tif 000009