커널 기반 가상 머신

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

커널 기반 가상 머신(KVM)은 리눅스 커널의 가상화 기반 시설로, 2006년에 개발이 시작되어 2007년 리눅스 커널에 통합되었다. KVM은 `/dev/kvm` 인터페이스를 통해 게스트 VM의 주소 공간 설정, I/O 공급, 비디오 디스플레이 매핑 등을 지원하며, QEMU와 같은 상위 레벨 클라이언트 애플리케이션에 장치 에뮬레이션을 위임한다. vCPU 핫 스와핑, 동적 메모리 관리, 라이브 마이그레이션 등의 기능을 제공하며, 다양한 그래픽 관리 도구와 호환된다. KVM은 다양한 GNU 라이선스로 라이선스가 부여되며, 커널 모듈은 GPL v2로 라이선스된다.

커널 기반 가상 머신 - [IT 관련 정보]에 관한 문서
일반 정보
유형하이퍼바이저
라이선스GNU GPL 또는 GNU LGPL
웹사이트www.linux-kvm.org
개발
개발자리눅스 커널 커뮤니티
작성자Qumranet
기술 정보
운영체제유닉스 계열
프로그래밍 언어C
플랫폼ARM, 파워PC, ESA/390, IA-32, x86-64
📚 더 읽어볼만한 페이지
  • 자유 에뮬레이션 소프트웨어 - 버추얼박스
    버추얼박스(VirtualBox)는 오라클이 개발한 가상화 소프트웨어로, 단일 운영 체제 내에서 여러 게스트 운영 체제를 실행할 수 있으며, 핵심 패키지는 자유 소프트웨어로 제공된다.
  • 자유 에뮬레이션 소프트웨어 - 시그윈
    Cygwin은 윈도우에서 유닉스 시스템과 유사한 환경을 제공하는 소프트웨어로, POSIX API 구현 및 다양한 개발 도구를 통해 유닉스 기반 소프트웨어의 개발, 빌드, 실행을 지원한다.
  • 자유 가상화 소프트웨어 - LXC
    LXC는 리눅스 커널의 cgroup과 네임스페이스 격리 기능을 이용하여 운영 체제 수준의 가상화를 제공하는 기술로, IBM 연구원들이 개발했으며 보안 강화 및 LXD 컨테이너 관리자 프로젝트를 통해 발전해왔다.
  • 자유 가상화 소프트웨어 - 젠 (하이퍼바이저)
    젠은 하나의 물리적 하드웨어에서 여러 운영 체제를 동시에 실행할 수 있게 하는 하이퍼바이저로, 다양한 가상화 방식을 지원하며 여러 분야에서 활용된다.
  • 가상화 소프트웨어 - X86 가상화
    X86 가상화는 x86 아키텍처 기반 시스템에서 가상 머신을 구현하는 기술로, 소프트웨어 기반 가상화와 하드웨어 지원 가상화로 나뉘며, CPU 제조사의 가상화 확장 기술을 활용하여 가상 머신의 성능을 향상시킨다.
  • 가상화 소프트웨어 - VM웨어 v스피어
    VM웨어 v스피어는 VM웨어에서 개발한 서버 가상화 플랫폼으로, 다양한 운영체제 지원, 가상 시스템 확장, vMotion 개선, 스토리지 관리 효율성 향상 등의 특징을 가지며 클라우드 환경 지원 강화 및 관리 효율성 증대에 초점을 맞추어 지속적으로 업데이트되고 있다.

2. 역사

아비 키비티는 2006년 중반에 Qumranet에서 KVM 개발을 시작했다. Qumranet은 2008년에 레드햇에 인수된 기술 스타트업 기업이다.

KVM은 2006년 10월에 공개되었으며, 2007년 2월 5일에 출시된 커널 버전 2.6.20에 리눅스 커널 메인라인에 병합되었다.

KVM은 파올로 본지니가 관리한다.

3. 내부 구조



KVM은 장치 추상화를 제공하지만 프로세서 에뮬레이션은 제공하지 않는다. `/dev/kvm` 인터페이스를 통해 사용자 모드 호스트는 다음을 수행할 수 있다.

* 게스트 VM의 주소 공간을 설정한다. 호스트는 게스트가 메인 OS로 부트스트랩하는 데 사용할 펌웨어 이미지(일반적으로 PC 에뮬레이션 시 사용자 지정 BIOS)도 제공해야 한다.
* 게스트에 시뮬레이션된 I/O를 공급한다.
* 게스트의 비디오 디스플레이를 시스템 호스트에 다시 매핑한다.

