我的 3ware 9650SE-16ML 卡上有一个糟糕的 RAID 阵列。我不知道我是否刚刚遭遇了双磁盘故障(真倒霉!)或者我是否读错了。相关输出为/c0 show all
:
Port Status Unit Size Blocks Serial
---------------------------------------------------------------
p0 DEGRADED u0 931.51 GB 1953525168 5QJ07MAH
p1 ECC-ERROR u0 931.51 GB 1953525168 5QJ0DCW9
p2 OK u0 931.51 GB 1953525168 5QJ0DW9C
p3 OK u0 931.51 GB 1953525168 5QJ0CKXJ
失败的原因如下(来自show alarms
):
Ctl Date Severity Alarm Message
------------------------------------------------------------------------------
c0 [Sun Nov 20 07:47:23 2011] INFO Rebuild started: unit=0
c0 [Sun Nov 20 08:20:12 2011] ERROR Drive ECC error reported: port=1, unit=0
c0 [Sun Nov 20 08:20:12 2011] ERROR Source drive error occurred: port=1, unit=0
c0 [Sun Nov 20 08:20:12 2011] ERROR Rebuild failed: unit=0
c0 [Sun Nov 20 08:20:12 2011] INFO Rebuild paused: unit=0
我思考发生的事情是 p0 发生故障,然后 p1 出现 ECC 错误(也就是说,我的数据不见了)。但...也许不是?它保持 97% 的重建状态,但无法绕过这个错误。
据我所知,之前的管理员关闭了定期验证,这才是导致我们陷入这种状态的原因。大多数人使用 3Ware RAID 时不必担心这个问题!
更新
经过几天的折腾,我执行了 IgnoreECC 操作,系统重建了,但我的数据被破坏了。真倒霉。
答案1
ECC 错误意味着驱动器上至少有一个不可读的扇区。但是,如果您幸运的话,该扇区可能实际上未被位于该卷上的文件系统使用,因此您可能仍能在此状态下从阵列复制数据。
重建期间还可以忽略 ECC 错误的一些选项:
/cx/ux start rebuild disk=p [ignoreECC]
/cx/ux set ignoreECC=on|off
但是,使用这些选项意味着受坏扇区影响的 RAID 条带将被损坏(不确定在这种情况下卡会做什么——它可能会用零或甚至随机数据替换整个条带),因此“恢复”的阵列实际上可能有无法检测到的损坏(如果受影响的条带位于某个数据文件的中间)。在尝试重建之前将数据从阵列复制到其他地方可能会更安全(至少在尝试读取坏区时应该会收到错误)。
您应该设置阵列的计划验证,以便尽早捕获无法读取的扇区,这样您就可以更换刚开始出现故障的驱动器。
答案2
我从未经历过物理驱动器 (p0) 进入“降级”状态,但是您可以通过以下方式移除 ECC-ERROR 驱动器或甚至“降级”驱动器
/c0 p1 remove
然后重新扫描
/c0 rescan
将它们放回突袭单位
maint rebuild c0 u0 p1
SATA 驱动器出现 ECC-ERROR 故障,即使只运行了几个小时,我也能恢复,但之后又会再次发生故障。
答案3
您的数据很可能已经丢失。ECC 错误意味着从此磁盘读取时发生不可恢复的错误。
如果您没有备份,您可以尝试转储阵列的当前状态。这可能是可行的,因为控制器不知道它是否丢失了数据或只是一个空白区域(它对文件系统没有任何了解)。