Hyper-V 2016の環境で外部ストレージを使用しない環境では、容量可変で構成したゲストOSが削除したデータがホスト側で認識されず、仮想ディスクが増加し続けるケースがあります。


そこで、Hyper-Vでは「最適化」という機能があり、Hyper-Vマネージャーから仮想ディスクの最適化が行えます。


ただし、注意点としては仮想サーバーが停止した状態でなければ選択ができません。そして、この最適化を行っても仮想ディスクが圧縮されないケースがあります。


そこで、PowerShellのコマンドで削除する方法があります。


①仮想サーバーを停止します。

②Hyper-V上で管理者権限でPowerShellを起動します。

③以下のコマンドを入力します。

> $targetvhd = "VHD(X)のフルパス"
> Mount-VHD $targetvhd -Readonly
> Optimize-VHD $targetvhd -Mode Quick
> Optimize-VHD $targetvhd -Mode Quick
> Dismount-VHD $targetvhd


「Optimize-VHD $targetvhd -Mode Quick」は2度やるといいそうです。


私の環境では、Hyper-Vマネージャーの最適化できれいに圧縮がされました。それでもダメな場合は、コマンドで対応ですね。