VHD/VHDXファイルを可能な限り小さくしたければ、次の手順で操作します。
(1)仮想マシンをオフにします。
(2)「ディスクの管理ツール」などを使用して、仮想マシンのVHD/VHDXファイルを「読み取り専用」でHyper-Vホストにローカルマウントします。
(3)「Hyper-Vマネージャー」から「仮想ハードディスクの編集ウィザード」を開始し、読み取り専用でマウント中のVHD/VHDXファイルのパスを指定して、「最適化」を実行します。または、次に説明する「Optimize-VHD」コマンドレットを実行します(画面4)。
なお、Windows Server 2016 Technical Preview 5では、読み取り専用でマウントされたVHD/VHDXを「仮想ハードディスクの編集ウィザード」で最適化することはできません。これはプレビュー版の不具合なのかもしれませんが、Windows 10 バージョン1607の編集ウィザードでは読み取り専用でマウントされた仮想HDDを最適化できました。
Windows PowerShellであれば、次のように3行のコマンドラインで素早く実行できます。なお、「Optimize-VHD」コマンドレットを利用するには、コンピュータに「Hyper-Vの役割」がインストールされている必要があります。
Mount-VHD "VHD/VHDXファイルのパス" -NoDriveLetter -Readonly Optimize-VHD "VHD/VHDXファイルのパス" -Mode QuickまたはFull Dismount-VHD "VHD/VHDXファイルのパス"
読み取り専用でマウントした状態で最適化を実行することに違和感を覚える人も多いでしょう。実は、筆者もその一人です。
Optimize-VHDコマンドレットの既定は、「Quickモード」での最適化です。以下のサイトで公開されているOptimize-VHDコマンドレットの説明を見ると、QuickモードおよびFullモードは、「仮想ハードディスクが読み取り専用でマウントされている場合にのみ利用可能(Allowable only if the virtual hard disk is mounted read-only.)」とあります。つまり、これが正しい操作手順なのです。
読み取り専用でマウントして最適化を実行した場合の縮小効果と、デフラグやゼロクリアが無駄な作業であることを示すために、比較実験を行いました。
Windows 7がインストールされているVHDを準備します。最適化前のVHDのサイズは8.83GBです。このVHDをローカルマウントし、OSボリュームをクイックフォーマットしてから、マウントを解除しました(画面5)。
OSボリュームのフォーマットにより、VHDの中にあったほとんどのファイルが削除されたわけですが、この時点でVHDのサイズは8.84GBです。この8.84GBのVHDのコピーを4つ作成し、次の4つのパターンで幾つかの最適化オプションを実行し、最適化後のファイルサイズ、最適化や事前準備作業の所要時間を比較してみました(画面6)。
実験結果をまとめたものを表1に示します。読み取り専用でVHDをマウントし、Optimize-VHDコマンドレットのQuickモードで実行するのが、最も短時間で縮小効果がありました。オフラインのVHDに対する最適化は、事前準備作業のあるなしに関係なく、最適化前とほとんどサイズは変わりませんでした。
Optimize-VHDコマンドレットの「Prezeroedモード」は読み取り専用でのマウントを必要としないオプションで、最適化前にゼロクリアしてくれるものです。実行結果はsdeleteツールでゼロクリアしたものと同じですが、Prezeroedモードの方が短時間で完了するという利点があります。ただし、今回の実験では、サイズの縮小効果はどちらも全くありませんでした。
なお、今回の実験はVHDのOSボリュームのクイックフォーマット後の最適化を検証したものです。通常のファイルの追加/削除で肥大化したVHD/VHDXの最適化では、全く違った結果になるかもしれません。ですが、読み取り専用でVHDをマウントした状態で最適化するのが最も早く、効果が高いのには違いはないでしょう。
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。
Copyright © ITmedia, Inc. All Rights Reserved.