在微软的在超级V上运行Linux的最佳实践页面上,建议使用ext4而不是ext3,并使用mkfs.ext4 –G 4096 /dev/sdX1
“指定组数为4096”。这到底是在做什么?
手册页说每个组的块(-g选项)不应该被更改,使用tune2fs -l
我可以看到它被设置为32768。这意味着将将128-512个GiB (取决于块大小)的块组打包在一起,但这与默认的块组相比如何呢?手册页没有说明默认值是什么,我也没有在tune2fs -l
输出中看到它。
发布于 2015-09-11 01:17:59
-g
选项与mkfs.ext4
的-G
选项非常、非常不同。
微软肯定建议在最佳实践文档中更改-G
选项,而不是-g
选项,正如您从手册页面中注意到的那样,显然不鼓励使用/更改/调整该选项。
-G数量组指定将打包在一起以在ext4文件系统中创建更大的虚拟块组(或"flex_bg组“)的块组的数量。这提高了元数据局部性和元数据繁重工作负载的性能。组数必须是2的幂,并且只能在启用flex_bg文件系统特性时指定。
您可以通过运行dump2fs -h /my/file/system
并查找Flex block group size
来查看默认值。例如,对于我的一个ext4分区,结果是:
Flex block group size: 16
这正是西奥多·左( Theodore Tso )所说的,应该是他在第17页的演示文稿( 加快ext4 4中的文件系统检查 )中说的。
默认情况下,mke2fs使用16个块组/flex_bg组(必须是2的幂)
至于它所做的事情,您可以从第14页开始,看到fsck
在Ext4 4文件系统概述与Ext4 4在线碎片整理展望中的大型文件系统上的操作的性能差异。
根据linux内核wiki,这是通过将元数据分组在一起,以便更快地加载,并使更大的文件在磁盘上连续。ext4 4内核wiki:灵活块组
wiki条目引用enable larger files to be contiguous on disk
的最后一部分是为什么将其设置为4096的Hyper最佳实践的关键部分,因为它允许更小的动态VHDX文件的实际磁盘空间使用,因为文件在虚拟硬盘上的文件系统上没有很大的碎片,而且数据结构更有效地分组。
关于微软在Linux方面的最佳实践建议背后的推理的更多细节,可以在OpenSuSE 12.1发行说明中找到。在Windows上格式化大型磁盘分区和RedHatEnterpriseLinux6技术说明6.4虚拟化也是如此。
我希望这有助于澄清你的困惑和回答你的问题。=)
https://serverfault.com/questions/705209
复制相似问题