WSLで使用しているディスクを圧縮して空き容量を確保する

Software

WSLでDockerなどを使っていて、不要なイメージやボリュームを削除したのに、Windows上から見ても空き容量が増えていない場合、ディスクイメージを圧縮する必要があります。

そのためのノウハウはWeb上に散見しているのですが、説明されている場所にVHDXファイルが存在しなかったのでChatGPTに聞いたら無事見つけられて解決できたので備忘録として。

PowerShellにて

> Get-AppxPackage -Name "*Ubuntu*"
PackageFamilyName : CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc

これでPackageFamilyNameGetしたら下記フォルダにVHDXファイルがあるらしいが、私の環境にはLocalStateフォルダには何もなかった。

C:\Users\<user>\AppData\Local\Packages\<PackageFamilyName>\LocalState\

念のためWSLのバージョンも見てみるがしっかり「2」になっている

 wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2
  amzn            Stopped         2

インストールされている Linux ディストリビューションの .vhdx ファイルとディスク パスを見つける方法などを参考に以下のコマンドを打ってみてもエラー

> (Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq 'Ubuntu20.04' }).GetValue("BasePath") + "\ext4.vhdx"
null 値の式ではメソッドを呼び出せません。
発生場所 行:1 文字:1
+ (Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) []、RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

ChatGPTに聞いてみると、別の場所にある可能性を指摘され、このコマンドを教えてもらった。ext4.vhdxというファイル名で再帰的に捜査するコマンドっぽい。

Get-ChildItem -Path "C:\Users" -Recurse -Force -Filter ext4.vhdx -ErrorAction SilentlyContinue


    ディレクトリ: C:\Users\shipw\AppData\Local\Ubuntu-20.04


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2025/10/04     16:14   118602334208 ext4.vhdx

その結果、私の環境では「C:\Users\<user>\AppData\Local\」にext4.vhdxが入っているのが見つかった。

パスが分かればあとは最適化するだけ。

管理者権限のPowerShellで下記を実行。30分ぐらいかかったが、結果として無事容量が110GBから18GBまで劇的に減った。

optimize-vhd -Path "C:\Users\shipw\AppData\Local\Ubuntu-20.04\ext4.vhdx" -Mode Full 

この記事を書いた人

PHPが好物な個人開発プログラマ。フリーランスエンジニアとしてWebサービス作ったりしてます。15年の経験を生かしてMENTAでメンターもやってます。WordPressやPHPでお困りのことがあればご相談に乗りますのでDMください。

Follow on SNS
Software
SOHO MIND

Comments

タイトルとURLをコピーしました