Table of Contents |
---|
기본
bsr 은 장애극복(fail-over) 클러스터 내의 호스트 클러스터 내 호스트의 볼륨들을 네트워크를 통해 실시간 복제하여 이중화합니다동기화하고 복제합니다.
동기화와 복제
복제를 하려면 먼저, 양측 호스트 상의 볼륨 데이터를 모두 일치 시켜야 합니다. 디스크 블럭 단위로 이를 위해 bsr은 디스크의 블럭을 단위로 하여 데이터를 소스에서 타깃 측으로 네트워크를 통해 복사하는데 이 과정을 복사하는 과정을 수행하는데 이것을 동기화(Synchronization)라고 합니다. 동기화가 완료되어야 복제 상태로 이행합니다.복제(Replication)는 소스 측의 데이터가 쓰기 I/O 에 의해
동기화가 완료되면 양 측 볼륨은 완전히 동일한 상태가 되고 이후 소스 측에서 데이터 변경이 발생할 경우 변경 분에 대하여 실시간 타깃 측으로 반영하여 양 볼륨의 정합성을 유지합니다.
여기서, 소스 측의 데이터가 변경될 때 해당 변경 분을 타깃 측으로 실시간 반영하는 동작입니다동작을 복제(Replication)라고 합니다. 동기화는 백그라운드에서 천천히 동작하지만 복제는 로컬 I/O 의 문맥에서 빠르게 처리됩니다.
...
Drawio | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
관리 도구
bsr은 리소스를 구성하고 관리하기 위한 위에서 설명한 커널드라이버를 제어하는 용도의 관리 도구를 제공합니다. 다음에 설명하는 제공하고 이를 통해 복제 리소스를 구성하고 관리합니다. 이 도구들은 bsradm, bsrsetup, bsrmeta, bsrcon 으로 구성됩니다.
관리 명령어를 사용하기 위해 관리자 수준의 권한이 요구됩니다.
...
bsr의 세부 기능들에 대해 추상화한 상위 수준 명령어를 제공하는 유틸리티입니다. bsradm 을 통해 bsr 대부분의 동작을 제어할 수 있습니다.
bsradm은 구성파일 etc\bsr.conf로부터 모든 구성 파라미터를 얻으며, bsrsetup 및 bsrmeta에 적절한 옵션을 주어 명령을 전달하는 역할을 합니다. 즉 실제 동작은 bsrsetup, bsrmeta 에서 수행됩니다.
bsradm은 –d 옵션을 통해 dry-run모드로 실행시킬 수 있습니다. 이는 bsradm이 bsrsetup 및 bsrmeta 명령을 실제 호출하지 않고, 어떤 옵션 조합으로 실행되는 지 미리 확인할 수 있는 방법을 제공합니다.
bsradm 명령 옵션에 대한 자세한 사항은 Appendix B. 시스템 매뉴얼의 bsradm을 사항은 부록, 명령어의 bsradm을 참고하십시요.
bsrsetup
bsr 커널엔진에 필요한 값들을 설정할 수 있습니다. bsrsetup에 대한 모든 파라미터는 텍스트 인자로 전달해야 합니다.
bsradm과 bsrsetup의 분리를 통해 유연한 명령 체계를 제공합니다.
bsradm에서 받아들인 파라미터는 보다 복잡한 파라미터로 치환하여 bsrsetup을 호출합니다.
bsradm은 리소스 구성파일의 문법적 오류 등을 확인하여 사용자 실수를 방지합니다. bsrsetup은 이러한 문법적 오류를 확인하지 않습니다.
대부분은 bsrsetup을 직접 사용할 필요가 없으나 노드 간 개별제어 필요할 경우 또는 특수한 기능을 위해 사용합니다.
bsrsetup 명령 옵션에 대한 자세한 사항은 Appendix B. 시스템 매뉴얼의 bsrsetup 을 사항은 부록, 명령어의 bsrsetup 을 참고하십시요.
bsrmeta
복제 구성을 위한 메타 데이터 생성, 덤프, 복원 및 수정 기능을 제공합니다. bsrsetup처럼 대부분은 직접 bsrmeta를 사용할 필요가 없고 bsradm에서 제공하는 명령을 통해 메타 데이터를 제어합니다.
bsrmeta 명령 옵션에 대한 자세한 사항은 Appendix B. 시스템 매뉴얼의 bsrmeta 를 참고하십시요사항은 부록, 명령어의 bsrmeta 를 참고하십시요./wiki/spaces/WDRBDV9/pages/170098932
...
bsr 관련 정보를 확인하거나 기타 필요한 설정을 조정할 수 있습니다.
bsrcon 명령 옵션에 대한 자세한 사항은 Appendix B. 시스템 매뉴얼의 bsrcon 을 사항은 부록, 명령어의 bsrcon 을 참고하십시요.
리소스
리소스는 복제 데이터 세트를 구성하기 위해 필요한 모든 것을 추상화한 객체이자 복제 대상입니다. 사용자는 리소스를 구성하고 이를 제어하여 복제 환경을 운영합니다복제를 운영하기에 앞서 리소스를 구성하고 리소스를 기동하여 제어합니다. 즉 리소스가 제어의 단위 입니다.
리소스를 구성하기 위해서 다음의 기본적인 사항들(리소스 이름, 볼륨, 네크워크 연결)을 지정해야 합니다.
리소스 이름
공백없이 일반 문자열(US-ASCII 형태로 )로 이름을 지정합니다.
볼륨
리소스는 공통의 복제 스트림을 공유하는 하나 이상의 볼륨으로 구성된 복제 그룹이며 그룹입니다. bsr은 리소스 내의 모든 볼륨의 정합성을 보장합니다.
볼륨은 하나의 장치로 기술하며 장치명으로 기술합니다. 윈도우즈의 경우 드라이브 레터(drive letter)로 지정합니다.
하나의 복제 셋에는 데이터 복제를 위한 볼륨 한 개와 볼륨과 연계된 메타데이터를 저장하는 별도의 볼륨이 필요합니다. 메타 볼륨은 복제를 위한 내부 정보를 저장하고 관리하는 용도로 사용합니다.
메타데이터는 저장하는 위치에 따라 외부 메타 형식(External Meta Type)과 내부 메타 형식(Internal Meta Type)으로 구분합니다. 예를 들어, 복제 대상 볼륨의 디스크내에 디스크 내에 메타 데이터가 위치하면 내부 메타이고, 다른 장치 또는 다른 디스크에 위치하면 외부 메타가 됩니다메타입니다.
bsr은 운영 중 복제 I/O 와 메타 데이터 쓰기가 동시에 수행될 수 있기 때문에 성능면에서 외부 메타 형식이 내부 메타에 비해 유리합니다. 그리고 메타 디스크의 I/O성능은 복제 성능에 직접적으로 영향을 주기 때문에 되도록 이면 좋은 성능의 디스크로 구성하는게 좋습니다.
메타를 위한 볼륨은 NTFS같은 파일시스템으로 파일시스템(NTFS 같은)으로 포맷해선 안되며 RAW 상태로 구성해야 합니다.
네트워크 연결(Connection)
Connection은 Connection은 두 호스트 사이의 복제 데이터 세트를 위한 통신 링크입니다.
각 리소스들은 다중 호스트들 간에 완전 메시(full-mesh) 연결 설정을 포함한 또는 스타(star)형 구성 등의 다중 호스트로 정의합니다.
연결 Name은 특별히 지정하지 않을 경우 bsradm 수준에서 리소스 Name으로 자동 지정됩니다.
...
복제 방식은 운영정책을 결정하는 요소인 데이터 정합성 여부와 로컬 I/O 지연(Latency) 성능, 처리량(Throughput) 등에 의해 결정되어야 합니다.
복제 모드를 구성하는 예제는 리소스 작성 부분을예제는 구성 부분을 참고하세요.
복제 전송 프로토콜
bsr의 복제 전송 네트워크는 TCP/IP 전송 프로토콜을 지원합니다.
...
동기화하는 중에는 대기(Standby)노드의 전체 데이터 셋 중 일부는 과거의 변경 전 내용이고 일부는 최신으로 업데이트됩니다. 이러한 데이터의 상태를 Inconsistent 상태라고 하고 모든 블럭이 최신 데이터로 동기화 완료된 상태를 UpToDate 상태라고 합니다. Inconsistent 상태의 노드는 일반적으로 볼륨이 사용가능하지 사용 가능하지 않은 상태이므로 이 상태는 가능한 짧게 유지하는 것이 바람직합니다.
...
전체 동기화를 한 번 수행하고 난 후에는 항상 부분동기화로 동작합니다. 동기화 되지 않은 영역(oos)에 대해서만 부분 동기화합니다.
빠른 동기화(FastSync)
bsr 은 볼륨에서 사용하고 있는 부분에 대해서만 동기화 하는 빠른 동기화(FastSync)를 구현합니다. FastSync 로 동작하지 않는다면 전체 볼륨의 영역에 대해서 동기화 해야 하므로 볼륨의 크기가 클 경우 많은 동기화 시간을 소요하게 됩니다. FastSync 는 동기화 시간을 크게 절약할 수 있는 bsr의 강력한 기능입니다.
...
체크섬 데이터 요약을 사용하면 동기화 알고리즘의 효율성을 더욱 개선할 수 있습니다. 체크섬 기반 동기화는 동기화하기 전에 블록을 읽고 현재 디스크에 있는 내용의 해시(hash) 요약을 구한 다음, 상대 노드로부터 같은 섹터를 읽어 구한 해쉬 요약 내용과 비교합니다. 해시 내용이 일치하면 해당 블럭에 대한 동기화 쓰기(re-write)를 생략합니다. 이 방식은 동기화 해야 될 블럭을 단순히 덮어쓰는 방식에 비해 성능에서 유리할 수 있으며 연결이 끊어진(disconnect 상태) 동안 파일 시스템이 섹터에 같은 내용을 다시 썼다면 해당 섹터에 대해선 재동기화를 생략하게 되므로 전체적으로 동기화 시간을 단축시킬 수 있습니다.
동기화 대역 지정
...
동기화와 복제는 동시에 수행될 수 있습니다. 이를 위해 양 측 동작 간의 대역폭 경계를 지정해야 합니다.
bsr은 네트워크 대역 내에서 동기화 대역폭을 지정하면 그 나머지 대역을 복제 대역으로 사용합니다. 동기화 동작이 없다면 모든 대역을 복제로 사용합니다. 최소값(c-min-rate)과 최대값(c-max-rate)으로 지정할 수 있습니다.
고정 대역 동기화(Fixed-rate synchronization)
상대 노드로 동기화하는 데이터 속도를 resync-rate 값으로 고정합니다.
가변 대역 동기화(Variable-rate synchronization)
가변 대역 동기화는 가용한 네트워크의 대역폭을 감지한 후 복제 처리량과 중재하여 c-min-rate 에서 c-max-rate 사이에서 동기화를 처리합니다. 가변대역 동기화에서의 resync-rate 는 초기 동기화 대역값의 의미만 가집니다.
bsr은 가변대역 동기화를 기본 설정으로 합니다.
온라인
...
정합성 검사
온라인 무결성 검사는 장치 장치 운영 중에 노드 중 노드 간의 블록 별 데이터의 무결성을 정합성을 확인하는 기능입니다. 무결성 검사는 네트워크 대역폭을 효율적으로 사용하고 중복된 검사를 하지 않습니다.
온라인 무결성 검사는 한 쪽 노드에서(verification source) 특정 리소스 스토리지상의 모든 데이터 블럭을 순차적으로 암호화 요약(cryptographic digest)시키고, 요약된 내용을 상대 노드(verification target)로 전송하여 같은 블럭위치의 내용을 요약 비교 합니다. 만약 요약된 내용이 일치하지 않으면, 해당 블럭은 out-of-sync로 표시되고 나중에 동기화대상이 동기화 대상이 됩니다. 여기서 비교할 때에는 블럭의 전체 내용을 전송하는 것이 내용이 아니라 최소한의 요약본만 전송하기 때문에 전송하여 네트워크 대역을 효과적으로 사용하게 됩니다사용합니다.
리소스의 무결성을 검증하는 작업은 정합성 검사는 온라인 중에 검사하기 하기 때문에 온라인 검사와 복제가 동시에 수행될 경우 약간의 복제성능 복제 성능 저하가 있을 수 있습니다. 하지만 서비스를 중단할 필요가 없고 검사를 하거나 검사 이후 검사 중 또는 검사 후 동기화 과정 중에 시스템의 다운 타임이 발생하지 않는 장점이 있습니다. 그리고
bsr은 FastSync 를 기본 로직으로 동작으로 수행하기 때문에 파일시스템이 사용하고 있는 디스크 영역에 대해서만 온라인 검사를 수행하여 보다 더 빠르고 효율적입니다.
온라인 무결성 검사에 따른 작업은 OS 수준에서 예약된 작업으로 등록하여 운영 I/O 부하가 적은 시간 대에 주기적으로 수행하는 것이 일반적인 사용법입니다. 온라인 무결성 정합성 검사를 구성하는 법에 대한 자세한 내용은 온라인 디바이스 검증의 사용(Using on-line device verification)을 https://mantech.jira.com/wiki/spaces/BSRUG/pages/1185382476#%EC%98%A8%EB%9D%BC%EC%9D%B8-%EC%A0%95%ED%95%A9%EC%84%B1-%EA%B2%80%EC%82%AC를 참고하세요.
복제 트래픽 무결성 검사
bsr은 암호화 메시지 요약 알고리즘을 사용하여 양 노드 간의 복제 트래픽에 대한 무결성을 실시간 검증할 수 있습니다.
...
bsr 은 스플릿 브레인을 자동으로 감지하고 이를 복구하는 기능을 제공합니다. 이에 대한 자세한 내용은 문제해결의 스플릿 브레인 항목을 참고하세요.
디스크 상태
bsr의 디스크 상태는 상황에 동기화 상태에 따라 대표적으로 다음의 상태들 상태 중 1가지로 표기 됩니다.
Diskless 백킹디바이스가 복제 디스크로 장착되기(Attach) 전 상태 이거나, I/O 장애가 발생하여 디스크가 분리된(Detach) 상태입니다.
UpToDate 디스크 데이터가 최신의 데이터로 유지되고 있는 상태 입니다. 타깃의 디스크가 UpToDate 이면 절체 가능한 상태임을 의미 합니다상태입니다.
Outdated 특정시점의 데이터 정합성은 보유하고 있으나 최신의 데이터는 아닐 수 있습니다. 미러 연결이 명시적으로 단절될 경우 기본적으로 타깃의 디스크 상태는 Outdated 입니다.
Inconsistent 동기화가 완료되지 않아 데이터 정합성이 보장되지 않는 불일치 한 깨진 데이터를 말합니다. 타깃의 디스크가 Inconsistent 이면 기본적으로 절체가 불가한 불가능한 상태입니다.
bsr은 Inconsistent 데이터와 Outdated 데이터를 구분합니다. Inconsistent 데이터란 어떤 방식으로든 접근이 불가능하거나 사용할 수 없는 데이터를 말합니다. 대표적으로 동기화 진행 중인 타겟 타깃 쪽 데이터가 Inconsistent 상태 입니다. 동기화가 진행 중인 타깃 데이터는 일부는 최신 이지만 일부는 지난 시점의 데이터 이므로 이를 한 시점의 데이터로 간주할 수 없습니다. 또한 이 때에는 장치에 적재 되었을 적재된 파일시스템이 마운트(mount)될 수 없거나 파일시스템 자동 체크 조차도 할 수 없는 상태 일 수 있습니다.
Outdated 디스크 상태는 데이터의 일관성은 보장되지만 Primary 노드와 최신의 데이터로 동기화되지 않았거나 이를 암시하는 데이터 입니다. 이런 경우는 데이터 일관성은 보장되지만 최신이 아닌 데이터일 수 있습니다. 임시적이든 영구적이든 복제 링크가 중단할 경우 중단될 때 발생합니다. 연결이 끊어진 Oudated 데이터는 결국 지난 시점의 데이터 이기 때문에 이러한 상태의 데이터에서 서비스가 되는 것을 막기 위해 bsr은 Outdated 데이터를 가진 노드에 대해 승격이므로 승격(promoting a resource)하는 것을 기본적으로 허용하지 않습니다. 그러나 필요하다면필요에 따라(긴급한 상황에서) Outdated 데이터를 강제로 승격할 수는 있습니다. 이와 관련하여 bsr은 네트워크 단절이 발생하자마자 응용프로그램이 측에서 즉시 Secondary노드를 Outdated 상태가 되도록 만들 수 있는 인터페이스를 제공하고 있습니다. Outdated 상태가 된 리소스에서 해당 복제링크가 다시 연결된다면 Outdated 상태 플래그는 자동으로 지워지며 백그라운드로 동기화(background synchronization)가 완료되어 최종 최신 데이터(UpToDate)로 갱신됩니다. Primary 가 Crash 되었거나 연결이 단절된 Secondary 노드는 디스크 상태가 Outdated 일 수 있습니다.
디스크 I/O 오류 처리
디스크 장비에서 장애가 발생할 경우 bsr은 디스크 장애 정책의 사전 설정을 통해 해당 I/O 오류를 상위 계층(대부분 파일시스템)으로 단순히 전달해서 처리하거나 복제 디스크를 detach 하여 복제를 중단하도록 합니다. 전자는 패스스루 정책, 후자는 분리 정책입니다.
패스스루(passthrough)
하위 디스크 계층에서 오류 발생 시 별도 처리없이 상위(파일시스템) 계층으로 오류내용을 전달합니다. 오류에 따른 그에 상응한 처리는 상위 계층에게 맡깁니다. 예를 들어, 파일 시스템이 오류 내용을 보고 디스크 쓰기 재시도를 하거나 read-only 방식으로 다시 마운트를 시도할 수 있습니다. 이렇게 오류를 상위 계층으로 전달하는 방식을 통해 파일시스템 스스로가 오류를 인지할 수 있도록 하여 스스로 대처할 수 있는 기회를 부여합니다.
분리(detach)
오류 정책을 detach 방식으로 구성하였다면 하위 계층에서 오류 발생 시 bsr이 자동으로 디스크를 분리(detach)하는 방식으로 처리합니다. 디스크가 detach 되면 diskless 상태가 되고 디스크로의 I/O 가 차단되며, 이에 따라 디스크 장애가 인지되고 장애 후속조치가 취해져야 합니다. bsr에서 diskless 상태는 디스크에 I/O 가 유입되지 못하도록 차단된 상태로 정의합니다. 보다 자세한 내용은 문제해결의 디스크 장애에서 설명합니다.
이와 관련한 자세한 사항은 https://mantech.jira.com/wiki/spaces/BSRUG/pages/1366262571#%EB%94%94%EC%8A%A4%ED%81%AC-%EC%9E%A5%EC%95%A0의 내용을 참고하세요.