การใช้ systemd-journal-flush.service คืออะไร?


14

มันทำให้เวลาการบูตระบบของฉันช้าลง

ฉันสามารถปิดการใช้งานได้หรือไม่

จะเกิดอะไรขึ้นหากฉันปิดการใช้งานตอนบูต

ฉันใช้ Ubuntu รุ่น 18.04

คำตอบ:


14

systemd-journal-flush.serviceถามภูตวารสารเพื่อล้างข้อมูลบันทึกเก็บไว้ใน / วิ่ง / บันทึก / วารสารเข้าไปใน / var / log / วารสารถ้าpersistentการจัดเก็บข้อมูลถูกเปิดใช้งาน ในกรณีที่คุณมีไฟล์บันทึกขนาดใหญ่ (แล้ว) สิ่งนี้จะส่งผลให้การบูทช้าลง เพิ่มเติมดิสก์ (พร้อม/var/log) จะต้องติดตั้งใน modus ที่เขียนได้เพื่อทำเช่นนั้น

ในการสรุป: ไฟล์บันทึกเก่าขนาดใหญ่ซึ่งถูกตรวจสอบระหว่างการบู๊ตและการต่อท้ายข้อมูลบันทึกใหม่จะทำให้เวลาบูตช้าลง

เพื่อตรวจสอบประเภทขนาดบันทึก 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

    = การจัดเก็บข้อมูล

    ควบคุมตำแหน่งที่จะเก็บข้อมูลเจอร์นัล หนึ่งใน "ระเหย", "ถาวร", "อัตโนมัติ" และ "ไม่มี"

    หาก "เปลี่ยนแปลงได้ " ข้อมูลบันทึกรายวันจะถูกเก็บไว้ในหน่วยความจำเท่านั้นเช่นด้านล่างลำดับชั้น / run / log / journal (ซึ่งสร้างขึ้นหากจำเป็น)

    หาก " ถาวร " ข้อมูลจะถูกเก็บไว้บนดิสก์เช่นด้านล่างลำดับชั้น / var / log / journal (ซึ่งสร้างขึ้นหากจำเป็น) โดยมีทางเลือกย้อนกลับไปยัง / run / log / journal (ซึ่งสร้างขึ้นหากจำเป็น) ระหว่าง เริ่มต้นระบบและหากดิสก์ไม่สามารถเขียนได้

    " auto " คล้ายกับ "persistent" แต่ไดเร็กทอรี / var / log / journal ไม่ถูกสร้างหากจำเป็นเพื่อให้การควบคุมการมีอยู่ของมันอยู่ที่ไหนข้อมูลบันทึกไป

    " none " ปิดการเก็บข้อมูลทั้งหมดข้อมูลบันทึกที่ได้รับจะถูกทิ้ง การส่งต่อไปยังเป้าหมายอื่น ๆ เช่นคอนโซลบัฟเฟอร์บันทึกเคอร์เนลหรือซ็อกเก็ต syslog จะยังคงทำงานได้ เริ่มต้นที่ "อัตโนมัติ"

    แก้ไขไฟล์

    sudo nano /etc/systemd/journald.conf
    

    ในส่วนบันทึกประจำวัน uncomment และแก้ไข:

    Storage=auto
    SystemMaxFileSize=1G
    SystemMaxFiles=5
    

    บันทึกและรีบูต



ฉันไม่เห็นสาเหตุที่ไฟล์บันทึกขนาดใหญ่จะทำให้การบู๊ตช้าลงหรือไม่ มันล้างการเข้าสู่ระบบ / รัน / เข้าสู่ระบบ / วารสาร แต่นั่นเป็นเพียงบันทึกตั้งแต่การบูตครั้งสุดท้าย
solsTiCe

1
ฉันไม่แน่ใจแน่นอน นอกจากนี้ยังอาจเป็นการพึ่งพา (ไร้ประโยชน์) ของ systemd-user-session-flush.service บน systemd-user-session.service (seehttps: //github.com/systemd/systemd/pull/10502) อย่างไรก็ตามฉันพบว่าการ จำกัด ล็อกไฟล์ให้น้อยกว่า 1GB เพิ่มความเร็วในการบูต ฉันอ่านรหัส systemd / journal / * แต่ไม่พบว่าน่าสนใจ
abu_bua

1
อาจจะเป็นเพราะ de- / การบีบอัด (lz4)? ข้อมูลบันทึกเพิ่มเติมไม่เพียง แต่ได้รับ streamd เป็นไฟล์; มันได้รับการบันทึกรายวันและตารางแฮชเพื่อการค้นหาที่ปรับเปลี่ยนได้เร็วขึ้นวัตถุ ...
abu_bua

1
ฉันคิดว่าความคิดเห็นเกี่ยวกับวิธีที่ไฟล์เจอร์นัลและ / var / log เกี่ยวข้องกันอาจมีประโยชน์ ฉันไม่ชัดเจน แต่ดูเหมือนว่าวารสารคือการบันทึกที่ใช้งานอยู่และเมื่อมันล้างข้อมูลที่กำลังเขียนข้อมูลที่ใช้งานไปยังดิสก์ในไฟล์ / var / log ปกติ?
pbhj

คุณพูดถูก แต่ในระหว่างการบูทข้อมูลไม่สามารถเขียนลงดิสก์ได้เนื่องจากต้องติดตั้งดิสก์ก่อน
abu_bua

3

ตามที่โพสต์นี้จากหน้าแรกของนักพัฒนา systemdคุณสามารถแก้ไขได้โดยการเปลี่ยนไฟล์หน่วย

ในการทำเช่นนั้นให้เปิด/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.