Windows TIPS
[Tools & Services]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

容量固定タイプのVHDファイルを高速に作成する

解説をスキップして操作方法を読む

デジタルアドバンテージ 小林 章彦
2011/10/28
対象OS
Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
Windows 7
Windows Server 2008 R2
容量固定タイプの仮想ハードディスク(VHD)の作成には非常に時間がかかる。
これは作成時に、仮想ハードディスクの全領域を「0」クリアしているためだ。
Microsoftが無償で提供しているVHD Toolを利用すると、「0」クリアしないため、大きな容量固定タイプのVHDファイルでもすぐに作成できる。

解説

 Windows 7のWindows Virtual PCやWindows Server 2008 R2のHyper-Vなどの仮想化ソフトウェアでは、仮想マシンで利用するための「仮想ハードディスク(VHDファイル)」と呼ばれるファイルを使用する。このファイルの中には、仮想マシンで利用するハードディスクのイメージが1つのファイルとして保存されており、1つのボリューム上に複数のOSがインストールできたり、VHDファイルをコピーすることでディスク・イメージのバックアップができたりするというメリットがある。

Windows 7新時代 第10回 Windows 7のVHDファイル・サポート
Windows 7新時代 第11回 Windows 7のVHDブートを試す

 Windows 7/Windows Server 2008 R2では、VHDファイルの直接アクセスがサポートされており、VHDの作成や読み書きが可能なほか、EnterpriseとUltimateの2つのエディションではVHDファイルからブートできる機能がサポートされている(Windows Server 2008 R2はすべてのエディションでVHDファイルからのブートをサポートしている)。これにより、Windows 7 EnterpriseやUltimateのシステム・イメージが含まれたVHDファイルからの起動(VHDブート)が可能である。

 このようにVHDの利便性は高まっており、仮想化ソフトウェアで利用するだけでなく、例えばWindows 8のDeveloper Preview版をテスト・マシンにインストールするといった用途でも便利に使える(関連記事参照)。

Windows 8 Developer Preview 第1回 Windows 8 Developer Previewの概要
3.Windows 8 DP版のインストール・ガイド

 VHDファイルには、容量固定タイプ(最初からVHDファイルの大きさを物理ディスク上に確保する)と容量可変タイプ(実際に書き込んだ分だけ物理ディスク上のVHDファイルの容量を拡張していく)の2種類がある。容量可変タイプは、VHDファイルのサイズに関係なく、すばやく作成できるうえ、実際にデータが書き込まれるまで物理ディスクを消費しないため、テスト用の仮想マシンを作成する際などによく利用される。容量固定タイプは、事前に指定したサイズの巨大な単一のファイルを作成するため、容量が大きくなればなるほどVHDファイルの作成に時間がかかる。しかしディスクI/Oのパフォーマンスは、容量固定タイプの方が優れており、仮想マシンを実運用で利用するような場合は容量固定タイプの使用が推奨されている。

 容量固定タイプVHDファイルの作成に時間がかかるのは、セキュリティ上の理由からデータブロックに「0(ゼロ)」を書き込むためだ。そのため、作成するVHDファイルのサイズが大きくなると作成に時間がかかることになる。「0」を書き込んでデータをクリアするのは、物理ディスク上でVHDファイルの領域となった部分に削除済みのデータがあると、それが復元可能な状態でVHDファイルに残ってしまう可能性があるからだ。例えば、VHDファイルを仮想マシンの設定とともに、別の人に渡すような場合、「0」クリアされていないと、そのVHDファイルから作成したPCで削除した顧客情報などのデータが復元され、漏えいする危険性があるわけだ。

 逆に社内で利用するようなVHDファイルならば「0」クリアする必要はないので、素早く容量固定タイプVHDファイルを作成したいと思うのではないだろうか。実は、こうした要望に応えてくれるツールがMicrosoftのMSDN Code Galleryで「VHD Tool」として無償提供されている。

  操作方法

 以下のWebページの[Download]タブでVHD Tool 2.0 Final(VhdTool.exe)をダウンロードする。

 ダウンロードしたEXEファイル自体がツールなので、適当なフォルダを作成して、移動しておくとよい。コマンド・プロンプトを管理者権限で実行し、以下のようにコマンドを実行すれば、VHDファイルがすぐに作成できる。引数には、「/create <ファイル名>」に続けて、作成したいVHDファイルのサイズをbytes単位で指定する(引数なしで実行すると使い方が表示される)。なお、VHD Toolでは、12Mbytes以下のVHDファイルは作成できない、またVHD ToolはNTFSしかサポートしていないので注意が必要だ。

C:\> vhdtool /create test.vhd 40000000
        Status: Creating new fixed format VHD with name "test.vhd"
        Status: Attempting to create file "test.vhd"
        Status: Created file "test.vhd"
        Status: Set the file length
        Error: Unable to set valid data length with error:
VHD ToolによるVHDファイルの作成例
40000000bytes(約38Mbytes)のVHDファイルを作成してみた。「Unable to set valid data length with error」というエラーが表示されるが、VHDファイルは問題なく作成できている(このエラーについては、MSDN Code GalleryのVHD Toolページの[Discussions]タブの中でも質問が出ているが、原稿執筆時点では明確な回答は得られていない)。作成するだけの空きディスク領域がない場合もエラーとなる。

 このコマンドを実行すると、指定されたサイズのVHDファイルがすぐに作成されるが、内容は「0」クリアされていないので、VHDファイルを配布する際には、情報漏えいのリスクがあることに注意した方がよい。

 またVHD Toolは、「/extend」オプションでVHDファイルの容量を拡大したり、「/Repair」オプションでHyper-Vのスナップショットや復元ディスクの壊れたチェインを修復したりできる。End of Article

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間