慢速ext4 fsck

为什么fsckext4文件系统上太慢了? 我总是使用reiserfs或xfs,而且这些系统的fsck真的很快,只需要几秒钟。 现在我决定尝试ext4,但我很失望,每次系统必须fsck我的homedir它需要时间(可以在我的250GB家庭分区,是85%满25分钟)。 也许是因为它是从ext3转换而来的?

来自ext3的转换不会充分利用范围。 它只是升级inode,并将它们保留为大小为1的范围。如果通过类似tar的程序运行这些文件,则可以获得更好的压缩扩展文件。

这也很重要你如何从ext3转换到ext4; 不同的选项有不同的function,可能会影响fsck的时间。 此外,我认为一个完整的驱动器将需要更长的时间来fsck; 毕竟你正在检查大约200GB的数据,可能是inode占用的大小的三倍。

你可能要做的就是直接build立你正在使用的内核或内核bugzilla的发行版。 毕竟这是上游对诊断和修复感兴趣的那种行为。

使用附加选项“ -O extent,uninit_bg ”重新创build文件系统将会提高你的ext4 fsck时间。

  • “范围”将减less大文件的元数据开销
  • “uninit_bg”将创build一个fs而不初始化所有的块组。 这将改善mkfs和fsck,因为检查的元数据较less(至less只要你的fs不满)。

我的400GB ext3分区在fsck中也花了很长时间。 另外,随着数量的增加,fsck会花费太长的时间。 引用这篇文章:

1 EB(Exabyte)在很长一段时间内将具有足够的存储空间 – 实际上,在这种大小的文件系统上运行的完整e2fsck(在当前的硬件上)需要100多年的时间。

所以,我真的希望文件系统和它们的工具能够很快变好,否则对它们运行fsck将是不可行的。

我在我的2TB RAID1 ext4 USB安装的LaCie磁盘上运行了两次 fsck -V -y 。 在每种情况下,这个过程都是24小时运行,但是没有完成。 在每种情况下,我杀死了这个进程,并运行了几分钟内完成的fsck -V -C -y 。 参数-C只是应该提供一个进度条,但它似乎也取消了一些巨大的时间浪费。