Discrepância entre "du" e "df"

Discrepância entre "du" e "df"

Eu tenho uma discrepância estranha. Com "df" vejo que meu disco raiz está usando quase 229G.

# df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/dm-2                   241G  229G   13G  96% /

mas "du" me diz que tenho apenas cerca de 12 GB (arredondado) em uso.

# du -sh /* | grep G
3.2G    /run
2.1G    /usr
6.0G    /var

Ambos os comandos foram executados como root. O que eu poderia imaginar é que existem dados "ocultos" em um diretório onde agora um compartilhamento NFS está montado. Se esse é o caso. Como posso descobrir quais arquivos estão "ocultos". Ou você tem outras ideias de por que esses números são tão diferentes?

Responder1

Você provavelmente tem um aplicativo/processo que possui esse arquivo aberto. Quando você exclui um arquivo que está aberto por um aplicativo, o sistema operacional ainda vê o tamanho do arquivo em df, pois o arquivo ainda está aberto na memória.

Aqui está alguma documentação que escrevi para um colega de trabalho que deve fornecer o que você precisa.

Truncar arquivos abertos grandes

Você excluiu arquivos para liberar espaço, mas o espaço não foi liberado posteriormente. Agora df -lah e du -lah mostram tamanhos diferentes

Use LSOF para obter arquivos excluídos, mas retidos

lsof |grep deleted

Isso mostrará todos os arquivos excluídos, mas mantidos abertos por um aplicativo.

java       2943  gateway  410w      REG              253,3  50482102     139274 /opt/span/app/node/default/var/attachments/att180368_0.part (deleted)
java       2943  gateway  411w      REG              253,3  46217973     139284 /opt/span/app/node/default/var/attachments/att182230_0.part (deleted)
java       2943  gateway  412w      REG              253,3  50483894     139280 /opt/span/app/node/default/var/attachments/att181920_0.part (deleted)

Você pode reiniciar o aplicativo para desbloquear arquivos ou truncá-los.

Para truncar os arquivos você terá que olhar a saída acima para obter o PID e fd (número do descritor de arquivo).

truncar o arquivo com

echo > /proc/PID/fd/fd_number

Exemplo: para zerar o tamanho do arquivo dos três listados acima, você emitiria o seguinte

echo > /proc/2943/fd/410 
echo > /proc/2943/fd/411
echo > /proc/2943/fd/412

se você tiver muitos para truncar o bash para o resgate.

for n in {410..412}; do 'echo  > /proc/2943/fd/$n'; done;

df -lah deve mostrar espaço livre agora, MAS os arquivos serão exibidos em lsof |grep excluídos, mas terão tamanho 1

java       2943  gateway  410w      REG              253,3         1     139274 /opt/span/app/node/default/var/attachments/att180368_0.part (deleted)
java       2943  gateway  411w      REG              253,3         1     139284 /opt/span/app/node/default/var/attachments/att182230_0.part (deleted)
java       2943  gateway  412w      REG              253,3         1     139280 /opt/span/app/node/default/var/attachments/att181920_0.part (deleted)

Os descritores de arquivos serão liberados na próxima reinicialização ou reinicialização/recarregamento do aplicativo que abriu os arquivos.

É claro que você terá que ajustar seus comandos para corresponder à saída dos arquivos bloqueados.

Responder2

No meu caso (e você me ajudou em um PM dizendo o mesmo) foi um problema excessivo. Eu tinha alguns dados em um diretório da partição, que dunão pude ver, porque uma montagem os ocultou.

Então tentedesmontar todas as montagense procure dados nos diretórios restantes.

Tenha um bom tempo e obrigado!

informação relacionada