Общая методика поиска проблемного раздела и очистки
Ошибка возникает если на одном из разделов занято более 85% пространства.
- Проверям какой раздел заполнен:
df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 3,7G 1,9G 1,6G 55% / /dev/sda2 14G 6,7G 6,3G 52% /app /dev/sda3 13G 1,4G 11G 12% /mnt/backup /dev/sda4 1,9G 36M 1,7G 3% /mnt/etc /dev/sda5 53G 47,2G 5.8G 89% /mnt/var /dev/sda6 8,2G 4,3G 3,6G 55% /mnt/log /dev/sdb1 394G 140G 234G 38% /mnt/stat /dev/sdb1 394G 140G 234G 38% /app/collector/mnt/var/stat
Видно, что заполнен раздел /dev/sda5 с логами.
/dev/sda5 53G 47,2G 5.8G 89% /mnt/var
- Теперь нужно узнать какие именно данные занимают раздел. Запускаем комманду подсчёта объёма и двигаемся вглубь файловой системы.
du -sh /mnt/log/*
- После того как найдены данные, которые занимают диск, их необходимо перенести на другой носитель. Или подключить дополнительный диск для их хранения. Для раздела с логами это можно сделать по инструкции.
В данном примере рассмотрено заполение раздела с логами (журналами работы служб). |
Примеры решения проблем
Переполнен разделы с логами /mnt/log или папка /var/log
Корневой раздел переполнен журналом авторизации
Проблема встречается на Softrouter и XGE при интеграции с Carbon Reductor: фильтр выгружает списки заблокированных IP-адресов по ssh и каждая авторизация фиксируется в логе /var/log/secure, от этого он достаточно быстро разрастается.
Проверьте файлы /var/log/secure:
du -sch /var/log/secure*
Если файлы достаточно объёмны (сотни мегабайт и более), значит это Ваша ситуация.
Её можно решить добавив компрессию при ротации логов, для этого измените файл /etc/logrotate.d/syslog, добавив туда строки nodelaycompress и compress:
/var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler { sharedscripts #==Компрессия логов==# #== nodelaycompress compress #== postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
Слишком много файлов на диске с логами
При работе биллинг отправляет команды на оборудование. При этом лог команд ведётся для каждого абонента в отдельности. При большом количестве абонентов это может привести к заполнению раздела /mnt/log . Так же при диагностике сервера может выводиться сообщение:
Мало свободных inode
- Просмотрите размер раздела /mnt/log
df -h | grep log /dev/sda7 14G 5,8G 7,0G 46% /mnt/log
- Оцените сколько места занято логами учётных записий
du -sh /app/asr_billing/var/log/abonents 272M /app/asr_billing/var/log/abonents
- Удалите логи старше 30 дней
Используйте команду в точности как написано ниже!
Настоятельно не рекомендуем вносить изменение в команду удаления логов, так как это может привести к неработоспособности системы в целом.find /app/asr_billing/var/log/abonents/ -atime +30 -type f -delete