如何分发文件和文件夹来处理大量的文件

我想在我的服务器上pipe理大量的文件(比如说几百万)。 需要将文件保存在两个或三个级别的文件夹中,以使每个文件夹中的文件数量保持较低。 另一方面,有很多文件夹花费inode是不好的。

每个文件夹的最佳文件比率是多less? 有没有一个理论的方法来确定这个,还是取决于服务器的规格?

服务器规格可能不像您所使用的文件系统那么严重。 不同的文件系统有不同的存储目录数据的方法。 这会影响各种尺寸的扫描速度。

另一个重要的考虑是文件的生命周期。 如果您经常添加和删除文件,您可能希望叶子目录比它可能会更小。

您可能想要查看Apache Web服务器和Squid代理使用的caching目录结构。 这些都是经过良好testing的caching处理相对较高的变化率和规模。

编辑:你的问题的答案很大程度上取决于文件的生命周期和访问模式。 这些因素将显着影响磁盘I / O和缓冲存储器的要求。 文件数量可能不太重要。

除select文件系统外,内存,磁盘接口,磁盘数量和RAID设置都将影响磁盘访问性能。 性能需要足够的要求有一定的余地。

随着写入和删除的增加,磁盘设置更为重要。 随着访问文件变得更加随机,这也可能更为重要。 这些因素往往会增加对磁盘吞吐量的要求。

增加内存通常使得从磁盘缓冲区访问文件的可能性大于磁盘。 这将增加大多数系统的文件访问性能。 访问许多大文件可能导致较差的磁盘caching。

对于我所使用的大多数系统,文件被访问的可能性与上次访问的时间有关。 最近访问的文件越有可能再被访问。 在这些情况下,散列algorithm在优化检索中往往是重要的。 如果文件访问是真正的随机,这是不太重要的。

删除文件所需的磁盘I / O可能比添加文件要高得多。 从大型目录中删除大量文件时,许多系统都存在重大问题。 文件添加和删除的比率越高,这个变得越重要。 考虑到这些因素,文件生命周期是一个重要因素。

备份是另一个问题,可能需要安排,所以他们不会导致磁盘缓冲问题。 较新的系统允许IO被删除,所以备份和其他维护程序对应用程序的影响较小。