Jail types

iocell supports five different jail types:

  • thick (default)
  • thin
  • base
  • template
  • empty

All types have their pros & cons and serves different needs.

Full (thick)

Full (thick) jail is the default type and it is created with the following command:

iocell create

A full jail has a fully independent ZFS dataset suitable for network replication (ZFS send/recv).

Clone (thin)

Thin jails are lightweight clones created with:

iocell create -c

Thin jails are cloned from the appropriate RELEASE at creation time and consume only a fraction of space, preserving only the changing data.


The original basejail concept based on nullfs mounts got popularized by ezjail. iocell basejails use independent read-only ZFS filesystem clones to achieve the same functionality.

To create a basejail execute:

iocell create -b

Basejails re-clone their base filesystems at each startup. They are ideal for environments where patching or upgrades are required at once to multiple jails.


Template is just another jail where the “template” property is set to “yes”.

To turn a jail into a template simply execute:

iocell set template=yes UUID|TAG

After this operation the jail can be listed with:

iocell list -t

To deploy a jail from this template, execute:

iocell clone TEMPLATE_UUID tag=mynewjail

Templates can be converted back and forth with setting the “template” property.


Empty jails are intended for unsupported jail setups or testing. To create an empty jail run:

iocell create -e

These are ideal for experimentation with unsupported RELEASES or Linux jails.