我有一个名为 storage 的 zpool,其中包含五个设备 raidz1 阵列。
今天我去买了另一台 3TB 设备并将其放入我的外壳中。但是,我没有创建一个新池并将该设备添加到其中,而是犯了一个错误,并将其添加到了现有的存储池中。
现在我有一个要删除的顶级设备sdg
(即新驱动器)。每次我尝试删除它时,我都会得到:
cannot remove sdg: only inactive hot spares, cache, top-level, or log devices can be removed.
那么现在我该如何删除这个设备呢?如果此设备发生故障,我的整个池将不可用。我想我应该去购买另一个驱动器,至少它会被镜像,但我只是不敢相信没有正确的方法来做到这一点。
这是我的状态转储:
pool: storage
state: ONLINE
scan: scrub canceled on Wed Jul 23 17:26:08 2014
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-ST3000DM001-1CH166_Z1F1PYM6 ONLINE 0 0 0
ata-ST3000DM001-1CH166_W1F24CSC ONLINE 0 0 0
ata-ST3000DM001-1CH166_W1F2372R ONLINE 0 0 0
ata-ST3000DM001-1CH166_W1F24BTK ONLINE 0 0 0
ata-ST3000DM001-1CH166_Z1F2KKLW ONLINE 0 0 0
sdg ONLINE 0 0 0
errors: No known data errors
答案1
不幸的是,ZFS 当前不支持从池中删除 vdev(此驱动器)(但有工作正在进行中以支持它)。解决方法是将数据从池中转储并重新创建它,然后将数据放回去。
答案2
跟进:对于那些从那时起阅读本文的人来说,至少从 FreeBSD 12.2-RELEASE 开始这是可能的(但是,手册页在 12.2 的部分zpool
中没有提到这一点,但是也允许删除非冗余的顶级 vdev,remove
zpool remove
如果池有足够的可用空间)。