Versions Compared

Key

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

...

시스템은 커널 설정에 따라 다르지만 통상 메모리 사용량이 70~80% 를 넘을 때 가상메모리 페이징을 시작합니다. 페이징이 동작하면 시스템 I/O 성능의 저하가 발생하므로 20~30% 이상의 물리메모리 여유 공간을 확보하여 페이징 발생이 억제되도록 구성하는 게 서버를 운영하는게 복제에 유리합니다.

Info

페이징이 발생하는 시점은 시스템의 메모리 용량, 플랫폼, OS 버전에 따라 달라질 수 있습니다. 위에서 설명한 70~80%는 통상의 수치이므로 사용자 환경에 맞게 이해할 필요가 있습니다.

BSR 에서 사용하는 메모리는 복제에서 수용할 수 있는 최대 쓰기 요청값(max-req-write-count)과 버퍼링을 위한 송신버퍼의 크기에 따라 결정됩니다. 아래는 Windows 환경의 예시입니다.

  • 송신버퍼 없는 동기방식의 경우는경우

    • 쓰기 요청 기본 설정(1만)에서 1리소스 당 최대 1.5GB를 사용합니다.

    • 쓰기 요청 최대 설정(10만)에서 1리소스 당 최대 3GB를 사용합니다.

  • 송신버퍼 1GB 설정에서 비동기 방식의 경우는경우

    • 쓰기 요청 기본 설정에서 1리소스 당 최대 2.5GB를 사용합니다.

    • 쓰기 요청 최대 설정에서 1리소스 당 최대 4GB를 사용합니다.

예를 들어, 64GB의 물리메모리를 가진 서버의 경우 약 20GB(30%)의 메모리 여유공간이 필요하며 사용된 메모리 공간 중 비동기방식 기본설정에서 1 리소스당 최대 2.5GB의 메모리 공간이 요구됩니다. 만약 30% 수준의 메모리 여유공간 확보가 불가한 상황이라면 페이징 발생에 따른 기본적인 I/O의 성능저하는 감수해야 합니다.

...

또한, 복제에서 필요로 하는 1 리소스 당 3~4GB NP 메모리 사용량은 여유공간으로 유지시켜 주어야 합니다. 그렇지 않을 경우

...

메모리 부족으로 인한 장애가 발생할 수 있습니다.

송신버퍼 크기

로컬의 송신(TX) 버퍼는 로컬에서 발생한 I/O 데이터를 원격으로 전송하는데 따르는 지연을 완충하는 용도로 사용합니다. 이상적으로는 다음의 수식을 통해 산출한 크기로 지정합니다.

...

Info

최근 가상화 환경에서 VM 을 통한 복제 구성이 보편화 되어 가고 있는데, 개별 VM에 할당된 CPU 나 메모리 자원이 넉넉하지 않은 경우가 있습니다. 예를 들어, 개별 VM이 cpu 1core, 1~2GB 메모리로 구성될 경우 bsr 의 최소 구성사양에 충족되지 못합니다. 저사양 VM 으로 복제 환경이 구성되면 빈번한 cpu 문맥 전환의 성능 지연, 그에 따라 노드 간 통신(keep alive) 지연이 빈번해 집니다. 이런 환경의 VM에서 복제를 운영하는 것은 제약이 심합니다. 이 문제를 다루려면 해결하려면 시스템 자원을 넉넉하게 확보하는 것 이외에는 별다른 해결책은 방법은 없습니다.

디스크

설치 공간

bsr 에서 사용하는 디스크 공간은 다음과 같습니다.

...

이론적으로 bsr 의 복제 디스크의 용량은 제한이 없으나 실 사용 디스크 용량은 10TB 까지로 한정합니다. 그 이상의 용량에선 복제 디스크 용량에 대응하는 메타 영역이 늘어나고 메타 용량이 커질 수록 이에 대응되는 메타디스크 크기도 증가하여 메타 전반을 처리해야 하는 동작(Attach)에 시간이 많이 소요되므로 소요됩니다. 이는 리소스 기동(up)에 상당한 시간을 소모할 수 있습니다. 그러므로 최대 볼륨을 10TB 로 한정하고 용량이 그 시간이 소요될 수 있다는 것을 암시합니다. 볼륨이 10TB 이상일 경우에는 파티션 분할을 통해 조정하는게 좋습니다볼륨 크기를 조정할 것을 권장합니다.

Info

다중볼륨

하나의 서비스 업무에 대응하는 저장소가 여러 볼륨으로 분리되어 구성되는 경우가 많은데, 이런 경우 이 볼륨들을 하나의 리소스로 취급해줄 필요가 있습니다. 이처럼 하나의 리소스에 다수의 볼륨을 묶어서 운영하는 것을 다중볼륨 구성이라고 합니다. 리소스를 다중볼륨으로 운영할 경우 데이터 처리 버퍼 큐가 단일 큐로 운영 됨으로써 서비스의 쓰기 I/O 순서를 디스크 볼륨으로 직렬화하여 서비스 측면의 정합성을 보장하게 합니다.

다중볼륨의 개수는 제한이 없지만(최대 65535) 현실적으로는 볼륨 개수가 많아 지면 큐 버퍼의 지연이 심해서 제어하기 어려울 수 있습니다. 10G 망에서 4~5개 볼륨 이하로 구성하는 것이 현실적입니다.

...