一个故障驱动器 + 一个坏扇区是否会破坏整个 RAID 5?

ada*_*ily 9 raid disaster-recovery data-recovery

在 Synology Disk Station 上规划我的 RAID 设置期间,我阅读了大量有关各种 RAID 类型的文章,这是一本很棒的读物:RAID 级别URE(不可恢复的读取错误)的重要性。

但是,我还不清楚一件事:

让我们有两个场景:

  1. 阵列是2 个驱动器的RAID 1
  2. 阵列是3 个驱动器的RAID 5

两种情况的相同假设:

  • 让我们在 RAID 阵列上有 100.000 个文件
  • 一个驱动器出现故障(需要更换)
  • 重建阵列时碰巧有一个坏扇区(URE)

发生什么了?使用 99.999 个文件重建 RAID 是否正常而 1 个文件丢失?还是我会丢失所有 100.000 个文件?

如果答案需要文件系统类型的知识,假设它是 BTRFS 或 ZFS 作为文件系统。

sho*_*hok 13

简短的回答是,这取决于。

在您描述的情况下(一个有故障的磁盘 + 另一个磁盘上的一些不可读扇区),一些企业 RAID 控制器会以破坏整个阵列的完整性为由取消整个阵列,因此唯一安全的操作是从备份中恢复。

其他一些控制器(最显着的是来自 LSI)反而会刺穿阵列,将一些 LBA 标记为不可读,但会继续重建。如果不可读的 LBA 有效地位于可用空间上,则不会丢失实际数据,因此这是最佳方案。如果它们影响已写入的数据,则不可避免地会丢失一些信息(希望价值不大)。

Linux MDADM 非常通用,最新版本为这种穿孔阵列提供了专用的“重映射区域”。此外,可以始终使用ddddrescue首先将具有不可读扇区的驱动器复制到新磁盘,然后使用该磁盘重新组装阵列(当然会丢失一些数据)。

BTRFS 和 ZFS 凭借与块分配层的更多集成,可以检测丢失的数据是在空的还是已分配的空间上,并详细报告受影响的文件。

  • 穿刺的问题在于,如果不进行完整的完整性检查,您就无法轻松了解重要数据是否已损坏,除非您有良好的备份来验证它,否则您无法做到这一点,并且如果您“有一个很好的备份来验证它,那么当您可以从备份中恢复并完成它时,没有充分的理由进行完整性检查。省去了很多检查。这就是为什么企业控制者会考虑整个事情的原因。 (2认同)