`truncate --io-blocks`는 어떤 크기의 블록을 사용합니까?

`truncate --io-blocks`는 어떤 크기의 블록을 사용합니까?

GNU의 블록 크기는 얼마입니까?truncate --io-blocks사용?

      -o, --io-blocks
             treat SIZE as number of IO blocks instead of bytes
  • 512바이트
  • blockdev --getbsz
  • blockdev --getpbsz

답변1

위의 어느 것도 아닙니다.

블록 크기는 mkfs를 사용할 때 선택한 파일 시스템 매개변수와 관련되며 stat()파일을 실행하여 찾을 수 있습니다. 파일 시스템이 저장되는 기본 블록 장치(있는 경우)와는 아무 관련이 없습니다.

예를 들어 GNU를 사용하면 다음과 같습니다 stat.

$ /usr/bin/stat . | grep IO.Block       
  Size: 71680           Blocks: 144        IO Block: 2048   directory

보다 프로그래밍적인 보기를 선호하는 경우 stat()다음 명령을 사용하여 시스템 호출을 수행할 수 있습니다 perl.

$ perl -e '@x=stat("."); print $x[11]'
2048

두 경우 모두 해당 파일 시스템에 대한 대답으로 "2048"을 얻습니다.

우리는 이것을 확인할 수 있습니다:

$ truncate -o -s 1 foo      
$ ls -l foo
-rw-r--r-- 1 sweh sweh 2048 Sep 17 10:28 foo

파일 시스템마다 블록 크기가 다를 수 있습니다. 예를 들어 내 컴퓨터에서는 /news디스크가 대부분 작은 파일을 저장하므로 더 작은 블록 크기를 사용하도록 만듭니다.

$ perl -e '@x=stat("/"); print $x[11]'
4096

$ perl -e '@x=stat("/news"); print $x[11]'
2048

Linux 파일 시스템의 경우 이는 다음 플래그를 사용하여 수행됩니다.extxmke2fs-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.

관련 정보