Jak mogę dowiedzieć się, co zajmuje całe miejsce na mojej partycji?


9

Jestem w dużej mierze na serwerach EC2 Amazon. Uruchamiam polecenie df i otrzymuję:

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

Następnie uruchamiam polecenie du i otrzymuję:

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

Jeśli zauważysz, że po zsumowaniu wszystkich rozmiarów danych wyjściowych polecenia du z nie zamontowanych katalogów, nie uzyskasz wartości zbliżonej do 9,1 G, jak widać w poleceniu df.

Czy to oznacza, że ​​mam zły dysk? Jeśli tak, jak mogę to naprawić?

Odpowiedzi:


20

Jest całkiem możliwe, że masz bardzo duży usunięty plik (lub wiele małych), w którym proces nadal ma otwarty uchwyt pliku. Sposobem na ich znalezienie jest ucieczka

# lsof | grep "deleted"

Jeśli zobaczysz wiele linii zakończonych „(usuniętymi”), możesz znaleźć identyfikator procesu, który je otworzył, i zrestartować. Gdy to nastąpi, miejsce na dysku powinno wrócić.

Jeśli to nie rozwiąże problemu, polecam fsck.


1
Niesamowite! To było to. Miałem dziennik postgresql, który wciąż się logował.
sheats

Jeśli chcesz zwolnić miejsce bez ponownego uruchamiania demona, zamiast usuwać plik, użyj zamiast tego polecenia „echo> plik”. Spowoduje to obcięcie pliku, ale ponieważ uchwyt jest nadal otwarty, stanie się plikiem rzadkim. Oznacza to, że nadal będzie miał ten sam rozmiar, ale zajmie znacznie mniej miejsca na dysku.
David Pashley,

lsof +L1może czasem działać lepiej niż ten grep ...
derobert

5

Istnieje wiele powodów, dla których du nie jest równy df. Zobacz odpowiedzi na to pytanie .

Niektóre z nich to nakładki nakładek, wiele małych plików i większy rozmiar bloku oraz usunięte pliki, które są nadal w użyciu. Montowania nakładkowe mają miejsce, gdy system plików został zamontowany w punkcie montowania, w którym były pliki, więc du ich nie widzi.

Główną różnicą między nimi jest to, że df po prostu sprawdza superblok i ufa mu, gdzie jako du skanuje wszystkie pliki, które jest w stanie zobaczyć, i dodaje je. Zobacz ten link IBM, aby uzyskać informacje na temat superbloku.


4

Zawsze używaj opcji -x z du, gdy gonisz za takimi problemami. Chroni du przed przekraczaniem systemów plików.


Nie zrobiłoby to żadnej różnicy, ponieważ OP wyraźnie poprosił o / *, więc poprosił o inne partycje. Pomogłoby to, gdyby coś zamontowano pod, powiedzmy „/ mnt / backups”
David Pashley,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.