(57)【要約】【課題】ハイパーバイザに独自仕様データをネイティブハイパーバイザデータとして提示する。【解決手段】方法は、独自仕様フォーマットを有する独自仕様ディスクファイルを識別することを含む。さらに、方法は、独自仕様ディスクファイルに対応するプラグインファイルを生成することを含む。また、方法は、プラグインファイルを対象とするファイル読取リクエストをインターセプトし、プラグインファイルおよび独自仕様ディスクファイルのうちの少なくとも一方から収集したデータで読取リクエストのそれぞれに応答することを含む。データは、ネイティブハイパーバイザディスクファイルフォーマットでフォーマットされていることになっているネイティブハイパーバイザディスクファイルからデータが収集されているかのように構築される。【選択図】  図２Ａ
2018185874.tif 000002
【特許請求の範囲】
【請求項１】
実行されると、１つまたは複数のプロセッサに、ハイパーバイザに独自仕様ディスクファイルをネイティブハイパーバイザディスクファイルとして提示する方法を実行させるように構成された１つまたは複数のプログラムを格納する１つまたは複数のコンピュータ読取り可能媒体であって、方法は、
独自仕様ファイルフォーマットを有する独自仕様ディスクファイルに対応するプラグインファイルを生成することであって、前記ハイパーバイザは、前記プラグインファイルをネイティブハイパーバイザディスクファイルであると誤認し、前記プラグインファイルは、ネイティブハイパーバイザディスクファイルフォーマットとは異なるプラグインファイルフォーマットを有し、前記プラグインファイルは、前記ネイティブハイパーバイザディスクファイルフォーマットを有する対応するファイルの期待サイズに設定されるサイズ属性を有するスパースファイルである、前記生成すること、
ハイパーバイザと、前記プラグインファイルが格納されるファイルシステムとの間にあるファイルシステムフィルタドライバを用いて、前記プラグインファイルを対象とするファイル読取リクエストをインターセプトすること、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルおよび前記独自仕様ディスクファイルのうちの少なくとも一方から収集されるデータで前記ファイル読取リクエストのそれぞれに応答することを備え、前記ネイティブハイパーバイザディスクファイルフォーマットでフォーマットされていることになっているネイティブハイパーバイザディスクファイルからデータが収集されているかのように前記データが構築される、１つまたは複数のコンピュータ読取り可能媒体。
【請求項２】
前記プラグインファイルの一部の名前属性によって、前記プラグインファイルが、前記ネイティブハイパーバイザディスクファイルフォーマットを有するものとして誤って識別される、請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項３】
前記プラグインファイルの一部の名前属性は、前記プラグインファイルのファイル拡張子の名前属性である、請求項２に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項４】
前記プラグインファイルは、プラグインファイルフォーマットを有するものとして前記プラグインファイルを識別するメタデータを含む、請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項５】
前記プラグインファイルを格納する外部のデータストレージシステムは、プラグインファイルフォーマットを有するものとして前記プラグインファイルを識別する、請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項６】
前記方法は、
前記ハイパーバイザを用いて、前記プラグインファイルと関連する差分ディスクファイルを生成すること、
前記ハイパーバイザにおいて書込リクエストを受信すること、
前記ハイパーバイザを用いて、前記書込リクエストを前記差分ディスクファイルにもたらすことをさらに備える、請求項１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項７】
実行されると、１つまたは複数のプロセッサに、ネイティブハイパーバイザディスクファイルとしてハイパーバイザに独自仕様ディスクファイルを提示する方法を実行させるように構成された１つまたは複数のプログラムを格納する１つまたは複数のコンピュータ読取り可能媒体であって、方法は、
独自仕様ファイルフォーマットを有する前記独自仕様ディスクファイルに対応するプラグインファイルを生成することであって、前記ハイパーバイザは、前記プラグインファイルをネイティブハイパーバイザディスクファイルであると誤認し、前記プラグインファイルは、ネイティブハイパーバイザディスクファイルフォーマットとは異なるプラグインファイルフォーマットを有し、前記プラグインファイルは、前記ネイティブハイパーバイザディスクファイルフォーマットを有する対応するファイルの期待サイズに設定されるサイズ属性を有するスパースファイルである、前記生成すること、
ハイパーバイザと、前記プラグインファイルが格納されるファイルシステムとの間にあるファイルシステムフィルタドライバを用いて、前記プラグインファイルを対象とするファイルオープンリクエストをインターセプトすること、
前記プラグインファイルがプラグインファイルフォーマットを有することを判断すること、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルが成功裏に開かれたというレポートとともに前記ファイルオープンリクエストに応答すること、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルを対象とするファイル読取リクエストをインターセプトすること、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルおよび前記独自仕様ディスクファイルのうちの少なくとも一方から収集されるデータで前記ファイル読取リクエストのそれぞれに応答することを備え、
前記ネイティブハイパーバイザディスクファイルフォーマットでフォーマットされていることになっているネイティブハイパーバイザディスクファイルからデータが収集されているかのように前記データが構築される、１つまたは複数のコンピュータ読取り可能媒体。
【請求項８】
前記プラグインファイルのファイル拡張子の名前属性によって、前記ネイティブハイパーバイザディスクファイルフォーマットを有するものとして前記プラグインファイルが誤って識別される、請求項７に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項９】
前記プラグインファイルが前記プラグインファイルフォーマットを有すると判断することは、前記プラグインファイルフォーマットを有するものとして前記プラグインファイルを識別するメタデータが、前記プラグインファイルに存在すると判断することを含む、請求項７に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１０】
前記プラグインファイルが前記プラグインファイルフォーマットを有すると判断することは、前記プラグインファイルが前記プラグインファイルを格納する外部のデータストレージシステムに格納された前記プラグインファイルフォーマットを有するファイルのリストに存在することを判断することを含む、請求項７に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１１】
前記方法は、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルを対象とするファイルサイズ属性リクエストをインターセプトすること、
前記ファイルサイズ属性リクエストが、変化せずに前記ファイルシステムフィルタドライバを通過し、対応する応答が変化せずに前記ファイルシステムフィルタドライバを通過することを可能にすること、をさらに備える、請求項７に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１２】
前記方法は、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルを対象とするファイルサイズ属性リクエストをインターセプトすること、
前記ネイティブハイパーバイザディスクファイルフォーマットを有する前記プラグインファイルに対応するファイルの期待サイズを判断すること、
前記ファイルシステムフィルタドライバを用いて、前記期待サイズとともに前記ファイルサイズ属性リクエストに応答することをさらに備える、請求項７に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１３】
前記方法は、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイル内の特定の場所を対象とするファイル書込リクエストをインターセプトすること、
前記プラグインファイル内のある場所、または前記プラグインファイルに対して外部にある場所に前記ファイル書込リクエストからのデータを格納することによって前記ファイル書込リクエストを実行すること、
前記ファイルシステムフィルタドライバを用いて、前記ファイル書込リクエストが成功裏に実行されたというレポートとともに前記ファイル書込リクエストに応答すること、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイル内の前記特定の場所を対象とする後のファイル読取リクエストをインターセプトすること、
前記ファイルシステムフィルタドライバを用いて、前記ファイル書込リクエストからの前記データが事前に格納された前記場所から収集される第２のデータで前記後のファイル読取リクエストに応答することをさらに備え、
前記ネイティブハイパーバイザディスクファイルフォーマットでフォーマットされていることになっている前記ネイティブハイパーバイザディスクファイルから第２のデータが収集されているかのように前記第２のデータが構築される、請求項７に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１４】
前記方法は、
前記ハイパーバイザを用いて、前記プラグインファイルを対象とするファイル書込リクエストをインターセプトすること、
前記ネイティブハイパーバイザディスクファイルフォーマットで、前記プラグインファイルに対して外部にある場所に前記ファイル書込リクエストからのデータを格納することによって前記ファイル書込リクエストのそれぞれを実行すること、
前記ハイパーバイザを用いて、前記ファイル書込リクエストが成功裏に実行されたというレポートとともに前記ファイル書込リクエストのそれぞれに応答することをさらに備える、請求項７に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１５】
実行されると、１つまたは複数のプロセッサに、ハイパーバイザに独自仕様データをネイティブハイパーバイザデータとして提示する方法を実行させるように構成された１つまたは複数のプログラムを格納する１つまたは複数のコンピュータ読取り可能媒体であって、方法は、
独自仕様ファイルフォーマットを有する独自仕様ディスクファイルを識別すること、
前記独自仕様ディスクファイルに対応するプラグインファイルを識別すること、ここで、前記プラグインファイルは、ネイティブハイパーバイザディスクファイルフォーマットとは異なるプラグインファイルフォーマットを有し、前記ハイパーバイザは、前記プラグインファイルをネイティブハイパーバイザディスクファイルであると誤認し、前記プラグインファイルは、前記ネイティブハイパーバイザディスクファイルフォーマットを有する対応するファイルの期待サイズに設定されるサイズ属性を有するスパースファイルであり、
前記プラグインファイルを対象とする読取リクエストをインターセプトすること、
各読取リクエストに応答して、
前記独自仕様ディスクファイルから収集されるデータを収集すること、
ネイティブハイパーバイザディスクファイルフォーマットで構築されていることになっているネイティブハイパーバイザディスクファイルからデータが収集されているかのように前記データを再構築すること、
再構築されたデータで応答すること
を備える、１つまたは複数のコンピュータ読取り可能媒体。
【請求項１６】
前記プラグインファイルの一部の名前属性によって、前記プラグインファイルが、前記ネイティブハイパーバイザディスクファイルフォーマットを有するものとして誤って識別される、請求項１５に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１７】
前記プラグインファイルの一部の名前属性は、前記プラグインファイルのファイル拡張子の名前属性である、請求項１６に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１８】
前記プラグインファイルは、前記プラグインファイルフォーマットを有するものとして前記プラグインファイルを識別するメタデータを含む、請求項１５に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項１９】
前記プラグインファイルを格納する外部のデータストレージシステムは、前記プラグインファイルフォーマットを有するものとして前記プラグインファイルを識別する、請求項１５に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項２０】
前記方法は、
前記プラグインファイルと関連する差分ディスクファイルを生成すること、
前記プラグインファイルを対象とする書込リクエストを受信すること、
前記書込リクエストを前記差分ディスクファイルにリダイレクトすることをさらに備える、請求項１５に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項２１】
実行されると、１つまたは複数のプロセッサに、ネイティブハイパーバイザデータとしてハイパーバイザに独自仕様データを提示する方法を実行させるように構成された１つまたは複数のプログラムを格納する１つまたは複数のコンピュータ読取り可能媒体であって、方法は、
独自仕様ファイルフォーマットを有する独自仕様ディスクファイルを識別すること、
前記独自仕様ディスクファイルに対応するプラグインファイルを識別することであって、ここで、前記ハイパーバイザは、前記プラグインファイルをネイティブハイパーバイザディスクファイルであると誤認し、前記プラグインファイルは、ネイティブハイパーバイザディスクファイルフォーマットとは異なるプラグインファイルフォーマットを有し、前記プラグインファイルは、前記ネイティブハイパーバイザディスクファイルフォーマットを有する対応するファイルの期待サイズに設定されるサイズ属性を有するスパースファイルである、前記識別すること、
前記プラグインファイルと関連する差分ディスクファイルを生成すること、
前記プラグインファイルを対象とする書込リクエストを受信すること、
前記書込リクエストを前記差分ディスクファイルにリダイレクトすること
を備える、１つまたは複数のコンピュータ読取り可能媒体。
【請求項２２】
前記方法は、
前記プラグインファイルを対象とする読取リクエストをインターセプトすること、
各読取リクエストに応答して、
前記独自仕様ディスクファイルから収集されたデータを収集すること、
ネイティブハイパーバイザディスクファイルフォーマットで構築されていることになっているネイティブハイパーバイザディスクファイルからデータが収集されているかのように前記データを再構築すること
再構築されたデータで応答すること
をさらに備える、請求項２１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項２３】
前記プラグインファイルの一部の名前属性によって、ネイティブハイパーバイザディスクファイルフォーマットを有するものとして前記プラグインファイルが誤って識別される、請求項２１に記載の１つまたは複数のコンピュータ読取り可能媒体。
【請求項２４】
前記プラグインファイルの一部の名前属性は、前記プラグインファイルのファイル拡張子の名前属性である、請求項２３に記載の１つまたは複数のコンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示する実施形態は、ハイパーバイザに独自仕様データをネイティブ・ハイパーバイザ・データとして提示することに関する。
【背景技術】
【０００２】
仮想マシンは、物理機械（例えば、コンピュータ）のようにプログラムを実行する物理機械のソフトウェアベースのエミュレーションである。一般に、仮想マシンは、実コンピュータのコンピュータアーキテクチャおよび機能に基づいて動作する。一般に、仮想マシンは、完全オペレーティングシステムの実行をサポートする完全システムプラットフォームを提供する。通常、仮想マシンは、既存のアーキテクチャをエミュレートし、実ハードウェアが利用できない（例えば、旧式のプラットフォームで実行される）プログラムを実行するためのプラットフォームを提供するか、またはエネルギー消費および費用対効果の両方の点から、計算リソースをより効果的に使用させる仮想マシンの複数のインスタンスを有する目的で構築される。このように計算リソースを効果的に使用することは、ハードウェア仮想化として知られている。仮想マシンの使用により、複数オペレーティングシステム環境が、互いから強く分離された状態で、同じコンピュータ上に共存することが可能となり、実機械のものとは幾分異なる命令セットアーキテクチャ（ＩＳＡ）が可能となり、およびアプリケーション事前設定、保守、高可用性、ならびに災害回復が可能となる。
【０００３】
ハイパーバイザは、仮想マシンを作り出して実行する、ソフトウェア、コンピュータファームウェア、またはコンピュータハードウェアである。ハイパーバイザが１つまたは複数の仮想マシンを実行しているコンピュータは、一般に、ホストマシンと呼ばれ、一方、そのホストマシンで動作している各仮想マシンは、一般に、ゲストマシンと呼ばれる。ハイパーバイザは、ゲスト・オペレーティング・システムに仮想動作プラットフォームを提供し、ゲスト・オペレーティング・システムの実行を管理する。さまざまなオペレーティングシステムの複数のインスタンスは、仮想化されたハードウェアリソースを共有してもよい。
【０００４】
一般に、ホストマシンは、ハイパーバイザを使用して、ゲスト仮想マシンを生成するのに必要なディスクデータを含むか、または参照する仮想マシンディスクファイルにアクセスすることによって、ゲスト仮想マシンを作り出す。ハイパーバイザを使用する際に生じる共通の問題の１つは、いくつかのハイパーバイザが、そのハイパーバイザにネイティブである特定のファイル・フォーマットを有する仮想マシンディスクファイルへのアクセスのためだけに設計されることである。例えば、ＭｉｃｒｏｓｏｆｔＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザは、ゲスト仮想マシンを生成するために、ＶＨＤファイル・フォーマットおよびＶＨＤＸファイル・フォーマットを有する仮想マシンディスクファイルにアクセスすることのみが可能となるよう設計されている。ＶＨＤファイル・フォーマットおよびＶＨＤＸファイル・フォーマットは、ＭｉｃｒｏｓｏｆｔＨｙｐｅｒ−Ｖ（登録商標）ハイパーバイザのためのネイティブ・ファイル・フォーマットである。特に、ＭｉｃｒｏｓｏｆｔＨｙｐｅｒ−Ｖ（登録商標）技術は、サードパーティが、独自のディスク・イメージ・フォーマットから、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザに、仮想マシンディスクファイルとしての仮想マシンによってアクセスするために、ディスクデータを迅速に添付することを可能にするのに必要なディスク・プラグイン・アプリケーション・プログラミング・インターフェース（ＡＰＩ）が欠如している。一部のハイパーバイザが、このように、例えば、ディスクプラグインＡＰＩの欠如によって、さまざまな異なるフォーマットの仮想マシンディスクファイルにアクセスできないことにより、これらのハイパーバイザを使用して仮想マシンを作り出すために使用することができる仮想マシンディスクファイルが限定される。
【０００５】
本明細書で特許請求する発明の主題は、任意の欠点を解決する、または上記したような環境においてのみ動作する実施形態に限定されない。むしろ、この背景技術は、本明細書で説明するいくつかの実施形態を実施することができる技術領域の一例を示すことのみのために提供される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願公開第２０１２／０１８５４２７号明細書
【特許文献２】米国特許出願公開第２０１２／０２７８８０６号明細書
【特許文献３】米国特許第８４１３１４６号明細書
【特許文献４】米国特許出願公開第２０１４／０００６８５８号明細書
【特許文献５】米国特許出願公開第２０１４／０２８１２１７号明細書
【発明の概要】
【０００７】
概して、本明細書で説明する例示的実施形態は、独自仕様データを、ネイティブ・ハイパーバイザ・データとしてハイパーバイザに示すことに関する。本明細書で開示する例示的方法では、ハイパーバイザがネイティブ・ハイパーバイザ・ディスク・ファイルを使用してゲスト仮想マシンを作り出すことのみを可能にするよう設計されていても、ホストマシン上のハイパーバイザが、独自仕様ディスクファイルを使用してゲスト仮想マシンを作り出すことを可能にすることができる。したがって、本明細書で開示する例示的方法により、ハイパーバイザが、さまざまな異なるフォーマットのディスクファイルにアクセスすることが可能となり、それにより、ゲスト仮想マシンを作り出すためにハイパーバイザが使用することができるディスクファイルの種類を広げることが可能となる。
【０００８】
一例において、１つまたは複数の非一時的コンピュータ読取り可能媒体は、実行されると、１つまたは複数のプロセッサに、さまざまな動作を含むネイティブ・ハイパーバイザ・データとしてハイパーバイザに独自仕様データを示す方法を実行させるように構成された１つまたは複数のプログラムを格納する。例えば、本方法は、独自仕様フォーマットを有する独自仕様ディスクファイルを識別することを含む。さらに、本方法は、独自仕様ディスクファイルに対応するプラグインファイルを生成することを含む。本方法はまた、プラグインファイルを対象とする読取リクエストをインターセプトすることを含む。さらに、本方法は、プラグインファイルおよび独自仕様ディスクファイルのうちの少なくとも一方から収集したデータとともに読取リクエストのそれぞれに応答することを含む。該データは、ハイパーバイザのネイティブフォーマットでフォーマットされているということにより、ネイティブ・ハイパーバイザ・ディスク・ファイルからデータ収集されたように見えるように構築される。この例において、プラグインファイルの名前属性の部分は、ハイパーバイザのネイティブフォーマットを有するものとしてプラグインファイルを誤って識別する可能性があり、プラグインファイルの名前属性の部分は、プラグインファイルの名前属性のファイル拡張とすることができる。また、この例において、プラグインファイルは、プラグインフォーマットを有するものとしてプラグインファイルを識別するメタデータを含むことができる。さらに、この例において、プラグインファイルの外部にあるデータ・ストレージ・システムは、プラグインフォーマットを有するものとしてプラグインファイルを識別することができる。また、この例において、プラグインファイルは、ハイパーバイザのネイティブフォーマットを有する対応ファイルの期待サイズに設定されたサイズ属性を有するスパースファイル（ｓｐａｒｓｅ  ｆｉｌｅ）とすることができる。さらに、この例において、本方法は、プラグインファイルと関連する差分ディスクファイルを生成すること、書込リクエストを受信すること、および書込リクエストを差分ディスクファイルにもたらすことをさらに含むことができる。
【０００９】
他の例示的実施形態において、１つまたは複数の非一時的コンピュータ読取り可能媒体は、実行されると、１つまたは複数のプロセッサに、さまざまな動作を含むネイティブ・ハイパーバイザ・データとしてハイパーバイザに独自仕様データを示す方法を実行させるように構成された１つまたは複数のプログラムを格納する。例えば、本方法は、独自仕様フォーマットを有する独自仕様ディスクファイルを識別することを含む。さらに、本方法は、独自仕様ディスクファイルに対応するプラグインファイルを生成することを含む。本方法はまた、プラグインファイルと関連する差分ディスクファイルを生成することを含む。さらに、本方法は、書込リクエストを受信することを含む。本方法はまた、書込リクエストを差分ディスクファイルにもたらすことを含む。この例において、本方法は、プラグインファイルを対象とする読取リクエストをインターセプトすること、およびプラグインファイルおよび独自仕様ディスクファイルのうちの少なくとも一方から収集されたデータとともに読取リクエストのそれぞれに応答することをさらに含むことができる。データは、ハイパーバイザのネイティブフォーマットでフォーマットされているということにより、ネイティブ・ハイパーバイザ・ディスク・ファイルからデータが収集されたように見えるよう構築される。また、この例において、プラグインファイルの名前属性の部分は、ハイパーバイザのネイティブフォーマットを有するものとしてプラグインファイルを誤って識別する可能性があり、プラグインファイルの名前属性の部分は、プラグインファイルの名前属性のファイル拡張とすることができる。
【００１０】
他の例示的実施形態において、１つまたは複数の非一時的コンピュータ読取り可能媒体は、実行されると、１つまたは複数のプロセッサに、さまざまな動作を含むネイティブ・ハイパーバイザ・データとしてハイパーバイザに独自仕様データを示す方法を実行させるように構成された１つまたは複数のプログラムを格納する。例えば、本方法は、独自仕様フォーマットを有する独自仕様ディスクファイルを識別することを含む。さらに、本方法は、独自仕様ディスクファイルに対応するプラグインファイルを生成することを含む。本方法はまた、プラグインファイルを対象とするファイル・オープン・リクエストをインターセプトすることを含む。さらに、本方法は、プラグインファイルがプラグインフォーマットを有することを判断することを含む。本方法はまた、プラグインファイルが成功裏に開かれたというレポートとともにファイル・オープン・リクエストに応答することを含む。さらに、本方法は、プラグインファイルを対象とする読取リクエストをインターセプトすることを含む。本方法はまた、プラグインファイルおよび独自仕様ディスクファイルのうちの少なくとも一方から収集したデータとともに読取リクエストのそれぞれに応答することを含む。該データは、ハイパーバイザのネイティブフォーマットでフォーマットされているということにより、ネイティブ・ハイパーバイザ・ディスク・ファイルからデータが収集されたように見えるようデータを構築する。この例において、プラグインファイルの名前属性のファイル拡張は、ハイパーバイザのネイティブフォーマットを有するものとしてプラグインファイルを誤って識別する可能性がある。また、この例において、プラグインファイルが、プラグインフォーマットを有することを判断することは、プラグインフォーマットを有するものとしてプラグインファイルを識別するメタデータがプラグインファイルに存在することを判断することを含むことができる。さらに、この例において、プラグインファイルがプラグインフォーマットを有することを判断することは、プラグインファイルが、プラグインファイルの外部にあるデータ・ストレージ・システムに格納されたプラグインフォーマットを有するファイルのリストに存在することを判断することを含んでもよい。また、この例において、プラグインファイルは、ハイパーバイザのネイティブフォーマットを有する対応ファイルの期待サイズに設定されたサイズ属性を有するスパースファイルとすることができる。さらに、この例において、本方法は、プラグインファイルを対象とするファイルサイズ属性リクエストをインターセプトすること、およびファイルサイズ属性リクエストが変化せずに通過し、対応する応答が変化せずに通過することを可能にすることをさらに含むことができる。また、この例において、本方法は、プラグインファイルを対象とするファイルサイズ属性リクエストをインターセプトすること、ハイパーバイザのネイティブフォーマットを有するプラグインファイルに対応するファイルの期待サイズを判断すること、および期待サイズとともにファイルサイズ属性リクエストに応答することをさらに含むことができる。さらに、この例において、本方法は、プラグインファイルにおける特定の位置を対象とする書込リクエストをインターセプトすること、プラグインファイル内のある位置における、またはプラグインファイルの外部のある位置における書込リクエストからデータを格納することによって書込リクエストを実行すること、書込リクエストが成功裏に実行されたというレポートとともに書込リクエストに応答すること、プラグインファイルにおける特定の位置を対象とする後の読取リクエストをインターセプトすること、および書込リクエストからのデータが以前に格納された位置から収集された第２のデータで後の読取リクエストに応答することをさらに含む。第２のデータは、ハイパーバイザのネイティブフォーマットでフォーマットされているということにより、ネイティブ・ハイパーバイザ・ディスク・ファイルからデータが収集されたように見えるよう構築される。また、この例において、本方法は、プラグインファイルを対象とする書込リクエストをインターセプトすること、ハイパーバイザのネイティブフォーマットにおいて、ならびにプラグインファイルの外部の位置において、書込リクエストからデータを格納することによって書込リクエストのそれぞれを実行すること、および書込リクエストが成功裏に実行されたというレポートとともに書込リクエストのそれぞれに応答することをさらに含むことができる。
【００１１】
上記の一般的な記述および以下の詳細な説明の両方は、請求されるように、例示および説明のためのものであり、本発明を制限するものではないことが理解されよう。
例示的な実施形態について、添付図面を用いてさらなる特殊性および詳細を記載および説明する。
【図面の簡単な説明】
【００１２】
【図１】例示的なハイパーバイザシステムを示す模式的なブロック図である。
【図２Ａ】独自仕様ディスクファイルをネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザに示す例示的な方法の模式的なフローチャートである。
【図２Ｂ】独自仕様ディスクファイルをネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザに示す例示的な方法の模式的なフローチャートである。
【図２Ｃ】独自仕様ディスクファイルをネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザに示す例示的な方法の模式的なフローチャートである。
【図２Ｄ】独自仕様ディスクファイルをネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザに示す例示的な方法の模式的なフローチャートである。
【発明を実施するための形態】
【００１３】
本明細書で使用する「ネイティブ・ハイパーバイザ・ディスク・ファイル」は、特定のハイパーバイザにネイティブであるファイル・フォーマットを有する仮想マシンディスクファイルを意味する。一例には、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザが使用するＶＨＤＸファイル・フォーマットがある。他の例には、ＶＭｗａｒｅ（登録商標）ハイパーバイザが使用するＶＭＤＫファイル・フォーマットがある。本明細書で使用する「独自仕様ファイル・フォーマット」は、特定のハイパーバイザがネイティブに理解しないファイル・フォーマットを意味する。本明細書で使用する「独自仕様ディスクファイル」は、ディスクデータを備え、独自仕様ファイル・フォーマットで構築されるファイル、すなわち、重複排除資格情報コンテナまたはデータベースなどのデータ・ストレージ・システムを意味する。一例には、ＳｔｏｒａｇｅＣｒａｆｔ（登録商標）ＳｈａｄｏｗＰｒｏｔｅｃｔ（登録商標）Ｆｕｌｌ（ＳＰＦ）バックアップ・イメージ・ファイル・フォーマットがある。本明細書で使用する「プラグインファイル」は、ファイル・システム・フィルタ・ドライバによって認識可能であり、かつオペレーティングシステム、ハイパーバイザ、およびファイル・システム・フィルタ・ドライバによって提供されるフィルタリング機能のため他のすべてのアプリケーションに対するネイティブ・ハイパーバイザ・ディスク・ファイルのように見える、ネイティブ・ハイパーバイザ・ディスク・ファイルに対応するファイルを意味する。このファイルは、一般に、独自仕様ディスクファイルを示し、対応する実ネイティブ・ハイパーバイザ・ディスク・ファイルが有するであろうサイズよりもかなり小さい。一例には、“ｖｈｄｘ”ファイル拡張のため、およびファイル・システム・フィルタ・ドライバのフィルタリング動作のため、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ＶＨＤＸネイティブ・ハイパーバイザ・ディスク・ファイルであると思われるが、実際には、ネイティブ・ハイパーバイザ・ディスク・ファイルの通常コンテンツまたは構造を必ずしも含まず、むしろ実際には、そのプラグインファイルとは別々の“ｖｍ．ｓｐｆ”と名付けられた対応するＳＰＦバックアップイメージ独自仕様ディスクファイルを示すプラグインである“ｖｍ．ｖｈｄｘ”と名前づけされたファイルがある。本明細書で使用する「プラグイン・ファイル・フォーマット」は、プラグイン・ファイル・フォーマットの構造が、ネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマットと異なるという理由、および（ネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマットと同じ構造を有する）プラグインファイルに通常格納されるデータの少なくとも一部が他の場所に格納されるという理由のうちの少なくとも一方から、プラグインファイルが対応するネイティブ・ハイパーバイザ・ディスク・ファイルのネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマットと異なるプラグインファイルのファイル・フォーマットを意味する。上記の例から、プラグインファイル“ｖｍ．ｖｈｄｘ”は、ＶＨＤＸネイティブ・ハイパーバイザ・ディスク・ファイルのネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマット構造と異なるプラグイン・ファイル・フォーマット構造を有する。別の例において、“ｖｍ２．ｖｈｄｘ”と名前づけされたプラグインファイルは、ＶＨＤＸネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマット構造と同じプラグイン・ファイル・フォーマット構造を有する可能性があるが、“ｖｍ２．ｖｈｄｘ”プラグインファイルは、ネイティブ・ハイパーバイザ・ディスク・ファイルに通常格納される何らかのデータを消失している可能性があるが、代わりに、ファイル・システム・フィルタ・ドライバを使用して、“ｖｍ２．ｓｐｆ”と名前づけされた対応するＳＰＦバックアップイメージ独自仕様ディスクファイルから探索可能である。
【００１４】
図１は、例示的なハイパーバイザシステム１００を示す模式的なブロック図である。図１で示されるように、例示的システム１００は、ホストマシンハイパーバイザ１０２、複数のゲスト仮想マシン１０４、１０６、および１０８、ファイル・システム・フィルタ・ドライバ１１０、ファイルシステム１１２、およびストレージ１１４を備える。ストレージ１１４は、ネイティブ・ハイパーバイザ・ディスク・ファイル１１６および１１８、独自仕様ディスクファイル１２０、およびプラグインファイル１２２を備える。
【００１５】
ハイパーバイザ１０２は、仮想マシン１０４、１０６、および１０８などの、１つまたは複数のゲスト仮想マシンを生成、実行、および管理するホストマシン（図示せず）の、コンピュータソフトウェア、コンピュータファームウェア、またはコンピュータハードウェアとすることができる。仮想マシン１０４、１０６、および１０８は、ハイパーバイザ１０２によって生成、実行、および管理された仮想マシンである。仮想マシン１０４、１０６、および１０８のそれぞれは、物理機械（例えば、コンピュータ）のようにプログラムを実行するよう構成された物理機械のソフトウェアベースのエミュレーションである。
【００１６】
仮想マシン１０４、１０６、および１０８のそれぞれを生成することは、ハイパーバイザ１０２がストレージ１１４のディスクファイルにアクセスすることによって実現された。特に、ハイパーバイザ１０２は、ネイティブ・ハイパーバイザ・ディスク・ファイル１１６にアクセスすることによって仮想マシン１０４を生成し、ネイティブ・ハイパーバイザ・ディスク・ファイル１１６は、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有する。同様に、ハイパーバイザ１０２は、ネイティブ・ハイパーバイザ・ディスク・ファイル１１８にアクセスすることによって仮想マシン１０６を生成し、ネイティブ・ハイパーバイザ・ディスク・ファイル１１８はまた、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有する。
【００１７】
対照的に、ハイパーバイザ１０２は、ファイル・システム・フィルタ・ドライバ１１０が独自仕様ディスクファイル１２０をハイパーバイザ１０２に提示することによって仮想マシン１０８を生成した。独自仕様ディスクファイル１２０は、ハイパーバイザ１０２がネイティブに理解しないファイル・フォーマットを有する。ハイパーバイザ１０２は、ハイパーバイザ１０２がネイティブに理解しないファイル・フォーマットを有する独自仕様ディスクファイル１２０のため、独自仕様ディスクファイル１２０に直接アクセスすることができないが、本明細書で開示する方法により、ファイル・システム・フィルタ・ドライバ１１０は、独自仕様ディスクファイル１２０を、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットでハイパーバイザ１０２に提示することが可能となる。
【００１８】
１つの例示的実施形態において、ハイパーバイザ１０２は、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザとすることができ、独自仕様ディスクファイル１２０は、ＳｔｏｒａｇｅＣｒａｆｔ（登録商標）ＳｈａｄｏｗＰｒｏｔｅｃｔ（登録商標）Ｆｕｌｌ（ＳＰＦ）バックアップ・イメージ・ファイルとすることができる。本明細書で開示する例示的方法を使用することで、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザは、ＳＰＦバックアップ・イメージ・ファイルを使用すること、および対応するプラグインファイルを使用することのうちの少なくとも一方を行って、そのＳＰＦバックアップ・イメージ・ファイル・フォーマットが、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザによってネイティブに理解されなくても、仮想マシン１０８を生成することができる。このことは、ファイル・システム・フィルタ・ドライバ１１０が、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザからＳＰＦバックアップ・イメージ・ファイルおよびプラグインファイルのうちの少なくとも一方に送信される各リクエストをインターセプトし、ＳＰＦバックアップ・イメージ・ファイルおよびプラグインファイルのうちの少なくとも一方が、有効なＶＨＤＸファイルであると思われるようにリクエストに応答することによって、実現される。有効なＶＨＤＸファイルは、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザに対するネイティブ・ハイパーバイザ・ディスク・ファイルである。このような方法で、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザは、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザによってネイティブに理解されないファイル・フォーマットを有するＳＰＦバックアップ・イメージ・ファイルのため、ＳＰＦバックアップ・イメージ・ファイルに直接アクセスすることができないが、本明細書で開示する方法によって、ファイル・システム・フィルタ・ドライバ１１０は、ＳＰＦバックアップ・イメージ・ファイルを、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザのネイティブＶＨＤＸファイル・フォーマットでＭｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザに提示することが可能となり、それにより、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザがゲスト仮想マシンを生成するのに使用することができるディスクファイルの種類を拡張することが可能となる。
【００１９】
図１のシステム１００ではストレージは単一であるが、システム１００が２つ以上のストレージを備えることができることが理解されよう。さらに、図１では、ストレージ１１４がハイパーバイザ１０２にローカルであるが、ストレージ１１４は、ハイパーバイザ１０２から遠隔でもよいことが理解されよう。さらに、ファイル１１６、１１８、１２０、および１２２の１つまたは複数を、ハイパーバイザ１０２から遠隔に格納することができる。例えば、プラグインファイル１２２は、ハイパーバイザ１０２にローカルに格納してもよく、一方、独自仕様ディスクファイル１２０は、ハイパーバイザ１０２から遠隔に格納される。さらに、ファイル・システム・フィルタ・ドライバ１１０は、図１の例示的システム１００において唯一のフィルタドライバであるが、ファイル・システム・フィルタ・ドライバ１１０の機能は、システム１００、またはシステム１００にローカルであるか、システム１００から遠隔である別のシステムに存在する１つまたは複数の同様のフィルタドライバによって置き換えるか、または強化されてもよいことが理解されよう。さらに、独自仕様ディスクファイル１２０は、実ファイルではない可能性があるが、代わりに、ディスクデータを備え、独自仕様ファイル・フォーマットで構築される重複排除資格情報コンテナまたはデータベースなどの他の何らかのデータ・ストレージ・システムとしてもよい。
【００２０】
図１では１つの特定の環境を説明してきたが、図１の特定の環境は、本明細書で開示する例示的方法を使用することができる無数の環境の内の１つであることが理解されよう。例示的環境の範囲は、任意の特定の環境に限定されることを意図しない。
【００２１】
図２Ａから図２Ｄは、独自仕様ディスクファイルをネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザに提示する例示的な方法２００の模式的なフローチャートである。方法２００は、少なくともいくつかの実施形態において、図１のシステム１００のハイパーバイザ１０２、ファイル・システム・フィルタ・ドライバ１１０、およびファイルシステム１１２によって実施することができる。例えば、ハイパーバイザ１０２、ファイル・システム・フィルタ・ドライバ１１０、およびファイルシステム１１２は、コンピュータ命令を実行して、方法２００のステップ２０２から２６４の１つまたは複数によって示されるように、独自仕様ディスクファイル１２０から、プラグインファイル１２２を使用して、ネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザ１０２にデータを提示する動作を行うよう構成することができる。離散的ステップとして示したが、さまざまなステップは、所望の実装態様により、追加ステップに分割してもよく、より少ないステップに組み合わせてもよく、または削除してもよい。図１および図２Ａから図２Ｄを参照して方法２００を説明する。
【００２２】
方法２００は、独自仕様ディスクファイルに対応するプラグインファイルを生成するステップ２０２を含むことができる。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２０２で、独自仕様ディスクファイル１２０に対応するプラグインファイル１２２を生成する。あるいは、ハイパーバイザ１０２と同じホストマシンで動く、または別のローカル機もしくは遠隔機で動くユーザ・モード・モジュールなどの別のドライバまたはモジュールが、ステップ２０２で、独自仕様ディスクファイル１２０に対応するプラグインファイル１２２を生成してもよい。上記のように、独自仕様ディスクファイル１２０は独自仕様ファイル・フォーマットを有し、プラグインファイル１２２はプラグイン・ファイル・フォーマットを有する。また、上述したように、プラグインファイル１２２は、独自仕様ディスクファイル１２０が格納されるストレージ１１４に格納することができ、またはプラグインファイル１２２および独自仕様ディスクファイル１２０のうちの少なくとも一方は、別のローカルストレージまたは遠隔ストレージに格納してもよい。図１に示したように、プラグインファイル１２２は、独自仕様ディスクファイル１２０を示すポインタを含むことができる。さらに、プラグインファイル１２２は、ストレージ１１４または別のローカルストレージもしくは別の遠隔ストレージの他の場所に格納されるデータベースなどの、プラグインファイル１２２の外部のデータ・ストレージ・システムを使用して独自仕様ディスクファイル１２０と関連付けてもよい。
【００２３】
方法２００は、ファイル・オープン・リクエストを送信するステップ２０４と、ファイル・オープン・リクエストをインターセプトするステップ２０６とを含む。例えば、ハイパーバイザ１０２は、ステップ２０４で、プラグインファイル１２２を対象とするファイル・オープン・リクエストを送信し、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２０６で、ファイル・オープン・リクエストをインターセプトする。このリクエストのインターセプト、および本明細書で説明する他のすべてのリクエストのインターセプトは、ハイパーバイザ１０２と、プラグインファイル１２２が格納されるファイルシステム１１２との間にあるファイル・システム・フィルタ・ドライバ１１０により可能とすることができる。この位置では、ファイル・システム・フィルタ・ドライバ１１０は、必要に応じて、ハイパーバイザ１０２からファイルシステム１１２へのすべてのリクエストをインターセプト、検討、および修正することができる。
【００２４】
上記の例を続けると、プラグインファイル１２２がプラグイン・ファイル・フォーマットを有していても、ハイパーバイザ１０２は、プラグインファイルがネイティブ・ファイル・フォーマットを有すると誤って見なす可能性があるので、プラグインファイル１２２を開こうとする可能性がある。例えば、プラグインファイル１２２の名前属性のファイル拡張などの、プラグインファイル１２２の名前属性の部分が、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有するとしてプラグインファイル１２２を誤って識別する可能性がある。この例において、ハイパーバイザ１０２は、Ｍｉｃｒｏｓｏｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザとすることができ、プラグインファイル１２２は、“ｖｍ．ｖｈｄｘ”と名前づけすることができ、独自仕様ディスクファイル１２０は、プラグインファイル１２２とは別の“ｖｍ．ｓｐｆ”と名前づけされるＳＰＦバックアップ・イメージ・ファイルである。“ｖｈｄｘ”ファイル拡張は、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｈｙｐｅｒ−Ｖ（登録商標）ハイパーバイザ１０２のネイティブ・ＶＨＤＸファイル・フォーマットを有するとして、プラグインファイル１２２を誤って識別する。当然のことながら、実際にはプラグインファイル１２２は、ネイティブＶＨＤＸファイルの通常コンテンツおよび構造のうちの少なくとも一方を含まないが、代わりに、実際には、プラグインファイル１２２とは別の“ｖｍ．ｓｐｆ”と名前づけされる対応するＳＰＦバックアップ・イメージ・ファイルを示すプラグインファイルである。
【００２５】
方法２００は、プラグインファイルがプラグイン・ファイル・フォーマットを有することを判断するステップ２０８を含む。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２０８で、プラグインファイル１２２がプラグイン・ファイル・フォーマットを有することを判断する。この判断は、さまざまな異なる方法で行うことができる。例えば、ファイル・システム・フィルタ・ドライバ１１０は、プラグイン・ファイル・フォーマットを有するとしてプラグインファイル１２２を識別するメタデータがプラグインファイル１２２に存在すると判断することによって、プラグインファイル１２２が、プラグイン・ファイル・フォーマットを有すると判断することができる。あるいは、またはさらに、ファイル・システム・フィルタ・ドライバ１１０は、プラグインファイル１２２が、ストレージ１１４または別のストレージで他の場所に格納されるデータベースなどの、プラグインファイル１２２の外部のデータ・ストレージ・システムに格納されるプラグイン・ファイル・フォーマットを有するファイルのリストに存在すると判断することによって、プラグインファイル１２２がプラグイン・ファイル・フォーマットを有すると判断することができる。
【００２６】
方法２００は、成功したことを報告するステップ２１０と、成功レポートを受信するステップ２１２とを含む。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２１０でプラグインファイル１２２が成功裏に開かれたというレポートとともに以前に受信したファイル・オープン・リクエストに応答し、ハイパーバイザ１０２は、ステップ２１２で、成功レポートを受信する。
【００２７】
この成功を報告することは、独自仕様ディスクファイル１２０が実際に開かれた後、または独自仕様ディスクファイル１２０が実際には開かれなかった場合に、ステップ２１０およびステップ２１２で実行してもよい。実際には、少なくともいくつかのハイパーバイザが、ディスクデータを実際にリクエストすることなく仮想マシンディスクファイルのメタデータの多くの読取りを実行し、仮想マシンディスクファイルでのいくつかの連続したファイル・オープン・リクエストおよびファイル・クローズ・リクエストの間でそれを行うことが発見された。このことは、仮想マシンディスクファイルがゲスト仮想マシンに取り付けられている場合または仮想マシン構成設定が修正されている場合に、最も多く生じる。したがって、性能およびユーザ体験を向上させ、リソースの使用を減らすために、ファイル・システム・フィルタ・ドライバ１１０は、絶対に必要になるまで、独自仕様ディスクファイル１２０を実際に開くことを遅らせることができる。これは、プラグインファイル１２２内の仮想マシンディスク・ファイル・メタデータの他の読取りに応答するために十分なメタデータを格納することを含み、独自仕様ディスクファイル１２０を開くために必要な通常は高価なものがなくても、そのようなリクエストに応答することができる。
【００２８】
ステップ２１２を実行したあと、ハイパーバイザ１０２は、アクセスした実際のファイルが、プラグイン・ファイル・フォーマットを有するプラグインファイル１２２であったとしても、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有するネイティブ・ハイパーバイザ・ディスク・ファイルが開かれたと判断する。プラグインファイル１２２は、ファイル・システム・フィルタ・ドライバ１１０によって後に使用され、独自仕様ディスクファイル１２０を、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットでハイパーバイザ１０２に提示する。
【００２９】
ステップ２１２を実行したあと、方法２００は、ステップ２１４、２３６、または２５６のいずれかに進むことができる。ステップ２１４から２６４は、以下では昇順に説明するが、ステップ２１４から２３４、２３６から２５４、および２５６から２６４のグループのいずれも、ステップ２１２を実行したあと、任意の時間に、繰り返しを含み、実行することができる。
【００３０】
方法２００は、ファイル読取リクエストを送信するステップ２１４と、ファイル読取リクエストをインターセプトするステップ２１６とを含む。例えば、ハイパーバイザ１０２は、ステップ２１４で、プラグインファイル１２２を対象とするファイル読取リクエストを送信し、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２１６で、ファイル読取リクエストをインターセプトする。
【００３１】
方法２００は、読取リクエストを修正し、独自仕様ディスクファイルからデータを収集するステップ２１８を含む。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２１８で、読取リクエストを修正し、データが、プラグインファイル１２２からではなく、独自仕様ディスクファイル１２０から収集されるよう指示する。この修正は、プラグインファイル１２２におけるポインタによって可能としてもよく、それにより、独自仕様ディスクファイル１２０が、ハイパーバイザ１０２によってプラグインファイル１２２に送信された任意の読取リクエストおよび書込リクエストのうちの少なくとも一方の実際の対象となるべきであると指示する。
【００３２】
方法２００は、修正済みリクエストを送信するステップ２２０と、修正済みリクエストを受信するステップ２２２とを含む。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２２０で、修正済みリクエストを送信し、ファイルシステム１１２は、ステップ２２２で、修正済みリクエストを受信する。
【００３３】
方法２００は、リクエストされたデータを独自仕様ディスクファイルから収集するステップ２２４を含む。例えば、ファイルシステム１１２は、ステップ２２４で、修正済みリクエストによって指示されたように、データを独自仕様ディスクファイル１２０から収集する。
【００３４】
方法２００は、収集されたデータを送信するステップ２２６と、収集されたデータを受信するステップ２２８とを含む。例えば、ファイルシステム１１２は、ステップ２２６で、収集されたデータを送信し、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２２８で、収集されたデータを受信する。
【００３５】
方法２００は、データを、ハイパーバイザのネイティブ・ファイル・フォーマットに再構築するステップ２３０を含む。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２３０で、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットに受信されたデータを再構築する。このようにデータを再構築することは、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットにフォーマットされているということにより、ネイティブ・ハイパーバイザ・ディスク・ファイルから収集されるように、そのデータをハイパーバイザ１０２に見えるようにすることを意図する。
【００３６】
方法２００は、再構築データを送信するステップ２３２と、再構築データを受信するステップ２３４とを含む。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２３２で、再構築データを送信し、ハイパーバイザ１０２は、ステップ２３４で、再構築データを受信する。
【００３７】
ステップ２３４を実行したあと、ハイパーバイザ１０２は、読み取られた実際のファイルが、独自仕様ファイル・フォーマットを有する独自仕様ディスクファイル１２０であったとしても、読取リクエストがハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有するネイティブ・ハイパーバイザ・ディスク・ファイルで成功裏に実行されたと判断するよう、ファイル・システム・フィルタ・ドライバ１１０によってごまかされる。ファイル・システム・フィルタ・ドライバ１１０の一部をこのようにごまかすことにより、ファイル・システム・フィルタ・ドライバ１１０が、独自仕様ディスクファイル１２０をハイパーバイザ１０２のネイティブ・ファイル・フォーマットでハイパーバイザ１０２に提示することが可能となり、それにより、ハイパーバイザ１０２によって効率的に読み取ることができるディスクファイルの種類を拡張することが可能となる。
【００３８】
方法２００は、ファイル書込リクエストを送信するステップ２３６と、ファイル書込リクエストをインターセプトするステップ２３８とを含む。例えば、ハイパーバイザ１０２は、ステップ２３６で、プラグインファイル１２２における特定の位置を対象とするファイル書込リクエストを送信し、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２３８で、ファイル書込リクエストをインターセプトする。
【００３９】
方法２００は、ファイル書込リクエストを修正して、独自仕様ファイル・フォーマットで独自仕様ディスクファイルにおける位置にデータを書き込むステップ２４０を含む。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２４０で、ファイル書込リクエストを修正し、データが、プラグインファイル１２２からではなく、独自仕様ディスクファイル１２０における位置に書き込まれるよう指示する。
【００４０】
方法２００は、修正済みリクエストを送信するステップ２４２と、修正済みリクエストを受信するステップ２４４とを含む。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２４２で、修正済みリクエストを送信し、ファイルシステム１１２は、ステップ２４４で、修正済みリクエストを受信する。
【００４１】
方法２００は、データを独自仕様ディスクファイルに書き込むステップ２４６を含む。例えば、ファイルシステム１１２は、ステップ２４６で、修正済み書込リクエストからのデータを、修正済みリクエストによって指示されたように、独自仕様ディスクファイル１２０に書き込む。
【００４２】
方法２００は、成功したことを報告するステップ２４８と、成功レポートを受信するステップ２５０とを含む。例えば、ファイルシステム１１２は、ステップ２４８で、成功を報告し、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２５０で、成功レポートを受信する。
【００４３】
方法２００は、成功したことを報告するステップ２５２と、成功レポートを受信するステップ２５４とを含む。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２５２で、成功を報告し、ハイパーバイザ１０２は、ステップ２５４で、成功レポートを受信する。
【００４４】
ステップ２５４を実行したあと、ハイパーバイザ１０２は、書き込まれた実際のファイルが、独自仕様ファイル・フォーマットを有する独自仕様ディスクファイル１２０であったとしても、書込リクエストがハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有するネイティブ・ハイパーバイザ・ディスク・ファイルで成功裏に実行されたと判断するよう、ファイル・システム・フィルタ・ドライバ１１０によってごまかされる。ファイル・システム・フィルタ・ドライバ１１０の一部をこのようにごまかすことにより、ファイル・システム・フィルタ・ドライバ１１０が、独自仕様ディスクファイル１２０をハイパーバイザ１０２のネイティブ・ファイル・フォーマットでハイパーバイザ１０２に提示することが可能となり、それにより、ハイパーバイザ１０２によって効率的に書き込むことができるディスクファイルの種類を拡張することが可能となる。
【００４５】
方法２００は、ファイルサイズ属性リクエストを送信するステップ２５６と、ファイルサイズ属性リクエストをインターセプトするステップ２５８とを含む。例えば、ハイパーバイザ１０２は、ステップ２５６で、プラグインファイル１２２を対象とするファイルサイズ属性リクエストを送信し、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２５８で、ファイルサイズ属性リクエストをインターセプトする。
【００４６】
方法２００は、ハイパーバイザのネイティブ・ファイル・フォーマットを有するプラグインファイルに対応するファイルの期待サイズを判断するステップ２６０を含む。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２６０で、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有するプラグインファイル１２２に対応するファイルの期待サイズを判断する。言い換えると、期待サイズは、ネイティブ・ファイル・フォーマットを有する同等のファイルが、プラグインファイル１２２および独自仕様ディスクファイル１２０の組み合わせを交換するために生成されるべき同等のファイルであったであろうというサイズとすることができる。
【００４７】
方法２００は、期待サイズを送信するステップ２６２と、期待サイズを受信するステップ２６４とを含む。例えば、ファイル・システム・フィルタ・ドライバ１１０は、ステップ２６２で、期待サイズを送信し、ハイパーバイザ１０２は、ステップ２６４で、期待サイズを受信する。
【００４８】
ステップ２６４を実行したあと、ハイパーバイザ１０２は、ファイルサイズ属性リクエストの対象であった実ファイルが、期待サイズのネイティブ・ハイパーバイザ・ディスク・ファイルと一致しない可能性があるサイズを有するプラグインファイル１２２であっても、ファイルサイズ属性リクエストが、ハイパーバイザ１０２の期待ファイルサイズのネイティブ・ハイパーバイザ・ディスク・ファイルを有するネイティブ・ハイパーバイザ・ディスク・ファイルで成功裏に実行されたと判断するよう、ファイル・システム・フィルタ・ドライバ１１０によってごまかされる。ファイル・システム・フィルタ・ドライバ１１０の一部をこのようにごまかすことにより、ファイル・システム・フィルタ・ドライバ１１０が、独自仕様ディスクファイル１２０をハイパーバイザ１０２のネイティブ・ハイパーバイザ・ディスク・ファイルの期待ファイルサイズでハイパーバイザ１０２に提示することが可能となり、それにより、ハイパーバイザ１０２によって使用することができるディスクファイルの種類を拡張することが可能となる。
【００４９】
ステップ２０２、２０６、２０８、２１０、２１６、２１８、２２０、２２８、２３０、２３２、２３８、２４０、２４２、および２５０は、ハイパーバイザ１０２と同じホストマシンで動作するユーザ・モード・モジュールなどの、ファイル・システム・フィルタ・ドライバ１１０ではないドライバまたはモジュールによって実行してもよいことが理解されよう。
【００５０】
ステップ２６０から２６４は、プラグインファイル１２２が、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットを有する対応ファイルの期待サイズに設定されたサイズ属性を有する、ニュー・テクノロジー・ファイル・システム（ＮＴＦＳ）スパースファイルなどのスパースファイルであると置き換えてもよいことも理解されよう。この例において、ファイル・システム・フィルタ・ドライバ１１０は、ファイルサイズ属性リクエストが無変更でファイル・システム・フィルタ・ドライバ１１０を通過することを可能にし、対応する応答が、無変更でファイル・システム・フィルタ・ドライバを通過することを可能にしながら、ステップ２６０から２６４を交換してもよい。
【００５１】
ステップ２１８、２２０、２２２、および２２４は、リクエストされたデータの少なくとも一部をプラグインファイル１２２に実際に格納することができるように、修正されて、読取リクエストでリクエストされたデータを、プラグインファイル１２２および独自仕様ディスクファイル１２０のうちの少なくとも一方から収集することができることがさらに理解されよう。さらに、これらのステップは、修正されて、リクエストされたデータが、重複排除資格情報コンテナまたはデータベースなどの、他の何らかのローカルまたは遠隔データ・ストレージ・システムから収集されることを可能にしてもよい。
【００５２】
ステップ２４０、２４２、２４４、および２４６は、修正されて、書込リクエストで特定されたデータが、プラグインファイル１２２における位置またはプラグインファイル１２２の外部の位置に書き込まれることができることも理解されよう。さらに、データは、ハイパーバイザ１０２のネイティブ・ファイル・フォーマットまたは独自仕様ファイル・フォーマットで格納してもよい。
【００５３】
ステップ２３６から２５４は、代わりに修正されて、ネイティブスナップショット／差分ディスク機能を有するハイパーバイザが、プラグインファイルの代わりに差分ディスクファイルで書込リクエストを実行することによって、ゲスト仮想マシンのすべての書込リクエストを自身で扱うことができることも理解されよう。例えば、ハイパーバイザ１０２が、差分ディスクファイルの生成をサポートする場合、差分ディスクファイルは仮想マシンディスクファイルのスナップショットであり、ファイル・システム・フィルタ・ドライバ１１０、またはシステム１００の他のドライバもしくはモジュールは、ハイパーバイザ１０２に、プラグインファイル１２２と関連する差分ディスクを生成するよう指示することができる。差分ディスクファイルは、ＳｔｏｒａｇｅＣｒａｆｔ（登録商標）ＳｈａｄｏｗＰｒｏｔｅｃｔ（登録商標）増分（ＳＰ１）バックアップ・イメージ・ファイルなどの、増分バックアップ・イメージ・ファイルといくつかの点で同様である可能性がある。しかしながら、連続的に増加するオフセットで更新されるＳＰ１バックアップ・イメージ・ファイルとは異なり、差分ディスクファイルは、仮想マシンディスクデータのランダムオフセット書き込みを可能にすることができる。差分ディスクファイルを生成したあと、ゲスト仮想マシン１０８のプラグインファイル１２２へのすべての書込みは、代わりに、ハイパーバイザ１０２によって、差分ディスクファイルに書き込まれる。差分ディスクファイルは、ＶＨＤＸまたはＶＭＤＫファイル・フォーマットなどの、ネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマットを有してもよい。ステップ２３６から２５４へのこの代替において、ゲスト仮想マシン１０８からの書込リクエストのすべては、ハイパーバイザ１０２自体によって扱われ、差分ディスクファイルに直接送信される。この代替実施形態におけるハイパーバイザは、読取リクエストをプラグインファイル１２２へ発行し続けるが、すべての書込リクエストを差分ディスクファイルにもたらす。
【００５４】
リクエストを「修正すること」を含む本明細書で説明するステップのそれぞれは、代わりに、「修正済み」リクエストと同じ最終結果を実現する１つまたは複数の新規リクエストと、そのリクエストを置き換えること、およびそのようなリクエストを関連付けることのうちの少なくとも一方を行うことによって、実施してもよいことがさらに理解されよう。例えば、読取リクエストの「修正」は、読取リクエストを待ち行列に入れること、および独自仕様ディスクファイルに関連付けられた読取リクエストを開始することを含んでもよい。その場合、関連付けられた読取リクエストに応じて受信したデータは、関連付けられた読取リクエストのバッファを、待ち行列に入れられた読取リクエストに対するバッファにコピーすることなどによって、待ち行列に入れられた読取リクエストのバッファに入れてもよい。この例において、待ち行列に入れられた読取リクエストおよび関連付けられた読取リクエストは、共有バッファを使用してもよく、またはそれら独自の専用バッファを有してもよい。
【００５５】
本明細書で説明する実施形態は、以下でより詳細に説明するような、さまざまなコンピュータハードウェアまたはソフトウェアのモジュールまたはフィルタを含む、特殊用途向けコンピュータまたは汎用コンピュータを使用することを含むことができる。
【００５６】
本明細書で説明する実施形態は、コンピュータ読取り可能媒体に格納されるコンピュータ実行可能命令またはデータ構造を搬送または有するためのコンピュータ読取り可能媒体を使用して実施してもよい。そのようなコンピュータ読取り可能媒体は、汎用コンピュータまたは特定用途向けコンピュータによってアクセスすることができる何らかの利用可能な媒体であってもよい。例えば、限定するものではないが、そのようなコンピュータ読取り可能媒体はＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、もしくは他の光学ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、またはコンピュータ実行可能命令もしくはデータ構造の形式で所望のプログラムコードを搬送もしくは格納するために使用することができ、汎用コンピュータ、特定用途向けコンピュータ、もしくは仮想マシンなどの仮想コンピュータによってアクセスすることができる他の何らかのストレージ媒体を含む非一時的コンピュータ読取り可能ストレージ媒体を含むことができる。上記の組み合わせもまた、コンピュータ読取り可能媒体の範囲内に含むことができる。
【００５７】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、特定用途向けコンピュータ、または仮想マシンなどの仮想コンピュータに、ある機能または機能のグループを実行させる命令およびデータを備える。本発明の主題は、構造的特徴および方法論的ステップのうちの少なくとも一方に特有の言語で説明してきたが、添付の特許請求の範囲で定義される本発明の主題は、上記した特定の特徴またはステップに必ずしも限定されないことを理解すべきである。むしろ、上記した特定の特徴およびステップは、特許請求の範囲を実現する例示的形態として開示される。
【００５８】
本明細書で使用する場合、「モジュール」または「フィルタ」という用語は、コンピューティングシステムで実行するソフトウェアオブジェクトまたはルーチンを意味することができる。本明細書で説明するさまざまなモジュールまたはフィルタは、（例えば、別々のスレッドとして）コンピュータシステムで実行するオブジェクトまたはプロセスとして実行してもよい。本明細書で説明するシステムおよび方法は、ソフトウェアで実現されるのが好ましいが、ハードウェアでの実現、またはソフトウェアとハードウェアの組み合わせでの実現も可能であり、意図される。
【００５９】
本明細書で言及するすべての例および条件付き文言は、本技術を促進するために発明者が寄与する例示的実施形態およびコンセプトを理解する際に読者が参照するためのものであり、そのような具体的に列挙した例および条件に限定されないものとして理解されるべきである。
【図１】
2018185874.tif 000003
【図２Ａ】
2018185874.tif 000004
【図２Ｂ】
2018185874.tif 000005
【図２Ｃ】
2018185874.tif 000006
【図２Ｄ】
2018185874.tif 000007