存储&在Linux中访问多达1000万个文件

我正在编写一个需要存储大约1000万个文件的应用程序。 它们目前以UUID命名,每个大约4MB,但总是相同。从/向这些文件读取和写入将始终是顺序的。 我正在寻找2个主要问题的答案: 1)哪种文件系统最适合这种情况。 XFS还是ext4? 2)是否有必要将文件存储在子目录下以减少单个目录中的文件数量? 对于问题2,我注意到人们已经尝试发现可以存储在单个目录中的文件数量的XFS限制,并且没有找到超过数百万的限制。他们注意到没有性能问题。在ext4下怎么样? 在人们做类似事情时,有些人建议将inode编号存储为文件的链接而不是文件的性能(这是在数据库索引中。我也在使用)。但是,我没有看到用于按inode编号打开文件的可用API。这似乎更像是在ext3下提高性能的建议,我不打算顺便使用它。 ext4和XFS限制是什么?从一个到另一个有什么性能优势,你能看到在我的情况下使用ext4而不是XFS的理由吗?     
已邀请:
您绝对应该将文件存储在子目录中。 EXT4和XFS都使用高效的文件名查找方法,但是如果您需要在诸如
ls
find
这样的目录上运行工具,那么您将很高兴将这些文件放在1,000到10,000个文件的可管理块中。 inode号是为了提高EXT文件系统的顺序访问性能。元数据存储在inode中,如果您不按顺序访问这些inode,则元数据访问将被随机化。通过以inode顺序读取文件,您也可以按顺序访问元数据。     
如果您愿意,现代文件系统将允许您将1000万个文件存储在同一目录中。但工具(ls及其朋友)将无法正常工作。 我建议放一个级别的目录,一个固定的数字,可能是1000个目录,并将文件放在那里(10,000个文件可以容忍shell,“ls”)。 我已经看到了创建多级目录的系统,这确实是不必要的,增加了inode消耗并使遍历变慢。 10M文件也不应该是一个问题,除非你需要对它们进行批量操作。 我希望你需要修剪旧文件,但像“tmpwatch”这样的东西可能适用于10M文件。     

要回复问题请先登录注册