手册页说不应该更改每组的块数(-g选项)并使用tune2fs -l我可以看到它设置为32768.这意味着将打包128到512 GiB之间的块组(取决于块大小)在一起,但这与默认值相比如何?手册页没有说明默认值是什么,我也没有在tune2fs -l输出中看到它.
解决方法
Microsoft肯定建议更改最佳实践文档中的-G选项,而不是-g选项,显然不鼓励使用/更改/调整,正如您在手册页中所述.
-G number-of-groups
Specify the number of block groups that will be packed together to create a larger virtual block group (or “flex_bg group”) in an ext4 filesystem. This
improves Meta-data locality and performance on Meta-data heavy workloads. The number of groups must be a power of 2 and may only be specified if the flex_bg
filesystem feature is enabled.
您可以通过运行dump2fs -h / my / file / system并查找Flex块组大小来查看默认值.例如,对于我的ext4分区,结果是:
Flex块组大小:16
这正是Theodore Tso所说的,应该是他在第17页的Speeding up filesystem checks in ext4中所做的.
By default mke2fs uses 16 block groups/flex_bg group (must be power of 2)
至于它的作用,你可以看到Outline of Ext4 Filesystem and Ext4 Online Defragmentation Foresight开始的大型文件系统上fsck操作的性能差异,从第14页开始.
根据Linux内核wiki,这可以通过将元数据分组在一起以加快加载速度,并使更大的文件在磁盘上连续. ext4 kernel wiki: Flexible Block Groups
该wiki入口引用的最后一部分使得较大的文件在磁盘上是连续的,这是为什么将其设置为4096的Hyper-V最佳实践的关键部分,因为它允许动态的较小实际磁盘空间使用VHDX文件,因为文件在虚拟硬盘上的文件系统上没有碎片,并且数据结构更有效地分组.
有关Linux方面的Microsoft最佳实践建议背后的原因的更多细节可以在OpenSuSE 12.1发行说明中找到. Formatting Large Disk Partitions on Windows Server和红帽企业Linux 6技术说明6.4 Virtualization也是如此.
我希望这有助于消除您的困惑并回答您的问题. =)