问题:启用 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`
属性I
和e
是“基于散列树的索引”和“范围”。这两个都不是新属性,也出现在其他磁盘/服务器上。
那么,我如何知道是否要重新创建目录?
答案1
tune2fs -l
如果启用,输出将显示该large_dir
功能。应该是,刚刚设置。我找不到有关它的其他文档,大概是继续创建更多文件。
从消息中的 inode 计数来看,如果大多数 inode 都在一个目录中,则限制为 1000 万或 1100 万。这与largedir 的覆盖范围适用于 Linux 4.13。超出前一个限制,该功能正在使用中。
至于完整性,我希望文件系统能够保持完整性,如果索引已满,则拒绝更多文件。但可能会出现问题,因为这不是常见的错误情况。考虑运行fsck
只是为了确认一致性。并抽查最后一个文件是否有意义,检查元数据和内容。