概要
WSL2(Windows Subsystem for Linux 2)を使って開発をしていると、Windows上でLinuxのファイルシステムを管理するvhdxファイルが肥大化していきます。放っておくと40GBとか超えちゃう上に、内部のファイルを掃除しても自動で縮小してくれないので、定期的にダイエット操作をしましょう。
Dockerリソースの削除を伴うので、場合により環境建て直しになっても困らないような、暇なときにやりましょう。
あらかじめDocker絡みのダイエットを行う
【Docker】いろいろpruneしてストレージを掃除するにしたがって、Dockerリソースの削除を実行しておきます。
WSLを停止する
管理者として実行したPowershellでwsl --shutdown
を実行します。
vhdxファイルの在処を確認する
ユーザー毎のフォルダ配下、Appdata内にあるようです。手元のPCではC:\Users\<username>\AppData\Local\Docker\wsl\data
でした。Appdataフォルダはエクスプローラで隠しファイルを表示するよう設定していないと見えないので、適宜設定してください。
diskpartで圧縮
Powershellでdiskpart
を実行して、diskpartのプロンプトを開きます。
diskpartで、以下の通り実行します。vdisk云々は、Windowsの仮想ディスク(vhd/vhdx)をローカルシステムにマウントして操作できるコマンドです。
select vdisk file="C:\Users\<username>\AppData\Local\Docker\wsl\dataext4.vhdx" # 実際にファイルがあるところに読み換えてね
attach vdisk readonly
compact vdisk # 圧縮が走る
detach vdisk
exit
ここまで実行したら、vhdxファイルが圧縮されているはず。今回、手順を記録しながら実施した結果、vhdxファイルのサイズは43GB→11GBになりました。