WSL и Docker съели диск

WSL2 и Docker Desktop держат свои линукс-миры в файлах виртуальных дисков - ext4.vhdx и docker_data.vhdx. Эти файлы растут по мере надобности и сами не сжимаются никогда: удалите 30 ГБ внутри Linux - Windows всё равно видит тот же огромный файл. На машинах разработчиков это регулярно самые большие объекты на C:.

Сначала найти

Они прячутся глубоко в AppData\Local\Packages (по дистрибутивам) и AppData\Local\Docker. На карте диска их не пропустить: один гигантский файловый сектор там, где системные файлы должны быть мелкими. В CleanMyWin иконка образа диска помечает .vhdx - если видите такой на 80 ГБ, эта статья про вас.

Ужать правильно

Сначала освободите место внутри виртуальной машины (docker system prune -a внутри Docker, мусор внутри дистрибутива), потом сожмите файл со стороны Windows:

Чтобы не повторялось

Частые вопросы

Почему ext4.vhdx огромный, хотя я удалил файлы в WSL?

Виртуальный диск растёт по надобности, но сам место Windows не возвращает. Включите sparse-режим или сожмите diskpart-ом после wsl --shutdown.

Можно ли удалить docker_data.vhdx руками?

Только через purge/reset самого Docker Desktop - удаление файла вручную ломает его состояние. Локальные образы и контейнеры пропадут в любом случае.

Источники и официальная документация: Microsoft: Free up drive space in Windows, Microsoft: Storage Sense, Microsoft: WSL disk space, DaisyDisk, WizTree, WinDirStat, TreeSize

Посмотрите, куда ушли терабайты

Одно сканирование - минута. Первые 24 часа бесплатно.

Скачать для Windows

Напишите нам

Отвечаем на почту, обычно в течение рабочего дня.

Скриншоты