如何将 2 设备条带镜像附加到池?

如何将 2 设备条带镜像附加到池?

我有一个由 2TB HDD 组成的单驱动器池。我有两个 1TB 驱动器可用于镜像 - 我想为我的池添加冗余。

我如何将这两个驱动器连接为单个设备,以便它们可以用作条带镜像?

假设我的 2TB 驱动器为sda,空白 1TB 驱动器为sdbsdc

我试过了:zfs attach tank sda sdb sdc但是那说明too many arguments

我试过了:zfs attach tank sda sdb但是那意味着device is too small

我试过了:zfs attach tank sda sdb+sdc但是那意味着no such device in /dev

我试过了:zfs attach tank sda sdb,sdc但是那意味着no such device in /dev

我已经阅读了手册并搜索了网页——但我没有任何主意。

我想我可以尝试从这两个 1TB 驱动器创建一个新的条带池,在里面创建一个 zvol 并将其用作我的主池的镜像,但这可能无论如何都不会给我足够的镜像容量,而且还会带来很多不必要的开销。

我怎样才能做到这一点?

答案1

这不能直接通过 ZFS 完成。从手册页

虚拟设备不能嵌套,因此镜像或 raidz 虚拟设备只能包含文件或磁盘。不允许使用镜像的镜像(或其他组合)。

我的建议是创建一个由两个 1 TB 磁盘组成的新池,并使用合子频繁地将第一个池的内容发送到新池。

--- 警告:以下是笨重的解决方法!如果不是非常确定,请勿使用!!!---

无论如何,如果你真的想要将两个 1 TB 磁盘添加为前 2 TB 磁盘的镜像,可以尝试一种解决方法。您可以使用设备映射器(以其 LVM 形式)连接两个磁盘并将生成的卷附加到 2 TB 设备。例如:

pvcreate /dev/sdb
pvcreate /dev/sdc
vgcreate zvg /dev/sdb
vgextend zvg /dev/sdc
lvcreate zvg --name zdev -l +100%FREE
zpool attach tank /dev/sda /dev/zvg/zdev
zpool status

您可以使用 mdadm 获得类似(甚至更好)的结果,创建 RAID0 设备并将其附加到 zpool:

mdadm --create md127 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
zpool attach tank /dev/sda /dev/md127
zpool status

这种方法不是建议使用。使用时请自担风险。

答案2

要将两个新磁盘添加到池中,您可以使用zpool add tank mirror sdb sdc,但这会将新对添加为镜像,并将其与现有磁盘进行条带化。(这不会添加任何冗余)。

您需要使用zpool attach命令将磁盘附加到现有的 vdev,但不能使用镜像对来支持单个磁盘,而必须添加新的 2TB 磁盘使其成为镜像对。

相关内容