Ограничиваем системные журналы в Fedora 24

В Fedora для хранения журналов уже давно используется компонент systemd. В данном HOWTO мы подробно рассмотрим как ограничить ему потребление места на диске, а также научимся чистить от устаревших записей.

Введение

Journald хранит системные журналы в бинарном виде в каталоге /var/log/journal. Со временем они могут разрастись до по-истине огромных размеров. Особенно это заметно у пользователей, использующих SSD накопители и небольшой раздел под корневую ФС.

Определение размера журналов

Чтобы определить сколько места на диске занимают журналы systemd, откроем терминал и выполним в нём команду:

journalctl --disk-usage

В результате узнаем текущий размер журналов и решим нужно ли нам их чистить по своему усмотрению.

Ручная очистка журналов

Чтобы запустить ручную очистку журналов systemd, выполним в терминале с правами суперпользователя:

sudo journalctl --vacuum-size=128M

Здесь 128 МБ (параметр 128M) — это максимальный размер сохраняемых логов. Всё, что сюда не поместится, будет удалено.

Есть и другой метод очистки — удаление записей старше определённого времени:

sudo journalctl --vacuum-time=31days

Здесь мы удаляем все записи старше 31 дня. Допускается указать всё, что угодно и, если это возможно, они будут удалены.

Внимание! При ручной очистке не удаляются текущие активные логи системы, находящиеся в памяти, — только архивированные.

Полная очистка всех журналов

Чтобы удалить вообще всё, сначала выполним их принудительную ротацию:

sudo journalctl --rotate

Теперь удалим все записи:

sudo journalctl --vacuum-time=1s

Настраиваем автоматическую очистку

Как видим, запускать очистку журналов вручную далеко не лучший выход, поэтому настроим политику ротации логов systemd и навсегда забудем о данной проблеме.

Открываем файл /еtc/systemd/journald.conf в любом текстовом редакторе, запущенном с правами суперпользователя:

sudo vim /etc/systemd/journald.conf

Теперь убираем символ комментария (#) около указанных ниже строк и вносим свои правки:

  • SystemMaxUse — максимальный объём журналов, которые будут храниться на диске;
  • SystemKeepFree — минимальный объём свободного места, которое должно оставаться на корневом разделе. При исчерпании systemd удалит все логи;
  • SystemMaxFileSize — максимальный объём одного файла журнала, хранящегося на диске;
  • RuntimeMaxUse — максимальный объём логов, хранящихся в памяти, внутри каталога /run;
  • RuntimeKeepFree — минимальный объём свободного места, которое должно оставаться на виртуальной ФС каталога /run;
  • RuntimeMaxFileSize — максимальный объём одного файла журнала, хранящегося в памяти.

Сохраняем изменения в файле и перезагружаемся. Теперь systemd будет самостоятельно следить за своим журналом и очищать его по мере заполнения.