建议填充大型 ext4 数据驱动器的最大百分比

建议填充大型 ext4 数据驱动器的最大百分比

ext 文件系统的默认保留块百分比是 5%。在 4TB 数据驱动器上,这是 200GB,这对我来说似乎太大了。

显然这可以通过tune2fs来调整:

 tune2fs -m <reserved percentage> <device>

然而,tune2fs 的手册页指出,这些保留块的原因之一是为了避免碎片。

因此,考虑到以下内容(我试图具体说明以避免意见分歧很大):

  • 〜4TB硬盘
  • 用于存储大文件(全部>500mb)
  • 一旦满了,很少写入(可能每月一次替换 1-5 个文件)
  • 仅数据(驱动器不运行任何操作系统或应用程序)
  • 中等阅读量(每周约 20tb,每 3 个月阅读一次整卷)
  • HDD 磨损是一个值得关注的问题,为了节省 20GB 而杀死 HDD 并不是理想的结果(这还值得关注吗?)

在不导致碎片(从性能和/或硬盘磨损的角度来看很明显)的情况下,驱动器可以填充的最大百分比是多少?

将大数据硬盘填充到高百分比和/或将保留块计数设置为 0.1% 是否还有其他问题?

答案1

碎片化的最大问题是自由空间碎片,这意味着当您的文件系统已满并且不再有大块可用空间时,您的文件系统性能就会急剧下降。每个新文件一次只能分配一小块空间,因此非常碎片化。即使删除了其他文件,之前写入的文件也会散落在磁盘上,导致新文件再次碎片化。

在您上面描述的使用案例中(〜500MB文件,相对较少的覆盖或写入新文件,定期删除旧的〜500MB文件,我假设某种视频存储系统),您将获得相对较少的碎片 - 假设您的文件尺寸保持相对恒定。如果您的写入是单线程的,则尤其如此,因为多个写入线程不会竞争少量的可用空间并交错其块分配。对于从磁盘中删除的每个旧文件,您将获得几百 MB 的连续空间(假设该文件一开始没有碎片),并且它会再次被填满。

如果您确实有多个并发写入器,那么使用fallocate()为每个文件保留大块空间(并truncate()在最后释放任何剩余空间)也将避免碎片。即使没有这个,ext4 也会在写入文件时尝试为文件保留(在内存中)大约 8MB 的空间,以避免最严重的碎片。

我建议您至少保留文件大小的相当倍数的可用空间(例如 16GB 或更大),这样您就不会消耗掉所有点点滴滴的可用块并引入永久的可用空间碎片。

相关内容