systemd-journal-flush.serviceの使用は何ですか?


14

システムの起動時間が遅くなります。

無効にすることはできますか?

起動時に無効にするとどうなりますか?

Ubuntuバージョン18.04を使用しています。

回答:


13

systemd-journal-flush.service場合、には/ var /ログ/ジャーナルに/実行/ログ/ジャーナル格納されている任意のログデータをフラッシュするジャーナル・デーモンを要求する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」はすべてのストレージをオフにし、受信したすべてのログデータはドロップされます。ただし、コンソール、カーネルログバッファー、syslogソケットなどの他のターゲットへの転送は引き続き機能します。デフォルトは「auto」です。

    ファイルを編集する

    sudo nano /etc/systemd/journald.conf
    

    ジャーナルセクションで、コメントを解除して変更します。

    Storage=auto
    SystemMaxFileSize=1G
    SystemMaxFiles=5
    

    保存して再起動します。



巨大なログファイルが起動を遅くする理由がわかりません。/ run / log / journalのログをフラッシュしますが、それは最後のブート以降のログのみ
です-solsTiCe

1
絶対にわかりません。また、systemd-user-sessions.serviceのsystemd-user-sessions-flush.serviceの(役に立たない?)依存関係である可能性もあります(https://github.com/systemd/systemd/pull/10502を参照)。ただし、ログファイルを1GB未満に制限すると、起動時間が短縮されることがわかりました。systemd / journal / *コードを読みましたが、sthが面白くありませんでした。
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

systemdバージョン>v240の場合、この修正は自動的に変更されます。

ファイルを保存することを忘れないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.