본문 바로가기

Virtualization/VMware vSAN

[VMware] vSAN Architecture Components

vSAN을 설계할 때 가장 중요한 부분 중 하나가 네트워크라고 할 수 있다.

VMware는 vSAN 구축 시 최소 10Gbps 네트워크 어댑터 및 점보 프레임을 권고하는 등 네트워크의 탄탄한 구성을 강조한다.

 

vSAN 솔루션 자체가 네트워크를 사용하여 호스트와 VM 디스크 I/O 간 통신을 수행하기 때문인데,

vSAN의 내부 서비스 구성 요소를 본다면 그 이유를 납득할 수 있다.

 

 

 

 


지난 vSAN 포스팅 중, LSOM에 대한 내용이 있었다. (smallrich.tistory.com/61)

아래 그림에 보이듯 vSAN에는 LSOM 뿐 아니라 클러스터를 구성하는 다양한 내부 서비스 요소가 있다.

 

 

vSAN 아키텍처 용어는 크게 5가지로 구분할 수 있다.

 

The Cluster-Level Object Manager (CLOM)
The Distributed Object Manager (DOM)
Local Log-Structured Object Manager (LSOM)
The Cluster Management, Monitoring, and Directory Service (CMMDS)
Reliable Datagram Transport (RDT)

 

해당 서비스들의 흐름은 주로 건축에 비유된다.
건축가(CLOM) - 계약자(DOM) - 작업자(LSOM) - 관리자(CMMDS) 그리고 건축재를 배달하는 트럭(RDT).

 

아래는 각 서비스에 대한 상세 역할 및 내용이다.

 

 

 

 

01

The Cluster-Level Object Manager (CLOM) / 건축가
CLOM은 vSAN 클러스터의 각 ESXi 호스트에 데몬으로 존재한다.

/etc/init.d/clomd

/var/run/log/clomd.log

* 데이터 경로에 대한 작업을 트리거하지만, 실제로 Read/Write 작업을 수행하지는 않음

 

- Object 생성 시 리소스 충분 여부 확인 (Fault Domain, Disk Groups, Free Space) 
- Object 준수 상태 모니터링 담당
- Object 생성 및 마이그레이션 정의
- vSAN 노드 간 균등한 부하 분산
- 사전 및 사후 Rebalancing 담당

모든 작업을 수행하면 DOM에게 객체를 생성하도록 지시한다.

 

 

 

 

 

02

The Distributed Object Manager (DOM) / 계약자
CLOM이 역할을 수행하면 DOM이 Object 가용성 및 초기 I/O 요청을 처리한다.
* DOM은 각 호스트의 커널 공간에 존재하며 데몬이 아님

 

- DOM은 클러스터 내 다른 호스트의 CLOM과 DOM으로부터 명령을 받는다.
- 모든 Object는 DOM 계층에 존재한다. (DOM 객체에 vdisk, snapshot, vmnamespace, vmswap, vmem 등 포함)
- vSAN 클러스터의 모든 DOM은 복구 중에 Object를 Resync한다.

DOM은 다음과 같은 세 가지 프로세스로 나뉜다.
- DOM Client: VM과 동일한 호스트에서 실행되며 vSCSI 계층과 통신한다. / 호스트 당 하나의 DOM Clinet
- DOM Owner: VM과 동일 혹은 다른 호스트에서 실행할 수 있으며, 객체에 대한 액세스를 관리한다. / Object 당 하나의 DOM Owner
- DOM Component Mgr: 각 호스트의 LSOM과 연결하는 DOM의 로컬 구성 요소이다.

이제 DOM은 LSOM에게 객체의 Component를 만들도록 명령을 보낸다.

 

 

 

 

 

03

Local Log-Structured Object Manager (LSOM) / 작업자
LSOM은 I/O를 처리하고 로컬 디스크에 상주하는 Component의 일관성을 보장한다.
모든 호스트의 Disk Group 당 하나의 LSOM 프로세스가 있으며, 모든 Component는 LSOM 계층에 있다.
* LSOM 또한 호스트의 커널 공간에 존재하며, 데몬이 없다. (드라이브 계층과 상호작용하여 실 작업 수행)

 

- DOM의 지시에 따라 Local Compoentn를 생성
- Read Write 버퍼링을 제공
- vSAN 데이터스토어에 대한 암호화 프로세스를 수행
- vSAN 데이터스토어 및 네트워크 디바이스의 health 상태 보고
- 실패한 디바이스에 대해 I/O Retry
- SSD 및 HDD 디바이스와 직접 상호작용
- vSAN 노드 부팅 시 SSD 로그 복구

 

 

 

 

 

04

The Cluster Management, Monitoring, and Directory Service (CMMDS) / 관리자
CMMDS는 개체, 호스트, 디스크, 네트워크 인터페이스, 정책, 이름 등의 모든 vSAN 인벤토리를 처리한다.

- CLOM 및 DOM에게 토폴로지 및 Object 구성 정보 제공
- Object의 소유자 선택
- 호스트, 네트워크, 디바이스와 같은 모든 클러스터 항목의 인벤토리를 작성
- In-memory database 정책 관련 정보와 같은 Object의 metadata 정보를 저장한다.
- 클러스터의 역할 (마스터, 백업, 에이전트) 정의

 

 

 

 

 

05

Reliable Datagram Transport (RDT) / 배달 트럭
RDT는 vSAN 트래픽 전송을 위한 네트워크 프로토콜이다.
CMMDS로부터 link 상태를 확인하여 데이터 전송(통신) 지연을 최소화한다.

 

 

 

 

 

 


 

추가로, vSAN에 참여하는 모든 노드는 각자의 역할이 있다.
CMMDS를 통해 선거를 수행하여 클러스터링 정보를 업데이트하는 방식인데,
통신이나 업데이트가 불가능할 경우에는 상황에 따라 역할을 재정의한다. 이 부분은 vSphere HA를 떠올려도 좋을 것 같다 ㅎ

Master role
클러스터 내 Master role의 호스트가 하나 존재.
마스터 역할을 가진 하나의 호스트는 클러스터 내 다른 모든 호스트로부터 모든 CMMDS 업데이트를 받음

Backup role
백업 역할이 있는 호스트는 현재 마스터가 실패할 경우, 마스터의 역할을 맡음
일반적으로 하나의 호스트만 Backup role로 존재.

Agent role
상황에 따라 마스터 혹은 백업의 역할을 맡을 수 있음.
4개 이상의 호스트에서 2개 이상의 호스트가 Agent role로 존재.

 

 


 

vSAN 내부 아키텍처에 대한 공식 자료는 2019년이 마지막인 것으로 보인다.

 

하지만 vSAN 7.0의 네트워크 디자인 공식 문서에는 해당 용어에 대해 동일하게 기재되어 있어

여전히 개념/구조는 동일한 것 같고, 이러나저러나 vSAN 내부 원리를 참고해두면 나쁘지 않을 것 같다.

 

 

 

 

참고 URL

vSAN Network 용어 (7.0 기준) : docs.vmware.com/kr/VMware-vSphere/7.0/vsan-701-network-design-guide.pdf

vSAN I/O Flow (6.7 기준) : livefire.solutions/vsan/vsan-a-glance-behind-the-curtain/

vSAN Architecture 문서 (6.2 기준) : download3.vmware.com/vcat/vmw-vcloud-architecture-toolkit-spv1-webworks/index.html#page/Storage%2520and%2520Availability%2FArchitecting%2520VMware%2520vSAN%25206.2%2FArchitecting%2520Virtual%2520SAN%25206.2.2.009.html

해외 블로그 : www.altaro.com/vmware/vsan-architecture-components/