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.
dfkomutu dosya sisteminin üstverisini okur. Tahsis edilmiş ancak henüz serbest bırakılmamış blokları da kullanımda kabul eder.dukomutu 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=1komutuyla 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 | headyardımıyla en büyük dosyaları belirleyin. - Eğer dosyaları sildiğiniz halde
dfalanı boşaltmadıysa,lsof | grep deletedile 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.


Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.