我们有一个 Linux 服务器进程,它将几千个文件写入目录,删除这些文件,然后将另外几千个文件写入同一目录而不删除该目录。我开始发现执行写入的进程越来越慢。
我的问题是:从 ls -l 的输出可以看出,文件夹的目录大小已从 4096 增长到 200000 以上。
root@ad57rs0b# ls -l 15000PN5AIA3I6_B total 232 drwxr-xr-x 2 chef chef 233472 5月30日 21:35 条形码
在 ext3 上,这些大目录大小会降低性能吗?
谢谢。
亚伦
答案1
是的,目录过大可能会带来问题。通常,最好的方法是将文件散列到子目录中,以避免出现这种情况。如果这不是一个选择,有一个 ext3 功能可以显著提高大型目录中的查找性能:
tune2fs -O dir_index /dev/$DEVICE
e2fsck -D /dev/$DEVICE
这将启用目录索引数据的 B 树哈希,从而显著缩短查找时间。当然,您的安装可能已启用此功能。您可以通过运行此命令并dir_index
在输出中查找以下内容来检查:
tune2fs -l /dev/$DEVICE | grep 'features:'
编辑:
另外,您可能还想考虑将其设置noatime
为挂载选项。这不是针对大型目录的特定调整,但可以在发生大量文件系统活动时提供相当大的性能改进。