vhdxファイルを小さくする(WSLの仮想ディスクの縮小)
問題
wslのLinux環境の中のファイルを削除しても、vhdxのファイル容量は減らないようです。
肥大する一方のようですが、これを縮小することはできますか?
答え
大きくなると、最適化するまで小さくならないというのは、データベースのファイルなどでもよくある挙動。
vhdxにも最適化コマンドがある。
使用中だとマウントできないので、wslはシャットダウン。
wsl --shutdown
PowerShellにて以下を実行。
Mount-VHD "VHDXファイルのパス" -NoDriveLetter -Readonly
Optimize-VHD "VHDXファイルのパス" -Mode Quick(またはFull)
Dismount-VHD "VHDXファイルのパス"
wsl側で不要なファイルを削除した後でOptimize-VHDすると、vhdxファイルが小さくなる。
Quickで1分もかからない感じ。Fullでも何分もかかるほどではなかった。
メモ
Mount-VHD、Optimize-VHD、Dismount-VHD 等のコマンドがない場合は、Windowsの機能の有効化でHyper-Vを有効にする。
Optimize-VHD などのコマンドがない環境では、diskpartコマンドでも対応できるらしい。10分、20分かかっている人もいるようなので、処理時間に差が出るかもしれない。
diskpart → 別ウインドウ開く
select vdisk file="C:\WSL-Distros\…\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
コメント