Apa gunanya layanan systemd-journal-flush.service?

14

Ini memperlambat waktu boot sistem saya.

Bisakah saya menonaktifkannya?

Apa yang akan terjadi jika saya menonaktifkannya saat boot?

Saya menggunakan Ubuntu versi 18.04.

vivek
sumber

Jawaban:

13

The systemd-journal-flush.servicememinta daemon jurnal untuk menyiram data log yang disimpan di / run / log / jurnal ke / var / log / jurnal, jika persistentpenyimpanan diaktifkan. Jika Anda memiliki (sudah) file log besar, ini akan menyebabkan boot lebih lambat. Selanjutnya disk (dengan /var/log) harus dipasang dalam mode yang dapat ditulisi untuk melakukannya.

Singkatnya: file log besar yang sangat besar, yang diperiksa selama boot dan penambahan data log baru menghasilkan waktu boot lebih lambat.

Untuk memeriksa jenis ukuran log jurnalctl

journalctl --disk-usage

Untuk mendapatkan informasi waktu dan ruang disk dari pemrosesan flush, masukkan perintah berikut

journalctl -b --unit systemd-journald

Output yang sesuai akan terlihat seperti

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


Anda juga bisa

  • Nonaktifkan layanan (tidak disarankan)

    Maka dimungkinkan bahwa tidak semua data log ditulis ke disk; mengganggu ketika men-debug kesalahan boot.


  • Gunakan journalctl --vacuumperintah

    Dari journalctl -h

    --vacuum-size = BYTES Mengurangi penggunaan disk di bawah ukuran yang ditentukan
    --vacuum-files = INT Hanya
    menyisakan jumlah file jurnal yang ditentukan --vacuum-time = TIME Hapus file jurnal yang lebih lama dari waktu yang ditentukan

    Maka lakukanlah a

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


  • Ubah jenis penyimpanan systemd-journal-flush.service

    Pertama-tama periksa jenis penyimpanan Anda dengan

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

    Dari man journald.conf

    Penyimpanan =

    Mengontrol tempat penyimpanan data jurnal. Salah satu dari "volatile", "persistent", "auto" dan "none".

    Jika " volatile ", data jurnal jurnal akan disimpan hanya dalam memori, yaitu di bawah hierarki / run / log / jurnal (yang dibuat jika diperlukan).

    Jika " persisten ", data akan disimpan lebih disukai di disk, yaitu di bawah hierarki / var / log / jurnal (yang dibuat jika diperlukan), dengan fallback ke / run / log / jurnal (yang dibuat jika diperlukan), selama boot awal dan jika disk tidak dapat ditulisi.

    " auto " mirip dengan "persistent" tetapi direktori / var / log / jurnal tidak dibuat jika diperlukan, sehingga keberadaannya mengontrol ke mana data log dimasukkan.

    " tidak ada " mematikan semua penyimpanan, semua data log yang diterima akan dihapus. Penerusan ke target lain, seperti konsol, buffer log kernel, atau soket syslog masih akan berfungsi. Standarnya adalah "otomatis".

    Edit file

    sudo nano /etc/systemd/journald.conf
    

    Di bagian jurnal batalkan komentar dan ubah:

    Storage=auto
    SystemMaxFileSize=1G
    SystemMaxFiles=5
    

    Simpan & reboot.


abu_bua
sumber
Saya tidak melihat mengapa file log besar akan memperlambat boot? itu mem
flush
1
Saya tidak yakin sepenuhnya. Ini juga bisa menjadi ketergantungan (tidak berguna?) Dari systemd-user-sesi-flush.service pada systemd-user-session.service (lihathttps: //github.com/systemd/systemd/pull/10502). Namun, saya mengalami bahwa membatasi file log menjadi kurang dari 1GB mempercepat waktu boot. Saya membaca kode systemd / journal / *, tetapi tidak menemukan sth yang menarik.
abu_bua
1
Mungkin karena de- / kompresi (lz4)? Data log lebih lanjut tidak hanya mendapatkan streamd ke file; itu akan dijurnal dan tabel hash untuk pencarian yang lebih cepat diubah, objek, ...
abu_bua
1
Saya pikir komentar tentang bagaimana file jurnal dan / var / file log berhubungan mungkin berguna; Saya tidak jelas tentang itu tetapi bagi saya tampaknya jurnal itu sedang log aktif dan ketika itu memerah yang menulis data aktif ke disk dalam file normal / var / log?
pbhj
Anda benar, tetapi selama boot data tidak dapat ditulis ke disk, karena disk harus di-mount terlebih dahulu.
abu_bua
3

Menurut posting ini dari beranda pengembang systemd , Anda dapat memperbaikinya dengan mengubah file Unit .

Untuk melakukannya, buka /lib/systemd/system/systemd-journal-flush.service, mis

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

dan ubah ketergantungan Sebelum dari

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

 untuk

 Before=systemd-tmpfiles-setup.service

Perbaikan ini akan secara otomatis diubah untuk versi systemd>  v240.

Jangan lupa untuk menyimpan file.

abu_bua
sumber