구성 환경
bsr 은 기본적으로 물리 시스템 및 가상 시스템(VM), 하이퍼 컨버지드 인프라(HCI) 환경 등 구성 환경의 제약이 없으며 로컬 네트워크와 WAN 구간 원격 네트워크 환경 등 어떤 네트워크 환경에서도 유연하게 구성할 수 있습니다.
사양
다음은 BSR이 지원하는 플랫폼과 대상 시스템의 물리적 요구사양 입니다.
플랫폼
Windows 2012 이상, Linux CentOS 6.4 이상, Ubuntu 16.04 LTS 이상, ProLinux 7 이상, Rocky 8.5 이상 x64 환경을 지원합니다.
파일시스템
블럭복제 솔루션은 기본적으로 파일시스템의 유형에 관계없이 동작하지만 bsr 은 파일시스템에서 사용하는 영역에 대해서만 동기화 하는 빠른 동기화를 구현함에 따라 지원 파일 시스템에 대한 명세를 가집니다.
최근 복제 볼륨의 용량이 대용량화(수십~수백 테라바이트) 되어가고 있는 추세이고 그에 따라 복제 볼륨을 초기 동기화 하는데 상당히 많은 시간이 소요되고 있습니다. 많게는 수일에서 수십일이 걸리기도 합니다. 이것은 볼륨을 초기동기화 하는데 전체 디스크 볼륨을 대상으로 하기 때문입니다. 1 Gbps 네트워크 대역폭에서 볼륨의 용량이 10 테라바이트 일 경우 전체 동기화를 완료 하려면 아무리 빨라도 최소한 27 시간 이상, 100 TB 라면 열흘 이상 소요 됩니다.
우리는 이러한 초기 동기화가 오래 걸리는 문제를 해결하기 위해 빠른 동기화(이하 FastSync)를 구현하였습니다. FastSync 는 복제 볼륨의 파일시스템에서 사용하고 있는 영역에 대해서만 동기화 하는 기능으로서 초기 동기화 소요시간을 비약적으로 개선하였습니다. 예를 들어 100TB 용량의 볼륨에서 실제 10GB 만 사용하고 있다면 1Gbps 대역에서 FastSync는 1분 내에 동기화를 완료 합니다.
다만 FastSync는 파일시스템의 특성을 사용하기 때문에 파일시스템 유형에 의존적이며 따라서 다음의 파일시스템에 대해서만 동작하도록 제한되어 있습니다.
Windows 의 NTFS, ReFS
Linux의 Ext 계열 파일시스템(ext3 이상), xfs
위 파일 시스템들은 가장 많이 사용하는 파일시스템 유형으로서 향후 다른 파일시스템들에 대해서도 지원을 확장해 갈 예정입니다. FastSync에서 지원하지 않는 유형의 파일시스템들에 대해서는 기존의 전체 동기화 방식으로 동작합니다.
CPU
최소 2GHz, 4 core 이상, x64 호환 프로세서에서 구성할 것을 권장합니다. 이 보다 낮은 사양의 프로세서 환경에서도 동작은 하지만 시스템의 I/O 성능을 고려하려면 되도록 머신의 사양을 높게 확보할 필요가 있습니다.
메모리
시스템은 커널 설정에 따라 다르지만 통상 메모리 사용량이 70~80% 에 이를 때 페이징이 일어나므로 성능저하를 예방하기 위해선 적어도 30% 이상의 물리메모리 여유 공간이 확보되도록 구성해야 합니다. 여기에 복제에서 사용하는 메모리 용량은 다음과 같습니다.
Windows 에서 BSR의 최대 사용 메모리는 기본 설정(max-req-write-count 10만)에서 1 리소스 당 최대 1.5GB + 송신버퍼 용량 이며, 최대 설정(max-req-write-count 100만)에서 1 리소스 당 3GB + 송신버퍼 용량 입니다.
송신버퍼 없는 동기방식의 경우
기본설정에서 1리소스 당 최대 1.5GB NonPaged Pool을 사용합니다.
최대설정에서 1리소스 당 최대 3GB NonPaged Pool을 사용합니다.
송신버퍼 1GB 설정에서 비동기 방식의 경우
기본설정에서 1리소스 당 최대 2.5GB NonPaged Pool을 사용합니다.
최대설정에서 1리소스 당 최대 4GB NonPaged Pool을 사용합니다.
예를 들어, 64GB의 물리메모리를 가진 서버에서 메모리 여유공간은 20GB(30%)가 필요하며 이 중 BSR에서 사용하는 공간은 기본설정의 비동기방식에서 1 리소스당 최대 2.5GB가 요구됩니다.
최근 가상화 환경에서 VM 을 통한 복제 구성이 보편화 되어 가고 있습니다. 이런 환경의 특징은 개별 VM에 할당된 CPU 나 메모리 자원이 충분하게 할당 되지는 않는 다는 점 입니다. 예를 들어 개별 VM이 2core, 2~4GB 메모리로 구성될 경우 bsr 의 최소 구성사양에 충족되지 못할 수 있습니다. 이렇게 저사양의 VM 으로 복제 환경이 구성될 경우 bsr 엔진 내부의 성능 지연과 노드 간의 네트워크 keep alive(ping) 지연이 빈번하게 발생될 가능성이 높아집니다. 기본적인 동작에는 문제가 없지만 I/O 부하가 커지거나 시스템의 HW 계층의 인터럽트 발생빈도가 높아지게 되면 VM 전반의 성능이 하락되고 그에 따라 bsr 도 동작에 영향을 받게 됩니다. 결론적으로 저 사양의 VM 에서 복제 환경을 구축하는 것에는 제약이 따른다는 것 입니다.
이 문제에 대응할 방법은 시스템 구성 자원을 넉넉하게 확보하는 방법 이외에는 별다른 해결책이 없습니다.
디스크
기본 설치 공간
bsr 의 바이너리 실행 모듈들을 모두 설치하는데 약 200MB 정도가 필요하고 bsr의 로그를 저장하기 위해 1GB 가 요구되어 약 2GB 의 디스크 설치 공간을 필요로 합니다.
복제 디스크
이론적으로 bsr 의 복제 디스크의 용량은 제한이 없으나 우리가 실제 검증한 복제 볼륨의 크기는 40TB 입니다. 최대 복제 볼륨의 크기를 40TB 로 제한합니다.
메타 디스크
복제 볼륨의 용량에 따라 필요한 메타디스크의 용량을 산정해야 합니다. 복제 볼륨 1TB 당 약 33MB 의 메타디스크 공간을 필요로 하고 보다 정확한 크기는 메타데이터 크기 추정의 내용을 참고합니다.
네트워크
최근의 기업환경에서 로컬 네트워크에서의 미러링은 1 Gbps 에서 10 Gbps 대역폭까지 구성하는게 보편적이며 DR(Disaster Recovery)을 위한 원격 복제 환경(WAN 환경 복제)은 이보다 낮은 대역폭으로 운영되는게 일반적입니다. 즉 아주 낮은 대역폭(10~100Mbps)에서 부터 높은 대역폭에 이르기 까지 광범위한 네트워크 환경에 대해 적용됩니다. 단, 저대역 네트워크 환경에서는 대역폭의 한계를 극복하기 위한 복제 가속기의 연동을 고려해야 봐야 합니다.