Skip to main content

ESXi Architecture

VMware의 심장 — 독자 마이크로커널 VMkernel의 내부 구조와 동작 원리


📌 이 글의 목적

ESXi는 VMware vSphere의 핵심 하이퍼바이저임. "VM을 실행한다"는 단순한 역할 이면에 VMkernel이라는 독자 마이크로커널이 CPU/메모리/I/O를 어떻게 관리하는지를 이해하면 성능 분석, 트러블슈팅, 아키텍처 비교의 기반이 됨.

이 글을 읽고 나면:

  • VMkernel의 마이크로커널 설계와 Linux 커널과의 구조적 차이를 설명할 수 있음
  • VMM/VMX 프로세스가 VM 실행에서 각각 어떤 역할을 하는지 이해할 수 있음
  • ESXi의 부팅 과정과 Boot Bank 구조를 이해할 수 있음
  • VIB 패키지와 HCL 기반 드라이버 모델을 설명할 수 있음
  • KVM/QEMU 아키텍처와의 구조적 차이를 비교할 수 있음

1. VMkernel 아키텍처

1.1 VMkernel이란

VMkernel은 VMware가 자체 개발한 POSIX 호환 마이크로커널임. Linux 커널이 아니며, 범용 OS도 아님. 가상화에 최적화된 전용 커널임.

1.2 마이크로커널 설계

항목VMkernel (ESXi)Linux 커널 (Proxmox)
커널 유형마이크로커널모놀리식 커널
설계 목적가상화 전용범용 (서버/데스크톱/임베디드)
설치 크기~150MB수 GB (배포판 포함)
드라이버VIB 기반 (HCL 제한)커널 모듈 (수만 개)
공격 표면좁음 (최소 서비스)넓음 (범용 OS 서비스 전체)
유연성제한적 (VMware 생태계)높음 (Linux 생태계 전체)
패키지 관리VIB/이미지 프로파일apt/yum/dnf
BusyBox 기반 (제한적)풀 Bash/Zsh

핵심 트레이드오프:

  • VMkernel은 가상화에 필요한 것만 포함하므로 오버헤드가 최소이고 보안 표면이 좁음
  • 대신 범용 Linux처럼 아무 소프트웨어나 설치할 수 없고, HCL에 있는 하드웨어만 지원

1.3 VMkernel의 핵심 서브시스템

서브시스템역할KVM 대응
CPU 스케줄러vCPU를 물리 코어에 매핑/스케줄링Linux CFS
메모리 관리자VM 메모리 할당, TPS, Ballooning, Compression, SwapLinux mm + KSM
I/O 스택SCSI, NVMe, 네트워크 I/O 처리Linux 블록/네트워크 스택
VMFS클러스터 파일시스템LVM/ZFS/Ceph
네트워크 스택vSwitch, dvSwitch, VMkernel 포트Linux Bridge, OVS
디바이스 드라이버HW 추상화 (VIB 형태)Linux 커널 모듈 (.ko)

2. VMM과 VMX — VM 실행 구조

ESXi에서 VM 하나를 실행하면 두 개의 핵심 컴포넌트가 관여함.

2.1 VMM (Virtual Machine Monitor)

VMM은 VMkernel 내부(커널 공간) 에서 동작하며:

  • CPU 가상화를 직접 수행함 (VT-x의 VM Entry/Exit 처리)
  • 메모리 가상화(EPT)를 관리함
  • 인터럽트를 게스트에 전달함 (APICv)
  • 성능에 가장 민감한 경로를 커널 수준에서 처리함

2.2 VMX 프로세스

VMX는 User World(사용자 공간) 에서 동작하는 프로세스임.

  • VM별로 하나의 VMX 프로세스가 존재함
  • I/O 에뮬레이션을 담당함 (가상 디스크, 네트워크, USB 등)
  • 콘솔 접근(VNC/MKS)을 처리함
  • 관리 작업(스냅샷, 마이그레이션 등)을 조율함

