Linux mdadm软件RAID 6-是否支持位损坏恢复?


15

维基百科说:“ RAID 2是唯一的标准RAID级别,除了RAID 6的某些实现之外,它可以自动从数据中的单个位损坏中恢复准确的数据。”

有谁知道Linux中的RAID 6 mdadm实现是否可以自动检测单位数据损坏并从中恢复的一种实现。如果这些版本与其他版本不同,则适用于CentOS / Red Hat 6。我尝试在线搜索,但运气不佳。

SATA错误率是1E14位中的1,而2TB SATA磁盘包含1.6E13位,这与防止数据损坏特别相关。

编辑2015年6月17日

我相信这本来不是我最初考虑的问题-请参阅硬盘/ SSD-错误的检测和处理-是否可以可靠地防止静默数据损坏?更多细节

Answers:


15

Linux软件RAID不会保护您免受比特损坏,而静默数据损坏是众所周知的问题。实际上,如果内核能够从一个磁盘读取数据,它将永远不会知道它是坏的。仅在读取数据时出现I / O错误时才启动RAID。

如果您担心数据完整性,则应考虑使用BtrfsZFS之类的文件系统,该文件系统通过存储和验证校验和来确保数据完整性。这些文件系统还负责RAID功能,因此,如果您这样做,则不需要内核软件突袭。


谢谢。万一这对任何人都有用,我从chutz的回复中得到了更多搜索思路,并看到mdadm的维护者(我相信)在2011年2月17日表示,他没有计划增加对每次读取强制进行奇偶校验的功能。参见spinics.net/lists/raid/msg32816.html
sa289 2012年

3

如果您验证整个驱动器的奇偶校验,则RAID5和RAID6可以检测并通常纠正位损坏。这称为“清理”或“奇偶校验”,在大多数生产RAID系统上通常需要24-48小时。在这段时间内,性能可能会大大降低。(某些系统允许操作员将擦洗的优先级高于读/写访问权限或在其下方。)RAID6更有可能进行更正,因为如果您有两个驱动器故障,它可以更正它,而RAID5仅可以处理1个驱动器故障,并且由于活动增加,在进行擦洗时驱动器发生故障的可能性更大。


1
在RAID清理期间,性能将明显下降并不是普遍的事实。如果scrub使用所有可用的系统资源并且是“哑”状态,那么它将。但是,所有的SAN以及我想象的大多数RAID控制器都将以较低或“不错”的优先级运行清理,从而动态调整资源利用率,从而不会消耗维持生产性能所需的资源。
杰里米

你是对的。我编辑了答案以增加细微差别。
vy32 2012年

如果您的mdadm raid 6数组是/ dev / md1,那么该命令将使其校验并尝试修复单位损坏“回显检查> / sys / block / md1 / md / sync_action”
BeowulfNode42,2013年

2
它们不会“防止位损坏”,而是会在您擦洗时检测到位损坏。见我的问题在这里了解详情。

我建议更改“ RAID5和RAID6能够修复位损坏”的答案
Waxhead 2015年

2

本来可以将此添加为评论,但是我没有足够的声誉。我想澄清一下:RAID5可以检测到位损坏,但是它不知道哪个驱动器没有读取错误就损坏了。结果,擦洗无法在没有读取错误的情况下解决此问题-它很可能仅将其记录下来并更新奇偶校验位以进行匹配。RAID6的算法取决于位置,因此它可以检测到哪个驱动器包含错误并纠正位损坏。


如果这是真的,那太好了!您能否提供有关文档记录位置的任何链接?
Alek_A

2

关于RAID 6的功能,以上所有答案均不正确。RAID6算法与RAID 5一样,逐字节运行,如果任何一个驱动器上的单个字节损坏,即使驱动器未指示任何错误,它也可以被检测和纠正。有关此算法的详细说明,请参见

https://mirrors.edge.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf

为了执行此检查,还必须将奇偶校验P和Q驱动器与数据驱动器一起读取。如果计算出的奇偶校验P'和Q'相同且没有驱动器错误,则分析可以查明哪个驱动器不正确,然后更正数据。

此外,如果驱动器标识是针对不存在的驱动器(例如,如果只有15个驱动器,则为驱动器137),则说明一个字节以上的驱动器正在提供损坏的数据,表示发生了不可纠正的错误错误。当集合中的驱动器少于256个时,每个字节的检测概率很高,并且由于一个块中有很多字节,因此每个块的概率很高。同样,如果RAID块中所有字节的驱动器标识不一致,则不止一个驱动器正在提供损坏的数据,通常一个驱动器可能会拒绝这种情况,但是只要所有驱动器标识均有效,则该块不一定需要被拒绝。

进行此校正所需的时间比通常的验证时间长,但是只需要在校正子(P和Q)计算显示错误时执行即可。

尽管如此,我还没有检查mdadm代码来确定是否处理了单字节损坏。我知道mdadm在每月扫描中报告RAID6综合症错误,但是从错误消息中尚不清楚它们是否已得到纠正-它不会停止驱动器阵列,也不会在消息中标识任何特定的驱动器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.