Назад | Перейти на главную страницу

Неожиданный расход места

У меня проблема. Мне все время не хватает места на диске. Я точно не знаю, какие файлы занимают все пространство. Кажется, там куча маленьких файлов, поэтому их сложно найти с помощью du команда. Каждый раз, когда я нахожу что-то, от чего нужно избавиться, чтобы получить немного свободного места (почта, журналы, старые архивы и rpms), диск через некоторое время снова заполняется. Похищено пространство из системного раздела (/). Результаты df команда:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1              4061540   3848404      3492 100% /
/dev/sda3              4061572   2441348   1410576  64% /home
tmpfs                   517636         0    517636   0% /dev/shm
/dev/sdb1             10317828   1894904   7898808  20% /var/lib/mysql

Что бы вы посоветовали в этой ситуации?

Было бы здорово, если бы вы также могли перечислить список случаев, когда вы сталкиваетесь с чрезмерным или неожиданным потреблением места. Это может помочь решить проблему

ОС: CentOS 5.

Вот мой стандартный режим «найди то, что ест пространство»:

  1. du -hx --max-depth=1 / - ищите, что пожирает пространство. Изучите самый большой подкаталог (скажем du -hx --max-depth=1 /var), пока не найдете космических свиней. Журналы (в /var/log) являются частыми виновниками (с которыми вам следует бороться с помощью logrotate), как и мусор, который yum любит хранить (переупакованные RPM). Если вы можете выявить повторных нарушителей, разработайте способ автоматизации любых работ по техническому обслуживанию, которые вы выполняете, чтобы постоянно убирать.
  2. lsof -n |grep deleted - ищите большие файлы, которые были удалены. Определите, какой процесс держит их открытыми, и завершите его или скажите, чтобы он переработал его дескрипторы (если это файлы журнала, kill -HUP <pid> часто будет делать свое дело), ​​если можете.
  3. Моя третья линия атаки - изменить размер разделов или выделить новые разделы для различных монтировок, хотя в вашем случае, поскольку вы не используете LVM, это сложно. Рассмотрите возможность обслуживания, чтобы повернуть /dev/sdb1 в VG и выделить оттуда.
  4. Обновить. Дисковое пространство настолько дешево, что если вы потратите час своего времени на поиск причин, вызывающих потребление пространства, вы просто «потратите» время, необходимое для оплаты нового жесткого диска, поэтому покупайте новые диски, а не тратите слишком много времени на поиски. проблемы.

Одно дополнение к ответу womble - если вы обнаружите, что получаете много больших файлов журнала, подумайте об использовании logrotate (который установлен по умолчанию в большинстве дистрибутивов), чтобы уменьшить их размер. Если есть один конкретный журнал, который занимает большую часть места, вы также должны проверить его на наличие повторяющихся ошибок и убедиться, что для службы, которая создает журнал, не установлен слишком высокий уровень детализации.

Если это еще не сделано, переместите точку монтирования / var в другой раздел. Файловая система / var существует для предотвращения заполнения корневой файловой системы.

То же самое для / tmp, если это еще не отдельный раздел.

У вас может быть процесс, который удаляет файлы, но оставляет их открытыми. Пространство не будет освобождено до закрытия / выхода из процесса. Вы можете использовать команду lsof, чтобы узнать, какие процессы какие файлы открывают. Команда lsof может отсутствовать в вашей стандартной установке Centos, возможно, вам придется добавить пакет, чтобы получить ее.

sudo du --all --one-file-system / | xdu -n

Пример: размонтировать / home, записать туда файл размером 10 ГБ, снова смонтировать / home. Пространство будет израсходовано, и df ничего не показывает: точка монтирования скрывает файлы внутри этой папки.

Проверьте это: это может произойти, если когда-либо возникали ошибки монтирования, и некоторые файлы были помещены туда.