- Konu sahibi
- #1
du dizinleri ve dosyaları gezerek erişebildiği dosyaların kapladığı alanı toplar. df ise dosya sisteminin kendisinden ayrılan ve boş kalan blokları bildirir. Bu nedenle du erişilebilen dosya adları üzerinden, df ise dosya sistemi sayaçları üzerinden raporlar. Aradaki fark çoğunlukla silinmiş fakat hâlâ bir işlem tarafından açık tutulan dosyalardan, başka dosya sistemlerinin alt dizinlere bağlanmasından veya dosya sistemi metadatasından kaynaklanır.Farkı yorumlamak
Örneğin
df -h /var 80 GB kullanım gösterirken du -sh /var yalnızca 55 GB bulabilir. Bu, otomatik olarak 25 GB'lık görünmeyen bir dosya olduğu anlamına gelmez. Bir günlük dosyası silinmiş olabilir; süreç dosya tanıtıcısını kapatmadığı için bloklar df tarafından hâlâ kullanılmış sayılır, ancak dosya adı artık bulunmadığından du onu gezemez.Diğer yaygın açıklamalar şunlardır:
- Açık silinmiş dosyalar: Web sunucusu, veritabanı veya log işlemi silinen dosyayı açık tutabilir.
- Alt dosya sistemi:
/var/log,/homeveya bir bağlama noktası ayrı bir dosya sistemiyse, üst dizinde çalışandusonucu karşılaştırmayı yanıltabilir. - Dosya sistemi metadatası, snapshot ve ayrılmış alan: Yönetim yapıları ve snapshot’ların tuttuğu bloklar görünür dosya toplamıyla aynı değildir. Ayrılmış bloklar ise özellikle sıradan kullanıcıya kullanılabilir alanı azaltabilir; df çıktısındaki Used, Avail ve toplamı eşitlemeden yorumlayın. Sıkıştırma veya reflink/paylaşılan extent kullanan dosya sistemlerinde dosya toplamlarıyla fiziksel kullanım ayrıca ayrışabilir.
- Seyrek dosyalar: Dosyanın mantıksal boyutu ile gerçekten ayrılan blok miktarı farklı olabilir.
duiledu --apparent-sizesonuçları da bu nedenle aynı olmayabilir. - Bağlar ve izinler: Sabit bağlar aynı veriyi iki kez göstermez; erişilemeyen dizinler ise
dutarafından eksik taranabilir.
Karşılaştırmayı aynı dosya sistemi sınırında yapmak önemlidir. Aksi halde
du, incelenen dizinin altına bağlanmış başka dosya sistemlerini de toplar veya yetki hataları nedeniyle bazı alanları atlar.Uygulanabilir teşhis adımları
Aşağıdaki örnekte incelenen dosya sistemi
/ kabul edilmiştir. Kendi ortamınızda önce doluluğu bildiren yolu kullanın.- Dosya sistemi türü ve doluluk bilgisini alın:
df -hT /. ÇıktıdakiUse%değeri dosya sistemi seviyesindeki kullanımdır. Beklenmedik biçimde yüksekse sonraki adıma geçin. - Aynı sınır içinde dizinleri toplayın:
sudo du -xhd1 / | sort -h.-xbaşka dosya sistemlerine geçmeyi engeller. Büyük dizini bulmak için komutu o dizinde tekrarlayın. - Silinmiş ama açık dosyaları arayın:
sudo lsof +L1. Boyutu yüksek bir satırda dosya adı(deleted)olarak görünüyorsa, dosyayı tutan süreci belirleyin. - Süreç güvenle yeniden başlatılabiliyorsa ilgili hizmeti normal yönetim yöntemiyle yeniden başlatın; bu işlem açık dosya tanıtıcısını kapatır. Hizmeti durdurmak mümkün değilse, ilgili uygulamanın log yenileme veya yeniden açma yöntemini kullanın. Dosyayı dosya sisteminde tekrar silmek alanı geri getirmez.
- Bağlama noktalarını kontrol edin:
findmnt -R /. Büyük alt dizin ayrı bir dosya sistemiyse, onu üst dizinin sonucu ile değil kendidfçıktısıyla karşılaştırın. - Son kontrolde
df -hTvesudo du -xsh /değerlerini yeniden alın.dfdüşmüş,dubenzer kalmışsa farkın nedeni büyük olasılıkla açık silinmiş dosyadır; ikisi de yüksekse görünür dizinlerde gerçek kullanım vardır.
Komut beklenenden az sonuç veriyorsa
Permission denied uyarılarını göz ardı etmeyin; du yetkisiz dizinleri tarayamamış olabilir. Hata çıktısını gizlemeyin; boru hattının sonunda sort başarılı olsa bile du eksik taramış olabilir. İncelenen yol dosya sisteminin yalnız bir alt diziniyse onun du toplamını tüm dosya sisteminin df kullanımıyla birebir karşılaştırmayın. sudo kullanmak, teşhis edilen sistemde yönetici yetkisine sahip olmayı gerektirir. Hemen rm ile büyük dosyaları silmek yerine dosyanın hangi hizmete ait olduğunu belirleyin; açık logu silmek, alanı süreç kapanana kadar geri kazandırmayabilir.Karar tablosu
| Gözlem | Muhtemel neden | Sonraki adım |
|---|---|---|
| df yüksek, du belirgin düşük | Silinmiş açık dosya veya farklı bağlama sınırı | lsof +L1 ve findmnt ile kontrol et |
| du ve df aynı dizinde yüksek | Görünür dosyalar gerçekten alan kaplıyor | du -x ile en büyük alt dizini daralt |
| du, df'den yüksek görünüyor | Başka dosya sistemi alt dizine dahil edilmiş olabilir | du -x kullan ve mount noktalarını ayır |
| Dosya boyutu büyük, du daha düşük | Seyrek dosya veya ayrılmış blok farkı | du --apparent-size ile karşılaştır |
Sık yapılan hatalar
En yaygın hata,
du -sh / ile df -h / çıktısını hiçbir sınır ve izin kontrolü yapmadan birebir eşleştirmektir. Kök dizinin altındaki bağlama noktaları, sanal dosya sistemleri ve erişilemeyen dizinler sonucu değiştirir. İkinci hata, farkı yalnızca büyük bir dosyayı silerek çözmeye çalışmaktır; dosya açıksa süreç yeniden başlatılmadan veya dosya yeniden açılmadan bloklar serbest kalmayabilir.Kaynaklar
Sık sorulan sorular
df -i ne zaman kullanılmalıdır?
Diskte boş alan görünmesine rağmen yeni dosya oluşturulamıyorsa inode tükenmiş olabilir.
df -i ile dosya sistemi inode kullanımını kontrol edin; çok sayıda küçük dosya bu duruma yol açabilir.Seyrek dosyayı silmeden gerçek disk tahsisini nasıl görürüm?
Dosyanın mantıksal boyutunu ve ayrılmış bloklarını ayrı değerlendirin.
du --apparent-size mantıksal görünümü, normal du ise tahsis edilmiş alanı yaklaşık olarak gösterir; bu iki değer arasındaki fark seyrek dosyaya işaret edebilir.