我正在开发一个LAMP在线商店,它将允许管理员为每个项目上传多个图像。
我担心的是-马上就会有20000个项目,大约意味着60000张图像。
问题:
Linux上文件和/或目录的最大数量是多少?
处理这种情况的通常方法是什么(最佳实践)?
我的想法是根据每个项目的唯一ID为每个项目创建一个目录,但那时我在主 上载 目录中仍然有20000个目录,并且它将无限期地增长,因为不会删除旧项目。
谢谢你的帮助。
ext [234]文件系统具有固定的最大索引节点数;每个文件或目录都需要一个索引节点。您可以使用来查看当前计数和限制df -i。例如,在使用默认设置创建的15GB ext3文件系统上:
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvda 1933312 134815 1798497 7% /
除此之外,目录没有特别限制;请记住,尽管每个文件或目录都至少需要一个文件系统块(通常为4KB),即使它是一个只有单个项目的目录。
如您所见,但是80,000个inode不太可能成为问题。而且,通过该dir_index选项(可通过启用tune2fs),在大型目录中的查找并不是一件大事。但是,请注意,许多管理工具(例如ls或rm)可能很难处理其中包含过多文件的目录。因此,建议拆分文件,以使给定目录中的项目数不超过几百到一千。一种简单的方法是对您正在使用的ID进行哈希处理,并将前几个十六进制数字用作中间目录。
dir_index
tune2fs
ls
rm
例如,假设您的商品ID为12345,且哈希为'DEADBEEF02842.......'。您可以将文件存储在下/storage/root/d/e/12345。现在,您已将每个目录中的文件数减少了1/256。
'DEADBEEF02842.......'
/storage/root/d/e/12345