Por que esses dois comandos relatam o espaço livre de forma tão diferente? Isso começou a acontecer no ano passado em várias VMs do Ubuntu 18.04 de tempos em tempos.
df
relata 100% usado enquanto du -smh
mostra apenas 2,3 G dos 4,0 G (total) em uso.
Isso geralmente é seguido rsyslog
ou syslog-ng
preenchido /var
com mensagens de erro quando o servidor syslog está inativo para manutenção.
# df -mh /var
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/new_vg-var 4.0G 3.9G 0 100% /var
# du -smh /var
2.3G /var
# fuser /var
df
consulta o sistema de arquivos para o total de blocos usados, veja man 3 statvfs. Contabilidade rápida e precisa do volume, mas sem detalhes sobre quais arquivos.du
percorre os arquivos e soma seus tamanhos. Mais lento, mas pode imprimir por tamanho de arquivo.Uma discrepância pode significar que os arquivos excluídos ainda estão abertos por algum programa. Mais comumente, esses arquivos grandes são logs ou bancos de dados, mas podem ser qualquer coisa.
A causa raiz seria sua configuração de log remoto.
A curto prazo, gire corretamente os arquivos de log, como executando
logrotate
ad-hoc. Observe que a configuração típica em /etc/logrotate.d/*syslog envia ao rsyslog um sinal HUP para reabrir novos arquivos de log.Considere aumentar o tamanho de /var para lidar com o tamanho real dos arquivos de log.
Revise a configuração de log para fazer algo apropriado quando o controle remoto estiver inativo e quando o espaço em disco estiver baixo. O rsyslog pode ser configurado com filas que usam uma quantidade finita de espaço e descartam mensagens na fila cheia. exemplo de configuração rsyslog da base de conhecimento do SLES, precisará ser personalizado para sua configuração de log:
Razões mais comuns para df ser maior que du:
du
em todo o sistema de arquivos.du -s /filesystem/*
, e está faltando os dotfiles no topo. Executar novamente comodu -sx /filesystem
du
não é possível alcançar os arquivos para determinar o tamanho. Pode dimensioná-los desmontando o sistema de arquivos sombreado ou muitas vezes com uma montagem em loop do sistema de arquivos original.du
não podem mais acessá-los para ler, mas ainda ocupam espaço. Tentelsof +aL1 /filesystem
encontrar os arquivos órfãos e o processo que os mantém abertos. Quando o processo fechar o arquivo, o espaço será liberado.Razão mais comum para df ser menor que du:
du
está descendo nele e contando esse espaço também. Executar novamente comodu -sx /filesystem