プールは、本質的にホストシステムに結び付けられています。ホストシステムでは、プールに関する情報を管理しているので、プールが使用できなくなったときにそのことを自動的に検出することができます。この情報は、通常の操作では有効な情報ですが、代替メディアからブートするときまたはリムーバブルメディアにプールを作成するときには障害になることがあります。この問題を解決するために、ZFS には「代替ルート場所」プール機能が用意されています。代替ルートプール場所はシステムのリブート後は維持されません。すべてのマウントポイントはプールのルートに相対的であるように変更されます。
代替場所でプールを作成する理由としてもっとも一般的なのは、リムーバブルメディアでの使用です。このような場合には、必要なファイルシステムは通常 1 つだけなので、ターゲットシステムでユーザーが選択した場所にマウントする必要があります。zpool create –R オプションを使用してプールが作成されると、ルートファイルシステムのマウントポイントは、代替ルートの値に相当する / に自動的に設定されます。
次の例では、morpheus という名前のプールが代替ルート場所としての /mnt に作成されます。
$ zpool create -R /mnt morpheus c0t0d0 $ zfs list morpheus NAME USED AVAIL REFER MOUNTPOINT morpheus 32.5K 33.5G 8K /mnt
ファイルシステムが 1 つだけで (morpheus)、そのマウントポイントがプールの代替ルート場所 /mnt であることに注意してください。ディスクに格納されているマウントポイントは、実際に / になっています。/mnt のフルパスは、プール作成のこの初期コンテキストでのみ解釈されます。そのあと、このファイルシステムをエクスポートし、–R alternate-root-value 構文を使用して別のシステム上の任意の代替ルート場所の下にインポートできます。
$ 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
代替ルート場所を使って、プールをインポートすることもできます。この機能は、回復を行う状況で利用できます。つまり、マウントポイントを現在のルートマウントポイントのコンテキストではなく、修復を実行できるように一時的なディレクトリとして解釈するような状況で利用できます。前のセクションで説明したとおり、この機能はリムーバブルメディアをマウントするときにも使用できます。
次の例では、morpheus という名前のプールが代替ルートマウントポイントとしての /mnt にインポートされます。この例では、morpheus がすでにエクスポート済みであることを前提としています。
$ 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
代替ルート場所でのプールのインポートに加えて、一時的な名前でプールをインポートできます。特定の共有ストレージまたは回復状況では、この機能により、同じ永続的な名前を持つ 2 つのプールを同時にインポートできます。これらのプールのいずれかを一時的な名前でインポートする必要があります。
次の例で、rpool プールは、代替ルート場所で一時的な名前を使用してインポートされます。永続的なプール名がすでにインポートされているプールと競合するため、プール ID によって、またはデバイスを指定してインポートする必要があります。
$ 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 -
zpool create –t オプションを使用して一時的な名前を持つプールを作成することもできます。