这不是投诉,也不是技术支持或帮助请求!我只是好奇幕后发生了什么 :)
我正在执行 e2fsck -cc 来标记 8TB LVM ext4 文件系统上的坏块。目前大约需要 45 分钟,完成度约为 0.45%。它是 8TB,所以需要很长时间是可以理解的,这很好 - 我知道这是一项艰巨的工作!
但这让我对它的实际速度感到好奇,而不仅仅是百分比。将这些数字代入信封背面的公式中,我得到的速度约为 12MB/s(95Mbps)。这完全符合我较旧的机械驱动器的健康读取速度范围,所以我觉得这是准确的。但它肯定处于低端,所以我想知道幕后发生了什么,导致这种速度?
这是一个非破坏性读写测试,因此显然它会比读取测试甚至破坏性读写测试慢,但这些驱动器的写入速度通常可以达到 100MB/s,并且这个 LVM 分布在 2 个驱动器(位于 USB3.0 集线器中)上,条带大小为 64KB,因此理论上也可能会发生负载平衡。
我的理解是 e2fsck -cc 调用 badblocks -nsv (非破坏性读写),从我可以看出,其本质是:
- 对扇区内的数据进行备份(非破坏性部分):
- 首先读取数据
- 写入备份
- 是否进行测试:
- 将一些测试数据写入该扇区
- 读取该扇区以检查其写入是否正确。
- 清理?:
- 删除备份吗?
- 删除测试数据?
这很有道理。对于它测试的每个扇区,它都必须读取、写入、写入、读取,然后再次写入(擦除)。显然,CPU 也在做一些工作,但我认为这与速度无关?如果我们假设读取速度是写入速度的两倍(这是一个很大的简化),3 或 4 次写入 + 2 次读取可达到 48-60MB/s。更合理,但还是有点偏低?即使读取速度与写入速度一样快,速度仍然会达到约 84-96MB/s,考虑到它是 RAID0,这仍然感觉有点慢?
有人能确认我的数学是否大体正确或让我知道我是否犯了任何错误吗?
另外,如果您能告诉我可以加快速度的方法,我会得到加分!特别是如果您可以提供一些有关此操作负载平衡的背景信息,无论它是否相关甚至可能,以及如何利用它。它是新格式化的,所以我并不介意进行破坏性测试或清理数据,所以如果有办法让 e2fsck 进行破坏性写入测试,我们是否有可能提高速度?
或者任何其他信息也很好!我主要只是想学习和拓展我的大脑 :)