Введение / Зачем это нужно
Системный журнал journald собирает события и логи всех служб, но со временем может занимать гигабайты. Это замедляет поиск по логам, усложняет мониторинг и отнимает место, которого всегда не хватает. В этом гайде вы научитесь безопасно очищать journald, настроить автоматическую ротацию и ограничить объём, чтобы система работала стабильно, а важные события не терялись.
Требования / Подготовка
- Система на базе systemd (Ubuntu 22.04+, Debian 11+, CentOS Stream 9, Fedora 38+).
- Права суперпользователя (
sudoилиroot) для редактирования конфигурации и перезапуска служб. - Утилиты
journalctlиsystemd-journaldустановлены по умолчанию — дополнительная установка не требуется.
Шаг 1: Проверить текущий размер journald
Узнайте, сколько места уже занято, чтобы выбрать разумный лимит.
journalctl --disk-usage
Команда покажет объём в байтах. Если журнал занимает больше 1–2 ГБ, очистка и ограничение точно помогут.
Шаг 2: Однократная очистка старых записей
Выберите один из вариантов в зависимости от вашей задачи.
- Ограничить по размеру (оставить не более 1 ГБ):
sudo journalctl --vacuum-size=1G
- Удалить записи старше 30 дней:
sudo journalctl --vacuum-time=30d
- Оставить не более 5000 файлов (полезно при большом объёме мелких записей):
sudo journalctl --vacuum-files=500
💡 Совет: Комбинируйте параметры, например
--vacuum-size=500M --vacuum-time=14d, чтобы срезать и по объёму, и по времени.
Шаг 3: Настроить постоянные лимиты в journald.conf
Однократная очистка не решит проблему, если лимиты не заданы. Откройте конфигурацию:
sudo nano /etc/systemd/journald.conf
Раскомментируйте или добавьте параметры:
[Journal]
# Максимальный объём журнала на диске
SystemMaxUse=1G
# Максимальный объём для runtime-логов (в /run)
RuntimeMaxUse=128M
# Хранить записи не дольше 30 дней (можно использовать weeks, months)
MaxRetentionSec=30d
# Не хранить логи для загрузок, которые больше MaxRetentionSec
SystemKeepFree=500M
Сохраните файл и перезапустите службу:
sudo systemctl restart systemd-journald
Журнал начнёт ротироваться автоматически с учётом новых лимитов.
Шаг 4: Проверить результат и настроить мониторинг
Убедитесь, что размер стабилизировался:
journalctl --disk-usage
Если журнал всё ещё растёт быстро:
- проверьте, не пишет ли одна из служб слишком много отладочных строк (увеличьте уровень логов в её конфигурации);
- настройте фильтрацию или исключение шумных юнитов через
journald.conf(например,RateLimitIntervalSec,RateLimitBurst).
Для дополнительной ротации логов приложений, которые journald не контролирует полностью, используйте logrotate.
Возможные проблемы
- Ошибка «Failed to rotate journal: No space left on device» — освободите место в
/varили увеличьтеSystemKeepFree, чтобы journald мог создавать временные файлы при ротации. - Логи перестали записываться после правки конфига — проверьте синтаксис
journald.confи статус службы:systemctl status systemd-journald. - Записи старше лимита не удаляются — убедитесь, что
MaxRetentionSecзадан и перезапуститеsystemd-journald; vacuum учитывает только те записи, которые не нужны для заданных ограничений.