[번역] Understanding vSAN Architecture: Disk Groups

출처 : https://blogs.vmware.com/virtualblocks/2019/04/18/vsan-disk-groups

딜버트 만화(Dilbert comic)의 제작자인 스콧 아담스(Scott Adams)는 "정보화된 의사결정은 오래 전부터 추측하고 나서 부적절한 결과를 남 탓으로 돌리는 전통에서 비롯된다"고 말한 적이 있다. 딜버트와 정보에 입각한 결정의 팬으로서, 게시물의 목표는 vSAN 아키텍처의 설계 결정을 돕는 것이다. 우리 모두가 알고 있듯이, 모두 맞는 사이즈는 없다. 조직은 규모, 예산 및 요구사항이 다양하다. 하이브리드든 All-Flash든, 호스트 3개든, 호스트 30개든, 신중히 고려해야 할 몇 가지가 있다. 먼저 vSAN 아키텍처에 대해 자세히 살펴봅시다.

vSAN 아키텍처 개요

vSAN 아키텍처는 읽기 캐슁 및 쓰기 버퍼링을 위한 캐시 계층과 영구 스토리지를 위한 용량 계층의 두 계층으로 구성된다. 이 두 계층 설계는 VM에 최고의 성능을 제공하는 동시에 디바이스에 가장 효율적인 방식으로 데이터를 기록할 수 있도록 보장한다. vSAN은 용량 장치와 해당 캐시 계층 간의 관계를 관리하기 위해 디스크 그룹이라는 논리적 구조를 사용한다.

DiskGroup.png

디스크 그룹에 대해 알아야 할 몇 가지 사항:

  • vSAN 클러스터에서 스토리지를 제공하는 각 호스트에는 하나 이상의 디스크 그룹이 포함될 것이다.
  • 디스크 그룹에는 최대 1개의 캐시 디바이스와 1~7개의 용량 디바이스가 포함되어 있다.
  • vSAN 호스트에는 5개의 디스크 그룹이 있으며, 각각 최대 7개의 용량 디바이스를 포함할 수 있으며, 따라서 각 호스트마다 최대 35개의 용량 디바이스가 생성된다.
  • 하이브리드 구성이든 All-Flash 구성이든 캐쉬 장치는 플래시 장치여야 한다.
  • 하이브리드 구성에서 캐시 디바이스는 vSAN에서 읽기 캐시(70%)와 쓰기 버퍼(30%)로 모두 활용된다.
  • All-Flash 구성에서는 캐시 디바이스의 100%가 쓰기 버퍼로 전용된다.

캐시 계층(Cache Tier)

전술한 바와 같이, 용량 계층(capacity tier)은 하이브리드 구성과 All-Flash 구성의 역할이 약간 다르다. 하이브리드 구성에서 캐시 장치는 읽기 캐시 및 쓰기 버퍼 역할을 한다. 이는 I/O 성능을 획기적으로 향상시키는 동시에 저렴한 SATA 또는 SAS Disk 드라이브를 기반으로 한 스케일아웃을 가능케 한다. All-Flash에서는 용량 Disk도 플래시이므로 플래시 장치 간에 블록을 이동할 필요가 없다. 이러한 이유로 vSAN은 디바이스의 100%를 버퍼링을 쓰기 위해 전용으로 지정한다.

읽기 캐시

하이브리드 구성에서 캐시 장치의 70%는 일반적으로 사용되는 블록을 저장하는 데 전용으로 사용된다. 이로 인해 느린 디스크로 인해 발생하는 I/O 읽기 지연 시간이 감소한다. vSAN의 목표는 90% 캐시 적중률을 갖는 것이다. 캐시 적중이란 읽기 캐시에서 읽기 요청이 발견되는 것을 말한다. 이후 캐시 누락은 용량 계층에서 블록을 검색해야 하는 경우다. 용량 계층이 자기 디스크를 사용하므로 읽기 작업에 지연 시간이 발생할 수 있다.

All-Flash 구성에서는 캐시 디바이스의 100%가 쓰기 버퍼링 전용이다. 그럼 읽기는 어디로 가는 거야? 요청된 블록이 여전히 핫(hot)하며 디스테이징되지 않은 경우 캐시 계층에서 읽힌다. 그렇지 않으면 용량 계층에서 읽힌다. All-Flash 용량 장치는 읽기 작업을 효과적으로 처리할 수 있으므로 전용 읽기 캐시를 보유할 필요는 없다. 이렇게 하면 쓰기 버퍼링을 위한 캐시 디바이스의 공간이 더 넓어진다.

쓰기 캐시

하이브리드 구성과 All-Flash 구성 모두에서 쓰기 캐시는 쓰기 백업 버퍼 역할을 한다. 쓰기 작업을 승인하기 전에 용량 계층으로 디스테이징할 필요 없이 캐쉬 계층에서 직접 인식한다.

