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.