Em primeiro lugar, você não pode simplesmente adicionar os tamanhos de todos os arquivos no disco e esperar que seja a quantidade total usada. Toda vez que você armazena um arquivo, há algum espaço desperdiçado. É como colocar livros em uma prateleira, se os livros variam em tamanho, então você terá um espaço entre a parte superior do livro e a parte inferior da próxima prateleira.
Em segundo lugar, se você tiver arquivos abertos mas excluídos, o espaço usado ainda será usado até que o programa com esse arquivo o feche ou saia. Muitas vezes usado para arquivos temporários, o programa não precisa se preocupar em limpá-los, tudo o que precisa fazer é abrir um arquivo e excluí-lo antes de trabalhar com ele. Estes arquivos usados serão mostrados em df, mas você não pode encontrar um nome de arquivo que corresponda a ele. Se você quiser encontrá-los, então você terá que procurar em / proc / * / fd
Em terceiro lugar, e este é o seu problema aqui, os sistemas de arquivos ext3 têm uma porcentagem de espaço reservado que só pode ser gravado por raiz. Há duas razões para isso, muitos sistemas de arquivos tornam-se ineficientes quando o disco chega perto de ficar cheio, o sistema precisa gastar mais e mais tempo ajustando os arquivos aos espaços restantes. Também ler e escrever nos arquivos é lento, pois eles acabam sendo muito fragmentados. Outra razão para reservar espaço para o root é que ele permite que o root comprima os arquivos e espere recuperar algum espaço para os usuários. Se o disco estivesse totalmente cheio, isso não seria possível.
Portanto, não há nada errado, o que você está vendo é um comportamento normal para um disco inteiro.