次のZFSデータセットがあります。
pool/dataset
pool/dataset@snap1
pool/dataset@snap2
pool/dataset@snap3
すでにZFS send / recvを使用してバックアッププールにコピーしました。
backupPool/dataset
backupPool/dataset@snap1
backupPool/dataset@snap2
dataset@snap1
それ以降は科を取り除いて増分を送ることができない状況dataset@snap2
となりました。pool
dataset@snap3
backupPool
この状況を解決する方法はありますか?たとえば、とpool/dataset@snap3
の間にZFSインクリメンタルスナップショットを撮って?backupPool/dataset@snap2
backupPool
backupPool/dataset@snap2
pool
pool/dataset@snap3
の新しいデータセットに移動できますが、スナップショットのbackupPool
「記録」を維持する必要があります。
ベストアンサー1
OpenZFS管理者Matthew Ahrensによると、受信ホストの以前のスナップショットをソースとして指定することでこれを行うことができます。[1]。
今日はこれが可能でなければなりません:
man zfs-receive ... zfs receive [-FhMnsuv] [-o origin=snapshot] [-o property=value] [-x property] filesystem|volume|snapshot -o origin=snapshot Forces the stream to be received as a clone of the given snapshot. If the stream is a full send stream, this will create the filesys‐ tem described by the stream as a clone of the specified snapshot.
したがって、あなたの例ではこれを行うことができます
zfs send apool@snapshot3 | zfs receive -o origin=bpol@snapshot0 bpool/recvd
。理想的には、zfs promote bool/recvd
名前を変更して元のファイルシステムを置き換えてから古いファイルシステムを削除することをお勧めします。あなたの例では、トップレベルのファイルシステムについて話しているので、少し混乱する可能性があります。実際にできることを願っていますbpool/fs@snapshot0
。