Πώς να διορθώσετε ένα πλήρες ημερολόγιο systemd

11 λεπτά ανάγνωσης - 20 Μαΐου 2026

hero section cover
Πίνακας περιεχομένων
  • Πώς να διορθώσετε ένα γεμάτο systemd Journal
  • Διάγνωση του προβλήματος
  • Ασφαλής εκκαθάριση αρχείων καταγραφής
  • Ρύθμιση ορίων μεγέθους του Journald
  • Αυτοματοποίηση της συντήρησης αρχείων καταγραφής
  • Συμπέρασμα
Κοινοποίηση

Διαγνώστε και διορθώστε ένα πλήρες journal του systemd με εντολές vacuum, όρια μεγέθους του journald.conf, αυτοματοποιημένους χρονομετρητές καθαρισμού και προώθηση αρχείων καταγραφής.

Πώς να διορθώσετε ένα γεμάτο systemd Journal

Το systemd journal αποθηκεύει κάθε μήνυμα καταγραφής που παράγει ο διακομιστής σας και, σε ένα VPS με μικρό διαμέρισμα root, μπορεί να καταναλώσει αθόρυβα τον διαθέσιμο χώρο στο δίσκο σας. Όταν συμβεί αυτό, οι υπηρεσίες δεν ξεκινούν, οι εγγραφές σταματούν και χάνετε τα διαγνωστικά στοιχεία που χρειάζεστε για να καταλάβετε τι πήγε στραβά. Αυτός ο οδηγός καλύπτει τον τρόπο διάγνωσης του προβλήματος, την άμεση απελευθέρωση χώρου και τη ρύθμιση του journald ώστε να μην ξανασυμβεί.


 

Διάγνωση του προβλήματος

Ξεκινήστε ελέγχοντας πόσο χώρο καταλαμβάνει το ημερολόγιο:

journalctl --disk-usage

Αυτό αναφέρει το συνολικό μέγεθος όλων των ενεργών και αρχειοθετημένων αρχείων ημερολογίου. Συγκρίνετε το με τον διαθέσιμο χώρο στο δίσκο σας με df -h. Σε ένα root partition 20 GB, ακόμη και 2 GB αρχείων καταγραφής αντιπροσωπεύουν πάνω από το 10% του συνολικού δίσκου, κάτι που είναι αρκετό για να προκαλέσει προβλήματα.

Στη συνέχεια, ανακαλύψτε ποιες υπηρεσίες δημιουργούν τον περισσότερο θόρυβο. Αυτή η εντολή μιας γραμμής κατατάσσει τις 10 κορυφαίες πηγές αρχείων καταγραφής από τις τελευταίες 24 ώρες:

journalctl --since "24 hours ago" | awk '{print $5}' | cut -d'[' -f1 | sort | uniq -c | sort -rn | head -10

Φιλτράρετε ειδικά για σφάλματα με journalctl -p err -b για να δείτε αν μια μεμονωμένη υπηρεσία έχει κολλήσει σε έναν βρόχο σφαλμάτων και πλημμυρίζει το ημερολόγιο. Μπορείτε επίσης να ελέγξετε αν το journald περιορίζει τον ρυθμό οποιωνδήποτε υπηρεσιών:

journalctl -u systemd-journald | grep -i "suppressed"

Τα μηνύματα καταστολής σημαίνουν ότι μια υπηρεσία ξεπέρασε το προεπιλεγμένο όριο των 10.000 καταχωρήσεων εντός 30 δευτερολέπτων. Αυτή είναι η αιτία του προβλήματος.

