Konuyu Açan
#1
Ticari olmayan bir sunucu ya da kişisel makinizde disk kullanımı hızla artabilir; özellikle /tmp, /var/tmp ve benzeri geçici alanlar, zamanla bozulmuş izinler, kalıntı dosyalar veya eski sürümlerin sıkıştırılmış artıklarıyla karmaşık hale gelebilir. Bu nedenle systemd-tmpfiles aracı, temizliği ve standardize kalıpları sürdürmeyi sağlayan temel bir araç olarak öne çıkar. Aşağıda, günlük sunucu bakımında kullanabileceğiniz pratik yaklaşımı ve dikkat edilmesi gereken noktaları paylaşacağım.
1) Temel kavramlar ve yapı
2) Pratik kurulum ve güvenliğin temelleri
3) Örnek bir yapılandırma
4) İzleme ve sorun giderme
Sonuç olarak, systemd-tmpfiles ile geçici dosyaların yönetimini otomatikleştirmek, disk kullanımını azaltır, güvenliği artırır ve sistem temizliğini standardize eder. Kendi ortamınıza uygun bir yapılandırmayı adım adım test ederek uygulanmasını öneriyorum. Bu yaklaşımı kendi sunucularınızda nasıl uyguluyorsunuz veya karşılaştığınız özel bir senaryo var mı?
1) Temel kavramlar ve yapı
- Amaç: Geçici dosyaları belirli aralıklarla temizlemek, gerekli dosyaları yanlışlıkla silmeyi önlemek.
- Yerleşim: /usr/lib/tmpfiles.d ile sistem çapında kurallar, /etc/tmpfiles.d ile yöneticiye özel kurallar, /run/tmpfiles.d ile çalışma anında geçici kurallar bulunur.
- Yapı: Kural satırları genelde şu biçimde olur: Target Repository KullanımZamanlama KuralAdı Permisyonlar Uzaklık/ Amaç. Örneğin: x /tmp 1777 10d 1d
- Komutlar: systemd-tmpfiles --create, --clean, --remove ile işlemler tetiklenir. Ayrıca günlük bir cron yerine timer tabanlı yaklaşım daha güvenli ve entegre çalışır.
2) Pratik kurulum ve güvenliğin temelleri
- Varsayılan kuralların incelenmesi: /usr/lib/tmpfiles.d/*.conf dosyalarını gözden geçirerek hangi klasörlerin temizleneceğini ve hangi dosyaların korunacağını anlayın.
- Yönetici özel kurallar: /etc/tmpfiles.d altında kendi temizleme politikalarınızı tanımlayın. Burada özellikle /var/tmp ve /tmp için günlük veya haftalık temizleme periyotları belirlemek faydalı olur.
- Zamanlama: systemd günlük.timer ile periyodik temizliği çalıştırabilirsiniz. Örneğin günlük olarak tmpfiles --clean çalıştıran bir timer oluşturmak, temizliğin düzenli ve sistem dinamiklerine uygun kalmasını sağlar.
- Güvenlik ve izinler: Geçici dizinlerdeki dosyaların doğru izinlerle saklandığından emin olun. Özellikle eşzamanlı erişimde kilitlenme sorunlarını engellemek adına dosya sahiplik ve modları doğru tutulmalıdır.
3) Örnek bir yapılandırma
- /etc/tmpfiles.d/my-temp-clean.conf içeriği (basit ve güvenli bir örnek):
KOD
123456# Temizleme politikası: /tmp ve /var/tmp içindeki 10 günlükten eski tüm dosyaları sil
x /tmp 1777 - - -
x /var/tmp 1777 - - -
[b]10 günlükten eski günlükler ya da sıkıştırılmış arşivler için ek olarak:[/b]
x /tmp/* - - - 10d
x /var/tmp/* - - - 20d
- Bu kurallar, gerekli tüm dosyaların yok edilmesini engellemez; belirli dizinler için istisna eklemek veya özel uygulama dosyalarını korumak adına maddi olarak ince ayar yapılabilir.
4) İzleme ve sorun giderme
- Günlükler: journalctl -u systemd-tmpfiles-clean.service veya ilgili tmpfiles hizmetinin loglarını kontrol etmek, hangi dosyaların silindiğini anlamak için işe yarar.
- Hata senaryoları: Yanlış yapılandırma durumunda kritik uygulama dizinlerinde dosya kaybı yaşanabilir. Bu yüzden test ortamında yeni kurallar üzerinde önce dry-run benzetimini veya benzeri güvenli test adımlarını uygulayın.
- Dikkat edilecek noktalar: Özel uygulamalar tarafından /tmp’ye yazılan ardışık süreçler (ör. in-memory cache’ler) için uygulama katmanında temizleme politikasıyla çakışmamak gerekir.
Sonuç olarak, systemd-tmpfiles ile geçici dosyaların yönetimini otomatikleştirmek, disk kullanımını azaltır, güvenliği artırır ve sistem temizliğini standardize eder. Kendi ortamınıza uygun bir yapılandırmayı adım adım test ederek uygulanmasını öneriyorum. Bu yaklaşımı kendi sunucularınızda nasıl uyguluyorsunuz veya karşılaştığınız özel bir senaryo var mı?
