첫 번째 스냅샷 없이 ZFS 증분 스냅샷 보내기/받기

첫 번째 스냅샷 없이 ZFS 증분 스냅샷 보내기/받기

다음 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되었습니다 .pooldataset@snap3backupPool

이 상황을 해결할 방법이 있나요? 예를 들어 와 pool/dataset@snap3사이에 ZFS 증분 스냅샷을 찍어서 ?backupPool/dataset@snap2backupPoolbackupPool/dataset@snap2pool

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.

답변2

모든 제안에 감사드립니다!

결국 pool/dataset@snap3와 동기화 backupPool/dataset@snap2하고 데이터 세트를 삭제 backupPool/dataset하고 처음부터 다시 만들었습니다 backupPool/dataset. 이 문제에 대한 더 나은 해결책을 찾을 수 없습니다.

Dan의 조언은 매우 도움이 되었습니다. 또한 향후 스냅샷 삭제를 방지하려면 다음을 수행하는 것이 가장 좋습니다.그것을 잡아.

관련 정보