我最近一直在研究 RAID5 与 RAID6,并且我不断发现 RAID5 不再足够安全,因为 URE 评级和驱动器大小不断增加。基本上,我发现的大多数内容都说,在 RAID5 中,如果磁盘发生故障,如果阵列的其余部分是 12TB,那么您几乎 100% 有机会遇到 URE 并丢失数据。
12TB 这个数字来自于这样一个事实:磁盘的额定读取速度为 10^14 位,才能达到一个 URE。
嗯,这里有点我不明白。读取是通过磁头在扇区上移动来完成的,导致读取失败的原因可能是磁头坏了或者扇区坏了。也可能是读取由于其他原因而无法进行(我不知道,比如振动导致磁头跳动……)。所以,让我来处理这三种情况:
- 读取不起作用:这不是无法恢复的,对吧?可以再试一次。
- 磁头损坏:这肯定是无法恢复的,但是,这也意味着整个盘片(或者至少是侧面)将无法读取,这会更令人担忧,不是吗?
- 扇区死亡:同样完全无法恢复,但在这里我不明白为什么 4TB 磁盘的 URE 评级为 10^14,而 8TB 的 URE 评级也为 10^14,这意味着 8TB(很可能是较新的技术)上的扇区可靠性只有 4TB 上的扇区的一半,这没有意义。
如您所见,从我确定的 3 个故障点来看,没有一个是有意义的。那么 URE 到底是什么呢?具体来说,什么是 URE?
有人可以向我解释一下吗?
编辑1
在第一波回答之后,似乎原因是扇区故障。好消息是固件、RAID 控制器和 OS + 文件系统都有程序可以尽早检测并重新分配扇区。
好吧,我现在知道什么是 URE(实际上,这个名字很容易理解:))。
我仍然对其根本原因以及他们给出的稳定评级感到困惑。
一些人将故障扇区归咎于外部来源(宇宙波),然后我很惊讶 URE 率是基于读取次数而不是年龄,宇宙波确实应该对较旧的磁盘产生更大的影响,因为它暴露得更多,我认为这更像是一种幻想,尽管我可能是错的。
现在要说的是与磁盘磨损有关的另一个原因,有人指出,密度越高,磁畴越弱,这完全说得通,我会遵循这个解释。但是正如这里很好地解释的那样,新磁盘的不同大小主要是通过在 HDD 底盘中放置或多或少相同的盘片(然后是相同的密度)来获得的。扇区相同,所有扇区都应该具有相同的可靠性,因此较大的磁盘应该比较小的磁盘具有更高的评级,扇区读取较少,事实并非如此,为什么?但这可以解释为什么采用新技术的新磁盘的评级并不比旧磁盘高,仅仅是因为更好的技术收益被更高密度造成的损失所抵消。
答案1
URE 是不可恢复的读取错误。发生了一些事情,导致读取扇区失败,驱动器无法修复。驱动器电子设备非常复杂,只有当它们能够从磁盘正确读取数据时,它们才会将数据传递上去。驱动器电子设备会多次尝试读取坏扇区,然后才会宣布其已损坏。
导致读取错误的原因 - 我不是这方面的专家(挥动手臂)但驱动器老化会导致制造公差变得重要。磁畴可能会变弱。宇宙射线会造成损坏等。本质上,这是一种随机故障。
这对 RAID 5 有何影响?
ARAID 5由块级条带化和分布式奇偶校验组成。奇偶校验块是通过将数据块中的位进行异或运算来计算的。异或函数的基本含义是,如果所有位都相同,则结果为 0,否则为 1。计算奇偶校验时,取前 2 位并对其进行异或运算,然后将结果与下一位进行异或运算,依此类推,例如
1010 data or 1010 data
1100 data 1100 data
0110 parity 0011 data
0101 parity
XOR 函数的本质是,如果任何磁盘损坏并被更换,则可以从剩余磁盘重建该磁盘上的数据。
1010 data or 1010 data
damaged damaged
0101 parity 0011 data
0101 parity
如您所见,可以通过对剩余数据和奇偶校验进行异或来重建损坏的数据。
URE 对此有何影响?
URE 仅在 RAID 5 重建期间才有意义。
重建 RAID 5 时需要进行大量读取。需要读取每个数据块才能重建新磁盘上的数据。如果发生 URE,则无法恢复相关块的数据,因此数据不一致。对于足够大的 R5 中的足够大的磁盘,重建替换磁盘所需的读取位数超过了 URE 值,例如 10^14 次读取中的 1 位。
答案2
那么,URE 到底是什么呢?具体来说,什么是 URE?
硬盘不仅仅存储您要求的数据。由于磁畴尺寸不断减小,并且硬盘以模拟方式而非二进制方式存储数据(硬盘固件从盘片获取模拟信号,然后将其转换为二进制信号,而这种转换是制造商的秘密武器之一),读取过程中几乎总是存在一定程度的误差,必须对其进行补偿。
为了确保数据能够读回,硬盘还存储前向纠错数据以及您要求其存储的数据。
在正常操作下,FEC 数据足以纠正从盘片读回的信号中的错误。然后固件可以重建原始数据,一切正常。这是一个可恢复的读取错误在 SMART 中显示为读取错误率属性(SMART 属性 0x01)和/或硬件 ECC 恢复(SMART 属性 0xc3)。
如果由于某种原因信号降级到某个点以下,FEC 数据将不再足以重建原始数据。理论上,到那时,固件仍然能够探测数据无法可靠地读回,但它对此无能为力。如果多次读取失败,磁盘必须以某种方式通知计算机的其余部分读取无法成功执行。它通过发出信号来做到这一点不可恢复的读取错误。这也增加了报告无法纠正的错误(SMART 属性 0xbb)计数器。
不可恢复的读取错误 (URE) 只是一个报告,无论出于何种原因,有效载荷数据加上 FEC 数据不足以重建最初存储的数据。
请记住,URE 率是统计。您不会遇到任何硬盘,您可以成功读取 10^14(或 10^15)- 1 位,然后下一位失败。相反,这是制造商的声明一般,如果您读取(比如说)10^14 位,那么在该过程的某个时刻,您将遇到一个无法读取的扇区。
另外,根据上面的最后几句话,请记住,URE 率是根据每位读取的扇区数由于数据在盘片上的存储方式,磁盘无法分辨扇区的哪个部分是坏的,因此如果某个扇区未通过 FEC 检查,则整个扇区都会被视为坏的。
答案3
扇区死亡:同样完全无法恢复,但在这里我不明白为什么 4TB 磁盘的 URE 评级为 10^14,而 8TB 的 URE 评级也为 10^14,这意味着 8TB(很可能是较新的技术)上的扇区可靠性只有 4TB 上的扇区的一半,这没有意义。
规范通常是“平均1读取时检测到错误n位”,因此驱动器大小无关紧要。如果您计算驱动器和工作负载发生错误的风险,这很重要,但制造商只声明需要n读取的位数来发现错误(平均而言,不能保证)。
例如:如果您购买了 1TB 的硬盘,则必须读取大约 12 次才能发现错误,而 8TB 的硬盘可能会在第二次读取时遇到错误 - 但两次读取的位数相同,因此磁主轴的质量大致相同。
您为增加价格而付出的代价是其他因素,将 8TB 塞进 1TB 的物理空间的能力,大大降低能耗,移动驱动器时减少磁头崩溃等等。
答案4
我认为@Michael Kjörling 的回答很清楚。
当磁盘读取时,磁头会检测磁畴的方向,然后发出一些模拟的电子信号。我们假设固件在收到高于 0.5V 的电压时应该给出 1,但是磁场太弱,所以磁头只发出了 0.499V 的信号,出现了错误。我们需要 FEC 来纠正这个错误。
举个例子:一个扇区的数据应该是0x0F23,我们用0*1+F*2+2*3+3*4=0x30来编码。现在我们得到FEC,并把它写在扇区后面。当我们读取时,我们读到0x0E23和FEC 0x30,它们不匹配。经过一些计算,我们发现它应该是0x0F23。但是如果我们得到0x0E13和0x30,或者我们得到0x0E23和0x32,我们就无法计算出正确的值。
这个概率这么低,可能除非硬盘厂家每次读取PBs和EBs的数据都能得到一个稳定的值,所以他们给出了一个概率值:当你读取10^14 bit的数据时,可能遇到一次,既然是概率值,可能你读取1个sector的数据后就遇到,可能你读取50TB的数据后就遇到,而且这个概率和硬盘容量无关,只是和你读取的数据大小有关系,如果你读取一个4TB的硬盘6次,这个概率就等于读取一个6TB的硬盘4次,或者读取一个8TB的硬盘3次。