Windows/WSL2の容量を減らす方法

2022/07/11に公開

気になったアプリはつい入れちゃうワガママ生活を送っていたらno space leftなるディスクエラーが出てくるようになってきたのでダイエットしていこうという記事です。

Windowsの容量を削減

アプリをアンインストール

設定を開き、「システム > 記憶域 > インストールされているアプリ」を開きます。

容量を食っている不要なアプリを見つけ次第、アンインストールしていきます。

ディスク解析アプリを使う

アプリ以外にも削除できるものがありそうだったので、ディスク解析アプリを用いて容量を占有
しているものを見つけます。

今回はディスク解析アプリの中でも高速に解析してくれるWizTreeを使います。以下からインストールできます。
https://diskanalyzer.com

左上のスキャンを押すと解析を開始します。筆者の環境では約5秒でCドライブを解析してくれました。

よく見てみるとWSL2の仮想ディスクにかなり容量を取られていることが分かります。

WSL2内の容量を削減

Dockerの容量の削減

WSL2で容量を食い荒らす筆頭としてDockerがあります。まずはこいつをダイエットさせていきます。

要らないイメージの削除

不要なイメージを以下のコマンドから探します。

$ docker image ls
REPOSITORY                   TAG       IMAGE ID       CREATED        SIZE
...
<none>                       <none>    e0248845f193   2 months ago   620MB
<none>                       <none>    c084cf0e24c4   2 months ago   5.73GB
<none>                       <none>    c1477008299b   2 months ago   5.73GB
<none>                       <none>    1487ba4d71de   2 months ago   620MB
...

次のコマンドで消したいイメージのIMAGE IDを指定して削除します。

docker image rm c084cf0e24c4 c1477008299b

再度確認してみると...

$ docker image ls
REPOSITORY                   TAG       IMAGE ID       CREATED        SIZE
...
<none>                       <none>    e0248845f193   2 months ago   620MB
<none>                       <none>    1487ba4d71de   2 months ago   620MB
...

ちゃんと消えてました。

Docker cacheのprune

まず以下のコマンドでBuild Cacheの確認をします。

$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          83        16        15.39GB   12.6GB (81%)
Containers      20        5         107MB     107MB (99%)
Local Volumes   35        2         5.148GB   4.983GB (96%)
Build Cache     472       0         2.611GB   2.611GB

次のコマンドを叩いて、Build Cahcheを削除します。

$ docker builder prune

再度確認してみると...

$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          83        16        15.39GB   12.6GB (81%)
Containers      20        5         107MB     107MB (99%)
Local Volumes   35        2         5.148GB   4.983GB (96%)
Build Cache     358       0         0B        0B

ちゃんとBuild Cacheを消せました。

ディスク解析ツールを使う

Linuxには標準でディスクの使用量に関する情報を返すduコマンドがありますが、今回はより直感的に表示してくれるdustコマンドを使ってみます。
https://github.com/bootandy/dust

Rustのcrateとしてパッケージ配信されているのでRustが入っていれば以下のコマンドでインストールできます。

$ cargo install du-dust

dustと叩くだけでカレントディレクトリ下で容量を食ってるディレクトリをソートして表示してくれます。

これを使って不要でサイズの大きいものから削除していきます。

WSL2のディスクサイズを最適化する

WSL2内の容量を減らせても、ホストから見たら解放されていないのでディスクイメージに対して最適化します。PowerShellを起動して以下のコマンドを叩きます。

> wsl --shutdown
> diskpart
# Diskpartのwindowに移動
> select vdisk file="C:\Users\ユーザー名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx"
> attach vdisk readonly
> compact vdisk
> detach vdisk
> exit

これでWindowsのストレージの残り容量が増えていたら成功です!

WSLをCドライブから移動する

それでもやはり WSL は大きいもの、私のは 210 GB くらいありました。そうなるとCドライブではなく他のドライブ上で管理した方がやりやすいときがあります。

やることとしては WSL のファイルシステムを tarball で固めてどこかに保存してから別の場所にファイルシステムを構築します。

$ wsl -l -v
$ wsl --export <DistributionName> <FileName>
$ wsl --unregister <DistributionName>
$ wsl --import <DistributionName> <InstallLocation> <FileName>
# デフォルトしか Docker が起動しないらしいので
$ wsl --setdefault <DistributionName>

他の選択肢: 爆破する

不要なアプリがたくさん入っていたり、謎な場所に何かをした残骸が残ってあったりすると、管理するのが大変になってきます。こんなとき、ちまちま消したり整理したりするより、1度クリーンインストールしてしまえば、1石で2羽を狩ることができるというものです。
必要なファイルなどはバックアップを取り、入れ直したいアプリはメモっておくことをおすすめします。

Windowsを爆破する

クリーンインストールします。
https://answers.microsoft.com/en-us/windows/forum/all/how-to-perform-a-clean-install-or-reinstall-of/bf72eda1-18f6-4839-9127-2b5389d9aa48

WSL2を爆破する

アプリのアンインストールと同様にしてWSL2のイメージを削除することができます。再インストールすれば爆破完了です!WSL2はこうやってお手軽に爆破できるのも良い点の1つだと思います。

デュアルブートしてるOSを爆破する

パーティションの合併をします。ググってください。

参考文献

Discussion

ログインするとコメントできます