プールが作成されると、そのプールはデフォルトでホストシステムに関連付けられます。ホストシステムでは、プールに関する情報を管理しているので、プールが使用できなくなったときにそのことを自動的に検出することができます。この情報は、通常の操作では有効な情報ですが、代替メディアから起動するときまたはリムーバブルメディアにプールを作成するときには障害になることがあります。この問題を解決するために、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 |