VHD/VHDXのサイズを縮小するための事前準備は面倒?──その行為、無駄です!その知識、ホントに正しい? Windowsにまつわる都市伝説(67)(1/2 ページ)

VHDやVHDXファイルが肥大化すると、物理ディスクの使用効率が低下し、他の場所へのコピーも時間がかかるようになります。そのため、容量可変タイプのVHDやVHDXは、時々「最適化」してあげる必要があるのですが……。

» 2016年09月26日 05時00分 公開
[山市良テクニカルライター]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windowsにまつわる都市伝説」のインデックス

連載目次

Windows 10仮想マシンで重要になるVHD/VHDXの最適化作業

 マイクロソフトの仮想化テクノロジーといえば、Windows Serverの「サーバーの役割」の1つである「Hyper-V」です。Hyper-V専用の「Microsoft Hyper-V Server」という無償サーバOSもあります。Windows 8以降はProエディション以上の64ビット版でHyper-Vを利用できます。

 Hyper-Vの仮想マシンに割り当てることができる仮想HDDの形式は「VHD」です。VHDは、WindowsのバックアップやネイティブブートVHDなど、仮想マシン以外の用途でも利用されています。Windows 8およびWindows Server 2012のHyper-Vからは、「VHDX」という新しい形式のサポートが追加されました。

 VHDとVHDXはどちらも「容量固定タイプ(VHDの推奨)」「容量可変タイプ(VHDXの推奨)」「差分タイプ(親VHDの差分のみを保持するVHD/VHDX)」のいずれかで作成できます。

 容量可変タイプのVHD/VHDXは、最小サイズで作成され(127GBディスクの場合、VHDで260KB、VHDXで4096KB)、仮想マシンのゲストOSのディスクへ書き込むことにより、自動的にファイルサイズが拡張していきます。自動的に縮小するという機能はないため、ゲストOS側で何度もファイルを追加したり削除したりすることにより、ゲストOSが実際に使用中のディスク領域よりも大きなファイルサイズになることもあります。

 実際の使用量よりもVHD/VHDXのサイズが肥大化してしまうと、バックアップやファイルのコピー、移動に余計に時間がかかるようになります。また、物理ディスク上の領域を無駄に占有してしまいます。そのため、容量可変タイプのVHD/VHDXは、時々ファイルサイズをチェックして、手動で最適化を行い、適切なサイズに維持することが重要になります。

 VHD/VHDXの最適化作業は、Windows 10を仮想マシンで運用する場合に重要になってくるでしょう。Windows 10を最新版(Current Branch)で使い続けるとなると、「機能更新(旧称、機能アップグレード)」という名のアップグレードインストールが1年に複数回実施され、OSが総入れ替えになるからです(画面1)。

画面1 画面1 Windows 10の機能の更新が行われると、VHD/VHDXのファイルサイズが一気に膨れ上がる

 アップグレード前のOS環境はロールバック用に保持されますが、自動(バージョン1511以前は30日間、バージョン1607以降は10日間)または手動で削除され、数10GBの領域が解放されます。しかし、仮想マシンのVHD/VHDXのファイルサイズは肥大化したままです。

 Windows 10の機能を更新した後にVHD/VHDXを最適化する作業といわれれば、おそらく多くの人が次のような作業手順を想像するのではないでしょうか。

(1)Windows 10の新しいバージョン(ビルド)へのアップグレードが完了したら、ロールバック用のファイルの自動削除を待たずに、「ディスククリーンアップ(Cleanmgr.exe)」を実行し、「以前のWindowsのインストール」と「一時インストールファイル」を選択して削除します(画面2)。

(2)Windows 10をシャットダウンし、仮想マシンをオフにします。

(3)「Hyper-Vマネージャー」の「操作」ペイン、または仮想マシンの設定画面から「仮想ハードディスクの編集ウィザード」を開始し、仮想マシンのVHD/VHDXに対して「最適化」操作を実行します(画面3)。

画面2 画面2 「ディスククリーンアップ(Cleanmgr.exe)」を実行してロールバック用のファイルを削除すると、10GB以上の空き領域を確保できる
画面3 画面3 「仮想ハードディスクの編集ウィザード」でVHD/VHDXに「最適化」を実行する

 筆者がこの手順で実施してみたところ、Windows 10 バージョン1511がインストールされていた仮想マシンをバージョン1607にアップグレードした直後のVHDXのファイルサイズは46.47GB、ゲストOSのディスク使用は43.7GBで、ディスククリーンアップを実行後、ディスク使用は30.5GBになりました。

 その後、仮想マシンをオフにし、「仮想ハードディスクの編集ウィザード」で最適化を実行したところ、VHDXのファイルサイズは40.82GBまで縮小しました。ファイルサイズの縮小効果が、微妙な感じはしないでしょうか。

 実は、正しそうに見えるこの手順では、期待していたほどファイルサイズが縮小されない場合があります。

事前圧縮(プリコンパクト)は古くて無駄な知識

 期待したほど縮小効果が得られないのは、「事前圧縮とか、デフラグとか、ゼロクリアとか、必要な事前作業をしてないからでしょう」という声が聞こえてきそうですが、その知識はWindows以外のゲストOSには必要かもしれません。しかし、Windowsゲストの場合は必要ありません。VHD/VHDXの縮小前に、ゲストOS側で(またはローカルマウントして)、事前作業を行うというのは、かなり古い知識に基づいたものです。

 Hyper-Vの前身ともいえるWindows Server 2003 R2以前向けの「Microsoft Virtual Server」、およびWindows 7以前向けの「Windows Virtual PC」、Windows XP/Vista向けの「Microsoft Virtual PC」には、「precompact.exe」という事前圧縮ツールが提供されていました。当時は、WindowsゲストのVHDを最適化する前に、ゲストOS側で「precompact.exe」ツールを実行することが必要な手順でした。

 しかし、Hyper-V登場以降、NTFSボリュームを含むVHD/VHDXの最適化方式が変更になり、事前作業は不要になりました。Hyper-Vでは、事前作業なしで、すぐにVHD/VHDXを最適化してもよいのです。

 Hyper-Vで「precompact.exe」ツールが提供されなくなったため、代替のツールとしてWindows標準の「ディスクの最適化(Defrag.exe)」を実行して、断片化を解消しておいたり、Windows Sysinternalsの「sdelete」ツールの「-z」オプションを使用して、空き領域に0(ゼロ)を書き込んだりといった事前作業を現在でも行っている人はいるでしょう。

 しかし、以前のように事前作業を実施してからVHD/VHDXを最適化したとしても、縮小後のファイルサイズに大きな違いはありません。これらの事前作業は時間がかかるだけでなく、無駄な作業なのです。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。