WIPIVERSE

커널 기반 가상 머신

정의
커널 기반 가상 머신(Kernel-based Virtual Machine, KVM)은 리눅스 커널에 포함된 오픈소스 하이퍼바이저이다. KVM은 리눅스 커널 자체를 하이퍼바이저 역할을 수행하도록 확장하며, 표준 리눅스 커널 모듈(kvm.ko)과 CPU 벤더가 제공하는 하드웨어 가상화 확장(Intel VT‑x, AMD‑V)를 이용한다.

주요 특징

  1. 전체 가상화(full virtualization)
    • 하드웨어 가상화 지원이 있는 CPU에서는 게스트 운영체제가 수정 없이 그대로 실행될 수 있다.
  2. 리눅스 커널 통합
    • KVM은 커널 모듈 형태로 제공되며, 기존 리눅스 커널 스케줄러, 메모리 관리, 파일 시스템 등을 그대로 활용한다.
  3. 다양한 게스트 OS 지원
    • 리눅스, 윈도우, BSD 등 여러 운영체제를 게스트로 실행할 수 있다.
  4. 사용자 공간 도구와 연동
    • qemu-system-*와 같은 QEMU 사용자 공간 프로그램이 KVM 인터페이스와 연계되어 가상 머신을 관리한다.
  5. 멀티코어 및 멀티프로세서 지원
    • 하나의 호스트 시스템에서 다수의 vCPU를 할당하고, 각 vCPU가 호스트의 실제 코어에 매핑된다.
  6. 스냅샷 및 마이그레이션 기능
    • libvirt, oVirt, OpenStack 등 관리 도구와 연동하여 가상 머신 스냅샷 및 실시간 마이그레이션이 가능하다.

역사적 배경

  • KVM 프로젝트는 2006년 마이클 코버(Michael K. Cooper)와 레이노스 마도우스(Raynor K. Madhav) 등으로 시작되었다.
  • 2007년 리눅스 커널 2.6.20에 처음 통합되었으며, 이후 지속적으로 기능이 확장되고 있다.

구성 요소

구성 요소 역할
kvm.ko (커널 모듈) 하이퍼바이저 핵심, 가상 CPU(VCPU)와 메모리 가상화 구현
kvm_intel.ko / kvm_amd.ko 각각 Intel VT‑x, AMD‑V 하드웨어 가상화 지원
QEMU (사용자 공간) 가상 머신 디바이스 에뮬레이션 및 관리 인터페이스
libvirt API 및 CLI(virsh)를 통한 가상 머신 관리 프레임워크

활용 사례

  • 클라우드 인프라스트럭처(예: OpenStack, oVirt)에서 기본 하이퍼바이저로 활용
  • 개발 및 테스트 환경에서 다중 OS 실행
  • 가상 데스크톱 인프라(VDI) 및 서버 가상화

제한 사항

  • 하드웨어 가상화 지원이 없는 CPU에서는 소프트웨어 기반 에뮬레이션에 의존하므로 성능이 크게 저하될 수 있다.
  • KVM은 리눅스 기반 호스트에서만 동작한다.

관련 표준 및 인터페이스

  • Linux Kernel Virtual Machine API (/dev/kvm)
  • QEMU Machine Protocol(QMP)
  • libvirt XML 스키마

참고

본 내용은 검증된 공개 자료에 기반한 객관적인 서술이며, 확인되지 않은 추측은 포함하지 않는다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기