How to move iocage jails from one ZFS pool to another?

7,022

To move iocage from /mnt/OLD/iocage to /mnt/NEW/iocage:

Export jails

iocage stop JAILNAME
iocage export JAILNAME

This creates a dated .zip of the jail in /mnt/OLD/iocage/images.

Set up new pool

Use the FreeNAS jails GUI or iocage activate /mnt/NEW to activate iocage on the new pool. Ensure that the new activation has the iocage release(s) used by your jails. Use iocage fetch to install them. See each jail's fstab to see which release it expects.

Import jails

Copy the exported jail .zips to where iocage will look for them:

cp /mnt/OLD/iocage/images/* /mnt/NEW/iocage/images

Import:

iocage import JAILNAME

Note it's the jail name, not the filename of the zip.

Fix mountpoints and fstab

Any mount points in the jail, particularly the ones provided by iocage, will point at /mnt/OLD and cause the jail to not start with the VNET error in the question. These have to be manually fixed.

Edit /mnt/NEW/iocage/jails/JAILNAME/fstab and replace instances of /mnt/OLD with /mnt/NEW as appropriate. For simple jails :%s/OLD/NEW/g in vi will do the trick.

For example, the first three lines of the fstab created by the Syncthing plugin looks like this:

/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

Each /mnt/OLD needs to be replaced with /mnt/NEW.

Done

iocage start JAILNAME
Share:
7,022

Related videos on Youtube

Adam
Author by

Adam

Updated on September 18, 2022

Comments

  • Adam
    Adam almost 2 years

    What is the process to move iocage and all its jails from one ZFS pool to another?

    I've tried the process from this post: https://www.ixsystems.com/community/threads/how-to-move-jails-between-pools.72593/post-502840

    i.e. iocage export each jail, activate the new pool, then iocage import. That isn't successful:

    $ 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
    

    FreeNAS 11.3