- Authors

- Name
- Youngju Kim
- @fjvbn20031
들어가며
가상화(Virtualization)는 물리적 하드웨어 위에 여러 개의 독립된 가상 환경을 만드는 기술입니다. 하나의 서버에서 여러 운영체제를 동시에 실행할 수 있으며, 이를 통해 하드웨어 활용률을 극대화하고 인프라 운영 비용을 절감할 수 있습니다.
가상화가 중요한 이유
- 하드웨어 통합: 평균 CPU 활용률 15
20%인 물리 서버를 6080%까지 끌어올림 - 격리(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가 줄어들고 성능이 향상됩니다.