Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

BSR의 기본 전송 프로토콜이며 IPv4/v6를 지원하는 모든 시스템에서 사용할 수 있는 표준 프로토콜 입니다.

효율적인 동기화

BSR에서 복제(replication)와 (재)동기화(resynchronization)는 다르며 구분하는 개념입니다. 복제는 Primary 역할의 리소스의 모든 디스크 쓰기 동작을 Secondary 노드로 실시간 반영하는 동작이고, 동기화는 실기간 쓰기 I/O를 배제한 전체 블록 디바이스 관점에서 데이터를 일치시키는 처리과정 입니다. 이처럼 복제와 동기화는 개별적인 동작이지만 동시에 처리될 수도 있습니다.

Primary와 Secondary간의 복제 연결이 유지된다면 복제가 지속적으로 수행됩니다. 그러나 Primary 또는 Secondary 노드에서 장애가 나거나, 복제 네트워크가 단절되는 등의 이유로 복제 연결이 중단되었다면 Primary와 Secondary 간의 동기화가 필요한 상황에 놓입니다.

BSR은 동기화 할 때 원본 I/O가 디스크에 쓰여진 순서대로 블럭을 동기화하지 않습니다. 동기화는 메타데이터의 정보를 기반으로 0번 섹터 부터 마지막 섹터까지 동기화 되지 않은 영역에 대해서만 순차적 동기화하여 다음과 같이 효율적입니다.

  • 동기화는 디스크의 블럭 레이아웃에 따라 블럭 단위로 동기화하므로 디스크 탐색을 거의 수행하지 않습니다.

  • 여러 번 연속적으로 쓰기 작업이 발생한 블럭은 한 번만 동기화하므로 보다 빠르게 동기화 합니다.

동기화하는 동안 대기(Standby)노드의 데이터 일부는 과거의 변경 전 내용이 되고 일부는 최신으로 업데이트됩니다. 이러한 데이터의 상태를 Inconsistent 상태라고 하고 모든 블럭이 최신 데이터로 동기화 완료된 상태를 UpToDate 상태라고 합니다. Inconsistent 상태의 노드는 일반적으로 볼륨이 사용가능하지 않은 상태이므로 이 상태는 가능한 짧게 유지하는 것이 바람직합니다.

물론 백그라운드에서 동기화가 진행되는 동안 Active 노드의 응용 서비스는 중단되지 않고 계속해서 수행할 수 있습니다.

가변 대역 동기화(Variable-rate synchronization)

가변 대역 동기화는 가용한 네트워크의 대역폭을 감지한 후 애플리케이션으로부터 수신된 I/O와  비교하여, 적절한 동기화 속도를 자동적으로 계산합니다. BSR은 가변대역 동기화를 기본 설정으로 합니다.

가변 대역 동기화에 관한 구성은 가변적인 동기화 속도의 설정(Variable sync rate configuration)을 참고하세요.

고정 대역 동기화(Fixed-rate synchronization)

고정 대역 동기화에서는 초당 상대 노드로 동기화하는 데이터 속도를 상한선 내에서 조정할 수 있으며(이를 synchronization rate라고 합니다) 최소값과 최대값을 지정할 수 있습니다.

이 상한선에 의거하여 , 아래와 같은 간단한 수식으로 동기화 시간을 추정할 수 있습니다.

...

  • tresync 는 동기화 예상 시간입니다.

  • D는 별다른 영향(복제 링크가 끊어진 상황에서 데이터가 수정되는 등)을 거의 받지 않는다는 가정하에서 동기화될 데이터의 크기를 말합니다.

  • R은 조정 가능한 동기화율이며 이는 복제 네트워크 환경 및 I/O 서브시스템의 처리능력에 따라 한계 값이 달라집니다.

고정 대역 동기화에 관한 구성은 고정적으로 동기화 속도를 설정하는 방법(Configuring the rate of synchronization)을 참고하세요.

체크섬 기반 동기화(Checksum-based synchronization)

체크섬 데이터 요약을 사용하면 동기화 알고리즘의 효율성을 더욱 개선할 수 있습니다. 체크섬 기반 동기화는 동기화하기 전에 블록을 읽고 현재 디스크에 있는 내용의 해시(hash) 요약을 구한 다음, 상대 노드로부터 같은 섹터를 읽어 구한 해쉬 요약 내용과 비교합니다. 해시 내용이 일치하면 해당 블럭에 대한 동기화 쓰기(re-write)를 생략합니다. 이 방식은 동기화 해야 될 블럭을 단순히 덮어쓰는 방식에 비해 성능에서 유리할 수 있으며 연결이 끊어진(disconnect 상태) 동안 파일 시스템이 섹터에 같은 내용을 다시 썼다면 해당 섹터에 대해선 재동기화를 생략하게 되므로 전체적으로 동기화 시간을 단축시킬 수 있습니다.

체크섬 동기화에 관한 구성은 체크섬 기반 동기화 구성(Configuring checksum-based synchronization)을 참고하세요.

혼잡 모드

온라인 데이타 무결성 검사

복제 트래픽 무결성 검사

...