Как исследовать файл ext4.vhdx и посмотреть, что внутри, при использовании wsl2
в настоящее время я использую wsl2, и я замечаю, что для ext4.vhdx требуется значительный объем дискового пространства, как будто я знаю, что это система управления файлами Ubuntu, но я не очень понимаю, что внутри, поэтому я хочу заглянуть внутрь и удалить все ненужные файлы, как мне это сделать? как я знаю, wsl2 не освобождает использованное дисковое пространство обратно в хост-систему (я использую Windows 10), поэтому я хочу увидеть, какое дисковое хранилище занимает Ubuntu.
2 ответа
Я не могу воспроизвести симптом, который у вас есть при доступе к серверу SMB на Mac. Поскольку Samba работает в обратном направлении (Mac к Linux), используйте что-то другое для доступа к Mac.
На Mac: Системные настройки > Общий доступ > Включить удаленный вход
В Linux: Open Caja > Обзор сети > Вы должны видеть имя хоста Mac с прикрепленной меткой (удаленный вход). Нажмите на это, укажите имя пользователя и пароль, и у вас должен быть такой доступ:

Здравствуйте и добро пожаловать на форум!
Возможно, стоит рассмотреть возможность того, что ваша проблема не в DNS, может быть, что ваше сетевое соединение просто ненадежно по какой-либо причине, что некоторые пакеты теряются. О том, что ssh сеансы выживают, нам мало что говорит, потому что ssh сеанс использует TCP так, что может работать, даже если много пакетов потеряно. DNS, с другой стороны, использует UDP, поэтому если некоторые UDP-пакеты (входящие или исходящие) потеряны, это может привести к сбоям DNS.
Тестирование с использованием ping, как вы сделали, является хорошей идеей, может быть стоит сделать больше из этого, например, ping чаще, что раз в секунду, чтобы увидеть, есть ли иногда потери пакетов и если время этого коррелирует с проблемами DNS. Также стоит отметить, что ping включает в себя другой протокол (ICMP), может случиться, что есть какая-то проблема с UDP, но что ping работает в любом случае. Тогда, возможно, стоит запустить тесты с использованием UDP, что можно сделать, например, с помощью инструмента iperf3 .
Если вы сами управляете DNS-сервером, то вы можете следить за этим, чтобы увидеть, поступает или нет DNS-запрос, и увидеть, послан ли ответ с DNS-сервера.
Вы также можете попробовать отслеживать входящий и исходящий сетевой трафик локально, используя что-то вроде tcpdump или tshark , чтобы убедиться, что DNS-запрос отправлен, и проверить, можно ли увидеть ответ от DNS-сервера.
В любом случае это некоторые идеи, я надеюсь, что некоторые из них могут быть полезны. Удачи!
@ thomas-ward ответ правильный, но мне кажется, что в вашем вопросе есть дополнительный «вопрос», на который все еще нужно ответить.
Для начала, чтобы пересказать другой ответ, вы можете легко увидеть все содержимое ext4.vhdx , просто запустив WSL и посмотрев на файлы. Например:
будут найдены все файлы в файловой системе ext4 , подключенной как root ( / ), но не файлы на подключенных дисках NTFS/Windows ( -xdev исключает другие файловые системы).
Вы также можете видеть места хранения, используемые этими же файлами:
Если эта сумма отличается от размера файла ext4.vhdx , то да, как вы уже подозреваете, у вас, вероятно, есть неиспользованное пространство. Как вы упомянули в вашем вопросе, WSL будет увеличивать этот файл по мере необходимости, но не будет автоматически сокращать его при удалении файлов.
Чтобы вручную сжать файл,вы можете выполнить любой из шагов, упомянутых в данном ответе суперпользователя . Вот один из них, скопированный из ссылочного комментария Github:
Примечание: Альтернативным способом прямого доступа к vhdx было бы раскручивание новой виртуальной машины на базе Linux на Hyper-V и добавление этого виртуального диска (или его копии) в экземпляр. Невозможно проверить его непосредственно в Windows, так как Windows не понимает файловую систему ext4.
What is stored in the %USERPROFILE%\AppData\Local\Docker\wsl\distro\ext4.vhdx file for WSL2?
I am using Docker with WSL2 integration on Windows 10 Home.
While following this question to change the location of the docker images I came across this file:
and couldn’t find any explanation online regarding the function of this file.
![]()
1 Answer 1
When you run Docker Desktop WSL2 it’ll create 2 vm’s, one contains volumes, images, etc., and the other is related to the actual Docker Desktop itself, which is the one you’re asking about. It’s much smaller.
Откуда неадекватный размер ext4.vhdx?
Доброго дня. У меня есть пара проектов, которые я разрабатываю в винде под wsl2. Сами проекты весьма небольшие, но вот недавно заметил, что место на диске начинает кончаться. Выяснилось, что виноваты два файла:
1. . /Docker/wsl/data/ext4.vhdx (30 gb)
2. . /ubuntu/ext4.vhdx (13 gb)
Первый файл относится к Docker Desktop, второй к самому дистрибутиву. Мои проекты со всей обвязкой весят не больше гига. Откуда взялись такие неадекватные размеры и как с этим бороться?
- Вопрос задан более двух лет назад
- 5509 просмотров
- Вконтакте
Разобрался. Пишу тут для тех, кто столкнется с той же проблемой.
Решение для очистки в 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
- Вконтакте
Есть еще один способ уменьшить размер этого файла.
1. зайти в Docker Desktop
2. нажать на Troubleshoot (сверху справа жучок такой)
3. Там выбрать Clean / Purge data
4. и среди вариантов выбрать WSL 2
У меня после этого действия ext4.vhdx уменьшился с 34 гигов до 1,1 гб.
До этого я, правда, снесла все контейнеры и образы, какие там были, т.к. надеялась, что это даст результат, но память как была занята этим файлом, так и оставалась.
How to investigate ext4.vhdx file and see what's inside while using wsl2
currently I am using wsl2 and I notice a significant amount of disk space is required for ext4.vhdx, like I know it’s Ubuntu’s file management system, but I don’t deeply understand what’s inside, that’s why I want to look inside and delete all unnecessary files, how can I do it? like I know wsl2 doesn’t release used disk space back to the host system (I am using windows 10), so that’s why I want to see what disk storage does ubuntu holds.
![]()
2 Answers 2
@thomas-ward’s answer is correct, but it seems to me that there is an additional "question inside your question" that still needs answered.
To start with, to re-word the other answer, you can most easily see the entire contents of ext4.vhdx by simply running WSL and looking at the files. For instance:
That will find all files on the ext4 filesystem mounted as root ( / ), but not any files on your mounted NTFS/Windows drives (the -xdev excludes other filesystems).
You can also see the storage being used by those same files with:
If that amount differs from the size of the ext4.vhdx file, then yes, as you already suspect, you likely have unreclaimed space. As you mentioned in your question, WSL will grow that file as needed, but it will not automatically shrink it when files are removed.
To manually shrink the file, you can follow any of the steps I mention at this Super User answer. Here’s one of them, copied from a referenced Github comment:
Note: An alternative way of accessing the vhdx directly would be to spin up a new Linux-based VM on Hyper-V and add that virtual drive (or a copy of it) to the instance. It isn’t possible to examine it directly in Windows since Windows doesn’t understand the ext4 filesystem.