对于使用大量图像(每天±1k-3k)的单个项目,我使用自定义 PHP 脚本来处理图像并将其保存到服务器。
当前 PHP 脚本处理它们并保存在以下文件夹结构中: 因此最大级别为 5。但目前我认为以下目录结构如何影响 inode 计数?我应该将级别降低到 2 还是 3?
答案1
每个目录条目也是一个 inode 条目。
16**5 = 1,048,576
16**3 = 4,096
一年的图像...2,000 * 365 = 730,000。
这样每个目录大约有 178 个,深度为 2。深度为 5 时,利用率刚好超过一半。我觉得三个听起来不错。也许如果你在这个行业待十年的话我会选择 4。
答案2
每个文件和目录都会占用一个 inode,但我认为在一个大小合适的文件系统上,耗尽 inode 的风险并不大——在 5 层深度下,您的目录树将占用16^5
1048576 个 inode,这是一个相当大的数字,但不太可能压垮您的文件系统。另一方面,您存储的文件数量可能会导致一些问题……
但是,每级仅使用一个十六进制数字有点浪费——我通常每级使用三位数字(所以ab3/4f5/5e1/...
),因为这样每级有 4096 个目录,这在一个不错的文件系统的合理性能范围内(不要使用 4 位,因为 extN 只允许在单个目录中有 32000 个子目录)。
当然,还有整个文件系统世界,它们没有固定的 inode 限制,并且在面对每个目录中的大量文件时具有更好的性能,并且对子目录的数量没有限制......