对于许多小文件来说,什么是最好的文件系统?

对于许多小文件来说,什么是最好的文件系统?

我有一台带有 2TB 驱动器的 Debian 10 服务器,我想在其中存储超过 1.2 亿个小文件。如果我使用 ext4,我就会用完 inode。

我应该使用什么文件系统?

我一直在阅读有关 reiserfs 和 reiser4 的内容,但我不确定它们是否仍然受支持。

是否有一个包含我可以使用的内置 Debian 软件包的文件系统?

主要用例是使用 Apache 向用户提供 256x256 栅格地图图块。我猜速度并不是那么重要,因为限制因素是 ping 时间。尽可能多地使用字节非常重要,但我也有大量的可用磁盘空间。

编辑:文件通常为 1kb 到 3kb。

答案1

您不规定“小”有多小,但如果文件足够小且可压缩,embedded_data启用该功能的 ZFS 池可以将“小”文件存储在块指针本身中,从而无需分配块(或更多)文件存储空间,并且还消除了读取或写入文件的 I/O 调用,因为文件数据与文件元数据一起写入块指针本身。

另请注意,ZFS 永远不会用完 inode。

 embedded_data

           This feature improves the performance and compression ratio of
           highly-compressible blocks.  Blocks whose contents can compress
           to 112 bytes or smaller can take advantage of this feature.

           When this feature is enabled, the contents of highly-
           compressible blocks are stored in the block "pointer" itself (a
           misnomer in this case, as it contains the compressed data,
           rather than a pointer to its location on disk).  Thus the space
           of the block (one sector, typically 512 bytes or 4KB) is saved,
           and no additional i/o is needed to read and write the data
           block.

答案2

假设您想要优化磁盘空间的使用(不仅是 inode 计数,也许还包括访问时间):

您可能需要一个文件系统块再分配/尾部合并以便将小数据合并到物理磁盘上的一个分配单元(“簇”)中。

此外,根据您的情况,控制文件系统的簇大小可能是明智的,以节省空间。最佳值可以通过测试来确定。

Linux 的一个稳定候选者是btrfs.

当然,如果您乐意使用ext4(并且可能不是空间最优),您可以重新创建您的文件系统(将数据复制到其他地方以首先备份!),并可以选择很多 inode。

mke2fs(8)

   -N number-of-inodes
          Overrides the default calculation of the number of inodes that
          should be reserved for the filesystem (which is based on the number
          of blocks and the  bytes-per-inode ratio).  This allows the user to
          specify the number of desired inodes directly.

相关内容