WSL2 — это мощный инструмент для разработчиков, но он может незаметно "съедать" гигабайты места на диске. Разберёмся, почему это происходит и как вернуть потерянное пространство без вреда для системы.
Шаг 1. Что такое WSL2 и почему он занимает так много места?
Windows Subsystem for Linux 2 (WSL2) — это технология Microsoft, позволяющая запускать полноценный Linux внутри Windows. В отличие от WSL1, здесь используется виртуальная машина с реальным ядром Linux.
Главная проблема: WSL2 хранит все данные в динамическом виртуальном диске (ext4.vhdx), который автоматически расширяется, но не сжимается обратно. Docker, кэш пакетов и временные файлы раздувают его до десятков гигабайт.
Шаг 2. Как найти docker виртуальный диск WSL2?
Перед очисткой нужно точно определить, где лежит файл
vhdx. Проще всего сделать это через PowerShell:Powershell
Get-ChildItem -Path $env:LOCALAPPDATA -Filter *.vhdx -Recurse -File -ErrorAction SilentlyContinue | Select-Object FullName
Результат покажет путь вроде:
C:\Users\ВашеИмя\AppData\Local\Docker\wsl\data\ext4.vhdx(Если используете Docker Desktop, путь может быть другим — например, в папке
Docker\wsl.)Первый шаг к решению проблемы — найти виртуальный диск. Если вы еще не знаете, где именно на вашем диске расположены самые объемные файлы, рекомендую начать с полного анализа дискового пространства. Бесплатная программа WinDirStat наглядно покажет все содержимое вашего жесткого диска и поможет быстро обнаружить самые крупные объекты, включая тот самый файл ext4.vhdx. Подробная инструкция по работе с этим инструментом здесь: Как найти большие файлы в Windows и проанализировать занятое место диска.
Шаг 3. Как остановить WSL2 перед очисткой?
Важно! Перед работой с диском WSL2 нужно его отключить, иначе система не даст сжать файл.
Вариант 1: Через PowerShell (администратор)
Powershell
# Проверить работающие дистрибутивы wsl --list --running wsl --terminate Ubuntu wsl --terminate docker-desktop # Остановить все wsl --shutdown # Дополнительно: завершить Docker (если используется) taskkill /IM "docker.exe" /F
Вариант 2: Вручную
- •Закройте Docker Desktop.
- •Проверьте Диспетчер задач → нет ли процессов
wsl.exeилиdocker.
Шаг 4. Очистка мусора внутри Linux
Перед сжатием диска удалите ненужные файлы из самого WSL2:
- 1.Откройте терминал Linux (например, Ubuntu):
Bash
# Очистка кэша пакетов sudo apt-get clean # Удаление ненужных зависимостей sudo apt-get autoremove # Дополнительно: ручная очистка временных файлов sudo rm -rf /tmp/* - 2.Для Docker-пользователей:
Bash
# Удаление неиспользуемых образов и контейнеров docker system prune -a --volumes
Шаг 5. Сжатие виртуального диска (VHDX)
Теперь главное — уменьшить размер файла
.vhdx. Делается это через DiskPart:Откройте PowerShell от администратора и выполните:
Powershell
# Перейти в DiskPart diskpart # Выбрать виртуальный диск select vdisk file="C:\путь\к\вашему\ext4.vhdx" attach vdisk readonly # Сжать диск compact vdisk # Отключить диск detach vdisk

Закройте DiskPart (exit). Посмотрите свойства файла.vhdx— он должен уменьшиться. Результат: В моём случае освободилось 76 ГБ — почти как новый SSD! Повторяйте процедуру раз в 2-3 месяца, чтобы WSL2 не захламлял диск.
P.S. Если остались вопросы — пишите в комментарии. Помогу разобраться! 🚀
