如何调试/解决严重的 ZFS 问题?

J C*_*ins 6 zfs centos hard-disk

我已经建立了一个家庭数据服务器,并且已经关闭了除驱动器本身之外的几乎所有部件。

从在 CentOS 中使用软件 RAID 开始,我已经在 RAID 0 中运行了一系列 5 个驱动器,实际上完美无缺,两年。这完全是运行 RAID 的最危险方式。其他 5 个驱动器与前 5 个相同且来自同一批次,始终采用某种形式的 RAID 5 配置,首先使用软件 RAID,然后在完全重建后使用 ZFS。在经过数月的防弹服务后,该套装总是会定期放弃并以或多或少壮观的方式下线。

这些驱动器一直存在于最初通过多路复用 eSATA 连接的外部机箱中,现在通过多路复用 USB3 连接。

起初我认为问题可能出在廉价的机箱/多路复用器上,所以我在我拥有的两个机箱之间交换了 RAID 0 的 5 个驱动器和 RAID 5 阵列。RAID 0 继续完美无缺,RAID 5 继续有这些周期性的停电。

我首先暗示问题出在集合中的一个驱动器上,但五个驱动器中没有一个的问题比其他任何一个都多。所以我想知道 RAID 5 是否有一些奇怪的电源要求导致机箱跳闸,并投资了另一个机箱,这次是 USB 3 连接盒 - USB3 比 eSATA 更​​积极。

所以这已经稳定地工作了六个月,直到今天。在终端上,我收到了 5 条连续的消息:

WARNING: Your hard drive is failing
Device: /dev/sda [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sdb [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sdc [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sdd [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sde [SAT], unable to open device
Run Code Online (Sandbox Code Playgroud)

我已经去掉了盒子、多路复用器的连接、PCIe eSATA 扩展板,问题肯定出在驱动器上,但除了把它们全部扔掉之外,我想不出如何调试。当它第一次发生时zpool status,所有驱动器的错误几乎相同,奇怪的是它们都按字母顺序消失了。

我 zpool 清除,它重新同步,一切都很好一段时间,然后它停止响应。现在spool status从字面上挂起终端并且不受 Ctrl+C 的影响。

新讯息:

/dev/sda-e自发地将自己重命名为/dev/sda1-e1,由于没有读取或写入,我重新启动了驱动器盒。这些设备消失了,然后又如预期的那样重新出现,但1它们的名字仍然带有后缀。

更新:(06/03/2017)

使用Oracle 文档,我尝试设置failmodecontinue

zpool set failmode=continue tank
Run Code Online (Sandbox Code Playgroud)

在这种模式下,我继续定期获得

WARNING: Your hard drive is failing
Device: /dev/sda [SAT], unable to open device
Run Code Online (Sandbox Code Playgroud)

并且阵列中的驱动器都会产生写入错误:

   NAME                        STATE     READ WRITE CKSUM
    tank                        ONLINE       0    16    59
      raidz1-0                  ONLINE       0    32   118
        ata-WDC_WDC_WD10-68...  ONLINE       0    14     0
        ata-WDC_WDC_WD10-68...  ONLINE       0    12     0
        sda                     ONLINE       0    12     0
        ata-WDC_WDC_WD10-68...  ONLINE       0    12     0
        ata-WDC_WDC_WD10-68...  ONLINE       0    14     0

errors: 67 data errors, use '-v' for a list
Run Code Online (Sandbox Code Playgroud)

但是此时至少 zpool 保持活动状态并且不会无限期地挂起终端或挂起其他池。

有趣的是,只有写入在所有驱动器上产生错误,而且数量非常相等。

cku*_*jau 5

由于消息是由smartdnotify生成的,并且系统确实无法访问设备,因此我建议先调查驱动器问题,因为这看起来像是硬件问题。

对此zfs无能为力。更换故障硬盘驱动器(或电缆或控制器)后,zfs可能能够再次恢复池。