Linux journaldСредняя

Исправление ошибок journald в Linux: причины и решения

В этой статье вы найдёте подробные способы диагностики и исправления ошибок, связанных с systemd-journald в Linux. После прочтения вы сможете самостоятельно решить проблемы с журналированием.

Обновлено 8 апреля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:systemd 245+Ubuntu 20.04+Debian 10+Fedora 35+

Введение

systemd-journald — это компонент systemd, отвечающий за сбор, хранение и обработку системных журналов в Linux. Ошибки journald могут привести к прекращению записи логов, что серьёзно затрудняет диагностику проблем в системе. В этой статье рассмотрим основные причины ошибок journald и практические способы их устранения, которые помогут восстановить нормальную работу журналирования.

Причины ошибок journald

Ошибки journald обычно вызваны следующими факторами:

  • Нехватка дискового пространства: journald записывает логи на диск, и если место заканчивается, служба может завершиться с ошибкой "No space left on device".
  • Повреждение файлов журнала: внезапные перезагрузки или сбои могут привести к повреждению файлов в /var/log/journal/.
  • Некорректная конфигурация: ошибки в файле /etc/systemd/journald.conf (например, неверные пути или параметры) вызывают сбои службы.
  • Конфликты с другими службами логирования: если параллельно работают rsyslog, syslog-ng или другие демоны, они могут конфликтовать за доступ к файлам журналов.
  • Проблемы с правами доступа: у пользователя systemd-journald или группы systemd-journal могут отсутствовать права на запись в директорию журналов.
  • Устаревшая версия systemd: в старых версиях systemd могут присутствовать баги, исправленные в обновлениях.

Способы решения

Способ 1: Проверка и освобождение дискового пространства

Убедитесь, что на диске достаточно места для записи журналов. Выполните:

df -h

Обратите внимание на раздел, содержащий /var/log или /var/log/journal. Если свободное место меньше 100 МБ, освободите его, удалив временные файлы или старые логи других приложений. Например:

sudo rm -rf /tmp/*
sudo apt clean  # Для Ubuntu/Debian

Способ 2: Очистка старых журналов journald

Если дискового пространства недостаточно, очистите старые записи journald с помощью утилиты journalctl. Для удаления записей старше 3 дней:

sudo journalctl --vacuum-time=3d

Чтобы ограничить общий размер журналов 200 МБ:

sudo journalctl --vacuum-size=200M

Внимание: Полная очистка всех журналов (sudo rm -rf /var/log/journal/*) может привести к потере важных логов. Используйте только в крайних случаях.

Способ 3: Перезапуск службы systemd-journald

Иногда служба временно зависает, и простой перезапуск помогает. Выполните:

sudo systemctl restart systemd-journald

Затем проверьте статус:

systemctl status systemd-journald

Убедитесь, что служба активна (active (running)) и нет ошибок в выводе. Если служба не запускается, проверьте логи через dmesg или journalctl -u systemd-journald (если ещё работает).

Способ 4: Проверка и исправление конфигурации

Некорректные настройки в конфигурационном файле могут вызывать ошибки. Откройте файл:

sudo nano /etc/systemd/journald.conf

Убедитесь, что параметры раскомментированы (без #) и имеют адекватные значения. Например:

Storage=persistent
SystemMaxUse=500M
SystemKeepFree=15%

Storage=persistent сохраняет журналы на диск, SystemMaxUse ограничивает общий размер, SystemKeepFree оставляет свободное место на разделе. После изменений перезапустите службу (см. Способ 3).

Способ 5: Обновление systemd

Если используется устаревшая версия systemd, обновите её до последней стабильной. Для Ubuntu/Debian:

sudo apt update
sudo apt install --only-upgrade systemd

Для Fedora/CentOS/RHEL:

sudo dnf upgrade systemd

После обновления перезагрузите систему:

sudo reboot

Обновление часто содержит исправления для известных багов journald.

Профилактика

Чтобы избежать повторения ошибок journald:

  • Регулярно мониторьте дисковое пространство на разделе /var/log с помощью df -h или настроенных алертов (например, в Zabbix).
  • Задайте разумные лимиты в /etc/systemd/journald.conf: SystemMaxUse=500M, SystemMaxFileSize=50M, SystemKeepFree=10%.
  • Настройте автоматическую очистку через cron: добавьте задание 0 2 * * * /usr/bin/journalctl --vacuum-time=7d для ежедневной очистки записей старше 7 дней.
  • Избегайте конфликтов с другими службами логирования. Если rsyslog не нужен, отключите его: sudo systemctl disable --now rsyslog.
  • Следите за обновлениями systemd и устанавливайте их своевременно, особенно для LTS-дистрибутивов.
  • Проверяйте права доступа на директорию /var/log/journal: ls -ld /var/log/journal — владелец должен быть root:systemd-journal с правами 2755.

Часто задаваемые вопросы

Почему возникает ошибка 'No space left on device' в journald?
Как проверить, работает ли systemd-journald?
Можно ли отключить журналирование в systemd?
Как увеличить лимит размера журналов journald?

Полезное

Проверка дискового пространства
Очистка старых журналов
Перезапуск службы journald
Проверка конфигурации
Обновление systemd

Эта статья помогла вам решить проблему?