先前镜像的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)作为某种基本的HAtesting是一个好主意。

 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 

我无法将这两个镜头重新join镜像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' 

似乎在一个捕获 – 22 – 无法镜像,因为这两个vdevs已经是池的一部分(因此一个附加没有意义),无法删除vdevs,因为他们不是日志,备用等。 。

有谁知道一个方法来“重新启用”这个镜像,与现有的池vdevs? 我想这个和在线重播很类似。

谢谢

SC。

它看起来你有4个镜子的跨度,现在经过一些操作,你有3个镜子和两个单一驱动器的跨度。 目前还不清楚哪些操作确实导致了这一点,但我怀疑这些操作是否detach ,因为detach通常会给你一个没有标记为任何池的一部分的独立驱动器。

在同一时间,你无法attach两个已经是活动池的一部分的vdevs attach 在一起 。 而且由于它们是跨度,所以不可能提取一个,这是一个已知的zfs缺点。

我只能假设可以添加两个空白驱动器来镜像每个单个驱动器,但我不确定它是否可行,尽pipe您可以在一个条件下尝试:避免在执行时使用-f标志。