2.3 KVM/QEMU와의 대응

ESXiKVM/QEMU설명
VMMKVM 모듈커널 공간에서 CPU/메모리 가상화 수행
VMXQEMU 프로세스유저 공간에서 I/O 에뮬레이션 수행
VMM + VMXQEMU + KVM둘 다 커널/유저 공간 분업 구조

구조적으로 유사하지만 핵심 차이가 있음:

  • ESXi: VMM이 VMkernel 전용 코드. 범용 OS 기능 없이 가상화만 수행
  • KVM: Linux 커널 모듈. 범용 OS 위에서 동작하므로 Linux의 모든 기능을 활용 가능
  • QEMU vs VMX: QEMU는 오픈소스로 커뮤니티가 장치 모델을 확장. VMX는 VMware 내부 구현

3. User World

3.1 User World란

User World는 ESXi에서 유저 공간 프로세스가 실행되는 환경임. Linux의 User Space에 대응하지만, 범용 OS 수준의 기능은 제공하지 않음.

프로세스역할
hostd호스트 관리 데몬. Host Client(웹 UI)의 백엔드
vpxavCenter Agent. vCenter와 통신하여 명령을 수신/실행
VMXVM별 I/O 에뮬레이션 프로세스
vobdVMware Observation 데몬. 이벤트/알림 관리
fdmFault Domain Manager. vSphere HA 에이전트
DCUIDirect Console UI. 물리 콘솔에서 보이는 설정 화면
SSH 데몬기본 비활성화. 디버깅/트러블슈팅 시 활성화

3.2 CIM(Common Information Model) 프로바이더

ESXi는 하드웨어 모니터링을 위해 CIM/WBEM 표준을 사용함. CIM 프로바이더가 User World에서 실행되어 서버 벤더(Dell, HP, Lenovo 등)의 하드웨어 상태를 수집함.


4. 부팅 구조

4.1 Boot Bank

ESXi는 이중화된 부팅 파티션(Boot Bank) 구조를 사용함.

파티션역할
Boot Bank 0/1ESXi 이미지 (이중화). 업데이트 시 비활성 뱅크에 새 이미지 설치, 부팅 시 전환
State Partition호스트 설정 (/etc/vmware/ 등). 재부팅해도 유지됨
Scratch Partition로그 저장. 없으면 RAM에 저장되어 재부팅 시 사라짐
Coredump Partition커널 패닉 시 덤프 저장
VMFS Datastore나머지 공간. VM 디스크 저장용

Boot Bank의 장점:

  • 업데이트 실패 시 이전 뱅크로 자동 롤백 가능
  • "업데이트가 잘못되어 부팅이 안 된다"는 상황을 방지

4.2 부팅 과정

4.3 부팅 모드

모드설명용도
Stateful (기본)로컬 디스크에서 부팅. 설정이 디스크에 저장됨일반적인 서버
StatelessPXE/네트워크 부팅. 이미지를 매번 다운로드대규모 클러스터, 블레이드
Auto DeployvCenter에서 이미지/호스트 프로파일을 푸시하여 자동 배포수백 대 규모 배포

💡 Auto Deploy는 대규모 환경에서 강력함. 호스트가 부팅되면 vCenter에서 이미지와 설정을 자동으로 내려받아 설치함. Proxmox에는 이에 대응하는 기능이 없으며, PXE + Ansible 조합으로 유사하게 구현해야 함.


5. VIB과 이미지 프로파일

5.1 VIB (vSphere Installation Bundle)

VIB는 ESXi의 소프트웨어 패키지 단위임. Linux의 .deb/.rpm에 대응.

