Ubuntu 12.04 Ext4 ext4_dx_add_entry:2006:目录索引已满!

Ubuntu 12.04 Ext4 ext4_dx_add_entry:2006:目录索引已满!

我在某些服务器中遇到了这个警告,我有一个包含数百万个(20 个多或少)文件的目录,但根据 ext4 文档,这应该不是问题。

知道这会对我的系统产生什么影响吗?我是否有丢失文件的危险?是否有任何配置可以阻止此行为?

[1130768.836378] EXT4-fs warning (device dm-0): ext4_dx_add_entry:2006: Directory index full!
[1130768.836558] EXT4-fs warning (device dm-0): ext4_dx_add_entry:2006: Directory index full!
[1130768.836739] EXT4-fs warning (device dm-0): ext4_dx_add_entry:2006: Directory index full!
[1130768.836914] EXT4-fs warning (device dm-0): ext4_dx_add_entry:2006: Directory index full!
[1130769.881446] EXT4-fs warning (device dm-0): ext4_dx_add_entry:2006: Directory index full!
[1130769.881668] EXT4-fs warning (device dm-0): ext4_dx_add_entry:2006: Directory index full!
[1130769.881841] EXT4-fs warning (device dm-0): ext4_dx_add_entry:2006: Directory index full!
[1130769.881969] EXT4-fs warning (device dm-0): ext4_dx_add_entry:2006: Directory index full!
[1130769.882084] EXT4-fs warning (device dm-0): ext4_dx_add_entry:2006: Directory index full!

输出df -i

Filesystem                             Inodes    IUsed    IFree IUse% Mounted on
/dev/mapper/INTEGRASERVER02--vg-root 72179712 11081503 61098209   16% /
none                                  2049034        2  2049032    1% /sys/fs/cgroup
udev                                  2046225     1252  2044973    1% /dev
tmpfs                                 2049034     1237  2047797    1% /run
none                                  2049034        2  2049032    1% /run/lock
none                                  2049034        1  2049033    1% /run/shm
none                                  2049034        2  2049032    1% /run/user
/dev/sda1                               62248      298    61950    1% /boot

答案1

每条消息都表示将文件添加到目录失败。

ext4 目录中的文件条目数量没有官方限制,但有两篇文章描述了原始设计(2001 年在 ext2 中开始),其中说明了以下内容,并且与 ext4 同样相关:

Linux 2.6 中的功能:

两级索引节点足以支持1600 万 52 个字符文件名。

Ext2 的目录索引

只有非常大的目录才需要第二个索引级别,它可以容纳稍多于3000 万項目。

如果您在目录中大量创建和删除文件,显然可能会由于文件名字符串中的碎片而丢失空间,您可以通过执行以下操作(在未挂载的文件系统上)恢复:

fsck -D /dev/...

参见 man fsck.ext4:

-D 优化文件系统中的目录。此选项使 e2fsck 尝试优化所有目录,如果文件系统支持目录索引,则通过重新索引它们,或者通过对目录进行排序和压缩以获得较小的目录,或者对于使用传统线性目录的文件系统。

相关内容