ZFS-2 条带镜像集转换为 1 个镜像集,如何操作?

ZFS-2 条带镜像集转换为 1 个镜像集,如何操作?

目前我正在运行 ZFS 条带镜像集:

NAME                                            STATE     READ WRITE CKSUM
data                                            ONLINE       0     0     0
  mirror-0                                      ONLINE       0     0     0
    gptid/cfa8a519-5f83-1ce1-a581-c9c8fccbd20a  ONLINE       0     0     0
    gptid/f5d15303-c826-ad69-ee88-ad3a8fc2460c  ONLINE       0     0     0
  mirror-1                                      ONLINE       0     0     0
    gptid/13f52f4c-bb95-dfca-844b-db46d766c808  ONLINE       0     0     0
    gptid/21ddf484-33ad-6f43-c191-9f7ce4070677  ONLINE       0     0     0

镜像 0 和镜像 1 是条带化的。但我想将其更改为 2 磁盘设置,即镜像设置。由于镜像 1 组中的 2 个磁盘最大,所以我想保留该镜像组。但我猜镜像 0 组包含未存储在镜像 1 组中的数据。

所以简短的问题是,如何在不丢失数据的情况下将我的配置更改为 2 磁盘镜像设置?

提前致谢!

答案1

目前您无法删除 VDEV。如果您想删除镜像 0,您基本上必须进行备份,然后重新创建池并恢复。

答案2

使用 OpenZFS v2.1+ 实际上可以实现这一点

zfs-remove状态手册页

此命令支持删除热备盘、缓存、日志以及镜像和非冗余主顶层 vdev,包括重复数据删除和特殊 vdev。

然而存在一些限制:

仅当主池存储不包含顶级 raidz vdev、所有顶级 vdev 具有相同的扇区大小且所有加密数据集的密钥都已加载时,才可以删除顶级 vdev。

据此,只要满足上述限制,并且剩余的池足够容纳所有数据,你就可以通过mirror-1发行来缩小池子。zfs remove data mirror-1

https://openzfs.github.io/openzfs-docs/man/v2.1/8/zpool-remove.8.html

相关内容