P
프로덕션 서버 와 대기 서버 가 있습니다 S
. 둘 다 데비안 버스터를 실행하고오픈ZFS/ZoL2.1.0. P
운영 체제, 가상 머신 및 기타 모든 데이터에 ZFS 스토리지를 제공하는 내부 디스크만 있습니다. S
내부 디스크는 동일하지만 핫스왑(하드웨어 측면)이 가능하고 정기적으로 교체되는 백업 디스크로 사용할 수 있는 별도의 ZPOOL이 포함된 추가 백업 디스크가 있습니다.
에는 P
라는 풀이 하나만 있습니다 rpool
. 에는 ( P와 동일) 풀과 (백업 디스크에) S
두 개의 풀이 있습니다 .rpool
extpool
에서는 P
ZFS 데이터 세트의 스냅샷을 찍어 / S
에 복사하는 스크립트가 주기적으로 실행됩니다 . 에서는 스크립트가 주기적으로 실행되어 에서 로(또한 / 를 통해) 스냅샷 을 복사 합니다 . 의 스크립트는 아직 동기화되지 않았습니다. 즉 , 의 스크립트가 에서 로 스냅샷을 전송하는 동안 의 스크립트가 에 스냅샷을 복사하려고 시도할 수 있음 을 의미합니다.zfs send
zfs receive
S
rpool
extpool
zfs send
zfs receive
P
S
P
S
S
rpool
extpool
P
스냅샷을 보내려고 할 때 스크립트가 실패하는 경우가 있습니다. 위의 시나리오에서 이런 일이 발생한다고 생각하므로 데이터세트의 스냅샷을 보내고 동시에 동일한 데이터세트의 최신 스냅샷을 받는 것은 불가능할 것 같습니다. 반면에 제가 다른 방법으로 잘못하고 있는 경우도 있을 수 있으니 이 부분은 꼭 확인하고 싶습니다. 즉, 다음을 수행할 수 있는지 알고 싶습니다.
존재하다 P
:
zfs snapshot rpool/dataset1@snapshot1
zfs send -R rpool/dataset1@snapshot1 | ssh S 'zfs receive -F rpool/dataset1'
# Wait some time
zfs snapshot rpool/dataset1@snapshot2
그런 다음동시에
존재하다 S
:
zfs send -R rpool/dataset1@snapshot1 | zfs receive -F extpool/dataset1
게다가 P
:
zfs send -R -I rpool/dataset1@snapshot1 rpool/dataset1@snapshot2 | ssh S 'zfs receive -F rpool/dataset1'
마지막 참고 사항: 에서는 S
복제와 관련된 모든 데이터 세트가 로드되지 않습니다. S
이러한 데이터 세트의 유일한 목적은 새 스냅샷을 수신하여 P
내부 디스크에 저장한 다음 내부 디스크의 모든 스냅샷을 외부 백업 디스크로 복사하는 것입니다.
물론, 유일한 예외는 긴급 상황입니다. P
오류가 발생하면 복제된 데이터 세트가 수동으로 마운트 S
되고 프로덕션 작업으로 전환됩니다. 그러나 제가 명시적으로 질문한 것은 이 상황과 전혀 관련이 없습니다.