外部连接的 ZFS 池挂断,驱动器上没有错误迹象

外部连接的 ZFS 池挂断,驱动器上没有错误迹象

我在 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 电缆损坏造成的。更换电缆后问题就解决了(计数器的值仍然保留,但值保持不变)。不过,这是一个相当复杂的设置,问题可能出在电缆、多路复用器/解复用器或机箱的某个地方。

相关内容