Вопрос или проблема
Я не понимаю, почему папка /var/log/journal/
такая большая.
Например, выполняя команду systemctl -f
, я вижу заполняемость.
Если я кликаю на электронное письмо в Thunderbird, оно генерирует десятки строк, которые я считаю бесполезными.
В данный момент у меня более 1,5 ГБ (du -h /var/log/journal/
) сгенерировано за 1 день!
Есть ли способ значительно уменьшить эти журналы без остановки записи?
Вы можете уменьшить размер журнала с помощью следующих команд:
sudo journalctl --vacuum-size=100M
Это сохранит последние 100M данных.
sudo journalctl --vacuum-time=10d
удалит все, кроме последних 10 дней.
Согласно man journalctl
:
--vacuum-size=, --vacuum-time=, --vacuum-files= Удаляет старейшие архивированные журнальные файлы, пока занимаемое ими дисковое пространство не станет меньше указанного размера (указано с обычными суффиксами "K", "M", "G" и "T"), или все архивированные журнальные файлы не содержат данных старше указанного времени (указано с обычными суффиксами "s", "m", "h", "days", "months", "weeks" и "years"), или не останется более указанного количества отдельных журнальных файлов. Обратите внимание, что выполнение --vacuum-size= имеет только косвенное воздействие на вывод, отображаемый --disk-usage, так как последний включает активные журнальные файлы, в то время как операция вакуумирования работает только с архивированными журнальными файлами. Аналогично, --vacuum-files= может не уменьшить количество журнальных файлов ниже указанного числа, так как он не удалит активные журнальные файлы. --vacuum-size=, --vacuum-time= и --vacuum-files= могут быть объединены в одном вызове, чтобы установить любое сочетание ограничения по размеру, времени и количеству файлов на архивированные журнальные файлы. Указание любого из этих трех параметров как нуля эквивалентно отсутствию ограничения, и, следовательно, излишне. Эти три переключателя также могут быть объединены с --rotate в одну команду. Если да, все активные файлы сначала вращаются, а операция вакуумирования выполняется сразу после этого. Вращение имеет эффект, что все в настоящее время активные файлы архивируются (и потенциально открываются новые пустые журнальные файлы в качестве замены), и, следовательно, операция вакуумирования имеет наибольшее влияние, так как может учитывать все записанные до сих пор данные журнала.
Научите их редактировать
/etc/systemd/journald.conf
, и вы научите их, как решить проблему раз и навсегда.
Конкретнее: активируйте опцию SystemMaxUse=
там, например, как SystemMaxUse=100M
, чтобы использовать только 100 МБ.
После редактирования используйте service systemd-journald restart
, чтобы активировать изменённую конфигурацию. Это удалит избыточные журналы.
journald.conf
также имеет другие опции, которые могут быть полезны.
Вам также нужно установить это в /etc/systemd/journald.conf
:
SystemMaxFileSize=100M
Смотрите: https://got-tty.org/journalctl-via-journald-conf-die-loggroesse-definieren (на немецком)
Чтение этого вызвало путаницу между параметрами SystemMaxFileSize и SystemMaxUse для journald.conf. Это проясняет ситуацию:
SystemMaxUse=
и RuntimeMaxUse=
контролируют, сколько дискового пространства журнал может использовать максимум. SystemKeepFree=
и RuntimeKeepFree=
контролируют, сколько дискового пространства systemd-journald должен оставить свободным для других нужд. systemd-journald будет уважать оба ограничения и использовать меньшее из двух значений.
Первая пара по умолчанию составляет 10%, а вторая – 15% от размера соответствующей файловой системы, но каждое значение ограничено 4 ГБ. Если файловая система почти полна, и любое из SystemKeepFree=
или RuntimeKeepFree=
нарушается при запуске systemd-journald, ограничение будет повышено до процента, который фактически свободен. Это означает, что если до этого было достаточно свободного места и журнальные файлы были созданы, а затем что-то другое вызвало заполнение файловой системы, journald перестанет использовать больше пространства, но не будет удалять существующие файлы, чтобы уменьшить занимаемое пространство. Также обратите внимание, что только архивированные файлы удаляются для уменьшения пространства, занимаемого журнальными файлами. Это означает, что на практике в итоге может использоваться больше пространства, чем установленный лимит SystemMaxUse=
или RuntimeMaxUse=
после завершения операции вакуумирования.
SystemMaxFileSize=
и RuntimeMaxFileSize=
контролируют, насколько велики могут быть отдельные журнальные файлы. Это влияет на детализацию, с которой дисковое пространство становится доступным через вращение, т.е. удаление исторических данных. Значения по умолчанию составляют одну восьмую от значений, настроенных с SystemMaxUse=
и RuntimeMaxUse=
, чтобы обычно оставалось семь вращающихся журнальных файлов в качестве истории.
Если это на объёме btrfs, вы можете значительно уменьшить занимаемое пространство без удаления данных с помощью прозрачного сжатия папок.
btrfs property set /var/log/journal force-compress zstd
Хотя я предпочитаю установить это на всю папку журналов:
btrfs property set /var/log force-compress zstd
Ответ или решение
Почему размер папки /var/log/journal так велик и как с этим справиться
Ваш вопрос о том, почему папка /var/log/journal/
занимает столько места, является вполне обоснованным. В большинстве дистрибутивов Linux системный журнал используется для записи событий и логов, которые происходят в системе, и в некоторых случаях он может значительно разрастаться за короткое время. Если вы видите, что размер этой папки превышает 1.5 ГБ всего за один день, необходимо разобраться в причине и способах минимизации этого роста.
Причины большого объема журнала
-
Интенсивное логирование приложений: Некоторые приложения (в вашем случае, Thunderbird) могут генерировать избыточные логи при выполнении определённых действий, таких как нажатие на элементы интерфейса.
-
Настройки журнала: По умолчанию
systemd-journald
может не иметь ограничений по размеру, что приводит к накоплению старых записей. -
Уровень детализации логирования: В зависимости от конфигурации, системные службы могут генерировать логи с высокой детализацией, что увеличивает общий объем данных.
Способы уменьшения объема журнала
Чтобы эффективно управлять пространством, занимаемым журналом, необходимо внести изменения в настройки журналирования. Вот несколько рекомендаций:
-
Очистка устаревших записей:
Использование команд для управления размером журнала может помочь сократить занятую память:sudo journalctl --vacuum-size=100M
Эта команда удалит старые записи до тех пор, пока размер журнала не станет менее 100 МБ. Также можно использовать:
sudo journalctl --vacuum-time=10d
Данная команда удалит записи старше 10 дней.
-
Настройка конфигурации:
Для долговременного решения откройте файл конфигурацииjournald.conf
, который находится в/etc/systemd/
:sudo nano /etc/systemd/journald.conf
Добавьте или измените следующие строки:
SystemMaxUse=100M SystemMaxFileSize=100M
Это установит лимиты для общего объема журнала и для размера отдельных файлов. После внесения изменений не забудьте перезапустить
systemd-journald
:sudo systemctl restart systemd-journald
-
Сжатие данных на файловых системах Btrfs:
Если ваша система использует файловую систему Btrfs, вы можете включить сжатие для папки журнала:btrfs property set /var/log/journal force-compress zstd
Заключение
Системные журналы — это важный элемент для мониторинга и диагностики системных процессов. Однако чрезмерное логирование может привести к значительному снижению производительности и уменьшению доступного пространства на диске. Применяя вышеуказанные методы, вы сможете эффективно контролировать и минимизировать объем занимаемого журнала без прекращения логирования. Это не только улучшит производительность вашей системы, но и позволит вам сэкономить место на диске.