【问题标题】:repairing misconfigured mirrored zfs pool修复配置错误的镜像 zfs 池
【发布时间】:2017-08-29 15:46:17
【问题描述】:

我的机器从两个 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

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

  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 端口。

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

【问题讨论】:

    标签: add device pool mirror zfs


    【解决方案1】:
    1. 递归地zfs snapshot 你的根池
    2. zfs send/recv此快照到另一个大小相等的存储棒或卷,配置为单独的根池
    3. 使用您复制的数据使这个单独的根池可引导
    4. 重新启动系统并从新的根池启动
    5. 将两根棍子作为镜像添加到新池中,从而破坏旧池
    6. 如果重新银化完成,请取出初始棒或卷并销毁它

    您现在拥有一个正确镜像的池,其中包含两个初始棒。

    【讨论】:

    • 听起来不错,但是如何对启动设备的文件系统进行快照呢?它的挂载点是 / ,不是吗?
    • @patmin 您可以使用zfs list -o name,mountpoint 显示所有池的所有文件系统的所有挂载点,然后查找/。我不确切知道 Linux 系统的布局,所以我不能更具体,抱歉。
    • 我试过sudo zfs send freenas-boot | sudo zfs recv -F newpool
    • 我正在开发一个 BSD 系统。从 sudo zfs list -r 我看到 freenas-boot、freenas-boot/ROOT、freenas-boot/ROOT/9.10.2-U2、freenas-boot/ROOT/Initial-Install、freenas-boot/ROOT/default、freenas-引导/grub。我试图跳过创建快照并使用“sudo zfs send freenas-boot | sudo zfs recv -F newpool”直接发送/接收 - 但似乎只有 376k 的 801M 被复制。
    • @patmin 抱歉,我将 Linux 和 BSD 混为一谈,但我不知道它们中的任何一个。 ;) 你必须递归发送,否则你只会发送最顶层的文件系统。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 2017-05-29
    • 2020-05-31
    • 2018-09-30
    • 2021-12-01
    • 2017-10-08
    • 1970-01-01
    相关资源
    最近更新 更多