Задать вопрос
@sl0

Откуда неадекватный размер ext4.vhdx?

Доброго дня. У меня есть пара проектов, которые я разрабатываю в винде под wsl2. Сами проекты весьма небольшие, но вот недавно заметил, что место на диске начинает кончаться. Выяснилось, что виноваты два файла:
1. .../Docker/wsl/data/ext4.vhdx (30 gb)
2. .../ubuntu/ext4.vhdx (13 gb)

Первый файл относится к Docker Desktop, второй к самому дистрибутиву. Мои проекты со всей обвязкой весят не больше гига. Откуда взялись такие неадекватные размеры и как с этим бороться?
  • Вопрос задан
  • 15415 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 2
@sasa2111
Начинающий Data scientist
Есть еще один способ уменьшить размер этого файла.
1. зайти в Docker Desktop
2. нажать на Troubleshoot (сверху справа жучок такой)
3. Там выбрать Clean / Purge data
4. и среди вариантов выбрать WSL 2

У меня после этого действия ext4.vhdx уменьшился с 34 гигов до 1,1 гб.

До этого я, правда, снесла все контейнеры и образы, какие там были, т.к. надеялась, что это даст результат, но память как была занята этим файлом, так и оставалась.
Ответ написан
@sl0 Автор вопроса
Разобрался. Пишу тут для тех, кто столкнется с той же проблемой.

Решение для очистки в Docker Desktop.
1. Устанавливаем libguestfs-tools в wsl.
2. sudo mkdir -p /mnt/wsl
3. sudo guestmount -o allow_other --add mnt/c/Users/username/путь_к_/ext4.vhdx -i /mnt/wsl
4. Чистим лишнее в /mnt/wsl
5. После этого из винды уже запустить
wsl --shutdown
optimize-vhd -Path путь_к_\ext4.vhdx -Mode full
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@pafnootiy
В PowerShell:

wsl --shutdown

Optimize-VHD -Path 'C:\Users\your_user\AppData\Local\Docker\wsl\data\ext4.vhdx' -Mode Full

Этот способ - работает.
Ответ написан
@dimirsteel
Третий вариант заняло по времени полчаса из 30 гигов в 2,5:
1. Производим экспорт дистрибутива (у меня был установлен дистрибутив из магазина Microsoft):
wsl --export Ubuntu-22.04 C:\temp\ubuntu.tar
[ --export [Параметры]
Экспорт дистрибутива в TAR-файл.
Имя файла может быть - for stdout.
Параметры:
--vhd
Указывает, что дистрибутив следует экспортировать как VHDX-файл.
]
2. Удаляем дистрибутивы установленные в системе, через "панель управления" установка/удаление программ.
3. Импортируем дистрибутив:
wsl --import Ubuntu C:\wsl\ubuntu\ C:\temp\ubuntu.tar --version 2
[ --import [Параметры]
Импортирует указанный TAR-файл в качестве нового дистрибутива.
Имя файла может быть - for stdin.
Параметры:
--version
Указывает версию, используемую для нового дистрибутива.
--vhd
Указывает, что предоставленный файл является VHDX-файлом, а не TAR-файлом.
Эта операция создает копию VHDX-файла в указанном расположении установки.
]
4. Enjoy! To Infinity and Beyond!))
З.Ы. есть только минус, возможно, для меня это не проблема. Возможно заново пользователей прописывать в дистрибутиве потребуется. Т.к. я не проверял, работаю из под sudo в единственном лице.))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы