文件系统块大小混乱

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

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

如果我发现使用1M“fio块大小”的性能是最佳的,由于fio可以这样做,我可以强制在此文件系统上运行的所有进程使用1M块大小以实现最佳性能吗? 那么装有保险丝的远程文件系统怎么办?我可以在安装时设置块大小吗?

这里有很多细节,我会尽量总结一下这里的要点。

文件系统块大小是可以一次保留的最小分配单位。 因此,如果文件系统的块大小为4096,则一个字节大小的文件在硬盘上仍然需要4096字节。

这是由于文件系统必须知道哪个部分的硬盘属于哪个文件。 如果块大小较小,那么分配表将会更大。 如果块大小更大,那么更小的空间将被浪费在小文件上。

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

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

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

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

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

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