Почему мой журнал systemd не является персистентным через перезагрузки?

Попробуйте этого:

sed -r 's/([a-zA-Z0-9]+) ([a-zA-Z0-9]+) ([a-zA-Z0-9]+)/\3 \2 \1/'

Ваша проблема состоит в том, что Вы пытаетесь использовать расширенный regex без -r опция или управляющий символ escape в команде sed.

Также regex не полностью корректен.

Вы указываете неправильный диапазон: существует нет A-z диапазон, существует A-Z.

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

8
23.09.2017, 23:09
2 ответа

Причина такого поведения заключается в том, что идентификатор машины в /etc/machine-id изменяется при каждой перезагрузке. Это запускает новую директорию протоколирования в /var/log/journal. Старые лог-файлы можно просмотреть с помощью следующей команды:

journalctl --merge

Я все еще ищу причину изменения машинной части. Поддержка Linode знает о проблеме. Я обновлю этот ответ, когда узнаю больше.


UPDATE -- Основная причина проблемы в том, что Линод обнулял содержимое /etc/machine-id из образов файловой системы. В результате получилась следующая цепочка событий:

  1. Ядро загружает и монтирует корневую файловую систему только для чтения
  2. systemd, запускает из начального ramdisk, пытается прочитать /etc/machine-id из корневой файловой системы (файл существует, но имеет нулевое содержимое)
  3. systemd не может прочитать идентификатор машины, но также не может записать новую, так как корневая файловая система монтируется только для чтения
  4. systemd mounts tmpfs на /etc/machine-id (Да, Очевидно, что вы можете смонтировать файловую систему в файл )
  5. systemd вызывает systemd-machine-id-setup , который генерирует случайную машину и сохраняет ее в now-volatile /etc/machine-id
  6. Загрузка системы с переменным идентификатором машины

Вы можете проверить, есть ли в вашей системе переменная, а не стационарный станок, посмотрев на выход mount:

$ mount | grep machine-id
tmpfs on /etc/machine-id type tmpfs (ro,mode=755)

Проблему легко решить: просто запишите постоянную машину на real /etc/machine-id. Однако это легче сказать, чем сделать, потому что вы не можете отсоединить tmpfs от /etc/machine-id в работающей системе. Вот шаги, которые я сделал, чтобы исправить это на Linode:

  1. cp /etc/machine-id /etc/machine-id.copy, затем выключите питание системы
  2. В Linode Manager, перейдите во вкладку Rescue и загрузитесь в режим восстановления
  3. Доступ к системе через консоль Lish
  4. Монтаж корневой файловой системы: монтирование /dev/xvda /mnt
  5. перемещение копии, созданной в шаге 1, на реальную машину: mv /etc/machine-id.copy /etc/machine-id.copy
  6. Reboot

Reboot

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

14
27.01.2020, 20:10

Другой вариант — настроить systemd через параметр ядра из uboot:

setenv bootargs 'systemd.machine_id=fce88f888f3e4a3d811ab2cd1c9b7cbe'
1
15.12.2020, 22:11

Теги

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