Nenhuma das opções acima.
O tamanho do bloco está relacionado aos parâmetros do sistema de arquivos escolhidos no mkfs time, e pode ser encontrado executando stat()
no arquivo. Não tem relação com o dispositivo de bloco subjacente no qual o sistema de arquivos está armazenado (se houver).
Por exemplo, com o GNU stat
:
$ /usr/bin/stat . | grep IO.Block
Size: 71680 Blocks: 144 IO Block: 2048 directory
Se você preferir uma visualização mais programática, a chamada do sistema stat()
pode ser feita em perl
com:
$ perl -e '@x=stat("."); print $x[11]'
2048
Em ambos os casos, obtemos "2048" como a resposta para este sistema de arquivos.
Podemos verificar isso:
$ truncate -o -s 1 foo
$ ls -l foo
-rw-r--r-- 1 sweh sweh 2048 Sep 17 10:28 foo
Diferentes sistemas de arquivos podem ter diferentes tamanhos de bloco. Por exemplo, na minha máquina, eu fiz o disco /news
usar tamanhos de bloco menores porque ele armazena arquivos menores na maioria
$ perl -e '@x=stat("/"); print $x[11]'
4096
$ perl -e '@x=stat("/news"); print $x[11]'
2048
Para sistemas de arquivos extx
do Linux, isso é feito com mke2fs
com o sinalizador -b
:
-b block-size
Specify the size of blocks in bytes. Valid block-size values
are 1024, 2048 and 4096 bytes per block. If omitted, block-size
is heuristically determined by the filesystem size and the
expected usage of the filesystem (see the -T option). If block-
size is preceded by a negative sign ('-'), then mke2fs will use
heuristics to determine the appropriate block size, with the
constraint that the block size will be at least block-size
bytes. This is useful for certain hardware devices which
require that the blocksize be a multiple of 2k.