(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6568277
(24)【登録日】2019年8月9日
(45)【発行日】2019年8月28日
(54)【発明の名称】ハイパーバイザに独自仕様データをネイティブ・ハイパーバイザ・データとして提示すること
(51)【国際特許分類】
G06F 16/17 20190101AFI20190819BHJP
G06F 13/10 20060101ALI20190819BHJP
G06F 16/188 20190101ALI20190819BHJP
G06F 9/455 20060101ALI20190819BHJP
【FI】
G06F16/17
G06F13/10 330C
G06F13/10 340A
G06F16/188
G06F9/455 150
【請求項の数】21
【全頁数】21
(21)【出願番号】特願2018-157134(P2018-157134)
(22)【出願日】2018年8月24日
(62)【分割の表示】特願2015-112186(P2015-112186)の分割
【原出願日】2015年6月2日
(65)【公開番号】特開2018-185874(P2018-185874A)
(43)【公開日】2018年11月22日
【審査請求日】2018年8月24日
(31)【優先権主張番号】14/293,122
(32)【優先日】2014年6月2日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】514143862
【氏名又は名称】ストレージクラフト テクノロジー コーポレイション
【氏名又は名称原語表記】STORAGECRAFT TECHNOLOGY CORPORATION
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ネイサン エス.ブッシュマン
(72)【発明者】
【氏名】マクシム シャッキフ
【審査官】
田名網 忠雄
(56)【参考文献】
【文献】
米国特許出願公開第2014/0109086(US,A1)
【文献】
米国特許出願公開第2013/0159381(US,A1)
【文献】
米国特許出願公開第2013/0332610(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06−3/08
G06F 9/455−9/54
G06F 13/10−13/14
G06F 16/00−16/958
(57)【特許請求の範囲】
【請求項1】
実行されると、1つまたは複数のプロセッサに、ハイパーバイザに独自仕様ディスクファイルをネイティブハイパーバイザディスクファイルとして提示する方法を実行させるように構成された1つまたは複数のプログラムを格納する1つまたは複数のコンピュータ読取り可能媒体であって、方法は、
独自仕様ファイルフォーマットを有する独自仕様ディスクファイルに対応するプラグインファイルを生成することであって、前記ハイパーバイザは、前記プラグインファイルをネイティブハイパーバイザディスクファイルであると誤認し、前記プラグインファイルは、ネイティブハイパーバイザディスクファイルフォーマットとは異なるプラグインファイルフォーマットを有し、前記プラグインファイルは、前記ネイティブハイパーバイザディスクファイルフォーマットを有する対応するファイルの期待サイズに設定されるサイズ属性を有するスパースファイルである、前記生成すること、
ハイパーバイザと、前記プラグインファイルが格納されるファイルシステムとの間にあるファイルシステムフィルタドライバを用いて、前記プラグインファイルを対象とするファイル読取リクエストをインターセプトすること、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルおよび前記独自仕様ディスクファイルのうちの少なくとも一方から収集されるデータで前記ファイル読取リクエストのそれぞれに応答することを備え、前記ネイティブハイパーバイザディスクファイルフォーマットでフォーマットされていることになっているネイティブハイパーバイザディスクファイルからデータが収集されているかのように前記データが構築される、1つまたは複数のコンピュータ読取り可能媒体。
【請求項2】
前記プラグインファイルの一部の名前属性によって、前記プラグインファイルが、前記ネイティブハイパーバイザディスクファイルフォーマットを有するものとして誤って識別される、請求項1に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項3】
前記プラグインファイルの一部の名前属性は、前記プラグインファイルのファイル拡張子の名前属性である、請求項2に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項4】
前記プラグインファイルは、プラグインファイルフォーマットを有するものとして前記プラグインファイルを識別するメタデータを含む、請求項1に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項5】
前記プラグインファイルを格納する外部のデータストレージシステムは、プラグインファイルフォーマットを有するものとして前記プラグインファイルを識別する、請求項1に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項6】
実行されると、1つまたは複数のプロセッサに、ネイティブハイパーバイザディスクファイルとしてハイパーバイザに独自仕様ディスクファイルを提示する方法を実行させるように構成された1つまたは複数のプログラムを格納する1つまたは複数のコンピュータ読取り可能媒体であって、方法は、
独自仕様ファイルフォーマットを有する前記独自仕様ディスクファイルに対応するプラグインファイルを生成することであって、前記ハイパーバイザは、前記プラグインファイルをネイティブハイパーバイザディスクファイルであると誤認し、前記プラグインファイルは、ネイティブハイパーバイザディスクファイルフォーマットとは異なるプラグインファイルフォーマットを有し、前記プラグインファイルは、前記ネイティブハイパーバイザディスクファイルフォーマットを有する対応するファイルの期待サイズに設定されるサイズ属性を有するスパースファイルである、前記生成すること、
ハイパーバイザと、前記プラグインファイルが格納されるファイルシステムとの間にあるファイルシステムフィルタドライバを用いて、前記プラグインファイルを対象とするファイルオープンリクエストをインターセプトすること、
前記プラグインファイルがプラグインファイルフォーマットを有することを判断すること、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルが成功裏に開かれたというレポートとともに前記ファイルオープンリクエストに応答すること、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルを対象とするファイル読取リクエストをインターセプトすること、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルおよび前記独自仕様ディスクファイルのうちの少なくとも一方から収集されるデータで前記ファイル読取リクエストのそれぞれに応答することを備え、
前記ネイティブハイパーバイザディスクファイルフォーマットでフォーマットされていることになっているネイティブハイパーバイザディスクファイルからデータが収集されているかのように前記データが構築される、1つまたは複数のコンピュータ読取り可能媒体。
【請求項7】
前記プラグインファイルのファイル拡張子の名前属性によって、前記ネイティブハイパーバイザディスクファイルフォーマットを有するものとして前記プラグインファイルが誤って識別される、請求項6に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項8】
前記プラグインファイルが前記プラグインファイルフォーマットを有すると判断することは、前記プラグインファイルフォーマットを有するものとして前記プラグインファイルを識別するメタデータが、前記プラグインファイルに存在すると判断することを含む、請求項6に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項9】
前記プラグインファイルが前記プラグインファイルフォーマットを有すると判断することは、前記プラグインファイルが前記プラグインファイルを格納する外部のデータストレージシステムに格納された前記プラグインファイルフォーマットを有するファイルのリストに存在することを判断することを含む、請求項6に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項10】
前記方法は、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルを対象とするファイルサイズ属性リクエストをインターセプトすること、
前記ファイルサイズ属性リクエストが、変化せずに前記ファイルシステムフィルタドライバを通過し、対応する応答が変化せずに前記ファイルシステムフィルタドライバを通過することを可能にすること、をさらに備える、請求項6に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項11】
前記方法は、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイルを対象とするファイルサイズ属性リクエストをインターセプトすること、
前記ネイティブハイパーバイザディスクファイルフォーマットを有する前記プラグインファイルに対応するファイルの期待サイズを判断すること、
前記ファイルシステムフィルタドライバを用いて、前記期待サイズとともに前記ファイルサイズ属性リクエストに応答することをさらに備える、請求項6に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項12】
前記方法は、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイル内の特定の場所を対象とするファイル書込リクエストをインターセプトすること、
前記プラグインファイル内のある場所、または前記プラグインファイルに対して外部にある場所に前記ファイル書込リクエストからのデータを格納することによって前記ファイル書込リクエストを実行すること、
前記ファイルシステムフィルタドライバを用いて、前記ファイル書込リクエストが成功裏に実行されたというレポートとともに前記ファイル書込リクエストに応答すること、
前記ファイルシステムフィルタドライバを用いて、前記プラグインファイル内の前記特定の場所を対象とする後のファイル読取リクエストをインターセプトすること、
前記ファイルシステムフィルタドライバを用いて、前記ファイル書込リクエストからの前記データが事前に格納された前記場所から収集される第2のデータで前記後のファイル読取リクエストに応答することをさらに備え、
前記ネイティブハイパーバイザディスクファイルフォーマットでフォーマットされていることになっている前記ネイティブハイパーバイザディスクファイルから第2のデータが収集されているかのように前記第2のデータが構築される、請求項6に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項13】
前記方法は、
前記ハイパーバイザを用いて、前記プラグインファイルを対象とするファイル書込リクエストをインターセプトすること、
前記ネイティブハイパーバイザディスクファイルフォーマットで、前記プラグインファイルに対して外部にある場所に前記ファイル書込リクエストからのデータを格納することによって前記ファイル書込リクエストのそれぞれを実行すること、
前記ハイパーバイザを用いて、前記ファイル書込リクエストが成功裏に実行されたというレポートとともに前記ファイル書込リクエストのそれぞれに応答することをさらに備える、請求項6に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項14】
実行されると、1つまたは複数のプロセッサに、ハイパーバイザに独自仕様データをネイティブハイパーバイザデータとして提示する方法を実行させるように構成された1つまたは複数のプログラムを格納する1つまたは複数のコンピュータ読取り可能媒体であって、方法は、
独自仕様ファイルフォーマットを有する独自仕様ディスクファイルを識別すること、
前記独自仕様ディスクファイルに対応するプラグインファイルを識別すること、ここで、前記プラグインファイルは、ネイティブハイパーバイザディスクファイルフォーマットとは異なるプラグインファイルフォーマットを有し、前記ハイパーバイザは、前記プラグインファイルをネイティブハイパーバイザディスクファイルであると誤認し、前記プラグインファイルは、前記ネイティブハイパーバイザディスクファイルフォーマットを有する対応するファイルの期待サイズに設定されるサイズ属性を有するスパースファイルであり、
前記プラグインファイルを対象とする読取リクエストをインターセプトすること、
各読取リクエストに応答して、
前記独自仕様ディスクファイルから収集されるデータを収集すること、
ネイティブハイパーバイザディスクファイルフォーマットで構築されていることになっているネイティブハイパーバイザディスクファイルからデータが収集されているかのように前記データを再構築すること、
再構築されたデータで応答すること
を備える、1つまたは複数のコンピュータ読取り可能媒体。
【請求項15】
前記プラグインファイルの一部の名前属性によって、前記プラグインファイルが、前記ネイティブハイパーバイザディスクファイルフォーマットを有するものとして誤って識別される、請求項14に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項16】
前記プラグインファイルの一部の名前属性は、前記プラグインファイルのファイル拡張子の名前属性である、請求項15に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項17】
前記プラグインファイルは、前記プラグインファイルフォーマットを有するものとして前記プラグインファイルを識別するメタデータを含む、請求項14に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項18】
前記プラグインファイルを格納する外部のデータストレージシステムは、前記プラグインファイルフォーマットを有するものとして前記プラグインファイルを識別する、請求項14に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項19】
実行されると、1つまたは複数のプロセッサに、ネイティブハイパーバイザデータとしてハイパーバイザに独自仕様データを提示する方法を実行させるように構成された1つまたは複数のプログラムを格納する1つまたは複数のコンピュータ読取り可能媒体であって、方法は、
独自仕様ファイルフォーマットを有する独自仕様ディスクファイルを識別すること、
前記独自仕様ディスクファイルに対応するプラグインファイルを識別することであって、ここで、前記ハイパーバイザは、前記プラグインファイルをネイティブハイパーバイザディスクファイルであると誤認し、前記プラグインファイルは、ネイティブハイパーバイザディスクファイルフォーマットとは異なるプラグインファイルフォーマットを有し、前記プラグインファイルは、前記ネイティブハイパーバイザディスクファイルフォーマットを有する対応するファイルの期待サイズに設定されるサイズ属性を有するスパースファイルである、前記識別すること、
前記プラグインファイルと関連する差分ディスクファイルを生成すること、
前記プラグインファイルを対象とする書込リクエストを受信すること、
前記書込リクエストを前記差分ディスクファイルにリダイレクトすること
を備える、1つまたは複数のコンピュータ読取り可能媒体。
【請求項20】
前記プラグインファイルの一部の名前属性によって、ネイティブハイパーバイザディスクファイルフォーマットを有するものとして前記プラグインファイルが誤って識別される、請求項19に記載の1つまたは複数のコンピュータ読取り可能媒体。
【請求項21】
前記プラグインファイルの一部の名前属性は、前記プラグインファイルのファイル拡張子の名前属性である、請求項20に記載の1つまたは複数のコンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書で開示する実施形態は、ハイパーバイザに独自仕様データをネイティブ・ハイパーバイザ・データとして提示することに関する。
【背景技術】
【0002】
仮想マシンは、物理機械(例えば、コンピュータ)のようにプログラムを実行する物理機械のソフトウェアベースのエミュレーションである。一般に、仮想マシンは、実コンピュータのコンピュータアーキテクチャおよび機能に基づいて動作する。一般に、仮想マシンは、完全オペレーティングシステムの実行をサポートする完全システムプラットフォームを提供する。通常、仮想マシンは、既存のアーキテクチャをエミュレートし、実ハードウェアが利用できない(例えば、旧式のプラットフォームで実行される)プログラムを実行するためのプラットフォームを提供するか、またはエネルギー消費および費用対効果の両方の点から、計算リソースをより効果的に使用させる仮想マシンの複数のインスタンスを有する目的で構築される。このように計算リソースを効果的に使用することは、ハードウェア仮想化として知られている。仮想マシンの使用により、複数オペレーティングシステム環境が、互いから強く分離された状態で、同じコンピュータ上に共存することが可能となり、実機械のものとは幾分異なる命令セットアーキテクチャ(ISA)が可能となり、およびアプリケーション事前設定、保守、高可用性、ならびに災害回復が可能となる。
【0003】
ハイパーバイザは、仮想マシンを作り出して実行する、ソフトウェア、コンピュータファームウェア、またはコンピュータハードウェアである。ハイパーバイザが1つまたは複数の仮想マシンを実行しているコンピュータは、一般に、ホストマシンと呼ばれ、一方、そのホストマシンで動作している各仮想マシンは、一般に、ゲストマシンと呼ばれる。ハイパーバイザは、ゲスト・オペレーティング・システムに仮想動作プラットフォームを提供し、ゲスト・オペレーティング・システムの実行を管理する。さまざまなオペレーティングシステムの複数のインスタンスは、仮想化されたハードウェアリソースを共有してもよい。
【0004】
一般に、ホストマシンは、ハイパーバイザを使用して、ゲスト仮想マシンを生成するのに必要なディスクデータを含むか、または参照する仮想マシンディスクファイルにアクセスすることによって、ゲスト仮想マシンを作り出す。ハイパーバイザを使用する際に生じる共通の問題の1つは、いくつかのハイパーバイザが、そのハイパーバイザにネイティブである特定のファイル・フォーマットを有する仮想マシンディスクファイルへのアクセスのためだけに設計されることである。例えば、MicrosoftHyper−V(登録商標)ハイパーバイザは、ゲスト仮想マシンを生成するために、VHDファイル・フォーマットおよびVHDXファイル・フォーマットを有する仮想マシンディスクファイルにアクセスすることのみが可能となるよう設計されている。VHDファイル・フォーマットおよびVHDXファイル・フォーマットは、MicrosoftHyper−V(登録商標)ハイパーバイザのためのネイティブ・ファイル・フォーマットである。特に、MicrosoftHyper−V(登録商標)技術は、サードパーティが、独自のディスク・イメージ・フォーマットから、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザに、仮想マシンディスクファイルとしての仮想マシンによってアクセスするために、ディスクデータを迅速に添付することを可能にするのに必要なディスク・プラグイン・アプリケーション・プログラミング・インターフェース(API)が欠如している。一部のハイパーバイザが、このように、例えば、ディスクプラグインAPIの欠如によって、さまざまな異なるフォーマットの仮想マシンディスクファイルにアクセスできないことにより、これらのハイパーバイザを使用して仮想マシンを作り出すために使用することができる仮想マシンディスクファイルが限定される。
【0005】
本明細書で特許請求する発明の主題は、任意の欠点を解決する、または上記したような環境においてのみ動作する実施形態に限定されない。むしろ、この背景技術は、本明細書で説明するいくつかの実施形態を実施することができる技術領域の一例を示すことのみのために提供される。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許出願公開第2012/0185427号明細書
【特許文献2】米国特許出願公開第2012/0278806号明細書
【特許文献3】米国特許第8413146号明細書
【特許文献4】米国特許出願公開第2014/0006858号明細書
【特許文献5】米国特許出願公開第2014/0281217号明細書
【発明の概要】
【0007】
概して、本明細書で説明する例示的実施形態は、独自仕様データを、ネイティブ・ハイパーバイザ・データとしてハイパーバイザに示すことに関する。本明細書で開示する例示的方法では、ハイパーバイザがネイティブ・ハイパーバイザ・ディスク・ファイルを使用してゲスト仮想マシンを作り出すことのみを可能にするよう設計されていても、ホストマシン上のハイパーバイザが、独自仕様ディスクファイルを使用してゲスト仮想マシンを作り出すことを可能にすることができる。したがって、本明細書で開示する例示的方法により、ハイパーバイザが、さまざまな異なるフォーマットのディスクファイルにアクセスすることが可能となり、それにより、ゲスト仮想マシンを作り出すためにハイパーバイザが使用することができるディスクファイルの種類を広げることが可能となる。
【0008】
一例において、1つまたは複数の非一時的コンピュータ読取り可能媒体は、実行されると、1つまたは複数のプロセッサに、さまざまな動作を含むネイティブ・ハイパーバイザ・データとしてハイパーバイザに独自仕様データを示す方法を実行させるように構成された1つまたは複数のプログラムを格納する。例えば、本方法は、独自仕様フォーマットを有する独自仕様ディスクファイルを識別することを含む。さらに、本方法は、独自仕様ディスクファイルに対応するプラグインファイルを生成することを含む。本方法はまた、プラグインファイルを対象とする読取リクエストをインターセプトすることを含む。さらに、本方法は、プラグインファイルおよび独自仕様ディスクファイルのうちの少なくとも一方から収集したデータとともに読取リクエストのそれぞれに応答することを含む。該データは、ハイパーバイザのネイティブフォーマットでフォーマットされているということにより、ネイティブ・ハイパーバイザ・ディスク・ファイルからデータ収集されたように見えるように構築される。この例において、プラグインファイルの名前属性の部分は、ハイパーバイザのネイティブフォーマットを有するものとしてプラグインファイルを誤って識別する可能性があり、プラグインファイルの名前属性の部分は、プラグインファイルの名前属性のファイル拡張とすることができる。また、この例において、プラグインファイルは、プラグインフォーマットを有するものとしてプラグインファイルを識別するメタデータを含むことができる。さらに、この例において、プラグインファイルの外部にあるデータ・ストレージ・システムは、プラグインフォーマットを有するものとしてプラグインファイルを識別することができる。また、この例において、プラグインファイルは、ハイパーバイザのネイティブフォーマットを有する対応ファイルの期待サイズに設定されたサイズ属性を有するスパースファイル(sparse file)とすることができる。さらに、この例において、本方法は、プラグインファイルと関連する差分ディスクファイルを生成すること、書込リクエストを受信すること、および書込リクエストを差分ディスクファイルにもたらすことをさらに含むことができる。
【0009】
他の例示的実施形態において、1つまたは複数の非一時的コンピュータ読取り可能媒体は、実行されると、1つまたは複数のプロセッサに、さまざまな動作を含むネイティブ・ハイパーバイザ・データとしてハイパーバイザに独自仕様データを示す方法を実行させるように構成された1つまたは複数のプログラムを格納する。例えば、本方法は、独自仕様フォーマットを有する独自仕様ディスクファイルを識別することを含む。さらに、本方法は、独自仕様ディスクファイルに対応するプラグインファイルを生成することを含む。本方法はまた、プラグインファイルと関連する差分ディスクファイルを生成することを含む。さらに、本方法は、書込リクエストを受信することを含む。本方法はまた、書込リクエストを差分ディスクファイルにもたらすことを含む。この例において、本方法は、プラグインファイルを対象とする読取リクエストをインターセプトすること、およびプラグインファイルおよび独自仕様ディスクファイルのうちの少なくとも一方から収集されたデータとともに読取リクエストのそれぞれに応答することをさらに含むことができる。データは、ハイパーバイザのネイティブフォーマットでフォーマットされているということにより、ネイティブ・ハイパーバイザ・ディスク・ファイルからデータが収集されたように見えるよう構築される。また、この例において、プラグインファイルの名前属性の部分は、ハイパーバイザのネイティブフォーマットを有するものとしてプラグインファイルを誤って識別する可能性があり、プラグインファイルの名前属性の部分は、プラグインファイルの名前属性のファイル拡張とすることができる。
【0010】
他の例示的実施形態において、1つまたは複数の非一時的コンピュータ読取り可能媒体は、実行されると、1つまたは複数のプロセッサに、さまざまな動作を含むネイティブ・ハイパーバイザ・データとしてハイパーバイザに独自仕様データを示す方法を実行させるように構成された1つまたは複数のプログラムを格納する。例えば、本方法は、独自仕様フォーマットを有する独自仕様ディスクファイルを識別することを含む。さらに、本方法は、独自仕様ディスクファイルに対応するプラグインファイルを生成することを含む。本方法はまた、プラグインファイルを対象とするファイル・オープン・リクエストをインターセプトすることを含む。さらに、本方法は、プラグインファイルがプラグインフォーマットを有することを判断することを含む。本方法はまた、プラグインファイルが成功裏に開かれたというレポートとともにファイル・オープン・リクエストに応答することを含む。さらに、本方法は、プラグインファイルを対象とする読取リクエストをインターセプトすることを含む。本方法はまた、プラグインファイルおよび独自仕様ディスクファイルのうちの少なくとも一方から収集したデータとともに読取リクエストのそれぞれに応答することを含む。該データは、ハイパーバイザのネイティブフォーマットでフォーマットされているということにより、ネイティブ・ハイパーバイザ・ディスク・ファイルからデータが収集されたように見えるようデータを構築する。この例において、プラグインファイルの名前属性のファイル拡張は、ハイパーバイザのネイティブフォーマットを有するものとしてプラグインファイルを誤って識別する可能性がある。また、この例において、プラグインファイルが、プラグインフォーマットを有することを判断することは、プラグインフォーマットを有するものとしてプラグインファイルを識別するメタデータがプラグインファイルに存在することを判断することを含むことができる。さらに、この例において、プラグインファイルがプラグインフォーマットを有することを判断することは、プラグインファイルが、プラグインファイルの外部にあるデータ・ストレージ・システムに格納されたプラグインフォーマットを有するファイルのリストに存在することを判断することを含んでもよい。また、この例において、プラグインファイルは、ハイパーバイザのネイティブフォーマットを有する対応ファイルの期待サイズに設定されたサイズ属性を有するスパースファイルとすることができる。さらに、この例において、本方法は、プラグインファイルを対象とするファイルサイズ属性リクエストをインターセプトすること、およびファイルサイズ属性リクエストが変化せずに通過し、対応する応答が変化せずに通過することを可能にすることをさらに含むことができる。また、この例において、本方法は、プラグインファイルを対象とするファイルサイズ属性リクエストをインターセプトすること、ハイパーバイザのネイティブフォーマットを有するプラグインファイルに対応するファイルの期待サイズを判断すること、および期待サイズとともにファイルサイズ属性リクエストに応答することをさらに含むことができる。さらに、この例において、本方法は、プラグインファイルにおける特定の位置を対象とする書込リクエストをインターセプトすること、プラグインファイル内のある位置における、またはプラグインファイルの外部のある位置における書込リクエストからデータを格納することによって書込リクエストを実行すること、書込リクエストが成功裏に実行されたというレポートとともに書込リクエストに応答すること、プラグインファイルにおける特定の位置を対象とする後の読取リクエストをインターセプトすること、および書込リクエストからのデータが以前に格納された位置から収集された第2のデータで後の読取リクエストに応答することをさらに含む。第2のデータは、ハイパーバイザのネイティブフォーマットでフォーマットされているということにより、ネイティブ・ハイパーバイザ・ディスク・ファイルからデータが収集されたように見えるよう構築される。また、この例において、本方法は、プラグインファイルを対象とする書込リクエストをインターセプトすること、ハイパーバイザのネイティブフォーマットにおいて、ならびにプラグインファイルの外部の位置において、書込リクエストからデータを格納することによって書込リクエストのそれぞれを実行すること、および書込リクエストが成功裏に実行されたというレポートとともに書込リクエストのそれぞれに応答することをさらに含むことができる。
【0011】
上記の一般的な記述および以下の詳細な説明の両方は、請求されるように、例示および説明のためのものであり、本発明を制限するものではないことが理解されよう。
例示的な実施形態について、添付図面を用いてさらなる特殊性および詳細を記載および説明する。
【図面の簡単な説明】
【0012】
【
図1】例示的なハイパーバイザシステムを示す模式的なブロック図である。
【
図2A】独自仕様ディスクファイルをネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザに示す例示的な方法の模式的なフローチャートである。
【
図2B】独自仕様ディスクファイルをネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザに示す例示的な方法の模式的なフローチャートである。
【
図2C】独自仕様ディスクファイルをネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザに示す例示的な方法の模式的なフローチャートである。
【
図2D】独自仕様ディスクファイルをネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザに示す例示的な方法の模式的なフローチャートである。
【発明を実施するための形態】
【0013】
本明細書で使用する「ネイティブ・ハイパーバイザ・ディスク・ファイル」は、特定のハイパーバイザにネイティブであるファイル・フォーマットを有する仮想マシンディスクファイルを意味する。一例には、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザが使用するVHDXファイル・フォーマットがある。他の例には、VMware(登録商標)ハイパーバイザが使用するVMDKファイル・フォーマットがある。本明細書で使用する「独自仕様ファイル・フォーマット」は、特定のハイパーバイザがネイティブに理解しないファイル・フォーマットを意味する。本明細書で使用する「独自仕様ディスクファイル」は、ディスクデータを備え、独自仕様ファイル・フォーマットで構築されるファイル、すなわち、重複排除資格情報コンテナまたはデータベースなどのデータ・ストレージ・システムを意味する。一例には、StorageCraft(登録商標)ShadowProtect(登録商標)Full(SPF)バックアップ・イメージ・ファイル・フォーマットがある。本明細書で使用する「プラグインファイル」は、ファイル・システム・フィルタ・ドライバによって認識可能であり、かつオペレーティングシステム、ハイパーバイザ、およびファイル・システム・フィルタ・ドライバによって提供されるフィルタリング機能のため他のすべてのアプリケーションに対するネイティブ・ハイパーバイザ・ディスク・ファイルのように見える、ネイティブ・ハイパーバイザ・ディスク・ファイルに対応するファイルを意味する。このファイルは、一般に、独自仕様ディスクファイルを示し、対応する実ネイティブ・ハイパーバイザ・ディスク・ファイルが有するであろうサイズよりもかなり小さい。一例には、“vhdx”ファイル拡張のため、およびファイル・システム・フィルタ・ドライバのフィルタリング動作のため、Microsoft(登録商標)Hyper−V(登録商標)VHDXネイティブ・ハイパーバイザ・ディスク・ファイルであると思われるが、実際には、ネイティブ・ハイパーバイザ・ディスク・ファイルの通常コンテンツまたは構造を必ずしも含まず、むしろ実際には、そのプラグインファイルとは別々の“vm.spf”と名付けられた対応するSPFバックアップイメージ独自仕様ディスクファイルを示すプラグインである“vm.vhdx”と名前づけされたファイルがある。本明細書で使用する「プラグイン・ファイル・フォーマット」は、プラグイン・ファイル・フォーマットの構造が、ネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマットと異なるという理由、および(ネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマットと同じ構造を有する)プラグインファイルに通常格納されるデータの少なくとも一部が他の場所に格納されるという理由のうちの少なくとも一方から、プラグインファイルが対応するネイティブ・ハイパーバイザ・ディスク・ファイルのネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマットと異なるプラグインファイルのファイル・フォーマットを意味する。上記の例から、プラグインファイル“vm.vhdx”は、VHDXネイティブ・ハイパーバイザ・ディスク・ファイルのネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマット構造と異なるプラグイン・ファイル・フォーマット構造を有する。別の例において、“vm2.vhdx”と名前づけされたプラグインファイルは、VHDXネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマット構造と同じプラグイン・ファイル・フォーマット構造を有する可能性があるが、“vm2.vhdx”プラグインファイルは、ネイティブ・ハイパーバイザ・ディスク・ファイルに通常格納される何らかのデータを消失している可能性があるが、代わりに、ファイル・システム・フィルタ・ドライバを使用して、“vm2.spf”と名前づけされた対応するSPFバックアップイメージ独自仕様ディスクファイルから探索可能である。
【0014】
図1は、例示的なハイパーバイザシステム100を示す模式的なブロック図である。
図1で示されるように、例示的システム100は、ホストマシンハイパーバイザ102、複数のゲスト仮想マシン104、106、および108、ファイル・システム・フィルタ・ドライバ110、ファイルシステム112、およびストレージ114を備える。ストレージ114は、ネイティブ・ハイパーバイザ・ディスク・ファイル116および118、独自仕様ディスクファイル120、およびプラグインファイル122を備える。
【0015】
ハイパーバイザ102は、仮想マシン104、106、および108などの、1つまたは複数のゲスト仮想マシンを生成、実行、および管理するホストマシン(図示せず)の、コンピュータソフトウェア、コンピュータファームウェア、またはコンピュータハードウェアとすることができる。仮想マシン104、106、および108は、ハイパーバイザ102によって生成、実行、および管理された仮想マシンである。仮想マシン104、106、および108のそれぞれは、物理機械(例えば、コンピュータ)のようにプログラムを実行するよう構成された物理機械のソフトウェアベースのエミュレーションである。
【0016】
仮想マシン104、106、および108のそれぞれを生成することは、ハイパーバイザ102がストレージ114のディスクファイルにアクセスすることによって実現された。特に、ハイパーバイザ102は、ネイティブ・ハイパーバイザ・ディスク・ファイル116にアクセスすることによって仮想マシン104を生成し、ネイティブ・ハイパーバイザ・ディスク・ファイル116は、ハイパーバイザ102のネイティブ・ファイル・フォーマットを有する。同様に、ハイパーバイザ102は、ネイティブ・ハイパーバイザ・ディスク・ファイル118にアクセスすることによって仮想マシン106を生成し、ネイティブ・ハイパーバイザ・ディスク・ファイル118はまた、ハイパーバイザ102のネイティブ・ファイル・フォーマットを有する。
【0017】
対照的に、ハイパーバイザ102は、ファイル・システム・フィルタ・ドライバ110が独自仕様ディスクファイル120をハイパーバイザ102に提示することによって仮想マシン108を生成した。独自仕様ディスクファイル120は、ハイパーバイザ102がネイティブに理解しないファイル・フォーマットを有する。ハイパーバイザ102は、ハイパーバイザ102がネイティブに理解しないファイル・フォーマットを有する独自仕様ディスクファイル120のため、独自仕様ディスクファイル120に直接アクセスすることができないが、本明細書で開示する方法により、ファイル・システム・フィルタ・ドライバ110は、独自仕様ディスクファイル120を、ハイパーバイザ102のネイティブ・ファイル・フォーマットでハイパーバイザ102に提示することが可能となる。
【0018】
1つの例示的実施形態において、ハイパーバイザ102は、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザとすることができ、独自仕様ディスクファイル120は、StorageCraft(登録商標)ShadowProtect(登録商標)Full(SPF)バックアップ・イメージ・ファイルとすることができる。本明細書で開示する例示的方法を使用することで、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザは、SPFバックアップ・イメージ・ファイルを使用すること、および対応するプラグインファイルを使用することのうちの少なくとも一方を行って、そのSPFバックアップ・イメージ・ファイル・フォーマットが、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザによってネイティブに理解されなくても、仮想マシン108を生成することができる。このことは、ファイル・システム・フィルタ・ドライバ110が、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザからSPFバックアップ・イメージ・ファイルおよびプラグインファイルのうちの少なくとも一方に送信される各リクエストをインターセプトし、SPFバックアップ・イメージ・ファイルおよびプラグインファイルのうちの少なくとも一方が、有効なVHDXファイルであると思われるようにリクエストに応答することによって、実現される。有効なVHDXファイルは、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザに対するネイティブ・ハイパーバイザ・ディスク・ファイルである。このような方法で、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザは、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザによってネイティブに理解されないファイル・フォーマットを有するSPFバックアップ・イメージ・ファイルのため、SPFバックアップ・イメージ・ファイルに直接アクセスすることができないが、本明細書で開示する方法によって、ファイル・システム・フィルタ・ドライバ110は、SPFバックアップ・イメージ・ファイルを、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザのネイティブVHDXファイル・フォーマットでMicrosoft(登録商標)Hyper−V(登録商標)ハイパーバイザに提示することが可能となり、それにより、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザがゲスト仮想マシンを生成するのに使用することができるディスクファイルの種類を拡張することが可能となる。
【0019】
図1のシステム100ではストレージは単一であるが、システム100が2つ以上のストレージを備えることができることが理解されよう。さらに、
図1では、ストレージ114がハイパーバイザ102にローカルであるが、ストレージ114は、ハイパーバイザ102から遠隔でもよいことが理解されよう。さらに、ファイル116、118、120、および122の1つまたは複数を、ハイパーバイザ102から遠隔に格納することができる。例えば、プラグインファイル122は、ハイパーバイザ102にローカルに格納してもよく、一方、独自仕様ディスクファイル120は、ハイパーバイザ102から遠隔に格納される。さらに、ファイル・システム・フィルタ・ドライバ110は、
図1の例示的システム100において唯一のフィルタドライバであるが、ファイル・システム・フィルタ・ドライバ110の機能は、システム100、またはシステム100にローカルであるか、システム100から遠隔である別のシステムに存在する1つまたは複数の同様のフィルタドライバによって置き換えるか、または強化されてもよいことが理解されよう。さらに、独自仕様ディスクファイル120は、実ファイルではない可能性があるが、代わりに、ディスクデータを備え、独自仕様ファイル・フォーマットで構築される重複排除資格情報コンテナまたはデータベースなどの他の何らかのデータ・ストレージ・システムとしてもよい。
【0020】
図1では1つの特定の環境を説明してきたが、
図1の特定の環境は、本明細書で開示する例示的方法を使用することができる無数の環境の内の1つであることが理解されよう。例示的環境の範囲は、任意の特定の環境に限定されることを意図しない。
【0021】
図2Aから
図2Dは、独自仕様ディスクファイルをネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザに提示する例示的な方法200の模式的なフローチャートである。方法200は、少なくともいくつかの実施形態において、
図1のシステム100のハイパーバイザ102、ファイル・システム・フィルタ・ドライバ110、およびファイルシステム112によって実施することができる。例えば、ハイパーバイザ102、ファイル・システム・フィルタ・ドライバ110、およびファイルシステム112は、コンピュータ命令を実行して、方法200のステップ202から264の1つまたは複数によって示されるように、独自仕様ディスクファイル120から、プラグインファイル122を使用して、ネイティブ・ハイパーバイザ・ディスク・ファイルとしてハイパーバイザ102にデータを提示する動作を行うよう構成することができる。離散的ステップとして示したが、さまざまなステップは、所望の実装態様により、追加ステップに分割してもよく、より少ないステップに組み合わせてもよく、または削除してもよい。
図1および
図2Aから
図2Dを参照して方法200を説明する。
【0022】
方法200は、独自仕様ディスクファイルに対応するプラグインファイルを生成するステップ202を含むことができる。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ202で、独自仕様ディスクファイル120に対応するプラグインファイル122を生成する。あるいは、ハイパーバイザ102と同じホストマシンで動く、または別のローカル機もしくは遠隔機で動くユーザ・モード・モジュールなどの別のドライバまたはモジュールが、ステップ202で、独自仕様ディスクファイル120に対応するプラグインファイル122を生成してもよい。上記のように、独自仕様ディスクファイル120は独自仕様ファイル・フォーマットを有し、プラグインファイル122はプラグイン・ファイル・フォーマットを有する。また、上述したように、プラグインファイル122は、独自仕様ディスクファイル120が格納されるストレージ114に格納することができ、またはプラグインファイル122および独自仕様ディスクファイル120のうちの少なくとも一方は、別のローカルストレージまたは遠隔ストレージに格納してもよい。
図1に示したように、プラグインファイル122は、独自仕様ディスクファイル120を示すポインタを含むことができる。さらに、プラグインファイル122は、ストレージ114または別のローカルストレージもしくは別の遠隔ストレージの他の場所に格納されるデータベースなどの、プラグインファイル122の外部のデータ・ストレージ・システムを使用して独自仕様ディスクファイル120と関連付けてもよい。
【0023】
方法200は、ファイル・オープン・リクエストを送信するステップ204と、ファイル・オープン・リクエストをインターセプトするステップ206とを含む。例えば、ハイパーバイザ102は、ステップ204で、プラグインファイル122を対象とするファイル・オープン・リクエストを送信し、ファイル・システム・フィルタ・ドライバ110は、ステップ206で、ファイル・オープン・リクエストをインターセプトする。このリクエストのインターセプト、および本明細書で説明する他のすべてのリクエストのインターセプトは、ハイパーバイザ102と、プラグインファイル122が格納されるファイルシステム112との間にあるファイル・システム・フィルタ・ドライバ110により可能とすることができる。この位置では、ファイル・システム・フィルタ・ドライバ110は、必要に応じて、ハイパーバイザ102からファイルシステム112へのすべてのリクエストをインターセプト、検討、および修正することができる。
【0024】
上記の例を続けると、プラグインファイル122がプラグイン・ファイル・フォーマットを有していても、ハイパーバイザ102は、プラグインファイルがネイティブ・ファイル・フォーマットを有すると誤って見なす可能性があるので、プラグインファイル122を開こうとする可能性がある。例えば、プラグインファイル122の名前属性のファイル拡張などの、プラグインファイル122の名前属性の部分が、ハイパーバイザ102のネイティブ・ファイル・フォーマットを有するとしてプラグインファイル122を誤って識別する可能性がある。この例において、ハイパーバイザ102は、Microsot(登録商標)Hyper−V(登録商標)ハイパーバイザとすることができ、プラグインファイル122は、“vm.vhdx”と名前づけすることができ、独自仕様ディスクファイル120は、プラグインファイル122とは別の“vm.spf”と名前づけされるSPFバックアップ・イメージ・ファイルである。“vhdx”ファイル拡張は、Microsoft(登録商標)Hyper−V(登録商標)ハイパーバイザ102のネイティブ・VHDXファイル・フォーマットを有するとして、プラグインファイル122を誤って識別する。当然のことながら、実際にはプラグインファイル122は、ネイティブVHDXファイルの通常コンテンツおよび構造のうちの少なくとも一方を含まないが、代わりに、実際には、プラグインファイル122とは別の“vm.spf”と名前づけされる対応するSPFバックアップ・イメージ・ファイルを示すプラグインファイルである。
【0025】
方法200は、プラグインファイルがプラグイン・ファイル・フォーマットを有することを判断するステップ208を含む。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ208で、プラグインファイル122がプラグイン・ファイル・フォーマットを有することを判断する。この判断は、さまざまな異なる方法で行うことができる。例えば、ファイル・システム・フィルタ・ドライバ110は、プラグイン・ファイル・フォーマットを有するとしてプラグインファイル122を識別するメタデータがプラグインファイル122に存在すると判断することによって、プラグインファイル122が、プラグイン・ファイル・フォーマットを有すると判断することができる。あるいは、またはさらに、ファイル・システム・フィルタ・ドライバ110は、プラグインファイル122が、ストレージ114または別のストレージで他の場所に格納されるデータベースなどの、プラグインファイル122の外部のデータ・ストレージ・システムに格納されるプラグイン・ファイル・フォーマットを有するファイルのリストに存在すると判断することによって、プラグインファイル122がプラグイン・ファイル・フォーマットを有すると判断することができる。
【0026】
方法200は、成功したことを報告するステップ210と、成功レポートを受信するステップ212とを含む。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ210でプラグインファイル122が成功裏に開かれたというレポートとともに以前に受信したファイル・オープン・リクエストに応答し、ハイパーバイザ102は、ステップ212で、成功レポートを受信する。
【0027】
この成功を報告することは、独自仕様ディスクファイル120が実際に開かれた後、または独自仕様ディスクファイル120が実際には開かれなかった場合に、ステップ210およびステップ212で実行してもよい。実際には、少なくともいくつかのハイパーバイザが、ディスクデータを実際にリクエストすることなく仮想マシンディスクファイルのメタデータの多くの読取りを実行し、仮想マシンディスクファイルでのいくつかの連続したファイル・オープン・リクエストおよびファイル・クローズ・リクエストの間でそれを行うことが発見された。このことは、仮想マシンディスクファイルがゲスト仮想マシンに取り付けられている場合または仮想マシン構成設定が修正されている場合に、最も多く生じる。したがって、性能およびユーザ体験を向上させ、リソースの使用を減らすために、ファイル・システム・フィルタ・ドライバ110は、絶対に必要になるまで、独自仕様ディスクファイル120を実際に開くことを遅らせることができる。これは、プラグインファイル122内の仮想マシンディスク・ファイル・メタデータの他の読取りに応答するために十分なメタデータを格納することを含み、独自仕様ディスクファイル120を開くために必要な通常は高価なものがなくても、そのようなリクエストに応答することができる。
【0028】
ステップ212を実行したあと、ハイパーバイザ102は、アクセスした実際のファイルが、プラグイン・ファイル・フォーマットを有するプラグインファイル122であったとしても、ハイパーバイザ102のネイティブ・ファイル・フォーマットを有するネイティブ・ハイパーバイザ・ディスク・ファイルが開かれたと判断する。プラグインファイル122は、ファイル・システム・フィルタ・ドライバ110によって後に使用され、独自仕様ディスクファイル120を、ハイパーバイザ102のネイティブ・ファイル・フォーマットでハイパーバイザ102に提示する。
【0029】
ステップ212を実行したあと、方法200は、ステップ214、236、または256のいずれかに進むことができる。ステップ214から264は、以下では昇順に説明するが、ステップ214から234、236から254、および256から264のグループのいずれも、ステップ212を実行したあと、任意の時間に、繰り返しを含み、実行することができる。
【0030】
方法200は、ファイル読取リクエストを送信するステップ214と、ファイル読取リクエストをインターセプトするステップ216とを含む。例えば、ハイパーバイザ102は、ステップ214で、プラグインファイル122を対象とするファイル読取リクエストを送信し、ファイル・システム・フィルタ・ドライバ110は、ステップ216で、ファイル読取リクエストをインターセプトする。
【0031】
方法200は、読取リクエストを修正し、独自仕様ディスクファイルからデータを収集するステップ218を含む。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ218で、読取リクエストを修正し、データが、プラグインファイル122からではなく、独自仕様ディスクファイル120から収集されるよう指示する。この修正は、プラグインファイル122におけるポインタによって可能としてもよく、それにより、独自仕様ディスクファイル120が、ハイパーバイザ102によってプラグインファイル122に送信された任意の読取リクエストおよび書込リクエストのうちの少なくとも一方の実際の対象となるべきであると指示する。
【0032】
方法200は、修正済みリクエストを送信するステップ220と、修正済みリクエストを受信するステップ222とを含む。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ220で、修正済みリクエストを送信し、ファイルシステム112は、ステップ222で、修正済みリクエストを受信する。
【0033】
方法200は、リクエストされたデータを独自仕様ディスクファイルから収集するステップ224を含む。例えば、ファイルシステム112は、ステップ224で、修正済みリクエストによって指示されたように、データを独自仕様ディスクファイル120から収集する。
【0034】
方法200は、収集されたデータを送信するステップ226と、収集されたデータを受信するステップ228とを含む。例えば、ファイルシステム112は、ステップ226で、収集されたデータを送信し、ファイル・システム・フィルタ・ドライバ110は、ステップ228で、収集されたデータを受信する。
【0035】
方法200は、データを、ハイパーバイザのネイティブ・ファイル・フォーマットに再構築するステップ230を含む。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ230で、ハイパーバイザ102のネイティブ・ファイル・フォーマットに受信されたデータを再構築する。このようにデータを再構築することは、ハイパーバイザ102のネイティブ・ファイル・フォーマットにフォーマットされているということにより、ネイティブ・ハイパーバイザ・ディスク・ファイルから収集されるように、そのデータをハイパーバイザ102に見えるようにすることを意図する。
【0036】
方法200は、再構築データを送信するステップ232と、再構築データを受信するステップ234とを含む。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ232で、再構築データを送信し、ハイパーバイザ102は、ステップ234で、再構築データを受信する。
【0037】
ステップ234を実行したあと、ハイパーバイザ102は、読み取られた実際のファイルが、独自仕様ファイル・フォーマットを有する独自仕様ディスクファイル120であったとしても、読取リクエストがハイパーバイザ102のネイティブ・ファイル・フォーマットを有するネイティブ・ハイパーバイザ・ディスク・ファイルで成功裏に実行されたと判断するよう、ファイル・システム・フィルタ・ドライバ110によってごまかされる。ファイル・システム・フィルタ・ドライバ110の一部をこのようにごまかすことにより、ファイル・システム・フィルタ・ドライバ110が、独自仕様ディスクファイル120をハイパーバイザ102のネイティブ・ファイル・フォーマットでハイパーバイザ102に提示することが可能となり、それにより、ハイパーバイザ102によって効率的に読み取ることができるディスクファイルの種類を拡張することが可能となる。
【0038】
方法200は、ファイル書込リクエストを送信するステップ236と、ファイル書込リクエストをインターセプトするステップ238とを含む。例えば、ハイパーバイザ102は、ステップ236で、プラグインファイル122における特定の位置を対象とするファイル書込リクエストを送信し、ファイル・システム・フィルタ・ドライバ110は、ステップ238で、ファイル書込リクエストをインターセプトする。
【0039】
方法200は、ファイル書込リクエストを修正して、独自仕様ファイル・フォーマットで独自仕様ディスクファイルにおける位置にデータを書き込むステップ240を含む。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ240で、ファイル書込リクエストを修正し、データが、プラグインファイル122からではなく、独自仕様ディスクファイル120における位置に書き込まれるよう指示する。
【0040】
方法200は、修正済みリクエストを送信するステップ242と、修正済みリクエストを受信するステップ244とを含む。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ242で、修正済みリクエストを送信し、ファイルシステム112は、ステップ244で、修正済みリクエストを受信する。
【0041】
方法200は、データを独自仕様ディスクファイルに書き込むステップ246を含む。例えば、ファイルシステム112は、ステップ246で、修正済み書込リクエストからのデータを、修正済みリクエストによって指示されたように、独自仕様ディスクファイル120に書き込む。
【0042】
方法200は、成功したことを報告するステップ248と、成功レポートを受信するステップ250とを含む。例えば、ファイルシステム112は、ステップ248で、成功を報告し、ファイル・システム・フィルタ・ドライバ110は、ステップ250で、成功レポートを受信する。
【0043】
方法200は、成功したことを報告するステップ252と、成功レポートを受信するステップ254とを含む。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ252で、成功を報告し、ハイパーバイザ102は、ステップ254で、成功レポートを受信する。
【0044】
ステップ254を実行したあと、ハイパーバイザ102は、書き込まれた実際のファイルが、独自仕様ファイル・フォーマットを有する独自仕様ディスクファイル120であったとしても、書込リクエストがハイパーバイザ102のネイティブ・ファイル・フォーマットを有するネイティブ・ハイパーバイザ・ディスク・ファイルで成功裏に実行されたと判断するよう、ファイル・システム・フィルタ・ドライバ110によってごまかされる。ファイル・システム・フィルタ・ドライバ110の一部をこのようにごまかすことにより、ファイル・システム・フィルタ・ドライバ110が、独自仕様ディスクファイル120をハイパーバイザ102のネイティブ・ファイル・フォーマットでハイパーバイザ102に提示することが可能となり、それにより、ハイパーバイザ102によって効率的に書き込むことができるディスクファイルの種類を拡張することが可能となる。
【0045】
方法200は、ファイルサイズ属性リクエストを送信するステップ256と、ファイルサイズ属性リクエストをインターセプトするステップ258とを含む。例えば、ハイパーバイザ102は、ステップ256で、プラグインファイル122を対象とするファイルサイズ属性リクエストを送信し、ファイル・システム・フィルタ・ドライバ110は、ステップ258で、ファイルサイズ属性リクエストをインターセプトする。
【0046】
方法200は、ハイパーバイザのネイティブ・ファイル・フォーマットを有するプラグインファイルに対応するファイルの期待サイズを判断するステップ260を含む。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ260で、ハイパーバイザ102のネイティブ・ファイル・フォーマットを有するプラグインファイル122に対応するファイルの期待サイズを判断する。言い換えると、期待サイズは、ネイティブ・ファイル・フォーマットを有する同等のファイルが、プラグインファイル122および独自仕様ディスクファイル120の組み合わせを交換するために生成されるべき同等のファイルであったであろうというサイズとすることができる。
【0047】
方法200は、期待サイズを送信するステップ262と、期待サイズを受信するステップ264とを含む。例えば、ファイル・システム・フィルタ・ドライバ110は、ステップ262で、期待サイズを送信し、ハイパーバイザ102は、ステップ264で、期待サイズを受信する。
【0048】
ステップ264を実行したあと、ハイパーバイザ102は、ファイルサイズ属性リクエストの対象であった実ファイルが、期待サイズのネイティブ・ハイパーバイザ・ディスク・ファイルと一致しない可能性があるサイズを有するプラグインファイル122であっても、ファイルサイズ属性リクエストが、ハイパーバイザ102の期待ファイルサイズのネイティブ・ハイパーバイザ・ディスク・ファイルを有するネイティブ・ハイパーバイザ・ディスク・ファイルで成功裏に実行されたと判断するよう、ファイル・システム・フィルタ・ドライバ110によってごまかされる。ファイル・システム・フィルタ・ドライバ110の一部をこのようにごまかすことにより、ファイル・システム・フィルタ・ドライバ110が、独自仕様ディスクファイル120をハイパーバイザ102のネイティブ・ハイパーバイザ・ディスク・ファイルの期待ファイルサイズでハイパーバイザ102に提示することが可能となり、それにより、ハイパーバイザ102によって使用することができるディスクファイルの種類を拡張することが可能となる。
【0049】
ステップ202、206、208、210、216、218、220、228、230、232、238、240、242、および250は、ハイパーバイザ102と同じホストマシンで動作するユーザ・モード・モジュールなどの、ファイル・システム・フィルタ・ドライバ110ではないドライバまたはモジュールによって実行してもよいことが理解されよう。
【0050】
ステップ260から264は、プラグインファイル122が、ハイパーバイザ102のネイティブ・ファイル・フォーマットを有する対応ファイルの期待サイズに設定されたサイズ属性を有する、ニュー・テクノロジー・ファイル・システム(NTFS)スパースファイルなどのスパースファイルであると置き換えてもよいことも理解されよう。この例において、ファイル・システム・フィルタ・ドライバ110は、ファイルサイズ属性リクエストが無変更でファイル・システム・フィルタ・ドライバ110を通過することを可能にし、対応する応答が、無変更でファイル・システム・フィルタ・ドライバを通過することを可能にしながら、ステップ260から264を交換してもよい。
【0051】
ステップ218、220、222、および224は、リクエストされたデータの少なくとも一部をプラグインファイル122に実際に格納することができるように、修正されて、読取リクエストでリクエストされたデータを、プラグインファイル122および独自仕様ディスクファイル120のうちの少なくとも一方から収集することができることがさらに理解されよう。さらに、これらのステップは、修正されて、リクエストされたデータが、重複排除資格情報コンテナまたはデータベースなどの、他の何らかのローカルまたは遠隔データ・ストレージ・システムから収集されることを可能にしてもよい。
【0052】
ステップ240、242、244、および246は、修正されて、書込リクエストで特定されたデータが、プラグインファイル122における位置またはプラグインファイル122の外部の位置に書き込まれることができることも理解されよう。さらに、データは、ハイパーバイザ102のネイティブ・ファイル・フォーマットまたは独自仕様ファイル・フォーマットで格納してもよい。
【0053】
ステップ236から254は、代わりに修正されて、ネイティブスナップショット/差分ディスク機能を有するハイパーバイザが、プラグインファイルの代わりに差分ディスクファイルで書込リクエストを実行することによって、ゲスト仮想マシンのすべての書込リクエストを自身で扱うことができることも理解されよう。例えば、ハイパーバイザ102が、差分ディスクファイルの生成をサポートする場合、差分ディスクファイルは仮想マシンディスクファイルのスナップショットであり、ファイル・システム・フィルタ・ドライバ110、またはシステム100の他のドライバもしくはモジュールは、ハイパーバイザ102に、プラグインファイル122と関連する差分ディスクを生成するよう指示することができる。差分ディスクファイルは、StorageCraft(登録商標)ShadowProtect(登録商標)増分(SP1)バックアップ・イメージ・ファイルなどの、増分バックアップ・イメージ・ファイルといくつかの点で同様である可能性がある。しかしながら、連続的に増加するオフセットで更新されるSP1バックアップ・イメージ・ファイルとは異なり、差分ディスクファイルは、仮想マシンディスクデータのランダムオフセット書き込みを可能にすることができる。差分ディスクファイルを生成したあと、ゲスト仮想マシン108のプラグインファイル122へのすべての書込みは、代わりに、ハイパーバイザ102によって、差分ディスクファイルに書き込まれる。差分ディスクファイルは、VHDXまたはVMDKファイル・フォーマットなどの、ネイティブ・ハイパーバイザ・ディスク・ファイル・フォーマットを有してもよい。ステップ236から254へのこの代替において、ゲスト仮想マシン108からの書込リクエストのすべては、ハイパーバイザ102自体によって扱われ、差分ディスクファイルに直接送信される。この代替実施形態におけるハイパーバイザは、読取リクエストをプラグインファイル122へ発行し続けるが、すべての書込リクエストを差分ディスクファイルにもたらす。
【0054】
リクエストを「修正すること」を含む本明細書で説明するステップのそれぞれは、代わりに、「修正済み」リクエストと同じ最終結果を実現する1つまたは複数の新規リクエストと、そのリクエストを置き換えること、およびそのようなリクエストを関連付けることのうちの少なくとも一方を行うことによって、実施してもよいことがさらに理解されよう。例えば、読取リクエストの「修正」は、読取リクエストを待ち行列に入れること、および独自仕様ディスクファイルに関連付けられた読取リクエストを開始することを含んでもよい。その場合、関連付けられた読取リクエストに応じて受信したデータは、関連付けられた読取リクエストのバッファを、待ち行列に入れられた読取リクエストに対するバッファにコピーすることなどによって、待ち行列に入れられた読取リクエストのバッファに入れてもよい。この例において、待ち行列に入れられた読取リクエストおよび関連付けられた読取リクエストは、共有バッファを使用してもよく、またはそれら独自の専用バッファを有してもよい。
【0055】
本明細書で説明する実施形態は、以下でより詳細に説明するような、さまざまなコンピュータハードウェアまたはソフトウェアのモジュールまたはフィルタを含む、特殊用途向けコンピュータまたは汎用コンピュータを使用することを含むことができる。
【0056】
本明細書で説明する実施形態は、コンピュータ読取り可能媒体に格納されるコンピュータ実行可能命令またはデータ構造を搬送または有するためのコンピュータ読取り可能媒体を使用して実施してもよい。そのようなコンピュータ読取り可能媒体は、汎用コンピュータまたは特定用途向けコンピュータによってアクセスすることができる何らかの利用可能な媒体であってもよい。例えば、限定するものではないが、そのようなコンピュータ読取り可能媒体はRAM、ROM、EEPROM、CD−ROM、もしくは他の光学ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、またはコンピュータ実行可能命令もしくはデータ構造の形式で所望のプログラムコードを搬送もしくは格納するために使用することができ、汎用コンピュータ、特定用途向けコンピュータ、もしくは仮想マシンなどの仮想コンピュータによってアクセスすることができる他の何らかのストレージ媒体を含む非一時的コンピュータ読取り可能ストレージ媒体を含むことができる。上記の組み合わせもまた、コンピュータ読取り可能媒体の範囲内に含むことができる。
【0057】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、特定用途向けコンピュータ、または仮想マシンなどの仮想コンピュータに、ある機能または機能のグループを実行させる命令およびデータを備える。本発明の主題は、構造的特徴および方法論的ステップのうちの少なくとも一方に特有の言語で説明してきたが、添付の特許請求の範囲で定義される本発明の主題は、上記した特定の特徴またはステップに必ずしも限定されないことを理解すべきである。むしろ、上記した特定の特徴およびステップは、特許請求の範囲を実現する例示的形態として開示される。
【0058】
本明細書で使用する場合、「モジュール」または「フィルタ」という用語は、コンピューティングシステムで実行するソフトウェアオブジェクトまたはルーチンを意味することができる。本明細書で説明するさまざまなモジュールまたはフィルタは、(例えば、別々のスレッドとして)コンピュータシステムで実行するオブジェクトまたはプロセスとして実行してもよい。本明細書で説明するシステムおよび方法は、ソフトウェアで実現されるのが好ましいが、ハードウェアでの実現、またはソフトウェアとハードウェアの組み合わせでの実現も可能であり、意図される。
【0059】
本明細書で言及するすべての例および条件付き文言は、本技術を促進するために発明者が寄与する例示的実施形態およびコンセプトを理解する際に読者が参照するためのものであり、そのような具体的に列挙した例および条件に限定されないものとして理解されるべきである。