无法导入 zpool 卷:I/O 错误

无法导入 zpool 卷:I/O 错误

这是在 nexenta 开放存储上。我有一个 zpool,由于某些磁盘,它处于 UNAVAIL 状态。

# zpool import -F
  pool: delta
    id: XYAZA
 state: UNAVAIL
status: One or more devices are missing from the system.
action: The pool cannot be imported. Attach the missing
        devices and try again.
config:

        delta                        UNAVAIL  insufficient replicas
          raidz2-0                   UNAVAIL  insufficient replicas
            c0t5000C500573978EBd0    ONLINE
            c0t5000C50057397933d0    ONLINE
            c0t5000C50057397C47d0    UNAVAIL  cannot open
            c0t5000C5005739997Fd0    UNAVAIL  cannot open
            c0t5000C50057399F87d0    ONLINE
            c0t5000C5005739A90Bd0    ONLINE
            c0t5000C5005739ABC7d0    UNAVAIL  cannot open
            c0t5000C5005739AC0Fd0    ONLINE
          raidz2-1                   DEGRADED
            c0t5000C50057398657d0    ONLINE
            c0t5000C50057398E03d0    ONLINE
            c0t5000C50057398EF7d0    ONLINE
            c0t5000C50057398FAFd0    ONLINE
            c0t5000C5005739A39Fd0    UNAVAIL  cannot open
            c0t5000C5005739AAFFd0    ONLINE
            spare-6                  DEGRADED
              c0t5000C5005739AC3Fd0  UNAVAIL  cannot open
              c0t5000C50057398EDBd0  ONLINE
            c0t5000C5005739AE9Bd0    ONLINE


~# zpool import -FXf delta
cannot import 'delta': I/O error
        Destroy and re-create the pool from
        a backup source.
  1. 我怎样才能使这个 zpool 导入正常工作?
  2. 被指出“不可用”的磁盘,我该如何修复/更换它们?

更新日期:2018 年 9 月 7 日

在 Nexenta 上找到磁盘到插槽的映射后,重新安装增量卷中的磁盘,我可以让 raidz2-1 组中的一个磁盘处于 ONLINE 状态,但 raidz2-0 组中的 3 个磁盘仍然继续显示为 UNAVAIL。

# zpool import -F
  pool: delta
    id: XYAZA
 state: UNAVAIL
status: One or more devices are missing from the system.
action: The pool cannot be imported. Attach the missing
        devices and try again.
config:

        delta                        UNAVAIL  insufficient replicas
          raidz2-0                   UNAVAIL  insufficient replicas
            c0t5000C500573978EBd0    ONLINE
            c0t5000C50057397933d0    ONLINE
            c0t5000C50057397C47d0    UNAVAIL  cannot open
            c0t5000C5005739997Fd0    UNAVAIL  cannot open
            c0t5000C50057399F87d0    ONLINE
            c0t5000C5005739A90Bd0    ONLINE
            c0t5000C5005739ABC7d0    UNAVAIL  cannot open
            c0t5000C5005739AC0Fd0    ONLINE
          raidz2-1                   DEGRADED
            c0t5000C50057398657d0    ONLINE
            c0t5000C50057398E03d0    ONLINE
            c0t5000C50057398EF7d0    ONLINE
            c0t5000C50057398FAFd0    ONLINE
            c0t5000C5005739A39Fd0    ONLINE
            c0t5000C5005739AAFFd0    ONLINE
            spare-6                  DEGRADED
              c0t5000C5005739AC3Fd0  UNAVAIL  cannot open
              c0t5000C50057398EDBd0  ONLINE
            c0t5000C5005739AE9Bd0    ONLINE

我在设备上找到了另一个池的单个备用磁盘online。现在的问题是 1. 我是否应该将备用磁盘分离/连接到 raidz2-1 组,该组在 spare-6 子类别下只有一个磁盘 UNAVAIL?或者 2. 我是否应该将备用磁盘分离/连接到 raidz2-0 组,该组仍有 3 个磁盘 UNAVAIL?

鉴于该池处于离线状态(导出后)并且现在无法导入。

