stat file system sizes

6

Com stat 8.13 em um Linux baseado em Debian - entre muitos outros - as seguintes diretivas FORMAT ( --format= ) são oferecidas:

Em combinação com --file-system ( -f ):

  • %s Tamanho do bloco (para transferências mais rápidas)
  • %S Tamanho fundamental do bloco (para contagens de blocos)

Pergunta (s) : O que exatamente se quer dizer?

Meu melhor palpite é que %s , %S é igual a %b (exibição em Blocos) e %B (tamanho do bloco de exibição), onde o último é para arquivos e os dois primeiros são para sistemas de arquivos. Isso está correto?

    
por erch 05.06.2015 / 21:34

1 resposta

4
   %S     fundamental block size (for block counts)

informa o tamanho de cada bloco no sistema de arquivos. Na maioria dos sistemas de arquivos, essa é a menor quantidade de espaço que qualquer arquivo pode ocupar. Cada arquivo usa um múltiplo disso.

Por exemplo,

$ echo > a           # create a file containing a single byte
$ du -h a            # see how much disk space it's using
4.0K    a
$ stat -f -c '%S' .  # see what stat thinks the block size is
4096
$ tune2fs -l /dev/mydrive | grep '^Block size'
4096

Eu não tenho 100% de certeza de que sempre funciona assim. Por exemplo, espero que ele também decida imprimir 512 ou 1024 , mesmo que o tamanho do bloco subjacente seja diferente, desde stat -c %b FILE * stat -f -c %S FILE = du --block-size=1 FILE . A implementação exata dependeria do sistema de arquivos.

%s     block size (for faster transfers)

sugere quantos bytes você deve ler por vez se estiver copiando arquivos grandes, por exemplo, o que deve ser usado como o parâmetro bs (blocksize) ao usar dd . Mas nos sistemas que eu verifiquei, sempre imprime 4096 , mesmo quando valores maiores podem ser mais rápidos. Veja Existe uma maneira de determinar o valor ideal para o parâmetro bs para dd? para mais discussão sobre isso.

Tecnicamente, essas informações (e todas as informações de stat -f ) são provenientes da chamada do sistema statvfs .

%s corresponde ao campo f_bsize e %S é f_frsize .

Assim, você poderia olhar para os significados precisos deles começando com a página man do statvfs

 unsigned long  f_bsize;    /* Filesystem block size */
 unsigned long  f_frsize;   /* Fragment size */
    
por 06.06.2015 / 03:26

Tags