WSL2に使用されたディスクの容量開放

# はじめに
とあるゲームをインストールしようとした際にディスク容量が足りないとの警告が．確かに，ストレージに元々それ程の容量がある訳ではありませんでしたが，それでも130GBくらいはあったはずなのに……
ということで，容量を確認したところ，ほんの30GB程度しか残っていませんでした．
いつの間に使い果たしたのやら？

# 原因究明
とりあえず簡単に，可能性が高いと思われるアプリのサイズを確認してみました．（ストレージ全体を調査するのは時間がかかるので．）
`設定 > アプリ > アプリと機能 > アプリの一覧`から確認したところ，何と`Ubuntu 22.04.3 LTS`のサイズが130GBも！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693436/f4be95ed-82e2-625f-b465-31324affe00f.png)

このサイズを見て，直ぐに1つ思い当たる原因が……
過去に一度やらかしており，`Docker`関連のディスク容量の圧迫を疑いました．そこで，使用していないimageやcontainerなどを削除するコマンドを実行しました．

```bash: docker_prunes
~$ yes | docker container prune
~$ yes | docker image prune 
~$ yes | docker volume prune 
~$ yes | docker network prune 
~$ yes | docker builder prune 
```

https://docs.docker.jp/config/pruning.html

https://docs.docker.com/reference/cli/docker/builder/prune/

```bash: docker_system_df
~$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          0         0         0B        0B
Containers      0         0         0B        0B
Local Volumes   17        0         2.56GB    2.56GB (100%)
Build Cache     0         0         0B        0B
```

これで無事にディスクサイズが削減されたはず！
ということで，確認してみたところ……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693436/f4be95ed-82e2-625f-b465-31324affe00f.png)

減っていない！（画像は上のコピペです．驚きでスクショを忘れていました．）

【2024.4.1 追記】`docker system df`で表示されていたディスク使用量は80GB近くあったので，上記のような作業をしました．その時のコピペはありませんが……

# 【本題】WSL2の容量開放
結論から述べると，WSL2のディストリビューション内の容量を削減してもWSL2自体が使用するディスク容量は変わらないようです．詳細な手順については参考文献を以下に掲示するので，そちらを参照されてください．

https://trap.jp/post/1719/

https://zenn.dev/anko/articles/976d904e53d87e

https://qiita.com/TsuyoshiUshio@github/items/7a745582bbcd35062430?ref=trap.jp

https://qiita.com/siruku6/items/c91a40d460095013540d

一応，私の環境でのコマンドも示しておきます．

:::note alert
（参考文献中でも言及されていますが）以下のコマンドを実行することでWSL2が起動しなくなる可能性があります．
各環境によって適切な操作が異なる可能性が高いため，コマンドの意味を理解した上で，（可能ならバックアップも取って）実行するようにしてください．
:::

まずはWSL2のシャットダウンをおこないます．

```bash: wsl_shutdown
~$ wsl --shutdown
```

また，後のために，自身の環境にインストールされているディストリビューションの情報を確認しておきます．

```bash: check_distribution
~$ Get-AppxPackage -Name "*Ubuntu*"
Name              : CanonicalGroupLimited.Ubuntu
Publisher         : CN=23596F84-C3EA-4CD8-A7DF-550DCE37BCD0
Architecture      : X64
ResourceId        :
Version           : 2204.3.49.0
PackageFullName   : CanonicalGroupLimited.Ubuntu_2204.3.49.0_x64__79rhkp1fndgsc
InstallLocation   : C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu_2204.3.49.0_x64__79rhkp1fndgsc
IsFramework       : False
PackageFamilyName : CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc
PublisherId       : 79rhkp1fndgsc
IsResourcePackage : False
IsBundle          : False
IsDevelopmentMode : False
NonRemovable      : False
Dependencies      : {CanonicalGroupLimited.Ubuntu_2204.3.49.0_neutral_split.scale-100_79rhkp1fndgsc}
IsPartiallyStaged : False
SignatureKind     : Store
Status            : Ok
```

次に，`diskpart`を起動します．

```bash: run_diskpart
~$ diskpart
```

起動した`diskpart`で以下のコマンドを実行します．

:::note
以下のコマンドの内，環境に依存する（と思われる）箇所については`<>`で示しています．
:::

```bash: on_diskpart
~$ select vdisk file="C:\Users\<user_name>\AppData\Local\Packages\<PackageFamilyName>\LocalState\ext4.vhdx"
~$ attach vdisk readonly
~$ compact vdisk
~$ detach vdisk
~$ exit 
```

以上を実行してから確認すると……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693436/684e30e5-529a-9eb8-631b-771f3471c980.png)

無事に，ディスク容量が開放されました！（100GB近くも！）

# 最後に
ディストリビューション内のディスク容量を削減してもWSL2自体のディスク容量が削減されないという仕様は，寡聞にして知りませんでした．（なぜそんな仕様に？）
また1つ勉強になりました．