Πώς να διορθώσετε ένα πλήρες ημερολόγιο systemd
11 λεπτά ανάγνωσης - 20 Μαΐου 2026

Διαγνώστε και διορθώστε ένα πλήρες 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) | Αποκλειστικός διακομιστής | Τι κάνει |
|---|---|---|---|
| SystemMaxUse | 500M έως 1G | 2G έως 5G | Ανώτατο όριο συνολικού μεγέθους ημερολογίου |
| SystemKeepFree | 1G | 10% του δίσκου | Διατηρούμενος ελεύθερος χώρος για το λειτουργικό σύστημα |
| MaxRetentionSec | 7 έως 14 ημέρες | 30 έως 90 ημέρες | Αυτόματη διαγραφή αρχείων καταγραφής παλαιότερων από αυτό |
| Μέγιστο μέγεθος αρχείου συστήματος | 20M έως 50M | 100M | Μέγιστο μέγεθος ανά αρχείο ημερολογίου |
Ρύθμιση και των δύο 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 παρέχουν την απόδοση εισόδου/εξόδου δίσκου και τον αποθηκευτικό χώρο που απαιτούνται για τα φορτία εργασίας καταγραφής παραγωγής.

Διαδικασίες ζόμπι στο Linux: Αποτρέψτε, βρείτε, αφαιρέστε, αποτρέψτε
Μάθετε πώς να εντοπίζετε, να αφαιρείτε και να αποτρέπετε διεργασίες ζόμπι στο Linux. Εντολές, διορθώσεις κώδικα και συμβουλές παρακολούθησης για διαχειριστές διακομιστών.
15 λεπτά ανάγνωσης - 19 Μαΐου 2026
Λίστα ελέγχου σκλήρυνσης διακομιστών Linux
15 λεπτά ανάγνωσης - 8 Μαΐου 2026

Έχετε ερωτήσεις ή χρειάζεστε μια προσαρμοσμένη λύση
Ευέλικτες επιλογές
Παγκόσμια εμβέλεια
Άμεση ανάπτυξη
Ευέλικτες επιλογές
Παγκόσμια εμβέλεια
Άμεση ανάπτυξη