Может быть путь журнала в файловой системе, отличной от /?

Созданный вами каталог - это просто пустая оболочка. Независимо от того, какое имя вы ему дали и какой владелец, как только появится новая файловая система, единственное, что будет интересно, - это имя каталога. Новая файловая система накладывается на эту точку монтирования, и все права собственности и разрешения остаются теми же, что и на этом новом диске. Старая информация о каталоге, а также наличие в нем какого-либо содержимого теперь невидима для операционной системы

1
18.03.2019, 23:20
2 ответа

Из справочной страницы systemd -journald :

The journal service stores log data either persistently below /var/log/journal or in a volatile way below /run/log/journal/ (in the latter case it is lost at reboot). By default, log data is stored persistently if /var/log/journal/ exists during boot, with an implicit fallback to volatile storage otherwise. Use Storage= in journald.conf(5) to configure where log data is placed, independently of the existence of /var/log/journal/.

Таким образом, журнал можно и безопасно хранить в другом месте. Вам останется только добавить/изменить

Storage=/some-filesystem-with-free-space/some-dir/

в один из файлов конфигурации journald .

-1
28.01.2020, 00:19

Насколько я могу судить, нет способа изменить расположение предопределенных каталогов журналов systemd, /run/log/journalи /var/log/journal. С помощью опции конфигурации Storageможно выбрать, какая из этих двух опций будет использоваться. Но вы не можете изменить путь к /anotherfs/log/journal.

Что вы можете сделать, так это сделать /var/log/journal символической ссылкой на другой каталог, и чтобы этот каталог находился в другой файловой системе. Systemd -tmpfiles может автоматически сделать эту ссылку.

Перетащите файл с этим в/etc/tmpfiles.d/:

L     /var/log/journal     -    -    -     -      /anotherfs/journal

Теперь, если /var/log/journalне существует, это будет ссылка на другую файловую систему, и журнал будет идти туда.

Но тогда вы, скорее всего, столкнетесь с другой проблемой. Journald переключится с использования постоянного журнала, отличного от -, в /run на постоянный журнал в /var во время загрузки и сбросит данные журнала из /run в /var. Очевидно, нам нужно, чтобы этот переключатель произошёл после монтирования /anotherfs! Если бы символическая ссылка указывала на rootfs или на ту же fs, что и /var/log, то это не было бы проблемой, и она отлично работала бы как способ изменить путь, по которому находятся данные журнала.

Способ, которым этот порядок, монтирование файловой системы, затем сброс журнала, обычно достигается за счет systemd-journal-flush.serviceналичия свойства RequiresMountsFor=/var/log/journal. Если /var/log/journalявляется символической ссылкой, systemd ожидает монтирования только файловой системы, в которой находится сама ссылка, а не того, на что указывает ссылка. Так что заказ не работает.

Мы можем обойти это с помощью бинд-маунтов. Вместо символической ссылки /var/log/journalна другую фс мы привязываем монтирование каталога из другой фс (или напрямую монтируем другую фс, если другая фс предназначена только для журнала )на /var/log/journal.

Создайте юнит-файл, который должен быть названvar-log-journal.mount:

[Unit]
Description=Persistent Journal Storage Bind

[Mount]
What=/anotherfs/journal
Where=/var/log/journal
Type=none
Options=bind

[Install]
WantedBy=local-fs.target

Установите и включите это. Теперь блок промывки журнала увидит, что дляvar-log-journal(есть блок крепления, он ищет только это точное имя! )и подождите. Модуль монтирования привязывает монтирование каталога /anotherfs/journalк /var/log/journal.Systemd автоматически добавит упорядоченные зависимости для ожидания монтирования /anotherfs, если это необходимо, и автоматически создаст точку монтирования /var/log/journal, если ее еще нет.

7
05.03.2020, 00:23

Теги

Похожие вопросы