Oracle® Solaris 11.2 での ZFS ファイルシステムの管理

印刷ビューの終了

更新: 2014 年 12 月
 
 

ZFS スナップショットストリームに異なるプロパティー値を適用する

ZFS スナップショットストリームを特定のファイルシステムプロパティー値で送信することができますが、スナップショットストリームを受信したときに異なるローカルプロパティー値を指定することができます。または、元のファイルシステムを再作成するために、スナップショットストリームを受信したときに元のプロパティー値を使用するように指定することもできます。さらに、スナップショットストリームを受信したときにファイルシステムプロパティーを無効にすることもできます。

  • ローカルのプロパティー値を受信値 (存在する場合) に戻すには、zfs inherit –S を使用します。プロパティーに受信値が存在しない場合、zfs inherit – S コマンドの動作は、–S オプションを指定しない zfs inherit コマンドと同じです。プロパティーに受信値が存在する場合、zfs inherit コマンドは、zfs inherit –S コマンドの発行によって継承値が受信値に戻されるまでの間、受信値を継承値でマスクします。

  • zfs get –o を使用すると、新しい非デフォルトの RECEIVED 列を含めることができます。または、zfs get –o all コマンドを使用すると、RECEIVED を含むすべての列を含めることができます。

  • zfs send –p オプションを使用すると、–R オプションを使用せずにプロパティーを送信ストリームに含めることができます。

  • zfs receive –e オプションを使用すると、送信スナップショット名の最後の要素を使用して新しいスナップショット名を決定できます。次の例では、poola/bee/cee@1 スナップショットを poold/eee ファイルシステムに送信し、スナップショット名の最後の要素 (cee@1) のみを使用して、受信側のファイルシステムおよびスナップショットを作成します。

    # zfs list -rt all poola
    NAME              USED  AVAIL  REFER  MOUNTPOINT
    poola             134K   134G    23K  /poola
    poola/bee          44K   134G    23K  /poola/bee
    poola/bee/cee      21K   134G    21K  /poola/bee/cee
    poola/bee/cee@1      0      -    21K  -
    # zfs send -R poola/bee/cee@1 | zfs receive -e poold/eee
    # zfs list -rt all poold
    NAME              USED  AVAIL  REFER  MOUNTPOINT
    poold             134K   134G    23K  /poold
    poold/eee          44K   134G    23K  /poold/eee
    poold/eee/cee      21K   134G    21K  /poold/eee/cee
    poold/eee/cee@1      0      -    21K  -

場合によっては、送信ストリーム内のファイルシステムプロパティーが受信側のファイルシステムに該当しなかったり、mountpoint プロパティー値などのローカルファイルシステムプロパティーが復元を妨害したりすることがあります。

たとえば、tank/data というファイルシステムの compression プロパティーが無効になっているとします。tank/data ファイルシステムのスナップショットが、プロパティー (–p オプション) を指定してバックアッププールに送信され、compression プロパティーが有効な状態で受信されます。

# zfs get compression tank/data
NAME       PROPERTY     VALUE     SOURCE
tank/data  compression  off       default
# zfs snapshot tank/data@snap1
# zfs send -p tank/data@snap1 | zfs recv -o compression=on -d bpool
# zfs get -o all compression bpool/data
NAME        PROPERTY     VALUE     RECEIVED  SOURCE
bpool/data  compression  on        off       local

この例では、スナップショットが bpool に受信されたとき、compression プロパティーは有効になります。したがって、bpool/data では、compression 値は on です。

このスナップショットストリームが復元目的で restorepool という新規プールに送信される場合、元のスナップショットプロパティーをすべて保持することが必要なことがあります。この場合、元のスナップショットプロパティーを復元するために zfs send –b コマンドを使用します。例:

# zfs send -b bpool/data@snap1 | zfs recv -d restorepool
# zfs get -o all compression restorepool/data
NAME              PROPERTY     VALUE     RECEIVED  SOURCE
restorepool/data  compression  off       off       received 

この例では、compression 値は off で、これは元の tank/data ファイルシステムからのスナップショット圧縮値を表します。

スナップショットストリーム内にローカルファイルシステムのプロパティー値があって、スナップショットストリームを受信したときにこのプロパティーを無効にする場合、zfs receive –x コマンドを使用します。たとえば次のコマンドでは、すべてのファイルシステムプロパティーを予約した状態で home ディレクトリファイルシステムの再帰的なスナップショットストリームをバックアッププールに送信しますが、割り当て制限プロパティー値は設定されません。

# zfs send -R tank/home@snap1 | zfs recv -x quota bpool/home
# zfs get -r quota bpool/home
NAME                   PROPERTY  VALUE  SOURCE
bpool/home             quota     none   local
bpool/home@snap1       quota     -      -
bpool/home/lori        quota     none   default
bpool/home/lori@snap1  quota     -      -
bpool/home/mark        quota     none   default
bpool/home/mark@snap1  quota     -      -

再帰的なスナップショットが –x オプションで受信されなかった場合、割り当て制限プロパティーは受信側ファイルシステム内で設定されます。

# zfs send -R tank/home@snap1 | zfs recv bpool/home
# zfs get -r quota bpool/home
NAME                   PROPERTY  VALUE  SOURCE
bpool/home             quota     none   received
bpool/home@snap1       quota     -      -
bpool/home/lori        quota     10G    received
bpool/home/lori@snap1  quota     -      -
bpool/home/mark        quota     10G    received
bpool/home/mark@snap1  quota     -      -