btrfs 증분 스냅샷 동기화: rsync로 부팅

btrfs 증분 스냅샷 동기화: rsync로 부팅

가지다일부기사와도구네트워크를 통한 스냅샷의 차등 동기화BTFS.

내 질문에는 다음이 포함됩니다.가이드증분 과정.

비슷한 방법을 사용하여 백업 디렉터리를 설정할 때 스냅샷의 증분 백업을 시작할 수 있습니다.

(src)$ sudo btrfs send initial_snapshot -f somedir/initial_snapshot.data"
(dst)$ sudo btrfs receive initial_snapshot -f somedir/initial_snapshot.data"

src( 및 dst가 다른 블록 장치 또는 다른 시스템에 있다고 가정 ).

동기화된 하위 볼륨으로 시작할 수 있는 방법이 있습니까 rsync? 즉, 이 방법으로 부트스트랩 차등 동기화를 할 수 있나요?

순진한 방식으로 이 작업을 수행하면(모든 스냅샷을 동기화 src하고 읽기 전용 스냅샷 생성) 다음 오류가 발생합니다.dstrsync

btrfs error: can not find parent snapshot

예, 이해할 수 있습니다.

그러나 btrfs에 동일한 데이터가 src포함되어 있고 증분 스냅샷의 상위 항목으로 사용될 수 있다는 것을 "확신"할 수 있는 방법이 있습니까 ?dstinitial_snapshot

답변1

불행하게도 보내기/받기 작업 이외의 다른 방법으로는 지시할 수 없습니다. 보내기/받기를 위한 증분 전송은 다음 두 가지 사항에 따라 달라집니다.

  1. 대상 볼륨에 있는 관련 하위 볼륨의 "Received UUID" 특성은 소스에 있는 해당 하위 볼륨의 "UUID" 특성과 정확하게 일치해야 합니다. 이는 명령어를 이용하면 쉽게 확인할 수 있지만 btrfs subvolume show, 이러한 값을 직접 수정하는 것 외에는 설정할 수 있는 방법이 없습니다.
  2. 증분 전송에 사용되는 상위-하위 볼륨의 블록은 소스와 대상 간에 일치해야 합니다. 즉, 파일 X를 변경하는 증분 업데이트를 보내는 경우 대상 볼륨에 있는 파일 X의 이전 버전 복사본은 소스 볼륨에 있는 파일 X의 원본 복사본과 동일해야 합니다. 엄밀히 말하면, rsync스냅샷 이외의 관련 참조 링크가 없는 경우(즉, 소스 스냅샷의 상위 및 하위 볼륨 내의 항목에 CLONE_RANGE 또는 EXTENT_SAME ioctl이 사용되지 않은 경우) 이 요구 사항이 충족되어야 합니다.

이론적으로는 두 가지 제약 조건을 모두 해결하는 것이 실제로 가능하지만 그렇게 하려면 상당한 노력이 필요하고 BTRFS에 대한 매우 낮은 수준의 지식이 필요합니다.극도로위험한).

관련 정보