...
복제는 Primary 역할의 리소스의 모든 디스크 쓰기 동작을 Secondary 노드로 실시간 반영하는 동작이고, 동기화는 실기간 쓰기 I/O를 배제한 전체 블록 디바이스 관점에서 데이터를 일치시키는 처리과정 입니다. 복제와 동기화는 개별적으로 동작하지만 동시에 처리될 수도 있습니다.
Primary와 Secondary간의 복제 연결이 유지된다면 복제가 지속적으로 수행됩니다. 그러나 Primary 또는 Secondary 노드에서 장애가 나거나, 복제 네트워크가 단절되는 등의 이유로 복제 연결이 중단되었다면 Primary와 Secondary 간의 동기화가 필요한 상황에 놓입니다유지되면 복제가 지속되지만 노드에서 장애가 발생하거나 네트워크가 단절되는 등 복제 연결이 중단되면 동기화가 필요한 상황이 됩니다.
bsr은 동기화 할 때 원본 I/O가 디스크에 쓰여진 순서대로 블럭을 동기화하지 않습니다. 동기화는 대신 메타데이터의 정보를 기반으로 토대로 0번 섹터 부터 마지막 섹터까지 동기화 되지 않은 영역에 대해서만 순차적으로 동기화하고 다음과 같이 효율적으로 처리합니다.
...
대해서 순차적 동기화합니다. 이러한 방식은 다음과 같은 효율성을 갖습니다.
디스크의 블럭 레이아웃을 따라가면서 블럭 단위로 동기화하므로 디스크 탐색을 거의 수행하지 않습니다.
여러 번 연속적으로 쓰기 작업이 발생한 블럭은 한 번만 동기화하여 동기화하므로 효율적입니다.
동기화하는 동안 중에는 대기(Standby)노드의 전체 데이터 셋 중 일부는 과거의 변경 전 내용이고 일부는 최신으로 업데이트됩니다. 이러한 데이터의 상태를 Inconsistent 상태라고 하고 모든 블럭이 최신 데이터로 동기화 완료된 상태를 UpToDate 상태라고 합니다. Inconsistent 상태의 노드는 일반적으로 볼륨이 사용가능하지 않은 상태이므로 이 상태는 가능한 짧게 유지하는 것이 바람직합니다.
...
전체 동기화를 한 번 수행하고 난 후에는 항상 부분동기화로 동작합니다. 동기화 되지 않은 영역(oos)에 대해서만 동기화하여 효율적 입니다동기화합니다.
사용구간 사용 구간 동기화(FastSync)
bsr 은 볼륨에서 사용하고 있는 부분에 대해서만 동기화 하는 사용구간 사용 구간 동기화(FastSync)를 구현합니다. FastSync 로 동작하지 않는다면 전체 볼륨의 영역에 대해서 동기화 해야 하므로 볼륨의 크기가 클 경우 많은 동기화 시간을 소요하게 됩니다. FastSync 는 동기화 시간을 크게 절약할 수 있는 bsr의 강력한 기능입니다.
고정 대역 동기화(Fixed-rate synchronization)
고정 대역 동기화에서는 초당 상대 노드로 동기화하는 데이터 속도를 상한선 내에서 조정할 수 있으며(이를 synchronization rate라고 합니다) 최소값(c-min-rate)과 최대값(c-max-rate)으로 지정할 수 있습니다.
가변 대역 동기화(Variable-rate synchronization)
가변 대역 동기화는 가용한 네트워크의 대역폭을 감지한 후 애플리케이션으로부터 수신된 I/O와 비교하여, 적절한 동기화 속도를 자동적으로 계산합니다. bsr은 가변대역 동기화를 기본 설정으로 합니다.
체크섬 기반 동기화(Checksum-based synchronization)
체크섬 데이터 요약을 사용하면 동기화 알고리즘의 효율성을 더욱 개선할 수 있습니다. 체크섬 기반 동기화는 동기화하기 전에 블록을 읽고 현재 디스크에 있는 내용의 해시(hash) 요약을 구한 다음, 상대 노드로부터 같은 섹터를 읽어 구한 해쉬 요약 내용과 비교합니다. 해시 내용이 일치하면 해당 블럭에 대한 동기화 쓰기(re-write)를 생략합니다. 이 방식은 동기화 해야 될 블럭을 단순히 덮어쓰는 방식에 비해 성능에서 유리할 수 있으며 연결이 끊어진(disconnect 상태) 동안 파일 시스템이 섹터에 같은 내용을 다시 썼다면 해당 섹터에 대해선 재동기화를 생략하게 되므로 전체적으로 동기화 시간을 단축시킬 수 있습니다.
동기화 대역 지정
고정 대역 동기화(Fixed-rate synchronization)
고정 대역 동기화에서는 상대 노드로 동기화하는 데이터 속도를 상한선 내에서 조정할 수 있으며(이를 synchronization rate라고 합니다) 최소값(c-min-rate)과 최대값(c-max-rate)으로 지정할 수 있습니다.
가변 대역 동기화(Variable-rate synchronization)
가변 대역 동기화는 가용한 네트워크의 대역폭을 감지한 후 애플리케이션으로부터 수신된 I/O와 비교하여 적절한 동기화 속도를 자동적으로 계산합니다. bsr은 가변대역 동기화를 기본 설정으로 합니다.
혼잡 모드
bsr은 비동기 복제 시 복제에서 복제 네트워크의 혼잡도를 감지하여 감지하고 능동적으로 대처할 수 있는 혼잡모드 기능을 제공합니다. 혼잡모드는 Blocking, Disconnect, Ahead 의 3 가지 동작모드를 제공합니다혼잡이 감지되면 설정된 모드에 따라 다음과 같이 동작합니다.
아무 설정도 하지 않을 경우 기본적으로 Blocking 모드입니다. Blocking 모드에서는 TX 송신버퍼에 복제 데이터를 전송할 여유 공간이 생길 때 까지 대기(Blocking)합니다.
복제 연결을 단절하여 로컬 I/O 부하를 일시적으로 해소하도록 disconnect 모드로 설정할 수 있습니다.
복제 연결은 유지한 채 primary 노드의 I/O를 로컬 디스크에 우선 기록하고 기록해 두었다가(해당 영역은 out-of-sync로 기록하여 혼잡이 해제될 경우 기록) 혼잡 해제 후 재동기화를 자동으로 수행하는 Ahead 모드로 설정할 수 있습니다. Ahead 상태가 된 Primary 노드는 Secondary 노드에 비해 앞서 있는(Ahead) 데이터 상태가 됩니다. 그리고 이 시점에 Secondary는 뒤 쳐진(Behind) 데이터 상태가 되지만 대기노드의 데이터는 일관성은 있는 예전 데이터 상태이지만 가용한 상태입니다. 혼잡 상태가 혼잡이 해제되면, 세컨더리로의 복제는 자동으로 재개되고 Ahead 상태에서 복제되지 못했던 out-of-sync 블럭에 대해 백그라운드 동기화를 자동으로 수행합니다. 혼잡모드는 일반적으로 데이터센터 또는 클라우드 인스턴스간의 공유연결을 통한 광역 복제 환경과 같은 가변 대역폭을 가진 네크워크 링크 환경에서 유용합니다.
...
온라인 무결성 검사는 장치 운영 중에 노드 간의 블록별 블록 별 데이터의 무결성을 확인하는 기능입니다. 무결성 검사는 네트워크 대역폭을 효율적으로 사용하고 중복된 검사를 하지 않습니다.
...