하이브리드 구성에서는 캐시 계층의 30%가 쓰기 버퍼링 전용이다. 플래시 장치를 사용하면 자기 디스크와 비교하여 쓰기 작업의 지연 시간을 크게 줄일 수 있다.

All-Flash 구성에서는 캐시 디바이스의 100%가 쓰기 버퍼링 전용(최대 600GB)이다. vSAN은 여전히 크기에 관계없이 전체 디스크를 사용하므로 디바이스의 모든 블록에 쓰기가 분산된다. 이것은 쎌(cell)의 마모를 줄여 궁극적으로 기기의 수명을 증가시킨다.

캐시 디바이스에는 고사양의 플래시 디바이스를 사용하는 것이 좋다. 캐시 장치는 쓰기 집약적이기 때문에 클래스가 높을수록 드라이브의 신뢰성과 수명이 길어진다. 아래 이미지는 vSAN을 위한 다양한 내구성 클래스를 보여준다. TBW(테라바이트 쓰기)를 주목하십시오. 캐시 디바이스를 선택할 때 TBW가 높을수록 장치의 수명이 길어진다.

tbw.png

지원되는 PCIe 플래시 디바이스, SSD 및 NVMe 디바이스 목록은 VMware Compatibility Guide를 확인한다.

용량 계층에 쓰기 삭제

vSAN에는 쓰기 버퍼를 플러시할 시기를 결정하는 몇 가지 알고리즘이 있다. 상상하는 바와 같이, 하이브리드 구성과 All-Flash 구성에 대해 캐시 계층의 역할과 설계가 다르기 때문에, 알고리즘은 다양하다. vSAN은 몇 가지 파라미터(용량, 근접성, 들어오는 I/O 속도, 대기열, 디스크 활용률 및 최적 배치)를 고려하기 위해 자체 조정 근위 메커니즘(self-tuning proximal mechanisms)을 사용한다. 이는 쓰기 빈도를 용량 계층으로 디스테이징하는 빈도를 결정한다.

디스크 그룹 설계

앞에서 언급한 바와 같이 vSAN 클러스터에 스토리지를 제공하는 각 호스트에는 최소 1개의 디스크 그룹이 필요하다. 여러 디스크 그룹 사용을 고려해야 할 몇 가지 이유가 있다. 다음 예를 사용하여 가장 일반적인 몇 가지 예를 살펴봅시다.

설계 1: 캐시 장치 1개와 용량 장치 6개가 포함된 디스크 그룹 1개
설계 2: 캐시 장치 1개와 용량 장치 3개로 구성된 디스크 그룹 2개

70-30.png

가용성(Availability)

위의 설계 1을 고려했을 때, 캐시 장치가 고장나면 어떻게 되는가? VM이 오프라인 상태인지 여부 내가 데이터를 잃어버렸나? 천만에요. 기본 정책을 RAID0으로 변경하지 않는 한 기본 스토리지 정책은 RAID1 FTT=1로, 1개의 고장난 디바이스를 허용할 수 있다. 디스크 그룹이 오프라인으로 전환되겠지만 별도의 장애 도메인에 있는 해당 장치에 데이터 복사본이 추가되어 있다. 추가 Disk 그룹을 구성하는 것은 가용성을 보장하는 방법이 아니다. 필요한 가용성은 SPBM(Storage Policy Based Management)을 사용하여 결정되며, 장애가 발생한 디바이스를 교체할 때까지(디스크 그룹이 다시 구성) VM이 추가 복사본을 사용 중이기 때문에 중단되지 않았음에도 불구하고 6개의 용량 디바이스에 있는 개체가 여전히 오프라인 상태가 되고 영향을 받는다.

이제 고장난 캐시 디바이스가 6이 아닌 관련 3개의 용량 디바이스에만 영향을 미치기 때문에 설계 2는 장애 도메인을 줄인다. 또한 이러한 영향을 받은 오브젝트를 재구축하는 시간도 단축된다.

vSAN이 장애가 발생한 디스크를 식별하면 해당 디스크를 "저하된(degraded) 디스크"로 지정하고 즉시 재구축하여 개체를 규정 준수 상태로 되돌리기 시작한다. 나는 최근에 vSAN이 재건하기 전에 60분을 기다린다는 인상을 받는 몇몇 고객을 가지고 있었다. 솔직한 실수: vSAN이 디바이스를 "사용 안 함"(예: 호스트 재부팅, 네트워크 중단)으로 식별하는 경우, 정전이 일시적이며 불필요한 재구축을 방지하기 위해 60분을 기다린다고 가정한다. Disk에 오류가 있거나 오류가 있는 경우 vSAN을 즉시 재구성하여 스토리지 정책에 구성된 복원력 수준을 보장한다.

vSAN 6.7은 (재구축과 같은) 백그라운드 I/O 작업을 처리하는 방식을 크게 향상시켜 애플리케이션이 경합 시 필요한 I/O를 보장 받도록 했다.

