¿Qué significa "tamaño en bloques de 512 bytes"?

¿Qué significa "tamaño en bloques de 512 bytes"?

Dado un archivo con un single h. Si ejecuto findcon la -lsprimitiva obtengo el siguiente resultado:

$ 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

Desde man findy buscando -lspodemos encontrar que el resultado es la siguiente información sobre los archivos:

su número de inodo, tamaño en bloques de 512 bytes, permisos de archivos, número de enlaces físicos, propietario, grupo, tamaño en bytes, hora de la última modificación y nombre de ruta.

Algunas cosas que me pregunto:

  • Si some_filesolo contiene hun byte, ¿por qué el "tamaño en bytes" es 2? Yo esperaría que fuera 1.
  • Si el segundo número es el "tamaño en bloques de 512 bytes", ¿por qué es mayor que el "tamaño en bytes"? Esperaría que fuera 0 o al menos más pequeño.

Respuesta1

some_filecontiene hseguido de una nueva línea, con un total de dos bytes. Prueba algo como

hexdump -C some_file

para ver el contenido del archivo byte a byte.

Cualquier archivo entre 1 y 512 bytes ocupará un bloque de 512 bytes, si ese es el tamaño mínimo de asignación en el disco, al igual que un archivo de 513 bytes ocupará dos bloques de 512 bytes. El recuento de bloques no se redondea hacia abajo al número entero más cercano.

Respuesta2

vea cuál es la razón detrás de por qué usamos 512 bytes; digamos un archivo de tamaño 513 bytes, lo que sucede es que para almacenar este archivo necesitamos 2 bloques de tamaño 512 bytes en el disco duro. Para guardar el byte 513, tenemos que asignar un bloque de disco duro completo que contenga 512 bytes. Por lo tanto, se desperdician 511 bytes debido a la fragmentación interna, por lo que para reducir esta fragmentación interna siempre es mejor que Mantenga el tamaño del bloque lo más pequeño posible y mediante experimentación descubrimos que 512 bytes es el tamaño óptimo. Si lo reduce, es posible que tenga que acceder a muchos bloques para acceder a un archivo y llevará tiempo. . Entonces, para optimizar las cosas, descubrieron experimentalmente que 512 bytes es el mejor tamaño para aumentar la eficiencia y disminuir el desperdicio de memoria.

información relacionada