linux – mkfs.ext4 -G选项有什么作用?

在Microsoft的 Best Practices for running Linux on Hyper-V页面上,建议使用ext4而不是ext3,并使用mkfs.ext4 -G 4096 / dev / sdX1“指定组数为4096”.这到底是做什么的?

手册页说不应该更改每组的块数(-g选项)并使用tune2fs -l我可以看到它设置为32768.这意味着将打包128到512 GiB之间的块组(取决于块大小)在一起,但这与认值相比如何?手册页没有说明认值是什么,我也没有在tune2fs -l输出中看到它.

解决方法

-g选项与mkfs.ext4的-G选项非常不同.

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也是如此.

我希望这有助于消除您的困惑并回答您的问题. =)

相关文章

1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...
1 删除0字节文件 find -type f -size 0 -exec rm -rf {} ...
## 步骤 1:安装必要的软件包 首先,需要确保系统已安装 `dh...