¿Cómo el comando stat calcula los bloques de un archivo?

Me pregunto cómo el comando stat calcula los bloques de un archivo. yo leo elartículo, dice:

El valor st_blocks proporciona el tamaño del archivo en bloques de 512 bytes. (Esto puede ser más pequeño que st_size / 512, por ejemplo, cuando el archivo tiene orificios). El valor st_blksize proporciona el tamaño de bloque "preferido" para una E / S de sistema de archivos eficiente. (Escribir en un archivo en trozos más pequeños puede causar una ineficiencia de lectura-modificación-reescritura).

Pero no puedo verificarlo en mi prueba.

mi sistema de archivos es ext3.

dumpe2fs -h / dev / sda3 muestra:

...
First block: 0
Block size: 4096
Fragment size: 4096
...

entonces corro

kent@KentT60:~/Desktop$ stat Email
File: `Email'
Size: 965 Blocks: 8 IO Block: 4096 regular file
Device: 80ah/2058d Inode: 746095 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ kent) Gid: ( 1000/ kent)
Access: 2009-08-11 21:36:36.000000000 +0200
Modify: 2009-08-11 21:36:35.000000000 +0200
Change: 2009-08-11 21:36:35.000000000 +0200

Si Bloques aquí significa: cuántos bloques de 512 bytes, el número debería ser 2, no 8. Pensé que el tamaño del bloque del sistema de archivos (bloque io) es 4k. Si fs obtendrá el archivo de correo electrónico, obtendrá un mínimo de 4k desde el disco (bloques de 8 x 512 bytes), lo que significa 965/512 + 6 = 8. No estoy seguro de si la suposición es correcta.

otra prueba:

kent@KentT60:~/Desktop$ stat wxPython-demo-2.8.10.1.tar.bz2
File: `wxPython-demo-2.8.10.1.tar.bz2'
Size: 3605257 Blocks: 7056 IO Block: 4096 regular file
Device: 80ah/2058d Inode: 746210 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ kent) Gid: ( 1000/ kent)
Access: 2009-08-12 21:45:45.000000000 +0200
Modify: 2009-08-12 21:43:46.000000000 +0200
Change: 2009-08-12 21:43:46.000000000 +0200


3605257/512=7041.xx = 7042

siguiendo mi conjetura anterior, esto sería 7042 + 6 = 7048. pero el resultado estadístico muestra 7056.

Y otro ejemplo de internet enhttp://www.computerhope.com/unix/stat.htm. Copio el ejemplo al final de la página aquí:

File: `index.htm'
Size: 17137 Blocks: 40 IO Block: 8192 regular file
Device: 8h/8d Inode: 23161443 Links: 1
Access: (0644/-rw-r--r--) Uid: (17433/comphope) Gid: ( 32/ www)
Access: 2007-04-03 09:20:18.000000000 -0600
Modify: 2007-04-01 23:13:05.000000000 -0600
Change: 2007-04-02 16:36:21.000000000 -0600

En este ejemplo, el tamaño de bloque FS es 8k. Supongo que el número de Bloques debería ser 16xN, pero es 40. perderse ...

¿Alguien puede explicarlo, como la estadística calcula los bloques?

¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta