Por que o num bloqueia o tamanho do arquivo de correspondência do tamanho do bloco?

4

Aqui está o que eu recebo quando emito o comando stat para um arquivo no meu linux:

yasar@yasar-laptop ~/myscripts/sysprog $ LC_ALL=C stat error.c
  File: 'error.c'
  Size: 184         Blocks: 8          IO Block: 4096   regular file
Device: 804h/2052d  Inode: 103650221   Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   yasar)   Gid: (  100/   users)
Access: 2012-04-23 17:10:28.117455882 +0300
Modify: 2012-04-21 22:18:59.967686183 +0300
Change: 2012-04-21 22:19:00.001019336 +0300
 Birth: -

Como você pode ver, o tamanho do bloco para o sistema de arquivos é de 4kb e o arquivo tem 8 blocos alocados, mas seu tamanho é de apenas 184 bytes. Por que um arquivo custa 8 blocos, quando apenas um bloco é suficiente?

    
por yasar 23.04.2012 / 16:50

3 respostas

4

$ echo a > a

o arquivo "a" agora contém dois bytes, um "a" e um caractere de nova linha.

$ stat -c "%b %B %s" a
16 512 2

Existem 16 blocos alocados, cada bloco tem 512 bytes de tamanho. Essa é a quantidade mínima de espaço que o sistema de arquivos monitora.

    
por 23.04.2012 / 17:31
1

O sistema de arquivos ext4 aloca pelo menos 4k por arquivo. São 8 blocos no disco (512 bytes). Aqui está uma explicação muito boa link

    
por 23.04.2012 / 17:16
0

como você vê, o bloco de sistema de arquivos do IO block é de 4kB

isto significa que o arquivo aloca oito blocos de 512 bytes

(e me deixa imaginando o que acontece se tivermos um disco moderno com tamanho de bloco físico de 4kB)

e você vê o motivo pelo qual o fdisk e as ferramentas de partição do Windows recentemente compensa partições por megabytes redondos desde o início do disco .... apenas no caso de detectar mal blocos de mídia (tamanho de gravação NAND etc) é pelo menos um pouco ideal, ou seja não escrevendo blocos de 4kB em chips NAND 2x 128kB ou mais.

    
por 23.04.2012 / 17:02