Windows/WSL2の容量を減らす方法
気になったアプリはつい入れちゃうワガママ生活を送っていたらno space left
なるディスクエラーが出てくるようになってきたのでダイエットしていこうという記事です。
Windowsの容量を削減
アプリをアンインストール
設定を開き、「システム > 記憶域 > インストールされているアプリ」を開きます。
容量を食っている不要なアプリを見つけ次第、アンインストールしていきます。
ディスク解析アプリを使う
アプリ以外にも削除できるものがありそうだったので、ディスク解析アプリを用いて容量を占有
しているものを見つけます。
今回はディスク解析アプリの中でも高速に解析してくれるWizTreeを使います。以下からインストールできます。
左上のスキャンを押すと解析を開始します。筆者の環境では約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
コマンドを使ってみます。
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を爆破する
クリーンインストールします。
WSL2を爆破する
アプリのアンインストールと同様にしてWSL2のイメージを削除することができます。再インストールすれば爆破完了です!WSL2はこうやってお手軽に爆破できるのも良い点の1つだと思います。
デュアルブートしてるOSを爆破する
パーティションの合併をします。ググってください。
Discussion