Por que diferentes versões relatam diferentes tamanhos de arquivo?

2

na nossa organização, temos um servidor de arquivos do windows, que eu uso para armazenar um grande número de arquivos. Este servidor de arquivos é montado usando smbmount em 2 clusters.

O cluster A executa o CentOS 4.8 e a versão 5.2.1. O cluster B executa o Ubuntu 8.04.4 e a versão 6.10.

Quando eu executo o du cmd no Cluster A, para uma determinada pasta eu recebo

user@ClusterA:~/particular_dir$ du -h
....
637G  .

No entanto, quando executo o du cmd no Cluster B, para a mesma pasta, obtenho

user@ClusterB:~/particular_dir$ du -h
....
1.1T  .

Por que existe uma diferença tão grande? Apesar de diferentes versões do sistema operacional e du, certamente um tamanho de arquivo é um tamanho de arquivo.

    
por not_so_random 19.08.2010 / 11:21

2 respostas

1

E se você tentar ls -1s ? Imprime o tamanho do arquivo em blocos. E se você tentar ls -1ak (que relata os resultados com blocksize = 1k) ou simplesmente ls -lah , os resultados parecem idênticos entre os servidores?

Eu suspeito que o Samba decida usar tamanhos de bloco diferentes em versões diferentes, de modo que o relatório possa receber relatórios falsos sobre o compartilhamento de rede. du significa uso de disco , não uso de arquivo :-) e em geral coisas como sistema de arquivos e tamanho de bloco do sistema de arquivos importam se você tiver lotes e muitos arquivos ao redor.

    
por 19.08.2010 / 11:37
0

Por um lado, essa reportagem parece confusa. Isso acontece devido à diferença no tamanho do bloco (512, 1k, 4k, etc.) definido para o sistema de arquivos concreto, mas também devido ao número de arquivos descritos em metadados (sistema de arquivos geralmente o mantém no mesmo dispositivo aumentando assim o disco uso).

Por outro lado, é muito útil descobrir qual é o tamanho dos dados úteis (reais) e como é diferente do uso do espaço em disco = tamanho de dados útil + Tamanho dos metadados + fragmentação (uso do espaço no arquivo em termos de du ).

Para relatar o uso do disco em vez do tamanho real:

# du -sh Data/
2.0T    Data/

Agora, informe o tamanho do arquivo útil:

# du -sb Data/
1650071895576   Data/

Qual é 1,5Tb, o que significa que 0,5 Tb é usado para metadados (meta blocos, por exemplo, inodes) e fragmentos de cauda em blocos, que são alocados, mas não usados no final do arquivo (true para todos os arquivos com tamanho não divisível sobre o tamanho do bloco). Tendo 2M de arquivos vezes tamanho de bloco de 4096 com fragmentação média de dizer ~ 512b pode-se explicar 0,5 - 1Tb de espaço em disco "perda". Portanto, dados contíguos economizam espaço.

Por favor veja também man for

-b, --bytes equivalent to '--apparent-size --block-size=1'

    
por 18.11.2011 / 23:02