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

У меня проблема с 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

enter image description here

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

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

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

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

Спасибо

28
задан 23 May 2017 в 15:39

7 ответов

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

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

0
ответ дан 23 May 2017 в 15:39

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

0
ответ дан 23 May 2017 в 15:39

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

0
ответ дан 23 May 2017 в 15:39

Я не нашел причину этой проблемы, но она уникальна для 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  .

что достаточно близко.

0
ответ дан 23 May 2017 в 15:39

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

0
ответ дан 23 May 2017 в 15:39

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

0
ответ дан 23 May 2017 в 15:39

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

0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

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