我很好奇,从性能的angular度来看,将所有文件存储在一个目录中与将每个文件放在单独的目录中有什么优势? 我不关心组织。
此外,这是假设文件将经常访问 – 所以I / O使用率会很高。 不涉及目录列表,文件将被绝对path拉动。
系统环境是Linux,CentOS 5.3。
path分辨率与目录中文件的数量成比例(尽pipe不是线性的)。 即使parsing绝对path也是如此,因为文件系统仍然需要扫描每个目录块中的文件名来parsingpath。 不同的文件系统具有不同的分辨率特性,但是一般情况下,您将开始注意大约10,000个文件的性能。
除非这些目录位于不同的磁盘或RAID上,否则,如果它们全部位于一个目录中,则不会看到明显的差异。 每个磁盘的I / O操作放在一个队列中。 如果他们在不同的RAID上,那么你会看到你正在寻找的显着优势。
如果你有足够的内存来保存所有的文件,你有没有考虑将它们caching在RAM中? http://www.linuxmaza.com/system-administration/how-to-mount-ramfs-tmpfs-in-linux/
ext3做了一些很好的事情:
http://www.ibm.com/developerworks/linux/library/l-fs8.html
请参阅部分标题:日记选项和写入延迟
这可以让你“调整”你的应用程序的ext3。