用于存储 10+ 千份文件的 ext4 挂载标志

用于存储 10+ 千份文件的 ext4 挂载标志

我已经用标志初始化了一个大的主分区-T smallmke2fs系统small上的配置如下:

    small = {
            blocksize = 1024
            inode_size = 128
            inode_ratio = 4096
    }

这是一个 800 GB 的 SSD(云驱动器),它将存储 1000 多万个小文件,大小从 ~10KB 到 ~100KB。

我尝试仔细阅读手册页mount并找出最佳的标志组合,下面是我的列表:

  • rw-读和写
  • nosuid-执行时不需要用户或组 ID
  • nodev-块开发文件不应该出现在这里
  • noexec-设置了 exec 位的文件也不受欢迎
  • auto-允许mount -a
  • nouser-只能root(重新)安装
  • async-异步写入
  • relatime-仅当文件被修改时更新访问时间。
  • data=ordered-大概应该提高读取性能
  • errors=remount-ro-出现错误时停止书写
  • discard-推荐使用SSD
  • auto_da_alloc-在断电的情况下对抗文件系统损坏(也许不需要,因为这是一个云驱动器?)
  • inode_readahead_blks=16-文件系统将成为大量小文件的存放地,因此较大的预读操作只会降低性能。我不知道平均大小为 50KB 的文件的最佳值,因此只需在此处输入比默认值小一倍的值即可。
  • debug

我确实需要更有经验的人的第二意见。我特别不确定discardrelatimedata=orderedauto_da_allocinode_readahead_blks其他标志,我错过了或误解了它们。 有多危险data=writeback? 这样的标志可能会丢失多少数据,只是最后 5 秒(提交的默认值)吗? 关于这个练习的其他见解?

答案1

你应该只需使用 XFS 文件系统为了这。

ext4 不太适合这种工作负载,因为你使用的是 SSD,而且文件数量非常多。Red Hat 这样做是有原因的现在默认为 XFS

答案2

为什么不考虑在 Linux 上使用 ZFS?ZFS 绝对优于 ext4,并且被认为可以在 Linux 上投入生产。请参阅http://www.phoronix.com/scan.php?page=news_item&px=MTc4NTM

安装并不困难;参见http://zfsonlinux.org/了解安装信息。

相关内容