df показывает все занятое пространство, но du не складывается

18

У меня проблема с Ubuntu 12.04 LTS. Это второй раз, когда я столкнулся с этой проблемой за последние 3 недели. Первый раз описан в закрытом вопросе о StackOverflow . Версия TL; DR мне удалось использовать все inodes в системе 450G ext4 для компиляции и создания Android-пакета менее чем в 20 раз.

Я думал, что решаю проблему, переформатируя диск как XFS, чтобы хранилище inode могло расти.

Сегодня утром после того, как я построил ночь, я упал до менее 1 ГБ свободного места. На этой машине нет ничего, кроме того, что нужно для создания Android. Я сделал 5 общих сборок на источниках платформы. Сборка создает кучу файлов, после чего я удаляю их вскоре после make clean . Я не менее 1 ГБ, но инструменты сообщают об этом. Я удалил кучу временных файлов и имел около 40 ГБ «освобожден». Через пару часов, просто на холостом ходу, я вернулся менее чем на 1 ГБ.

Запуск Ubuntu с флеш-накопителя возвращает следующее для раздела ...

$ df
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda5      468521456 468255460    265996 100% /media/f71c77eb-b4cc-

$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda5      1691760 624214 1067546   37% /media/f71c77eb-b4cc-

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda5       447G  447G  260M 100% /media/f71c77eb-b4cc-

Вот доказательство того, что что-то не так. Когда я запускаю du (с и без --apparent-size) или визуальный анализатор использования дисков, я показываю, что я действительно использую только 35 ГБ или около того. 98.7% используемого пространства находится в /home/eric , но du не соответствует этому. Расхождение между /home/eric и /home/eric/android

Я прочитал соответствующие вопросы здесь и на SO, и они обычно предлагают удалить файлы, открытые открытыми процессами. Я перезагрузился во флэш-накопитель, чтобы запустить этот тест, поэтому он не должен быть открытым. FWIW, / tmp пуст.

Есть ли инструмент, который я могу установить на флеш-накопитель, чтобы восстановить «потерянное» пространство? Я могу попытаться освободить память в системе и запустить ее там, но я предполагаю, что лучше сделать это с флеш-накопителя.

Должен ли я настраивать эту систему по-другому? Я бы предпочел не делать еще одну очистку и установку, но мне нужна устойчивая система сборки Android.

FOLLOWUP . На прошлой неделе мне пришлось укусить установку и повторно установить 12.04, чтобы выполнить работу. По мере того, как на этой неделе я снова запускаю Android-сборки, я буду внимательно следить за использованием диска и давать информацию здесь, когда узнаю больше.

Спасибо

    
задан Eric Cloninger 15.02.2013 в 22:03
источник

7 ответов

12

В Oracle Linux это происходит, когда у вас есть (много / больших) файлов, которые удаляются, но все же открываются запущенным процессом. После этого останавливается процесс или перезагрузка машины.

    
ответ дан Michel Samia 24.09.2014 в 15:34
2

Недавно я столкнулся с этим, и в моем случае нужно было выполнить fsck .

Я сделал touch /forcefsck && reboot , и через несколько минут сервер вернулся в сеть, и вдруг мой недостающий 6 ГБ освободился.

    
ответ дан mpontillo 13.09.2016 в 21:02
1

Прежде чем перейти к далеко идущему, переведите систему в однопользовательский режим и сделайте FULL fsck (я действительно имею в виду полный fsck -f /dev/sda5 ) файловой системы и посмотрю, что он показывает. Вы можете найти пространство как часть проблемных областей на вашем диске или несоответствие между выделенным и присутствующим на диске.

    
ответ дан mdpc 19.02.2013 в 21:46
1

Мы можем сделать тест, du говорит, что у вас 10 ГБ свободного места, а df говорит 300 МБ, можете ли вы записать файл (или несколько файлов) размером, скажем, 2 ГБ? Если это возможно, это означает, что df просто неверно (и на самом деле нет проблемы «потерянного пространства»). Если нет, то du ошибочно (что будет интересно).

    
ответ дан user_1729 22.02.2013 в 23:39
1

Я не нашел причину этой проблемы, но она уникальна для ubuntu 12.04.

Просто настроив новый сервер, я начал с Ubuntu 12.04 и столкнулся с этим; du показал около 111 GiB, а df - около 170 ГБ.

Загрузка с использованием systemrescuecd 3.3.0 и повторная проверка показали разницу менее 1 ГБ.

Оставив раздел и файловую систему (это ext4) без изменений, я переместил каталоги ubuntu в сторону и установил Debian 7.0. Опять же, разница между du и df была равна 1 GiB.

С ubuntu 10.04, на том же разделе и ext4 fs:

От df -m / ,

Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/sda2              2814679    407164   2264538  16% /

и из du -mx ,

tail -1 /root/diskuse 
406920  .

, который достаточно близко.

    
ответ дан user163269 31.05.2013 в 06:19
0

Сообщаемое вами изображение сообщает вам, где используется пространство: /home/eric . Кажется, у вас очень большой файл, в котором все пространство пробегает или, возможно, большое количество небольших файлов. Откройте свой домашний каталог, обязательно покажите скрытые файлы ( Ctrl + H в Nautilus) и отсортируйте по размеру файла.

    
ответ дан psusi 25.02.2013 в 16:19
0

Это часто вызвано файлами в каталоге, в котором также установлена ​​другая файловая система. Типичное исправление заключается в загрузке с диска аварийного восстановления или в однопользовательском режиме и пустых каталогов, подтвердив, что они не используются в качестве точек монтирования ( cat /proc/mounts или df -h ).

    
ответ дан Tim Small 12.08.2017 в 08:07