OpenStack을 바로 살펴보기 전에, 먼저 그 토대가 되는 서버 가상화 구조부터 정리해보려고 한다!
가상 머신이 어떻게 생성되고, 하이퍼바이저가 어떤 역할을 수행하는지를 이해하면 OpenStack이 컴퓨팅 자원을 어떻게 제어하는지 훨씬 명확해질 것 같다는 ..ㅎㅎ
하나의 물리 서버 위에서 다수의 가상머신(VM)을 구동하도록 하는 핵심 소프트웨어 계층

| 구분 | Type 1 (Bare-metal / Native) | Type 2 (Hosted Hypervisor) |
|---|---|---|
| 구조 | 하드웨어 위에 직접 설치 | 기존 Host OS 위에 설치 |
| 장점 | 성능 우수 (VM 직접 제어), 오버헤드 적음 | 설치 간편, 개발·테스트 환경에 적합 |
| 단점 | 설치 복잡, 하드웨어 종속성 높음 | 성능 저하, Host OS 의존 (CPU 명령 처리) |
| 대표 예시 | VMware ESXi, Microsoft Hyper-V, Xen, KVM | VirtualBox, VMware Workstation, Parallels Desktop |
KVM은 Linux 커널에 통합된 커널 기반 Hypervisor이므로 구조적으로는 Type 1에 속한다. 하지만 일반적으로 Linux 위에서 동작하므로 “Type 2처럼 보이는 Type 1”이라고 표현되기도 한다.

Guest OS는 자신이 가상화된 환경임을 인식하지 못함
하드웨어 명령(Privileged Instruction)은 Binary Translation 과정으로 변환되어 하이퍼바이저가 대신 처리
Guest OS 수정 불필요하지만, 성능 오버헤드 존재
Guest OS가 자신이 가상화 환경임을 인지하고 Hypervisor와 직접 통신(Hyper Call)
OS 커널 수정이 필요하지만 오버헤드가 적고 고성능
초기 Xen Hypervisor에서 사용된 모델

과거에는 Binary Translation으로 인한 오버헤드가 문제였지만, 현대 CPU는 가상화 지원 명령어(VT-x, AMD-V)를 통해 이를 하드웨어 레벨에서 직접 처리한다.
x86 CPU는 권한 수준(Ring)을 0~3까지 구분하는데, 하이퍼바이저도 OS 커널처럼 Ring 0 권한이 필요하기 때문에 이미 Guest OS도 자신이 “커널”이라고 생각하므로 충돌이 발생
기존 Full Virtualization에서는 이를 소프트웨어적으로 번역했지만, VT-x/AMD-V는 새로운 권한 계층(Ring -1)을 도입해 이 문제를 해결함
| 구분 | Intel | AMD | 기능 |
|---|---|---|---|
| CPU | VT-x | AMD-V | 명령 변환 가속화 |
| Memory | EPT | RVI | 메모리 주소 변환 효율화 |
| I/O | VT-d | AMD-Vi | DMA 및 디바이스 직접 접근 |
| NIC | VT-c | NetQueue | 네트워크 패킷 가속 |
결과: Binary Translation 불필요 → Full Virtualization에서도 준가상화 수준의 고성능 달성
KVM(Kernel-based Virtual Machine)은 Linux 커널 모듈로 동작하며, QEMU는 사용자 공간에서 CPU 및 I/O를 에뮬레이션하는 역할을 수행한다.

kvm.ko (Kernel Module)
QEMU (User-space Emulator)
결합 방식
Linux OS 에는 이미 KVM(Type 1) 하이퍼바이저가 내장되어 있어, Linux 에서 VirtualBox 를 사용하면 VT-x 하드웨어 가상화를 점유 당해 VirtualBox 가 VT-x 기능을 사용하지 못하는 충돌이 발생한다.
오늘은 서버 가상화의 핵심 요소인 하이퍼바이저를 중심으로, 전가상화·반가상화의 차이와 하드웨어 가상화 지원, 그리고 KVM + QEMU 기반 Linux 가상화 구조를 정리했다.
서버 가상화를 이해했다면, 다음으로는 가상 머신들이 어떻게 서로 통신하고 외부와 연결되는지, 즉 네트워크 가상화를 살펴보려고 한다 ..!!