VIB 구조:
├── payload/ # 실제 파일 (드라이버, 설정 등)
├── descriptor.xml # 메타데이터 (이름, 버전, 의존성)
└── sig # 디지털 서명
VIB 수준설명서명 주체
VMwareCertifiedVMware가 직접 인증VMware
VMwareAccepted파트너가 개발, VMware가 검증파트너 + VMware 검증
PartnerSupported파트너가 개발/지원파트너
CommunitySupported커뮤니티/개인없을 수 있음
# ESXi에서 VIB 관리 (esxcli)
esxcli software vib list # 설치된 VIB 목록
esxcli software vib install -v <vib-url> # VIB 설치
esxcli software vib remove -n <vib-name> # VIB 제거
esxcli software profile get # 현재 이미지 프로파일

5.2 이미지 프로파일

이미지 프로파일은 VIB의 묶음임. ESXi 설치 ISO가 곧 이미지 프로파일.

Custom ISO: 서버 벤더(Dell, HP, Lenovo)는 자사 하드웨어에 맞는 드라이버 VIB를 포함한 커스텀 ISO를 제공함. 기본 VMware ISO보다 벤더 커스텀 ISO를 사용하는 것이 권장됨.

5.3 HCL (Hardware Compatibility List)

ESXi는 HCL에 등록된 하드웨어만 공식 지원함.

항목ESXiProxmox (Linux)
지원 드라이버 수수백 (HCL 기반)수만 (커널 내장)
새 하드웨어 지원VIB 업데이트 필요커널 업데이트로 자동
비 HCL 하드웨어동작 불가능하거나 지원 거부대부분 동작
드라이버 품질높음 (인증 절차)다양함 (커뮤니티 포함)

⚠️ ESXi 설치 전 반드시 HCL 확인. 특히 NIC와 스토리지 컨트롤러. HCL에 없으면 설치 자체가 안 되거나, 설치되어도 기술 지원을 받을 수 없음. VMware HCL


6. 관리 접근 경로

6.1 접근 경로 비교

접근 경로용도상시 사용
DCUI초기 설정, 네트워크 복구, 비밀번호 리셋
SSH디버깅, esxcli 명령, 로그 확인❌ (필요 시만)
Host Client단일 호스트 관리 (vCenter 없을 때)⚠️
vSphere Client전체 인프라 관리 (vCenter 경유)
REST/SOAP API자동화, 스크립팅
PowerCLIPowerShell 기반 관리

6.2 DCUI (Direct Console User Interface)

물리 서버의 모니터에 표시되는 텍스트 기반 관리 화면.

기능설명
네트워크 설정관리 네트워크 IP/게이트웨이/DNS 변경
재시작관리 에이전트(hostd) 또는 전체 호스트 재시작
트러블슈팅ESXi Shell 활성화, SSH 활성화
비밀번호root 비밀번호 리셋
로그 보기시스템 로그 확인

6.3 Lockdown Mode

Lockdown Mode를 활성화하면 DCUI와 SSH를 통한 직접 접근이 차단되고, vCenter를 통해서만 호스트를 관리할 수 있음.

모드DCUISSHvCenter
비활성화 (기본)✅ (활성화 시)
Normal Lockdown
Strict Lockdown✅ (Exception User만)

💡 프로덕션 환경에서는 Normal Lockdown Mode 활성화가 권장됨. 긴급 시 DCUI 접근이 필요하면 vCenter에서 일시적으로 해제 가능.


7. ESXi 로그 구조

ESXi의 주요 로그 파일:

로그경로내용
vmkernel.log/var/log/vmkernel.logVMkernel 코어 로그 (가장 중요)
hostd.log/var/log/hostd.log호스트 관리 데몬 로그
vpxa.log/var/log/vpxa.logvCenter 에이전트 로그
vobd.log/var/log/vobd.log이벤트/알림
fdm.log/var/log/fdm.logHA 에이전트 로그
vmware.logVM 디렉토리 내VM별 로그
esxupdate.log/var/log/esxupdate.log업데이트/패치 로그
# ESXi Shell에서 로그 확인
tail -f /var/log/vmkernel.log

# 특정 VM 로그
tail -f /vmfs/volumes/datastore1/my-vm/vmware.log

