Come faccio a sapere cosa sta usando tutto lo spazio sulla mia / partizione?


9

Sono su larga scala sui server EC2 di Amazon. Eseguo il comando df e ottengo:

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

Quindi eseguo il comando du e ottengo:

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

Se noti, quando aggiungi tutte le dimensioni nell'output del comando du delle directory non montate, non ti avvicinerai a 9.1G come visto nel comando df.

Questo significa che ho un disco danneggiato? In tal caso, come posso ripararlo?

Risposte:


20

È del tutto possibile che tu abbia un file cancellato molto grande (o molti piccoli) su cui un processo ha ancora un handle di file aperto. Il modo per trovarli è correre

# lsof | grep "deleted"

Se vedi molte righe che terminano con "(eliminato)", puoi trovare l'ID processo che le ha aperte e riavviarlo. Una volta che ciò accade, lo spazio su disco dovrebbe tornare.

Se questo non lo risolve, allora consiglierei un fsck.


1
Eccezionale! Questo è stato. Avevo un registro postgresql a cui stavo ancora eseguendo l'accesso.
scuote il

Se vuoi liberare spazio senza riavviare un demone, invece di eliminare il file, usa invece "echo> file". Questo troncherà il file, ma poiché l'handle è ancora aperto, diventerà un file sparso. Ciò significa che avrà comunque le stesse dimensioni, ma occuperà molto meno spazio su disco.
David Pashley,

lsof +L1a volte può funzionare meglio di quel grep ...
derobert,

5

Ci sono molte ragioni per cui du non è uguale a df. Vedi le risposte a questa domanda .

Alcuni sono supporti per overlay, molti piccoli file e dimensioni di blocco maggiori e file eliminati ancora in uso. I montaggi overlay si verificano quando si monta un filesystem su un mount point in cui erano presenti file, quindi du non li vede.

La differenza principale tra i due è che df controlla solo il superblocco e si fida di lui, dove du scansiona tutti i file che è in grado di vedere e li aggiunge. Vedere questo collegamento IBM per informazioni sul superblocco.


4

Usa sempre l'opzione -x con du quando insegui problemi come questo. Impedisce a du di attraversare i filesystem.


Ciò non avrebbe fatto alcuna differenza, come l'OP ha esplicitamente richiesto / *, così ha chiesto le altre partizioni. Sarebbe stato utile se qualcosa fosse stato montato sotto, diciamo "/ mnt / backups"
David Pashley,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.