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, KVMVirtualBox, VMware Workstation, Parallels

Type 1 (Bare-metal)

하드웨어 바로 위에서 실행되는 하이퍼바이저

  • OS 없이 하이퍼바이저가 직접 하드웨어 제어
  • 오버헤드가 적어 성능이 좋음
  • 엔터프라이즈/클라우드 환경의 표준

주요 제품:

제품개발사특징
VMware ESXiVMware엔터프라이즈 시장 점유율 1위, vSphere 에코시스템
Microsoft Hyper-VMicrosoftWindows Server에 포함, Azure 기반
XenLinux FoundationAWS EC2 초기 기반, 오픈소스
KVMRed Hat/Linux리눅스 커널에 통합, 오픈소스

💡 KVM의 특이점: 리눅스 커널 모듈로 동작해서 “Linux가 곧 하이퍼바이저”가 됨. Type 1로 분류하지만 리눅스 위에서 돌아가니 Type 2처럼 보이기도 해서 논쟁이 있음.

Type 2 (Hosted)

일반 OS 위에서 애플리케이션으로 실행되는 하이퍼바이저

  • Host OS가 하드웨어 관리, 하이퍼바이저는 그 위에서 동작
  • 설치가 쉽고 기존 환경과 공존 가능
  • Host OS를 거치므로 오버헤드 발생

주요 제품:

제품개발사Host OS
VirtualBoxOracleWindows, macOS, Linux
VMware WorkstationVMwareWindows, Linux
VMware FusionVMwaremacOS
Parallels DesktopParallelsmacOS
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 MachineContainer
격리 수준강함 (OS 레벨)약함 (프로세스 레벨)
오버헤드큼 (각 VM마다 OS)작음 (커널 공유)
시작 시간분 단위초 단위
이미지 크기GB 단위MB 단위
보안높음상대적으로 낮음
용도이기종 OS, 강한 격리 필요마이크로서비스, 빠른 배포

선택 기준:

  • VM: 다른 OS 실행, 강한 보안 격리, 레거시 애플리케이션
  • Container: 같은 OS, 빠른 스케일링, 클라우드 네이티브

🔗 관련 포스트


🔗 참고 자료