# Linux sunucuda disk doldu: alanı neyin kapladığını bulun

Dolu bir diskin genellikle bir ya da iki belirgin nedeni vardır. Yukarıdan aşağıya doğru ilerleyin, silmeden önce okuyun ve hangi servise ait olduğunu bilmiyorsanız /var/lib altındaki dosyaları asla elle silmeyin.

## 1. Hangi dosya sisteminin dolu olduğunu doğrulayın

df -h komutunu çalıştırın. Use% ve Mounted on sütunlarına bakın: dolu olan dosya sistemi / olabileceği gibi ayrı bir /var, /home veya /data bağlama noktası da olabilir; yanlış olanı temizlemek hiçbir şeyi değiştirmez.
Ayrıca df -i komutunu çalıştırın. Bir dosya sisteminde boş alan olsa da boş inode kalmamış olabilir; bu, milyonlarca küçük dosya (oturumlar, posta kuyrukları, önbellek dosyaları) biriktiğinde olur. IUse% değeri %100'e yakınsa, birkaç büyük dosyayı değil çok sayıda küçük dosyayı arıyorsunuz demektir.

## 2. En büyük dizinleri bulun

sudo du -xh --max-depth=1 / | sort -h komutunu çalıştırın ve son satırları okuyun. -x seçeneği tek bir dosya sisteminde kalır; böylece bağlanmış diskler ve sanal dosya sistemleri sonucu bozmaz. En büyük dizinin içinde de tekrarlayın, örneğin sudo du -xh --max-depth=1 /var | sort -h.
ncdu kuruluysa (Debian ve Ubuntu'da sudo apt install ncdu), sudo ncdu -x / aynı verilerin içinde etkileşimli olarak gezinmenizi sağlar.

## 3. Hâlâ açık olan silinmiş dosyaları kontrol edin

du, df'den çok daha az gösteriyorsa, bir işlem silinmiş bir dosyayı (çoğunlukla büyük bir günlük dosyasını) hâlâ açık tutuyor olabilir. sudo lsof +L1, bağlantı sayısı sıfır olan açık dosyaları listeler. Alan, o işlem dosyayı kapattığında geri döner; bu da genellikle dosyanın sahibi olan servisi yeniden başlatmak demektir. Bunu istek yoğunluğunun tepe noktasında değil, sakin bir anda yapın.

## 4. Sık rastlanan nedenleri gözden geçirin

Günlükler: /var/log dizinine bakın ve journalctl --disk-usage ile journal'ı kontrol edin. Boyut büyükse journald boyutunu sınırlama rehberimize bakın.
Paketler: sudo apt clean indirilen paket dosyalarını kaldırır; sudo apt autoremove artık gerekmeyen paketleri ve eski çekirdekleri listeler ve onay vermeden önce neleri kaldıracağını gösterir. Çalışan çekirdeği ve bir önceki sürümü tutun.
Docker: docker system df imajları, kapsayıcıları, birimleri ve derleme önbelleğini gösterir. docker system prune durdurulmuş kapsayıcıları, kullanılmayan ağları ve etiketsiz imajları kaldırır; --volumes eklemediğiniz sürece birimleri kaldırmaz, bu yüzden yanıt vermeden önce istemi okuyun.
Snap: snap list --all, devre dışı bırakılmış snap'lerin eski revizyonlarını gösterir; bunlar snap remove NAME --revision=NUMBER ile tek tek kaldırılabilir.

## 5. Alan açtıktan sonra

df -h komutunu yeniden çalıştırın ve disk dolduğu için durmuş servislerin çalıştığından emin olun (systemctl --failed). Disk dolulğuna takılan bir veritabanına güvenmeden önce yeniden başlatma veya denetim gerekebilir.
Ardından tekrarlanmaması için bir sınır koyun: günlük döndürme (log rotation), journald sınırı ve disk %90'a ulaşmadan önce bir uyarı.

## FAQ

**/var/log içindeki dosyaları silmek güvenli mi?**

Döndürülmüş ve sıkıştırılmış günlükler (örneğin syslog.1 veya .gz dosyaları) artık ihtiyacınız kalmadığında genellikle silinebilir. Çalışan bir servisin güncel günlük dosyasını silmeyin; dikkatle sıfırlayın veya logrotate'in halletmesine izin verin ve önce servisin ne beklediğini kontrol edin.

**df neden dolu disk gösteriyor ama du toplamı tutmuyor?**

Genellikle silinmiş bir dosya hâlâ çalışan bir işlem tarafından açık tutuluyordur (bkz. lsof +L1) ya da rakamlar farklı dosya sistemlerinden gelir. Aynı bağlama noktası için du -x kullanın ve df ile karşılaştırın.

**Üretim sunucusunda docker system prune çalıştırmalı mıyım?**

Yalnızca docker system df çalıştırıp neyin kullanılmadığına baktıktan sonra. Yine de başlatmayı planladığınız imajları kaldırabilir. Birimler varsayılan olarak korunur, ancak önemli olan her şeyin yedeği olduğundan emin olun.

Source: https://raincleaner.eu/tr/guides/linux-server-disk-full-find-what-is-using-space