RAID 1是否可以防止损坏?


14

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

它甚至不知道哪张是好的?

RAID 5是否可以防止损坏?

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

Answers:


13

RAID-1可防止两个驱动器之一完全损坏。如果驱动器未标记为故障,则假定其内容正确。但是,如果由于任何原因两个驱动器之一返回的数据不一致,则RAID系统将不会检测到该错误,并且应用程序将获得错误的数据。

许多控制器都有一个定期运行的验证过程,但这只是为了测试磁盘故障,而不是数据完整性。硬盘执行自己的数据完整性测试和校验和,用它们来发现坏扇区,但是该算法被设计为快速,紧凑,不彻底,因此错误可能会泄漏出去。

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


5

这取决于腐败的根源。如果RAID 1镜像中的驱动器有螺丝钉并且在写废话,则RAID镜像将降级,并且将使用好的驱动器,并且您将获得好的文件。对于RAID 5,这是通过2个数据驱动器和一个奇偶校验驱动器(以最简单的形式)完成的,并且如果3个驱动器之一无法写入正确的文件,则它将失败,并且您将剩下2个数据驱动器或1个数据驱动器和一个奇偶校验驱动器。

现在,让我们看看如果损坏是由病毒或程序错误引起的,会发生什么情况。在RAID 1和RAID 5中,由于驱动器正在正确写入,因此不会停止使用任何驱动器。没有失败。但是,文件将被破坏,因为病毒或错误正在写入垃圾,它将文件既写入RAID 1镜像中的驱动器,又写入RAID 5系统中的所有3个驱动器。

这就是为什么RAID不备份的原因。它可以防止最有可能发生的故障(磁盘故障),但是并不能解决很多其他情况。


4
+1“这就是为什么RAID不是备份的原因”上帝知道我听到过很多次“我很好,我的备份已覆盖RAID”
Urda 2010年

2
RAID如何区分好数据和坏数据?

1
Shaun ...如果您的数据被病毒吞噬或被意外删除,RAID永远无法将其区分为好或坏。所有RAID负责确保(在RAID 1中)两个磁盘相等。如果一个扇区的校验和失败,则RAID控制器将对其进行补偿或触发重建。在RAID 5中,如果扇区未通过奇偶校验检查,则会触发重建。RAID可防止物理驱动器发生故障以及由于数据丢失而导致的故障。它们无法防止由于程序故障或病毒而丢失的数据。
Urda 2010年

6
您对RAID 5的描述不准确。没有单独的奇偶校验驱动器,而是将奇偶校验分布在所有驱动器中。您最终得到的总可用空间为n-1,但是没有专用于奇偶校验的驱动器。
MDMarra 2010年

2
我必须对此投票。RAID1并没有做校验,它只能防止一个完整的驱动器故障。如果一个驱动器开始返回垃圾,它将无法判断哪个驱动器是正确的,并且会很高兴地返回垃圾数据。由于不确定性检查,我不确定RAID5。这就是发明诸如ZFS和BTRFS之类的文件系统的原因,从而使您得到一个类似于“数据感知” RAID的系统,该系统可以使用校验和来验证数据块,从而正确地纠正垃圾数据。
亚历克斯(Alex)

5

正如其他人所指出的那样,raid1系统无法判断两个扇区中哪个扇区不好。

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

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

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

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

raid1旨在防止突然的总体驱动器故障。寻找其他地方防止腐败。除此之外,Raid1没有提供“历史记录”,因此无法从人为或软件错误中恢复。可以使用ZFS等文件系统或Hammer等历史记录文件系统来防止损坏。


3

实际上,是的。绝大多数硬盘故障全部或全部不发生。(a)拔下电缆或驱动器微控制器出现故障,因此RAID控制器完全没有响应-明显的驱动器出现故障。或(b)电缆和驱动器微控制器性能良好,但是当其尝试读取一个扇区时,内部驱动器微控制器会检测到数据损坏,因为内部ECC校验和失败,并反复尝试读取该扇区(以防出现临时读取故障) )最终超时,因此RAID控制器会收到礼貌的“抱歉”响应-明显的故障驱动器。无论哪种方式,对于RAID-1或RAID-5控制器来说,很明显驱动器发生了故障。

原则上不可以。如果发生了严重错误,以致硬盘正在写废话,并且以某种方式可以很好地写出针对该废话的正确内部ECC代码,则RAID-1无法确定哪个驱动器是正确的。RAID-1系统可能会在重新同步时用损坏的数据覆盖正常数据。RAID-5并不更好。主动写入过程中的“ RAID-5写入孔”电源故障是一种特殊的罕见但并非不可能的情况。

据我所知,避免这种损坏的唯一方法是除了文件镜像外,还使用端到端校验和,或者自动作为文件系统的一部分(ZFS或Btrfs)或定期或手动(重新计算rsync校验和,简单的文件验证,Parchive文件集等);理想情况下,使用诸如SHA-256之类的加密哈希。


任何机会您都可以为这个问题提供答案。... superuser.com/questions/736612/…–
Mick
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.