O que significa “tamanho em blocos de 512 bytes”?

O que significa “tamanho em blocos de 512 bytes”?

Dado um arquivo com um único h. Se eu executar findcom o -lsprimitivo, obtenho a seguinte saída:

$ cat some_file
h
$ find . -ls
2750606        0 drwxr-xr-x    4 mbigras          FOO\Domain Users      136 May 18 12:35 .
3067730       16 -rw-r--r--    1 mbigras          FOO\Domain Users     6148 May 18 12:33 ./.DS_Store
3067836        8 -rw-r--r--    1 mbigras          FOO\Domain Users        2 May 18 12:35 ./some_file

A partir de man finde pesquisando, -lspodemos encontrar a saída com as seguintes informações sobre os arquivos:

seu número de inode, tamanho em blocos de 512 bytes, permissões de arquivo, número de links físicos, proprietário, grupo, tamanho em bytes, hora da última modificação e nome do caminho.

Algumas coisas que estou pensando:

  • Se contém some_fileapenas hum byte, então por que o "tamanho em bytes" é 2? Eu esperaria que fosse 1.
  • Se o segundo número é o “tamanho em blocos de 512 bytes”, por que é maior que o “tamanho em bytes”? Eu esperaria que fosse 0 ou pelo menos menor.

Responder1

some_filecontém hseguido por uma nova linha, totalizando dois bytes. Tente algo como

hexdump -C some_file

para visualizar o conteúdo do arquivo byte por byte.

Qualquer arquivo entre 1 e 512 bytes ocupará um bloco de 512 bytes, se esse for o tamanho mínimo de alocação no disco, assim como um arquivo de 513 bytes ocupará dois blocos de 512 bytes. A contagem de blocos não é arredondada para o número inteiro mais próximo.

Responder2

veja qual é a razão por que usamos 512 bytes; digamos um arquivo de tamanho 513 bytes, o que acontece é que para armazenar esse arquivo precisamos de 2 blocos de tamanho 512 bytes no disco rígido. Para salvar o 513º byte temos que alocar um bloco completo do disco rígido que contém 512 bytes corretamente. Portanto há um desperdício de 511 bytes por causa da fragmentação interna, então para reduzir essa fragmentação interna é sempre melhor que você mantenha o tamanho do bloco o menor possível e por experimentação descobrimos que 512 bytes é o tamanho ideal, se você diminuí-lo poderá ter que acessar muitos blocos para acessar um arquivo e isso levará tempo . Então para otimizar as coisas descobriram que experimentalmente que 512 bytes é o melhor tamanho para aumentar a eficiência e diminuir o desperdício de memória.

informação relacionada