При удалении файлов на диске, используемом WSL, размер файла ext4.vhdx не уменьшается. Обычно он имеет тенденцию только расти в процессе работы.
Как же запустить процесс вспять, высвободить не используемые области?
Вам понадобиться запустить командный процессор cmd или power shell («Windows PowerShell»).
Для начала убедитесь, что всё WSL образы остановлены:
1 |
wsl.exe --list -v |
Будет выведен список вроде следующего:
1 2 3 4 5 |
NAME STATE VERSION docker-desktop-data Stopped 2 Ubuntu-22.04 Running 2 Ubuntu-18.04 Stopped 1 docker-desktop Stopped 2 |
Чтобы остановить запущенный дистрибутив, выполните команду —terminate или -t. В списке выше мы видим запущенный «Ubuntu-22.04». Остановим его:
1 |
wsl.exe -t Ubuntu-22.04 |
Нам понадобится обнаружить место расположения *.vhdx файла конкретного дистирубтива. Это можно сделать через PowerShell следующей командой (замените <distribution-name> именем вашего дистрибутива):
1 |
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<distribution-name>' }).GetValue("BasePath") + "\ext4.vhdx" |
Зная где расположен WSL файл дистрибутива, можно переходить к оптимизации. Запустите в консоли интерпретатор команд diskpart.
Выберите диск, указав расположение файла ext4.vhdx:
1 |
DISKPART> select vdisk file="C:\WSL\Ubuntu22\ext4.vhdx" |
Запускаем процедуру оптимизации:
1 |
DISKPART> compact vdisk |
Останется дождаться пока прогресс операции не достигнет 100%.
Так вы сможете вернуть не используемое дисковое пространство из WSL.