从现有目录创建 zfs 的正确方法?

Yur*_*kii 11 solaris zfs filesystems sun

假设我有一个带有 etc/ 作为常规目录的 rpool,现在我想创建一个单独的 zfs rpool/etc,显然继承了我在原始 /etc 中的所有数据。

这样做的最正确和最安全的方法是什么?

STW*_*STW 10

没有内置或自动化的方法来创建新的数据集并将现有数据迁移到其中。要完成它,您需要创建数据集并手动(例如 rsync)将数据发送到它。

假设您有一个tank\set名为folder. 您希望将该文件夹“提升”为名为 的子数据集tank\set\folder

mv /mnt/tank/set/folder /mnt/tank/set/folder-backup # move this out of the way so the new dataset doesn't mount on top of it
zfs create tank/set/folder
rsync -aAX /mnt/tank/set/folder-backup/ /mnt/tank/set/folder # bring over all the old data including acls and attributes
Run Code Online (Sandbox Code Playgroud)

然后查看数据看起来不错;为以防万一,拍摄父数据集的快照,然后删除folder-backup目录。


小智 4

不支持转/etc成自己的zfs文件系统。

原因是/etc在引导的早期阶段(Open)Solaris 开始挂载 zfs 文件系统之前需要它,因此如果更改它,它将是空的。

我的猜测是您想要拍摄 的快照/etc,但您可以只拍摄根文件系统的快照:

zfs snapshot rpool/ROOT/opensolaris
Run Code Online (Sandbox Code Playgroud)

您可能必须替换opensolaris为当前引导环境的名称(运行beadm list以找出哪个)

  • 好的,那么其他目录呢?比如,rpool/zones/myzone/export/home/git?:) (3认同)
  • 哦,好吧,这就是我的想法......但私下里希望有一种透明的方式来分割 zfs :) (2认同)