# 로그 번들 생성 (기술 지원용)
vm-support

8. KVM/Proxmox와의 아키텍처 비교

8.1 구조 비교

8.2 상세 비교

항목ESXi (VMkernel)Proxmox (Linux + KVM)
커널VMkernel (전용)Linux (범용) + KVM 모듈
VM 실행VMM(커널) + VMX(유저)KVM(커널) + QEMU(유저)
CPU 가상화VT-x/AMD-V (동일)VT-x/AMD-V (동일)
메모리 가상화EPT/NPT (동일)EPT/NPT (동일)
I/O 가상화VMX + PVSCSI/VMXNET3QEMU + VirtIO
드라이버VIB (HCL 기반, 수백 개)Linux 커널 모듈 (수만 개)
설치 크기~150MB~2GB (Debian + Proxmox)
부팅 구조Boot Bank (이중화)표준 Linux 부팅
패키지 관리esxcli + VIBapt + dpkg
BusyBox (제한적)풀 Bash
관리 경로DCUI, Host Client, vCenterSSH, 웹 UI (노드 내장)
자동 배포Auto DeployPXE + Ansible
보안Lockdown Mode, Secure BootAppArmor, SELinux
오버헤드최소 (전용 커널)약간 더 큼 (범용 커널)

8.3 핵심 트레이드오프 정리

ESXi의 장점:

  • 전용 커널이라 오버헤드가 최소임
  • 공격 표면이 좁아 보안 면에서 유리함
  • Boot Bank 이중화로 업데이트 안전성이 높음
  • Auto Deploy로 대규모 배포가 편리함

ESXi의 한계:

  • HCL에 없는 하드웨어는 사용 불가능
  • 디버깅/커스터마이즈가 제한적 (셸이 BusyBox 수준)
  • 오픈소스가 아니라 내부 동작을 확인할 수 없음
  • 독자 생태계에 종속됨

KVM/Proxmox의 장점:

  • Linux 생태계의 모든 드라이버/도구 활용 가능
  • 거의 모든 하드웨어에서 동작함
  • 오픈소스라 내부 동작을 확인하고 수정할 수 있음
  • 풀 셸/패키지 매니저로 자유로운 커스터마이즈

KVM/Proxmox의 한계:

  • 범용 커널이라 불필요한 서비스가 포함됨
  • 보안 표면이 넓음 (커널 취약점 영향 범위 큼)
  • Auto Deploy 같은 대규모 자동 배포 기능이 없음

💡 성능 차이는 거의 없음. CPU/메모리 가상화는 둘 다 동일한 하드웨어 가속(VT-x, EPT)을 사용함. I/O 성능도 PVSCSI/VMXNET3 vs VirtIO가 비슷한 수준. 실질적 차이는 관리 도구, 생태계, 라이선스에서 나옴.


정리

ESXi는 VMkernel이라는 가상화 전용 마이크로커널 위에 구축된 하이퍼바이저임.

핵심 포인트:

  • VMkernel — 전용 커널. Linux가 아님. 가상화에 최적화된 최소 커널
  • VMM + VMX — 커널(CPU/메모리 가상화) + 유저(I/O 에뮬레이션) 분업. KVM+QEMU와 동일한 패턴
  • Boot Bank — 이중화 부팅 파티션. 업데이트 실패 시 자동 롤백
  • VIB — ESXi의 패키지 단위. HCL 기반 드라이버 모델로 호환 하드웨어가 제한됨
  • Lockdown Mode — 직접 접근 차단. 프로덕션에서 권장되는 보안 설정

이 아키텍처를 이해하면 ESXi 트러블슈팅(로그 분석, VIB 관리), 보안 설정(Lockdown, Secure Boot), KVM과의 아키텍처 비교에 기반이 됨.


다음 글

→ #3 vCenter & 관리 아키텍처 — VCSA, SSO, RBAC, Enhanced Linked Mode


🔗 관련 문서


📝 참고 자료