stylesheet

2024-06-27

WSL2の未使用領域を開放してディスクスペースを節約

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