[TIL] Server Virtualization

lifeisgenie·2025년 10월 27일

오늘의 끄적끄적..

목록 보기
2/3

OpenStack을 바로 살펴보기 전에, 먼저 그 토대가 되는 서버 가상화 구조부터 정리해보려고 한다!

가상 머신이 어떻게 생성되고, 하이퍼바이저가 어떤 역할을 수행하는지를 이해하면 OpenStack이 컴퓨팅 자원을 어떻게 제어하는지 훨씬 명확해질 것 같다는 ..ㅎㅎ


서버 가상화 구조

Hypervisor

하나의 물리 서버 위에서 다수의 가상머신(VM)을 구동하도록 하는 핵심 소프트웨어 계층

  • 하드웨어 자원을 VM 단위로 분리(virtualization)하여 독립된 OS 환경을 제공한다.

구분Type 1 (Bare-metal / Native)Type 2 (Hosted Hypervisor)
구조하드웨어 위에 직접 설치기존 Host OS 위에 설치
장점성능 우수 (VM 직접 제어), 오버헤드 적음설치 간편, 개발·테스트 환경에 적합
단점설치 복잡, 하드웨어 종속성 높음성능 저하, Host OS 의존 (CPU 명령 처리)
대표 예시VMware ESXi, Microsoft Hyper-V, Xen, KVMVirtualBox, VMware Workstation, Parallels Desktop

KVM은 Type 1인가 Type 2인가?

KVM은 Linux 커널에 통합된 커널 기반 Hypervisor이므로 구조적으로는 Type 1에 속한다. 하지만 일반적으로 Linux 위에서 동작하므로 “Type 2처럼 보이는 Type 1”이라고 표현되기도 한다.

Full vs. Para Virtualization

Full Virtualization(전가상화)

  • Guest OS는 자신이 가상화된 환경임을 인식하지 못함

  • 하드웨어 명령(Privileged Instruction)은 Binary Translation 과정으로 변환되어 하이퍼바이저가 대신 처리

    • 명령어 변환(Translation)에 오버헤드 → 성능 저하
    • CPU/메모리 자원 낭비
    • Guest OS마다 변환 규칙이 달라 호환성 유지 어려움
  • Guest OS 수정 불필요하지만, 성능 오버헤드 존재

Para Virtualization(반가상화)

  • Guest OS가 자신이 가상화 환경임을 인지하고 Hypervisor와 직접 통신(Hyper Call)

  • OS 커널 수정이 필요하지만 오버헤드가 적고 고성능

  • 초기 Xen Hypervisor에서 사용된 모델

Hardware-Assisted Full Virtualization (하드웨어 지원 완전 가상화)

과거에는 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)을 도입해 이 문제를 해결함

구분IntelAMD기능
CPUVT-xAMD-V명령 변환 가속화
MemoryEPTRVI메모리 주소 변환 효율화
I/OVT-dAMD-ViDMA 및 디바이스 직접 접근
NICVT-cNetQueue네트워크 패킷 가속

결과: Binary Translation 불필요 → Full Virtualization에서도 준가상화 수준의 고성능 달성

Linux 기반 Hypervisor 구조 (KVM + QEMU)

KVM(Kernel-based Virtual Machine)은 Linux 커널 모듈로 동작하며, QEMU는 사용자 공간에서 CPU 및 I/O를 에뮬레이션하는 역할을 수행한다.

구성요소

  • kvm.ko (Kernel Module)

    • x86 CPU의 VT-x/AMD-V 기능을 활용하여 하드웨어 가상화 수행
    • 각 VM을 리눅스 프로세스처럼 관리
  • QEMU (User-space Emulator)

    • CPU 명령, 디스크, NIC 등 I/O 장치를 소프트웨어적으로 에뮬레이션
    • 비호환 OS (예: Android on x86) 실행 가능
  • 결합 방식

    • QEMU가 하드웨어 자원 요청 → KVM 모듈이 CPU 가상화를 수행
    • 따라서 QEMU-KVM 조합은 하드웨어 가속된 Full Virtualization

Linux OS 에는 이미 KVM(Type 1) 하이퍼바이저가 내장되어 있어, Linux 에서 VirtualBox 를 사용하면 VT-x 하드웨어 가상화를 점유 당해 VirtualBox 가 VT-x 기능을 사용하지 못하는 충돌이 발생한다.

마무리하며

오늘은 서버 가상화의 핵심 요소인 하이퍼바이저를 중심으로, 전가상화·반가상화의 차이와 하드웨어 가상화 지원, 그리고 KVM + QEMU 기반 Linux 가상화 구조를 정리했다.

서버 가상화를 이해했다면, 다음으로는 가상 머신들이 어떻게 서로 통신하고 외부와 연결되는지, 즉 네트워크 가상화를 살펴보려고 한다 ..!!

profile
인프라 엔지니어가 되고 싶은 삶은 지니의 끄적끄적..

0개의 댓글