WSL2・Dockerで容量が逼迫したときのクリーンアップ方法【VHDX最適化】

スポンサーリンク
WSL+Docker WSL
WSL+Docker
スポンサーリンク

SSD256GB環境で発生した深刻な容量不足

今回のトラブルが深刻だった理由は、
SSD256GBという比較的容量の小さい環境でWSL2+Dockerを運用していた点です。

ディスクが逼迫した結果、

  • WSLが頻繁にクラッシュする
  • 開発用コンテナが起動しない
  • Windows Updateが容量不足で失敗する
  • セキュリティソフトの定義ファイル更新すら行えない

という、Windows全体の運用に支障が出る状態に陥っていました。


今回のWSLクラッシュの原因

原因は複合的でした。

  • メモリ16GB環境でのメモリ不足
  • WSL2・Dockerが使用するVHDXファイルの肥大化
  • EC-CUBEエンタープライズ版特有の環境設定による負荷増大の可能性

特にVHDXの肥大化は気づきにくく、
SSD256GB環境では致命的になりやすいと感じました。


VHDX肥大化を解消する全体の流れ

今回行ったクリーンアップは、次の3ステップです。

  1. Windows側の一時ファイル削除
  2. WSL/Docker内部の不要データ削除
  3. WSLを完全停止し、VHDXを物理的に最適化(圧縮)

手順① 一時ファイル(Temp)の削除

対象パス

PowerShell
C:\Users\[USER_NAME]\AppData\Local\Temp

DockerやWSL関連アプリを終了した状態で、
Windowsの「記憶域」設定から削除します。


手順② 仮想ディスク内部のクリーンアップ

Docker(docker_data.vhdx)

Bash
docker system prune -a --volumes

未使用のコンテナ・イメージ・ボリュームを削除します。


WSL2(ext4.vhdx)

Bash
sudo apt autoremove
sudo apt clean

不要なパッケージとキャッシュを削除し、
VHDX内部に空き領域を作ります。


手順③ WSL完全停止とVHDXの最適化

注意点
wsl --shutdown を実行する際、VS Code などで WSL 内のディレクトリを開いたままにしていると、WSL が自動的に再起動されてしまいます。

VHDX の最適化を確実に行うためには、

  • VS Code(Remote – WSL 接続)
  • WSL を参照しているターミナルやエクスプローラー

これらをすべて閉じた状態で wsl --shutdown を実行する必要があります。VScodeなどでWLS内のディレクトリを開いている場合は、wslが再起動されるので閉じる必要がある。

管理者権限のPowerShellで以下を実行します。

Bash
wsl --shutdown

停止確認:

Bash
wsl --list --running

VHDX最適化の結果(圧縮前・圧縮後)

実際にどの程度効果があったのか、
圧縮前後のVHDXファイルサイズを比較します。

圧縮前

  • Docker VHDXファイル:12.14GB
  • WSL VHDXファイル:117.19GB

圧縮後

  • Docker VHDXファイル:12.14GB(変化なし)
  • WSL VHDXファイル:28.74GB

WSLのVHDXは、
約88GBの削減となりました。

なお、WSL側は
必要なコンテナまで削除した状態でのサイズです。
環境によっては、ここまで削減できない場合もあります。


大容量ファイルの洗い出し

以下のディレクトリへ移動します。

PowerShell
cd C:\Users\[USER_NAME]\AppData\

5GB以上のファイルを一覧表示します。

PowerShell
Get-ChildItem -Recurse -File |
Where-Object { $_.Length -gt 5GB } |
Select-Object FullName, LastWriteTime,
@{N='Size(GB)';E={[math]::Round($_.Length / 1GB, 2)}} |
Sort-Object 'Size(GB)' -Descending |
Format-Table -AutoSize

定期メンテナンスの重要性

今回の対応で、
SSD256GB環境でも実用レベルまで復旧できました。

ただし、DockerとWSLを使い続ける限り、
VHDXは再び肥大化します。

  • 月1回のDockerクリーン
  • WSL完全停止+VHDX最適化

この2点は、
SSD容量が小さい環境ほど必須だと感じました。


まとめ

  • WSL2のVHDXは117GBまで肥大化していた
  • Optimize-VHDにより約88GB削減できた
  • SSD256GB環境では放置するとWindows全体に影響する
  • クラッシュ後ではなく、定期的な最適化が重要

WSLが重くなったと感じた時点で対応することが、
結果的に一番楽だと思います。

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