Linux 6.2 将在 Btrfs 中包含对 RAID5 和 RAID6 的改进

Linux内核

Linux内核

近日有爆料称 Btrfs 的改进被提议包含在 Linux 6.2 内核中 修复 RAID 5/6 实现中的写孔问题。

问题的本质归结为,如果在录制过程中发生崩溃,最初无法理解哪个 RAID 设备上的哪个块被正确写入,以及哪个块没有完成录制。

如果您尝试在这种情况下重建 RAID,则与订阅块对应的块可能会损坏,因为 RAID 块的状态不同步。 在没有采取特殊措施来解决此影响的任何 RAID1/5/6 阵列中都会出现此问题。

在像 btrfs 中的 RAID1 这样的 RAID 实现中,这个问题得到了解决 通过在两个副本上使用校验和,如果存在不匹配,则只需从第二个副本恢复数据。 如果任何设备开始提供错误数据而不是完全失败,这种方法也适用。

然而, 在 RAID5/6 的情况下,文件系统不存储校验和 对于奇偶校验块——在正常情况下,块的正确性是通过它们都配备了校验和来检查的,并且可以从数据中重新创建奇偶校验块。 但是,在部分记录的情况下,这种方法在某些情况下可能不起作用。 在这种情况下, 恢复阵列时,有可能 不完整记录中留下的块 被错误地恢复。

在 btrfs 的情况下,如果发生的写入小于条带,则此问题更为相关。 在这种情况下,文件系统必须执行读取-修改-写入 (RMW) 操作。

如果它遇到正在写入的块,则 RMW 操作可能会导致无法检测到的损坏,无论校验和如何。 开发者做了改动,RMW操作在执行该操作前先校验block的校验和,必要时数据恢复也会在写入后进行校验和校验。

不幸的是,在写入不完整边缘 (RMW) 的情况下,这会产生额外的开销来计算校验和,但会显着提高可靠性。 对于RAID6,这样的逻辑还没有准备好,

此外,我们可以注意到开发人员关于使用 RAID5/6 的建议,其本质是 Btrfs 中用于存储元数据和数据的配置文件可能不同。 在这种情况下,您可以对元数据使用 RAID1(镜像)甚至 RAID1C3(3 个副本)配置文件,对数据使用 RAID5 或 RAID6。

这一方面确保了可靠的元数据保护和不存在“写入漏洞”,另一方面确保了 RAID5/6 典型的空间更有效利用。 这可以防止元数据损坏,并且可以纠正数据损坏。

可以注意到,对于内核 6.2 中 Btrfs 上的 SSD, la “丢弃”操作的异步执行 (标记不再物理存储的已释放块)将默认打开。

这样做的好处 模式是高性能 由于队列中丢弃操作的有效分组和后台处理程序对队列的后处理,所以正常的 FS 操作不会像同步“丢弃”那样减慢,因为块被释放,SSD 可以做得更好决定。 另一方面,您将不再需要使用 fstrim 等实用程序,因为所有可用块都将在 FS 中擦除,无需额外扫描,也不会减慢操作速度。

最后,如果你有兴趣能够了解更多,可以查阅详情 以下链接。


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。