Hypervisor and Virtualization
Hypervisor Type 1/2, 가상화 방식(Full/Para/HVM), VM vs Container
🎯 가상화란?
가상화(Virtualization): 물리적 하드웨어 자원을 추상화하여 여러 가상 환경으로 분할하는 기술
필요한 이유:
- 하나의 서버에서 여러 OS/애플리케이션 실행
- 하드웨어 자원 효율적 활용 (서버 통합)
- 환경 격리 (보안, 테스트)
- 빠른 프로비저닝, 스냅샷, 마이그레이션
🔍 Hypervisor란?
Hypervisor (= VMM, Virtual Machine Monitor): 가상 머신을 생성하고 관리하는 소프트웨어
물리 하드웨어와 가상 머신 사이에서의 역할:
- CPU, 메모리, I/O 자원 가상화
- 각 VM이 독립된 하드웨어를 가진 것처럼 보이게 함
- VM 간 격리 보장
📊 Type 1 vs Type 2
하이퍼바이저는 어디에 위치하느냐에 따라 두 가지로 나뉨.
구조 비교
flowchart TB subgraph Type1["Type 1 (Bare-metal)"] direction TB T1VM["VM / VM / VM"] T1HV["Hypervisor"] T1HW["Hardware"] T1VM --> T1HV --> T1HW end subgraph Type2["Type 2 (Hosted)"] direction TB T2VM["VM / VM / VM"] T2HV["Hypervisor"] T2OS["Host OS"] T2HW["Hardware"] T2VM --> T2HV --> T2OS --> T2HW end
상세 비교
| 구분 | Type 1 (Bare-metal) | Type 2 (Hosted) |
|---|---|---|
| 위치 | 하드웨어 위에 직접 | Host OS 위 |
| 성능 | 높음 (오버헤드 적음) | 상대적으로 낮음 |
| 보안 | 높음 (공격 표면 적음) | Host OS 취약점 영향 |
| 설치 | 전용 설치 필요 | 일반 앱처럼 설치 |
| 용도 | 서버, 데이터센터, 프로덕션 | 개발, 테스트, 데스크탑 |
| 예시 | VMware ESXi, Hyper-V, Xen, KVM | VirtualBox, VMware Workstation, Parallels |
Type 1 (Bare-metal)
하드웨어 바로 위에서 실행되는 하이퍼바이저
- OS 없이 하이퍼바이저가 직접 하드웨어 제어
- 오버헤드가 적어 성능이 좋음
- 엔터프라이즈/클라우드 환경의 표준
주요 제품:
| 제품 | 개발사 | 특징 |
|---|---|---|
| VMware ESXi | VMware | 엔터프라이즈 시장 점유율 1위, vSphere 에코시스템 |
| Microsoft Hyper-V | Microsoft | Windows Server에 포함, Azure 기반 |
| Xen | Linux Foundation | AWS EC2 초기 기반, 오픈소스 |
| KVM | Red Hat/Linux | 리눅스 커널에 통합, 오픈소스 |
💡 KVM의 특이점: 리눅스 커널 모듈로 동작해서 “Linux가 곧 하이퍼바이저”가 됨. Type 1로 분류하지만 리눅스 위에서 돌아가니 Type 2처럼 보이기도 해서 논쟁이 있음.
Type 2 (Hosted)
일반 OS 위에서 애플리케이션으로 실행되는 하이퍼바이저
- Host OS가 하드웨어 관리, 하이퍼바이저는 그 위에서 동작
- 설치가 쉽고 기존 환경과 공존 가능
- Host OS를 거치므로 오버헤드 발생
주요 제품:
| 제품 | 개발사 | Host OS |
|---|---|---|
| VirtualBox | Oracle | Windows, macOS, Linux |
| VMware Workstation | VMware | Windows, Linux |
| VMware Fusion | VMware | macOS |
| Parallels Desktop | Parallels | macOS |
| QEMU | 오픈소스 | 다양함 (보통 KVM과 함께 사용) |
⚙️ 가상화 방식
CPU가 가상화를 어떻게 처리하느냐에 따른 분류임.
전가상화 (Full Virtualization)
Guest OS를 수정하지 않고 그대로 실행하는 방식
- Guest OS는 자신이 가상 환경인지 모름
- 하이퍼바이저가 하드웨어를 완전히 에뮬레이션
- 호환성 높음 (어떤 OS든 실행 가능)
방식:
- 바이너리 변환 (Binary Translation): 특권 명령어를 런타임에 변환 (느림)
- 하드웨어 지원 (Hardware-Assisted): CPU가 가상화 명령어 지원 (Intel VT-x, AMD-V)
예시: VMware ESXi, Microsoft Hyper-V, KVM (HVM 모드)
flowchart TB subgraph Full["전가상화 구조"] G["Guest OS (수정 없음)"] H["Hypervisor (에뮬레이션)"] HW["Hardware (VT-x/AMD-V)"] G --> H --> HW end
반가상화 (Paravirtualization)
Guest OS를 수정하여 하이퍼바이저와 직접 통신하는 방식
- Guest OS가 가상 환경임을 알고 하이퍼바이저 API(Hypercall) 사용
- 에뮬레이션 오버헤드 없어 성능 좋음
- Guest OS 수정 필요 → 제한적 (Linux는 가능, Windows는 어려움)
flowchart TB subgraph Para["반가상화 구조"] G["Guest OS (수정됨, Hypercall)"] H["Hypervisor"] HW["Hardware"] G -->|Hypercall| H --> HW end
예시: Xen (반가상화 모드), VirtIO (I/O 반가상화)
하드웨어 지원 가상화 (HVM)
CPU의 가상화 확장 기능 활용
- Intel VT-x, AMD-V
- 전가상화의 성능 문제를 하드웨어로 해결
- 현재 대부분의 가상화가 이 방식
확인 방법:
# Intel VT-x 지원 확인
grep -E 'vmx' /proc/cpuinfo
# AMD-V 지원 확인
grep -E 'svm' /proc/cpuinfo
# 둘 다
egrep -c '(vmx|svm)' /proc/cpuinfo # 0보다 크면 지원비교 정리
| 방식 | Guest OS 수정 | 성능 | 호환성 |
|---|---|---|---|
| 전가상화 (바이너리 변환) | 불필요 | 낮음 | 높음 |
| 전가상화 (HVM) | 불필요 | 높음 | 높음 |
| 반가상화 | 필요 | 높음 | 낮음 |
💡 현대 환경에서는 HVM + VirtIO(I/O 반가상화) 조합이 일반적임. CPU/메모리는 하드웨어 가상화, I/O는 반가상화로 성능 최적화.
🆚 VM vs Container
가상화 기술을 얘기할 때 컨테이너와 비교가 자주 나옴.
flowchart TB subgraph VM["Virtual Machine"] direction TB VA["App / App / App"] VB["Bins/Libs"] VC["Guest OS"] VD["Hypervisor"] VE["Host OS"] VF["Hardware"] VA --> VB --> VC --> VD --> VE --> VF end subgraph Container["Container"] direction TB CA["App / App / App"] CB["Bins/Libs"] CC["(커널 공유)"] CD["Container Engine"] CE["Host OS (Kernel)"] CF["Hardware"] CA --> CB --> CC --> CD --> CE --> CF end
| 구분 | Virtual Machine | Container |
|---|---|---|
| 격리 수준 | 강함 (OS 레벨) | 약함 (프로세스 레벨) |
| 오버헤드 | 큼 (각 VM마다 OS) | 작음 (커널 공유) |
| 시작 시간 | 분 단위 | 초 단위 |
| 이미지 크기 | GB 단위 | MB 단위 |
| 보안 | 높음 | 상대적으로 낮음 |
| 용도 | 이기종 OS, 강한 격리 필요 | 마이크로서비스, 빠른 배포 |
선택 기준:
- VM: 다른 OS 실행, 강한 보안 격리, 레거시 애플리케이션
- Container: 같은 OS, 빠른 스케일링, 클라우드 네이티브
🔗 관련 포스트
- Linux Fundamentals — 리눅스 기초
- Container Virtualization — 컨테이너 개념
- Proxmox VE Overview — KVM 기반 가상화 플랫폼