3Ware RAID6 阵列有时会挂起。未检测到损坏的磁盘?

Hal*_*aar 13 3ware

我们有一台 Debian 服务器,带有 3Ware 9650SE 8 驱动器 RAID 控制器,带有 5 个磁盘 RAID6 阵列,充当虚拟机主机,全部为 Linux。问题不断发生,我怀疑未检测到损坏的磁盘。

我们现在有几次崩溃,主机和所有客人都说 IO 系统阻塞了 120 秒或更长时间。我们怀疑 RAID 控制器有问题,但我们将其更换为具有相同固件的相同控制器,但没有修复。我不认为它会,因为第二个 RAID1 阵列保持正常工作。

大约一周前(周日),当这种情况发生时,自动验证为 66%。昨晚(星期五早上)是 67%。在启动之前和之后,以及在遇到问题时。当我用 关闭验证时tw_cli /c0/u0 stop verify,事情又变得响应了。

我怀疑它卡在大约 66% 的磁盘故障上。周六开始自动验证:

# tw_cli /c0 show verify
/c0 basic verify weekly preferred start: Saturday, 12:00AM
Run Code Online (Sandbox Code Playgroud)

并且通常会在周五之前完成。看到周日是 66%,周五是 67%,这不太可能是巧合。

所有驱动器上的“smartctl -a -d 3ware,0 /dev/twa0”和“smartctl -t long”(长时间的智能自检)都没有显示任何错误。也不行tw_cli /c0 show alarms

我怀疑磁盘以难以检测的方式损坏,但我将每个驱动器一个一个地从阵列中取出,从中创建了一个“单个”阵列,并添加了完整的零。没有磁盘显示错误。

或者有什么其他建议?

编辑:

这是布局:

# tw_cli /c0 show

Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
------------------------------------------------------------------------------
u0    RAID-6    OK             -       -       256K    5587.9    RiW    OFF    
u1    SPARE     OK             -       -       -       1863.01   -      OFF    
u2    RAID-1    OK             -       -       -       1862.63   RiW    ON     

VPort Status         Unit Size      Type  Phy Encl-Slot    Model
------------------------------------------------------------------------------
p0    OK             u0   1.82 TB   SATA  0   -            ST32000542AS        
p1    OK             u0   1.82 TB   SATA  1   -            ST32000542AS        
p2    OK             u0   1.82 TB   SATA  2   -            ST32000542AS        
p3    OK             u0   1.82 TB   SATA  3   -            ST32000542AS        
p4    OK             u0   1.82 TB   SATA  4   -            ST32000542AS        
p5    OK             u1   1.82 TB   SATA  5   -            WDC WD2002FYPS-02W3 
p6    OK             u2   1.82 TB   SATA  6   -            WDC WD2002FYPS-02W3 
p7    OK             u2   1.82 TB   SATA  7   -            WDC WD2002FYPS-02W3 

Name  OnlineState  BBUReady  Status    Volt     Temp     Hours  LastCapTest
---------------------------------------------------------------------------
bbu   On           Yes       OK        OK       OK       0      xx-xxx-xxxx
Run Code Online (Sandbox Code Playgroud)

有问题的单位是 u0。

编辑2:

tw_cli /c0 show diag 显示了一些有趣的东西(edit3:这是无害的,我发现它是由调用smartctl -a -d 3ware,X /dev/twa0where X 是无效端口引起的):

QueueAtaPassthrough() called with invalid TargetHandle: 0x17, portHandle: 0xFF

Legacy opcode=0xB1 error=0x10E

E=010E T=14:15:51     : Invalid operation for specified port
E=010E T=14:15:51 U=0 : Return error status to host
Error, Unit 23: Invalid operation for specified port
(EC:0x10e, SK=0x05, ASC=0x24, ASCQ=0x00, SEV=01, Type=0x70)
No additional sense data
Error, Unit 23: 0x10E OVERRIDDEN due to invalid sense buffer descriptor
sense buffer: len=0, address=0x414ca2c7c
Send AEN (code, time): 0031h, 06/21/2013 14:26:16
Synchronize host/controller time
(EC:0x31, SK=0x00, ASC=0x00, ASCQ=0x00, SEV=04, Type=0x71)
Run Code Online (Sandbox Code Playgroud)

我得到了很多这些。我不知道这意味着什么。我什至无法弄清楚它是哪个单元或端口。(edit3:我现在知道了,它是无害的)。

鉴于我的edit3,我又回到了第一个。除了验证在 66% 时挂起并导致阵列挂起外,没有任何迹象表明磁盘已损坏,这有时也会随机发生。我希望验证会发现错误......

小智 0

只是为了确定一下,您的固件版本是什么?

当满足以下要求时,我遇到了一个问题 - 听起来很像您所描述的问题:

  • 3ware 96xx系列控制器
  • 磁盘阵列6
  • 256k 条带大小
  • 固件版本 < v4.10.00.021*

当时没有可用的固件修复,因此我从 256k 迁移到 64k 条带大小,这也解决了该问题。您可以尝试作为解决方法,尽管这肯定需要几天时间才能完成。

后来我尝试了 256k 的新固件(* 4.10.00.021 我认为已经修复)并且工作得非常顺利。4.10.00.027 是最新版本。