统计文件系统大小

统计文件系统大小

在基于 Debian 的 Linux 上 - 除其他外 -提供stat 8.13以下格式指令 ( ):--format=

--file-system( -f)结合:

  • %s块大小(用于更快的传输)
  • %S基本块大小(用于块计数)

问题): 具体是什么意思?

我最好的猜测是%s%S等于%b(以块显示)和%B(显示块的大小),其中后者用于文件,前两个用于文件系统。那是对的吗?

答案1

   %S     fundamental block size (for block counts)

告诉您文件系统上每个块有多大。在大多数文件系统上,这是任何文件可以占用的最小空间量。每个文件都使用此值的倍数。

例如,

$ echo > a           # create a file containing a single byte
$ du -h a            # see how much disk space it's using
4.0K    a
$ stat -f -c '%S' .  # see what stat thinks the block size is
4096
$ tune2fs -l /dev/mydrive | grep '^Block size'
4096

我不能百分百确定它总是这样工作。例如,我希望它也可以决定打印512or 1024,即使底层块大小不同,只要stat -c %b FILE* stat -f -c %S FILE= du --block-size=1 FILE。确切的实现取决于文件系统。


%s     block size (for faster transfers)

建议在复制大文件时一次应读取多少字节,例如bs在使用dd.但在我检查的系统上,它总是打印4096,即使较大的值可能会更快。看有没有办法确定 dd 的 bs 参数的最佳值?对此进行更多讨论。


从技术上讲,此信息(以及来自 的所有信息stat -f)来自statvfs系统调用。

%s对应于f_bsize字段,并且%Sf_frsize

所以你可以从以下开始研究它们的确切含义statvfs 手册页

 unsigned long  f_bsize;    /* Filesystem block size */
 unsigned long  f_frsize;   /* Fragment size */

相关内容