文件数量会影响 fsck 的性能吗?

IMB*_*IMB 5 linux performance fsck

运行时,包含 1,000,000 个文件的 100GB 磁盘是否比包含 100 个文件的 100GB 磁盘需要更长的时间fsck

Den*_*nis 9

这取决于文件系统和您与 fsck 一起使用的开关。

What fsckChecks and Tries to Repair非常详细地解释了 fsck 在没有开关的情况下调用时的作用。

一些检查需要固定的时间(例如超级块检查),其中许多取决于 fsck 必须处理的 inode 数量(例如链接计数检查),其他取决于文件系统的大小(例如,常规数据块检查)。

如果没有-c开关,fsck 不会检查常规文件的内容,因此文件的大小无关紧要。即使在检查坏块时,执行时间也只会随着文件系统的大小而增加。分区的哪一部分被占用并不影响执行时间。1

文件系统的inode数量是恒定的,即在创建时决定。每个文件的元数据都存储在这样的 inode 之一中。根据ext4,未使用的 inode 在 ext4 中被标记为这样,但在 ext3 中没有。因此,fsck 的执行时间随着 ext4 中文件数量的增加而增加,但在 ext3 中是恒定的(并且很高)。

下图说明了这一点:

比较

观察不同的文件计数用不同的颜色表示。具有 210 万、10 万甚至零个文件的 ext3 图形是相同的。具有 2.1M 和 100k 文件的 ext4 图表分别显示了显着差异。

相比之下,执行时间随着 ext3 的 inode 数量增加而增加,而未使用的 inode 不会影响 ext4 的执行时间。


1通过fsck -c在空分区上运行凭经验验证。