在 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 个镜像和两个单个驱动器的跨度。我不清楚究竟是哪些操作导致了这种情况,但我怀疑这些是detach
es,因为detach
通常会给您一个未标记为任何池一部分的独立驱动器。
同时,你们不能attach
互相虚拟设备这些已经是活动池的一部分。由于它们是跨度,因此无法提取一个,这是 zfs 的已知缺点。
我只能假设可以添加两个空白驱动器来镜像每个驱动器,但我不确定是否可行,但你可以在一个条件下尝试它:-f
执行此操作时避免标记。