Как освободить место на диске WSL2
С полным переходом на удаленку в начале пандемии оборудовал постоянное рабочее место со столом регулируемой высоты и креслом Herman Miller. Основным компьютером на тот момент выступал 15’ Macbook Pro late 2018. Так как рабочее время теперь провожу за этим место и занимаюсь задачами связанными с машинным обучением и обработкой данных, решил собрать производительный компьютер на базе 12-ядерного процессора AMD и NVIDIA GeForce RTX 3080. В качестве операционной системы попробовал Ubuntu, Linux Mint, но в итоге разочаровался работой Zoom и других нужных приложений. В итоге установил Windows 10 и собрал окружение на базе Docker и WSL2. Это позволило решить проблемы с качеством десктопного софта и работать с привычным Unix.
Нареканий к такой конфигурации софта нет — даже работают перенесенные с macOS дот-файлы. Единственное, за чем периодически приходится следить, — место на диске. WSL2 создает виртуальный диск в формате .vhdx, который и хранит файлы гостевой операционной системы. Это включает в себя в том числе Docker-образы, скачиваемые для запуска контейнеров. С течением времени размер диска сильно растет и начинает отъедать полезное место на диске C:\.
WSL2 не поддерживает высвобождение места на виртуальном диске, поэтому делать это нужно вручную.
Для начала рекомендую удалить неиспользуемые Docker-образы:
$ docker system prune --all
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: postgres:13.4-alpine3.14
...
Total reclaimed space: 76.84GB
А также выполнить удаление неиспользуемых системных пакетов:
sudo apt-get clean
sudo apt-get autoclean
sudo apt-get autoremove
76.84GB высвободилось на виртуальном диске. На диске C:\ 76.84GB все еще недоступны для пользования.
Ситуацию исправляется следующим образом. Открываем PowerShell с правами администратора и выполняем:
> wsl.exe --list --verbose # получаем список виртуальных машин
> wsl.exe --terminate Ubuntu-20.04 # останавливаем нужную
> diskpart # запускаем дисковую утилиту
DISKPART> select vdisk file=C:\Users\devel\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx # указываем путь к файлу диска
DiskPart successfully selected the virtual disk file.
DISKPART> compact vdisk
100 percent completed
DiskPart successfully compacted the virtual disk file.
То же самое проделываем для диска Docker:
DISKPART> select vdisk file=C:\Users\devel\AppData\Local\Docker\wsl\data\ext4.vhdx
DiskPart successfully selected the virtual disk file.
DISKPART> compact vdisk
100 percent completed
DiskPart successfully compacted the virtual disk file.
Ура, на диске C:\ появились 76.84GB и даже больше.