df каже, що диск заповнений, але це не так


58

На віртуалізованому сервері під управлінням Ubuntu 10.04, df повідомляє про таке:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.4G  7.0G     0 100% /
none                  498M  160K  498M   1% /dev
none                  500M     0  500M   0% /dev/shm
none                  500M   92K  500M   1% /var/run
none                  500M     0  500M   0% /var/lock
none                  500M     0  500M   0% /lib/init/rw
/dev/sda3             917G  305G  566G  36% /home

Це мене спантеличує з двох причин: 1.) df каже, що / dev / sda1, встановлений на /, має ємність 7,4 гігабайта, з них використовується лише 7,0 гігабайт, але він повідомляє / на 100 відсотків повні; і 2.) Я можу створювати файли в режимі /, тому в ньому явно не залишається місця.

Можливо, доречним є те, що каталог / www є символічним посиланням на / home / www, який знаходиться на іншому розділі (/ dev / sda3, встановлений у / home).

Хтось може запропонувати пропозиції щодо того, що тут може відбуватися? Сервер, здається, працює без проблем, але я хочу переконатися, що немає проблеми з таблицею розділів, файловими системами чи чимось іншим, що пізніше може призвести до імплозії (або вибуху).


Дякую всім за корисні відповіді. Я не можу створювати файли як звичайний користувач, тому здається, що 5-відсотковий буфер запобігає катастрофі. Тепер мені просто потрібно з'ясувати, чому диск заповнений (я трохи переживаю, що щось зловмисне може відбуватися, оскільки жоден з файлів журналу не займає стільки місця, і не так багато програмного забезпечення встановлено, просто простий сервер LAMP) ...
Кріс,

3
Перше місце, на яке я дивлюсь, / tmp. Інша можливість полягає в тому, що у вас є видалений файл, до якого запускається запущена програма. Я думаю, ти можеш запустити 'lsof | grep видалено "як корінь, щоб знайти їх.
Скотт

Відповіді:


103

Можливо, що процес відкрив великий файл, який з тих пір був видалений. Вам доведеться вбити цей процес, щоб звільнити місце. Ви можете виявити процес за допомогою lsof. У Linux видалені, але відкриті файли, як відомо, lsof і позначені як (видалені) у висновку lsof.

Ви можете перевірити це за допомогою sudo lsof +L1


8
Це вирішило для мене таємницю. Я видалив великий файл журналу з uwsgi без перезавантаження служби. Коли df -ahя отримав запит , я заповнив диск, але du -sh /каже, що у мене повинно бути вільного місця. Після ретарта uwsgi я отримав багато вільного місця!
Фабіо Монтефусколо

У мене 40G журнали, що застрягли в кінцівці, і lsof + L1 дав мені рентгенівське бачення, щоб побачити, що сталося ;-) Все, що мені потрібно було зробити, це перезапустити послугу.
PJ Brunet

46

5% (за замовчуванням) файлової системи зарезервовано для випадків, коли файлова система заповнюється для запобігання серйозних проблем. Ваша файлова система заповнена. Нічого катастрофічного не відбувається через 5% буфера - root дозволено використовувати цей безпечний буфер, а у ваших налаштуваннях, некористувальні користувачі не мають підстав писати у цю файлову систему.

Якщо у вас є демони, які працюють як позакористувацький користувач, але їм потрібно керувати файлами у цій файловій системі, все порушиться. Один поширений такий демон named. Інша є ntpd.


1
На питання ЧОМУ ваш диск заповнений, 7G насправді не так багато місця. Також, здається, все скидається під один розділ / файлову систему ( /). Це, як правило, вважається поганою річчю (адже якщо щось піде, то мережа /заповнюється, і світ закінчується), але дистрибутиви Linux все ще зберігають це, оскільки це "простіше". Я б почав з пошуку /var(особливо /var/log) величезних журналів. du -hs /(як root) допоможе вам знайти найбільші каталоги та, можливо, вкаже на те, що потребує прибирання.
voretaq7


17

Більшість файлових систем Linux залишають 5% місця для використання лише користувачу root.

Ви можете бачити це, напр

dumpe2fs /dev/sda1 | grep -i reserved

Ви можете змінити зарезервовану суму за допомогою:

tune2fs -m 0 /dev/sda1

У більшості випадків сервер, як видається, продовжує працювати нормально - припускаючи, що всі процеси запускаються як "root".


8

У мене була ця проблема, і її збентежило те, що видалення різних великих файлів не покращило ситуацію (не знав про 5% буфер) все-таки після деяких підказок тут

З кореня пішли вниз найбільші каталоги, виявлені повторно:

du -sh */ 

поки я не знайшов каталог для файлів журналів веб-сервера, який мав деякі абсолютно масивні журнали

яку я усікав

:>lighttpd.error.log

раптом df -h знизився до 48% використаних!


14
Це дійсно має закінчитися "... тоді я налаштував обертання журналу".
hayalci

hayalci: виявив, що логротація вказує на неправильний каталог.
zzapper

8

Окрім уже запропонованих причин, у деяких випадках це може бути також наступним:

  • інший диск встановлений «над» існуючою папкою, яка наповнена даними
  • du обчислить витрачений розмір змонтованого диска, а df покаже дійсно витрачений
  • рішення: (коли це можливо) відключіть усі некорінні диски та ще раз перевірте розмір du -md 1. Виправте ситуацію, перемістивши приховану папку в якесь інше місце або встановіть на інше місце.

як ви знаходите точки кріплення, крім df?
Хоган

@Hogan: можливо, виклик "mount" або "cat / etc / fstab" допоможе?
Роберт Луйо

5

df -h- округлення значень. Навіть відсотки округлені. Пропустіть -hі ви побачите більш дрібні зернисті відмінності.

Ой. І ext3 та похідні резервують відсоток (за замовчуванням 5%) для файлової системи саме для цього проблемного сузір'я. Якщо ваша коренева файлова система буде справді повною (залишилося 0 байт), ви не можете завантажувати систему. Тож зарезервована частина запобігає цьому.


Можливо також, що у нього закінчилися безкоштовні введення. Запустіть 'df -i', щоб отримати введення inodes.
Ендрю Кейс

Він не надав інформацію про те , що диск є повним. Він думає лише, що диск повний. 100% використаний простір без помилок лише "практично заповнений".
mailq

1

Я зробив велике оновлення декількох бібліотек, і було багато зайвих бібліотек та тимчасових файлів, тому я звільняю місце у папці "/", використовуючи:

apt-get install -f
sudo apt-get clean

І порожнє сміття


Це розумна загальна порада щодо зменшення використання диска, але вона не стосується питання про те, чому df каже, що диск є повноцінним, коли його немає.
Ендрю Шульман

0

перевірити / загублений + знайдений, у мене була система (centos 7), а частина файлу в / lost + знайшла з'їли весь простір


0

Якщо у вашому розділі є btrfs, можливо, у підтомці є місце. Файлова система btrfs може мати безліч підтомників, лише один з яких змонтований. Ви можете використовувати btrfs subvolume list <dir>для списку всіх підпунктів та btrfs subvolume delete <dir>/<subvolume>видалення. Переконайтеся, що ви не видалили той, який встановлено за замовчуванням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.