원래 QEMU의 포크된 버전이 게스트를 시작하고 커널에서 처리하지 않는 하드웨어 에뮬레이션을 처리하기 위해 제공되었으며, 해당 지원은 결국 업스트림 프로젝트에 병합되었다. 현재 kvmtool, crosvm, Firecracker 등 KVM 인터페이스를 활용하는 다양한 가상 머신 모니터(VMM)와 rust-vmm 같은 프레임워크로 구축된 전문 VMM이 있다.

KVM은 내부적으로 16비트 x86 기본 입출력 시스템의 오픈 소스 구현인 SeaBIOS를 사용한다.

KVM 자체는 에뮬레이션을 전혀 실행하지 않으며, `/dev/kvm` 인터페이스를 공개하여 사용자 공간 호스트가 다음 기능을 이용할 수 있도록 한다.

* 게스트 VM의 주소 공간 설정 (호스트는 게스트 부트스트랩용 펌웨어 이미지도 제공)
* 게스트의 시뮬레이션된 I/O 제공
* 게스트 비디오 디스플레이를 시스템 호스트에 매핑

리눅스에서 QEMU 버전 0.10.1 이후가 사용자 공간 호스트의 한 예이다. QEMU는 게스트를 네이티브에 가까운 속도로 가상화할 수 있는 경우 KVM을 사용하고, 그렇지 않으면 소프트웨어 에뮬레이션으로 폴백한다.

4. 기능

KVM은 2007년 2월부터 vCPU 핫 스와핑, 동적 메모리 관리, 라이브 마이그레이션을 지원해왔다. 또한 메모리 쓰기 집약적인 워크로드가 마이그레이션 프로세스에 미치는 영향을 줄여준다.

5. 에뮬레이트하는 하드웨어

KVM 자체는 하드웨어를 거의 에뮬레이트하지 않고, 대신 QEMU, crosvm 또는 Firecracker와 같은 상위 레벨 클라이언트 애플리케이션에 장치 에뮬레이션을 위임한다.

KVM은 다음과 같은 에뮬레이트된 장치를 제공한다.

* 가상 CPU 및 메모리
* VirtIO

👆
좌우로 밀어서 보기
종류장치
비디오 카드Cirrus CLGD 5446 PCI VGA 카드, Bochs VESA 확장을 이용한 더미 VGA 카드, VirtIO, QXL VGA
PCII440FX 또는 Q35
입력 장치PS/2 마우스 및 키보드
사운드 카드Sound_Blaster_16영어 사운드 블라스터 16, ENSONIQ AudioPCI ES1370영어 ES1370 AC97, Gravis Ultrasound GF1영어 Gravis Ultrasound GF1, CS4231A 호환, HD Audio
이더넷 네트워크 카드AMD Am79C970A(Am7990영어 Am7990), E1000(Intel 82540EM, 82573L, 82544GC), NE2000영어 NE2000, Realtek RTL8139영어 RTL8139, VirtIO
워치독 타이머Intel 6300ESB 또는 IB700
RAM50MB - 32TB
CPU1 – 160 CPU

6. 그래픽 관리 도구

KVM을 지원하는 libvirt
KVM을 지원하는 libvirt


* 김치는 KVM을 위한 웹 기반 가상화 관리 도구이다.
* 가상 머신 매니저는 KVM 기반 가상 머신의 생성, 편집, 시작 및 중지를 지원하며, 호스트 간 드래그 앤 드롭을 통한 VM의 라이브 또는 콜드 마이그레이션도 가능하다.
* Proxmox Virtual Environment는 KVM과 LXC를 포함하는 오픈 소스 가상화 관리 패키지로, 베어 메탈 설치 프로그램, 웹 기반 원격 관리 GUI, HA 클러스터 스택, 통합 스토리지, 유연한 네트워크 관리, 옵션 상용 지원을 제공한다.
* OpenQRM영어은 이기종 데이터 센터 인프라를 관리하기 위한 관리 플랫폼이다.
* GNOME Boxes는 리눅스 상의 libvirt 게스트를 관리하기 위한 GNOME 인터페이스이다.
* oVirt영어는 libvirt를 기반으로 구축된 KVM용 오픈 소스 가상화 관리 도구이다.

7. 라이선스

KVM의 일부는 다양한 GNU 라이선스로 구성되어 있다.

👆
좌우로 밀어서 보기
구성 요소라이선스
KVM 커널 모듈GPL v2
KVM 사용자 모듈LGPL v2
QEMU 가상 CPU 코어 라이브러리 (libqemu.a) 및 QEMU PC 시스템 에뮬레이터LGPL
리눅스 사용자 모드 QEMU 에뮬레이터GPL
BIOS 파일 (bios.bin, vgabios.bin, vgabios-cirrus.bin)LGPL v2 이상


KVM의 커널 모드 구성 요소는 리눅스 커널의 일부이며, 이는 GNU 일반 공중 사용 허가서 2판에 따라 라이선스가 부여된다.