SysinternalsユーティリティのDisk2Vhdは、物理ディスクのイメージをキャプチャして、仮想ハードディスク(Virtual Hard Disk:VHD)に変換するユーティリティです。VHDは、Microsoft Hyper-V、Virtual PC、またはVirtual Server上で稼動する仮想マシンの、物理ディスクを表すファイル形式です。

 他のP2V(物理マシン-仮想マシン)変換とDisk2Vhdとの違いは、Disk2Vhdが実行中のWindowsシステムのイメージをオンラインでキャプチャできる点にあります。Disk2Vhdは、Windows XPから導入された、Windowsのボリュームスナップショット機能を使用して、変換に含めたいディスクの、ある時点の一貫性のあるスナップショットを作成します。Disk2Vhdを使用すると、変換中のローカルディスク上にVHDを作成することができます(変換対象とは別のディスクにVHDを書き込むほうがパフォーマンスは良くなります)。

Disk2Vhdの使い方

 Disk2Vhdは、すべてのサポート対象のWindowsで動作します。また、Disk2Vhdを実行するには、管理者権限が必要です。

 Disk2Vhdのユーザーインターフェイスは、図1に示すように、システム上に存在するボリュームを一覧表示して、VHDへの変換に必要なディスク領域を示します。VHDを作成するには、単純にキャプチャ対象のボリュームを選択して、キャプチャしたイメージを書き込むVHDのパスとファイル名を指定して、[Create]ボタンをクリックします。

図1●Disk2Vhdのウィンドウ
図1●Disk2Vhdのウィンドウ
[画像のクリックで拡大表示]

 Disk2Vhdは、選択したボリュームが存在するディスクごとに1つのVHDを作成します。ディスクのパーティション情報は保持されますが、ディスク上の選択したボリュームのデータコンテンツのみをコピーします。これにより、例えば、システムボリュームだけをキャプチャして、データボリュームを除外するという選択ができます。VHDの作成時間を短縮するため、Disk2Vhdはページファイル(pagefile.sys)や休止状態ファイル(hibrefil.sys)をVHDにコピーしません。

 Disk2Vhdを使用して作成したVHDを使用するには、お望みの仕様で仮想マシンを作成し、仮想マシンの構成にIDE ディスクとしてVHDを追加します。初回起動時、仮想マシンはキャプチャしたWindowsのインスタンスを起動し、仮想マシンのハードウェアを検出して、自動的にドライバーをインストールします(必要なドライバーがイメージ内に存在する場合)。必要なドライバーが存在しない場合、それらはVirtual PC またはHyper-Vの統合コンポーネントとともにインストールされます。Windows 7またはWindows Server 2008 R2の[ディスクの管理]スナップインまたはDISKPARTコマンドを使用して、VHDをローカルに接続することもできます。

 Windows XPまたはWindows Server 2003システムからVHDを作成する場合で、そのVHDをVirtual PCの仮想マシンの起動用に使用したいと考えているなら、[Prepare for use in Virtual PC]オプションを選択してください(図2)。VHD内にインストールされたWindowsのハードウェア抽象化レイヤー(HAL)を、Virtual PCと互換性のあるものに差し替えます。このオプションは、Disk2VhdをWindows XPまたはWindows Server 2003上で実行する場合にのみ提供されます。

図2●Windows XP上で実行したDisk2Vhdでは、[Prepare for use in Virtual PC]オプションを選択可能
図2●Windows XP上で実行したDisk2Vhdでは、[Prepare for use in Virtual PC]オプションを選択可能
[画像のクリックで拡大表示]

 なお、[Prepare for use in Virtual PC]オプションを有効にすると、Virtual PC(Hyper-Vではありません)と互換性のあるカーネルとHAL(DLL)がVHD内にコピーされ、既定のOS起動エントリとして互換性のあるカーネルとHALを使用するエントリがVHD内のboot.iniに追加されます。[Prepare for use in Virtual PC]オプションを有効にしてキャプチャしたVHDをHyper-V仮想マシンに接続した場合、仮想マシンの起動は可能ですが、統合サービスのインストールのためのHALのアップグレードに失敗します。この問題は、既定のOS起動エントリを元に戻すことで回避できる場合があります。