Que blocos de tamanho 'truncate --io-blocks' usam?

1

Quais blocos de tamanho o GNU truncate --io-blocks usa?

      -o, --io-blocks
             treat SIZE as number of IO blocks instead of bytes
  • 512 bytes
  • blockdev --getbsz
  • blockdev --getpbsz
por Tom Hale 17.09.2017 / 16:13

1 resposta

1

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.
    
por 17.09.2017 / 16:33