Por que há uma discrepância no uso do disco relatado por df e du? [duplicado]

9

Eu tenho um servidor Linux CentOS , os pacotes do OS + usados em torno de 5 GB . Em seguida, transferi 97 GB dados de um servidor Windows para duas pastas neste servidor Linux, depois de calcular o uso do disco, vejo que o tamanho total das duas pastas é maior que o tamanho usado pelo disco.

Execute du -sh em cada pasta, use 50 GB , a outra use 47 GB

Mas execute df -h , o espaço usado é 96 GB . ( 50 GB + 47 GB + 5 GB ) > 96 GB

Existe algum problema? Essas duas pastas contêm muitos arquivos (1 milhão +). Obrigado.

    
por garconcn 19.03.2011 / 01:21

2 respostas

10

Esta página fornece algumas dicas sobre por que eles têm valores diferentes, no entanto, parece sugerir que seu tamanho du deve ser o menor dos dois.

df usa total de blocos alocados, enquanto du apenas analisa os próprios arquivos, excluindo metadados como inodes, que ainda exigem blocos no disco. Além disso, se um arquivo for excluído enquanto um aplicativo o abrir, du o informará como espaço livre, mas df não o fará até que o aplicativo seja encerrado.

    
por 19.03.2011 / 01:55
5

Quando du é maior que df , o motivo usual é "blocos esparsos": se um programa não grava em um bloco de disco, mas em vez disso procura, ele obtém um ponteiro zero no bloco do inode mapa de alocação e nenhum espaço em disco real é reservado para ele. Se você escrever mais tarde, um bloco de disco real será alocado e o mapa será alterado para apontar para o novo bloco.

    
por 19.03.2011 / 01:58