文件数量是否会降低服务器的速度?

Goo*_*bot -5 linux hosting storage filesystems file-sharing

拥有大量文件显然会减慢操作系统的速度;但是这个问题严重到什么程度呢?考虑到文件已经很好地分布在多级文件夹中。文件数量(可能是因为使用 inode)仍然会降低系统速度吗?

我说的是几百万!由于不同的程序,这对于台式计算机来说不算太多;但这对于网络服务器来说太多了。

我很想知道存储数百万个文件(在适当的文件夹中)是否对服务器性能有显着影响?

更多信息:将ext4 视为文件系统,在两级文件夹中每个文件夹有 100 个文件。

vor*_*aq7 9

Having numerous files will obviously slow down the OS
不,真的不会。我的 *NIX 系统的 inode 利用率为 99%(“接近文件系统可以容纳的文件数的上限”)并且没有性能问题。
我的工作站目前的 inode 利用率为 90%,我所有的性能问题都是由于 RAM 不足造成的。


but how much this problem is serious? Consider that the files have been well distributed over multi-level folders. Does still the number of files (probably because of using inodes) can slow down the system?
这不是一个严重的问题。正确架构您应该能够在没有任何性能问题的情况下达到系统的 inode 限制。
另请注意,*NIX 系统上的每个目录(“文件夹”)都使用一个 inode。


I am talking about few millions! This is not too much for a Desktop computer, due to different programs; but this is too much for web servers.
您基于什么(大部分是错误的)陈述?假设它们运行相同的操作系统,为什么您的桌面和服务器在文件系统行为方面会有神奇的不同?

“不同的程序”对文件系统性能没有影响。操作系统负责告诉您哪些文件位于何处(逻辑上位于文件系统内,物理上位于磁盘上),并且大多数文件系统在这方面非常有效。


I am curious to know whether storing few millions of files (in appropriate folder) has a significant effect on the server performance?
一个目录中有数百万个文件?不可取(并且在许多系统上不可能 - 通常对目录中的最大文件数有限制)。遍历
一个非常大的目录树可能会导致性能问题(操作系统需要时间遍历树并列出所有子目录,然后您的软件必须处理它正在处理的大量数据),但如果您没有一个非常不合理的目录结构(比如“Everything in /dumping_ground”)这不应该是一个问题。



针对上面的编辑:

More Information: Consider ext4 as filesystem, and 100 files per folder in two-level folders.
你在开玩笑吧?考虑 中的文件数/usr/bin

# ls -a /usr/bin | wc -l
     448
Run Code Online (Sandbox Code Playgroud)

这就是/usr/bin

  • (1) 你错了。目前,我的主要分析服务器拥有超过 10 亿个文件。这是服务器运行的方式。(2) 一个正确架构的系统永远不应该在一个目录中倾倒太多的垃圾,从而导致性能问题。(3) 请参阅上面的编辑以回应您在问题中的编辑:) (4认同)
  • @Ali 文件就是文件。与其目的无关。因此可执行文件、图像或电子邮件没有任何区别。如果你真的喜欢大存储,那么看看 Cassandra。但它目前只能处理 2^128(=340 个十亿)文件。 (2认同)