Komut Referansı

Linux df ve du ile Disk Kullanımı

Linux df ve du ile Disk Kullanımı

Linux tabanlı sistemlerde depolama alanının verimli yönetilmesi, sistem kararlılığı ve servis sürekliliği açısından en temel görevlerden biridir. Dolu bir disk bölümü, veritabanlarının kilitlenmesine, günlükleme mekanizmalarının durmasına ve hatta kritik servislerin çökmesine yol açabilir. Bu tür sorunları önceden tespit etmek veya ortaya çıkan bir yer sorununu hızla çözmek için Linux komut satırında kullanılan iki ana araç vardır: df ve du. Bu yazıda her iki komutun işleyişini, yaygın parametrelerini ve aralarındaki farkları detaylı olarak ele alacağız.

df Komutu ile Dosya Sistemi Düzeyinde Kontrol

df (disk filesystem) komutu, bağlı bulunan tüm dosya sistemlerinin toplam boyutunu, kullanılan alanını ve boşta kalan miktarını gösterir. Bu komut, disk bloklarını tek tek taramak yerine dosya sisteminin üstverisini (metadata) okur; bu sayede disk ne kadar büyük olursa olsun yanıtı neredeyse anında üretir.

Hiçbir parametre verilmeden çalıştırıldığında çıktıyı 1 kilobaytlık bloklar halinde sunar. Bu çıktı insanlar için okunması güç veriler içerir.

df

Çıktıyı megabayt veya gigabayt gibi anlaşılır birimlerle görmek için -h (human-readable) parametresi kullanılır.

df -h

Bu komut her bölümün toplam boyutunu, kullanılan miktarını, kalan alanı ve kullanım yüzdesini M (Megabayt) ya da G (Gigabayt) cinsinden listeler. Çıktıda yer alan Mounted on sütunu, dosya sisteminin işletim sistemindeki hangi dizine bağlandığını gösterir.

Dosya Sistemi Türünü ve Belirli Alanları İnceleme

Bazı durumlarda sanal dosya sistemlerini (tmpfs, udev gibi) göz ardı edip yalnızca fiziksel disk formatlarını (ext4, xfs, btrfs) görmek isteyebilirsiniz. Bunun için -T parametresi eklenir.

df -hT

Eğer sadece belirli bir dizinin veya diskin hangi bağlama noktasına ait olduğunu ve o bölümde ne kadar yer kaldığını öğrenmek istiyorsanız, komutun sonuna doğrudan yolu ekleyebilirsiniz:

df -h /var/log

Bu komut yalnızca /var/log dizininin üzerinde bulunduğu dosya sisteminin durumunu raporlar.

Inode Doluluğunu Kontrol Etme

Linux sistemlerde disk alanı fiziksel olarak dolmamış olsa bile dosya oluşturulamayabilir. Bunun en sık karşılaşılan nedeni “inode” tükenmesidir. Inode, dosya sisteminde dosya ve dizinlerin meta verilerini (izinler, sahiplik, blok konumları) saklayan veri yapılarıdır. Her yeni dosya veya klasör bir inode tüketir. Çok sayıda küçük dosyanın (örneğin e-posta kuyrukları veya oturum dosyaları) bulunduğu sistemlerde inode sayısı tükenebilir.

Inode durumunu denetlemek için -i parametresi kullanılır:

df -i

Bu çıktıda yer alan IUse% değeri yüzde yüze yaklaşmışsa, diskte gigabaytlarca boş yer görünse dahi sistem yeni dosya yazamaz.

du Komutu ile Dizin ve Dosya Boyutu Analizi

df komutu hangi dosya sisteminin dolduğunu söylerken, du (disk usage) komutu bu doluluğa hangi dizinlerin veya dosyaların sebep olduğunu bulmanızı sağlar. du, dosya ağacında dolaşarak belirtilen dizindeki tüm girdilerin boyutlarını toplar.

Varsayılan haliyle du, çalıştırıldığı dizindeki tüm alt klasörleri özyinelemeli (recursive) olarak tarar ve her birinin boyutunu listeler. Bu işlem büyük dizinlerde terminali gereksiz bilgilerle doldurabilir.

Okunabilir birimlerle yalnızca hedef dizinin toplam boyutunu öğrenmek için -s (summary) ve -h parametreleri birlikte kullanılır:

du -sh /var/log

Bu komut /var/log altındaki tüm içeriği tarar ancak terminale yalnızca bu dizinin toplam boyutunu tek bir satırda basar.

Dizin Derinliğini Sınırlama

Büyük bir dizinde yer kaplayan klasörleri kademeli olarak bulmak için --max-depth parametresi oldukça kullanışlıdır. Bu parametre, taramanın kaç alt seviyeye kadar detaylandırılacağını belirler.

du -h --max-depth=1 /var

Bu örnekte /var dizini taranır, ancak yalnızca doğrudan /var altında bulunan klasörlerin toplam boyutları ekrana yazdırılır. Bir alt seviyedeki detaylar gizlenerek genel tablo net biçimde ortaya konur.

