ZFS:使用分离驱动器恢复池

ZFS:使用分离驱动器恢复池

我在 4 个硬盘的 zfspool 上安装了 Debian 系统(如 raid10 - 两个 raid1 的 raid0)。并显示为 2 个镜像的集合,每个镜像都有 2 个硬盘,即 mirror0 和 mirror1。

其中一个磁盘出现故障。由于此服务器中没有更多可用插槽,我使用以下命令将其分离:

zpool detach poolname diskname

然后物理拔掉旧电源,再插入新的电源。现在 zpool 如下所示:

zpool status rpool
  pool: rpool
 state: ONLINE
  scan: scrub repaired 52K in 0 days 08:33:06 with 0 errors on Sun May  9 08:57:09 2021
config:

        NAME                                        STATE     READ WRITE CKSUM
        rpool                                       ONLINE       0     0     0
          mirror-0                                  ONLINE       0     0     0
            ata-TOSHIBA_HDWQ140_104EK2MQFAYG-part3  ONLINE       0     0     0
            ata-TOSHIBA_HDWQ140_1042K0ECFAYG-part3  ONLINE       0     0     0
          ata-TOSHIBA_HDWQ140_104EK2MLFAYG          ONLINE       0     0     0

看起来它不再是 raid10。我无法用新磁盘替换故障磁盘:

zpool replace rpool 4504484537486819887 /dev/disk/by-id/newdisk_id
cannot replace 4504484537486819887 with /dev/disk/by-id/newdisk_id: no such device in pool

向池中添加新磁盘并恢复池配置的安全方法是什么?

答案1

当您使用detach故障磁盘时,顶层 vdev 不再是镜像。因此您无法使用replace旧磁盘。相反,您需要使用attach类似以下内容的命令来创建新磁盘:

zpool attach rpool ata-TOSHIBA_HDWQ140_104EK2MLFAYG <newdisk>

与往常一样,在运行任何东西之前,请确保拥有当前备份。

相关内容