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

28

У меня проблема с Ubuntu 12.04 LTS. Это второй раз, когда я столкнулся с этой проблемой за последние 3 недели. Первый раз описан в этом закрытом вопросе о StackOverflow . Версия TL; DR - мне удалось использовать все inode в системе 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.

ПОСЛЕДОВАТЕЛЬНОСТЬ - Я должен был сбросить установку на прошлой неделе и переустановить 12.04, чтобы закончить работу. На этой неделе, когда я снова проверю сборки Android, я буду внимательно следить за использованием диска и сообщать информацию здесь, когда узнаю больше.

Благодарность

Эрик Клонинджер
источник
1
Вы проверяли, почему df и du показывают разные результаты ?
Джокердино
@jokerdino Да, я следовал указаниям в этой теме и некоторых других похожих темах. Я перезапустил систему, а также перезапустить с флешки. После перезагрузки система по-прежнему показывает весь диск как занятый. Спасибо.
Эрик Клонинджер,
Данные файлов в Linux подсчитываются по ссылкам, поэтому вам не нужно перезагружать их так часто, как в Windows. Возможно, вы поддерживали эмулятор во время перезаписи его файлов данных под его спиной?
Аквахард
@EricCloninger Я должен добавить себя в список пользователей, как произошла та же проблема. Это мой вопрос с использованием 12.10, и это вопрос пользователя 11.04.
Лусио
Кроме того, скопируйте и вставьте выходные данные ls -lah ~в paste.ubuntu.com и свяжите их в своем вопросе.
Лусио

Ответы:

19

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

Мишель Самия
источник
Работал для меня на сервере, обнимая файлы журнала. Благодарность!
miccet
12
Используйте lsof +L1, чтобы проверить идентификатор процесса и убить его.
Джефф Тиан
3

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

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

mpontillo
источник
1

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

Якорь,
источник
sudo fsck -f / dev / sda5 с флешки ничего не сделал, так как диск отформатирован в XFS. Он посоветовал мне использовать xfs_check . xfs_check / dev / sda5 не дал результатов. xfs_repair / dev / sda5 провела ремонт, но ничего необычного не сообщила. После обоих я все еще на 99% полон. Thx
Эрик Клонинджер
1

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

user_1729
источник
1

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

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

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

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

С 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
источник
0

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

psusi
источник
0

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

Тим Смолл
источник