Using ZFS Alternate Root Pools
When a pool is created, the pool is intrinsically tied to the
host system. The host system maintains knowledge about the pool so that it
can detect when the pool is otherwise unavailable. While useful for normal operation,
this knowledge can prove a hindrance when booting from alternate media, or creating a
pool on removable media. To solve this problem, ZFS provides an alternate root
pool feature. An alternate root pool does not persist across system reboots, and
all mount points are modified to be relative to the root of the
pool.
Creating ZFS Alternate Root Pools
The most common use for creating an alternate root pool is for
use with removable media. In these circumstances, users typically want a single file system,
and they want it to be mounted wherever they choose on the
target system. When an alternate root pool is created by using the -R
option, the mount point of the root file system is automatically set to
/, which is the equivalent of the alternate root itself.
In the following example, a pool called morpheus is created with /mnt as
the alternate root path:
# zpool create -R /mnt morpheus c0t0d0
# zfs list morpheus
NAME USED AVAIL REFER MOUNTPOINT
morpheus 32.5K 33.5G 8K /mnt/
Note the single file system, morpheus, whose mount point is the alternate root
of the pool, /mnt. The mount point that is stored on disk is
/ and the full path to /mnt is interpreted only in the
context of the alternate root pool. This file system can then be exported
and imported under an arbitrary alternate root pool on a different system.
Importing Alternate Root Pools
Pools can also be imported using an alternate root. This feature allows for
recovery situations, where the mount points should not be interpreted in context of
the current root, but under some temporary directory where repairs can be performed.
This feature also can be used when mounting removable media as described above.
In the following example, a pool called morpheus is imported with /mnt as
the alternate root path. This example assumes that morpheus was previously exported.
# zpool import -R /mnt morpheus
# zpool list morpheus
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
morpheus 33.8G 68.0K 33.7G 0% ONLINE /mnt
# zfs list morpheus
NAME USED AVAIL REFER MOUNTPOINT
morpheus 32.5K 33.5G 8K /mnt/morpheus