当启用 ext4 large_dir 时,如何知道它已被使用?

当启用 ext4 large_dir 时,如何知道它已被使用?

问题:启用 ext4large_dir选项后,我想知道它是否被使用以及/或者是否需要重新创建目录才能使用它。

详细信息:我的目录有时可以容纳数百万个文件。我遇到了:

[ma jan 11 01:37:22 2021] EXT4-fs warning (device nvme1n1): ext4_dx_add_entry:2349: Large directory feature is not enabled on this filesystem
[ma jan 11 08:42:21 2021] EXT4-fs warning (device nvme1n1): ext4_dx_add_entry:2345: Directory (ino: 11010158) index full, reach max htree level :2

因此,我启用了large_dir

tune2fs -O large_dir /dev/nvme2n1
tune2fs -O large_dir /dev/nvme1n1

现在,你怎么知道它被使用了?lsattr -d没有显示任何新内容:

# lsattr -d 0 1 2 ../corrupt_2012
-----------I--e--- 0
-----------I--e--- 1
-----------I--e--- 2
-----------I--e--- ../corrupt_2012   # Culprit with inode 11010158. It's been re-created after adding `large_dir`

属性Ie是“基于散列树的索引”和“范围”。这两个都不是新属性,也出现在其他磁盘/服务器上。

那么,我如何知道是否要重新创建目录?

答案1

tune2fs -l如果启用,输出将显示该large_dir功能。应该是,刚刚设置。我找不到有关它的其他文档,大概是继续创建更多文件。

从消息中的 inode 计数来看,如果大多数 inode 都在一个目录中,则限制为 1000 万或 1100 万。这与largedir 的覆盖范围适用于 Linux 4.13。超出前一个限制,该功能正在使用中。

至于完整性,我希望文件系统能够保持完整性,如果索引已满,则拒绝更多文件。但可能会出现问题,因为这不是常见的错误情况。考虑运行fsck只是为了确认一致性。并抽查最后一个文件是否有意义,检查元数据和内容。

相关内容