/ Bölümümdeki tüm alanı neyin kullandığını nasıl öğrenebilirim?


9

Amazon'un EC2 sunucularında büyük bir durumdayım. Ben df komutunu çalıştırın ve olsun:

root@db:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.9G  9.1G  284M  98% /
tmpfs                 3.8G     0  3.8G   0% /lib/init/rw
varrun                3.8G  116K  3.8G   1% /var/run
varlock               3.8G     0  3.8G   0% /var/lock
udev                  3.8G   80K  3.8G   1% /dev
tmpfs                 3.8G     0  3.8G   0% /dev/shm
/dev/sdb              414G  957M  392G   1% /mnt
/dev/sdf               50G   12G   35G  26% /byp
/dev/sdk               99G   31G   63G  33% /backups

Sonra du komutunu çalıştırın ve olsun:

root@db:/# du -s -h /*
31G     /backups
5.5M    /bin
136K    /boot
12G     /byp
80K     /dev
5.8M    /etc
12K     /home
70M     /lib
11M     /lib32
0       /lib64
16K     /lost+found
759M    /mnt
4.0K    /opt
du: cannot access `/proc/6917/task/6917/fd/4': No such file or directory
du: cannot access `/proc/6917/fd/4': No such file or directory
0       /proc
31M     /root
7.7M    /sbin
4.0K    /selinux
4.0K    /srv
0       /sys
11M     /tmp
1.1G    /usr
114M    /var

Dikkat ederseniz, bağlı olmayan dizinlerin du komut çıkışına tüm boyutları eklediğinizde, df komutunda görüldüğü gibi 9.1G'ye yakın bir yere ulaşamazsınız.

Bu kötü bir diskim olduğu anlamına mı geliyor? Öyleyse, nasıl düzeltebilirim?

Yanıtlar:


20

Bir işlemin hala açık bir dosya tanıtıcısına sahip olduğu çok büyük bir silinmiş dosyaya (veya çok sayıda küçük dosyaya) sahip olmanız tamamen mümkündür. Onları bulmanın yolu koşmaktır

# lsof | grep "deleted"

"(Silinmiş)" ile biten çok sayıda satır görürseniz, bunları açık hale getiren işlem kimliğini bulabilir ve yeniden başlatabilirsiniz. Bu gerçekleştiğinde, disk alanınız geri dönmelidir.

Bu düzeltmezse, bir fsck öneririm.


1
Müthiş! Öyleydi. Hala giriş yapıyorum bir postgresql günlüğü vardı.
sheats

Dosyayı silmek yerine bir arka plan programını yeniden başlatmadan yer açmak istiyorsanız, bunun yerine "echo> file" kullanın. Bu dosyayı keser, ancak tanıtıcı hala açık olduğundan seyrek bir dosya olur. Bu, yine de aynı boyutta olacağı, ancak daha az disk alanı kaplayacağı anlamına gelir.
David Pashley

lsof +L1bazen bu grep daha iyi çalışabilir ...
derobert

5

Du eşit değil df bir sürü nedeni vardır. Bu sorunun cevaplarına bakın .

Bazıları kaplama bağlantıları, çok sayıda küçük dosya ve daha büyük bir blok boyutu ve hala kullanımda olan silinmiş dosyalardır. Bindirme bağlar, içinde dosya bulunan bir bağlanma noktasına bir dosya sistemi bağladığınız zamandır.

İkisi arasındaki temel fark, df'nin süper bloğu kontrol etmesi ve ona güvenmesi, burada du görebildiği tüm dosyaları tarar ve ekler. Süper blok hakkında bilgi için bu IBM bağlantısına bakın .


4

Böyle sorunları takip ederken daima -x seçeneğini du ile birlikte kullanın. Du dosya sistemlerini geçmesini engeller.


OP açıkça / * istediğinden, diğer bölümleri istediği için bu herhangi bir fark yaratmazdı. Diyelim ki, "/ mnt / backups" altına bir şey monte edilmiş olsaydı yardımcı olur
David Pashley 19: 56'da
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.