我可以通过组合磁盘来创建单个 zfs 镜像吗?
mypool
mirror1
disk1 (2TB)
disk2 (2TB)
combined
disk3 (1TB)
disk4 (1TB)
换句话说,disk3 和 disk4 应该包含与 disk3+disk4 组合相同的数据。
这可能吗?或者类似的东西可能吗?如果是这样,让我从当前配置中获取的命令是什么:
mypool
mirror1
disk1 (2TB)
disk2 (2TB)
到上面的配置?
对不起,但是不,我认为你做不到。
但如果你热衷于尝试,首先
备份你的游泳池!
这篇文章是一个学术练习,旨在为您提供想法,并不保证它在现实世界中有效,并且明确警告您不要因根据这些建议采取的行动而导致数据丢失。
我确实知道这
zpool
会警告您不要混合镜像和 raidz vdev。参见例如的-f
标志zpool add
。您提出的 vdevcombined
本质上是一个“raidz-0
”或串联的 vdev,而mirror1
显然是一个镜像。综上所述,备份池后,请仔细研究手册页并注意
-n
某些命令上的标志。这将允许您查看命令的效果,而无需对您的池进行任何实际操作。在手册页中可以找到针对您所提议的解决方案的更多证据:
zpool
但是,如果您使用的是 FreeBSD,则可以使用
gstripe
连接disk3
和disk4
创建combined
设备。然后您可以将该设备添加到镜像中,因为 ZFS 会将其视为另一个磁盘。假设您在 FreeBSD 上运行 ZFS,这里有一个关于如何对此进行试验的建议。我们将使用 2GB 的模拟驱动器而不是 TB,但除此之外......
创建对应于 drive[1-4] 文件的伪设备 md1 到 md4:
您现有的镜像很容易创建:
这是你目前被困的地方。
zpool
有了这个沙箱,您现在可以使用的标志试验各种命令-n
,但我认为没有任何效果,除了这个:如果您的 2TB 驱动器恰好是 1TB 驱动器的两倍,那么您也可能会遇到这种情况。连接两个 1TB 驱动器时的轻微空间损失导致
combined
驱动器比两个本机 2TB 驱动器中的任何一个都略小。diskinfo(8)
确认md1
和md2
每个都有 4194304 个扇区,但stripe/combined
小了 256 个扇区,只有 4194048:但在我的沙盒游戏中,我可以解决这个问题。
首先,我将清除
combined
条带及其组件伪设备 /dev/md3 和 /dev/md4:现在我可以重新创建 disk3 和 disk4 使它们各自略大于 1GB,重新创建 /dev/md3 和 md4 设备,将它们条带化以创建 /dev/stripe/combined 设备,并将该设备附加到镜子: