プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2024/02/20

WSL で使用しているディスクスペースを解放する

event_note2024/02/20 9:03

WSL 上の Ubuntu で docker を使っていたのですが、ストレージの空き容量が少なくなってきたので docker イメージを削除しても空き容量が変化しませんでした。

調べてみたところ、どうやら仮想ディスクの最適化まで行わないとディスクスペースは解放されないようです。

ただ、私の PC はストレージ容量が少なく、頻繁に Docker イメージを消して容量を確保しているため、都度コマンドを打つのは面倒ということで、スクリプト化しました。

コマンドとしては、diskpart を使う方法と、Optimize-VHD を使う方法があるみたいですが、Optimize-VHD は Hyper-V を有効化する必要があり、Windows Home では使えないということで、今回は diskpart を使うことにしました。

diskpart でスクリプトを実行する方法は以下に記載されています。

サンプル

まずは diskpart で実行するスクリプトを作成します(ここでは sample.txt としました)。

select vdisk file="%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk

file のパスは環境によって異なると思うので、以下を参考に調べてください。

そのうえで、以下のバッチファイルを作成します。

wsl --shutdown
diskpart /s sample.txt

あとはこのバッチファイルを実行するだけで OK です。