Systemd journal'ın büyümesi çoğu zaman “journalctl çok yer kaplıyor” diye fark edilir; alanı kullanan araç journalctl değil, günlükleri saklayan systemd-journald hizmetidir. Bir defalık temizlik geçici rahatlama sağlar. Kalıcı çözüm için önce kullanımın nerede olduğunu ölçmek, sonra saklama politikasına sınır koymak gerekir.
Journal kullanımını kendi aracıyla ölçün
sudo journalctl --disk-usage
sudo du -sh /var/log/journal /run/log/journal 2>/dev/null
df -hT /var/log /run
/var/log/journal kalıcı, /run/log/journal geçici saklama alanıdır. Storage=auto ayarında kalıcı dizinin varlığı davranışı etkiler. Yalnızca du çıktısına bakmak yerine journalctl --disk-usage sonucunu esas alın.
Hangi hizmetin günlük ürettiğini bulun
sudo journalctl --since '-1 hour' -o json \
| grep -o '"_SYSTEMD_UNIT"[^,]*' \
| sort | uniq -c | sort -nr | head
Bu hızlı örnek yalnızca son saatteki birim yoğunluğunu yaklaşık gösterir. Sürekli tekrar eden bir uygulama hatası varsa yalnızca saklama alanını küçültmek belirtinin üzerini örter. İlgili servisin günlüğünü ayrıca inceleyin:
sudo journalctl -u example.service --since '-30 min' --no-pager
Temizlikten önce journal bütünlüğünü kontrol edin
sudo journalctl --verify
Bozuk günlük dosyaları görülüyorsa önce disk, dosya sistemi ve beklenmeyen kapanma belirtilerini araştırın. Temizlik komutunu bir dosya sistemi arızasının çözümü gibi kullanmayın.
Arşiv günlüklerini kontrollü küçültün
sudo journalctl --rotate
sudo journalctl --vacuum-size=500M
sudo journalctl --disk-usage
--vacuum-size yalnızca arşivlenmiş journal dosyalarını temizler. Aktif dosyaların önce döndürülmesi hedefe yaklaşmayı kolaylaştırır. Boyut yerine süre politikası gerekiyorsa örneğin --vacuum-time=14d kullanılabilir. İki yöntemi düşünmeden üst üste uygulamak, olay incelemesi için gerekli kayıtları silebilir; saklama gereksinimini önceden belirleyin.
Kalıcı sınırı drop-in dosyasında tanımlayın
sudo mkdir -p /etc/systemd/journald.conf.d
sudoedit /etc/systemd/journald.conf.d/90-size-limit.conf
[Journal]
SystemMaxUse=1G
SystemKeepFree=2G
RuntimeMaxUse=256M
MaxRetentionSec=30day
SystemMaxUse kalıcı journal için üst hedefi, SystemKeepFree dosya sisteminde bırakılacak alanı belirler. RuntimeMaxUse geçici journal içindir. Değerleri örnek olarak kopyalamak yerine disk kapasitesi, olay inceleme süresi ve merkezi log sisteminin bulunup bulunmamasına göre seçin.
Etkin yapılandırmayı ve sonucu doğrulayın
systemd-analyze cat-config systemd/journald.conf
sudo systemctl restart systemd-journald
systemctl status systemd-journald --no-pager
sudo journalctl --disk-usage
systemd-analyze cat-config ana dosya ile drop-in dosyalarının birleşmiş görünümünü verir. Ayarın yazılmış olması, yanlış bölüm veya dosya adı nedeniyle etkin olduğu anlamına gelmez. Restart sonrasında yeni bir test kaydı üretip okuyun:
logger 'journald-limit-test'
journalctl -t logger -n 5 --no-pager
Merkezi log sunucusuna aktarım yapıyorsanız yerel saklama süresini azaltabilirsiniz; ancak ağ kesintisinde kayıp toleransını hesaba katın. Kısa saklama sınırı disk taşmasını azaltırken geçmiş olay analizinin kapsamını da daraltır.
Teknik başvuru: journald.conf ve journalctl kılavuzları.