一尘不染

Linux上文件/目录的最大数量?

linux

我正在开发一个LAMP在线商店,它将允许管理员为每个项目上传多个图像。

我担心的是-马上就会有20000个项目,大约意味着60000张图像。

问题:

  1. Linux上文件和/或目录的最大数量是多少?

  2. 处理这种情况的通常方法是什么(最佳实践)?

我的想法是根据每个项目的唯一ID为每个项目创建一个目录,但那时我在主 上载 目录中仍然有20000个目录,并且它将无限期地增长,因为不会删除旧项目。

谢谢你的帮助。


阅读 611

收藏
2020-06-07

共1个答案

一尘不染

ext [234]文件系统具有固定的最大索引节点数;每个文件或目录都需要一个索引节点。您可以使用来查看当前计数和限制df -i。例如,在使用默认设置创建的15GB ext3文件系统上:

Filesystem           Inodes  IUsed   IFree IUse% Mounted on
/dev/xvda           1933312 134815 1798497    7% /

除此之外,目录没有特别限制;请记住,尽管每个文件或目录都至少需要一个文件系统块(通常为4KB),即使它是一个只有单个项目的目录。

如您所见,但是80,000个inode不太可能成为问题。而且,通过该dir_index选项(可通过启用tune2fs),在大型目录中的查找并不是一件大事。但是,请注意,许多管理工具(例如lsrm)可能很难处理其中包含过多文件的目录。因此,建议拆分文件,以使给定目录中的项目数不超过几百到一千。一种简单的方法是对您正在使用的ID进行哈希处理,并将前几个十六进制数字用作中间目录。

例如,假设您的商品ID为12345,且哈希为'DEADBEEF02842.......'。您可以将文件存储在下/storage/root/d/e/12345。现在,您已将每个目录中的文件数减少了1/256。

2020-06-07