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 - -