Como o ext4 decide o número de blocos de um arquivo?

0

Estou jogando com o comando stat , que basicamente mostra a informação do inode. Embora eu esteja mostrando as informações de um pequeno arquivo (146 caracteres), ele mostra 8 blocos. Eu estava me perguntando por que isso? Como o tamanho de uma página deve ser 4KB, espero que o número seja 1. BTW o sistema de arquivos que estou usando é o ext4. Para lhe dar mais detalhes:

mais tmp.sh

#DATE=$(date +"%Y%m%d_%H%M%S")
#cp /var/log/filter.log /var/log/logHistory/filter_{$DATE}.log
dd=$(date --date='-1 day' +"%Y%m%d")
rm filter_$dd*

stat tmp.sh

  File: ‘tmp.sh’
  Size: 146         Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 1835522     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/timestring)   Gid: ( 1000/timestring)
Access: 2016-05-05 17:34:08.251864800 -0700
Modify: 2015-01-22 20:40:18.971521274 -0800
Change: 2015-01-22 20:40:18.975521274 -0800
 Birth: -
    
por TimeString 06.05.2016 / 02:56

2 respostas

3

Os "blocos" que stat() reportam são unidades de 512 bytes. O tamanho de bloco normal usado pelo ext4 é 4kb ou 8 desses "blocos". Isso significa que o espaço usado por um arquivo no ext4 deve ser um inteiro múltiplo de 8 "blocos" e, portanto, o menor tamanho usado por qualquer arquivo menor ou igual a 4096 bytes é 8 blocos de 512 bytes.

    
por 06.05.2016 / 03:31
-1

O sistema de arquivos ext4 especula o tamanho de um arquivo quando é criado. Veja abaixo o link :

When a file is first created, the block allocator speculatively allocates 8KiB of disk space to the file on the assumption that the space will get written soon. When the file is closed, the unused speculative allocations are of course freed, but if the speculation is correct (typically the case for full writes of small files) then the file data gets written out in a single multi-block extent.

    
por 06.05.2016 / 03:09