次の例は、ブート環境のクローニング方法を示し、ゾーンとデータセットの構造によってクローニング処理がどのように異なるかを示しています。最初の例では、大域ゾーンと非大域ゾーンを含むシステムでクローニングが動作する方法について説明します。2 つ目の例では、クローニングに関連するデータセットの詳細を示します。3 つ目の例では、システムをクローニングした場合に共有データセットに起こる問題を示します。
使用例 3-1 非大域ゾーンを含んでいる大域ゾーンのブート環境を複製するこの例では、非大域ゾーンを含む大域ゾーン内でブート環境をクローニングするときの beadm create コマンドのゾーンへの影響を示します。
複製されるブート環境が、関連付けられたゾーンブート環境を非大域ゾーン内にもつ場合、関連付けられたブート環境も複製されます。たとえば、BE1 に関連付けられたゾーンブート環境 BE2 が非大域ゾーン内にあるとします。BE1 が複製されると、BE2 も複製されます。
この例で、大域ゾーン内の元のブート環境の名前は solaris で、ルートデータセットは rpool/ROOT/solaris にあります。
z1 という名前の非大域ゾーンが存在し、データセット rpool/zones/z1 をそのゾーンパスとして持ちます。大域ゾーン内の元の solaris ブート環境は、非大域ゾーン z1 内に関連付けられたブート環境をもちます。この関連付けられたゾーンブート環境の名前は solaris で、ルートデータセットは rpool/zones/z1/rpool/ROOT/solaris にあります。
# zfs list -r rpool NAME USED AVAIL REFER MOUNTPOINT rpool 11.5G 3.89G 4.46M /rpool rpool/ROOT 8.47G 3.89G 31K legacy rpool/ROOT/solaris 2.98M 3.89G 2.49G / rpool/ROOT/solaris/var 428K 3.89G 298M /var rpool/dump 1.03G 3.92G 1.00G - rpool/export 120K 3.89G 32K /export rpool/export/home 88.5K 3.89G 32K /export/home rpool/export/home/user1 56.5K 3.89G 56.5K /export/home/user1 rpool/swap 1.03G 3.92G 1.00G - rpool/zones 672M 3.89G 32K /zones rpool/zones/z1 672M 3.89G 32K /zones/z1 rpool/zones/z1/rpool 671M 3.89G 31K /rpool rpool/zones/z1/rpool/ROOT 671M 3.89G 31K legacy rpool/zones/z1/rpool/ROOT/solaris 671M 3.89G 591M /zones/z1/root rpool/zones/z1/rpool/ROOT/solaris/var 79.3M 3.89G 78.4M /zones/z1/root/var rpool/zones/z1/rpool/export 62K 3.89G 31K /export rpool/zones/z1/rpool/export/home 31K 3.89G 31K /export/home
この例では、root として次のコマンドを発行して大域ゾーン内でブート環境をクローニングし、新しいブート環境に solaris-1 という名前を付けます。
# beadm create test # zfs list -r rpool NAME USED AVAIL REFER MOUNTPOINT rpool 11.5G 3.89G 4.46M /rpool rpool/ROOT 8.47G 3.89G 31K legacy rpool/ROOT/solaris 2.98M 3.89G 2.49G / rpool/ROOT/solaris/var 428K 3.89G 298M /var rpool/ROOT/test 71K 3.89G 2.50G / rpool/ROOT/test/var 1K 3.89G 2.88G /var rpool/dump 1.03G 3.92G 1.00G - rpool/export 120K 3.89G 32K /export rpool/export/home 88.5K 3.89G 32K /export/home rpool/export/home/user1 56.5K 3.89G 56.5K /export/home/user1 rpool/swap 1.03G 3.92G 1.00G - rpool/zones 672M 3.89G 32K /zones rpool/zones/z1 672M 3.89G 32K /zones/z1 rpool/zones/z1/rpool 671M 3.89G 31K /rpool rpool/zones/z1/rpool/ROOT 671M 3.89G 31K legacy rpool/zones/z1/rpool/ROOT/solaris 671M 3.89G 591M /zones/z1/root rpool/zones/z1/rpool/ROOT/solaris/var 79.3M 3.89G 78.4M /zones/z1/root/var rpool/zones/z1/rpool/ROOT/solaris-1 2K 3.89G 591M / rpool/zones/z1/rpool/ROOT/solaris-1/var 1K 3.89G 78.4M /var rpool/zones/z1/rpool/export 62K 3.89G 31K /export rpool/zones/z1/rpool/export/home 31K 3.89G 31K /export/home
クローンの名前は test で、ルートデータセットは rpool/ROOT/test にあります。
ここで、大域ゾーン内の solaris ブート環境は、z1 非大域ゾーン内に関連付けられたゾーンブート環境をもつため、クローニング処理では z1 内の関連付けられたゾーンブート環境もクローニングされます。ゾーン z1 の新しい solaris-1 クローンは、ルートデータセットが rpool/zones/z1/rpool/ROOT/solaris-1 にあります。
使用例 3-2 データセットを持つ新しいブート環境をクローニングするこの例では、新しく作成されたブート環境内でデータセットを設定する方法について説明します。この例は複数のゾーンを含みません。
root として、次のコマンドを入力します。
# beadm create BE2
この例の元のブート環境は BE1 で、ルートデータセットは rpool/ROOT/BE1 にあり、これは別のデータセット var を含んでいます。
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 42.5G 24.4G 4.65M /rpool rpool/ROOT 25.6G 24.4G 31K legacy rpool/ROOT/BE1 8.91M 24.4G 4.17G / rpool/ROOT/BE1/var 3.96M 24.4G 276M /var
BE1 が複製された後、新しいクローン BE2 には、すべて BE1 から複製されたルートデータセットおよび他のネストされたデータセットが含まれます。BE1 はルートデータセットの下に /var ファイルシステムを含んでいるため、/var も複製されます。
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 42.5G 24.4G 4.65M /rpool rpool/ROOT 25.6G 24.4G 31K legacy rpool/ROOT/BE1 8.91M 24.4G 4.17G / rpool/ROOT/BE1/var 3.96M 24.4G 276M /var rpool/ROOT/BE2 8.91M 24.4G 4.17G / rpool/ROOT/BE2/var 3.96M 24.4G 276M /var
対照的に、ルートデータセットの外側に共有ファイルシステムがあった場合、共有ファイルシステムは複製されません。次の例で示すように、元のブート環境とクローンは、元の共有ファイルシステムを「共有」します。
使用例 3-3 共有データセットを持つ新しいブート環境を作成するこの例では、既存の共有データセットがある場合に新しいブート環境を作成する方法について説明します。この例では、元のブート環境は BE1 で、共有データセットは rpool/export および rpool/export/home です。この例は複数のゾーンを含みません。
BE1 を複製し、クローンに BE2 という名前を付けるために、root として次のコマンドを入力します。
# beadm create BE2
ブート環境がクローニングされるときに、共有データセット tank および tank/export はクローニングされません。共有データセットは rpool/ROOT/BeName データセットの外側にあり、複製されたブート環境 BE2 によって元の場所で参照されます。
元のブート環境 BE1 とデータセットは次のとおりです。
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 42.5G 24.4G 4.65M /rpool rpool/ROOT 25.6G 24.4G 31K legacy rpool/ROOT/BE1 8.91M 24.4G 4.17G / rpool/ROOT/BE1/var 3.96M 24.4G 276M /var tank 450K 457G 18K /tank tank/home 315K 457G 21K /tank/home
ルートデータセットは rpool/ROOT/BE1 にあり、/var データセットはルートデータセットの下にあります。ルートデータセットと /var の両方が複製されます。
クローニングされたブート環境 BE2 には新しいルートデータセットおよび新しい /var データセットが作成されていますが、元の共有データセット tank および tank/home は変更されません。
# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 42.5G 24.4G 4.65M /rpool rpool/ROOT 25.6G 24.4G 31K legacy rpool/ROOT/BE1 8.91M 24.4G 4.17G / rpool/ROOT/BE1/var 3.96M 24.4G 276M /var rpool/ROOT/BE2 8.91M 24.4G 4.17G / rpool/ROOT/BE2/var 3.96M 24.4G 276M /var tank 450K 457G 18K /tank tank/home 315K 457G 21K /tank/home