RAID 1 是否可以防止损坏?

14 raid-1 filesystem-corruption

Raid 1 是否可以防止数据损坏?例如,假设我将所有重要文件保存在使用 RAID 1 中的 2 个磁盘的 NAS 上。如果一个硬盘驱动器出现某种内部问题并且数据损坏,RAID 是否会自动识别并纠正它使用来自其他好磁盘的数据吗?

它甚至可以知道哪个副本是好的吗?

RAID 5 是否可以防止损坏?

我知道 RAID 不是备份解决方案。我想弄清楚如何确保我没有备份损坏的数据!

tyl*_*erl 13

RAID-1 可防止两个驱动器之一发生完全故障。如果驱动器未标记为故障,则假定其内容是准确的。但是,如果出于某种原因,两个驱动器之一返回不一致的数据,则 RAID 系统将无法检测到该错误,应用程序将获得错误数据。

许多控制器都有一个定期运行的验证过程,但这样做的目的是测试磁盘故障,而不是数据完整性。硬盘驱动器实施自己的数据完整性测试和校验和,用于发现坏扇区,但该算法旨在快速而紧凑,而不是彻底,因此错误可能会泄漏。

虽然数据损坏是例外而不是规则,但它也并非闻所未闻。例如,ZFS 团队的一名成员在一次采访中报告说,他们发现高端 RAID-5 设备向他们发送了损坏的数据,因为 ZFS 在该文件系统级别实现了校验和。


Bry*_*yce 6

正如其他人所指出的,raid1 系统无法判断两个扇区中的哪一个是坏的。

高端突袭系统在后台运行清理操作以比较两个副本并标记差异。更好的是每次从驱动器读取两个块并在读取时比较它们的系统。然而,RAID 控制器不可能解决这些差异。

在 mdadm 下的 Unix 系统上,可以使用“sync_action”启动清理检查:

可以通过将检查或修复写入设备的 sysfs 目录中的文件 md/sync_action 来清理 md 阵列。

请求清理会导致 md 读取阵列中每个设备上的每个块,并检查数据是否一致。对于 RAID1 和 RAID10,这意味着检查副本是否相同。对于 RAID4、RAID5、RAID6,这意味着检查奇偶校验块(或块)是否正确。

raid1 是为了防止突然的完全驱动器故障。寻找其他地方以防止腐败。除此之外,Raid1 不提供“历史”,因此无法从人为或软件错误中恢复。寻找像 ZFS 这样的文件系统或像 Hammer 这样的历史保存文件系统来防止损坏。


小智 5

这取决于腐败的根源。如果 RAID 1 镜像中的驱动器出现故障并且正在写入废话,那么 RAID 镜像会降级,并且好的驱动器将被使用,您将拥有好的文件。在 RAID 5 的情况下,这是通过 2 个数据驱动器和一个奇偶校验驱动器(以最简单的形式)完成的,如果 3 个驱动器中的一个无法写入正确的文件,那么它将失败,您将只剩下 2 个数据驱动器或 1 个数据驱动器和一个奇偶校验驱动器。

现在让我们看看如果损坏是由病毒或程序中的错误引起的会发生什么。在 RAID 1 和 RAID 5 中,不会因为驱动器正确写入而导致驱动器停止服务。没有失败。然而,文件将被破坏,因为病毒或错误正在写入垃圾,它会将其写入 RAID 1 镜像中的两个驱动器,以及 RAID 5 系统中的所有 3 个驱动器。

这就是 RAID 不是备份的原因。它可以防止最可能的故障,即磁盘故障,但它没有考虑到很多其他情况。

  • 您对 RAID 5 的描述不准确。没有单独的奇偶校验驱动器,而是将奇偶校验分布在所有驱动器上。您最终得到的总可用空间为 n-1,但没有专用于奇偶校验的驱动器。 (6认同)
  • +1“这就是 RAID 不是备份的原因”天知道我听过多少次“我很好,我的备份被 RAID 覆盖了” (4认同)
  • RAID 如何区分哪些数据是好的,哪些是坏的? (2认同)
  • 我必须反对这一点。RAID1 **不** 进行校验和,它*仅*防止驱动器完全故障。如果一个驱动器开始返回垃圾,它无法分辨哪个是正确的,并且会很高兴地返回垃圾数据。由于奇偶校验,我不确定 RAID5。这正是像 ZFS 和 BTRFS 这样的文件系统被发明的原因,这样你就可以得到一个“数据感知”的类似 RAID 的系统,它可以使用校验和来正确地纠正垃圾数据来验证数据块。 (2认同)