修复配置错误的镜像 zfs 池

repairing misconfigured mirrored zfs pool

我的机器从两个 USB 设备的镜像 zfs 池启动。游泳池曾经是这样的:

sudo zpool status
pool: freenas-boot
state: ONLINE
scan: resilvered 891M in 15h19m with 0 errors on Wed Mar 29 03:29:55 2017
config:

    NAME        STATE     READ WRITE CKSUM
    freenas-boot  ONLINE     0     0     0
      mirror-0  ONLINE       0     0     0
        da0p2   ONLINE       0     0     3
        da1p2   ONLINE       0     0     0

errors: No known data errors

我试图用校验和错误替换媒体,但通过一系列错误使用的命令,我最终 "adding" 新驱动器而不是 "attaching" 它。该池现在是两个设备的串联,不再镜像:

  NAME        STATE     READ WRITE CKSUM
    freenas-boot  ONLINE     0     0     0
      da0p2     ONLINE       0     0     0
      da1p2     ONLINE       0     0     0

我了解到我无法再从池中删除设备,而且很明显

 zpool attach -f pool device new_device

命令无效。

我计划镜像(足够大的)第三和第四驱动器上的所有数据,然后摆脱串联的第一和第二驱动器。但是,镜像似乎只适用于设备。我需要四个设备来进行镜像配置,这是不利的,因为机器外壳内只有两个 USB 端口。

转向两个设备的可引导镜像池的好方法是什么?请记住,有问题的机器是一台服务器,它无法启动会使多个用户不高兴。

  1. 递归地zfs snapshot你的根池
  2. zfs send/recv 此快照到另一个相同大小的存储棒或卷,配置为单独的根池
  3. 使用您复制的数据使这个单独的根池可启动
  4. 重新启动系统并从新的根池启动
  5. 将两根棍子作为镜像添加到新池中,从而销毁旧池子
  6. 如果重新同步已完成,请移除初始棒或卷并将其销毁

您现在有一个带有两个初始棒的正确镜像池。