我理解关于较大的驱动器在重建期间经历 URE 的可能性增加的争论,但我不确定这实际意味着什么。这个答案说整个重建失败,但这是否意味着所有数据都无法访问?为什么会这样?当然,驱动器上单个扇区的单个 URE 最多只会影响与几个文件相关的数据。阵列是否仍会重建,只是几个文件会有一些轻微损坏?
(我对 ZFS 的 RAID5 实现特别感兴趣,但对于任何 RAID5 实现来说,逻辑似乎都是相同的。)
答案1
这实际上取决于具体的 RAID 实现:
大多数硬件 RAID 将中止重建,有些还会将阵列标记为失败的,降低其性能。其原理是,如果在 RAID5 重建期间发生 URE,则意味着某些数据是丢失,因此最好完全停止阵列,而不是冒着数据无声损坏的风险。注意:某些硬件 RAID(主要是基于 LSI)将改为刺阵列,允许重建继续,同时将受影响的扇区标记为不可读(类似于 Linux 软件 RAID 的行为)。
可以指示 Linux 软件 RAID a) 停止阵列重建(“古老”MDRAID/内核构建的唯一行为)或 b) 继续重建过程,将某些 LBA 标记为坏的/无法访问。理由是最好让用户自己选择:毕竟,单个 URE 可以位于可用空间上,根本不影响数据(或仅影响不重要的文件);
ZRAID 将显示某些文件已损坏,但它将继续重建过程(参见这里(例如)同样,这样做的理由是最好继续并向用户报告,以便他做出明智的选择。
答案2
如果发生 URE,您将会遇到一些数据损坏,这些损坏的块通常为 256KB-1MB,但这并不意味着卷上的所有数据都会丢失。RAID5 的缺点是完全不同的事情:重建本身很有压力,而且很有可能您会连续遇到第二个磁盘故障。在这种情况下,所有数据都会丢失。
答案3
我会反过来解释;
如果 RAID 控制器没有在 URE 上停止,会发生什么?
我将它安装在服务器上,RAID 从未注意到 URE,重建后,整个 RAID 卷开始出现损坏。
重建后,磁盘开始出现更多坏扇区并且数据开始损坏。
磁盘从未从 RAID 卷中踢出,控制器故障的工作是保护数据完整性。
这个例子是为了让大家认为控制器根本无法用 URE 推动卷,它是为了数据完整性,因为卷不是为了备份而是为了应对磁盘故障