我们有一台 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
并且通常会在周五之前完成。考虑到周日为 66%,周五为 67%,这不太可能是巧合。
在所有驱动器上执行“smartctl -a -d 3ware,0 /dev/twa0”和“smartctl -t long”(长时间 SMART 自我检测)均未发现任何错误。 也没有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
所讨论的单位是 u0。
编辑2:
tw_cli /c0 show diag 显示了一些有趣的东西(edit3:这是无害的,我发现它是由调用smartctl -a -d 3ware,X /dev/twa0
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)
我收到很多这样的信息。但我不知道这意味着什么。我甚至不知道它是哪个单元或端口。(编辑 3:我现在知道了,它是无害的)。
鉴于我的修改 3,我又回到了原点。没有任何迹象表明磁盘已损坏,只是验证在 66% 时挂起并导致阵列挂起,这种情况有时也会随机发生。我希望验证能找到故障...
答案1
目前尚未提出的两件事:
- 这是 SATA RAID 控制器吗?如果是,SATA 电缆容易老化,更换它们可能会轻松解决此类问题。大多数情况下,当出现磁盘错误、延迟、超时但 SMART 值都正常且驱动器通过所有自检时,可以尝试此方法。不幸的是,找到一个好的 SATA 电缆供应商很困难。
- 3Ware RAID 控制器已经过时,目前已不再受支持。您既得不到固件升级,也得不到备件。如果您的控制器坏了,如果没有匹配的控制器和固件,RAID 可能无法恢复。然后需要昂贵的数据恢复。
答案2
此问题可能是由于其中一个磁盘遇到读取错误并阻塞整个阵列,直到它设法重新分配扇区或 RAID 控制器认为驱动器已损坏并将其从阵列中启动出来,将其标记为“降级”(这完全取决于相关控制器)。如果磁盘开始损坏但仍通过 SMART,则可能经常发生这种情况。大多数消费者磁盘将继续尝试读取。
在某些用于 RAID 的驱动器中,这个问题可以通过使用一种称为错误恢复控制。WD 将此称为 TLER。摘自网站:
RAID-specific time-limited error recovery (TLER) - Pioneered by WD, this feature prevents drive fallout caused by the extended hard drive error-recovery processes common to desktop drives.
基本上,它告诉磁盘,如果它无法读取某个扇区,则在 x 秒后放弃。这在 RAID 中非常有用,因为可以从另一个磁盘恢复数据。
据我所知,ST32000542AS 没有实现任何形式的 ERC,因此它们中的任何一个都可以阻止整个阵列。WD2002FYPS 实际上实现了 WD 的 TLER,因此它们不会导致此问题。
答案3
只是为了确认一下,您的固件版本是什么?
当满足以下要求时,我遇到了一个问题 - 这听起来很像您所描述的:
- 3ware 96xx 系列控制器
- RAID 6
- 256k 条带大小
- 固件版本 < v4.10.00.021*
当时没有可用的固件修复程序,所以我将条带大小从 256k 迁移到 64k,这也解决了这个问题。您可以尝试一种解决方法,尽管这肯定需要几天时间才能完成。
后来我尝试了新的固件(* 4.10.00.021,我认为已经修复)256k,效果很好。4.10.00.027 是最新版本。
答案4
我以前在使用 3ware 控制器和 Seagate 硬盘时遇到过问题。存在细微的固件不兼容问题。我换用了三星硬盘,问题解决了。