zpool vdevs 之前已镜像,现在未镜像,无法重新镜像

zpool vdevs 之前已镜像,现在未镜像,无法重新镜像

在 FreeBSD 10.2-RELEASE 上,直到昨天我在开发(幸运)环境中进行了以下设置:

    NAME                          STATE     READ WRITE CKSUM
    bigpool                       ONLINE       0     0     0
      mirror-0                    ONLINE       0     0     0
        multipath/faba_lun0       ONLINE       0     0     0
        multipath/fabb_lun0       ONLINE       0     0     0
      mirror-1                    ONLINE       0     0     0
        multipath/faba_lun1       ONLINE       0     0     0
        multipath/fabb_lun1       ONLINE       0     0     0
      mirror-2                    ONLINE       0     0     0
        multipath/faba_lun2       ONLINE       0     0     0
        multipath/fabb_lun2       ONLINE       0     0     0
      mirror-3                    ONLINE       0     0     0
        multipath/faba_lun3       ONLINE       0     0     0
        multipath/fabb_lun3       ONLINE       0     0     0

然后我认为尝试“禁用”第 4 个镜像(镜像 3)作为某种基本的 HA 测试是一个好主意。

zpool detach bigpool multipath/faba_lun3

然后我认为这是一个坏主意,所以我重新添加了磁盘:

zpool add bigpool multipath/faba_lun3

我现在有这样的设置:

    NAME                          STATE     READ WRITE CKSUM
    bigpool                       ONLINE       0     0     0
      mirror-0                    ONLINE       0     0     0
        multipath/faba_lun0       ONLINE       0     0     0
        multipath/fabb_lun0       ONLINE       0     0     0
      mirror-1                    ONLINE       0     0     0
        multipath/faba_lun1       ONLINE       0     0     0
        multipath/fabb_lun1       ONLINE       0     0     0
      mirror-2                    ONLINE       0     0     0
        multipath/faba_lun2       ONLINE       0     0     0
        multipath/fabb_lun2       ONLINE       0     0     0
      multipath/faba_lun3         ONLINE       0     0     0
      multipath/fabb_lun3         ONLINE       0     0     0

我无法将两个 lun3 重新连接到镜像 3:

root# zpool attach bigpool multipath/faba_lun3 multipath/fabb_lun3
invalid vdev specification
use '-f' to override the following errors:
/dev/multipath/fabb_lun3 is part of active pool 'bigpool'

似乎陷入了困境 - 无法镜像,因为两个 vdev 都已经是池的一部分(因此附加没有意义),并且无法删除 vdev,因为它们不是日志、备用等......

有谁知道使用现有池 vdev 来“重新启用”此镜像的方法吗?我猜这类似于在线重新布局。

谢谢

sc.

答案1

在我看来,您有 4 个镜像的跨度,现在经过一些操作后,您有 3 个镜像和两个单个驱动器的跨度。我不清楚究竟是哪些操作导致了这种情况,但我怀疑这些是detaches,因为detach通常会给您一个未标记为任何池一部分的独立驱动器。

同时,你们不能attach互相虚拟设备这些已经是活动池的一部分。由于它们是跨度,因此无法提取一个,这是 zfs 的已知缺点。

我只能假设可以添加两个空白驱动器来镜像每个驱动器,但我不确定是否可行,但你可以在一个条件下尝试它:-f执行此操作时避免标记。

相关内容