SSD256GB環境で発生した深刻な容量不足
今回のトラブルが深刻だった理由は、
SSD256GBという比較的容量の小さい環境でWSL2+Dockerを運用していた点です。
ディスクが逼迫した結果、
- WSLが頻繁にクラッシュする
- 開発用コンテナが起動しない
- Windows Updateが容量不足で失敗する
- セキュリティソフトの定義ファイル更新すら行えない
という、Windows全体の運用に支障が出る状態に陥っていました。
今回のWSLクラッシュの原因
原因は複合的でした。
- メモリ16GB環境でのメモリ不足
- WSL2・Dockerが使用するVHDXファイルの肥大化
- EC-CUBEエンタープライズ版特有の環境設定による負荷増大の可能性
特にVHDXの肥大化は気づきにくく、
SSD256GB環境では致命的になりやすいと感じました。
VHDX肥大化を解消する全体の流れ
今回行ったクリーンアップは、次の3ステップです。
- Windows側の一時ファイル削除
- WSL/Docker内部の不要データ削除
- WSLを完全停止し、VHDXを物理的に最適化(圧縮)
手順① 一時ファイル(Temp)の削除
対象パス
C:\Users\[USER_NAME]\AppData\Local\TempDockerやWSL関連アプリを終了した状態で、
Windowsの「記憶域」設定から削除します。
手順② 仮想ディスク内部のクリーンアップ
Dockerを起動
sudo systemctl start dockerゾンビファイルの削除
空き領域を「e」で埋め尽くす一時ファイルを作成:不要データが大きいと数十分かかります。メモリも圧迫されるので実行タイミングは業務終了前などご検討ください。
sudo dd if=/dev/zero of=/var/tmp/zero.fill bs=1M status=progress作成した一時ファイルを削除
sudo rm /var/tmp/zero.fillDocker(docker_data.vhdx)
docker system prune -a --volumes未使用のコンテナ・イメージ・ボリュームを削除します。
WSL2(ext4.vhdx)
sudo apt autoremove -y && sudo apt Clean不要なパッケージとキャッシュを削除し、
VHDX内部に空き領域を作ります。
Docker停止
sudo systemctl stop docker手順③ DockerとWSL完全停止とVHDXの最適化
管理者権限のPowerShellで以下を実行します。
# Docker Desktopの主要プロセスを強制終了
Stop-Process -Name "Docker Desktop" -Force -ErrorAction SilentlyContinue
Stop-Process -Name "com.docker.backend" -Force -ErrorAction SilentlyContinue
Stop-Process -Name "com.docker.service" -Force -ErrorAction SilentlyContinuewsl --shutdown停止確認:
wsl --list --running注意点wsl --shutdown を実行する際、VS Code などで WSL 内のディレクトリを開いたままにしていると、WSL が自動的に再起動されてしまいます。
VHDX の最適化を確実に行うためには、
- VS Code(Remote – WSL 接続)
- WSL を参照しているターミナルやエクスプローラー
これらをすべて閉じた状態で wsl --shutdown を実行する必要があります。VScodeなどでWLS内のディレクトリを開いている場合は、wslが再起動されるので閉じる必要がある。
DockerのVHDXを圧縮する場合
Optimize-VHD -Path "C:\Users\[USER_NAME]\AppData\Local\Docker\wsl\disk\docker_data.vhdx" -Mode FullWSL2のVHDXを圧縮する場合
Optimize-VHD -Path "C:\Users\[USER_NAME]\AppData\Local\Packages\<ディストリ名>\LocalState\ext4.vhdx" -Mode Full大容量ファイルの洗い出し
以下のディレクトリへ移動します。
cd C:\Users\[USER_NAME]\AppData\5GB以上のファイルを一覧表示します。
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が重くなったと感じた時点で対応することが、
結果的に一番楽だと思います。

