需要将一个或多个区域迁移到其他系统时,可考虑使用 zfs send 和 zfs receive 命令。根据具体情况,可能使用复制流最好,也可能使用递归流最好。
本节中的示例介绍了如何在系统之间复制区域数据。需要执行其他步骤来传输每个区域的配置并将每个区域附加到新系统。有关更多信息,请参见创建和使用 Oracle Solaris 区域 。
如果一个系统上的所有区域都需要移动到另一系统,请考虑使用复制流,因为它可保留快照和克隆。快照和克隆由 pkg update、beadm create 和 zoneadm clone 命令广泛使用。
在以下示例中,sysA 的区域安装在 rpool/zones 文件系统中,需要将它们复制到 sys 上的 tank/zones 文件系统。以下命令创建一个快照并通过使用复制流将数据复制到 sysB:
sysA# zfs snapshot -r rpool/zones@send-to-sysB sysA# zfs send -R rpool/zones@send-to-sysB | ssh sysB zfs receive -d tank
在以下示例中,若干个区域中的一个从 sysC 复制到 sysD。假定 ssh 命令不可用,但 NFS 服务器实例可用。以下命令可以用于生成递归的 zfs send 流,而不必担心区域是否是另一个区域的克隆。
sysC# zfs snapshot -r rpool/zones/zone1@send-to-nfs sysC# zfs send -rc rpool/zones/zone1@send-to-nfs > /net/nfssrv/export/scratch/zone1.zfs sysD# zfs create tank/zones sysD# zfs receive -d tank/zones < /net/nfssrv/export/scratch/zone1.zfs