Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
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, /home veya bir bağlama noktası ayrı bir dosya sistemiyse, üst dizinde çalışan du sonucu 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. du ile du --apparent-size sonuçları da bu nedenle aynı olmayabilir.
  • Bağlar ve izinler: Sabit bağlar aynı veriyi iki kez göstermez; erişilemeyen dizinler ise du tarafı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.

  1. Dosya sistemi türü ve doluluk bilgisini alın: df -hT /. Çıktıdaki Use% değeri dosya sistemi seviyesindeki kullanımdır. Beklenmedik biçimde yüksekse sonraki adıma geçin.
  2. Aynı sınır içinde dizinleri toplayın: sudo du -xhd1 / | sort -h. -x başka dosya sistemlerine geçmeyi engeller. Büyük dizini bulmak için komutu o dizinde tekrarlayın.
  3. 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.
  4. 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.
  5. Bağlama noktalarını kontrol edin: findmnt -R /. Büyük alt dizin ayrı bir dosya sistemiyse, onu üst dizinin sonucu ile değil kendi df çıktısıyla karşılaştırın.
  6. Son kontrolde df -hT ve sudo du -xsh / değerlerini yeniden alın. df düşmüş, du benzer 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özlemMuhtemel nedenSonraki adım
df yüksek, du belirgin düşükSilinmiş açık dosya veya farklı bağlama sınırılsof +L1 ve findmnt ile kontrol et
du ve df aynı dizinde yüksekGörünür dosyalar gerçekten alan kaplıyordu -x ile en büyük alt dizini daralt
du, df'den yüksek görünüyorBaşka dosya sistemi alt dizine dahil edilmiş olabilirdu -x kullan ve mount noktalarını ayır
Dosya boyutu büyük, du daha düşükSeyrek 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.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.