Чаще всего логи, которые пишутся на диск демоном журналирования, занимают больше всего места (несколько гигибайт за месяц). Но это не всегда так, и всегда лучше проверить, что именно занимает больше всего места.
В Debian-подобных системах есть чудесная программа — ncdu (также могу порекомендовать gt5), но ее необходимо еще поставить, что невозможно, когда место уже закончилось. Поэтому мы будем пользоваться системными средствами.
Для начала убедимся, что место действительно закончилось. Запустим команду df (disk free)
df -h |
Скорее всего, она покажет, что файловая систем, смонтированная в корень, занимает 100% места. Что ж, это полезно, но не говорит нам, что именно потребляет большую часть места. Для этого воспользуемся второй командой du (disk usage):
du -hc --max-depth=4 /var | sort -h |
На данном примере она покажет, сколько места занимают файлы и подпапки в папке /var. дело в том, чт логи чаще всего хранятся в /var/log, поэтому именно этот путь мы и изучаем в первую очередь. Причем. мы указали, что она должна анализировать использование места с глубиной до 4 уровней вложения. Результат вы сортируем так, что самые большие файлы и папки оказываются в конце списка. Ключ -h выводит размер в удобочитаемом виде. Ключ -c добавляет общий размер запрошенной папки в конце (total).
Чтобы получить общий размер той или иной папки, используйте ключ -sh.
Напоминаю, что для автоматического удаления и сжатия старых логов вы можете использовать демон logrotate.d. Файлы его конфигурации вы можете добавить в папку /etc/logrotate.d/.
Также рекомендую проверить, сколько занимают места ваши текущие логи (не архивированные). Это можно сделать командой:
journalctl --disk-usage |
Ограничить размер логов в будущем можно так:
journalctl --vacuum-size=1G |
Важный момент: вы можете заметить, что в CentOS даже после удаления файлов, дисковое пространство не сильно освобождается. Это связано с тем, что какой-то процесс держит эти файлы. Более того, вы удаленные не увидите в отчете утилит du и ncdu. Чтобы это выяснить, запустите команду:
lsof | grep deleted |
Вы увидимте список всех удаленных удерживаемых файлов с пометкой (deleted) справа. Найдите самый большой их них. В левой колонке вы обнаружите процесс, который его удерживает. Попроуйте перезапустить процесс или же убить его через команду kill.
В моем случае перезапуск сервиса xl2tpd решает проблему с этим лог файлом.