Qual é o uso do systemd-journal-flush.service?

14

Isso diminui o tempo de inicialização do sistema.

Posso desativá-lo?

O que acontecerá se eu desativá-lo na inicialização?

Estou usando o Ubuntu versão 18.04.

vivek
fonte

Respostas:

13

Ele systemd-journal-flush.servicesolicita que o daemon do diário libere todos os dados de log armazenados em / run / log / journal em / var / log / journal, se o persistentarmazenamento estiver ativado. Caso você tenha (já) grandes arquivos de log, isso resultará em uma inicialização mais lenta. Além disso, o disco (com /var/log) deve ser montado em um modo gravável para fazer isso.

Para resumir: enormes arquivos de log antigos, que são verificados durante a inicialização e o acréscimo de novos dados de log resulta em um tempo de inicialização mais lento.

Para verificar o tamanho do log do journalctl

journalctl --disk-usage

Para obter as informações de tempo e espaço em disco do processamento de liberação, digite o seguinte comando

journalctl -b --unit systemd-journald

A saída correspondente será semelhante a

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


Você também pode

  • Desativar o serviço (não recomendado)

    É possível que nem todos os dados do log sejam gravados no disco; irritante ao depurar falhas de inicialização.


  • Use um journalctl --vacuumcomando

    A partir de journalctl -h

    --vacuum-size = BYTES Reduz o uso do disco abaixo do tamanho especificado
    --vacuum-files = INT Deixa apenas o número especificado de arquivos de diário
    --vacuum-time = TIME Remover arquivos de diário mais antigos que o tempo especificado

    Portanto, faça um

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


  • Alterar o tipo de armazenamento de systemd-journal-flush.service

    Primeiro verifique seu tipo de armazenamento com

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

    A partir de man journald.conf

    Armazenamento =

    Controla onde armazenar os dados do diário. Um de "volátil", "persistente", "automático" e "nenhum".

    Se " voláteis ", os dados do log do diário serão armazenados apenas na memória, ou seja, abaixo da hierarquia / run / log / journal (criada se necessário).

    Se " persistente ", os dados serão armazenados preferencialmente em disco, ou seja, abaixo da hierarquia / var / log / journal (criada se necessário), com um fallback para / run / log / journal (criado se necessário), durante inicialização antecipada e se o disco não for gravável.

    " auto " é semelhante a "persistente", mas o diretório / var / log / journal não é criado, se necessário, de modo que sua existência controla aonde os dados do log vão.

    " none " desativa todo o armazenamento, todos os dados de log recebidos serão descartados. O encaminhamento para outros destinos, como o console, o buffer de log do kernel ou um soquete do syslog ainda funcionará. O padrão é "auto".

    Edite o arquivo

    sudo nano /etc/systemd/journald.conf
    

    Na seção do diário, remova o comentário e altere:

    Storage=auto
    SystemMaxFileSize=1G
    SystemMaxFiles=5
    

    Salve e reinicie.


abu_bua
fonte
Não vejo por que um arquivo de log enorme atrasaria a inicialização? ele libera o log in / run / log / journal, mas isso é apenas o log desde a última inicialização
solstício de
1
Não tenho certeza absoluta. Também poderia ser a dependência (inútil?) De systemd-user-sessions-flush.service em systemd-user-sessions.service (consulte http://github.com/systemd/systemd/pull/10502). No entanto, experimentei que limitar o arquivo de log a menos de 1 GB acelera o tempo de inicialização. Eu li o código systemd / journal / *, mas não achei o sth interessante.
Abu_bua
1
Talvez devido a de- / compressão (lz4)? Dados de log adicionais não são simplesmente transmitidos para o arquivo; ele fica em diário e uma tabela hash para uma procura mais rápida modificado, objetos, ...
abu_bua
1
Eu acho que um comentário sobre como os arquivos de diário e / var / log se relacionam pode ser útil; Não estou claro sobre isso, mas parece-me que o diário está ativo e, quando é liberado, está gravando os dados ativos no disco nos arquivos normais / var / log?
Pbhj
você está certo, mas durante a inicialização, os dados não podem ser gravados no disco, pois o disco deve ser montado primeiro.
abu_bua
3

De acordo com este post da página inicial do desenvolvedor do systemd , você pode corrigi-lo alterando o arquivo da unidade .

Para fazer isso, abra /lib/systemd/system/systemd-journal-flush.service, por exemplo

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

e altere a dependência Antes de

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

 para

 Before=systemd-tmpfiles-setup.service

Essa correção será alterada automaticamente nas versões systemd>  v240.

Não esqueça de salvar o arquivo.

abu_bua
fonte