文件系统块大小混乱

文件系统块大小混乱

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

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

如果我发现 1M“fio 块大小”的性能最佳,由于 fio 可以做到这一点,我可以强制在此文件系统上运行的所有进程使用 1M 块大小来实现最佳性能吗?对于使用 fuse 安装的远程文件系统,我可以在安装时设置块大小吗?

答案1

这里的细节很多,我将尝试在此总结要点。

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

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

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

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

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

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

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

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

相关内容