我理解有关大型驱动器在重建过程中经历URE可能性增加的论点,但是我不确定这样做的实际含义。此答案表明整个重建失败,但这是否意味着所有数据都无法访问?为什么会这样呢?当然,驱动器上单个扇区中的单个URE最多只会影响与几个文件有关的数据。只是少量损坏几个文件,还是不重建阵列吗?
(我在这里对ZFS的RAID5实现特别感兴趣,但是对于任何RAID5实现,逻辑似乎都是相同的。)
我理解有关大型驱动器在重建过程中经历URE可能性增加的论点,但是我不确定这样做的实际含义。此答案表明整个重建失败,但这是否意味着所有数据都无法访问?为什么会这样呢?当然,驱动器上单个扇区中的单个URE最多只会影响与几个文件有关的数据。只是少量损坏几个文件,还是不重建阵列吗?
(我在这里对ZFS的RAID5实现特别感兴趣,但是对于任何RAID5实现,逻辑似乎都是相同的。)
Answers:
它实际上取决于特定的RAID实施:
大多数硬件RAID都会中止重建,有些还会将阵列标记为失败,从而导致阵列瘫痪。其基本原理是,如果一个RAID5期间URE发生重建就意味着一些数据被丢失,所以最好完全停止宁可冒着无记载数据损坏的阵列。注意:某些硬件RAID(主要是基于LSI)将对阵列进行打孔,从而在重建过程中将受影响的扇区标记为不可读(类似于Linux软件RAID的行为)。
可以指示Linux软件RAID a)停止阵列重建(“古老的” MDRAID /内核构建的唯一行为)或b)继续进行重建过程,以将某些LBA标记为不良/无法访问。这样做的理由是让用户自行选择:毕竟,单个URE可以位于可用空间上,完全不影响数据(或仅影响不重要的文件)。
ZRAID将显示某些文件已损坏,但是它将继续进行重建过程(请参见此处的示例)。再次,其理由是最好继续并向用户报告,从而使用户能够做出明智的选择。
如果将发生URE,您将在块上遇到一些数据损坏,该块通常为256KB-1MB,但这并不意味着卷上的所有数据都会丢失。RAID5没什么大不了的是完全不同的事情:重建本身很麻烦,而且很有可能连续发生第二个磁盘故障。在这种情况下,所有数据都将丢失。
我会反过来解释。
如果RAID控制器没有在URE上停止,那会发生什么?
我将其放在服务器上,RAID从未注意到URE,并且在重建后损坏就开始在整个RAID卷上累积。
重建后,磁盘开始出现更多坏扇区,并且数据开始损坏。
磁盘从未启动过RAID卷,控制器发生故障是为了保护数据完整性。
编写该示例是为了使您认为控制器根本无法使用URE来推动卷,这是为了确保数据的完整性,因为该卷并不是备份,而是对磁盘故障的恢复能力
我建议阅读此问题和解答以获取更多背景知识。然后,重新阅读您再次链接的问题。
当有人说这种情况“ RAID失败”时,这意味着您失去了RAID的好处-您失去了对数据的连续访问,这就是您首先设置RAID阵列的原因。
您并没有丢失所有数据,但是从一个失效的驱动器加上(某些)剩余驱动器上的(一些)URE进行恢复的最常见方法是完全从头开始重建阵列,这意味着还原所有数据。从备份。