(57)【特許請求の範囲】
【請求項１】
独自仕様イメージバックアップをハイパーバイザによってブート可能なディスクファイルとして前記ハイパーバイザに示す方法であって、
独自仕様フォーマットを有し、オペレーティングシステムを記憶する前記独自仕様イメージバックアップを識別すること、
前記独自仕様イメージバックアップに対応するプラグインファイルを作成すること、
前記ハイパーバイザによってエミュレートされたハードウェアの使用時に前記オペレーティングシステムをブート可能にさせるよう前記オペレーティングシステムを再構成すること、
前記独自仕様イメージバックアップからオペレーティング・システム・データを収集すること、
前記オペレーティング・システム・データを前記ハイパーバイザのネイティブフォーマットでフォーマットされたディスクファイルから収集されたように見せるために、フィルタモジュールを使用して前記オペレーティング・システム・データを前記ハイパーバイザの前記ネイティブフォーマットに再フォーマットすること、
前記ハイパーバイザの仮想マシンにおいて前記オペレーティングシステムをブートすること、および
前記再フォーマットされたオペレーティング・システム・データを前記ハイパーバイザの前記ネイティブフォーマットでフォーマットされた置換ディスクファイルに記憶すること、を備える方法。
【請求項２】
前記プラグインファイルの名前属性のファイル拡張子が、前記プラグインファイルを、前記ハイパーバイザの前記ネイティブフォーマットを有するかのごとく偽って識別する、請求項１に記載の方法。
【請求項３】
前記プラグインファイルに向けられた読み出し要求をインターセプトすること、および
前記独自仕様イメージバックアップから収集されたデータが前記ハイパーバイザの前記ネイティブフォーマットに再フォーマットされた後に当該データによって前記読み出し要求に応答すること、をさらに備える請求項１に記載の方法。
【請求項４】
前記プラグインファイルに関連づけられた差分ディスクファイルを作成すること、
書き込み要求を受信すること、および
前記書き込み要求を前記差分ディスクファイルに向けること、をさらに備える請求項１に記載の方法。
【請求項５】
前記オペレーティングシステムを再構成することは、前記独自仕様イメージバックアップに記憶された前記オペレーティングシステムを変更することを含む、請求項１に記載の方法。
【請求項６】
前記オペレーティングシステムを再構成することは、
前記オペレーティングシステムを前記独自仕様イメージバックアップに記憶されたままにしておくこと、および
前記オペレーティングシステムに対する変更を前記独自仕様イメージバックアップ以外の場所に記憶すること、を含む、請求項１に記載の方法。
【請求項７】
前記オペレーティングシステムに対する変更を前記独自仕様イメージバックアップ以外の場所に記憶することは、
前記プラグインファイルに関連づけられた差分ディスクファイルを作成すること、および
前記オペレーティングシステムに対する変更を前記差分ディスクファイルに記憶すること、を含む、請求項６に記載の方法。
【請求項８】
前記オペレーティングシステムを再構成することは、前記オペレーティングシステムのストレージ・コントローラ・デバイス・ドライバをパッチすることを含む、請求項１に記載の方法。
【請求項９】
前記オペレーティングシステムを再構成することは、前記オペレーティングシステムのカーネルをパッチすることを含む、請求項１に記載の方法。
【請求項１０】
前記オペレーティングシステムを再構成することは、前記オペレーティングシステムの入力／出力デバイスドライバをパッチすることを含む、請求項１に記載の方法。
【請求項１１】
前記オペレーティングシステムを再構成することは、前記オペレーティングシステムのブートコードをパッチすることを含む、請求項１に記載の方法。
【請求項１２】
前記オペレーティングシステムを再構成することは、前記オペレーティングシステムに関連づけられたパーティション構造をパッチすることを含む、請求項１に記載の方法。
【請求項１３】
前記オペレーティングシステムを再構成することは、前記オペレーティングシステムを記憶するボリュームのドライブレターおよび／またはボリューム識別子をパッチすることを含む、請求項１に記載の方法。
【請求項１４】
前記独自仕様イメージバックアップにおけるデータを前記独自仕様フォーマットから前記ハイパーバイザの前記ネイティブフォーマットに再フォーマットすること、および
前記再フォーマットされたデータを前記置換ディスクファイルに記憶すること、をさらに備える請求項１に記載の方法。
【請求項１５】
前記プラグインファイルに向けられた読み出し要求をインターセプトすること、および
データが前記独自仕様イメージバックアップおよび前記置換ディスクファイルの両方から同時に収集されるようにして前記読み出し要求に応じるべく、前記独自仕様イメージバックアップおよび前記置換ディスクファイルからロードバランシングによってデータを収集することにより前記読み出し要求に応答すること、をさらに備える請求項１４に記載の方法。
【請求項１６】
前記置換ディスクファイルは前記プラグインファイルである、請求項１４に記載の方法。
【請求項１７】
前記独自仕様イメージバックアップにおけるデータが再フォーマットされて前記プラグインファイルに記憶されることが完了すると、前記プラグインファイルに向けられた要求に前記プラグインファイルから応じることをさらに備える請求項１６に記載の方法。
【請求項１８】
前記独自仕様イメージバックアップは、物理マシンの物理ストレージのボリュームのイメージバックアップである、請求項１に記載の方法。
【請求項１９】
実行されたときに１つまたは複数のプロセッサに請求項１に記載された方法を実行させるように構成された１つまたは複数のプログラムを記憶する１つまたは複数の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書において開示する実施形態は、独自仕様イメージバックアップをハイパーバイザによってブート可能なディスクファイルとしてハイパーバイザに示すことに関する。
【背景技術】
【０００２】
物理マシンとしても知られる物理コンピュータは、物理マシンのストレージに記憶されたデータへの脅威を含む、それらのスムーズで連続した動作への無数の脅威に直面する。ストレージは、データを記憶することができるコンピュータ可読媒体である。これらの脅威を緩和するために、ストレージにおけるデータのバックアップが特定の時点で作成されて、ある未来の時間におけるデータの復元を可能にし得る。そのような復元は、たとえば、ストレージがその記憶されたデータの破損を経験した場合、ストレージが利用不可能になった場合、またはユーザが２つ目の同一のストレージを作成することを望む場合に、所望されるようになり得る。
【０００３】
ユーザが物理マシンのストレージをバックアップから復元することを所望する場合、新たな物理マシン上のストレージへの復元は、容認できない長さの時間を要することを含む、多くの難題を含み得る。物理マシンのストレージをバックアップから復元するのに要する時間の長さを短縮するために、ユーザは、仮想マシン上の仮想ストレージにバックアップを復元し得る。
【０００４】
仮想マシンは、仮想化として一般的に知られる処理における物理マシンのソフトウェアベースのエミュレーションである。仮想マシンは一般的に、物理マシンのコンピュータアーキテクチャおよび機能に基づいて動作する。ハイパーバイザは、仮想マシンを作成および実行する、コンピュータソフトウェア、コンピュータファームウェア、またはコンピュータハードウェアである。ハイパーバイザが１つまたは複数の仮想マシンを実行中であるコンピュータは一般的にホストマシンと呼ばれる一方で、ハイパーバイザ上で実行中の各々の仮想マシンは一般的に、ゲスト仮想マシンと呼ばれる。ハイパーバイザは一般的に、ハイパーバイザによってブート可能でありかつゲスト仮想マシンの作成に使用されるデータを含むかまたは参照するディスクファイルにアクセスすることにより、ゲスト仮想マシンを作成する。ハイパーバイザはまた、一般的に、仮想オペレーティングプラットフォームによるゲスト仮想マシンを提示し、ゲスト仮想マシンのオペレーティングシステムの実行を管理する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第８，９４３，１０５号明細書
【特許文献２】米国特許第８，３７０，８３５号明細書
【特許文献３】米国特許出願公開第２０１５／０１０６８０２号明細書
【特許文献４】米国特許出願公開第２０１３／０２１２４３７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ハイパーバイザの利用時における１つの一般的な問題は、一部のハイパーバイザが、ハイパーバイザにネイティブな特定のファイルフォーマットを有するディスクファイルにアクセスするようにしか設計されていないことである。たとえば、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザは、ゲスト仮想マシンを作成する目的のために、ＭｉｃｒｏｓｏｆｔのＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザのネイティブ・ファイル・フォーマットであるＶＨＤおよびＶＨＤＸファイルフォーマットを有するディスクファイルにアクセスすることしかできないように設計されている。特に、ＭｉｃｒｏｓｏｆｔのＨｙｐｅｒ−Ｖ（登録商標）テクノロジーは、ディスクデータを仮想マシンによるアクセスのためにサードパーティ自身のディスクイメージフォーマットからＭｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザのネイティブ・ファイル・フォーマットへと素早くアタッチすることをサードパーティに可能にさせるのに必要なディスク・プラグイン・アプリケーション・プログラミング・インターフェース（ＡＰＩ）を欠いている。このように一部のハイパーバイザが、たとえばディスクプラグインＡＰＩの欠如ゆえに、異なる手法でフォーマットされたさまざまなディスクファイルにアクセスできないことは、これらのハイパーバイザを使用して仮想マシンを作成するために使用され得るディスクファイルを制限する。
【０００７】
ハイパーバイザの利用時における別の一般的な問題は、ハイパーバイザによってエミュレートされたハードウェア構成がしばしば、バックアップに記憶されたオペレーティングシステムのハードウェア構成と異なることである。したがって、バックアップが仮想マシン上の仮想ストレージに復元される際、復元されたオペレーティングシステムのハードウェア構成が、仮想マシンのハードウェア構成と互換性がなく、仮想マシンにおいてオペレーティングシステムをブートすることを困難または不可能にし得る。さらに、バックアップはまた、バックアップがディスクのパーティションまたはボリュームといったディスクの一部からのデータしか含まないがゆえに、オペレーティングシステムのブートに使用されるディスク・セントリック・データを欠損し得、それもまた、仮想マシンにおいてオペレーティングシステムをブートすることを困難または不可能にし得る。
【０００８】
本願で特許請求される主題は、上述した環境においてのみ欠点を解決するまたは動作する実施形態に限定されない。むしろ、上述した背景技術は、本明細書において説明されるいくつかの実施形態が現実化され得る１つの例示的な技術分野を示すために提供されている。
【課題を解決するための手段】
【０００９】
概して、本明細書において説明される例示的な実施形態は、独自仕様イメージバックアップをハイパーバイザによってブート可能なディスクファイルとしてハイパーバイザに示すことに関する。本明細書において開示する例示的な方法は、たとえハイパーバイザがハイパーバイザのネイティブフォーマットでフォーマットされたディスクファイルを使用してゲスト仮想マシンを作成することしかできないように設計されていたとしても、たとえハイパーバイザによってエミュレートされたハードウェア構成が独自仕様バックアップに記憶されたオペレーティングシステムのハードウェア構成と異なるものであっても、独自仕様バックアップに記憶されたオペレーティングシステムをハイパーバイザによってエミュレートされたハードウェアを使用してブート可能であるように再構成し、続いて再構成されたオペレーティングシステムをブートすることによって、ゲスト仮想マシンを作成することを、ホストマシン上のハイパーバイザに可能にさせるために用いられ得る。したがって、本明細書において開示する例示的な方法は、仮想マシンにおける独自仕様バックアップのオペレーティングシステムにアクセスし、同オペレーティングシステムをブートすることを、ハイパーバイザに可能にさせ得る。
【００１０】
一例において、独自仕様イメージバックアップをハイパーバイザによってブート可能なディスクファイルとしてハイパーバイザに示す方法は、独自仕様フォーマットを有し、オペレーティングシステムを記憶する、独自仕様イメージバックアップを識別することと、独自仕様イメージバックアップに対応するプラグインファイルを作成することと、ハイパーバイザによってエミュレートされたハードウェアの使用時にオペレーティングシステムをブート可能にさせるようオペレーティングシステムを再構成することと、独自仕様イメージバックアップからオペレーティング・システム・データを収集することと、オペレーティング・システム・データをハイパーバイザのネイティブフォーマットでフォーマットされたディスクファイルから収集されたように見せるために、フィルタモジュールを使用してオペレーティング・システム・データをハイパーバイザのネイティブフォーマットに再フォーマットすることと、ハイパーバイザの仮想マシンにおいてオペレーティングシステムをブートすることと、再フォーマットされたオペレーティング・システム・データをハイパーバイザのネイティブフォーマットでフォーマットされた置換ディスクファイルに記憶することと、を含み得る。この例では、プラグインファイルの名前属性のファイル拡張子が、プラグインファイルを、ハイパーバイザのネイティブフォーマットを有するかのごとく偽って識別し得る。また、この例において、方法はさらに、プラグインファイルに向けられた読み出し要求をインターセプトすることと、独自仕様イメージバックアップから収集されたデータがハイパーバイザのネイティブフォーマットに再フォーマットされた後に当該データによって読み出し要求に応答することとを含み得る。さらに、この例において、方法は、プラグインファイルに関連づけられた差分ディスクファイルを作成することと、書き込み要求を受信することと、書き込み要求を差分ディスクファイルに向けることとをさらに含み得る。また、この例において、オペレーティングシステムを再構成することは、独自仕様イメージバックアップに記憶されたオペレーティングシステムを変更することを含み得る。さらに、この例において、オペレーティングシステムを再構成することは、オペレーティングシステムを独自仕様イメージバックアップに記憶されたままにしておくことと、オペレーティングシステムに対する変更を独自仕様イメージバックアップ以外の場所に記憶することとを含み得る。また、この例において、オペレーティングシステムに対する変更を独自仕様イメージバックアップ以外の場所に記憶することは、プラグインファイルに関連づけられた差分ディスクファイルを作成することと、オペレーティングシステムに対する変更を差分ディスクファイルに記憶することとを含み得る。さらに、この例において、オペレーティングシステムを再構成することは、オペレーティングシステムのストレージ・コントローラ・デバイス・ドライバをパッチすることを含み得る。また、この例において、オペレーティングシステムを再構成することは、オペレーティングシステムのカーネルをパッチすることを含み得る。さらに、この例において、オペレーティングシステムを再構成することは、オペレーティングシステムの入力／出力デバイスドライバをパッチすることを含み得る。また、この例において、オペレーティングシステムを再構成することは、オペレーティングシステムのブートコードをパッチすることを含み得る。さらに、この例において、オペレーティングシステムを再構成することは、オペレーティングシステムに関連づけられたパーティション構造をパッチすることを含み得る。また、この例において、オペレーティングシステムを再構成することは、オペレーティングシステムを記憶するボリュームのドライブレターおよび／またはボリューム識別子をパッチすることを含み得る。さらに、この例において、方法は、独自仕様イメージバックアップにおけるデータを独自仕様フォーマットからハイパーバイザのネイティブフォーマットに再フォーマットすることと、再フォーマットされたデータを置換ディスクファイルに記憶することとをさらに含み得る。また、この例において、方法は、プラグインファイルに向けられた読み出し要求をインターセプトすることと、データが独自仕様イメージバックアップおよび置換ディスクファイルの両方から同時に収集されるようにして読み出し要求に応じるよう、独自仕様イメージバックアップおよび置換ディスクファイルからロードバランシングによってデータを収集することにより読み出し要求に応答することとをさらに含み得る。さらに、この例において、置換ディスクファイルは、プラグインファイルであり得る。また、この例において、方法はさらに、独自仕様イメージバックアップにおけるデータが再フォーマットされ、プラグインファイルに記憶され終わると、プラグインファイルに向けられた要求にプラグインファイルから応じることを含み得る。さらに、この例において、独自仕様イメージバックアップは、物理マシンの物理ストレージのボリュームのイメージバックアップであり得る。また、この例において、１つまたは複数の非一時的なコンピュータ可読媒体は、実行されると１つまたは複数のプロセッサにこの例の方法を実行させるように構成された１つまたは複数のプログラムを記憶し得る。
【００１１】
上述した一般的な説明と以下の詳細な説明はいずれも、例示的かつ説明的なものであり、特許請求される発明を限定するものではないことが理解されるべきである。
例示的な実施形態が、添付図面の使用により追加の具体性および詳細とともに記載および説明される。
【図面の簡単な説明】
【００１２】
【図１】ハイパーバイザを含む例示的なハイパーバイザシステムを示す模式的なブロック図。
【図２】独自仕様イメージ・バックアップ・ファイルのオペレーティングシステムを図１のハイパーバイザによってエミュレートされたハードウェアの使用時にブート可能にさせるよう独自仕様イメージ・バックアップ・ファイルを再構成する前と後の例示的な独自仕様イメージ・バックアップ・ファイルを示す模式的なブロック図。
【図３Ａ】独自仕様イメージバックアップをハイパーバイザによってブート可能なディスクファイルとしてハイパーバイザに示す例示的な方法の模式的なフローチャート。
【図３Ｂ】独自仕様イメージバックアップをハイパーバイザによってブート可能なディスクファイルとしてハイパーバイザに示す例示的な方法の模式的なフローチャート。
【発明を実施するための形態】
【００１３】
本明細書において使用される「ネイティブ・ハイパーバイザ・ディスク・ファイル」という語句は、特定のハイパーバイザにネイティブなファイルフォーマットを有する仮想マシン・ディスク・ファイルのことを言う。一例として、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザによって使用されるＶＨＤＸファイルフォーマットがある。別の例として、ＶＭｗａｒｅ（登録商標）ハイパーバイザによって使用されるＶＭＤＫファイルフォーマットがある。本明細書において使用される「独自仕様ファイルフォーマット」という語句は、特定のハイパーバイザによってネイティブに理解されないファイルフォーマットのことを言う。本明細書において使用される「独自仕様イメージバックアップ」という語句は、ストレージのパーティションまたはボリュームの少なくとも一部のイメージベースのバックアップを含み、独自仕様ファイルフォーマットで構築された、ファイル、または、重複排除資格情報コンテナもしくはデータベースのようなデータ・ストレージ・システムのことを言う。例として、ＳｔｏｒａｇｅＣｒａｆｔ（登録商標）のＳｈａｄｏｗＰｒｏｔｅｃｔ（登録商標）フル（ＳＰＦ）イメージ・バックアップ・ファイル・フォーマットがある。本明細書において使用される「プラグインファイル」という語句は、フィルタモジュールによって認識可能であり、フィルタモジュールによって提供されるフィルタリング機能によって、オペレーティングシステム、ハイパーバイザ、およびすべての他のアプリケーションにネイティブなハイパーバイザ・ディスク・ファイルであるように見える、ネイティブ・ハイパーバイザ・ディスク・ファイルに対応するファイルのことを言う。このファイルは、一般的に独自仕様ディスクファイルを指し示し、一般的には、対応する現実のネイティブ・ハイパーバイザ・ディスク・ファイルが有し得るサイズよりはるかに小さいサイズである。例として、「ｖｍ．ｖｈｄｘ」という名前のファイルがあり、このファイルは、その「ｖｈｄｘ」というファイル拡張子ゆえに、また、フィルタモジュールのフィルタリングアクティビティにより、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ＶＨＤＸネイティブ・ハイパーバイザ・ディスク・ファイルに見えるが、実際には、ネイティブ・ハイパーバイザ・ディスク・ファイルの典型的なコンテンツまたは構造を必ずしも含むわけではなく、むしろ実際には、プラグインファイルとは別個の「ｖｍ．ｓｐｆ」という名前の対応するＳＰＦ独自仕様イメージ・バックアップ・ファイルを指すプラグインファイルである。本明細書において使用される「プラグイン・ファイル・フォーマット」という語句は、プラグイン・ファイル・フォーマットの構造がネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマットとは異なるがゆえに、および／または、典型的には（ネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマットと同一の構造を有する）プラグインファイルに記憶され得るデータの少なくともある部分がどこか他の場所に記憶されているがゆえに、プラグインファイルが対応するネイティブ・ハイパーバイザ・ディスク・ファイルのネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマットとは異なる、プラグインファイルのファイル・フォーマットのことを言う。上記例から、「ｖｍ．ｖｈｄｘ」というプラグインファイルは、ＶＨＤＸネイティブ・ハイパーバイザ・ディスク・ファイルのネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマット構造とは異なるプラグイン・ファイル・フォーマット構造を有するものとなる。別の例において、「ｖｍ２．ｖｈｄｘ」という名前のプラグインファイルは、ＶＨＤＸネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマット構造と同一のプラグイン・ファイル・フォーマット構造を有し得るが、「ｖｍ２．ｖｈｄｘ」というプラグインファイルは、典型的にはネイティブ・ハイパーバイザ・ディスク・ファイルに記憶され得るがその代わりにフィルタモジュールを使用して「ｖｍ２．ｓｐｆ」という名前の対応するＳＰＦ独自仕様イメージ・バックアップ・ファイルから検索可能な、一部のデータを欠損し得る。
【００１４】
図１は、例示的なハイパーバイザシステム１００を示す模式的なブロック図である。図１に示すように、システム１００は、ホストマシンハイパーバイザ１０２、複数のゲスト仮想マシン（ＶＭ）１０４、１０６、および１０８、フィルタモジュール１１０、ファイルシステム１１２、およびストレージ１１４を含み得る。ストレージ１１４は、ネイティブ・ハイパーバイザ・ディスク・ファイル１１６および１１８、独自仕様イメージ・バックアップ・ファイル２００、およびプラグインファイル１２２を含み得る。ファイルシステム１１２は、ローカルファイルシステム、ネットワークファイルシステム、仮想ファイルシステム、または他のタイプのファイルシステムを含み得る。
【００１５】
ハイパーバイザ１０２は、ゲスト仮想マシン１０４、１０６、および１０８のような１つまたは複数のゲスト仮想マシンを作成し、実行し、管理するように構成されたホストマシンのコンピュータソフトウェア、コンピュータファームウェア、またはコンピュータハードウェア（図示せず）であり得る。仮想マシン１０４、１０６、および１０８は、ハイパーバイザ１０２によって作成され、実行され、管理される仮想マシンであり得る。仮想マシン１０４、１０６、および１０８の各々は、物理マシン（たとえば、物理コンピュータ）のごとくプログラムを実行するように構成された、物理マシンのソフトウェアベースのエミュレーションであり得る。
【００１６】
仮想マシン１０４、１０６、および１０８の各々の作成は、ハイパーバイザ１０２がストレージ１１４におけるディスクファイルまたはイメージバックアップにアクセスすることによって達成され得る。特に、ハイパーバイザ１０２は、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有するネイティブ・ハイパーバイザ・ディスク・ファイル１１６にアクセスすることによって仮想マシン１０４を作成し得る。同様に、ハイパーバイザ１０２は、ネイティブ・ハイパーバイザ・ディスク・ファイル１１８にアクセスすることによって仮想マシン１０６を作成し得、ネイティブ・ハイパーバイザ・ディスク・ファイル１１８もまた、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有する。
【００１７】
対照的に、ハイパーバイザ１０２は、フィルタモジュール１１０が独自仕様イメージ・バックアップ・ファイル２００をハイパーバイザ１０２に示すことによって、仮想マシン１０８を作成し得る。独自仕様イメージ・バックアップ・ファイル２００は、ハイパーバイザ１０２によってネイティブに理解されないファイルフォーマットを有する。加えて、独自仕様バックアップファイル２００は、ハイパーバイザ１０２によってエミュレートされたハードウェアの使用時にブート可能であるように構成されていないオペレーティングシステムを記憶し得る。独自仕様イメージ・バックアップ・ファイル２００がハイパーバイザ１０２によってネイティブに理解されないファイルフォーマットを有するがゆえに、ハイパーバイザ１０２は独自仕様イメージ・バックアップ・ファイル２００に直接アクセスすることができず、独自仕様イメージ・バックアップ・ファイル２００のオペレーティングシステムがハイパーバイザ１０２によってエミュレートされたハードウェアの使用時にブート可能であるように構成されていないがゆえに、ハイパーバイザ１０２はオペレーティングシステムをブートすることができないが、本明細書において開示する方法は、ハイパーバイザ１０２が仮想マシン１０８においてオペレーティングシステムをブートするために、オペレーティングシステムを再構成し、独自仕様イメージ・バックアップ・ファイル２００をハイパーバイザ１０２のネイティブ・ファイル・フォーマットでハイパーバイザ１０２に示すことを、フィルタモジュール１１０に可能にさせ得る。
【００１８】
図１に示されているように、フィルタモジュール１１０は、システム１００におけるさまざまなレベルで動作するように構成され得る。たとえば、フィルタモジュール１１０は、図１に示されているように、スタンドアロンのファイルシステムフィルタモジュールとして、またはハイパーバイザ１０２もしくはファイルシステム１１２に部分的または全体的に統合されたファイルシステムフィルタモジュールとして、のいずれかで、ハイパーバイザ１０２とファイルシステム１１２との間で動作するように構成されたファイルシステムフィルタモジュールとして機能し得る。加えて、または代わりに、フィルタモジュール１１０は、図１に示されているように、スタンドアロンのブロックレベルのフィルタモジュールとして、またはファイルシステム１１２に部分的または全体的に統合されたブロックレベルのフィルタモジュールとして、のいずれかで、ファイルシステム１１２とストレージ１１４との間で動作するように構成されたブロックレベルのフィルタモジュールとして機能し得る。加えて、または代わりに、フィルタモジュール１１０は、図１に示されているように、ファイルハイパーバイザ１０２とストレージ１１４との間で動作するように構成されたスタンドアロンのファイルシステムモジュールとして機能し得る。したがって、フィルタモジュール１１０は、システム１００における任意の特定のレベルでの動作に限定されない。
【００１９】
１つの例示的な実施形態において、ハイパーバイザ１０２は、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザであって、独自仕様イメージ・バックアップ・ファイル２００は、ＳｔｏｒａｇｅＣｒａｆｔ（登録商標）のＳｈａｄｏｗＰｒｏｔｅｃｔ（登録商標）フル（ＳＰＦ）イメージ・バックアップ・ファイルであってよい。本明細書において開示する例示的な方法を使用すると、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザは、たとえＳＰＦイメージ・バックアップ・ファイル・フォーマットがＭｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザによってネイティブに理解されなくても、ＳＰＦイメージ・バックアップ・ファイルを使用して、および／または対応するプラグインファイル１２２を使用して、仮想マシン１０８を作成できる。これは、フィルタモジュール１１０が、ＳＰＦイメージ・バックアップ・ファイルに記憶されたオペレーティングシステムを再構成してオペレーティングシステムがＭｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザによってエミュレートされたハードウェアの使用時にブート可能であるようにし、続いてＭｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザからＳＰＦイメージ・バックアップ・ファイルおよび／またはプラグインファイル１２２に送信された各々の要求をインターセプトし、ＳＰＦイメージ・バックアップ・ファイルおよび／またはプラグインファイルがＭｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザのためのネイティブ・ハイパーバイザ・ディスク・ファイルである有効なＶＨＤＸファイルに見えるように要求に応答することによって、達成される。このように、たとえＳＰＦイメージ・バックアップ・ファイルがＭｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザによってネイティブに理解されないファイルフォーマットを有するがゆえに、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザがＳＰＦイメージ・バックアップ・ファイルに直接アクセスすることができなくても、本明細書において開示する方法は、オペレーティングシステムを再構成し、ＳＰＦイメージ・バックアップ・ファイルをＭｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザのネイティブＶＨＤＸファイルフォーマットでＭｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザに示して、仮想マシンにおけるオペレーティングシステムのブートを可能にすることを、フィルタモジュール１１０に可能にさせる。
【００２０】
図１のシステム１００では単一のストレージしか示されていないが、システム１００がその代わりに２つ以上のストレージを含み得ることが理解される。さらに、ストレージ１１４は図１ではハイパーバイザ１０２にローカルであるように示されているが、ストレージ１１４がハイパーバイザ１０２と遠隔であり得ることが理解される。さらに、ファイル１１６、１１８、２００、および１２２の１つ以上は、ハイパーバイザ１０２と遠隔に記憶され得る。たとえば、プラグインファイル１２２が、ハイパーバイザ１０２にローカルに記憶され得る一方で、独自仕様イメージ・バックアップ・ファイル２００は、ハイパーバイザ１０２と遠隔に記憶される。さらに、フィルタモジュール１１０は、図１のシステム１００において示された唯一のフィルタモジュールであるが、フィルタモジュール１１０の機能が、システム１００の中またはシステム１００にローカルであるかまたはシステム１００と遠隔である別のシステムの中に存在する、１つまたは複数の同様のフィルタモジュールまたは任意の他の実行可能なモジュールによって置換または増強され得ることが理解される。加えて、独自仕様イメージ・バックアップ・ファイル２００は、実際のファイルでないこともできるが、その代わりに、ディスクデータを含み、独自仕様ファイルフォーマットで構築された、重複排除資格情報コンテナまたはデータベースのような任意の他のデータストレージであることもできる。
【００２１】
図１に関する１つの特定の環境を説明してきたが、図１の特定の環境は、本明細書において開示する例示的な方法が用いられ得る無数の環境の１つにすぎないことが理解される。例示的な実施形態の範囲は、任意の特定の環境に限定されるように意図されない。
【００２２】
図２は、独自仕様イメージ・バックアップ・ファイル２００のオペレーティングシステムを図１のハイパーバイザ１０２によってエミュレートされたハードウェアの使用時にブート可能にさせるように独自仕様イメージ・バックアップ・ファイル２００を再構成する前と後の例示的な独自仕様イメージ・バックアップ・ファイル２００を示す模式的なブロック図である。
【００２３】
図２に示されているように、独自仕様イメージ・バックアップ・ファイル２００は元々、ボリュームブートレコード２０２と、オペレーティングシステム２０４と、データ２０６とを含み得る。オペレーティングシステムは、カーネル２０８、ストレージ・コントローラ・デバイス・ドライバ２１０、および／または、入力／出力デバイスドライバ２１２を含み得る。オペレーティングシステムが図２に示されたもの以外の追加のコンポーネントを含み得ることが理解される。
【００２４】
また図２に示されているように、独自仕様イメージ・バックアップ・ファイル２００のオペレーティングシステムを図１のハイパーバイザ１０２によってエミュレートされたハードウェアの使用時にブート可能にさせるように独自仕様イメージ・バックアップ・ファイル２００を再構成した後、独自仕様イメージ・バックアップ・ファイル２００は、マスター・ブート・レコード（ＭＢＲ）２５２を追加で含み得る再構成されたディスクファイル２５０の中に含まれ得る。ＭＢＲ２５２は、ブートローダコード２５４とパーティション構造２５６とを含み得る。パーティション構造２５６は、識別子２５８を含み得る。識別子２５８は、ディスクが最初にパーティション分割されるときにランダムに発生させられ、ＭＢＲ２５２に書き込まれた、４バイト値を有する「ディスク署名」であり得る。
【００２５】
図３Ａおよび図３Ｂに関連して以下により詳細に説明するように、独自仕様イメージ・バックアップ・ファイル２００の再構成中、オペレーティングシステム２０４のハードウェア構成は、図１のハイパーバイザ１０２によってエミュレートされたハードウェア構成と互換性があるように再構成され得る。この再構成は、カーネル２０８、ストレージ・コントローラ・デバイス・ドライバ２１０、入力／出力デバイスドライバ２１２、またはそれらの何らかの組み合わせに対する変化を含み得る。この再構成はまた、ボリュームブートレコード２０２、データ２０６、またはそれらの何らかの組み合わせのオペレーティングシステム固有の部分に対する変化を含み得る。加えて、独自仕様イメージ・バックアップ・ファイル２００は、独自仕様イメージ・バックアップ・ファイル２００がディスクのパーティションまたはボリュームのようなディスクの一部からのデータしか含まないがゆえに、オペレーティングシステム２０４のブートに使用されるディスク・セントリック・データを欠損しているので、この再構成は、加えて、または代わりに、オペレーティングシステム固有の部分を含み得るディスクセントリックＭＢＲ２５２の追加を含み得る。したがって、この再構成は、独自仕様イメージ・バックアップ・ファイル２００が図１の仮想マシン１０８上の仮想ストレージに復元され、続いてオペレーティングシステム２０４が仮想マシン１０８においてブートされることを可能にし得る。
【００２６】
図３Ａおよび図３Ｂは、独自仕様イメージバックアップをハイパーバイザによってブート可能なディスクファイルとしてハイパーバイザに示す例示的な方法３００の模式的なフローチャートの図である。方法３００は、少なくともいくつかの実施形態において、図１のシステム１００のハイパーバイザ１０２およびフィルタモジュール１１０により実現され得る。たとえば、ハイパーバイザ１０２およびフィルタモジュール１１０は、実行されると１つまたは複数のプロセッサに、方法３００のステップ３０２〜３６０の１つ以上によって表されているように、独自仕様イメージ・バックアップ・ファイル２００をハイパーバイザ１０２によってブート可能なディスクファイルとしてハイパーバイザ１０２に示す動作を実行させるように構成された、１つまたは複数の非一時的コンピュータ可読媒体上に記憶された１つまたは複数のプログラムとして構成できる。離散ステップとして示されているが、さまざまなステップは、所望の実現に依存して、追加のステップに分割されることも、より少ないステップに合体させられることも、並び替えられることも、除かれることもできる。方法３００について図１〜図３Ｂを参照して説明する。
【００２７】
方法３００は、オペレーティングシステムを記憶する独自仕様イメージバックアップを識別するステップ３０２を含み得る。たとえば、図１のフィルタモジュール１１０が、ステップ３０２で、図１の独自仕様イメージ・バックアップ・ファイル２００を、図２に示されているように、独自仕様フォーマットを有し、オペレーティングシステム２０４を記憶する独自仕様イメージバックアップとして識別し得る。
【００２８】
方法３００は、独自仕様イメージバックアップに対応するプラグインファイルを作成するステップ３０４を含み得る。たとえば、図１のフィルタモジュール１１０が、ステップ３０４で、図１の独自仕様イメージ・バックアップ・ファイル２００に対応する図１のプラグインファイル１２２を作成し得る。あるいは、ハイパーバイザ１０２と同一のホストマシン上で実行されるかまたは別のローカルマシンまたは遠隔マシン上で実行される、カーネルモードまたはユーザモードのモジュールのような別のモジュールが、ステップ３０４で、独自仕様イメージ・バックアップ・ファイル２００に対応するプラグインファイル１２２を作成し得る。上述したように、独自仕様イメージ・バックアップ・ファイル２００は、独自仕様ファイルフォーマットを有し、プラグインファイル１２２は、プラグイン・ファイル・フォーマットを有する。また、上述したように、プラグインファイル１２２が、独自仕様イメージ・バックアップ・ファイル２００が記憶されているストレージ１１４に記憶され得るか、または、プラグインファイル１２２および／または独自仕様イメージ・バックアップ・ファイル２００は、別のローカルストレージまたは遠隔ストレージに記憶され得る。図１に示されているように、プラグインファイル１２２は、独自仕様イメージ・バックアップ・ファイル２００を指し示すポインタを含み得る。加えて、または代わりに、プラグインファイル１２２は、ストレージ１１４におけるどこか他の場所または別のローカルストレージもしくは遠隔ストレージに記憶されたデータベースのような、プラグインファイル１２２の外部のデータ・ストレージ・システムを使用して、独自仕様イメージ・バックアップ・ファイル２００に関連づけられてもよい。
【００２９】
方法３００は、オペレーティングシステムをハイパーバイザによってエミュレートされたハードウェアの使用時にブート可能にさせるようにオペレーティングシステムを再構成するステップ３０６を含み得る。たとえば、ハイパーバイザ１０２が、ステップ３０６で、図２のオペレーティングシステム２０４をハイパーバイザ１０２によってエミュレートされたハードウェアの使用時にブート可能にさせるようにオペレーティングシステム２０４を再構成し得る。ステップ３０６でのオペレーティングシステム２０４のこの再構成は、独自仕様イメージ・バックアップ・ファイル２００に記憶されたオペレーティングシステムを変更することを含み得る。あるいは、この再構成は、独自仕様イメージ・バックアップ・ファイル２００に記憶されたオペレーティングシステム２０４を変更されないままにしておくこと、および再構成されたディスクファイル２５０のような独自仕様イメージ・バックアップ・ファイル２００以外の場所にオペレーティングシステム２０４への変更を記憶することを含み得る。元の独自仕様イメージ・バックアップ・ファイル２００と再構成されたディスクファイル２５０との間の差は、プラグインファイル１２２に関連づけられた差分ディスクファイルを作成することとオペレーティングシステム２０４への変更を差分ディスクファイルに記憶することとによって、記憶され得る。
【００３０】
ステップ３０６でのオペレーティングシステム２０４のこの再構成は、加えてまたは代わりに、オペレーティングシステム２０４のストレージ・コントローラ・デバイス・ドライバ２１０をパッチすること、オペレーティングシステム２０４のカーネル２０８をパッチすること、オペレーティングシステム２０４の入力／出力デバイスドライバ２１２をパッチすること、オペレーティングシステム２０４のブートコード（たとえば、ブートローダコード２５４）をパッチすること、オペレーティングシステム２０４に関連づけられたパーティション構造２５６をパッチすること、ドライブ識別子２５８をパッチすること、オペレーティングシステム２０４を記憶したボリュームのドライブレターおよび／またはボリューム識別子をパッチすること、またはそれらの何らかの組み合わせを有してもよい。パッチブートコードは、ブートセクタ、ＢＩＯＳ、実行可能なブートローダファイル、またはそれらの何らかの組み合わせに記憶されたパッチブートコードを含み得ることが理解される。
【００３１】
方法３００は、ファイルオープン要求を送信するステップ３０８およびファイルオープン要求をインターセプトするステップ３１０を含み得る。たとえば、図１のハイパーバイザ１０２が、ステップ３０８でプラグインファイル１２２に向けられたファイルオープン要求を送信し得、フィルタモジュール１１０が、ステップ３１０でファイルオープン要求をインターセプトし得る。この要求のこのインターセプトおよび本明細書において説明するすべての他の要求のインターセプトは、フィルタモジュール１１０が、ハイパーバイザ１０２とプラグインファイル１２２が記憶されたストレージ１１４との間に、または図１に示された位置のいずれかに、または図１に示された任意の組み合わせの位置に位置しているがゆえに、可能であり得る。任意のそのような位置において、フィルタモジュール１１０は、所望の場合、ハイパーバイザ１０２からストレージ１１４へのすべての要求をインターセプトし、検査し、変更することができる。
【００３２】
上記例を続けると、たとえプラグインファイル１２２がプラグイン・ファイル・フォーマットを有していても、プラグインファイルはネイティブ・ファイル・フォーマットを有するように偽って見え得るので、ハイパーバイザ１０２はそれにもかかわらずプラグインファイル１２２を開こうと試み得る。たとえば、プラグインファイル１２２の名前属性のファイル拡張子のようなプラグインファイル１２２の名前属性の一部は、プラグインファイル１２２を、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有するかのごとく偽って識別し得る。この例において、ハイパーバイザ１０２は、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザであり、プラグインファイル１２２は、「ｖｍ．ｖｈｄｘ」という名前であり、独自仕様イメージ・バックアップ・ファイル２００は、プラグインファイル１２２とは別個の「ｖｍ．ｓｐｆ」という名前のＳＰＦイメージ・バックアップ・ファイルであってよい。「ｖｈｄｘ」ファイル拡張子は、プラグインファイル１２２を、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザ１０２のネイティブＶＨＤＸファイルフォーマットを有するかのごとく偽って識別する。当然のことながら、実際にはプラグインファイル１２２は、ネイティブＶＨＤＸファイルの典型的なコンテンツおよび／または構造を含んでいなくてもよく、その代わりに実際には、プラグインファイル１２２とは別個の「ｖｍ．ｓｐｆ」という名前の対応するＳＰＦイメージ・バックアップ・ファイルを指し示すプラグインファイルである。あるいは、プラグインファイル１２２は、ステップ３３４に関連して以下で説明するように、ネイティブ・ファイル・フォーマットを有し得るが、にもかかわらずデータで「満たされて」いないことができる。
【００３３】
方法３００は、プラグインファイルがプラグイン・ファイル・フォーマットを有することを決定するステップ３１２を含み得る。たとえば、フィルタモジュール１１０が、ステップ３１２で、プラグインファイル３１２がプラグイン・ファイル・フォーマットを有することを決定し得る。この決定は、さまざまな異なる手法で行われ得る。たとえば、フィルタモジュール１１０は、プラグイン・ファイル・フォーマットを有するものとしてプラグインファイル１２２を識別するメタデータが、プラグインファイル１２２の中に存在することを決定することによって、プラグインファイル１２２がプラグイン・ファイル・フォーマットを有することを決定し得る。代わりに、または加えて、フィルタモジュール１１０は、プラグインファイル１２２が、ストレージ１１４におけるどこか他の場所または別のストレージに記憶されたデータベースのような、プラグインファイル１２２の外部のデータ・ストレージ・システムに記憶された、プラグイン・ファイル・フォーマットを有するファイルのリストの中に存在することを決定することによって、プラグインファイル１２２がプラグイン・ファイル・フォーマットを有することを決定してもよい。プラグイン・ファイル・フォーマットは、少なくともいくつかの実施形態では、ステップ３３４に関連して以下に説明するように、ネイティブ・ファイル・フォーマットと重複するかまたは同一であることができる、ということが理解される。
【００３４】
方法３００は、成功を報告するステップ３１４および成功レポートを受信するステップ３１６を含み得る。たとえば、フィルタモジュール１１０が、ステップ３１４で、プラグインファイル１２２が成功裏に開かれたとの報告によって以前に受信されたファイルオープン要求に応答し、ハイパーバイザ１０２が、ステップ３１６で成功レポートを受信し得る。
【００３５】
成功のこの報告は、実際に独自仕様イメージ・バックアップ・ファイル２００を開いた後、または実際には独自仕様イメージ・バックアップ・ファイル２００を開かずに、ステップ３１４およびステップ３１６で実行することができる。実際には、少なくともいくつかのハイパーバイザが、実際にディスクデータを要求することなくディスクファイルのメタデータの多くの読み出しを実行し、ディスクファイルについてのいくつかの連続したファイルオープンおよびファイルクローズ要求間でそうすることが発見されている。これは、ディスクファイルがゲスト仮想マシンにアタッチされている場合、または仮想マシン構成設定が変更されている場合に最も多く行われる。したがって、パフォーマンス、ユーザ経験を改善し、リソースの使用を減じるために、フィルタモジュール１１０は、独自仕様イメージ・バックアップ・ファイル２００を実際に開くことを、絶対的に必要になるまで遅らせ得る。これは、そのような要求が、独自仕様イメージ・バックアップ・ファイル２００を開くという典型的に費用のかかる動作なしに応答され得るよう、プラグインファイル１２２自体の中のおよび／またはプラグインファイル１２２に関連づけられた仮想マシン・ディスク・ファイル・メタデータの他の読み出しに応答するのに十分なメタデータを記憶することを含み得る。
【００３６】
ステップ３１６の実行後、ハイパーバイザ１０２は、たとえアクセスされた実際のファイルが、ネイティブ・ファイル・フォーマットと一致することもしないこともできるプラグイン・ファイル・フォーマットを有するプラグインファイル１２２であったとしても、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有するネイティブ・ハイパーバイザ・ディスク・ファイルが開かれたものと信じ得る。プラグインファイル１２２はその後、独自仕様イメージ・バックアップ・ファイル２００をハイパーバイザ１０２のネイティブ・ファイル・フォーマットでハイパーバイザ１０２に示すためにフィルタモジュール１１０によって使用され得る。
【００３７】
方法３００は、オペレーティングシステムブートに関連づけられた読み出し動作を送信するステップ３１８、およびオペレーティングシステムブートに関連づけられた読み出し動作をインターセプトするステップ３２０を含み得る。たとえば、図１のハイパーバイザ１０２が、ステップ３１８で、図２のオペレーティングシステム２０４のブートに関連づけられた読み出し動作を送信し得、図１のフィルタモジュール１１０が、ステップ３２０で、オペレーティングシステム２０４のブートに関連づけられた、ファイル読み出し動作またはブロック読み出し動作のような読み出し動作をインターセプトし得る。オペレーティングシステム２０４のブートは、ステップ３１８およびステップ３２０で送信およびインターセプトされる読み出し動作という結果を生じ得る、ブートローダコード２５４のようなブートコードの実行を含み得る。
【００３８】
方法３００は、独自仕様イメージバックアップからオペレーティング・システム・データを収集するステップ３２２を含み得る。たとえば、図１のフィルタモジュール１１０が、ステップ３２２で、図２の独自仕様イメージ・バックアップ・ファイル２００または再構成されたディスクファイル２５０からオペレーティングシステム２０４のデータを収集し得る。
【００３９】
方法３００は、オペレーティング・システム・データをハイパーバイザのネイティブフォーマットに再フォーマットするステップ３２４を含み得る。たとえば、図１のフィルタモジュール１１０が、ステップ３２４で、オペレーティング・システム・データをハイパーバイザ１０２のネイティブ・ファイル・フォーマットでフォーマットされたディスクファイルから収集されたように見せるために、ステップ３２２で収集されたオペレーティング・システム・データをハイパーバイザ１０２のネイティブフォーマットに再フォーマットし得る。
【００４０】
方法３００は、再フォーマットされたオペレーティング・システム・データを送信するステップ３２６、および再フォーマットされたオペレーティング・システム・データを受信するステップ３２８を含み得る。たとえば、図１のフィルタモジュール１１０が、ステップ３２６で、再フォーマットされたオペレーティング・システム・データを送信し得、ハイパーバイザ１０２が、ステップ３２８で、再フォーマットされたオペレーティング・システム・データを受信し得る。
【００４１】
方法３００は、再フォーマットされたオペレーティング・システム・データを使用してオペレーティングシステムをブートするステップ３３０を含み得る。たとえば、図１のハイパーバイザ１０２が、ステップ３３０で、ステップ３２８で受信された再フォーマットされたオペレーティング・システム・データを使用して、図２のオペレーティングシステム２０４をブートし得る。
【００４２】
ステップ３３０の実行後、ホストマシン上の図１のハイパーバイザ１０２は、たとえハイパーバイザ１０２がハイパーバイザ１０２のネイティブフォーマットでフォーマットされたディスクファイルを使用してゲスト仮想マシンを作成できるようにしか設計され得なくても、たとえハイパーバイザ１０２によってエミュレートされたハードウェア構成が独自仕様イメージバックファイル２００に元々記憶されていたオペレーティングシステム２０４のハードウェア構成と異なるものであっても、フィルタモジュール１１０を使用して、独自仕様イメージ・バックアップ・ファイル２００に記憶されたオペレーティングシステム２０４をハイパーバイザ１０２によってエミュレートされたハードウェア構成の使用時にブート可能であるように再構成し、続いて再構成されたオペレーティングシステム２０４をブートすることによって、ゲスト仮想マシン１０８を成功裏に作成しているであろう。したがって、本明細書において開示する例示的な方法は、仮想マシン１０８における独自仕様イメージ・バックアップ・ファイル２００のオペレーティングシステム２０４にアクセスし、同オペレーティングシステム２０４をブートすることをハイパーバイザ１０２に可能にさせる。
【００４３】
加えて、ステップ３３０の実行後、ハイパーバイザ１０２は、たとえ読み出された実際のファイルが、独自仕様ファイルフォーマットを有する独自仕様イメージ・バックアップ・ファイル２００からのものであっても、読み出し動作がハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有するネイティブ・ハイパーバイザ・ディスク・ファイル上で成功裏に実行されたものと信じるようフィルタモジュール１１０によって思い込まされているであろう。フィルタモジュール１１０の一部でこのように思い込ませることは、独自仕様イメージ・バックアップ・ファイル２００をハイパーバイザ１０２のネイティブ・ファイル・フォーマットでハイパーバイザ１０２に示すことをフィルタモジュール１１０に可能にさせ、それによってハイパーバイザ１０２によって有効に読み出され得るディスクファイルのタイプを拡大する。
【００４４】
方法３００は、独自仕様イメージバックアップにおけるデータを独自仕様フォーマットからハイパーバイザのネイティブフォーマットに再フォーマットするステップ３３２を含み得る。たとえば、図１のフィルタモジュール１１０が、ステップ３３２で、独自仕様イメージ・バックアップ・ファイル２００におけるデータを独自仕様フォーマットからハイパーバイザ１０２のネイティブフォーマットに再フォーマットし得る。ステップ３３２の再フォーマットするステップは、プラグインファイル１２２に向けられたインターセプトされた読み出し要求に関連して実行され得るか、または任意のインターセプトされた読み出し要求とは別個に実行され得る。加えて、ステップ３３２の再フォーマットは、ステップ３２４で実行される再フォーマットに関連して実行され得る。
【００４５】
方法３００は、再フォーマットされたデータを置換ディスクファイルに記憶するステップ３３４を含み得る。たとえば、図１のフィルタモジュール１１０が、ステップ３３４で、再フォーマットされたデータを置換ディスクファイルに記憶し得る。置換ディスクファイルは、ハイパーバイザ１０２のネイティブフォーマットを有するディスクファイルであってよい。たとえば、プラグインファイル１２２が、ハイパーバイザ１０２のネイティブフォーマットを有し、置換ディスクファイルとして機能してもよい。あるいは、置換ディスクファイルは、プラグインファイル１２２とは別個でもよい。いずれのケースにおいても、ステップ３３４は、置換ディスクファイルを再フォーマットされたデータで「満たすこと」を含むことができる。続いて、独自仕様イメージ・バックアップ・ファイル２００におけるデータが再フォーマットされ、置換ディスクファイルに記憶され終わると、ステップ３３２の終わりに、独自仕様イメージ・バックアップ・ファイル２００が置換ディスクファイルによって置換され、以前は独自仕様イメージ・バックアップ・ファイル２００から応じられていたプラグインファイル１２２に向けられた要求はその後、置換ディスクファイルから応じられ得る。
【００４６】
加えて、ステップ３３４の部分的な実行でさえ、フィルタモジュール１１０に、独自仕様イメージ・バックアップ・ファイル２００と置換ディスクファイルからロードバランシングによってデータを収集することにより、インターセプトされた読み出し要求に応答することを可能にさせ得、それは、独自仕様イメージ・バックアップ・ファイル２００と置換ディスクファイルの両方から同時にデータを収集して読み出し要求に応じることを可能にし得る。たとえば、ステップ３３４が完了する前で、置換ディスクファイルが、独自仕様イメージ・バックアップ・ファイル２００からの再フォーマットされたデータで部分的にしか「満たされて」いなくても、フィルタモジュール１１０は、独自仕様イメージ・バックアップ・ファイル２００と置換ディスクファイルとの間でデータの収集をバランシングすることにより、インターセプトされた読み出し要求に応じることができ、それは、インターセプトされた読み出し要求に応じることをスピードアップさせ得る。
【００４７】
ステップ３３４の実行後、フィルタモジュール１１０は、ハイパーバイザ１０２のネイティブ・ハイパーバイザ・ディスク・ファイルである置換ディスクファイルを成功裏に作成し、および／または満たし、仮想マシン１０８が置換ディスクファイルを使用して維持されることを可能にする。置換ディスクファイルはネイティブ・ハイパーバイザ・ディスク・ファイルであるので、ハイパーバイザ１０２が置換ディスクファイルから仮想マシン１０８を維持することは、ハイパーバイザ１０２が仮想マシン１０８を維持するためにフィルタモジュール１１０の機能がもはや必要とされないことができるので、それが独自仕様イメージ・バックアップ・ファイル２００からのものであった場合よりも効率的であり得る。
【００４８】
方法３００は、ファイル読み出し要求が送信されるステップ３３６、およびファイル読み出し要求がインターセプトされるステップ３３８を含み得る。たとえば、ハイパーバイザ１０２が、ステップ３３６で、プラグインファイル１２２に向けられたファイル読み出し要求を送信し得、フィルタモジュール１１０がステップ３３８でファイル読み出し要求をインターセプトし得る。
【００４９】
ステップ３３８の後、方法３００は、読み出し要求が独自仕様ディスクファイルからデータを収集するように変更されるステップ３４０を含み得る。たとえば、フィルタモジュール１１０が、ステップ３４０で、データがプラグインファイル１２２からの代わりに独自仕様イメージ・バックアップ・ファイル２００から収集されることを指示するように読み出し要求を変更し得る。この変更は、プラグインファイル１２２におけるポインタによって可能にされ得、それによって、独自仕様イメージ・バックアップ・ファイル２００がハイパーバイザ１０２によってプラグインファイル１２２に送信される任意の読み出しおよび／または書き込み要求の実際のターゲットであることを示す。
【００５０】
方法３００は、データがハイパーバイザのネイティブ・ファイル・フォーマットに再フォーマットされるステップ３４２を含み得る。たとえば、フィルタモジュール１１０がステップ３４２で、ステップ３４０で変更された要求に応答して収集されたデータをハイパーバイザ１０２のネイティブ・ファイル・フォーマットに再フォーマットし得る。データのこの再フォーマットは、データを、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットでフォーマットされているがゆえにネイティブ・ハイパーバイザ・ディスク・ファイルから収集されたかのようにハイパーバイザ１０２に見せるように意図され得る。
【００５１】
加えて、または代わりに、ステップ３３８の後、方法３００は、置換ディスクファイルからデータを収集するように読み出し要求を変更するステップ３４４を含み得る。たとえば、フィルタモジュール１１０がステップ３４４で、ステップ３３８でインターセプトされた読み出し要求を、元々は独自仕様イメージ・バックアップ・ファイル２００に記憶されていたが、その後にハイパーバイザ１０２のネイティブ・ファイル・フォーマットに再フォーマットされ、置換ディスクファイルに記憶されたデータを収集するように変更し得る。
【００５２】
方法３００は、収集されたデータが送信されるステップ３４６、および収集されたデータが受信されるステップ３４８を含み得る。たとえば、フィルタモジュール１１０がステップ３４６で、収集されたデータを送信し得、ハイパーバイザ１０２がステップ３４８で、収集されたデータを受信し得る。
【００５３】
ステップ３４８の実行後、ハイパーバイザ１０２は、たとえ読み出された実際のファイルまたは元々読み出された実際のファイルが独自仕様ファイルフォーマットを有する独自仕様イメージ・バックアップ・ファイル２００であったとしても読み出し要求がハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有するネイティブ・ハイパーバイザ・ディスク・ファイル上で成功裏に実行されたものと信じるようにフィルタモジュール１１０によって思い込まされているであろうし、および／または、読み出し要求が置換ファイル上で成功裏に実行されているであろう。
【００５４】
方法３００は、書き込み要求が送信されるステップ３５０、および書き込み要求がインターセプトされるステップ３５２を含み得る。たとえば、ハイパーバイザ１０２が、ステップ３５０で、プラグインファイル１２２における特定の場所に向けられた書き込み要求を送信し、フィルタモジュール１１０がステップ３５２で、書き込み要求をインターセプトし得る。
【００５５】
ステップ３５２の後、方法３００は、書き込み要求がデータを独自仕様ディスクファイル内の場所に独自仕様ファイルフォーマットで書き込むように変更されるステップ３５４を含み得る。たとえば、フィルタモジュール１１０がステップ３５４で、データがプラグインファイル１２２の代わりに独自仕様イメージ・バックアップ・ファイル２００内の場所に書き込まれることを指示するように書き込み要求を変更し得る。
【００５６】
加えて、または代わりに、ステップ３５２の後、方法３００は、データを差分ディスクファイルに書き込むように書き込み要求を変更するステップ３５６を含み得る。たとえば、ファイルシステム１１２が、ステップ３５６で、ステップ３５２でインターセプトされた書き込み要求からのデータを差分ディスクファイルに書き込み得る。ネイティブ・ファイル・フォーマットを有する差分ディスクファイルが作成され得る。差分ディスクファイルは、プラグインファイル１２２に関連づけられ得る。
【００５７】
差分ディスクファイルは、ハイパーバイザ１０２が、差分ディスクファイルへの書き込み要求を実行することによって、それ自身がゲスト仮想マシンのすべての書き込み要求に対処するために、ネイティブスナップショット／差分ディスクケイパビリティによって構成される場合、容易化され得る。たとえば、ハイパーバイザ１０２がディスクファイルのスナップショットである差分ディスクファイルの作成をサポートする場合、フィルタモジュール１１０またはシステム１００の他のモジュールが、プラグインファイル１２２に関連づけられた差分ディスクを作成するようハイパーバイザ１０２に命令し得る。差分ディスクファイルは、ＳｔｏｒａｇｅＣｒａｆｔ（登録商標）のＳｈａｄｏｗＰｒｏｔｅｃｔ（登録商標）増分（ＳＰＩ）イメージ・バックアップ・ファイルのような増分イメージ・バックアップ・ファイルと、いくつかの点で同様であり得る。しかしながら、連続的に増加するオフセットによって更新されるＳＰＩイメージ・バックアップ・ファイルとは違い、差分ディスクファイルは、仮想マシンディスクデータのランダムオフセット書き込みを可能にし得る。差分ディスクファイルの作成後、プラグインファイル１２２へのゲスト仮想マシン１０８のすべての書き込みは、その代わりにハイパーバイザ１０２によって差分ディスクファイルに書き込まれ得る。差分ディスクファイルは、ＶＨＤＸまたはＶＭＤＫファイルフォーマットのようなネイティブ・ファイル・フォーマットを有し得る。この例において、ゲスト仮想マシン１０８からの書き込み要求のすべては、ハイパーバイザ１０２自身によって取り扱われることができ、差分ディスクファイルに直接送信される。この例におけるハイパーバイザ１０２は、プラグインファイル１２２への書き込み要求を発行し続けるが、すべての書き込み要求を差分ディスクファイルに向け得る。
【００５８】
方法３００は、成功を報告するステップ３５８および成功レポートを受信するステップ３６０を含み得る。たとえば、フィルタモジュール１１０がステップ３５８で成功を報告し得、ハイパーバイザ１０２がステップ３６０で成功レポートを受信し得る。
【００５９】
ステップ３６０の実行後、ハイパーバイザ１０２は、たとえ書き込まれた実際のファイルが独自仕様ファイルフォーマットを有する独自仕様イメージ・バックアップ・ファイル２００であっても書き込み要求がハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有するネイティブ・ハイパーバイザ・ディスク・ファイル上で成功裏に実行されたものと信じるようにフィルタモジュール１１０によって思い込まされているであろうし、または、書き込み要求が差分ディスクファイル上で成功裏に実行されているであろう。
【００６０】
上記例においてフィルタモジュール１１０により実行された方法３００のステップが、ハイパーバイザ１０２と同一のホストマシン上で実行されるカーネルモードまたはユーザモードのモジュールのような、フィルタモジュール１１０以外のモジュールによって実行され得ることが理解される。
【００６１】
要求を「変更すること」を含む本明細書において説明したステップの各々が、その代わりに、要求を「変更された」要求と同一の最終結果を達成するように構成された１つまたは複数の新たな要求によって置き換えることおよび／またはその１つまたは複数の新たな要求に関連づけることによって実現され得ることがさらに理解される。たとえば、読み出し要求の「変更」は、読み出し要求を待ち行列に入れること、および独自仕様ディスクファイルへの関連づけられた読み出し要求を開始することを含み得る。関連づけられた読み出し要求に応答して受信されたデータが続いて、関連づけられた読み出し要求のバッファを待ち行列に入れられた読み出し要求のためのバッファにコピーすること等によって、待ち行列に入れられた読み出し要求のバッファに入れられ得る。この例では、待ち行列に入れられた読み出し要求と関連づけられた読み出し要求の両者が共有バッファを使用し得るか、またはそれらは、それら自身の別個のバッファを有し得る。
【００６２】
本明細書において説明された実施形態は、以下においてより詳細に説明されるように、さまざまなコンピュータハードウェアまたはソフトウェアモジュールまたはフィルタを含む専用または汎用コンピュータの使用を含み得る。
【００６３】
本明細書において説明された実施形態は、コンピュータ実行可能な命令またはデータ構造を搬送するまたは記憶するためのコンピュータ可読媒体を使用して実現され得る。そのようなコンピュータ可読媒体は、汎用または専用コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、または他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気記憶デバイス、または所望のプログラムコードをコンピュータ実行可能な命令またはデータ構造の形態で搬送または記憶するために使用され得、汎用コンピュータ、専用コンピュータ、または仮想マシンのような仮想コンピュータによってアクセスされ得る、任意の他の記憶媒体を含む、非一時的コンピュータ可読記憶媒体を含み得る。上述したものの組み合わせもまた、コンピュータ可読媒体の範囲内に含まれ得る。
【００６４】
コンピュータ実行可能な命令は、たとえば、汎用コンピュータ、専用コンピュータ、または仮想マシンのような仮想コンピュータに特定の機能または機能のグループを実行させる、命令およびデータを備える。主題は、構造的な特徴および／または方法ステップに固有の表現で説明されているが、添付の請求項において定義される主題が上述した特定の特徴またはステップに必ずしも限定されないことが理解されるべきである。むしろ、上述した特定の特徴およびステップは、特許請求の範囲を実現する例示的な形態として開示されている。
【００６５】
本明細書において使用される場合、「モジュール」または「フィルタモジュール」という用語は、コンピュータシステム上で実行されるソフトウェアオブジェクトまたはルーチンのことを言い得る。本明細書において説明される異なるモジュールまたはフィルタモジュールは、（たとえば、別個のスレッドとして）コンピュータシステム上で実行されるオブジェクトまたは処理として実現され得る。本明細書において説明されたシステムおよび方法は、好ましくはソフトウェアにおいて実現されるが、ハードウェアにおける実現またはソフトウェアとハードウェアとの組み合わせもまた、可能であり、意図される。
【００６６】
本明細書に記載されたすべての例および条件付きの表現は、技術を促進するために発明者によって寄与された例示的な実施形態および概念を読者が理解するのを助けるための教示目的のために意図され、そのような具体的に記載された例および条件への限定ではないものとして解釈されるべきである。
【要約】      （修正有）【課題】独自仕様イメージバックアップをハイパーバイザによってブート可能なディスクファイルとしてハイパーバイザに示す。【解決手段】オペレーティングシステムを記憶する独自仕様イメージバックアップを識別し、独自仕様イメージバックアップに対応するプラグインファイルを作成し、ハイパーバイザによってエミュレートされたハードウェアの使用時にオペレーティングシステムをブート可能に再構成し、独自仕様イメージバックアップからオペレーティング・システム・データを収集し、フィルタモジュールを使用してオペレーティング・システム・データをハイパーバイザのネイティブフォーマットに再フォーマットし、ハイパーバイザの仮想マシンにおいてオペレーティングシステムをブートし、再フォーマットされたオペレーティング・システム・データをハイパーバイザのネイティブフォーマットで置換ディスクファイルに記憶する。【選択図】図３Ａ【図１】
0005819561.tif 000002
【図２】
0005819561.tif 000003
【図３Ａ】
0005819561.tif 000004
【図３Ｂ】
0005819561.tif 000005