【问题标题】:Many images in the same folder in a Linux based application基于 Linux 的应用程序中同一文件夹中的许多图像
【发布时间】:2013-08-29 09:41:11
【问题描述】:

我有一个基于 Linux 的应用程序(Drupal - PHP + Apache + MySQL),它可以快速扩展以在同一个文件夹中保存数千张图片。我现在可能接近2,000。在一个文件夹中有这么多图像有什么缺点吗?它能否代表性能方面的影响?

我不打算浏览该文件夹中的文件,服务器只是在请求其 URL 时提供图像,但我想知道我将来是否会遇到问题(应用程序正在缩放,根据数量进行缩放图片,它可以达到 20,000、30,000 张图像......)。也许我应该计划一个策略,将这个巨大的图像文件夹拆分为子文件夹,例如使用子文件夹的用户名,或者图片上传的年份月份。

简而言之,问题是:在 Linux 服务器的同一个文件夹中拥有数千张图像是否很糟糕(不确定我的应用程序使用的是哪种风格,它实际上是在共享托管环境中)?我应该做些什么来避免这种方法并将这些项目拆分到子文件夹中吗?关于每个文件夹的文件数或每个文件夹的最大文件数是否有任何建议?

感谢您分享您对此的看法。

【问题讨论】:

    标签: linux image file directory


    【解决方案1】:

    这在很大程度上取决于文件系统(以及挂载选项)。

    最近的文件系统(ext4btrfs ....)能够处理包含大量文件的巨大目录(因此可能可以处理包含 50 万个文件的目录)。

    但是,在需要fsck 多 TB 文件系统的极少数情况下,您不会感到高兴!

    但是,shell(和通配函数 - 读取 glob(7)glob(3) 等...)可能对包含数千个条目的目录不满意。 (考虑到交互式 shell 中的 autocomplete 可能需要扫描目录)。如果ls 需要一分钟来回答数千行,那么人类用户(例如一些系统管理员)可能会生气....

    我建议每个目录不要超过几千个文件(包括子目录)。考虑像@​​987654331@ ... a0/999.png a1/001.png ... a1/999.png .... b9/ 等组织您的图像...

    如果您确实有大量文件,您可能希望为它们使用不同的文件系统(例如,a0/ ... a9/ 在一个磁盘上,b0/ ... b9/ 在另一个磁盘上一)....或者使用LVM,或者OpenStackSwift对象存储或者Cinder块存储等

    同时查看Nosql 数据库...

    顺便说一句,如果您的目标是扩展到 PB 存储,事情将变得不那么容易......

    您可能希望在某个数据库中至少存储文件的名称。

    【讨论】:

    • 谢谢,我想我不会达到 PB。如果我这样做了,到那时我将转向更强大的东西。但是感谢您的所有提示,为未来做计划很重要。
    猜你喜欢
    • 2019-02-10
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多