성능(Performance)

위와 같은 예를 고려할 때 캐시 디바이스 1개와 디바이스 3개를 포함하는 디스크 그룹 2개를 만드는 것이 성능 측면에서도 유리하다. 테스트 결과 디스크 그룹을 별도의 스토리지 컨트롤러로 이동하면 vSAN 환경의 성능이 크게 향상될 수 있는 것으로 나타났다.

vSAN I/O에 대한 자세한 정보

vSAN 아키텍처를 설계할 때 vSAN이 읽기 및 쓰기를 처리하는 방법을 이해하는 것이 중요하다. 다음은 각 작업에 대한 간략한 개요다. 이 항목과 모든 vSAN 항목에 대한 자세한 설명은 vSAN 6.7 U1 Deep Dive를 참조하십시오.

70-30.png

읽기

하이브리드 구성과 All-Flash 구성 모두에서 vSAN은 요청된 블록이 캐시 계층에서 여전히 핫한지 확인한다. 그렇다면 이를 캐시 적중(hit)이라고 한다. vSAN은 하이브리드 및 All-Flash에 대해 캐시 누락을 다르게 처리한다.

전술한 바와 같이, 블록이 존재하는 경우 하이브리드 구성에서는 읽기 캐시에서 읽기가 처리된다. 읽기 오류가 발생하면 vSAN은 용량 계층에서 데이터를 검색하여 요청된 애플리케이션에 제공하게 된다. vSAN은 읽기 중인 데이터 블록 주위의 1MB의 데이터도 캐시에 가져오는 읽기 전 캐시 최적화 기능을 가지고 있다. 여기에서의 가정은 다음 읽기가 마지막 읽기의 로컬이 될 가능성이 높고 이제 캐시될 수도 있다는 것이다.

All-Flash 구성에서는 읽기 캐시가 없다. 요청된 블록이 쓰기 버퍼에 있는 경우, 요청은 거기서 제공될 것이다. 그렇지 않은 경우 vSAN은 용량 계층에서 데이터를 읽는다. 용량 계층이 All-Flash이기 때문에 그 영향은 미미하다. 캐시 계층은 All-Flash 구성에 읽기 캐시를 구현하지 않음으로써 더 많은 쓰기를 처리할 수 있으므로 전반적인 성능이 향상된다.

쓰기

하이브리드 구성과 All-Flash 구성 모두에서 쓰기 캐시는 쓰기 백업 버퍼 역할을 한다. 애플리케이션이 쓰기 작업을 실행하면 스토리지 정책에 따라 적절한 ESXi 호스트 캐시(예: 허용할 장애, 스트라이프, RAID 등)로 쓰기가 전송된다.

하이브리드 구성에서는 캐시 계층의 30%가 쓰기 버퍼링 전용이다. 먼저 용량 계층으로 이동할 필요 없이 버퍼의 쓰기가 VM으로 다시 인식됨

All-Flash 구성에서는 캐시 디바이스의 100%가 쓰기 버퍼링 전용(최대 600GB). vSAN은 디바이스의 모든 블록에 쓰기를 분산하는 크기와 관계없이 여전히 전체 디스크를 활용한다. 이것은 플래시 장치에 있는 세포의 마모를 줄여 궁극적으로 수명을 증가시킨다.

결론

vSAN을 구축하는 것은 비교적 간단한 작업이지만, 조직별로 다를 수 있는 몇 가지 고려사항이 있다. vSAN 설계를 위해 다음 사항을 고려하기 바란다.

  • 호스트당 여러 개의 디스크 그룹을 사용하면 스토리지 성능을 크게 향상시키는 동시에 장애 도메인의 크기를 제한할 수 있으며 물리적 디바이스 장애로 인한 데이터 양을 줄일 수 있다.
  • 고장난 장치는 즉시 재구축한다. 변경할 이유가 없는 한, 오브젝트 수리 타이머는 60분을 유지해야 한다.
  • 캐시 계층에 높은 내구성 플래시 디바이스를 배치하여 가장 많은 양의 I/O를 처리하십시오. 이를 통해 용량 계층은 더 낮은 규격의 플래시 장치를 사용할 수 있다.
  • 각 디스크 그룹에 대해 별도의 스토리지 컨트롤러를 사용하면 vSAN 환경의 성능이 크게 향상될 수 있다.
  • 지원되는 PCIe 플래시 디바이스, SSD 및 NVMe 디바이스 목록은 VMware Compatibility Guide를 참조한다.

자료

정보를 바탕으로 vSAN 설계 결정을 내리는 데 도움이 되는 몇 가지 vSAN 리소스.


Revision #1
Created Fri, Jun 14, 2019 7:55 PM by ikhwan.koo
Updated Sat, Jun 20, 2020 4:28 AM by ikhwan.koo