(57)【特許請求の範囲】
【請求項１】
マシンを仮想マシンへ変換する方法であって、
マシンの１つまたは複数のボリュームについての１つまたは複数のハードウェアコンフィギュレーション設定を識別するステップと、
前記マシンの１つまたは複数のボリュームに対応する１つまたは複数の一貫性のあるスナップショットを作成するステップと、
前記１つまたは複数の一貫性のあるスナップショットを、マウントされた仮想ハードディスクファイルへ送信するステップと、
前記１つまたは複数の一貫性のあるスナップショットのためのブートレコードを、前記マウントされた仮想ハードディスクファイルへ送信し、前記１つまたは複数の一貫性のあるスナップショットのための前記ブートレコードを、仮想マシンホストの動作環境に対して一貫するように前記仮想マシンホストで修正することができるようにするステップと
を含むことを特徴とする方法。
【請求項２】
前記仮想マシンホストは、１つまたは複数の仮想マシンのホストとなるように構成されることを特徴とする請求項１に記載の方法。
【請求項３】
前記スナップショットは、該スナップショットが前記仮想マシンにおいてオペレーティングシステムで使用できるように、前記仮想マシンホストにおいて修正できることを特徴とする請求項１に記載の方法。
【請求項４】
前記マシンの１つまたは複数のボリュームに対応する１つまたは複数の一貫性のあるスナップショットを作成するステップは、前記マシンの１つまたは複数のボリュームがアクティブである間、前記マシンの１つまたは複数のボリュームに対応する１つまたは複数の一貫性のあるスナップショットを作成するステップを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記マシンの１つまたは複数のボリュームは、ダイナミック物理ディスク上にインストールされた複数のマシンボリュームを含むことを特徴とする請求項１に記載の方法。
【請求項６】
少なくとも１つのプロセッサにより実行されたとき、マシンを仮想マシンへ変換する方法を実行するコンピュータ実行可能命令をコード化するコンピュータ読取可能な記録媒体であって、前記方法は、
マシンの１つまたは複数のボリュームについての１つまたは複数のハードウェアコンフィギュレーション設定を識別するステップと、
前記マシンの１つまたは複数のボリュームに対応する１つまたは複数の一貫性のあるスナップショットを作成するステップと、
前記１つまたは複数の一貫性のあるスナップショットを、マウントされた仮想ハードディスクファイルへ送信するステップと、
前記１つまたは複数の一貫性のあるスナップショットのためのブートレコードを、前記マウントされた仮想ハードディスクファイルへ送信し、前記１つまたは複数の一貫性のあるスナップショットのための前記ブートレコードを、仮想マシンホストの動作環境に対して一貫するように前記仮想マシンホストで修正することができるようにするステップと
を含むことを特徴とするコンピュータ読取可能記録媒体。
【請求項７】
前記仮想マシンホストは、１つまたは複数の仮想マシンのホストとなるように構成されることを特徴とする請求項６に記載のコンピュータ読取可能記録媒体。
【請求項８】
前記スナップショットは、該スナップショットが前記仮想マシンにおいてオペレーティングシステムで使用できるように、前記仮想マシンホストにおいて修正できることを特徴とする請求項６に記載のコンピュータ読取可能記録媒体。
【請求項９】
前記マシンの１つまたは複数のボリュームに対応する１つまたは複数の一貫性のあるスナップショットを作成するステップは、前記マシンの１つまたは複数のボリュームがアクティブである間、前記マシンの１つまたは複数のボリュームに対応する１つまたは複数の一貫性のあるスナップショットを作成するステップを含むことを特徴とする請求項６に記載のコンピュータ読取可能記録媒体。
【請求項１０】
前記マシンの１つまたは複数のボリュームは、ダイナミック物理ディスク上にインストールされた複数のマシンボリュームを含むことを特徴とする請求項６に記載のコンピュータ読取可能記録媒体。
【請求項１１】
１つまたは複数のプロセッサと、
前記１つまたは複数のプロセッサに結合されたメモリと
を備えたコンピュータシステムであって、前記メモリは、前記１つまたは複数のプロセッサにより実行されたとき、該１つまたは複数のプロセッサに、マシンを仮想マシンへ変換する方法を実行させる命令を記録し、前記方法は、
マシンの１つまたは複数のボリュームについての１つまたは複数のハードウェアコンフィギュレーション設定を識別するステップと、
前記マシンの１つまたは複数のボリュームに対応する１つまたは複数の一貫性のあるスナップショットを作成するステップと、
前記１つまたは複数の一貫性のあるスナップショットを、マウントされた仮想ハードディスクファイルへ送信するステップと、
前記１つまたは複数の一貫性のあるスナップショットのためのブートレコードを、前記マウントされた仮想ハードディスクファイルへ送信し、前記１つまたは複数の一貫性のあるスナップショットのための前記ブートレコードを、仮想マシンホストの動作環境に対して一貫するように前記仮想マシンホストで修正することができるようにするステップと
を含むことを特徴とするコンピュータシステム。
【請求項１２】
前記仮想マシンホストは、１つまたは複数の仮想マシンのホストとなるように構成されることを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１３】
前記スナップショットは、該スナップショットが前記仮想マシンにおいてオペレーティングシステムで使用できるように、前記仮想マシンホストにおいて修正できることを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１４】
前記マシンの１つまたは複数のボリュームに対応する１つまたは複数の一貫性のあるスナップショットを作成するステップは、前記マシンの１つまたは複数のボリュームがアクティブである間、前記マシンの１つまたは複数のボリュームに対応する１つまたは複数の一貫性のあるスナップショットを作成するステップを含むことを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１５】
前記マシンの１つまたは複数のボリュームは、ダイナミック物理ディスク上にインストールされた複数のマシンボリュームを含むことを特徴とする請求項１１に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マシンから仮想マシンへの変換に関する。
【背景技術】
【０００２】
異なるタイプのリソース（ソフトウェア、ハードウェア、またはそれらの組み合わせ）を、コンピュータ化された環境内で分散させるための多数の方法がある。ソフトウェアの観点からすれば、例えば、企業では、オペレーティングシステム（または、アプリケーションプログラム）の複数のコピーを複数の異なるコンピュータ上にインストールし、それにより、１つのコピーを多数のシステム間で分散させる場合がある。従来のハードウェア共有方法には、さまざまなストレージまたはファイル共有の必要性のために、複数の異なるコンピュータシステムが別のコンピュータのドライブスペースにアクセスすることができるように、コンピュータシステムをネットワーク上でセットアップすることが含まれる。
【０００３】
しかし、最近のハードウェアの能力（すなわち、現在のストレージ、メモリおよび処理能力）の進歩により、単に従来のストレージおよび／またはネットワークトラフィック管理機能を提供しても、所与の物理マシンを十分に利用しない傾向があるようになってきている。したがって、ソフトウェアおよびハードウェアの組み合わせの観点から、リソースを分散させるさらなる方法には、このとき、複数の仮想コンピュータシステムを単一の物理システム上にインストールすることが含まれる。通常、仮想マシンを、ホストのストレージの専用部分における特定のオペレーティングシステムの固有のインスタンスにより、かつ、ホストメモリおよび処理能力の割り当てられた部分により、インストールすることができる。
【０００４】
これらのおよび他の特徴のため、仮想マシンを他の仮想マシンと、また、それらがインストールされるホストサーバーとさえ、容易に区別することができる。ネットワーク上の他のユーザーにとって、仮想マシンは単に、ネットワーク上のいずれかの他の物理コンピュータシステムなど、別にアドレス指定可能なコンピュータシステムとして見えるようになる。次いで、仮想マシンを、ネットワーク上で別のサーバー（例えば、電子メールまたはデータベースサーバー）として使用するため、ソフトウェアまたはハードウェアをテストする目的のため、シンクライアント用のメインコンピュータシステムとして、など、幅広い範囲の目的のために使用することができる。
【０００５】
この機能性に加えて、仮想マシンはまた、インストールおよびセットアップ、ならびに除去がかなり容易に、また、場合によっては高速にできるという、追加の利点をも提供することができる。例えば、特定のホストコンピュータシステムのためのアドミニストレータは、仮想マシンについてのリクエストを受信し、適切なリソースをホストコンピュータ上で手動で割り振り、次いで、リクエストを受けた仮想マシンをインストールすることができる。仮想マシンがもはや必要とされない場合、アドミニストレータは、ホストサーバーにおいて仮想マシンをシャットダウン、または削除さえもするための１つまたは複数のコマンドを手動で選択することができる。したがって、組織は、１台または少数のホストサーバーに何百もの仮想マシンを潜在的にホストさせることによって、その物理マシン（サーバー、パーソナルコンピュータなど）の数を減らすことを望む場合がある。このような統合は、特に組織が、節電、温度／冷却の節約、スペースの節約、および、物理マシン利用の低減により得られる他の節約など、さまざまなリソース消費およびマシン管理コストを削減することができる場合、多数の利点をもたらす可能性があることは理解されよう。
【０００６】
残念ながら、選択された数の既存の物理コンピュータシステムを仮想マシンに変換することによって、物理マシンを統合することは、簡単なことではない。具体的には、物理ドライブの内容をホストサーバーのパーティション上へ単にコピーしても、通常、使用可能な仮想マシンを作成するには十分ではないものとなる。例えば、物理マシンが実行中である間に物理マシンのドライブの基本的なコピーを行うと、ファイル状態における非一貫性が生じる（すなわち、データは「アプリケーションとの一貫性を有する」ものではない）場合がある。したがって、その物理マシンにおけるデータにアクセスしているアプリケーションは、そのデータのコピーが後に仮想マシンへ移動されたときに、そのデータのコピーを使用できなくなる場合がある。加えて、このようなコピーを単にホストサーバーへ転送すると、システムレジストリにおける他の非一貫性、または、さまざまなディスクおよびネットワークドライバとの非一貫性、オペレーティングシステムバイナリにおける非一貫性などが生じる場合がある。このような難点を回避するためのいくつかのメカニズムはあるが、そのように行うための従来のメカニズムは、典型的には大幅なダウンタイムおよびリソース消費（人的およびソフトウェアの両方の観点から）を伴う。
【０００７】
例えば、物理マシンを変換する１つの方法は、仮想マシンホストにおいて仮想マシンを最初から作成することを含む。具体的には、アドミニストレータは単に、物理マシンにおけるすべてのアプリケーションを新しい仮想マシンにインストールし、ファイルシステムおよびアプリケーションデータを仮想マシンへ転送し、次いで、仮想マシンにおける他のいかなるワークロードをも、最初から、かつ／または、アプリケーションリストアオペレーションを通じて、再構築することができる。言うまでもなく、この方法は、さまざまな観点から望ましくないものであり、特に、何百もの物理マシンを仮想マシンへ変換しようと試みる場合、組織のリソースの消費を生じる場合がある。
【０００８】
物理マシンを変換するためのもう１つの方法は、自動デプロイメントサービス（Ａｕｔｏｍａｔｅｄ  Ｄｅｐｌｏｙｍｅｎｔ  Ｓｅｒｖｉｃｅｓ：「ＡＤＳ」）、および／または、プリインストール実行可能環境（Ｐｒｅ−Ｉｎｓｔａｌｌａｔｉｏｎ  Ｅｘｅｃｕｔａｂｌｅ  Ｅｎｖｉｒｏｎｍｅｎｔ：「ＰＸＥ」）など、かなり複雑なインフラストラクチャコンポーネントを使用して、物理マシンの内容の転送可能コピーを作成することを含む。通常、このタイプのインフラストラクチャを使用するメカニズムは、物理マシンのシャットダウン、および、例えば、ＰＸＥによる物理マシンのリブートを含む。これにより、アドミニストレータは、固有のオペレーティングシステムをロードすることなく、物理マシンを起動させることができ、したがって、コピープロセス中のファイルへの書き込みを禁じることができる。
【０００９】
物理ドライブの内容をコピーした後、アドミニストレータは次いで、この内容を仮想マシンホストへ転送することができる。これだけで、数ギガバイトのデータにつき１時間から数時間を要する場合がある。データを転送すると、アドミニストレータは次いで、コピーされた内容を仮想マシンとしてブート可能にするために、転送されたデータに対して多数の比較的複雑な変更を行うことが必要となる。少なくとも部分的には、変換中の物理マシンをオフラインにし、データをブート可能にすることに関するダウンタイムのため、この方法は典型的には、単に物理マシンを最初から仮想マシンとして再構築することがあまりにも困難である場合に、行われる。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
したがって、物理マシンをアドレス指定可能な仮想マシンへ変換することに関連する、多数の問題がある。
【課題を解決するための手段】
【００１１】
本発明の実装は、当技術分野における１つまたは複数の問題を、物理マシンを仮想マシンへ効率的に変換するように構成されたシステム、方法およびコンピュータプログラム製品によって解決する。具体的には、本発明の実装は、仮想マシンホスト（または、他の適切なコンピュータシステム）などで、物理マシンを必ずしもオフラインにする必要なしに、物理マシンボリュームデータを高速にコピーし、転送し、かつブート可能にすることを可能とする。一実装では、例えば、１つまたは複数のアプリケーションライタを（例えば、ボリュームシャドウコピーサービスを介して）使用して、１つまたは複数の物理マシンボリュームの、アプリケーション（および／またはファイルシステム）との一貫性を有するスナップショットを、その１つまたは複数のボリュームをオンラインにしたまま、作成することができる。スナップショットを次いで、効率的な転送手段（例えば、ブロックレベルコピー）を使用して、ホストサーバーにおける仮想ハードディスクファイルへ転送することができる。転送されたスナップショットデータに関連する動作情報（例えば、ブートデータ、システムレジストリおよびバイナリなど）を次いで、仮想マシンホストで修正して、それにより、転送されたスナップショットボリュームをブート可能にすることができる。
【００１２】
例えば、物理マシンの観点からの、本発明の一実装による、大幅なダウンタイムを招くことなく物理マシンを仮想マシンへ変換する一実施例の方法は、物理マシンの１つまたは複数のボリュームについての１つまたは複数のハードウェアコンフィギュレーション設定を識別することを含むことができる。この方法はまた、１つまたは複数の物理マシンボリュームに対応する１つまたは複数の一貫性のあるスナップショットを作成することを含むこともできる。加えて、この方法は、１つまたは複数のスナップショットを、マウントされた仮想ハードディスクファイルへ送信することを含むことができる。さらに、この方法は、１つまたは複数の一貫性のあるスナップショットのためのブートレコードを、マウントされた仮想ハードディスクファイルへ送信することを含むことができる。このような場合、ブートレコードは、仮想マシンホストで修正（または、必要に応じて最初から作成）することができる、１つまたは複数の一貫性のあるスナップショットについての動作情報の一部を形成することができる。
【００１３】
加えて、仮想マシンホストの観点からの、本発明の一実装による、物理マシンを仮想マシンへ変換するもう１つの実施例の方法は、ファイルサイズを有する仮想ハードディスクファイルを作成することを含むことができる。この方法はまた、仮想マシンホストにおいて仮想ハードディスクファイルをマウントすることを含むこともできる。このような場合、仮想ハードディスクファイルは、オペレーティングシステムにとって、アクセス可能な物理ディスクとして見えることが可能である。加えて、この方法は、１つまたは複数の物理マシンボリュームに対応する１つまたは複数の一貫性のあるスナップショットを受信することを含むことができる。さらに、この方法は、１つまたは複数の一貫性のあるスナップショットについての動作情報を修正することを含むことができる。したがって、ブートレコード、ドライバ、オペレーティングシステムバイナリ、システムレジストリ、および／または、コンフィギュレーション基本設定への変更を通じるなどして、１つまたは複数の一貫性のあるスナップショットを、仮想マシンホストにおけるオペレーティングシステムにとって適切にすることができる。なお、さらに、この方法は、仮想ハードディスクファイルのマウントを解除することを含むことができる。したがって、仮想ハードディスクファイルを、物理ディスクとしてアクセス不可能にすることができるが、むしろ、仮想マシンとしてブート可能にすることができる。
【００１４】
この概要は、さらに詳細な説明において後述される簡略化された形態において概念の選択を導入するために提供される。この概要は、特許請求の範囲に記載された対象の重要な特徴または本質的特徴を特定することを意図するものではなく、特許請求の範囲に記載された対象の範囲の決定を助けるものとして使用されることを意図するものでもない。
【００１５】
本発明の例示的実装の追加の特徴および利点を以下の説明において述べ、これは部分的にはその説明から明らかとなり、または、このような例示的実装の実施によって知ることができる。このような実装の特徴および利点を、付属の特許請求の範囲において特に指摘された手段および組み合わせを用いて実現し、得ることができる。これらおよび他の特徴は、以下の説明および付属の特許請求の範囲からより十分に明らかとなり、または、後述のような例示的実装の実施によって知ることができる。
【００１６】
本発明の上記および他の利点および特徴を得ることができる方法を説明するため、簡単に上述した本発明のより詳細な説明を、付属の図面において例示されるその特定の実施形態を参照して、提供する。これらの図面は本発明の典型的な実施形態のみを示すものであり、したがって、その範囲を限定するように見なされるべきではないという理解において、以下の添付の図面の使用を通じて、さらなる特異性および詳細とともに、本発明を記載および説明する。
【図面の簡単な説明】
【００１７】
【図１Ａ】１つまたは複数の物理ディスクボリュームの１つまたは複数のスナップショットが取られ、１つまたは複数の仮想ハードディスクファイルが仮想マシンホストで作成される、本発明の一実装による概観概略図である。
【図１Ｂ】物理ディスクボリュームの１つまたは複数のスナップショットのデータが、作成された仮想ハードディスクファイルへ、効率的な転送メカニズムを使用して転送される、図１Ａの概観概略図である。
【図１Ｃ】本発明の一実装により、転送されたスナップショットデータを含む仮想ハードディスクファイルが修正されて、ブート可能な仮想マシンが作成される、図１Ａから図１Ｂの概観概略図である。
【図２】１つまたは複数のマシンを対応する１つまたは複数の仮想マシンに変換するための物理マシンおよび仮想マシンホストの観点からの方法のフローチャートである。
【発明を実施するための形態】
【００１８】
本発明は、物理マシンを仮想マシンへ効率的に変換するように構成されたシステム、方法およびコンピュータプログラム製品に及ぶ。具体的には、本発明の実装は、仮想マシンホスト（または、他の適切なコンピュータシステム）などで、物理マシンを必ずしもオフラインにする必要なしに、物理マシンボリュームデータを高速にコピーし、転送し、かつブート可能にすることを可能とする。一実装では、例えば、１つまたは複数のアプリケーションライタを（例えば、ボリュームシャドウコピーサービスを介して）使用して、１つまたは複数の物理マシンボリュームの、アプリケーション（および／またはファイルシステム）との一貫性を有するスナップショットを、その１つまたは複数のボリュームをオンラインにしたまま、作成することができる。スナップショットを次いで、効率的な転送手段（例えば、ブロックレベルコピー）を使用して、ホストサーバーにおける仮想ハードディスクファイルへ転送することができる。転送されたスナップショットデータに関連する動作情報（例えば、ブートデータ、システムレジストリおよびバイナリなど）を次いで、仮想マシンホストで修正して、それにより、転送されたスナップショットボリュームをブート可能にすることができる。
【００１９】
したがって、本発明の実装は、物理マシンのダウンタイムを回避可能な方法における、比較的高速な「ワンタッチ」の物理−仮想マシン変換のような利点を提供することができる。さらに、本発明の実装は、信頼できる「ワンタッチ」の物理−仮想マシン変換を可能にし、これは、変換されたマシンが仮想マシンホストで一貫性を有するようになるからである。以下の明細書および特許請求の範囲からより十分に理解されるように、このような変換を、いかなる数の適切なコンポーネントおよびモジュールによっても実施することができる。例えば、本発明の実装は、ボリュームシャドウコピーサービス（「ＶＳＳ」）におけるコンポーネントおよびメカニズムを使用して、アプリケーション（および／またはファイルシステム）との一貫性を有するスナップショットを作成することを含むことができる。このようなコンポーネントは、スナップショットプロセス中に実行している１つまたは複数の物理マシンボリュームの１つまたは複数の一貫性のあるスナップショット（または、ポイントインタイムイメージ）を作成することができる。
【００２０】
加えて、本発明の実装は、ボリュームディスクサービス（「ＶＤＳ」）および／または関連コンポーネントの使用を含むことができる。一般に、ＶＤＳ（または、関連コンポーネント）は、物理ディスク上でボリュームを作成および構成するためのプラットフォームを含む。さらに、本発明の実装は、「ディスクイメージャ（ｄｉｓｋ  ｉｍａｇｅｒ）」の使用、および、場合によっては、「イメージマウンタ（ｉｍａｇｅ  ｍｏｕｎｔｅｒ）」の使用を含む。通常、ディスクイメージャは、コピーするための開始位置およびバイト（または、バイトブロック）数が与えられると、物理ディスクまたはボリュームのブロック（または、バイトブロック）ベースのコピーを作成するように構成されたコンポーネントおよび／またはモジュールを含む。対照的に、イメージマウンタツールは、例えば、仮想ハードディスクファイルを入力として取り、この仮想ハードディスクファイルをファイルシステムにマウントして、このファイルを物理ディスクとしてエクスポーズするように構成された、１つまたは複数のコンポーネントおよび／またはモジュールを備える。他のいずれかの物理ディスクがオペレーティングシステムにとってアクセス可能である場合があるのと同様に、このエクスポーズされた物理ディスクをアクセス可能にすることができ、これには、データをそのボリュームに書き込ませる機能が含まれる。
【００２１】
本発明の実装はさらに、仮想マシンホストでの仮想ハードディスクファイル（「ＶＨＤ」ファイル）の使用を含み、ここで、ＶＨＤファイルは、１つまたは複数の仮想マシン（「ＶＭ」）によって管理された（および、その内部でアクセス可能な）１つの物理ディスクおよび１つまたは複数の物理ディスクボリュームを備える。「仮想マシン」、「仮想マシンホスト」および「ＶＨＤファイル」という用語はいくつかのＭＩＣＲＯＳＯＦＴ環境で使用されるが、本明細書におけるＭＩＣＲＯＳＯＦＴコンポーネント（および／またはＷＩＮＤＯＷＳ（登録商標）  ＳＥＲＶＥＲコンポーネント）への言及は例示的でしかないことは理解されよう。具体的には、本明細書および特許請求の範囲を読んだ後、本明細書に記載されたコンポーネント、モジュール、および／またはメカニズムが、仮想マシンまたは関連するそのようなエンティティを実装する幅広い範囲の動作環境において見られ、実施されることが可能であることは理解されよう。
【００２２】
ここで、図１Ａを参照すると、この図は、物理マシン１０５（例えば、パーソナルコンピュータ、物理サーバーなど）を、仮想マシンホスト１１０でホストされた仮想マシンに変換することができる、例示的なコンピュータ化された環境１００の概略概観図を例示する。１つの基本的レベルでは、物理マシン（例えば、１０５）を仮想マシン（例えば、１７５、図１Ｃ）に変換することは、１つまたは複数の物理マシンボリューム（例えば、１１５）のスナップショットを取ること、仮想マシンハードディスクファイル（例えば、１４０）を仮想マシンホストで作成すること、スナップショットをＶＨＤファイルへ転送すること、次いで、ＶＨＤファイルにおける１つまたは複数の転送されたスナップショットボリュームを仮想マシン（例えば、１７５）としてブート可能にすることを含むことができる。よって、この変換が効率的に起こるようにするために実装することができる、多数の異なる準備およびオペレーション後のプロセスがあることは理解できよう。
【００２３】
少なくとも一実装では、例えば、この変換プロセスを、物理マシン１０５の物理ディスク上の１つまたは複数のボリューム（例えば、ボリューム１１５）のスナップショットオペレーションを開始する、変換モジュール１３０（すなわち、マシン１０５および／またはホスト１１０における１つまたは複数のモジュールを含む場合がある）の使用を通じて開始することができる。一般に、変換モジュール１３０は、物理ディスクボリュームの一貫性のあるシャドウコピーを作成するために構成された、いずれかの適切なライタおよびリクエスタを備えることができる。上述したように、例えば、このようなライタおよびリクエスタを、ボリュームシャドウコピーサービスにおいて提供することができる。よって、例えば、変換モジュール１３０は、信号を物理ディスクの１つまたは複数のボリュームの各々（例えば、ボリューム１１５）におけるすべてのアプリケーションライタへ送信して、そのデータのスナップショットオペレーションを開始することによって、変換プロセスを開始することができる。図示のように、例えば、ボリューム１１５は、少なくともボリュームデータ１２５、ならびにブートレコード１２０を含む。
【００２４】
このメッセージを変換モジュール１３０から受信すると、ボリューム１１５における各アプリケーションライタは、そのメモリ内データを物理ディスクへフラッシュする、かつ／または、いずれかのファイルシステムまたはボリュームログをフリーズする可能性がある。アプリケーションライタを使用しないアプリケーションに対しては、変換モジュール１３０は、（例えば、デフォルトで、または、ユーザーまたはアドミニストレータからのコマンドにより）そのアプリケーションをシャットダウンするように命令し、それにより、スナップショット中に書き込みが行われないことを保証することができる。したがって、図１Ａは、変換モジュール１３０が次いで、ボリューム１１５におけるすべてのボリュームデータの単一のポイントインタイムスナップショット（すなわち、コピー）を作成することができることを示す。例えば、図１Ａは、変換モジュール１３０がボリューム１１５のスナップショット１１７（すなわち、「スナップショットボリューム」）を作成しており、スナップショット１１７はこの場合、ボリュームデータ１２７およびブートレコード１２０を備えることを示す。
【００２５】
スナップショットを取るか、またはスナップショット（およびコピー）オペレーションを行うときに、データが効率的にコピーかつ転送されることを保証するために、多数の最適化を行うことができることは理解されよう。例えば、変換モジュール１３０は、ボリューム１１５のどの部分が使用中である（すなわち、データを含む）か、および、どの部分が空いているかを識別することができる。よって、スナップショットオペレーションを、ボリューム全体または物理ディスク全体ではなく、ボリュームまたは物理ディスクの使用済み部分のコピーのみを行うように構成することができる。加えて、スナップショットオペレーションをさらに、仮想化された環境においてそれほど有用でない（または、まったく有用でない）可能性のある、特定のファイルを回避するように構成することができる。
【００２６】
具体的には、例えば、スナップショットオペレーションはさらに、ボリューム差分（ｄｉｆｆ）エリア、ページファイル、不良クラスタ、ハイバネーションファイルなどに含まれるようなファイルを識別するように構成されてもよい。よって、スナップショット１１７を作成するか、またはバイトブロック転送を行うとき、これらのファイルを回避し、さらに、仮想マシンホスト１１０へ転送する必要のあるデータ量を減らすことができる。これらのタイプのファイルおよび最適化は、幅広い種類の動作環境において、他のタイプのファイル、使用済みまたは空き領域計算などのために容易に変更できることは、理解されよう。
【００２７】
いずれにしても、また説明のため、スナップショット１１７におけるデータ１２７は、主としてスナップショットオペレーション中（および／または、その後の）時間における変化のため、通常、ボリューム１１５における元のデータ１２５とは異なるようになる。例えば、物理マシン１０５はスナップショットオペレーション中になお実行中であるため、ユーザーが特定のアプリケーションデータへの書き込みを作成し続けている場合など、ボリュームデータ１２５は変化し続ける可能性がある。よって、ボリュームデータ１２７（すなわち、「ボリュームデータ１２７」）は、ボリューム１１５におけるデータ１２５の、以前の一貫性のあるポイントインタイムを表し、これは本質的に、変換モジュール１３０がスナップショットプロセスを開始したポイントインタイムである。
【００２８】
それにもかかわらず、図１Ａはまた、ブートレコード１２０がスナップショット１１７において、ボリューム１１５の実行中データがある状態と同じであることも示す。すなわち、ブートレコード（例えば、１２０）はスナップショットプロセス中に変化する可能性が低く、これは、アプリケーションが典型的にはブートレコードへのアクセスを有していないからであることは理解されよう。具体的には、ブートレコードは通常、オペレーティングシステムによって変更されるが、仮にそうであっても、典型的にはまれなことである。したがって、図１Ａは、この場合のブートレコード１２０がスナップショットオペレーション前の状態と同じであることを示す。
【００２９】
スナップショット１１７の作成前、作成中、または作成直後、変換モジュール１３０はまた、１つまたは複数の仮想ハードディスク（「ＶＨＤ」）ファイル１４０を、物理マシン１０５の物理ディスク（図示せず）に対応する仮想マシンホスト１１０でセットアップすることもできる。例えば、図１Ａは、変換モジュール１３０が、書き込み可能な仮想ハードディスクファイル１４０を作成するためのメッセージ１５０を送信することを示す。一実装では、これにはまた、最初に、特定の固定サイズのＶＨＤファイル（例えば、１４０）を作成するためのメッセージを送信し、次いで、ＶＨＤファイルを書き込み可能にするための別のメッセージを送信することが含まれる場合もある。（変換モジュール１３０はまた、（書き込み可能、またはそうでない）動的サイズのＶＨＤファイルを作成するためのメッセージを送信することもでき、このＶＨＤファイルはデータの追加によりサイズが増大する。）
通常、各ＶＨＤファイルを、コンピュータシステムの単一物理ディスクに対応するように構成することができ、物理ディスク内の各ボリュームを、新たに作成されたＶＨＤファイルにおいて同じやり方で表すことができる。しかし、ＶＨＤファイルは、場合によっては、物理ディスク全体ではなく、単一ボリュームを表す場合がある。それにもかかわらず、物理ディスクが複数のボリュームを有する（単一ボリューム１１５のみが図示されるが）、物理ディスクの実施例では、新しいＶＨＤはまた、複数のボリュームに対応するデータを含むこともできる。言うまでもなく、この点では多少の柔軟性がある。例えば、物理マシン１０５のユーザーが、複数のパーティション（および／または、ミラー化ボリュームなど）に散在するボリュームを有した場合、このユーザーは、ただ１つのパーティションを宛先仮想ハードディスクファイルにおけるスナップショットデータ専用にすることを決定する可能性がある。同様に、このユーザーは、複数のボリュームを備える物理ディスクの１つのボリュームのみを仮想ハードディスクファイルへ転送することを決定する可能性がある。
【００３０】
よって、ＶＨＤファイルのサイズは通常、少なくとも、転送されたソース（例えば、物理ディスク、具体的には、物理ディスクボリューム、物理ディスク内のデータなど）のデータに対して必要とされる可能性のある大きさのサイズとなる。したがって、本明細書の技術をまたさらに、既存の仮想マシンをより大きいストレージ領域に複製する場合にも使用することができることは理解されよう。例えば、アドミニストレータは、仮想マシンのボリュームストレージ容量が減少していることを確認すると、追加のより大きいＶＨＤファイルを作成し、仮想マシンデータのスナップショットを取り、すでに上述した同じプロセスを用いてそのスナップショットデータを新しいＶＨＤファイルへ転送する（例えば、コピーする）ことによって、この仮想マシンを本質的に「再仮想化」することができる。
【００３１】
よって、本発明の実装は、「物理−仮想」マシン変換のみでなく、「仮想−仮想」マシン変換をも含む。具体的には、また、状況によっては、本発明の実装をまた、より一般には、「マシン」から「仮想マシン」への変換と呼ぶこともできる。すなわち、「マシン」は、「物理」コンピュータシステム（例えば、関連したハードウェアおよびオペレーティングシステムを有するデスクトップコンピュータ）および「仮想」コンピュータシステム（例えば、仮想マシンホストで固有のコンピュータシステムとしてインストールされたコンピュータシステム）の両方を含むものとして理解することができる。
【００３２】
いずれにしても、仮想ハードディスクファイル１４０を作成すると、変換モジュール１３０はファイル１４０を物理ディスクとしてマウントし、例えば、ネットワーク通信を通じて、ファイル１４０がスナップショット１１７のデータを受信することができるようにする。（本明細書に記載の実装によっては、マウントすることが必要でさえない場合があることは理解されよう。）よって、図１Ａはまた、変換モジュール１３０が、仮想ハードディスクファイル１４０をマウントするためのメッセージ１５５を送信することも示す。追加の実装または代替の実装では、メッセージ１５５は、ＶＨＤファイル１４０を、仮想マシンホスト１１０、変換中の物理マシン１０５上、または、ＶＨＤファイル１４０がマウントされるマシンと変換中の物理マシン（すなわち、この場合は１０５）の間にネットワーク接続性があるいずれかの場所のうち、いずれかにマウントするための命令を含む場合がある。
【００３３】
ファイル１４０をマウントする部分には、このファイルを、物理ディスクのデバイスＩＤなど、１つまたは複数のデバイス識別子に関連付けることが含まれる場合がある。例えば、仮想マシンホスト１１０に、仮想ハードディスクファイル１４０を、「＼＼．＼ｄｅｖｉｃｅ＼Ｈａｒｄｄｉｓｋ１４５＼．」のようなドライブパスを通じて識別可能であるようにマウントするように命令することができる。具体的には、図１Ｂは、ＶＨＤ１４０が「ディスクドライブ１４５」として識別可能であることを示す。同じような仕方で、変換モジュール１３０はまた、各スナップショット（例えば、１１７）のデバイス識別子（および／または、例えば、マウントポイント）を識別することもできる。最終的に、変換モジュール１３０は、いずれかのスナップショットについて、かつ、いずれかの対応するＶＨＤファイルについて識別されたデバイス識別子を使用して、スナップショットの内容を転送することができる。
【００３４】
通常、変換モジュール１３０はスナップショット１１７の内容を、いずれかの数のデータ転送メカニズムを使用して転送することができる。一実装では、例えば、変換モジュール１３０はスナップショット１１７をバイトごとにファイル１４０へ、ディスクドライブ１４５を通じて転送することができる。追加または代替実装では、しかし、変換モジュール１３０は、「バイトブロック」を識別かつ転送することによって、スナップショット１１７をファイル１４０へ転送することができる。一般に、バイトブロックは、個々のバイトの（いずれかの任意のサイズの）固定シーケンスを備える。少なくとも一実装では、個々のバイトではなく、バイトブロックを転送することにより、ネットワークを介してスナップショット１１７を転送可能な速度が劇的に増す可能性がある。
【００３５】
例えば、従来のネットワーク転送プロトコルを介して仮想マシンホスト１１０へ転送するために、通常では数時間もかかる場合がある数ギガバイトのデータを、場合によっては、バイトブロック転送メカニズムにより、数分のみで転送することができる。いずれにしても、図１Ｂは、変換モジュール１３０がこの場合はバイト（または、バイトブロック）「１６０１」、「１６０２」などを転送し、これらのバイト／バイトブロックを直接、書き込み可能な仮想ハードディスクファイル１４０へ、ディスクドライブ１４５を通じて転送することを示す。図１Ｂに示すように、仮想ハードディスクファイル１４０はブートデータ１２０のすべてを有することができ、データ転送が完了すると、スナップショット１１７で取り込まれた他のボリュームデータ１２７を含むようになる。
【００３６】
データ転送にもかかわらず、仮想ハードディスクファイル１４０は必ずしも仮想マシンホスト１１０でブート可能ではない場合があり、これは、ブートデータおよびドライバが仮想マシンホスト１１０との関連において有用である可能性が低いからである。この理由の１つは、仮想マシン環境（および／または、仮想マシンホスト１１０内）に存在する「仮想ハードウェア」が物理マシン１０５用のハードウェアと同じものでない可能性があることである。例えば、物理マシン１０５におけるカーネルおよびハードウェアアブストラクションレイヤ（「ＨＡＬ」）のようなコンポーネントは、例えば、デュアルプロセッサシステムに基づく場合がある。加えて、仮想マシンホスト１１０は、異なるネットワークカードドライバ、プロセッサアーキテクチャ、物理ディスク（例えば、マシンに取り付けられたストレージ）、物理ディスク識別子、オペレーティングシステムドライバ、およびディスクドライバを、ホストされた仮想マシンへエミュレートすることができ、これらは、そうでなければ、変換中のソースマシン（例えば、物理マシン１０５）で見つからない可能性がある。このような違いはまた、物理ディスクボリュームを仮想ホスト内から仮想マシンへ変換する場合に存在する可能性も高い。
【００３７】
結果として、転送されたブートデータ１２０は、仮想マシンホスト１１０における適切な仮想化された環境内で必ずしも適用されるとは限らない、物理マシン１０５におけるオペレーティングシステム特性に基づく可能性がある。これらおよび他の理由は、アドミニストレータが特定の動作環境に応じて多数の異なる修正を行う必要がある場合があることを意味する。したがって、変換モジュール１３０はまた、仮想ハードディスクファイル１４０を、仮想マシンホスト１１０でブート可能になるように修正することもできる。これには、場合によっては、作成する仮想マシンについて、カーネルおよびＨＡＬ、および、他のドライバおよびレジストリ設定を、スナップショットデータに基づいて更新するための命令が含まれる場合がある。
【００３８】
よって、例えば、図１Ｃは、変換モジュール１３０がまた、リクエスト１６５および対応する引数を仮想マシンホスト１１０へ送信して、動作情報の修正をも行うことを示す。（場合によっては、仮想マシンの動作情報（例えば、ブートセクタおよびレジストリ情報）に対するこれらの修正が、（ＶＨＤファイル内部に転送される前に）物理マシンで行われる場合さえもある。）一実装では、これには、変換モジュール１３０がボリュームスナップショット１１７のブートレコードを検査し、以前に転送されたブートデータ１２０を、仮想マシンの新しいディスクおよびボリュームコンフィギュレーションに基づいた新しいブート情報（例えば、修正されたブート情報、または、最初から新しいブート情報）に置換することが含まれる場合がある。別のステップでは、変換モジュール１３０はまた、ボリュームスナップショット１１７の転送されたレジストリ情報（図示せず）を検査し、転送されたレジストリ情報を、仮想マシンホスト１１０上に存在する新しいハードウェアおよびドライバに基づいて、仮想マシン１１０にとって適切な方法で更新することもできる。
【００３９】
このような更新にはまた、カーネルおよびＨＡＬドライバなど、システムバイナリを、マルチプロセッサからシングルプロセッサハードウェアコンフィギュレーションへ変更することが含まれる場合がある。加えて、このような更新には、仮想マシンホスト１１０に固有のコンピュータおよびドライブ識別情報の追加、仮想マシンホスト１１０に固有のいずれかの適切なディスクまたはファイルドライバの追加、ならびに、適切なネットワークドライバ、ストレージドライバなどに適合するようにレジストリ情報を変更することが含まれる場合がある。このような更新にはさらに、物理デバイス用のドライバを仮想デバイス用のドライバに置換すること、仮想環境において対応する仮想デバイスがないハードウェア用のドライバを無効化すること、および、仮想環境において対応する仮想デバイスがないデバイスに依存するサービスおよびアプリケーションを無効化することが含まれる場合がある。
【００４０】
加えて、変換モジュール１３０はさらに、所期の仮想マシン（例えば、１７５）用のこれらおよび／または他の適切なコンフィギュレーション値を作成し、結果として生じる仮想マシン（例えば、１７５）が元の物理マシン１０５と同じ基本設定（例えば、メモリ、ＣＰＵなど）で動作するようにすることができる。このような仕方で、仮想マシンホスト１１０のアドミニストレータはまた（あるいは別法として）、結果として生じる仮想マシン用のこれらの基本設定を修正してもよい。さらに、アドミニストレータは、このような動作情報（すなわち、コンフィギュレーション値、基本設定など）をさらに最初から構築してもよい。いずれにしても、多数のエンティティがいかなる数の構成変更をも適切にして、結果として生じる仮想マシンがブート可能であり、かつ、仮想マシンの常駐場所（例えば、仮想マシンホスト１１０）で正しく動作するようになることを保証することができることは理解されよう。
【００４１】
適切なブートレコード（すなわち、１２０から１２３へ）、システムレジストリ情報、ドライバ情報、および／または、他のコンフィギュレーションまたは基本設定情報を適切に修正／作成した後、変換モジュール１３０は次いで、仮想ハードディスクファイル１４０のマウントを解除（すなわち、「アンマウント」）し、もはやドライブとしてアクセス可能ではないようにすることができる。例えば、図１Ｃは、変換モジュール１３０がメッセージ１７０を仮想マシンホスト１１０へ送信し、仮想マシンホスト１１０に対して、仮想ハードディスクファイル１４０のマウントを解除するように命令することを示す。このマウントを解除した後、仮想ハードディスクファイル１４０を仮想マシン１７５として使用することができ、そのデータは本質的に、スナップショットオペレーションが開始された時点のボリューム１１５のデータに等しい。
【００４２】
具体的には、新しい仮想マシン１７５によって管理されたボリューム内のデータは、あらゆる適切な点で一貫性がある（例えば、アプリケーションとの一貫性を有する、ファイルシステムとの一貫性を有する、かつ／または、クラッシュとの一貫性を有する、など）。結果として、物理マシン１０５の前のユーザーはこのとき、仮想マシンホスト１１０で仮想マシン１７５をブートし、ちょうどユーザーが物理マシン１０５を使用していたかのように（あるいは、そうであった場合よりも最適に）仮想マシンを使用する（前のデータへのアクセスを含む）ことができるようになる。加えて、ＶＨＤファイルが通常はポータブルとなる可能性があることは理解されよう。例えば、エンドユーザーは、仮想マシン１７５を、少なくとも一実装において所望のいずれかのロケーション（すなわち、別の仮想マシンホスト）へ転送することを、単に、仮想マシン１７５に関連する仮想マシンファイル（例えば、ＶＨＤファイルなど）をその所望のロケーションへ転送し、いずれかの必要な動作情報更新を行うことによって、行うことができる。
【００４３】
別の実装では、１つまたは複数のＶＨＤファイル（例えば、１４０）を物理マシン１０５自体で作成し、次いで、適切な仮想マシンホスト（例えば、１１０）へ送信／転送することさえできる。例えば、物理マシン１０５のユーザーはＶＨＤファイル（例えば、１４０）をその物理マシンで作成し、スナップショットの内容をその物理マシンにおいて関心のあるデータのためのＶＨＤファイルへ転送することができる。これは、ユーザーが望むなら、ＶＨＤファイルのマウントを（すなわち、仮想マシンホスト１１０において）回避することができる、少なくとも１つの方法である。いずれにしても、ユーザーは次いで、ＶＨＤファイルおよび対応するスナップショットの内容を適切な宛先（例えば、仮想マシンホスト１１０）へ送信／転送し、その宛先で対応する動作情報を変更することができる。別法として、ユーザーは、ソース（例えば、物理マシン１０５）におけるＶＨＤファイルおよびスナップショットの内容についての動作情報を、ＶＨＤファイルおよびスナップショットの内容を新しい宛先へ向けて送信する前に、さらに変更してもよい。
【００４４】
場合によっては、ＶＨＤ「ファイル」を作成するのではなく、そのようなものとして、メモリから、物理マシン１０５で作成されたスナップショットデータおよびＶＨＤメタデータを、トランスポートに有効な部分（例えば、バイトブロック）においてストリームするように、モジュール（例えば、変換モジュール１３０）を構成することができる。ストリームされるデータをまた、適切なＶＨＤフォーマット／コンテンツ仕様に従って、ＶＨＤフォーマットでフォーマットすることもできる。よって、宛先（例えば、仮想マシンホスト１１０）へ転送された後、このストリームを次いでＶＨＤファイルとしてセーブすることができ、これは、ストリームされたデータがＶＨＤフォーマットで生成されたからである。これは、ＶＨＤファイルのマウントを回避するための、さらにもう１つの方法である。
【００４５】
したがって、図１Ａから図１Ｃは、物理マシンボリュームデータのスナップショットを作成し、そのデータから新しい仮想マシンを作成するための、本発明の実装によって使用することができる、多数の概観概略およびコンポーネントを例示する。前述に加えて、本発明の実装をまた、特定の結果を達成するための１つまたは複数の動作を備える方法のフローチャートに関して説明することもできる。例えば、図２は、物理マシンまたは異なる仮想マシンなどのマシンを仮想マシンに変換するための物理マシン１０５および仮想マシンホスト１１０の観点からの方法のフローチャートを例示する。図２の方法を、図１Ａないし図１Ｃのメカニズムにおけるコンポーネントに関して、以下で説明する。
【００４６】
例えば、図２は、１つまたは複数の物理マシンボリュームにおいて大幅なダウンタイムを招くことなく、物理マシンを仮想マシンホストにおける仮想マシンへ変換する物理マシン１０５の観点からの方法が、物理マシンのハードウェアコンフィギュレーションを識別する動作２００を備えることができることを示す。動作２００は、マシンの１つまたは複数のボリュームについての１つまたは複数のハードウェアコンフィギュレーション設定を識別することを含む。例えば、図１Ａは変換モジュール１３０を示し、これは、スナップショットプロセスの開始に先立って、ボリューム１１５におけるハードウェア（および／またはソフトウェア）コンフィギュレーション設定を識別することができる。これには、ブートレコード１２０およびボリュームデータ１２５を、物理マシン１０５でボリューム１１５上に存在するものとして識別することが含まれる場合があり、さらに、データがマルチプロセッサ環境向けに構成されるかどうか、オペレーティングシステムによりサポートされたファイルにおける非互換性、考慮する必要のあるストレージおよびネットワークドライバがあるかどうかなどを識別することが含まれる場合がある。
【００４７】
加えて、図２は、物理マシン１０５の観点からのこの方法が、１つまたは複数のボリュームのスナップショットを作成する動作２１０を備えることができることを示す。動作２１０は、１つまたは複数のマシンボリュームに対応する１つまたは複数の一貫性のあるスナップショットを作成することを含む。例えば、図１Ａは、変換モジュール１３０がボリューム１１５のスナップショット１１７を作成することを示し、これには、以前と同じブートレコード１２０、ならびにボリュームデータ１２７が含まれる。少なくとも一実装では、変換モジュール１３０は、ボリューム１１５において、使用可能な場合は、ライタに含まれたスナップショットプロセスを呼び出すことができ、あるいは、このようなライタが使用可能でない場合は単にアプリケーション（または、他の書き込みプロセス）をシャットダウンすることができる。結果として、スナップショット１１７内のデータがスナップショットプロセス後に、時間内に単一インスタンスについて一貫する（例えば、アプリケーションとの一貫性を有する）ことを保証することができる。
【００４８】
図２はまた、物理マシン１０５の観点からのこの方法が、スナップショットを、マウントされた仮想ディスクファイルへ送信する動作２２０を備えることができることを示す。動作２２０は、１つまたは複数の一貫性のあるスナップショットを、マウントされた仮想ハードディスクファイルへ送信することを含む。例えば、変換モジュール１３０は、物理マシン１０５で取られた各スナップショットのためのデバイス識別子を検索し、さらに、仮想マシンホスト１１０にマウントされた各仮想ハードディスクファイルのためのいかなるデバイス識別子をも検索する。適切なデバイス識別子を検索すると、図１Ｂは、変換モジュール１３０が、バイト（または、バイトブロック）転送／コピーメカニズムを使用するなどして、スナップショット１１７のボリュームデータ１２７を仮想ハードディスクファイル１４０へ転送することができることを示す。
【００４９】
図２はさらに、物理マシン１０５の観点からのこの方法が、ブートレコードを、マウントされた仮想ディスクファイルへ送信する動作２３０を備えることができることを示す。動作２３０は、１つまたは複数の一貫性のあるスナップショットのためのブートレコードを、マウントされた仮想ハードディスクファイルへ送信し、１つまたは複数の一貫性のあるスナップショットのためのブートレコードを仮想マシンホストで修正することができるようにすることを含む。例えば、図１Ｂは、変換モジュール１３０がまたブートデータ１２０をも仮想ハードディスクファイル１４０へ送信することを示す。図１Ｃはまた、変換モジュール１３０が、ブートレコード１２０をレコード１２３に修正して、ブートレコード１２３が仮想マシンホスト１１０の動作環境に対して一貫するようにするためのメッセージ１６５を送信することができることも示す。一実装では、新しい仮想マシンのための新しいブートレコードを、単に送信および修正するのではなく、単に最初から作成することができる。
【００５０】
前述に加えて、図２は、仮想マシンホスト１１０の観点からの、１つまたは複数のマシンボリュームにおいて大幅なダウンタイムを招くことなく、マシン（すなわち、物理マシンまたは前の仮想マシン）を仮想マシンホストにおける仮想マシンへ変換する方法が、仮想ハードディスクファイルを作成する動作２４０を備えることができることを示す。動作２４０は、ファイルサイズを有する仮想ハードディスクファイルを作成することを含む。例えば、図１Ａは、仮想マシンホスト１１０が、書き込み可能な仮想ハードディスクファイルを作成するように仮想マシンホスト１１０に命令するメッセージ１５０、ならびに、新しい仮想ハードディスクファイルを書き込み可能にするための命令を受信することを示す。これに応じて、仮想マシンホスト１１０は仮想ハードディスクファイル１４０を作成し、これを書き込み可能にする。上述したように、本明細書では、仮想ハードディスクファイルサイズを静的または動的にすることができる。例えば、仮想ハードディスクファイル１４０は、５０ギガバイトのボリューム１１５データを収容するために、１００ギガバイトに設定される場合がある。別法として、変換モジュール１３０は、仮想ハードディスクファイル１４０を、追加のデータ転送に伴い、動的に大きくなるように設定する。
【００５１】
図２はまた、仮想マシンホスト１１０の観点からのこの方法が、仮想ハードディスクファイルをマウントする動作２５０を備えることができることも示す。動作２５０は、仮想マシンホストにおいて仮想ハードディスクファイルをマウントし、仮想ハードディスクファイルがアクセス可能な物理ディスクとして見えるようにすることを含む。例えば、図１Ａは、仮想マシンホスト１１０が、仮想ハードディスクファイル１４０をマウントするためのリクエスト１５５を受信することを示す。一実装では、仮想マシンホスト１１０は、ファイル１４０を特定のデバイス識別子に関連付けるように、次いで、その識別子を物理デバイスとしてマウントするように、命令される場合がある。仮想ハードディスクファイル１４０は次いで、ディスクデバイス１４５として見なされ、アクセスされることが可能である。
【００５２】
加えて、仮想マシンホスト１１０の観点からのこの方法は、１つまたは複数のスナップショットを受信する動作２６０を備えることができる。動作２６０は、１つまたは複数の物理マシンボリュームに対応する１つまたは複数の一貫性のあるスナップショットのデータを受信することを含む。例えば、図１Ｂに示すように、仮想マシンホスト１１０は、いずれかの適切な転送メカニズムの使用を通じて（すなわち、いずれかのネットワーク転送プロトコルにおいて、バイトごとか、バイトブロックごとか、などにかかわらず）、ボリュームデータ１２７およびブートデータ１２０を受信する。
【００５３】
さらに、図２は、仮想マシンホスト１１０の観点からのこの方法が、ブートレコードを修正する動作２７０を備えることができることを示す。動作２７０は、１つまたは複数の一貫性のあるスナップショットについての動作情報を修正し、１つまたは複数の一貫性のあるスナップショットが仮想マシンホストにおけるオペレーティングシステムにとって適切であるようにすることを含む。図１Ｃに示すように、例えば、仮想マシンホスト１１０は動作情報を修正するためのメッセージ１６５を受信する。例えば、メッセージ１６５は、適切な仮想マシンホスト１１０基準を識別するための１つまたは複数のリクエスト、および、ブートデータ１２０をブートデータ１２３へ適切な方法で変更することを含むことができる。メッセージ１６５（または、図示しない別のメッセージ）にはまた、レジストリ、および、または動作基本設定情報を変更するための１つまたは複数のリクエストが含まれる場合もある。
【００５４】
動作特性のこのような変更には、例えば、いずれかの数のハードウェアおよびオペレーティングシステムコンフィギュレーション（例えば、プロセッサの数、ハードウェアドライバ、ディスクドライバ／識別子およびストレージドライバ／識別子、ネットワークドライバなど）が含まれる場合がある。このような変更では、仮想マシンの新しいオペレーティングシステムが仮想環境に対して互換性を有し、適切に機能していることを保証するように考慮する必要がある場合がある。動作特性の変更にはさらに、ドライバおよび他のハードウェアの使用、バイナリにおいて置換および／または登録中であるドライバの識別、カーネルおよび／またはＨＡＬ情報の更新など、さまざまなレジストリ操作が含まれる場合がある。動作特性の変更にはなお、さらに、メモリおよび／またはＣＰＵ要件についてのものなど、仮想マシンについてのさまざまなコンフィギュレーション基本設定が含まれる場合がある。
【００５５】
加えて、図２は、仮想マシンホスト１１０の観点からのこの方法が、仮想ハードディスクファイルのマウントを解除する動作２８０を備えることができることを示す。動作２８０は、ハードディスクファイルのマウントを解除し、仮想ハードディスクファイルが物理ディスクとしてアクセスできないようにすることを含む。例えば、仮想マシンホスト１１０はメッセージ１７０を受信し、これは、仮想マシンホスト１１０が仮想ハードディスクファイル１４０のマウントを解除することを要求するものである。仮想マシンホスト１１０は次いで、仮想ハードディスクファイルをアンマウントし、ファイル１４０がローカルに、あるいはネットワークを介して、ホストレベルのディスクドライブとしてもはやアクセスできないようにすることができる。結果として、仮想ディスクファイル１４０を仮想マシン１７５としてブートすることができ、これは、時間内に単一インスタンスについて一貫性があり、かつ、仮想マシンホスト１１０で動作する準備ができているデータを含む。具体的には、また、エンドユーザーの観点から、仮想マシン１７５は、ほぼあらゆる点から見て、スナップショットオペレーションより前の物理マシン１０５の、本質的に同一の形態（すなわち、同じデータ、またはそのデータサブセット）である。
【００５６】
したがって、図１Ａから図１Ｃおよび図２は、マシン（例えば、物理マシンまたは前の仮想マシン）を仮想マシンに効率的に変換するための多数のコンポーネントおよびメカニズムを提供する。具体的には、これらの図および対応するテキストでは、変換中のマシンを必ずしもリブートすることなく、かつ／または、必ずしもＡＤＳまたはＰＸＥ環境にリブートする必要なしに、どのように本発明の実装を少なくとも１つの点において実施することができるかを説明している。したがって、前述のコンポーネントおよびメカニズムにより、物理マシンを比較的高速に、従来のディスクおよびネットワーク転送速度などで、作成可能となる。
【００５７】
本明細書で上述したように、本発明の実装を、幅広い範囲の最適化、および、幅広い範囲のハードウェアおよびオペレーティングシステム環境に合わせて、変更あるいは修正することができることは理解されよう。例えば、本発明の実装を、いかなるタイプのマシンの、新しい仮想マシンへの変換にも容易に適用することができる。以前の仮想マシンについて、例えば、ユーザーは、そのボリュームがすでに使い切られている可能性のある仮想マシン用に、より大きいストレージ領域の作成を望む場合がある。したがって、ユーザーは、以前の仮想マシンの以前のＶＨＤファイルより大きい１つまたは複数のＶＨＤファイルを作成し、前の仮想マシンデータのスナップショットを取り、この仮想マシンのスナップショットデータを、より大きいＶＨＤファイルへ転送することもありうる。なお、さらに、本明細書に記載した変換プロセスをさらに、明記したステップ以外の複数の独立ステップに分けることができる。例えば、ユーザーが、ボリュームイメージをターゲットマシンに転送する方法を有する場合、このユーザーは単にフィックスアップ（ｆｉｘ−ｕｐ）オペレーションを呼び出して、このイメージを「仮想化」するなどし、このイメージがターゲットマシンでブート可能であるようにすることができる。
【００５８】
前述に加えて、本発明の実装をまた幅広い範囲のディスクコンフィギュレーションにも適用することができることは、容易に理解されよう。例えば、マシンボリューム１１５がインストールされる物理ディスクは、オペレーティングシステムにおけるいかなる１つまたは複数のベーシックまたはダイナミックディスクであってもよく、さらに、さまざまなパーティションおよび／またはボリュームを有する場合がある。それにもかかわらず、本明細書に記載したプロシージャ、コンポーネントおよびメカニズムを、仮想マシンにおいて、ちょうどそれらが前のマシン（例えば、物理マシンまたは以前の仮想マシン）においてそうであったように、このような変形形態に適用することができる。具体的には、新しい仮想マシンが、ちょうど以前にベーシックまたはダイナミックディスク特性で動作していたように動作するように、物理ダイナミックまたはベーシックディスクに関連する特性を仮想マシンホストへ転送することができる。したがって、本明細書に記載したコンポーネント、モジュールおよびメカニズムを幅広く適用して、前のマシンから、前のマシンの新たに仮想化された形態へのシームレスな移行を保証することができる。
【００５９】
本発明の実施形態は、以下でより詳細に論じるような、さまざまなコンピュータハードウェアを含む専用または汎用コンピュータを備える場合がある。本発明の範囲内の実施形態はまた、コンピュータ実行可能命令またはデータ構造を搬送または格納するためのコンピュータ可読媒体をも含む。このようなコンピュータ可読媒体は、汎用または専用コンピュータによってアクセスすることができる、いかなる使用可能な媒体にすることもできる。
【００６０】
限定ではなく例として、このようなコンピュータ可読媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または、所望のプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形態において搬送または格納するために使用することができ、かつ、汎用または専用コンピュータによってアクセスできる、他のいかなる媒体もが含まれる場合がある。ネットワークまたは別の通信接続（ハードワイヤード、ワイヤレス、または、ハードワイヤードまたはワイヤレスの組み合わせのいずれか）を介して情報がコンピュータへ転送または提供される場合、このコンピュータは適切にこの接続をコンピュータ可読媒体と見なす。よって、このようないかなる接続も適切にコンピュータ可読媒体と称される。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００６１】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータまたは専用処理デバイスに、特定の機能または機能のグループを行わせる、命令およびデータを備える。対象を構造的特徴および／または方法的動作に特有の言語において説明したが、添付の特許請求の範囲で定義された対象が必ずしも上述の特定の特徴または動作に限定されないことを理解されたい。むしろ、上述の特定の特徴および動作は、特許請求の範囲を実施する実施例の形態として開示される。
【００６２】
本発明は、他の特定の形態において、その精神または本質的特徴から逸脱することなく、実施することができる。上記の実施形態は、あらゆる点で例示的なものでしかなく、限定的ではないと見なされるものである。本発明の範囲は、したがって、前述の記載によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲と等価の意味および範囲に入るすべての変更は、その範囲内に含まれるものである。
【符号の説明】
【００６３】
１００  コンピュータ化された環境
１０５  物理マシン
１１０  仮想マシンホスト
１３０  変換モジュール
【図１Ａ】
0005496254.tif 000002
【図１Ｂ】
0005496254.tif 000003
【図１Ｃ】
0005496254.tif 000004
【図２】
0005496254.tif 000005