我们希望在Linux文件系统中存储数百万个文本文件,目的是能够压缩并提供任意集合作为服务。我们尝试了其他解决方案,例如键/值数据库,但是对并发性和并行性的要求使使用本机文件系统成为最佳选择。
最直接的方法是将所有文件存储在一个文件夹中:
$ ls text_files/
1.txt
2.txt
3.txt
这在EXT4文件系统上应该是可能的,而EXT4文件系统对文件夹中的文件数没有限制。
这两个FS过程将是:
- 从网络抓取中写入文本文件(不受文件夹中文件数量的影响)。
- 压缩所选文件,由文件名列表给出。
我的问题是,在一个文件夹中存储多达一千万个文件是否会影响上述操作的性能或整个系统的性能,这与为文件驻留一个子文件夹树有什么不同?
ls -l
其他任何操作stat
(例如,bash
globbing / tab补全)都将被人为地加快。而不是经过一些磨损(删除一些文件,编写一些新文件)。ext4在此方面可能比XFS更好,因为XFS为i节点和数据动态地分配空间,所以我认为i节点可能会更加分散。(但这是基于很少的详细知识的纯猜测;我几乎没有使用ext4)。与abc/def/
子目录一起。
ZipOutputStream
创建zip文件,也几乎可以击败任何免费的Linux本地文件系统-我怀疑您想为IBM的GPFS买单。处理JDBC结果集并使其成为zip流的循环可能仅是6至8行Java代码。
dir_index
(默认情况下通常启用)会加快查找速度,但可能会限制每个目录中的文件数。