目前我正在运行 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