如何在 Linux Web 服务器上最有效地存储和提供 1,000,000 多个小型 gzip 文件?

Jér*_*nge 10 performance database disk-space-utilization gzip

我有大量的静态内容,必须通过基于 Linux 的网络服务器交付。它是一组超过一百万个小的 gzip 文件。90%的文件小于1K,其余文件最多50K。将来,这可能会增长到超过 1000 万个 gzip 文件。

我应该将这些内容放在文件结构中还是应该考虑将所有这些内容放在数据库中?如果它在文件结构中,我可以使用大目录还是应该考虑较小的目录?

有人告诉我,文件结构的交付速度会更快,但另一方面,我知道文件将占用磁盘上的大量空间,因为文件块将超过 1K。

关于交付绩效的最佳策略是什么?

更新

作为记录,我在 Windows 7 下进行了测试,有 50 万个文件:

在此处输入图片说明

Sve*_*ven 6

我猜 FS 结构会更快,但是您需要一个良好的目录结构来避免目录包含大量文件。

我不会太担心丢失的磁盘空间。例如,在 16K 块大小的情况下,您将失去 15GB 的空间,在最坏的情况下,每个文件都需要一个额外的块。对于今天的磁盘大小,这不算什么,您可以根据您的特定需要调整文件系统的参数。


öde*_*öde 5

如果您选择文件结构选项,您可以做的至少在一定程度上提高磁盘 I/O 性能的一件事是使用 noatime+nodiratime 挂载分区,除非您必须拥有它们。它们根本不重要,所以我建议这样做。也许您也可以使用固态驱动器。