我正在为大型存储场进行设置,为了避免需要长达一个月的 fscks,我的计划是将存储拆分为许多较小的文件系统(这很好,因为我有一个存储良好的文件树, 所以我可以很容易地在1/
, 2/
, 3/
,等上安装单独的文件系统4/
)。
我的困难在于找到文件系统的“合理”大小的任何枚举,以保持 fsck 时间同样“合理”。虽然我完全意识到给定大小的绝对时间在很大程度上取决于硬件,但我似乎找不到任何关于具有不同文件系统大小的 ext3 fsck 时间的曲线形状的描述,以及其他变量是什么(单个目录中的文件系统是否比一个目录中的文件系统花费更长的时间,树中数千个目录中的每个目录中有 10 个文件;大文件与小文件;完整文件系统与空文件系统;等等)。
有没有人提到任何经过充分研究的数字?如果做不到这一点,关于这些问题的任何轶事至少应该有助于指导我自己的实验,如果需要的话。
编辑:澄清:无论文件系统如何,如果元数据出现问题,都需要检查。是否启用或需要基于时间或挂载的 re-fscks 都不是问题,我要求专门针对 ext3 的数字的唯一原因是因为这是最有可能选择的文件系统。如果您知道具有特别快的 fsck 进程的文件系统,我愿意接受建议,但它确实需要是一个强大的选项(声称“文件系统 X 永远不需要 fscking!”将被嘲笑和嘲笑) . 我也意识到备份的必要性,并且 fsck 的愿望不能替代备份,但是只是丢弃文件系统并在出现故障时从备份中恢复,而不是 fscking 似乎真的,
根据Mathur 等人的论文。(第 29 页),e2fsck 时间在某个点之后随着文件系统上的 inode 数量线性增长。如果图表是可以参考的,那么使用多达 1000 万个 inode 的文件系统会更有效。
切换到 ext4 会有所帮助 - 在您的文件系统未加载到边缘的情况下,性能提升(由于未检查标记为未使用的 inode)没有明显的影响。
我认为您将不得不进行自己的基准测试。谷歌上的快速搜索没有发现任何东西,除了 ext4 fscks 比 ext3 快很多。
因此,创建一些 ext3 分区,100GB、200GB 等,直至您将使用的磁盘大小。然后用数据填充它们。如果您可以使用类似于您的生产数据的数据(每个目录的文件、文件大小分布等),那将是最好的。请注意,简单地从另一个分区或备份设备复制文件会将它们放置在完美布局和碎片整理的磁盘上,因此您的测试将缺少大量来自大量写入/修改/删除的磁盘磁头寻道时间。
您还需要考虑并行 fscks。查看 /etc/fstab 中的最后几个字段。同一物理磁盘上的分区应按顺序进行;同一控制器上的多个磁盘可以并行完成,但请注意不要使控制器过载并减慢它们的速度。
http://lmgtfy.com/?q=fsck+benchmark
看起来 ext4 文件系统上的 fsck 明显快于 ext3,一些报告称 ext4 fsck 比 ext3 快 10 倍甚至更多倍。
该搜索中的两篇非常有趣的文章是:
http://thunk.org/tytso/blog/2008/08/08/fast-ext4-fsck-times/和http://thunk.org/tytso/blog/2009/02/26/fast-ext4-fsck-times-revisited/
重新启动时,您是否有任何理由不能使用不强制时间或基于挂载计数的 fscks 的文件系统?
(基于时间的 fsck 真的让我很烦——对于一个运行时间较长的服务器,它几乎可以保证每次升级内核时都必须执行完整的 fsck)。
无论如何,XFS 是不强制执行 fsck 的日志文件系统之一。值得一看。