Hyper-V仮想マシンファイル(vhdx)を小さくする方法
Hyper-Vで仮想マシン上で不要になったアプリケーションやファイルを消しても、仮想マシンファイルのサイズがどんどん大きくなっていくよー(泣)
どうすればいいのーー??
Optimize-Vhd コマンドを使ってファイルサイズを最適化できるよ!
今回の実験環境
今回は私が使っているWindows10の中にサブで構築している仮想Windows10環境が肥大化しすぎてしまったため、仮想マシンファイル(vhdxファイル)の最適化をしてみます。
仮想マシン内でディスク使用量を確認
仮想マシンのWindows10を起動すると、このような状況です。ディスク全体は38.4GBで、そのうち36.4GBが使用中。空きは2.02GBでした。
ホスト側から仮想マシンファイルを確認
それより、ホスト側から仮想マシン全体のファイルサイズを確認すると、65.7GBも使ってしまっています。仮想マシン内で確認した使用量とだいぶ違います。
チェックポイントを2つ作っているせいもあるかも知れませんが、実使用量と仮想マシンファイル(vhdx)の差が激しいので、なんとかしたいところです。
この場合、仮想マシンファイル(vhdx)の最適化を行うことでホスト側のディスク使用量を削減できる可能性があります。
さっそくやってみましょう。
vhdx/avhdxファイルを最適化する
仮想マシン側で不要なファイルを削除する
仮想マシンを起動します。今回の環境はホスト側も仮想マシン側もWindows10なのでちょっとややこしいですが、まずは仮想マシン側の作業から行います。
ディスクのクリーンアップ
掃除するポイントを一度にすべて確認してクリーンするには、「ディスクのクリーンアップ」が簡単です。
エクスプローラーのプロパティから起動できます。
ディスククリーンアップの画面が表示されたら、そのまま「システムファイルのクリーンアップ」ボタンを押します。
ここで削除する対象のファイルを選択します。
特にWindowsの場合、WindowsUpdateをする度にゴミが溜まります。サイズも大きいので削除してしまいましょう。
ここで削除しても既に更新が適用された状態が適用前に戻るわけではないので削除して問題ありません。空き容量を増やしたいなら①は削除してしまいましょう。
削除対象の不要ファイルを選択し終えたら、②のOKボタンを押します。あとは、自動でお掃除が始まりますので、終わるのを待ちましょう。
あれ?
仮想マシン上ではクリーンアップしたけど、ホスト側から仮想マシンファイル(vhdxファイル)を見るとファイルサイズが減ってないよ…なんで??
仮想マシンの場合は、仮想マシン上で不要なファイルを削除しても、仮想マシンイメージファイルのサイズは縮小しないんだ。
どうすればいいの??
仮想マシン上でできるのはここまで。
この後はホスト側で仮想マシンファイル(vhdxファイル)の最適化処理を行うよ
仮想マシンをシャットダウン
掃除が終わったら、仮想マシンファイル(vhdx)を外から操作できるようにするため、仮想マシンをシャットダウンします。
ホストマシン側で仮想マシンファイルを最適化する
ここからは、ホスト側のWindows10での作業になります。
PowerShellを管理者モードで起動する
①に「powershell」と入力すると、候補が表示されますので、②のWindows PowerShell⇒③管理者として実行するを選択します。
PowerShellウインドウが起動したら、仮想マシンファイル(vhdx)のファイルサイズを確認してみます。
デフォルト状態であれば、ここにファイルは格納されています。C:\Users\Public\Documents\Hyper-V\Virtual hard disks
dirコマンドでファイルの存在とサイズを確認してみます。
PS> dir "C:\Users\Public\Documents\Hyper-V\Virtual hard disks"
今回はWindows10の仮想マシンファイルだけに表示したかったので、Windows10*のワイルドカード指定しています。
今回の環境は、チェックポイントを2つ作っているため、ファイルが全部で3つありますが、チェックポイントを作っていない場合は本体のvhdxファイルだけとなります。
vhdxファイル:仮想マシンのイメージファイル本体
avhdxファイル:チェックポイントからの差分
Optimize-Vhd コマンドでvhdxファイルの不要部分をカット
構文:optimize-vhd -Path <vhdxファイル> -Mode Full
vhdxファイルの部分に最適化したいvhdxファイルを指定します。
今回の場合は、ファイルが3つあって面倒なので、ワイルドカードで指定します。ちなみにavhdxファイルも最適化可能です。
PS> optimize-vhd -Path "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\Windows10*" -Mode Full
実行すると、このように仮想ディスクの圧縮の進行状況が表示されますので、終わるのを待ちましょう。
無事に終わるとPowerShellプロンプトに戻ります。さて、最適化できたか再度dirコマンドで確認してみます。
おおお!!! ファイルサイズが小さくなってます!! 最適化成功です。
仮想マシンファイル(vhdx)最適化の結果
ビフォー(最適化前)
アフター(最適化後)
結果、ホスト上でも65.8GBが54.0GBまで減りました(-11.8GB)。
コメント