3Ware 的 tw_cli “DEGRADED”磁盘与“ECC-ERROR”是什么意思?

Bil*_*iss 10 linux raid 3ware

我在 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            
Run Code Online (Sandbox Code Playgroud)

失败是(来自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
Run Code Online (Sandbox Code Playgroud)

认为发生的事情是 p0 失败,然后 p1 出现 ECC 错误(也就是我的数据不见了)。但是……也许不是?它保持 97% 的重建,但无法克服这个错误。

据我所知,以前的管理员关闭了定期验证,这就是让我们进入这种状态的原因。这不是大多数人应该担心他们的 3Ware RAID!

更新

经过几天的努力,我做了 IgnoreECC 位并重建了它,但我的数据被冲洗掉了。无赖。

Ser*_*sov 7

ECC 错误意味着驱动器上至少有一个不可读的扇区。但是,如果幸运的话,位于该卷上的文件系统实际上可能不会使用该扇区,因此您仍然可以在此状态下从阵列中复制数据。

还有一些选项可以在重建期间忽略 ECC 错误:

/cx/ux start rebuild disk=p [ignoreECC]
/cx/ux set ignoreECC=on|off
Run Code Online (Sandbox Code Playgroud)

但是,使用这些选项意味着受坏扇区影响的 RAID 条带将被损坏(不确定在这种情况下卡会做什么——它可能会用零甚至随机数据替换整个条带),因此“恢复”阵列实际上可能存在无法检测的损坏(如果受影响的条带位于某个数据文件的中间)。在尝试重建之前将数据从阵列复制到其他地方可能更安全(至少在尝试读取坏区域时应该会出错)。

您应该设置阵列的预定验证以更早捕获不可读的扇区,以便您可以更换刚开始变坏的驱动器。