들어가며
가상화(Virtualization)는 물리적 하드웨어 위에 여러 개의 독립된 가상 환경을 만드는 기술입니다. 하나의 서버에서 여러 운영체제를 동시에 실행할 수 있으며, 이를 통해 하드웨어 활용률을 극대화하고 인프라 운영 비용을 절감할 수 있습니다.
가상화가 중요한 이유
- **하드웨어 통합**: 평균 CPU 활용률 15~20%인 물리 서버를 60~80%까지 끌어올림
- **격리(Isolation)**: 각 VM은 독립된 커널, 파일 시스템, 네트워크 스택을 보유
- **유연한 프로비저닝**: 수 분 내에 새 서버 환경 배포 가능
- **스냅샷 및 마이그레이션**: 장애 복구, 무중단 이전이 용이
- **클라우드 컴퓨팅의 기반**: AWS, Azure, GCP 모두 가상화 위에서 작동
하이퍼바이저란?
하이퍼바이저(Hypervisor)는 가상 머신(VM)을 생성하고 관리하는 소프트웨어 계층입니다. VMM(Virtual Machine Monitor)이라고도 부릅니다. 물리적 자원(CPU, 메모리, 스토리지, 네트워크)을 추상화하여 각 VM에 분배합니다.
Type 1 하이퍼바이저 (Bare-Metal)
Type 1 하이퍼바이저는 하드웨어 위에 직접 설치됩니다. 호스트 OS 없이 동작하므로 오버헤드가 적고 성능이 우수합니다.
+-------------------------------------------+
| VM 1 | VM 2 | VM 3 |
| (Ubuntu) | (Windows) | (CentOS) |
+-------------------------------------------+
| Type 1 Hypervisor |
| (ESXi / Hyper-V / Xen) |
+-------------------------------------------+
| Physical Hardware |
| (CPU, RAM, Storage, NIC) |
+-------------------------------------------+
**대표적인 Type 1 하이퍼바이저:**
| 하이퍼바이저 | 개발사 | 특징 |
| ----------------- | ----------------- | ------------------------------------- |
| VMware ESXi | VMware(Broadcom) | 엔터프라이즈 표준, vSphere 에코시스템 |
| Microsoft Hyper-V | Microsoft | Windows Server에 내장, AD 통합 |
| Xen | Linux Foundation | 반가상화 선구자, AWS 초기 기반 |
| KVM | 오픈소스(Red Hat) | Linux 커널 모듈, QEMU와 결합 |
Type 2 하이퍼바이저 (Hosted)
Type 2 하이퍼바이저는 호스트 운영체제 위에서 일반 애플리케이션처럼 실행됩니다.
+-------------------------------------------+
| VM 1 | VM 2 | VM 3 |
| (Ubuntu) | (Windows) | (Fedora) |
+-------------------------------------------+
| Type 2 Hypervisor |
| (VirtualBox / VMware Workstation) |
+-------------------------------------------+
| Host OS (Windows/macOS/Linux) |
+-------------------------------------------+
| Physical Hardware |
| (CPU, RAM, Storage, NIC) |
+-------------------------------------------+
**대표적인 Type 2 하이퍼바이저:**
| 하이퍼바이저 | 개발사 | 특징 |
| ------------------ | ---------------- | ------------------------------ |
| Oracle VirtualBox | Oracle | 오픈소스, 크로스플랫폼, 무료 |
| VMware Workstation | VMware(Broadcom) | 프로페셔널 데스크톱 가상화 |
| VMware Fusion | VMware(Broadcom) | macOS 전용, Apple Silicon 지원 |
| Parallels Desktop | Parallels | macOS 최적화, 뛰어난 통합 |
KVM: 하이브리드 접근
KVM(Kernel-based Virtual Machine)은 독특한 위치를 차지합니다. Linux 커널 모듈로 동작하여 Linux 자체를 Type 1 하이퍼바이저로 변환합니다.
+-------------------------------------------+
| VM 1 | VM 2 | VM 3 |
| (Ubuntu) | (Windows) | (Fedora) |
+-------------------------------------------+
| QEMU (Device Emulation / Management) |
+-------------------------------------------+
| Linux Kernel + KVM Module (Type 1-like) |
+-------------------------------------------+
| Physical Hardware |
| (CPU + VT-x/AMD-V, RAM, Storage, NIC) |
+-------------------------------------------+
- `kvm.ko` 모듈이 CPU의 하드웨어 가상화 확장(VT-x/AMD-V)을 직접 활용
- 게스트 CPU 명령은 하드웨어에서 직접 실행 (near-native 성능)
- Linux 커널이 프로세스 스케줄링, 메모리 관리, I/O를 담당
- QEMU가 디바이스 에뮬레이션과 VM 관리를 제공
- 기술적으로는 Type 1이지만 완전한 Linux OS 내에서 동작하므로 "하이브리드"로 분류
가상화 기법 비교
전가상화 (Full Virtualization)
전가상화에서는 게스트 OS를 수정 없이 그대로 실행합니다. 하이퍼바이저가 게스트의 특권 명령(privileged instructions)을 가로채서 변환합니다.
**바이너리 변환(Binary Translation) 방식:**
Guest OS (Ring 1에서 실행)
|
v 특권 명령 실행 시도
|
Hypervisor (Ring 0)가 트랩
|
v 안전한 명령으로 변환 후 실행
|
Physical Hardware
- 게스트 OS 수정 불필요 (Windows, Linux 등 모두 지원)
- 바이너리 변환으로 인한 성능 오버헤드 존재
- VMware의 초기 접근 방식
반가상화 (Paravirtualization)
반가상화에서는 게스트 OS가 가상화 환경에서 실행됨을 인지합니다. 특권 명령 대신 하이퍼콜(Hypercall)을 사용하여 하이퍼바이저에 직접 요청합니다.
Guest OS (수정됨 - Hypercall 인터페이스 포함)
|
v hypercall 호출 (trap 대신 직접 통신)
|
Hypervisor (요청 처리)
|
v
Physical Hardware
- 게스트 OS 커널 수정이 필요 (Linux 가능, 일반 Windows 불가)
- 오버헤드가 적어 전가상화보다 성능이 우수
- Xen의 초기 방식, VirtIO 드라이버도 반가상화 개념을 활용
- VirtIO는 네트워크, 스토리지 등 I/O 디바이스에 대한 반가상화 표준
하드웨어 지원 가상화 (Hardware-Assisted Virtualization)
2005~2006년 Intel과 AMD가 CPU 수준에서 가상화를 지원하기 시작했습니다.
**주요 기술:**
- **Intel VT-x (2005)**: VMX root/non-root 모드 도입
- **AMD-V (2006)**: SVM(Secure Virtual Machine) 확장
- **Ring -1 개념**: 하이퍼바이저 전용 특권 레벨 추가
- **VT-d / AMD-Vi**: IOMMU 기반 DMA 리매핑, 디바이스 패스스루 지원
- **EPT / NPT**: 확장 페이지 테이블로 메모리 가상화 하드웨어 가속
+--------------------------------------------------+
| Guest OS (Ring 3: User, Ring 0: Kernel) |
| --> VMX non-root mode에서 실행 |
+--------------------------------------------------+
| Hypervisor (Ring -1 / VMX root mode) |
| --> VM Exit 시에만 개입 |
+--------------------------------------------------+
| Hardware (VT-x/AMD-V, EPT/NPT, VT-d/AMD-Vi) |
+--------------------------------------------------+
- 게스트 OS 수정 불필요 + 네이티브에 가까운 성능
- VM Exit 빈도에 따라 성능 차이 발생
- 현대 모든 x86 가상화의 기반 기술
세 가지 가상화 기법 비교표
| 항목 | 전가상화 | 반가상화 | HW 지원 가상화 |
| -------------- | -------------------- | ----------------- | ------------------- |
| 게스트 OS 수정 | 불필요 | 필요 | 불필요 |
| CPU 오버헤드 | 높음 (바이너리 변환) | 중간 (하이퍼콜) | 낮음 (HW 트랩) |
| I/O 성능 | 에뮬레이션으로 느림 | 하이퍼콜로 빠름 | VirtIO 결합 시 최적 |
| Windows 지원 | 가능 | 커널 수정 어려움 | 가능 |
| 대표 기술 | VMware BT | Xen PV, VirtIO | VT-x, AMD-V |
| 현재 사용 | 레거시 | I/O 최적화에 활용 | 주류 방식 |
실습: KVM 기반 가상화 확인
CPU가 가상화를 지원하는지 확인
Intel VT-x의 경우 vmx, AMD-V의 경우 svm 플래그를 확인
grep -E '(vmx|svm)' /proc/cpuinfo | head -1
KVM 모듈 로드 확인
lsmod | grep kvm
출력 예시:
kvm_intel 368640 0
kvm 1028096 1 kvm_intel
libvirt를 통한 VM 생성 예시
virt-install \
--name test-vm \
--ram 2048 \
--vcpus 2 \
--disk size=20 \
--os-variant ubuntu22.04 \
--cdrom /path/to/ubuntu-22.04.iso
CPU 특권 레벨(Ring) 구조
[하드웨어 가상화 이전] [하드웨어 가상화 이후]
Ring 3: 사용자 앱 Ring 3: 사용자 앱
Ring 2: (미사용) Ring 2: (미사용)
Ring 1: (Guest OS - 전가상화) Ring 1: (미사용)
Ring 0: Hypervisor Ring 0: Guest OS (non-root)
Ring -1: Hypervisor (VMX root)
하드웨어 가상화가 도입되면서 게스트 OS가 Ring 0에서 정상적으로 동작하면서도 하이퍼바이저가 더 높은 특권 수준(Ring -1)에서 제어할 수 있게 되었습니다.
VM Exit와 성능
하드웨어 가상화에서 게스트가 특정 작업을 수행하면 CPU가 VMX non-root에서 root 모드로 전환됩니다. 이를 VM Exit라 합니다.
**VM Exit가 발생하는 주요 상황:**
- I/O 포트 접근
- 특정 MSR(Model-Specific Register) 접근
- 인터럽트 처리
- 페이지 폴트 (EPT 미사용 시)
- CPUID 명령 실행
VM Exit는 수백~수천 CPU 사이클이 소요되므로 빈도를 줄이는 것이 성능의 핵심입니다. VirtIO와 같은 반가상화 드라이버가 I/O 경로에서 VM Exit를 줄여줍니다.
[VM Exit 처리 흐름]
Guest 실행 (non-root)
|
v 민감한 명령 실행
|
VM Exit (non-root -> root 전환, ~수백 사이클)
|
v Hypervisor가 명령 처리
|
VM Entry (root -> non-root 전환)
|
v Guest 실행 재개
정리
| 분류 기준 | Type 1 | Type 2 |
| ----------- | --------------------- | ------------------------------ |
| 설치 위치 | 하드웨어 직접 | 호스트 OS 위 |
| 성능 | 높음 | 중간 |
| 주 용도 | 서버 가상화, 클라우드 | 개발, 테스트 |
| 관리 복잡도 | 높음 | 낮음 |
| 대표 제품 | ESXi, Hyper-V, KVM | VirtualBox, VMware Workstation |
가상화는 현대 클라우드 인프라의 근간입니다. Type 1 하이퍼바이저는 프로덕션 환경에서, Type 2는 데스크톱 환경에서 각각의 역할을 합니다. 하드웨어 가상화 지원(VT-x/AMD-V)의 등장으로 성능 오버헤드가 극적으로 줄어들어 현재의 클라우드 컴퓨팅 시대가 가능해졌습니다.
**Q1.** Type 1 하이퍼바이저와 Type 2 하이퍼바이저의 가장 큰 차이점은 무엇인가요?
Type 1은 하드웨어 위에 직접 설치되어 호스트 OS가 없으며, Type 2는 기존 호스트 OS 위에서 애플리케이션으로 실행됩니다. Type 1이 오버헤드가 적어 프로덕션 환경에 적합합니다.
**Q2.** KVM이 "하이브리드"로 분류되는 이유는 무엇인가요?
KVM은 Linux 커널 모듈로서 Linux 자체를 Type 1 하이퍼바이저로 변환하지만, 동시에 완전한 Linux OS 환경 내에서 동작합니다. 따라서 Type 1의 성능과 Type 2의 편의성을 모두 갖습니다.
**Q3.** 반가상화에서 사용하는 "하이퍼콜"이란 무엇인가요?
하이퍼콜은 게스트 OS가 하이퍼바이저에 직접 서비스를 요청하는 인터페이스입니다. 시스템 콜이 커널에 요청하는 것과 유사하게, 하이퍼콜은 하이퍼바이저에 요청합니다. 트랩 방식보다 오버헤드가 적습니다.
**Q4.** Intel VT-x의 "Ring -1"이 해결하는 문제는 무엇인가요?
기존에는 게스트 OS(Ring 0)와 하이퍼바이저(Ring 0)가 같은 특권 레벨에서 충돌했습니다. Ring -1 (VMX root mode)을 도입하여 하이퍼바이저가 더 높은 특권에서 동작하고, 게스트 OS는 Ring 0에서 정상 실행됩니다.
**Q5.** VirtIO가 성능을 향상시키는 원리는 무엇인가요?
VirtIO는 I/O 디바이스(네트워크, 스토리지)에 대한 반가상화 표준으로, 게스트 OS가 가상화 환경을 인식하고 최적화된 경로로 하이퍼바이저와 통신합니다. 이를 통해 전체 하드웨어 에뮬레이션보다 VM Exit가 줄어들고 성능이 향상됩니다.
현재 단락 (1/170)
가상화(Virtualization)는 물리적 하드웨어 위에 여러 개의 독립된 가상 환경을 만드는 기술입니다. 하나의 서버에서 여러 운영체제를 동시에 실행할 수 있으며, 이를 통해 ...