Для чого використовують systemd-journal-flush.service?


14

Це уповільнює час завантаження системи.

Чи можу я його відключити?

Що буде, якщо я відключу його під час завантаження?

Я використовую Ubuntu версії 18.04.

Відповіді:


14

systemd-journal-flush.serviceЗапитує журнал демон змивати будь-які дані , що зберігаються в журналі / виконання / журнал / журнал в / вар / журнал / журнал, якщо persistentзберігання включена. Якщо у вас є (вже) величезні файли журналів, це призведе до більш повільного завантаження. Далі диск (з /var/log) повинен бути змонтований в режимі запису, щоб це зробити.

Підсумовуючи це: величезні старі файли журналів, які перевіряються під час завантаження та додавання нових даних журналу, призводять до уповільнення часу завантаження.

Для перевірки типу розміру журналу журналу

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-файли = 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

    Зберігання =

    Контролює, де зберігати дані журналу. Один з "непостійних", "стійких", "авто" та "жодних".

    Якщо " мінливі ", дані журналу журналу зберігатимуться лише в пам'яті, тобто нижче ієрархії / run / log / journal (яка створюється за потреби).

    Якщо " стійкий ", дані зберігатимуться бажано на диску, тобто нижче ієрархії / var / log / журналу (яка створюється у разі потреби), із запасом до / run / log / journal (який створюється при необхідності) протягом раннє завантаження і якщо диск не піддається запису.

    " auto " схожий на "persistent", але каталог / var / log / journal не створюється за потреби, так що його існування контролює, куди йдуть дані журналу.

    " none " вимикає все сховище, усі отримані дані журналу будуть видалені. Однак пересилання до інших цілей, таких як консоль, буфер журналу ядра або гніздо syslog, все ще працюватиме. За замовчуванням встановлено "авто".

    Відредагуйте файл

    sudo nano /etc/systemd/journald.conf
    

    У розділі журналу відмініть коментар та змініть:

    Storage=auto
    SystemMaxFileSize=1G
    SystemMaxFiles=5
    

    Зберегти та перезавантажити.



Я не бачу, чому величезний файл журналу сповільнить завантаження? він промиває вхід / run / log / journal, але це лише журнал з моменту останнього завантаження
solsTiCe

1
Я не абсолютно впевнений. Це також може бути (непотрібна?) Залежність systemd-user-session-flush.service від systemd-user-session.service (див. Http: //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 , ви можете її виправити, змінивши файл Unit .

Для цього відкрийте /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

Це виправлення буде автоматично змінено для системних версій>  v240.

Не забудьте зберегти файл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.