Como descubro o que está consumindo todo o espaço na minha / partição?

9

Estou em uma instância grande nos servidores EC2 da Amazon. Eu executo o comando df e obtenho:

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

Em seguida, executo o comando du e obtenho:

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 você observar, ao adicionar todos os tamanhos na saída do comando du de diretórios não montados, você não chegará nem perto do 9.1G como visto no comando df.

Isso significa que tenho um disco defeituoso? Se sim, como posso corrigi-lo?

sheats
fonte

Respostas:

20

É perfeitamente possível que você tenha um arquivo excluído muito grande (ou muitos pequenos) em que um processo ainda tenha um identificador de arquivo aberto. A maneira de encontrá-los é correr

# lsof | grep "deleted"

Se você vir muitas linhas que terminam com "(excluído)", poderá encontrar o ID do processo que as abre e reiniciá-lo. Quando isso acontecer, seu espaço em disco deverá retornar.

Se isso não corrigir, recomendo um fsck.

David Pashley
fonte
1
Impressionante! Foi isso. Eu tinha um log do postgresql que ainda estava sendo logado.
sheats 03/09/09
Se você quiser liberar espaço sem reiniciar um daemon, em vez de excluir o arquivo, use "echo> file". Isso truncará o arquivo, mas, como o identificador ainda está aberto, ele se tornará um arquivo esparso. Isso significa que ainda terá o mesmo tamanho, mas ocupará muito menos espaço em disco.
David Pashley
lsof +L1às vezes pode funcionar melhor do que o grep ...
derobert
5

Existem várias razões pelas quais du não é igual a df. Veja as respostas para esta pergunta .

Alguns são montagens de sobreposição, muitos arquivos pequenos e um tamanho de bloco maior e arquivos excluídos que ainda estão em uso. Montagens de sobreposição são quando você monta um sistema de arquivos em um ponto de montagem que contém arquivos, então du não os vê.

A principal diferença entre os dois é que o df apenas verifica o superbloco e confia nele, onde o du verifica todos os arquivos que ele pode ver e os adiciona. Consulte este link da IBM para obter informações sobre o superbloco.

Kyle Brandt
fonte
4

Sempre use a opção -x com du quando estiver perseguindo problemas como este. Ele evita o cruzamento de sistemas de arquivos.

Zimmy-DUB-Zongy-Zong-DUBBY
fonte
Isso não faria diferença, pois o OP solicitou explicitamente / /, solicitou as outras partições. Teria ajudado se algo foi montado sob, digamos, "/ mnt / backups"
David Pashley