99,9% do tempo, o motivo pelo qual isso acontece é que um ou mais arquivos foram excluídos, mas ainda há um processo que ainda está sendo gravado no identificador de arquivos antigo.
Quando um programa deseja executar operações de E / S em um arquivo, ele pede ao kernel "hey kernel, eu gostaria de acessar o arquivo /bla.txt e eu quero poder ler e gravar nele". O kernel então retorna um "identificador de arquivo" que é uma referência ao arquivo que pode ser usado para realizar operações de leitura e gravação.
Contanto que o programa mantenha o identificador de arquivos aberto, ele pode continuar gravando nele, mesmo que o arquivo seja posteriormente excluído.
Isso geralmente fica evidente quando você faz algo no arquivo e, na maioria das vezes, é algo como girar arquivos de log. O que acontece, então, é que df
informa o uso real no disco, o que pode incluir espaço ocupado por arquivos abertos que ainda estão sendo gravados. du
, por outro lado, passa por todos os nomes de arquivos conhecidos e considera seu espaço. Isso pode ser menor porque um arquivo excluído não tem mais nome de arquivo, portanto du
não leva isso em conta.
Para ver se esse é o seu problema, execute este comando: lsof +L1
, e se você vir algum nome de arquivo que diga '(deleted)', será necessário parar o processo chamado na coluna "COMMAND" da saída e, em seguida, descobrir por que ele mantém arquivos excluídos abertos. Depois de descobrir isso, você pode tomar medidas para impedir que isso aconteça.