stat -c %B 和 stat -c %o 之间有什么区别?

stat -c %B 和 stat -c %o 之间有什么区别?

出于学术目的,我试图演示文件的内部碎片。据我了解,内部碎片可以显示为文件大小与包含该文件的所有块的大小之间的差异。找出块的数量很容易。我的问题是找到块的大小。这是 stat -c %o 返回的数字吗? (4096) 或 stat -c %B (512)。

这两者有什么区别?我一直试图在网上寻找答案,但我只是变得更加困惑。其他命令,如 blockdev --getbsz /dev/sda2 显示我的文件系统块大小为 4096。但是,在进行计算之后,似乎 512 更适合我正在寻找的 asnwer(我正在测试的文件大小是 44933,块数是 88。将其乘以 4096 得到 360448,这是文件大小的 8 倍多)。

答案1

从手册中stat(1)可能会找到(这是来自 Centos7 版本的stat(1);其他来源可能有所不同)

   %b     number of blocks allocated (see %B)
   %B     the size in bytes of each block reported by %b

   %o     optimal I/O transfer size hint

这表明第一个是关于文件系统上分配的块,而第二个是与所述文件上的 I/O 相关的值。名词(分配的块)与动词(所述块的转移)或多或少。

相关内容