如何在重启后纠正 zfs 池尝试使用错误的设备?

如何在重启后纠正 zfs 池尝试使用错误的设备?

我最近重新启动了一台服务器,启动后我的一个 zfspools 不可用。

池:stor4 状态:UNAVAIL 状态:由于标签缺失或无效,无法使用一个或多个设备。没有足够的副本供池继续运行。操作:销毁并从备份源重新创建池。参见:http://zfsonlinux.org/msg/ZFS-8000-5E 扫描:无请求的配置:

    NAME        STATE     READ WRITE CKSUM
    stor4       UNAVAIL      0     0     0  insufficient replicas
      raidz2-0  UNAVAIL      0     0     0  insufficient replicas
        sdaa    ONLINE       0     0     0
        sdac    ONLINE       0     0     0
        sdad    ONLINE       0     0     0
        sdag    ONLINE       0     0     0
        sdai    ONLINE       0     0     0
        sdak    ONLINE       0     0     0
        sdam    ONLINE       0     0     0
        sdao    UNAVAIL      0     0     0  corrupted data
        sdap    UNAVAIL      0     0     0
        sdaq    UNAVAIL      0     0     0
        sdar    UNAVAIL      0     0     0
        sdas    UNAVAIL      0     0     0
        sdat    UNAVAIL      0     0     0
        sdau    UNAVAIL      0     0     0
        sdav    UNAVAIL      0     0     0

突然间所有驱动器都坏了,这对我来说似乎很奇怪。经过进一步调查,我发现 /dev/sdao 不是阵列的一部分,而是 lvm 的一部分。

UUID="dff51eba-e2ce-4b11-8fe5-7cc8d4d28d5b" TYPE="ext2" /dev/sdao5: UUID="V9Y5aB-DbB2-Djly-ndTD-nwbb-ADi2-iBOHte" TYPE="LVM2_member"

因此看起来,池正在尝试抓取不属于池的 /dev/sdao,然后死亡。

任何帮助,将不胜感激。

答案1

我最终解决了这个问题。显然 lvm 和 zfs 不能很好地协同工作。

  1. 关闭 JBOD 外壳电源
  2. 重启机器
  3. zpool status 不再显示该驱动器。
  4. zpool import -d /dev/disk/by-id stor4

    池:stor4 状态:在线 扫描:清理 于 2016 年 4 月 6 日星期三 13:15:36 修复 0 个,耗时 0 小时 2 分钟,出现 0 个错误 配置:

        NAME                                            STATE     READ WRITE CKSUM
        stor4                                           ONLINE       0     0     0
          raidz2-0                                      ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC134LLA13H  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC130YUZ78J  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC130ADRPT2  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC133YHCH74  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC134HF0CN1  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC133CL339U  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC133YHC7A8  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC134PDTNA9  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC134HF0TF5  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC134HF01HR  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC132RDTE7E  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC134PDT71R  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC136HXYZS3  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC136PT6DE9  ONLINE       0     0     0
            ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC133FE5JND  ONLINE       0     0     0
        spares
          ata-WDC_WD4000FYYZ-01UL1B2_WD-WCC131FYE89J    AVAIL
    

阵列处于在线状态,数据完好无损。似乎管理 /root 的 lvm 正在踩到 zfs 并将 zfs 的一个驱动器号分配给其物理卷。我应该注意到 zpool export 会出错,因为状态为不可用。使用 id 应该可以防止将来发生此类事情。

我希望这能帮助遇到同样问题的任何人。

相关内容