![文件数量会影响 fsck 的性能吗?](https://linux22.com/image/1359374/%E6%96%87%E4%BB%B6%E6%95%B0%E9%87%8F%E4%BC%9A%E5%BD%B1%E5%93%8D%20fsck%20%E7%9A%84%E6%80%A7%E8%83%BD%E5%90%97%EF%BC%9F.png)
运行时,包含 1,000,000 个文件的 100GB 磁盘会比包含 100 个文件的 100GB 磁盘花费更长的时间fsck
吗?
答案1
这取决于文件系统和您在 fsck 中使用的开关。
fsck
检查并尝试修复的内容给出了不带开关调用时 fsck 所执行操作的详细解释。
一些检查需要花费恒定的时间(例如,超级块检查),其中许多检查取决于 fsck 必须处理的 inode 数量(例如,链接数检查),其他检查取决于文件系统的大小(例如,常规数据块检查)。
如果没有该-c
开关,fsck 不会检查常规文件的内容,因此文件的大小无关紧要。即使在检查坏块时,执行时间也只会随着文件系统的大小而增加。分区的哪一部分被占用不会影响执行时间。1
的数量索引节点文件系统的索引节点是恒定的,即在创建时决定。每个文件的元数据都存储在其中一个索引节点中。根据ext4,未使用的 inode 在 ext4 中被标记为未使用的 inode,但在 ext3 中没有。因此,fsck 的执行时间在 ext4 中随着文件数量的增加而增加,但在 ext3 中保持不变(且很高)。
下图说明了这一点:
观察不同文件数用不同颜色表示。ext3 中 210 万、10 万甚至零个文件的图表完全相同。ext4 中 2.1M 和 10 万个文件的图表则显示出明显差异。
相比之下,对于 ext3,执行时间随着 inode 数量的增加而增加,而对于 ext4,未使用的 inode 不会影响执行时间。
1fsck -c
通过在空分区上运行进行实证验证