はじめに
とあるゲームをインストールしようとした際にディスク容量が足りないとの警告が.確かに,ストレージに元々それ程の容量がある訳ではありませんでしたが,それでも130GBくらいはあったはずなのに……
ということで,容量を確認したところ,ほんの30GB程度しか残っていませんでした.
いつの間に使い果たしたのやら?
原因究明
とりあえず簡単に,可能性が高いと思われるアプリのサイズを確認してみました.(ストレージ全体を調査するのは時間がかかるので.)
設定 > アプリ > アプリと機能 > アプリの一覧
から確認したところ,何とUbuntu 22.04.3 LTS
のサイズが130GBも!
このサイズを見て,直ぐに1つ思い当たる原因が……
過去に一度やらかしており,Docker
関連のディスク容量の圧迫を疑いました.そこで,使用していないimageやcontainerなどを削除するコマンドを実行しました.
~$ yes | docker container prune
~$ yes | docker image prune
~$ yes | docker volume prune
~$ yes | docker network prune
~$ yes | docker builder prune
~$ 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
これで無事にディスクサイズが削減されたはず!
ということで,確認してみたところ……
減っていない!(画像は上のコピペです.驚きでスクショを忘れていました.)
【2024.4.1 追記】docker system df
で表示されていたディスク使用量は80GB近くあったので,上記のような作業をしました.その時のコピペはありませんが……
【本題】WSL2の容量開放
結論から述べると,WSL2のディストリビューション内の容量を削減してもWSL2自体が使用するディスク容量は変わらないようです.詳細な手順については参考文献を以下に掲示するので,そちらを参照されてください.
一応,私の環境でのコマンドも示しておきます.
(参考文献中でも言及されていますが)以下のコマンドを実行することでWSL2が起動しなくなる可能性があります.
各環境によって適切な操作が異なる可能性が高いため,コマンドの意味を理解した上で,(可能ならバックアップも取って)実行するようにしてください.
まずはWSL2のシャットダウンをおこないます.
~$ wsl --shutdown
また,後のために,自身の環境にインストールされているディストリビューションの情報を確認しておきます.
~$ 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
を起動します.
~$ diskpart
起動したdiskpart
で以下のコマンドを実行します.
以下のコマンドの内,環境に依存する(と思われる)箇所については<>
で示しています.
~$ select vdisk file="C:\Users\<user_name>\AppData\Local\Packages\<PackageFamilyName>\LocalState\ext4.vhdx"
~$ attach vdisk readonly
~$ compact vdisk
~$ detach vdisk
~$ exit
以上を実行してから確認すると……
無事に,ディスク容量が開放されました!(100GB近くも!)
最後に
ディストリビューション内のディスク容量を削減してもWSL2自体のディスク容量が削減されないという仕様は,寡聞にして知りませんでした.(なぜそんな仕様に?)
また1つ勉強になりました.