我在 SATA 多路复用器上的外部机箱中安装了 5 个 1TB WD Red 硬盘阵列。这些硬盘被送入带有 SATA 多路复用器控制器的台式机中。
经过大约一年的使用(这种情况发生过两次),阵列将开始重置,如下所示这个视频。没有迹象表明任何特定驱动器有故障,只是机箱关闭并且阵列中的所有驱动器断开连接。
我有两个这样的机柜,每次我把它们从一个机柜移到另一个机柜时,冗余阵列总是出问题。机柜多年来一直保持不变,接口卡也是如此,但安装新驱动器解决了一年的问题。
原因可能有很多,从电源噪音导致驱动电路缓慢损坏,到 ZFS 的操作系统实现不佳,但很难知道从哪里开始。什么策略能让我找出问题到底是什么?
操作系统:CentOS 7.0,内核:3.10.0
附件:SiI 3726 多路复用器
接口卡:SiI 3132 解复用器
硬盘:WD10EFRX
消息:
当发生重置时:
[ttt.tttt] ata4.03: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[ttt.tttt] ata4.03: failed command: WRITE DMA EXT
[ttt.tttt] ata4.03: cmd 35/00:.. ...:00/e0 tag 3 dma 144688 out
[ttt.tttt] ata4.03: status: { Busy }
[ttt.tttt] ata4.03: error: { ICRC UNC AMNF IDNF ABRT }
一旦 zpool 完全停止:
[ttt.tttt] INFO: task txg_sync:xxxxx blocked for more than 120 seconds
[ttt.tttt] INFO: task zpool:xxxxx blocked for more than 120 seconds
一旦响应终端命令发生第二次,例如
$ zpool status
该系统基本上毫无用处,需要完全重启。
该问题与驱动器电压下降无关,如最新视频。我认为一个关键的信息是盒子本身正在重置,所有灯,甚至它自己的电源灯都在重置。
发送到 dmesg 的消息太多,太长而无法附加。
输出自badblocks
:
$ badblocks -vn /dev/sdp1
irq_stat 0x00060002, device error via SDB FIS
SError: { Handshk }
failed command: WRITE FPDMA QUEUED
cmd 61/...
res 41/... ...Emask 0x410 (ATA bus error) <F>
status: { DRDY ERR }
error: { ICRC ABRT }
阵列中的所有 5 个驱动器都同样发生这种情况。就好像盒子超载了,然后自己重置了。
更新日期:2017 年 6 月 12 日
所有驱动器都被移至 USB3 互连而非 eSATA 上的第二个外壳。
- 外壳:ICY BOX IB-3810U3
- 多路复用器芯片:ASMedia ASM1074L
- 服务器主板USB3主机:技嘉GA-B85-HD3 SKT 1150
将所有驱动器移至新机柜后,badblocks
命令在每个驱动器上运行,没有出现任何错误。然后导入池并运行清理。未发现任何错误,清理成功完成。然而今天,所有 5 个驱动器都列出了一条消息(无法判断它们是否是此池/容器/阵列的驱动器):
WARNING: Your hard drive is failing
Device: /dev/sdk [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sdl [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sdm [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sdn [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sdo [SAT], unable to open device
zpool
此后,尝试列出驱动器的内容,它锁定了终端。新终端在任何命令上都锁定。top
列出txg_sync
并存储了大量z_rd_int_x
具有一定 CPU 使用率的进程。另外两个池成功地通过 SAMBA 提供文件,其中一个池继续重新同步自身(仅由 HD 灯显示),因为zpool status
挂起了。
smartctl
日期:2017 年 12 月 12 日
根据评论者的说法,以下是smartctl
的数据UDMA_CRC_Error_Count
。
对于当前失败的数组的第二次迭代:
4193, 4030, 3939, 2869, 3977
对于原始阵列(驱动器三已被换出):
3003, 3666, 0, 4536, 5309
对于同一机柜和连接中的 RAID0 条带
523, 504, 526, 553, 476
对于主机内部托管的具有热备的 ZFS 镜像:
0, 0, 0
在 Seagate Archive 驱动器上,这似乎是无稽之谈。:
Temperature_Celsius UDMA_CRC_Error_Count Head_Flying_Hours
40 (0 16 0 0 0) 0 57501022168585
这可能只是表明 eSATA 和 USB 3.0 本质上存在噪音并且数据损坏是不可避免的。
答案1
SMART 统计数据表明硬盘在其链接上发现了 CRC 错误。(要验证这不是之前已解决的问题,您应该监控UDMA_CRC_Error_Count
一段时间内的值 - 它是磁盘生命周期内错误的总数)
我以前见过这种情况,都是 SATA 电缆损坏造成的。更换电缆后问题就解决了(计数器的值仍然保留,但值保持不变)。不过,这是一个相当复杂的设置,问题可能出在电缆、多路复用器/解复用器或机箱的某个地方。