1. #!trpst#trp-gettext data-...
  2. #!trpst#trp-gettext data-...
  3. Linux
  4. Terminal
  5. df, du ve ncdu ile Linux Disk Alanı Analizi ve Temizliği

df, du ve ncdu ile Linux Disk Alanı Analizi ve Temizliği

Print

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/null yö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ğı OkDizin veya dosyalar arasında gezinme
Enter veya Sağ OkSeçili dizinin içine girme
Sol OkBir üst dizine geri çıkma
dSeçili dosya veya klasörü silme (Onay ister)
gYüzdelik kullanım çubuğunu açma/kapama
nİsme göre sıralama
sBoyuta göre sıralama
qncdu’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:

  1. df -h ile dosya sisteminin genel doluluk oranını ve df -i ile Inode durumunu tespit edin.
  2. du -h --max-depth=1 | sort -hr ile şişen ana dizinleri belirleyin.
  3. ncdu ile interaktif olarak gereksiz dosyaları güvenle analiz edip temizleyin.
  4. Log rotasyonu (logrotate) ve periyodik önbellek temizliğini otomatik hale getirin.
Tags , , , , , ,

How can we help?