如何将 iocage Jail 从一个 ZFS 池移动到另一个 ZFS 池?

Ada*_*dam 1 freebsd jail truenas

将 iocage 及其所有监狱从一个 ZFS 池移动到另一个 ZFS 池的过程是什么?

我已经尝试过这篇文章中的过程: https: //www.ixsystems.com/community/threads/how-to-move-jails- Between-pools.72593/post-502840

iocage export每个监狱,激活新池,然后iocage import。这并不成功:

$ iocage start syncthing
No default gateway found for ipv6.
* Starting syncthing
  + Started OK
  + Using devfs_ruleset: 6
  + Configuring VNET FAILED
  jexec: execvp: ifconfig: No such file or directory
  jexec: execvp: ifconfig: No such file or directory

Stopped syncthing due to VNET failure
Run Code Online (Sandbox Code Playgroud)

自由NAS 11.3

Ada*_*dam 8

要将 iocage 从 移动/mnt/OLD/iocage/mnt/NEW/iocage

出口监狱

iocage stop JAILNAME
iocage export JAILNAME
Run Code Online (Sandbox Code Playgroud)

这将创建一个日期.zip为 的监狱/mnt/OLD/iocage/images

设置新池

使用 FreeNAS Jails GUI 或iocage activate /mnt/NEW在新池上激活 iocage。确保新的激活具有您的监狱使用的 iocage 版本。用于 iocage fetch安装它们。查看每个监狱fstab以了解其期望的释放。

进口监狱

将导出的监狱 .zip 复制到 iocage 将查找它们的位置:

cp /mnt/OLD/iocage/images/* /mnt/NEW/iocage/images
Run Code Online (Sandbox Code Playgroud)

进口:

iocage import JAILNAME
Run Code Online (Sandbox Code Playgroud)

请注意,这是监狱名称,而不是 zip 的文件名。

修复挂载点和 fstab

监狱中的任何安装点,特别是 iocage 提供的安装点,都将指向/mnt/OLD并导致监狱无法启动,并出现问题中的 VNET 错误。这些必须手动修复。

根据需要编辑/mnt/NEW/iocage/jails/JAILNAME/fstab并替换 的实例。对于简单的监狱,vi 就可以了。/mnt/OLD/mnt/NEW:%s/OLD/NEW/g

例如,Syncthing 插件创建的前三行fstab如下所示:

/mnt/OLD/iocage/releases/11.3-RELEASE/root/bin  /mnt/OLD/iocage/jails/syncthing/root/bin    nullfs  ro  0   0 # Added by iocage on 2020-04-17 00:16:34
/mnt/OLD/iocage/releases/11.3-RELEASE/root/boot /mnt/OLD/iocage/jails/syncthing/root/boot   nullfs  ro  0   0 # Added by iocage on 2020-04-17 00:16:35
/mnt/OLD/iocage/releases/11.3-RELEASE/root/lib  /mnt/OLD/iocage/jails/syncthing/root/lib    nullfs  ro  0   0 # Added by iocage on 2020-04-17 00:16:35
Run Code Online (Sandbox Code Playgroud)

每个都/mnt/OLD需要替换为/mnt/NEW.

完毕

iocage start JAILNAME
Run Code Online (Sandbox Code Playgroud)