Какая польза от systemd-journal-flush.service?

14

Это замедляет время загрузки моей системы.

Могу ли я отключить это?

Что будет, если я отключу его при загрузке?

Я использую Ubuntu версии 18.04.

Вивек
источник

Ответы:

13

При systemd-journal-flush.serviceзапросе демон журнала сбрасывает все данные журнала, хранящиеся в / run / log / journal, в / var / log / journal, если persistentхранилище включено. Если у вас есть (уже) огромные файлы журнала, это приведет к более медленной загрузке. Кроме того, диск (с /var/log) должен быть смонтирован в режиме записи для этого.

Подводя итог: огромные старые файлы журналов, которые проверяются во время загрузки, и добавление новых данных журнала приводит к более медленному времени загрузки.

Чтобы проверить размер журнала journalctl

journalctl --disk-usage

Чтобы получить информацию о времени и месте на диске для очистки, введите следующую команду

journalctl -b --unit systemd-journald

Соответствующий вывод будет выглядеть

-- Logs begin at Sat 2018-12-08 00:40:23 CET, end at Mon 2018-12-10 19:40:27 CET. --
Dec 10 12:51:38 ubuntu01 systemd-journald[479]: Journal started
Dec 10 12:51:38 ubuntu01 systemd-journald[479]: Runtime journal (/run/log/journal/265c93c062bf4c8da41abfe2ae793452) is 4.7M, max 38.3M, 33.5M free.
Dec 10 12:51:38 ubuntu01 systemd-journald[479]: Time spent on flushing to /var is 7.066904s for 132 entries.
Dec 10 12:51:38 ubuntu01 systemd-journald[479]: System journal (/var/log/journal/265c93c062bf4c8da41abfe2ae793452) is 128.0M, max 256.0M, 128M free.


Вы также можете

  • Отключить службу (не рекомендуется)

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


  • Используйте journalctl --vacuumкоманду

    Из journalctl -h

    --vacuum-size = BYTES Уменьшить использование диска ниже указанного размера
    --vacuum-files = INT Оставить только указанное количество файлов журнала
    --vacuum-time = TIME Удалить файлы журнала старше указанного времени

    Следовательно, сделайте

     sudo journalctl --vacuum-size=1G --vacuum-time=5d --vacuum-files=5
    


  • Изменить тип хранения systemd-journal-flush.service

    Сначала проверьте ваш тип хранения с

     systemctl cat systemd-journal-flush.service  | grep -i storage
    

    Из man journald.conf

    Хранение =

    Управляет местом хранения данных журнала. Один из "volatile", "persistent", "auto" и "none".

    Если указано значение « volatile », данные журнала будут храниться только в памяти, то есть ниже иерархии / run / log / journal (которая создается при необходимости).

    Если « постоянный », данные будут храниться предпочтительно на диске, то есть ниже иерархии / var / log / journal (которая создается при необходимости), с откатом на / run / log / journal (которая создается при необходимости), во время ранняя загрузка и если диск не доступен для записи.

    « auto » похоже на «persistent», но каталог / var / log / journal не создается при необходимости, так что его существование контролирует, куда попадают данные журнала.

    « none » отключает все хранилище, все полученные данные журнала будут удалены. Пересылка на другие цели, такие как консоль, буфер журнала ядра или сокет системного журнала, все равно будет работать. По умолчанию установлено значение «Авто».

    Редактировать файл

    sudo nano /etc/systemd/journald.conf
    

    В разделе журнала раскомментируйте и измените:

    Storage=auto
    SystemMaxFileSize=1G
    SystemMaxFiles=5
    

    Сохранить и перезагрузить.


abu_bua
источник
Я не понимаю, почему огромный лог-файл замедляет загрузку? сбрасывает журнал в / run / log / journal, но это только журнал со времени последней загрузки
solsTiCe
1
Я не совсем уверен. Это также может быть (бесполезная?) Зависимость systemd-user-session-flush.service от systemd-user-sessions.service (seehttps: //github.com/systemd/systemd/pull/10502). Однако я обнаружил, что ограничение файла журнала менее 1 ГБ ускоряет загрузку. Я прочитал код systemd / journal / *, но не нашел ничего интересного.
abu_bua
1
Может быть из-за де / сжатия (lz4)? Дальнейшие данные журнала не просто передаются в файл; он записывается в журнал и хеш-таблицу для более быстрого поиска измененных объектов ...
abu_bua
1
Я думаю, что комментарий о том, как связаны файлы журнала и / var / log, может быть полезным; Я не совсем уверен в этом, но мне кажется, что журнал ведет активную запись, и когда он очищается, записывает активные данные на диск в обычных файлах / var / log?
pbhj
вы правы, но во время загрузки данные не могут быть записаны на диск, так как диск должен быть смонтирован первым.
abu_bua
3

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

Для этого откройте /lib/systemd/system/systemd-journal-flush.service, например,

sudo vim /lib/systemd/system/systemd-journal-flush.service

и изменить Перед зависимости от

 Before=systemd-user-sessions.service systemd-tmpfiles-setup.service

 к

 Before=systemd-tmpfiles-setup.service

Это исправление будет автоматически изменено для версий systemd> 2 v240.

Не забудьте сохранить файл.

abu_bua
источник