Μερικά πράγματα είναι ιδιαίτερα συνηθισμένα σε περιπτώσεις VPS. Εάν Storage=auto έχει οριστεί και /var/log/journal/ υπάρχει, το journald χρησιμοποιεί μόνιμη αποθήκευση με προεπιλεγμένο όριο περίπου 4 GB. Σε ένα μικρό διαμέρισμα root, αυτό γεμίζει γρήγορα. Οι μη καθαρές τερματισμοί μπορούν επίσης να αφήσουν κατεστραμμένα αρχεία ημερολογίου με κατάληξη .journal~ επέκταση. Αυτά τα αρχεία δεν εναλλάσσονται κανονικά και συνεχίζουν να καταλαμβάνουν χώρο.

Ασφαλής εκκαθάριση αρχείων καταγραφής

Πριν διαγράψετε οτιδήποτε, περιστρέψτε το ενεργό αρχείο ημερολογίου ώστε να διατηρηθούν τα τρέχοντα αρχεία καταγραφής:

journalctl --rotate

Στη συνέχεια, διαγράψτε τα αρχειοθετημένα αρχεία καταγραφής. Μπορείτε να τα επιλέξετε με βάση την ηλικία, το μέγεθος ή τον αριθμό των αρχείων:

sudo journalctl --vacuum-time=1d
sudo journalctl --vacuum-size=100M
sudo journalctl --vacuum-files=5

Η πρώτη επιλογή διαγράφει τα αρχεία καταγραφής που είναι παλαιότερα από 24 ώρες. Η δεύτερη μειώνει το συνολικό μέγεθος του αρχείου καταγραφής στα 100 MB. Η τρίτη διατηρεί μόνο τα πέντε πιο πρόσφατα αρχεία που έχουν αρχειοθετηθεί. Επιλέξτε ό,τι ταιριάζει στην περίπτωσή σας.

Εάν ο δίσκος είναι εντελώς γεμάτος και οι εντολές journalctl δεν ανταποκρίνονται, ίσως χρειαστεί να διαγράψετε τα αρχεία ημερολογίου χειροκίνητα:

