文件系统块大小混乱

dot*_*hlu 1 filesystems

我知道,一般来说,块大小是文件系统的最小操作单位,但我对 I/O 性能基准工具 fio 感到困惑,它有一个bs设置“块大小”的参数。

如果块大小是针对文件系统的,为什么 fio 可以设置一个作为基准?它们的“块大小”相同吗?

如果我发现 1M“fio 块大小”的性能最佳,因为 fio 可以做到这一点,我是否可以强制在此文件系统上运行的所有进程使用 1M 块大小以获得最佳性能?对于使用熔断器安装的远程文件系统怎么样,我可以在安装时设置块大小吗?

Ter*_*nen 5

这里有很多细节,我在这里尝试总结一下要点。

文件系统块大小是一次可以保留的最小分配单元。因此,如果文件系统的块大小为 4096,则大小为 1 字节的文件在硬盘上仍占用 4096 字节。

这是因为文件系统必须知道硬盘的哪一部分属于哪个文件。如果块大小较小,则分配表会较大。如果块大小较大,则小文件会浪费更多空间。

根据所使用的文件系统,还有其他为文件分配空间的策略。但这是最常用的基本策略。

然而,在应用程序级别,该参数是执行基准测试时使用的bs单个写入/读取操作的块大小。fio较大的写入/读取操作大小可以提供更好的性能,因为可以组合多个文件系统级块写入。

您不能强制应用程序使用任何特定的块大小。他们随时准确地写入/读取所需的数据量。单个写/读操作的大小从几个字节到兆字节不等,全部取决于应用程序。

fio这里是一个例外,因为它是一个基准工具。

远程文件系统在远程服务器的文件系统之上运行,因此远程服务器上的实际文件系统指定硬盘上使用的块大小。

访问远程服务器的文件系统时使用的协议也有一些“块大小”,通常由 TCP 段大小定义,而 TCP 段大小由 MTU 确定。在 Internet 中,MTU 通常为 1500 字节。在某些本地环境中,MTU 可以是 9000 字节。这需要网络各个部分(交换机、路由器和网卡)的支持才能正常工作。