部分奇偶校验日志¶
部分奇偶校验日志 (PPL) 是 RAID5 阵列可用的功能。PPL 解决的问题是,在发生非正常关机后,特定条带的奇偶校验可能与其它成员磁盘上的数据不一致。如果阵列也处于降级状态,则无法重新计算奇偶校验,因为其中一个磁盘丢失。当重建阵列或在降级状态下使用它时,这可能会导致静默数据损坏 - 从奇偶校验计算出的阵列块的数据在非正常关机期间未被写入请求触及,这些数据可能不正确。这种情况被称为 RAID5 写入空洞。因此,默认情况下,md 不允许启动损坏的降级阵列。
写入操作的部分奇偶校验是未被此写入修改的条带数据块的 XOR。它足以用于从写入空洞中恢复。将部分奇偶校验与修改后的块进行 XOR 运算会生成与写入操作之前的状态一致的条带奇偶校验,而不管哪些块写入已完成。如果此条带的一个未修改数据磁盘丢失,则可以使用此更新的奇偶校验来恢复其内容。在发生非正常关机后启动阵列并且所有磁盘都可用时,也会执行 PPL 恢复,从而无需重新同步阵列。因此,不支持同时使用写入意图位图和 PPL。
在处理写入请求时,PPL 会在新数据和奇偶校验发送到磁盘之前写入部分奇偶校验。PPL 是一个分布式日志 - 它存储在阵列成员驱动器的元数据区域中,位于特定条带的奇偶校验驱动器上。它不需要专用日志驱动器。写入性能降低高达 30%-40%,但它可以随着阵列中驱动器数量的增加而扩展,并且日志驱动器不会成为瓶颈或单点故障。
与 raid5-cache(md 中用于关闭写入空洞的另一种解决方案)不同,PPL 不是真正的日志。它不能防止丢失正在进行的数据,只能防止静默数据损坏。如果条带的损坏磁盘丢失,则不会为此条带执行 PPL 恢复(奇偶校验不会更新)。因此,如果该磁盘丢失,条带的写入部分可能具有任意数据。在这种情况下,行为与普通 raid5 相同。
PPL 可用于 md version-1 元数据和外部(特别是 IMSM)元数据阵列。可以使用 mdadm 选项 --consistency-policy=ppl 启用它。
PPL 对阵列中的最大磁盘数量有限制,最多为 64 个磁盘。这允许保持数据结构和实现的简单性。具有如此多磁盘的 RAID5 阵列不太可能出现,因为存在多个磁盘故障的高风险。这种限制不应成为现实生活中的限制。