sudo rm -rf /var/log/journal/*
sudo systemd-tmpfiles --create --prefix /var/log/journal

Αυτή είναι η τελευταία λύση. Διαγράφει όλα τα αποθηκευμένα αρχεία καταγραφής και δημιουργεί εκ νέου τον κατάλογο με τα σωστά δικαιώματα. Μετά από οποιαδήποτε εκκαθάριση, επανεκκινήστε το δαίμονα και επαληθεύστε:

sudo systemctl restart systemd-journald
journalctl --disk-usage

Ρύθμιση ορίων μεγέθους του Journald

Οι προεπιλεγμένες ρυθμίσεις του journald είναι γενναιόδωρες. Σε ένα VPS, είναι υπερβολικά γενναιόδωρες. Επεξεργαστείτε τη διαμόρφωση για να ορίσετε αυστηρά όρια στην αποθήκευση αρχείων καταγραφής. Δημιουργήστε ένα αρχείο παράκαμψης αντί να επεξεργαστείτε απευθείας την κύρια διαμόρφωση, ώστε οι αλλαγές σας να διατηρηθούν μετά από ενημερώσεις πακέτων:

sudo mkdir -p /etc/systemd/journald.conf.d/
sudo nano /etc/systemd/journald.conf.d/size-limits.conf

Οι βασικές οδηγίες:

ΠαράμετροςVPS (δίσκος 20-40 GB)Αποκλειστικός διακομιστήςΤι κάνει
SystemMaxUse500M έως 1G2G έως 5GΑνώτατο όριο συνολικού μεγέθους ημερολογίου
SystemKeepFree1G10% του δίσκουΔιατηρούμενος ελεύθερος χώρος για το λειτουργικό σύστημα
MaxRetentionSec7 έως 14 ημέρες30 έως 90 ημέρεςΑυτόματη διαγραφή αρχείων καταγραφής παλαιότερων από αυτό
Μέγιστο μέγεθος αρχείου συστήματος20M έως 50M100MΜέγιστο μέγεθος ανά αρχείο ημερολογίου

Ρύθμιση και των δύο SystemMaxUse και SystemKeepFree σας παρέχει μια προσέγγιση «ζώνη και τιράντες»: τα αρχεία καταγραφής περιορίζονται σε ένα σταθερό μέγεθος και το σύστημα διαθέτει πάντα περιθώριο, ανεξάρτητα από το τι άλλο υπάρχει στον δίσκο.

Μόνιμη έναντι πτητικής αποθήκευσης

Η Storage= ορίζει πού πηγαίνουν τα αρχεία καταγραφής. Ορίστε Storage=persistent για να γράφονται τα αρχεία καταγραφής /var/log/journal/ στον δίσκο. Αυτό είναι το επιθυμητό για διακομιστές παραγωγής, επειδή τα αρχεία καταγραφής επιβιώνουν των επανεκκινήσεων και μπορείτε να διερευνήσετε σφάλματα μετά το γεγονός. Εάν ο κατάλογος δεν υπάρχει, δημιουργήστε τον:

sudo mkdir -p /var/log/journal

Η εναλλακτική επιλογή, Storage=volatile, διατηρεί τα αρχεία καταγραφής στη μνήμη RAM /run/log/journal/. Τα αρχεία καταγραφής εξαφανίζονται κατά την επανεκκίνηση. Αυτό έχει νόημα για εφήμερα κοντέινερ ή διακομιστές που προωθούν όλα τα αρχεία καταγραφής σε ένα εξωτερικό σύστημα.

Απενεργοποίηση συμπίεσης σε διακομιστές υψηλής κυκλοφορίας

Το Journald συμπιέζει αντικείμενα δεδομένων μεγαλύτερα από 512 byte από προεπιλογή. Σε διακομιστές που χειρίζονται μεγάλο όγκο καταγραφών, αυτό προσθέτει επιβάρυνση στην CPU. Ορίστε Compress=no αν προωθείτε τα αρχεία καταγραφής εξωτερικά και δεν χρειάζεται να ελαχιστοποιήσετε τον τοπικό χώρο αποθήκευσης. Ρυθμίστε επίσης ForwardToConsole=no στην παραγωγή. Η προώθηση της κονσόλας είναι σύγχρονη και μια εικονική σειριακή κονσόλα που έχει κολλήσει μπορεί να μπλοκάρει εντελώς το δαίμονα journald.

Μετά από οποιαδήποτε αλλαγή στη διαμόρφωση, επανεκκινήστε την υπηρεσία:

sudo systemctl restart systemd-journald

Αυτοματοποίηση της συντήρησης αρχείων καταγραφής

Ο χειροκίνητος καθαρισμός δεν είναι επεκτάσιμος. Δημιουργήστε ένα χρονόμετρο systemd για να καθαρίζετε τα αρχεία καταγραφής σύμφωνα με ένα πρόγραμμα. Ρυθμίστε μια μονάδα υπηρεσίας στο /etc/systemd/system/journal-vacuum.service:

[Unit]
Description=Vacuum old journal logs
 
[Service]
Type=oneshot
ExecStart=/usr/bin/journalctl --vacuum-time=7d --vacuum-size=500M

Στη συνέχεια, δημιουργήστε έναν αντίστοιχο χρονοδιακόπτη στο /etc/systemd/system/journal-vacuum.timer:

[Unit]
Description=Weekly journal vacuum
 
[Timer]
OnCalendar=Sun 02:00
Persistent=true
 
[Install]
WantedBy=timers.target

Ενεργοποιήστε τον με sudo systemctl enable --now journal-vacuum.timer. Ο χρονοδιακόπτης εκτελείται κάθε Κυριακή στις 2 π.μ. και εφαρμόζει διατήρηση βάσει χρόνου και μεγέθους σε ένα πέρασμα.

Ένα πράγμα που ο χρονοδιακόπτης δεν θα εντοπίσει: κατεστραμμένα αρχεία ημερολογίου. Μετά από ένα μη καθαρό κλείσιμο, το journald θέτει σε καραντίνα τα κατεστραμμένα αρχεία προσθέτοντας ένα ~ στο όνομα του αρχείου. Αυτά τα .journal~ αρχεία εξακολουθούν να υπολογίζονται στη χρήση του δίσκου, αλλά δεν θα καθαρίζονται αυτόματα. Ελέγχετε περιοδικά και αφαιρείτε τα παλιά:

find /var/log/journal/ -name "*.journal~" -mtime +30 -delete

Προώθηση αρχείων καταγραφής εξωτερικά

Για διακομιστές όπου χρειάζεστε μακροπρόθεσμη διατήρηση χωρίς να αυξάνεται ο τοπικός χώρος αποθήκευσης, προωθήστε τα αρχεία καταγραφής σε ένα κεντρικό σύστημα. Η απλούστερη προσέγγιση είναι η ενεργοποίηση της προώθησης syslog στο journald.conf:

ForwardToSyslog=yes

Για δομημένα αρχεία καταγραφής με πλήρη μεταδεδομένα (PID, UID, ονόματα μονάδων), χρησιμοποιήστε systemd-journal-remote για να στέλνετε καταχωρήσεις σε μορφή JSON σε μια πλατφόρμα διαχείρισης αρχείων καταγραφής. Η εξωτερική αποθήκευση αρχείων καταγραφής προστατεύει επίσης το ιστορικό ελέγχου σας σε περίπτωση βλάβης του τοπικού δίσκου ή παραβίασης του διακομιστή.

Συμπέρασμα

Ένα πλήρες ημερολόγιο systemd είναι εύκολο να διορθωθεί και να προληφθεί. Τα βασικά βήματα:

  • Ελέγξτε τη χρήση με journalctl --disk-usage και εντοπίστε τις υπηρεσίες που δημιουργούν θόρυβο.
  • Εκκαθαρίστε αμέσως χώρο με journalctl --rotate ακολουθούμενο από --vacuum-size ή --vacuum-time.
  • Ορίστε ρητά όρια μεγέθους σε ένα αρχείο παράκαμψης του journald.conf.
  • Αυτοματοποιήστε τον καθαρισμό με ένα χρονόμετρο systemd.
  • Προωθήστε τα αρχεία καταγραφής εξωτερικά για μακροπρόθεσμη διατήρηση.

Τα πακέτα VPS και αποκλειστικών διακομιστών της FDC παρέχουν την απόδοση εισόδου/εξόδου δίσκου και τον αποθηκευτικό χώρο που απαιτούνται για τα φορτία εργασίας καταγραφής παραγωγής.

Blog

Προτεινόμενα αυτή την εβδομάδα

Περισσότερα άρθρα
Διαδικασίες ζόμπι στο Linux: Αποτρέψτε, βρείτε, αφαιρέστε, αποτρέψτε

Διαδικασίες ζόμπι στο Linux: Αποτρέψτε, βρείτε, αφαιρέστε, αποτρέψτε

Μάθετε πώς να εντοπίζετε, να αφαιρείτε και να αποτρέπετε διεργασίες ζόμπι στο Linux. Εντολές, διορθώσεις κώδικα και συμβουλές παρακολούθησης για διαχειριστές διακομιστών.

15 λεπτά ανάγνωσης - 19 Μαΐου 2026

Λίστα ελέγχου σκλήρυνσης διακομιστών Linux

15 λεπτά ανάγνωσης - 8 Μαΐου 2026

Περισσότερα άρθρα
background image

Έχετε ερωτήσεις ή χρειάζεστε μια προσαρμοσμένη λύση

icon

Ευέλικτες επιλογές

icon

Παγκόσμια εμβέλεια

icon

Άμεση ανάπτυξη

icon

Ευέλικτες επιλογές

icon

Παγκόσμια εμβέλεια

icon

Άμεση ανάπτυξη