ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • vSAN 튜닝 (Tuning) 가이드
    스토리지 지식 2021. 1. 27. 23:36

    vSAN 성능 개선을 위한 주요 튜닝 방안에 대해 소개한다.

    크게 세 가지로 나누어볼 수 있는데, MTU, 개체당 디스크 스트라이프 수, 개체 체크섬 사용 안 함 설정이다.

     

    "MTU" (Maximum Transfer Unit)는 1500 바이트 이상의 이더넷 프레임 (점보 프레임)으로 변경하여 대량의 데이터 전송 시 작은 데이터를 여러 번 보내는 대신 한 번에 큰 데이터를 보냄으로써 전체적인 전송 횟수가 줄어들므로 이에 따른 오버헤드가 감소하여 성능 향상을 도모한다. 네트워크 인터페이스 카드와 네트워크 스위치 모두 동일하게 설정되어야 한다. vSAN 환경에서는 VMware HCIA Distributed Switch와 VMkernel 어댑터, 그리고 네트워크 스위치, 이렇게 세 군데 설정이 필요하며, 9000으로 적용할 것을 권고한다. (default 1500) 

     

    "개체당 디스크 스트라이프 수"는 개체 (e.g. vmdk 파일)가 실제 드라이브에 저장되는 단위인 컴포넌트의 개수를 1:1이 아닌 1:n으로 더 늘림으로써 Stripping 효과를 얻기 위함이다. RAID 1 (Mirror) 구성일 경우에 2 이상으로 변경할 것을 추천한다. 드라이브 종류와 개수, 디스크 그룹 수 등에 따라 최적 값이 달라진다. (default 1)

     

    "개체 체크섬 사용 안 함"은 디스크에 저장된 데이터의 무결성 보장을 위해 Checksum을 사용할지 여부에 대한 설정인데, 디스크가 Mirror 또는 Erasure coding을 지원하고, 노드 수준에서 장애 대응이 가능하도록 구성되어 있으므로 굳이 Checksum 정보까지 사용하여 데이터 오류를 검증할 필요는 없으므로 사용하지 않는 것을 권고한다. 사용하지 않는다는 의미는 체크섬을 사용하지 않겠다는 것이므로, "개체 체크섬 사용 안 함"에 대해서는 "예"로 설정하는 것이 체크섬을 사용하지 않는 것이다. (default 아니오-비활성화)

     

    마지막으로, 하드웨어 구성 상 가능하다면 단일 디스크 그룹이 아닌, 멀티 디스크 그룹으로 구성하는 것이 좋다. vSAN은 노드별 I/O가 Disk Group 단위로 일어나므로 단일 DG보다는 멀티 DG 경로로 Read 및 Write를 동시에 일으키는 것이 훨씬 성능 효과가 뛰어나다. (구성에 따라 1DG와 2DG의 성능이 50% 이상 차이 난다) 최소 2개 이상의 Disk Group을 구성할 것을 권고한다. (노드당 Cache 및 Capacity 드라이브 각 2개씩 필요)

     

     

    1. Jumbo frame setting (MTU 1500 → 9000)

    VMware HCIA Distributed Switch의 MTU를 기본값 1500에서 9000으로 변경한다.

     

     

    노드의 VMkernel 어댑터에서 vSAN 디바이스를 선택하여 편집한다. 모든 노드의 vSAN 디바이스에 대해 MTU 9000으로 적용해주어야 한다.

     

     

    네트워크 스위치의 MTU 역시 변경한다. (장비 종류에 따라 명령어는 상이함)

    (변경 전) 

    (변경 후)

     

    아래는 점보 프레임 설정 전과 후의 성능 비교이다. 설정 후 약 7.5%의 IOPS 증가가 이루어진 것을 확인할 수 있다. (325,962 → 351,046 IOPS)

     

     

    2. Optimize number of stripes per object

    스트라이프는 개체 (Object)를 나누는 것이다. 예를 들면, VMDK 파일 하나를 저장할 때, 하나의 파일이 아니라 여러 개로 나누어 저장하는 것이다. 이렇게 여러 노드에 분산되어 있는 Object의 Chunk를 Component라고 하며, 동시 장애를 허용하고 성능 요구사항을 충족할 수 있는 수단이 된다. 스트라이프 수를 2로 설정 시 아래 그림처럼 stripe-1a와 stripe-1b 두 개의 componet로 저장된다. 그러므로 하나의 10MB 파일을 읽는 것보다, 여러 디스크에서 분산된 5MB를 동시에 읽어 응답 시간을 줄이는 원리이다.

     

    vSAN Objects and Components

     

    개체당 디스크 스트라이프 수를 1→2 이상으로 변경한다. 이는 하드웨어 구성에 따라 최적 값이 다르므로 최대의 성능을 이끌어내기 위해서는 최적의 값을 찾을 필요가 있다. 최댓값은 12이다.

     

     

    아래는 Stripe 수에 따른 성능 변화이다.

    RAID 5에서는 큰 성능 변화가 없으나, RAID 1에서는 Stripe 수가 증가함에 따라 대역폭 사용량 증가가 두드러짐을 알 수 있다. 이는 Latency가 개선된 효과로 볼 수 있으므로 실제 체감 성능 향상에 도움이 된다고 할 수 있다. (Stripe 수가 변경되면 물리 드라이브에서 Component 재배치 작업이 일어나므로 완료 및 I/O 안정화까지 일정 시간이 소요된다.)

     

     

    Stripe 수 변경 시에는 성능이 향상되지만 시스템 리소스도 더 많이 소모된다. 이 옵션의 효과를 제대로 보려면 디스크 개수가 많은 것이 유리하다. 또한, 디스크 그룹이나 디스크 종류 및 수량, 워크로드 프로파일에 따라 결과가 달라질 수 있으므로, 인프라 컨디션에 적합한 최적 수치를 찾을 경우 성능을 극대화할 수 있다. (참고로, VMware 문서에서는 스트라이핑 값 변경 시 성능이 향상된다고 하면서도 기본값을 변경하지 말라고 되어 있다.) 

     

     

    3. Optimize object checksum

    "개체 체크섬 사용 안 함"을 활성화시킨다. 즉, 체크섬을 사용하지 않겠다는 것이다. (버전 6.7에서 Default 값은 비활성화-아니오)

    vSAN은 종단 간 체크섬을 사용하여 파일의 각 복사본이 소스 파일과 정확히 동일한지 확인함으로써 데이터의 무결성을 보장한다. 시스템에서 읽기/쓰기 작업 중에 데이터의 유효성을 확인하고, 오류가 감지되면 vSAN이 데이터를 복구하거나 오류를 보고한다. 체크섬 불일치가 감지되면 vSAN이 잘못된 데이터를 올바른 데이터로 덮어써서 데이터를 자동으로 복구한다. 체크섬 계산 및 오류 수정은 백그라운드 작업으로 수행된다. 이런 일련의 작업은 추가적인 오버헤드가 생기므로 성능에 일부 손실을 가져올 수밖에 없고, 미디어 및 시스템의 신뢰성이 높아진 지금으로선 실효성이 큰 기능이라고 하기는 어렵다.
    클러스터에서 모든 개체의 기본 설정은 아니요이며, 이는 체크섬이 사용되도록 설정되었다는 의미이므로, 성능을 위해서는 예로 바꾸어 체크섬이 사용되지 않도록 한다.

     

     

     

    4. Set up two or more disk groups

    vSAN은 노드당 최대 5개의 Disk Group을 구성할 수 있다. Disk Group당 Cache 드라이브는 1개, Capacity 드라이브는 7개까지 구성이 가능하다. 1개의 Disk Group으로는 병렬 처리 효과를 누릴 수 없으므로 여유가 되는 한 많은 Disk Group을 구성하면 성능에 유리하다.

     

    vSAN Disk Groups

     

    아래는 동일 노드 사양의 클러스터에서 1 Disk Group과 2 Disk Group의 성능 차이를 나타낸다. (1 DG 구성 : 400GB WI SSD * 1ea + 1.92TB RI SATA SSD * 3ea)

    Disk Group을 하나 더 추가했을 때 약 61.5%의 성능이 개선되었다. (267,349 → 431,790 IOPS)

     

     

    댓글

Designed by Tistory.