将 zfs 数据集写入块存储

将 zfs 数据集写入块存储

有没有一种正确的方法可以将 ZFS 数据集(在我的情况下是 ext4 ubuntu 文件系统)写入空白 SSD?数据看起来像这样,这很有帮助

tank/filesystems/ubuntu_1604/(/etc, /boot, /var, and so on)
tank/filesystems/centos_7/(/etc, /boot /var, and so on)

我在想也许我可以用 dd 做一个精确的位复制,但我不知道这与 ZFS 的复制如何配合。

dd if=/filesystems/ubuntu_1604/ of=/dev/sdb bs=1m

有人这样做过吗?

答案1

创建数据集的快照并将zfs send其内容写入设备。不过,读取实际数据时可能会出现垃圾问题。在这种情况下,您需要记录数据流的大小以将读取限制在有效负载内。

除非您想写入整个池,否则dd由于以下两个原因是不合适的:

  • 您需要导出池才能使用,dd否则输出将无法使用。您无法使用导出的 zpool 访问单个数据集。

  • Zpools 存储在设备(磁盘、分区……)中,但数据集存储在共享 zpools 中。数据集和底层设备之间没有一对一的关系。

相关内容