일부 배경.

일부 배경.

일부 배경.

나는 사용하고있다지렙두 서버를 서로 복제하기 위해 각 서버에는 복제 마스터로 두 개의 데이터 세트와 복제 대상으로 두 세트가 포함된 하나의 ZFS 풀이 포함됩니다. 마스터 세트에는 로컬 서버의 시스템 및 VirtualBox-VM이 포함되어 있으며 복제 대상은 다른 것과 동일합니다.

또한 .NET을 사용하여 서버당 모든 마스터 세트를 일부 NAS에 백업하고 있습니다 rsync. NAS는 매우 느리고 백업이 성공하는 데 몇 시간이 걸리므로 구현된 접근 방식은 VM을 일시 중지하고 하나의 스냅샷을 생성한 다음 VM을 복원하고 rsync생성된 스냅샷에서 실행하는 것입니다. 중요한 것은 수동으로 생성된 스냅샷은 ZREP 명명 규칙을 따르지 않았으며 rsync다시 완료한 후 바로 폐기되었다는 것입니다. 처음에는 ZREP이 cron.

문제.

그러나 때때로 ZREP가 어떤 상태에 빠지는 일이 일어났습니다.더 이상 동기화할 수 없습니다. 이 문제를 해결하려면 동료가 스냅샷을 삭제하고 ZREP을 다시 초기화하는 과정을 거쳐야 한다고 말했습니다. rsync결국 이 문제는 ZREP이 더 이상 우리의 스냅샷과 병렬로 실행되지 않도록 함으로써 해결되었습니다 .

안타깝게도 해당 오류에 대한 구체적인 세부 정보가 부족하고 동료를 더 이상 사용할 수 없지만 그의 설명에 따르면 증분적으로 동기화할 복제 마스터와 대상 간의 스냅샷의 공통 조상을 찾는 데 문제가 있는 것처럼 들렸습니다. 오류 메시지는 다음과 같았다고 생각합니다.

cannot receive incremental stream: most recent snapshot of zfs-pool/vbox/tori does not match incremental source
cannot open 'zfs-pool/vbox/tori@zrep_0001b7': dataset does not exist

증분 보내기/받기 작동 방식에 대해 이해하고 있습니다.

나의 이해에 따르면문서그리고다른 질문, 스냅샷을 점진적으로 성공적으로 보내려면 송신 마스터와 수신 대상이 인수 1로 사용되는 하나의 스냅샷을 공유해야 하며 zfs send해당 스냅샷은 추가로 수신 대상의 현재 스냅샷이어야 합니다.

두 번째 인수는 임의의 최신 스냅샷으로, ZFS에서 하나의 스냅샷 마스터와 대상이 공통으로 가지고 있는 차이점을 계산하고 해당 차이점을 복제 대상으로 보내는 데 사용됩니다. 둘 다 인수 1로 지정된 동일한 스냅샷을 공유하기 때문에 차이점이 대상에 적합하며 그대로 적용할 수 있습니다.

내가 이해한 주장 -i과 비교 -I하면 하나의 논리적 스냅샷이 마스터 측의 계산된 모든 증분 데이터를 포함하는 전송을 받거나 증분 변경 사항이 포함된 모든 중간 스냅샷을 전송하게 됩니다. 예를 들어 -i대상에서 항상 하나의 새로운 스냅샷이 생성되고 -IN개의 추가 스냅샷이 생성될 수 있습니다.

인수 1과 2로 제공된 것 사이의 중간 스냅샷을 만들고 삭제하는 것은 zfs send -i문제가 되지 않습니다. 왜냐하면 ZFS는 항상 제공된 두 인수 간의 차이점만 계산하고 다른 중간 스냅샷에는 신경 쓰지 않기 때문입니다. ZREP의 경우 이론적으로 ZREP 관리 스냅샷을 방해하지 않는 한 작업 중에 추가 스냅샷이 생성되는지 여부에 따라 아무런 차이가 없어야 함을 의미합니다. 특별한 ZREP 스냅샷은 항상 사용할 수 있고 ZREP에 의해 관리되며 복제 차이를 계산하는 데 사용되기 때문입니다. 따라서 이론적으로는 추가로 스냅샷을 생성 rsync하고 백업하는 것은 전혀 문제가 되지 않습니다.

그 가정이 맞나요?

ZREP와 관련된 질문이 아닙니다.

일반적으로 일부 중간 스냅샷을 무시하고 점진적으로 ZFS 스냅샷을 보내는 것이 안전합니까? 아니면 생성된 모든 중간 스냅샷을 복제 대상으로 보내서 동기화 등을 중단해야 합니까? 상황은 -ivs. 에 어떻게 의존합니까 -I?

답변1

예, 여전히 중간에 있는 모든 데이터를 얻을 수 있지만 그 사이로 되돌릴 수는 없습니다.

스냅샷 1, 2, 3이 있고 원격 풀에 스냅샷 1만 있는 경우 스냅샷 3을 제공하고 2를 건너뛸 수 있습니다. 단, '2' 상태로 롤백할 수는 없습니다. 하지만 데이터는 여전히 남아 있을 것입니다.

스냅샷은 당시 그곳에 무엇이 있었는지 설명합니다. 따라서 원격 풀에서 스냅샷 '2'가 누락되었습니다. 이는 해당 시점에 스냅샷을 만든 적이 없는 것과 같습니다. 문자 그대로 '2' 스냅샷과 그 당시의 모습이 무엇인지 알지 못합니다.

마음이 바뀌면 원격 풀에서 스냅샷 '3'을 삭제해야 하며, 그런 다음 '2'를 보낸 다음 '3'을 다시 보낼 수 있습니다.

https://www.reddit.com/r/zfs/comments/cfzdb3/is_it_safe_to_send_zfssnapshots_incrementally/euensuy/

관련 정보