Como determinar qual processo está consumindo todo o espaço disponível em disco?

Como determinar qual processo está consumindo todo o espaço disponível em disco?

De repente, todo o espaço disponível em disco /desapareceu.

Se eu liberar espaço no disco (excluindo ~ 50 GB de material, por exemplo), depois de alguns minutos voltarei a ter 0 espaço disponível em disco (de acordo com df).

Claramente, algum processo está ocupando espaço em disco rapidamente, mas não consigo descobrir o que é.

Porém, uma coisa é certa: seja o que for, deve estar criando muitos arquivos pequenos, porque não há arquivos maiores que 10GB no disco, e todos os maiores que 1GB são muito mais antigos do que hoje.

Como posso descobrir o que está ocupando espaço em disco?


FWIW, só dfvê o problema, não du.

Por exemplo, abaixo mostro vários "instantâneos" dutirados dfdos anos 60. separado. (Fiz isso depois de criar algum espaço no disco.) Observe como dua saída de permanece estável (em 495G), mas dfmostra uma quantidade cada vez menor de espaço disponível. (segui a recomendação dadaaqui. IOW, /mnt/rootestá apontando para /.)

# while true; do du -sh /mnt/root && df -h /mnt/root; sleep 60; done
495G    /mnt/root
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       880G  824G   12G  99% /mnt/root
495G    /mnt/root
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       880G  825G   11G  99% /mnt/root
495G    /mnt/root
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       880G  827G  8.9G  99% /mnt/root
495G    /mnt/root
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       880G  827G  8.1G 100% /mnt/root
495G    /mnt/root
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       880G  828G  7.5G 100% /mnt/root

Responder1

Você está lidando com arquivos deletados, por isso dunão registra o espaço utilizado, mas dfregistra.

Os arquivos excluídos só desaparecem depois que o processo do proprietário é interrompido; eles permanecem em uso enquanto isso não acontece.

Portanto, para encontrar o processo culpado, recomendo que você faça:

sudo lsof -nP | grep '(deleted)'

Então, por matar o processo.

sudo kill -9 $(lsof | grep deleted | cut -d " " -f4)

Responder2

Você poderia usariotoppara ver quais processos estão executando a maioria das operações de gravação em disco.

Exemplo:

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    8 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]

informação relacionada