WSL2の未使用領域を開放する手順をメモ。事前にいらないファイルを削除しておくと尚良し。
TL;DR
# wsl2-optimize-vhd.ps1
wsl --shutdown
$files = gci -Path $HOME/AppData/Local/Packages/*.vhdx -Recurse
foreach ($file in $files) {
optimize-vhd -Path $file.FullName -Mode full
}
準備
vhdxファイルのパスを調べる。
$HOME/AppData/Local/Packages
以下、ディストリビューションごとのディレクトリ、LocalState
内にファイルが存在。
PS> gci -path $HOME/AppData/Local/Packages/*.vhdx -Recurse
作業の前に、WSLを停止。
PS> wsl --shutdown
optimize-vhd コマンドで縮小
optimize-vhd
コマンドを利用できる場合は、以下のコマンドでOK。
PS> optimize-vhd -Path <path-to-vhdx> -Mode full
diskpart プログラムで縮小
diskpart
プログラムを使う場合は以下。
PS> diskpart
DISKPART> select vdisk file=<path-to-vhdx>
DISKPART> attach vdisk readonly
DISKPART> compact vdisk
DISKPART> detach vdisk
DISKPART> exit
sparseモードを有効にしておく
『WSLの仮想ハードディスク(VHD)は、使用するにつれてサイズが大きくなりますが、この機能(sparseVhd)を有効にすると、自動的にサイズも小さくなります!』とのこと。
PS> wsl --manage <distro> --set-sparse true