A pool is intrinsically tied to the host system. The host system maintains information about the pool so that it can detect when the pool is unavailable. Although useful for normal operations, this information can prove a hindrance when you are booting from alternate media or creating a pool on removable media. To solve this problem, ZFS provides an alternate root location pool feature. An alternate root pool location does not persist across system reboots, and all mount points are modified to be relative to the root of the pool.
The most common reason for creating a pool at an alternate location 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 a pool is created by using the zpool create –R option, the mount point of the root file system is automatically set to /, which is the equivalent of the alternate root value.
In the following example, a pool called morpheus is created with /mnt as the alternate root location:
# 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 location of the pool, /mnt. The mount point that is stored on disk is / and the full path to /mnt is interpreted only in this initial context of the pool creation. This file system can then be exported and imported under an arbitrary alternate root location on a different system by using –R alternate-root-value syntax.
# zpool export morpheus # zpool import morpheus cannot mount '/': directory is not empty # zpool export morpheus # zpool import -R /mnt morpheus # zfs list morpheus NAME USED AVAIL REFER MOUNTPOINT morpheus 32.5K 33.5G 8K /mnt
Pools can also be imported using an alternate root location. This feature allows for recovery situations, where the mount points should not be interpreted in context of the current root mount point, but under some temporary directory where repairs can be performed. This feature also can be used when you are mounting removable media as described in the preceding section.
In the following example, a pool called morpheus is imported with /mnt as the alternate root mount point. This example assumes that morpheus was previously exported.
# zpool import -R /a pool # zpool list morpheus NAME SIZE ALLOC FREE CAP HEALTH ALTROOT pool 44.8G 78K 44.7G 0% ONLINE /a # zfs list pool NAME USED AVAIL REFER MOUNTPOINT pool 73.5K 44.1G 21K /a/pool
In addition to importing a pool at an alternate root location, you can import a pool with a temporary name. In certain shared storage or recovery situations, this feature allows two pools with the same persistent name to be simultaneously imported. One of those pools must be imported with a temporary name.
In the following example, the rpool pool is imported at an alternate root location and with a temporary name. Because the persistent pool name conflicts with a pool that is already imported, it must be imported by pool ID or by specifying the devices.
# zpool import pool: rpool id: 16760479674052375628 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: rpool ONLINE c8d1s0 ONLINE # zpool import -R /a -t altrpool 16760479674052375628 # zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT altrpool 97G 22.4G 74G 23% 1.00x ONLINE /a rpool 465G 75.1G 390G 16% 1.00x ONLINE -
A pool can also be created with a temporary name by using the zpool create –t option.