Sunucu yönetiminde veya geliştirme ortamlarında en sık karşılaşılan krizlerden biri “No space left on device” (Diskte boş yer kalmadı) hatasıdır. Doğru araçlarla yapılan düzenli bir Linux disk alanı analizi, hem beklenmedik sistem kesintilerini önler hem de devasa log dosyalarının veya unutulmuş yedeklerin diski kitlemesini engeller.
Bu rehberde; dosya sistemi genel durumunu gösteren df, dizin bazlı derinlemesine yerleşim raporlayan du ve terminalde görsel ncurses arayüzüyle interaktif temizlik sunan ncdu araçlarını inceleyeceğiz.
df Komutu: Dosya Sistemi Seviyesinde Doluluk
df (disk free), bağlı (mounted) olan tüm dosya sistemlerinin toplam boyutunu, kullanılan ve boşta kalan alan miktarını raporlar.
En Çok Kullanılan df Parametreleri
# İnsan tarafından okunabilir (Human-Readable: GB, MB) formatta gösterim
df -h
# Dosya sistemlerinin tiplerini (ext4, btrfs, tmpfs) göster
df -hT
# Sadece gerçek fiziksel diskleri filtrele (tmpfs, devtmpfs gibi sanal sistemleri gizle)
df -h -x tmpfs -x devtmpfs
Örnek çıktı:
Filesystem Type Size Used Avail Use% Mounted on
/dev/nvme0n1p2 ext4 468G 380G 65G 86% /
/dev/nvme0n1p1 vfat 511M 6.1M 505M 2% /boot/efi
/dev/sda1 ext4 1.8T 1.2T 520G 70% /mnt/data
Gizli Tehlike: Inode Tükenmesi (df -i)
Bazen diskte megabaytlarca boş alan görünmesine rağmen sistem yine de “No space left on device” hatası verebilir. Bunun sebebi, diskteki Inode (dosya dizin indeksi) sınırının dolmasıdır (örneğin milyonlarca küçük oturum dosyası veya geçici e-posta kuyruğu biriktiğinde).
# Inode kullanım durumunu kontrol et
df -ih
Eğer IUse% değeri %100’e yakınsa, dosya boyutundan bağımsız olarak Inode tükenmesi sorunu yaşıyorsunuz demektir.
du Komutu: Dizin ve Dosya Boyutu Analizi
du (disk usage), belirttiğiniz dizin ağacında hangi klasörün ne kadar yer kapladığını hesaplar.
1. Dizin Bazlı Derinlik Sınırlama (--max-depth)
En yaygın hata du / komutunu doğrudan çalıştırmaktır; bu ekrana yüzbinlerce satır basar. Bunun yerine derinliği 1 ile sınırlandırmak gerekir:
# Bulunduğunuz dizindeki birinci seviye klasörlerin boyutlarını listele
du -h --max-depth=1 .
# Belirli bir dizinde (örn: /var) en çok yer kaplayanları sırala
sudo du -h --max-depth=1 /var 2>/dev/null | sort -hr
Not:
2>/dev/nullyönlendirmesi, izin verilmeyen sistem dizinlerindeki “Permission denied” hata mesajlarını bastırarak temiz çıktı almanızı sağlar.
2. Diskteki En Büyük Dosyaları Bulmak
find rehberimiz ve awk kılavuzumuz ile birleştirerek diskte 500 MB’tan büyük dosyaları bulabilirsiniz:
# 500 MB'tan büyük tüm dosyaları bularak boyutuna göre sırala
sudo find / -type f -size +500M -exec du -h {} + 2>/dev/null | sort -hr | head -n 10
ncdu: Terminalde İnteraktif ve Görsel Disk Analizi
ncdu (NCurses Disk Usage), du komutunun metin arayüzlü (TUI) halidir. Klasörler arasında ok tuşlarıyla gezinebilir, boyutları grafiksel çubuklar halinde görebilir ve tek tuşla dosya silebilirsiniz.
Kurulum
# Debian / Ubuntu
sudo apt install ncdu
# CentOS / RHEL / AlmaLinux
sudo dnf install ncdu
# Arch Linux
sudo pacman -S ncdu
ncdu Kullanımı
# Belirli bir dizini tara
ncdu /var/log
# Diğer disk bölümlerine atlamadan sadece kök bölümü tara (-x: cross-filesystem engelleme)
sudo ncdu -x /
ncdu Klavye Kısayolları
| Tuş | İşlev |
|---|---|
Yukarı / Aşağı Ok | Dizin veya dosyalar arasında gezinme |
Enter veya Sağ Ok | Seçili dizinin içine girme |
Sol Ok | Bir üst dizine geri çıkma |
d | Seçili dosya veya klasörü silme (Onay ister) |
g | Yüzdelik kullanım çubuğunu açma/kapama |
n | İsme göre sıralama |
s | Boyuta göre sıralama |
q | ncdu’dan çıkış |
Disk Temizliği İçin Pratik Adımlar
Diskiniz dolduğunda güvenle temizleyebileceğiniz alanlar şunlardır:
1. Sistem Loglarını Temizlemek (journald)
Systemd logları aylarca birikerek onlarca gigabayt yer kaplayabilir:
# Mevcut log boyutunu kontrol et
journalctl --disk-usage
# Logları en fazla 500 MB ile sınırla
sudo journalctl --vacuum-size=500M
# 7 günden eski tüm logları sil
sudo journalctl --vacuum-time=7d
2. Paket Yöneticisi Önbelleğini Boşaltmak
APT veya DNF indirilen .deb / .rpm paketlerini /var/cache altında saklar:
# Ubuntu / Debian önbellek temizliği
sudo apt clean
sudo apt autoremove --purge
# DNF önbellek temizliği
sudo dnf clean all
3. Docker Kalıntılarını Temizlemek
Kullanılmayan konteynerler, eski image sürümleri ve askıda kalan (dangling) volumeler diski hızla doldurur:
# Kullanılmayan container, ağ ve imajları temizle
docker system prune -a --volumes
Özet
Etkili bir disk yönetimi için:
df -hile dosya sisteminin genel doluluk oranını vedf -iile Inode durumunu tespit edin.du -h --max-depth=1 | sort -hrile şişen ana dizinleri belirleyin.ncduile interaktif olarak gereksiz dosyaları güvenle analiz edip temizleyin.- Log rotasyonu (
logrotate) ve periyodik önbellek temizliğini otomatik hale getirin.