A che cosa serve systemd-journal-flush.service?


14

Rallenta il tempo di avvio del mio sistema.

Posso disabilitarlo?

Cosa succederà se lo disabilito all'avvio?

Sto usando Ubuntu versione 18.04.

Risposte:


14

La systemd-journal-flush.servicechiede il demone rivista per irrigare i dati di log memorizzati in / run / log / journal in / var / log / rivista, se persistentlo stoccaggio è abilitato. Nel caso in cui si disponga (già) di enormi file di registro, questo si tradurrà in un avvio più lento. Inoltre il disco (con /var/log) deve essere montato in un modo scrivibile per farlo.

Per riassumere: enormi vecchi file di registro, che vengono controllati durante l'avvio e l'aggiunta di nuovi dati di registro comporta tempi di avvio più lenti.

Per verificare il tipo di dimensione del registro journalctl

journalctl --disk-usage

Per ottenere le informazioni sul tempo e sullo spazio su disco dell'elaborazione a livello, immettere il comando seguente

journalctl -b --unit systemd-journald

L'output corrispondente sarà simile

-- 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.


Puoi farlo

  • Disabilita il servizio (non raccomandato)

    Quindi è possibile che non tutti i dati di registro vengano scritti sul disco; fastidioso durante il debug degli errori di avvio.


  • Usa un journalctl --vacuumcomando

    A partire dal journalctl -h

    --vacuum-size = BYTES Riduce l'utilizzo del disco al di sotto della dimensione specificata
    --vacuum-files = INT Lascia solo il numero specificato di file journal
    --vacuum-time = TIME Rimuovi i file journal più vecchi del tempo specificato

    Quindi fare un

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


  • Cambia il tipo di archiviazione di systemd-journal-flush.service

    Prima controlla il tuo tipo di archiviazione con

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

    A partire dal man journald.conf

    = bagagli

    Controlla dove archiviare i dati del journal. Uno di "volatile", "persistente", "auto" e "nessuno".

    Se " volatile ", i dati del registro journal verranno archiviati solo in memoria, ovvero sotto la gerarchia / run / log / journal (che viene creata se necessario).

    Se " persistente ", i dati verranno archiviati preferibilmente su disco, ovvero al di sotto della gerarchia / var / log / journal (che viene creata se necessario), con un fallback a / run / log / journal (che viene creato se necessario), durante avvio anticipato e se il disco non è scrivibile.

    " auto " è simile a "persistente" ma la directory / var / log / journal non viene creata se necessario, quindi la sua esistenza controlla dove vanno i dati di registro.

    " none " disattiva tutta la memoria, tutti i dati di registro ricevuti verranno eliminati. Tuttavia, l'inoltro ad altre destinazioni, come la console, il buffer di registro del kernel o un socket syslog funzionerà comunque. L'impostazione predefinita è "auto".

    Modifica il file

    sudo nano /etc/systemd/journald.conf
    

    Nella sezione journal decommenta e modifica:

    Storage=auto
    SystemMaxFileSize=1G
    SystemMaxFiles=5
    

    Salva e riavvia.



Non vedo perché l'enorme file di registro rallenta l'avvio? scarica il log in / run / log / journal ma è solo il log dall'ultimo avvio
solsTiCe

1
Non ne sono assolutamente sicuro. Potrebbe anche essere la dipendenza (inutile?) Di systemd-user-sessioni-flush.service da systemd-user-sessioni.service (vedihttps: //github.com/systemd/systemd/pull/10502). Tuttavia, ho riscontrato che limitare il file di registro a meno di 1 GB accelera il tempo di avvio. Ho letto il codice systemd / journal / *, ma non l'ho trovato interessante.
abu_bua,

1
Forse a causa di de- / compressione (lz4)? Ulteriori dati di registro non vengono semplicemente trasmessi nel file; viene registrato su giornale e una tabella hash per una ricerca più rapida, oggetti modificati, ...
abu_bua

1
Penso che un commento su come si collegano i file journal e / var / log potrebbe essere utile; Non sono chiaro su questo, ma mi sembra che il diario sia la registrazione attiva e quando è svuotato che sta scrivendo i dati attivi sul disco nei normali file / var / log?
pbhj,

hai ragione, ma durante l'avvio i dati non possono essere scritti su disco, poiché il disco deve essere montato per primo.
abu_bua,

3

Secondo questo post dalla homepage dello sviluppatore di systemd , puoi risolverlo cambiando il file Unit .

Per fare ciò, aprire /lib/systemd/system/systemd-journal-flush.service, ad es

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

e modificare la dipendenza Prima da

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

 a

 Before=systemd-tmpfiles-setup.service

Questa correzione verrà automaticamente modificata per le versioni di systemd>  v240.

Non dimenticare di salvare il file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.