なんだか意外に知られていないようなので、メモ。
VirtualServer/VirtualPC のゲストマシン(中の仮想マシン)でローカルディスクのファイルに対して読み書き繰り返していると、
ホストマシン(外の実態マシン)で見える仮想HDファイル *.VHD の容量は実質的に使用している容量よりもどんどん大きくなっていきます。
ホストマシンの Virtual~ には、仮想ディスクの最適化(圧縮)のメニューがありますが、
通常はこれだけを実行しても期待通りにはファイルサイズは小さくなりません。
仮想ディスクを整理するには手順があって、
1.ゲストマシンで、全てのドライブに対してデフラグを行う。
2.ホストマシンの Virtual~ をインストールしたフォルダ \Program Files\Microsoft Virtual~\ 中の
\Virtual Machine Additions\ に、Precompact.iso もしくは ~Precompactor.iso というCDのイメージがあるので、
ゲストマシンの CDで見られるようにする。
3.ゲストマシンで、CDの中にある Precompact.exeを実行する(通常は自動起動するかも)
4.precompactが終了したらゲストマシンをシャットダウン。
5.ホストマシンでディスクの最適化を行う。
の順に実行しないと、思うような最適化がされません。
(何かのタイミングでゲストマシンを停止してファイルを整理する必要があるということです)
ついでに、少々注意。
A.ゲストマシンに Linuxを使った場合には、precompact に相当する明示的なコマンドはどうも存在しないようです。
precompactが行っていることは「未使用のディスク領域を nullを書き込んでいる(0で埋め尽くしている)だけ」とのことなので、
cp /dev/zero hogehoge で DiskFullになるまで放置した後 rm hogehoge してみましたが、思うようには縮まりませんでした。
B.Windows Server 2008の Hyper-V には precompact.exe が付いていません。
ドキュメントには precompactしなくても仮想ディスクは最適化できるらしいように書いてあるのですが、
実際にやってみると思わしくなく、Virtual~ を入れたマシンから precompact.exe を持ってきて実行した方が良く最適化されるようです。