管理大量文件

时间:2013-12-28 10:41:21

标签: php database web filesystems centos

我的网站运行在CentOS 6.3 x64专用服务器,2 x 1.5 Tb镜像RAID硬盘上。有一个文件夹包含用户上传的图像。目前大约有100万个文件。图像的平均大小约为30-70 kb。

到目前为止一切都很好(Midnight Commander除了需要几秒钟才能进入文件夹),但这个数量将继续增长到数百万,可能会达到数千万,甚至更多。假设上传:删除率介于100:1和1000:1之间。还有更新功能,但它可以表示为删除+上传。

以下是我的问题:管理此类文件数量的最佳方法是什么?文件系统是否可以,或者有更好的技术?可能是一些类似NoSQL的技术,或类似的东西?

2 个答案:

答案 0 :(得分:2)

True Filesystem应该用于存储文件而不是数据库。但是,它不是设计用于在1个目录中查看非常大的数字(数百万将导致滞后)。

你可以做的是创建一个基于文件名+时间戳的三个地图结构,这应该在处理大量文件时优化目录/文件查找。

  1. concat filename + timestamp
  2. 从步骤1计算md5哈希
  3. b2d03b39b071d2153efd7f1aea5ed5d5是您的md5哈希作为示例创建此地图结构b2d / 03b / 39b
  4. 请注意,您现在还要根据哈希部分对图像进行分区,因此请注意,因为您可以覆盖图像,这样可以在1个目录中保留少量图像。

    请注意,您应修改PHP代码并重新设计表格以充分利用此方法。

答案 1 :(得分:1)

Filesystem适合存储文件,这就是你正在做的事情。

您可以考虑尝试替代文件系统类型(我被告知ZFS在列出大量小文件时提供了出色的性能)