Başlangıç için:
df -h
df -i`df -h` boş alanı, `df -i` ise dosya sayısını gösterir. Çok sayıda küçük cache veya session dosyası inode’ları tüketebilir; bu durumda gigabaytlarca boş alan görünse bile yeni dosya oluşturulamaz.
Kök dizinde en fazla yer kaplayan klasörleri görmek için:
sudo du -xhd1 / | sort -h
sudo du -xhd1 /var | sort -hBuradaki `-x` başka bağlı disklerin hesaba katılmasını engeller. Büyük tekil dosyaları bulmak için de şu komut kullanılabilir:
sudo find / -xdev -type f -size +500M -printf '%s %p\n' 2>/dev/null | sort -nEn sık karşılaştığım alan tüketicileri:
- `/var/log` altında büyüyen uygulama logları
- Docker image, volume ve build cache dosyaları
- Eski kernel paketleri
- `/tmp` altında unutulan arşivler
- Web uygulamasının upload veya backup klasörü
- MySQL binary logları
- Silinmiş olmasına rağmen çalışan süreç tarafından açık tutulan dosyalar
Son madde özellikle şaşırtıcıdır. Dosyayı silersiniz ama süreç kapanmadığı için alan geri gelmez:
sudo lsof +L1Listede büyük bir log görünüyorsa ilgili servisi kontrollü yeniden başlatmak alanı serbest bırakabilir. Journal logları aşırı büyüdüyse önce kullanım miktarına bakıp süreye göre daraltılabilir:
journalctl --disk-usage
sudo journalctl --vacuum-time=14dDocker kullanıyorsanız `docker system df` ile neyin yer tuttuğunu görün. `docker system prune` komutunu ezbere çalıştırmayın; kullanılmayan ağları, image’ları ve bazı seçeneklerle volume’leri silebilir. Önce yedek ve bağımlılık kontrolü şart.
Temizlikten sonra logrotate ayarlarını, uygulama log seviyesini ve disk alarmını düzenlemek kalıcı çözüm oluyor. Ben yüzde 80 ve 90 seviyelerinde iki ayrı uyarı kurmayı tercih ediyorum.
Alanı geri kazandıktan sonra aynı olayın neden tekrarlandığını bulmak gerekiyor. Uygulama loguna boyut sınırı koymak, Docker log driver ayarlarını düzenlemek ve yedek dosyalarını yaşam döngüsü kuralıyla temizlemek kalıcı çözüm sağlar. Ben disk alarmına yalnızca yüzde değil, kalan gigabayt eşiği de ekliyorum; küçük ve büyük disklerde aynı yüzde farklı aciliyet taşıyabiliyor.
Sizde diski en çok hangi klasör doldurmuştu? Özellikle Docker veya MySQL kaynaklıysa kullandığınız güvenli temizlik yöntemini paylaşır mısınız?
Cevaplar
0 yanıt