在 Linux 系统中,一个目录下能存放的子目录(文件夹)数量主要取决于以下几个因素:
不同文件系统对单个目录下的子项(文件+文件夹)数量有不同限制: - ext4:默认约 64,000 个子项(实际受 inode 数量限制) - XFS:理论约 20 亿个子项 - Btrfs:无固定限制,但实际受存储空间限制 - ext3:约 32,000 个子项
dir_index
):支持更快的大目录操作ls
、rm
等操作会明显变慢最佳实践:
# 对大目录启用 dir_index(ext3/4)
tune2fs -O dir_index /dev/sdX
e2fsck -D /dev/sdX # 重建索引
# 查看当前目录项数量
ls -f | wc -l # -f 禁用排序加速统计
a/b/c
代替 abc
)# 查看文件系统类型
df -Th
# 查看 inode 使用情况
df -i
# 测试创建大量目录(谨慎操作)
mkdir testdir && cd testdir
time for i in {1..50000}; do mkdir $i; done # 测试创建速度
典型报错提示:
- mkdir: cannot create directory 'xxxx': Too many links
(达到文件系统限制)
- No space left on device
(可能是 inode 耗尽)
建议:生产环境中单个目录最好保持子项数量在 5,000 以下以获得最佳性能。