Diferença entre blocos de filefrag e stat

1

Eu criei um arquivo chamado sometext com dados aleatórios dentro. Eu queria verificar os metadados deste arquivo usando vários programas. Eu usei o programa filefrag e stat .

 kd@kd-VPCEB2S1E ~/Downloads $ stat sometext 
  File: 'sometext'
  Size: 16          Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 6298184     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  kd)   Gid: ( 1000/  kd)
Access: 2018-04-19 09:39:07.263246674 +0200
Modify: 2018-04-19 09:39:06.527234524 +0200
Change: 2018-04-19 09:39:06.527234524 +0200
 Birth: -
kd@kd-VPCEB2S1E ~/Downloads $ filefrag -v sometext 
Filesystem type is: ef53
File size of sometext is 16 (1 block of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       0:   25369307..  25369307:      1:             last,eof
sometext: 1 extent found
kd@kd-VPCEB2S1E ~/Downloads $ 

Os dois programas mostram que o tamanho do arquivo é 16 bytes e o block size é 4096 bytes . Até aqui tudo bem, mas stat mostra que o arquivo leva 8 blocks e filefrag mostra que o arquivo leva 1 block .

Por que existe uma diferença tão grande? O que eu perdi?

    
por Iomanip 19.04.2018 / 09:49

1 resposta

0

Bloco IO é tamanho do bloco para intercâmbio com dispositivo de bloco.

Bloco ( stat ) é o número de células do sistema de arquivos (e de causa dependem do tipo de sistema de arquivos), necessário para armazenar um arquivo. Pode ser fácil de testar:

$ stat shell
  File: ‘shell’
  Size: 4295        Blocks: 16         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 16997503    Links: 1
Access: (0755/-rwxr-xr-x)  Uid: ( 1000/   yurij)   Gid: ( 1000/   yurij)
Access: 2018-04-11 18:17:38.614827347 +0300
Modify: 2018-04-11 18:17:34.359967012 +0300
Change: 2018-04-19 01:07:03.729000000 +0300
 Birth: - 

$ pwd
/home/yurij/develop/shell/usr/local/bin
$ sudo blockdev --getbsz /dev/mapper/cl-root
[sudo] password for yurij:
512 # cell size in bytes

8 KB = 8192 bytes

8192 bytes / 512 bytes = 16 blocos

filefrag :

$ filefrag -v shell
Filesystem type is: 58465342
File size of shell is 4295 (2 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       1:    1141480..   1141481:      2:             eof
shell: 1 extent found

São duas operações de leitura / gravação que precisam ler / gravar o arquivo de / para o dispositivo de bloco.

    
por 19.04.2018 / 10:56