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