我查看了有关如何创建此池的一些历史记录,它是在过去使用以下命令创建的

zpool create -m /volumes/delta -o autoreplace=on delta raidz2 c0t5000C500573978EBd0 c0t5000C50057397933d0 c0t5000C50057397C47d0 c0t5000C5005739997Fd0 c0t5000C50057399F87d0 c0t5000C5005739A90Bd0 c0t5000C5005739ABC7d0 c0t5000C5005739AC0Fd0 raidz2 c0t5000C50057398657d0 c0t5000C50057398E03d0 c0t5000C50057398EF7d0 c0t5000C50057398FAFd0 c0t5000C5005739A39Fd0 c0t5000C5005739AAFFd0 c0t5000C5005739AC3Fd0 c0t5000C5005739AE9Bd0

这是否表明 raidz2-0 和 raidz2-1 是两个 RAIDZ 镜像池?

如果是,我是否应该优先修复 raidz2-1 组磁盘,使其恢复在线状态,而不是 raidz2-0(有 3 个磁盘故障)?

答案1

  1. 我是否应该将备用磁盘分离/附加到 raidz2-1 组,该组在 spare-6 子类别下只有一个磁盘 UNAVAIL?

您的备用磁盘已自动连接raidz2-1并重新镀银。通常,您现在会将c0t5000C5005739AC3Fd0其从系统中分离并移除,因为它已经发生过一次故障(或者,如果您没有多余的资源,则将其重新用于另一个系统并希望获得最佳效果)。

但这不会帮助你,因为raidz2-0仍然处于关闭状态。如果任何zpool 中的 vdev 发生故障,整个池及其上的所有数据都会丢失。如果无法维持配置的奇偶校验,每个 vdev 都会发生故障,因为其中有足够多的磁盘发生故障。在您的例子中,每个 Z2 vdev 可以承受两个磁盘的丢失,但其中一个丢失了三个。

  1. 我是否应该将备用磁盘分离/附加到仍有 3 个磁盘处于 UNAVAIL 状态的 raidz2-0 组?

首先,您现在没有真正的备用磁盘。而且,即使您从 中移除了一块正常工作的磁盘raidz2-1(不推荐!),您仍然不会有任何收获,除非您修复 中的故障磁盘raidz2-0。奇偶校验数据必须来自某个地方,在本例中,它必须来自您的故障磁盘。如果您无法让其中至少一个磁盘正常工作,那么最好的办法是从备份中恢复。

我查看了有关如何创建该池的一些历史记录,它是过去使用以下命令创建的, zpool create -m /volumes/delta [...] 这是否表明 raidz2-0 和 raidz2-1 是两个 RAIDZ 镜像池?

不,这意味着您的池由两个条带化 vdev 组成,每个都配置了 raidz2 冗余和 8 个磁盘。您最多可以在每个 vdev 中丢失 2 个磁盘。如果在任何一个 vdev 中丢失 3 个磁盘,游戏就结束了。

在 ZFS 中,所有冗余都在 vdev 级别处理。池始终在所有现有 vdev 上进行条带化。如果任何 vdev 发生故障,池也会发生故障。镜像是 vdev 的一种冗余类型,与 raidz1/z2/z3 不兼容(您可以混合搭配具有不同冗余类型的 vdev,但最弱的冗余类型将决定池的强度,性能会受到影响,因此不建议这样做)。

如果是,我是否应该优先修复 raidz2-1 组磁盘,使其恢复在线状态,而不是 raidz2-0(有 3 个磁盘故障)?

不,你必须先修复raidz2-0


它们全部属于 Seagate,其中有 SEAGATE、Rev. A001 和 SEAGATE、Rev. 0002,大小为 1.82TB

这现在对您没有帮助,但将来可能会有帮助:建议混合搭配制造商和型号,甚至制造日期,以平衡“一批坏驱动器”的情况。例如,如果您从 4 家主要制造商(Seagate、Western Digital、Hitachi、Toshiba)各购买了 4 个磁盘,并将它们 2-2 拆分到您的 vdev 上,即使一个制造商的所有磁盘同时发生故障,您仍然会有一个工作池。

相关内容