En Çok Alan Kaplayan Dosya ve Dizinleri Bulma

Diskin dolduğu kriz anlarında en büyük dizinleri hızlıca tespit etmek gerekir. Bunun için du komutunun çıktısı sort ve head araçlarıyla filtrelenir:

du -ah /var | sort -rh | head -n 15

Bu komut dizisinde yer alan parametrelerin işlevleri şunlardır:

  • -a: Yalnızca dizinleri değil, tekil dosyaları da analize dahil eder.
  • sort -rh: Çıktıyı insan tarafından okunabilir birimlere (-h) göre ve büyükten küçüğe ters sırada (-r) sıralar.
  • head -n 15: Sıralanan listenin en başındaki 15 öğeyi görüntüler.

Belirli Dosyaları Filtreleme

Gereksiz dosyaları ararken belirli dosya kalıplarını hariç tutmak veya yalnızca belirli türleri incelemek isteyebilirsiniz. --exclude parametresi belirtilen desene uyan dosyaları hesaba katmaz:

du -h --max-depth=1 --exclude="*.log" /var

Bu komut log dosyalarını atlayarak diğer dizin ve dosyaların boyutlarını hesaplar.

df ve du Arasındaki Temel Farklar ve Tutarsızlıklar

Sistem yöneticilerinin sıkça karşılaştığı senaryolardan biri, df komutunun diskin tamamen dolu olduğunu söylemesine rağmen du çıktısının çok daha düşük bir kullanım göstermesidir. Bu durum bir hata değil, iki komutun çalışma mekanizmasındaki temel farkın sonucudur.

  • df komutu dosya sisteminin üstverisini okur. Tahsis edilmiş ancak henüz serbest bırakılmamış blokları da kullanımda kabul eder.
  • du komutu dosya dizin yapısını dolaşarak o an dizin ağacında görünen dosyaları tek tek sayar.

Bu tutarsızlığın en temel sebebi, silinmiş ancak çalışan bir süreç tarafından hala açık tutulan dosyalardır. Bir servis (örneğin Nginx veya MySQL) büyük bir log dosyasına yazarken, bir kullanıcı rm komutuyla o log dosyasını silerse dosyanın dizin kaydı silinir. du bu dosyaya artık erişemediği için boyutunu sayamaz. Ancak çalışan servis dosya tanımlayıcısını (file descriptor) kapatmadığı sürece işletim sistemi disk bloklarını boşaltmaz; dolayısıyla df bu alanı hala dolu olarak gösterir.

Böyle bir durumu tespit etmek için açık olan ancak silinmiş dosyaları listeleyen lsof komutu kullanılır:

lsof +L1

Veya doğrudan silinmiş ibaresi içeren açık dosyalar taranır:

lsof | grep deleted

Bu komutlar diski işgal etmeye devam eden sürecin kimliğini (PID) ve dosya adını verir. İlgili servisi yeniden başlatmak veya süreci sonlandırmak, kilitli kalan disk bloklarının serbest bırakılmasını ve df çıktısının düzelmesini sağlar.

Disk Sorunlarını Çözmek İçin Tipik Bir İş Akışı

Bir sunucuda disk alanı uyarısı aldığınızda izlemeniz gereken sistematik yaklaşım şu adımlardan oluşur:

  • İlk olarak df -h çalıştırarak hangi bölümün (örneğin / veya /home) kritik seviyede olduğunu belirleyin.
  • Inode tükenmesi ihtimaline karşı df -i çıktısını kontrol edin.
  • Sorunlu bölüme giderek du -h --max-depth=1 komutuyla alanı en çok tüketen ana dizini tespit edin.
  • Tespit edilen dizinin içine girerek aynı komutu yineleyin veya doğrudan du -ah | sort -rh | head yardımıyla en büyük dosyaları belirleyin.
  • Eğer dosyaları sildiğiniz halde df alanı boşaltmadıysa, lsof | grep deleted ile süreci bulun ve servisi yeniden başlatın.

Özet ve Sonraki Adımlar

df ve du araçları, Linux sistem yönetiminde depolama sağlığını izlemek ve sorunları gidermek için birbirini tamamlayan vazgeçilmez komutlardır. Biri genel tabloyu ve dosya sistemi sınırlarını hızla verirken, diğeri sorunun kaynağı olan dosya ve klasörleri kesin olarak işaret eder.

Bu iki komutun temel parametrelerine hakim olduktan sonraki adımda, disk temizliğini otomatikleştiren logrotate yapılandırmasını inceleyebilir ya da terminal ortamında görsel ve etkileşimli disk analizi sunan ncdu aracını sisteminize kurup kullanmayı deneyebilirsiniz.

#devops#disk yonetimi#linux#sysadmin#terminal komutlari

Comments

No comments yet. Be the first to comment.

Leave a comment

Comments are published after the admin approves them.