这是一个非常简单的问题,我在网上任何地方都找不到明确简单的答案!
我在 NAS 盒中安装了 RAID 5,其中包含 4 个物理硬盘,其中两个现在报告了一些坏扇区。我只是想了解驱动器之间的相互关系,以及坏驱动器中受损的数据是否可以轻松复制到其他驱动器。
那个坏块是否被盲目地复制到其他驱动器上(我认为不是)?我对 raid 5 中数据在磁盘上的分布情况了解有限,这或许可以解释这个问题的幼稚性。
我使用 QNAP NAS 盒,因此虽然这个问题更侧重于 Linux,但它是一个一般性问题,我不希望只针对 Linux 场景来回答。
答案1
直接回答你的问题:
该坏块是否被盲目地复制到其他驱动器(我认为不是)?
是的,这是有可能的。
如果你要执行“验证并修复“类型的操作,那么坏数据就有可能被认为是正确的,并且奇偶校验设备会被更新……即使奇偶校验设备实际上是正确的,而其他设备之一有故障。
这个问题没有简单的答案,因为这里涉及很多变量。
“RAID5”听起来像是一个标准事物... 但事实并非如此。RAID5 不是不同制造商实现之间的标准,甚至可能不是特定制造商的不同产品之间的标准。事实上,这个术语越来越流行,仅仅指“具有一个奇偶校验设备的存储“让情况更加混乱。仅凭这一点,很难给你一个”它会这样做“ 回答。
带有“硬件 RAID“设置后,您经常会发现未检测到的读取错误会在系统中成功传递,甚至无需根据奇偶校验设备验证数据 - 即:如果存储设备没有检测到某个扇区是坏的,那么奇偶校验就无济于事。
使用更现代、更先进的文件系统,例如虚拟文件系统和文件系统数据经过更仔细的校验和验证(之前数据从未经过校验和验证)。此时,即使存储设备无法检测到静默读取错误,也会检测到并纠正该错误。此外,还可以确定奇偶校验设备是否有故障,或者其他设备是否有故障。
当存储设备知道如果读取结果为错误,则还有截然不同的可能性。在磁存储(硬盘驱动器)领域,您会发现:
- 台式机硬盘通常会反复尝试执行成功读取。在此期间,它们通常会显得没有响应,并且这种情况可能会持续数秒。这是有道理的,因为这种磁盘旨在单独使用,没有冗余。
- 企业或“网络存储“驱动器将更倾向于宣布故障,宁愿保持可用状态。同样,这是有道理的,因为此类磁盘希望能够依靠镜像或奇偶校验设备在更高级别进行错误恢复。(查看限时错误恢复)
对于磁盘上的坏扇区,可以从两个层面进行管理。
- 磁盘本身可以决定一个扇区是“坏的“在 I/O 操作期间。
- 文件系统可能会将某个扇区记录为“坏的”,并有意避免这种情况。
对于现代磁盘,#1 更为常见,但对于较旧的磁盘,#2 是更常见的方式 - 有些老的磁盘甚至在出厂时就附带了坏扇区列表,您必须在调试时输入该列表。
磁盘通常不会重新定位“坏的“读取错误时会删除该扇区(因此您可以再试一次),而写入失败将导致重定位。
更深入地讲,对于特定行业来说,主要有两种故障模式:
- 数据看起来不对,但介质似乎运行正常。
- 由于磁方向性不良而导致的位翻转或信号减弱可能会导致读取错误。
- 写入(或重写)将正常工作,并且随后数据将被正确读取。
- 数据看起来不正确,并且介质无法正常工作。
- 读取错误可能是由存储介质的更基本问题引起的 - 例如磁头碰撞造成的划痕。
- 写入将无法正常工作。这通常会导致扇区被重新定位。
答案2
大多数系统处理它的方式与非 RAID 设备中的坏扇区相同。
当系统在任何设备上发现坏扇区时(无论是否为 RAID),它都会尝试从该扇区读取数据并将数据移至另一个扇区。它会对 RAID 设备执行相同的操作。唯一的区别是,由于数据可以重建,因此它更有可能成功将数据移至逻辑 RAID 设备的另一个扇区。
通常,RAID 层向上一层报告逻辑扇区已损坏但可以读取其内容。下一层通常会分配一个新的逻辑扇区,将数据写入其中,并相应地更新其跟踪信息。