Disk alanı kullanımı df & du ile birleşmiyor


13

Bazı disk alanını boşaltmaya çalışıyorum - eğer yaparsam df -h, / dev / mapper / vg00-var adlı bir dosya sistemim var, ki bu 4G, 3.8G kullanılmış, 205M kaldı.

Bu benim / var dizinime karşılık gelir.

/ du -kscxh *Var'a iner ve yaparsam , toplam 2.1G

2.1G + 200M ücretsiz = 2.3G ... Yani sorum şu, kalan 1.7G nerede?


Ne du -shx /vardiyor?
Kyle Smith

1
Açık dosya tanıtıcıları olan dosyaları da silmiş olabilirsiniz. İşletim sistemi, tutamaçlar kapatılıncaya kadar alanı serbest bırakmaz, ancak bunları "du" ile görmezsiniz. Bunları görmek için "lsof / var | grep silindi" (veya benzer bir şey) çalıştırabilirsiniz. Eğer günlükler döndürülürse, ancak kayıt işlemi doğru şekilde HUP'ed değilse, bu aslında / var / log için şaşırtıcı bir bulgu değildir.
cjc

Çıldırmış bazı günlük dosyalarını siliyordum, sanki dönmüyorlarmış gibi görünüyordu, ama yine de, bir arkadaşımın 'yeniden başlatılmasından' tek bir kelime e-posta aldım - alaycı olduğunu düşündüm ama görünüşe göre değil :) disk alanımı tekrar buldum .... felaket önlendi (şimdilik).
Codecraft

@Codecraft Evet, yeniden başlatma, açık dosya tanıtıcılarını kesinlikle temizleyecek, ancak bu bir tür yumurtayı çekiçle kırmak gibi.
cjc

@cjc sürece ben iyice iyilik olsun ...! Yumurtamı dövmeden açık dosya tutamaçlarını nasıl temizleyebileceğime dair herhangi bir öneriniz var mı?
Codecraft

Yanıtlar:


20

Muhtemelen silinen büyük günlük dosyası, veritabanı dosyası veya benzer bir şey var, dosyayı tutan işlemin beklemesini bekliyorsunuz.

Linux'ta, bir dosya silme işlemi sadece dosyanın bağlantısını kaldırır. Artık o dosyaya bağlı dosya tanıtıcısı olmadığında silinir. Bu nedenle, rm ile el ile sildiğiniz 2 GB günlük dosyanız varsa, syslog arka plan programını yeniden başlatana kadar (veya HUPona sinyal gönderene kadar) disk alanı boşaltılmaz .

Deneyin

lsof -n | grep -i deleted

ve hala etrafta yüzen herhangi bir silinmiş zombi dosyanız olup olmadığına bakın.


Komutunuzu çalıştırmak için alamadım, ama söylediğiniz şey patladı gibi görünüyordu - bazı günlükleri elle öldürüyordum ve sonunda, yeniden başlatma disk alanının yeniden hesaplanmasına ve doğru bir şekilde gösterilmesine neden oldu.
Codecraft

Bizim için / var / log / apache / dizinini dolduran Apache günlükleri ile çalıştı. Bu nedenle, tüm sunucunuzu veya sistem günlüğünüzü yeniden başlatmanız gerekmeyebilir, sadece yukarıdaki komutun çıktısında bulacağınız hizmet.
Yvan

Sadece bunu kendimiz yaptık. Tomcat6 catalina.out logrotate tarafından yakalanmadı, 4Gb ve sabit logrotate'e ulaştığında sildik mi? Haftalar sonra 4Gb'nin neden geri dönmediğini merak ettik. Bu lsofkomut, silinmeyi bekleyen çok fazla tomcat dosyası olduğunu gösterdi. Tomcat yeniden başlatılıyor ve aniden tonlarca alanımız var!
Nick

Sonunda benim için çalışan bir cevap. PostgreSQL çöktü ve 1TiB diskteki 400GiB (!!!) bağlantısız dosyaya açık bağlantılar bıraktı. Postgres yeniden başlatıldığında sorun giderildi.
sudo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.