Proxmox에서 VM을 만들면 그 아래에서 실제로는 무엇이 도는지 아시나요? KVM, QEMU, libvirt — 가상화의 3대 축입니다. 이 구조를 이해하면 Proxmox 설정 하나하나가 왜 그런지 보이기 시작합니다. 가상화의 실체를 정리합니다.
1. 하이퍼바이저 타입 — Type 1 vs Type 2
| Type 1 (베어메탈) | Type 2 (호스트형) | |
|---|---|---|
| 구조 | 하드웨어 위에 직접 | 일반 OS 위에 앱처럼 |
| 성능 | 높음 | 상대적으로 낮음 |
| 예시 | KVM, ESXi, Proxmox | VirtualBox, VMware Workstation |
Proxmox는 Type 1입니다. 정확히는 리눅스 커널 자체가 하이퍼바이저가 되는 KVM 방식이죠.
2. 3대 축 — KVM · QEMU · libvirt
- KVM (Kernel-based VM): 리눅스 커널 모듈. CPU의 하드웨어 가상화 기능(Intel VT-x/AMD-V)을 써서 VM을 네이티브에 가깝게 돌립니다. “가상화의 엔진”.
- QEMU: 에뮬레이터·디바이스 모델. 가상 디스크·네트워크카드·칩셋 등 “가상 하드웨어”를 제공합니다. KVM과 결합해
qemu-kvm으로 동작. - libvirt: 이들을 다루는 관리 API/데몬. Proxmox·virsh 같은 도구가 libvirt를 통해 VM을 제어합니다.
관리도구(Proxmox) → libvirt/QEMU → KVM(커널) → CPU 가상화(VT-x/AMD-V)
즉 KVM은 엔진, QEMU는 차체, libvirt는 운전대라고 보면 됩니다.
3. 전가상화 vs 반가상화(virtio)
가상 하드웨어를 “진짜 하드웨어처럼 완벽히 흉내”내면(전가상화) 호환성은 좋지만 느립니다. 그래서 나온 게 virtio(반가상화)입니다.
- virtio: “이건 가상 환경이야”를 게스트가 알고, 전용 드라이버로 훨씬 빠르게 디스크·네트워크를 처리.
- Proxmox에서 디스크를
VirtIO SCSI, 네트워크를virtio로 두는 이유가 성능입니다.
# Proxmox에서 VM 디스크/네트워크를 virtio로 (성능 최적)
qm set 100 --scsihw virtio-scsi-single
qm set 100 --net0 virtio,bridge=vmbr0
단, 윈도우 게스트는 virtio 드라이버를 따로 설치해줘야 인식합니다(리눅스는 대부분 기본 내장).
4. CPU 타입과 중첩 가상화
Proxmox의 VM CPU 타입도 이 맥락입니다.
kvm64(기본): 호환성 위주, CPU 기능 일부 감춤host: 물리 CPU 기능을 그대로 노출 → 성능↑, 중첩 가상화 가능
그래서 OpenStack 컴퓨트 노드처럼 “VM 안에서 또 VM”을 돌려야 하면 반드시 --cpu host를 줍니다. 이제 왜 그런지 이해되시죠?
5. 정리
Proxmox의 VM은 KVM(커널 엔진) + QEMU(가상 하드웨어) + libvirt/관리도구의 합작입니다. 성능의 핵심은 virtio, 중첩 가상화의 핵심은 CPU host. 이 구조를 알고 나면 Proxmox의 디스크·네트워크·CPU 옵션이 더 이상 주술이 아니라 논리로 보입니다.