맨위로가기

커널 기반 가상 머신

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

1. 개요

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

더 읽어볼만한 페이지

  • 자유 가상화 소프트웨어 - LXC
    LXC는 리눅스 커널의 cgroup과 네임스페이스 격리 기능을 이용하여 운영 체제 수준의 가상화를 제공하는 기술로, IBM 연구원들이 개발했으며 보안 강화 및 LXD 컨테이너 관리자 프로젝트를 통해 발전해왔다.
  • 자유 가상화 소프트웨어 - 젠 (하이퍼바이저)
    젠은 하나의 물리적 하드웨어에서 여러 운영 체제를 동시에 실행할 수 있게 하는 하이퍼바이저로, 다양한 가상화 방식을 지원하며 여러 분야에서 활용된다.
  • 자유 에뮬레이션 소프트웨어 - 버추얼박스
    버추얼박스(VirtualBox)는 오라클이 개발한 가상화 소프트웨어로, 단일 운영 체제 내에서 여러 게스트 운영 체제를 실행할 수 있으며, 핵심 패키지는 자유 소프트웨어로 제공된다.
  • 자유 에뮬레이션 소프트웨어 - 시그윈
    Cygwin은 윈도우에서 유닉스 시스템과 유사한 환경을 제공하는 소프트웨어로, POSIX API 구현 및 다양한 개발 도구를 통해 유닉스 기반 소프트웨어의 개발, 빌드, 실행을 지원한다.
  • 리눅스 커널 특징 - AppArmor
    AppArmor는 리눅스 보안 모듈로, 프로그램의 정상적인 동작을 정의하는 프로필을 통해 비정상적인 행위를 차단하며 SELinux의 대안으로 제시되었으나 보안 취약점, 성능, 설정, 호환성 등에 대한 논란도 있다.
  • 리눅스 커널 특징 - 크립토 API (리눅스)
    크립토 API는 리눅스에서 사용자 프로그램이 커널의 암호화 엔진을 사용하도록 지원하는 인터페이스로, 명령어 집합 구조를 이용하거나 커널 드라이버를 통해 접근하며, AF_ALG와 cryptodev 등의 인터페이스를 제공한다.
커널 기반 가상 머신 - [IT 관련 정보]에 관한 문서
일반 정보
유형하이퍼바이저
라이선스GNU GPL 또는 GNU LGPL
웹사이트www.linux-kvm.org
개발
개발자리눅스 커널 커뮤니티
작성자Qumranet
기술 정보
운영체제유닉스 계열
프로그래밍 언어C
플랫폼ARM, 파워PC, ESA/390, IA-32, x86-64

2. 역사

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

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

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

3. 내부 구조



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

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


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

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

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

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


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

4. 기능

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

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

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

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


  • 가상 CPU 및 메모리[31]
  • VirtIO

종류장치
비디오 카드Cirrus CLGD 5446 PCI VGA 카드, Bochs VESA 확장을 이용한 더미 VGA 카드[56], VirtIO, QXL VGA
PCII440FX 또는 Q35
입력 장치PS/2 마우스 및 키보드[56]
사운드 카드Sound_Blaster_16영어 사운드 블라스터 16, ENSONIQ AudioPCI ES1370영어 ES1370 AC97, Gravis Ultrasound GF1영어 Gravis Ultrasound GF1, CS4231A 호환[56], 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을 위한 웹 기반 가상화 관리 도구이다.
  • 가상 머신 매니저는 KVM 기반 가상 머신의 생성, 편집, 시작 및 중지를 지원하며, 호스트 간 드래그 앤 드롭을 통한 VM의 라이브 또는 콜드 마이그레이션도 가능하다.
  • Proxmox Virtual Environment는 KVM과 LXC를 포함하는 오픈 소스 가상화 관리 패키지로, 베어 메탈 설치 프로그램, 웹 기반 원격 관리 GUI, HA 클러스터 스택, 통합 스토리지, 유연한 네트워크 관리, 옵션 상용 지원을 제공한다.
  • OpenQRM|OpenQRM영어은 이기종 데이터 센터 인프라를 관리하기 위한 관리 플랫폼이다.
  • GNOME Boxes는 리눅스 상의 libvirt 게스트를 관리하기 위한 GNOME 인터페이스이다.
  • oVirt|oVirt영어는 libvirt를 기반으로 구축된 KVM용 오픈 소스 가상화 관리 도구이다.

7. 라이선스

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

구성 요소라이선스
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판에 따라 라이선스가 부여된다.[32]

참조

[1] 웹사이트 Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM http://kernelnewbies[...] 2014-06-16
[2] 웹사이트 KVM FAQ: What do I need to use KVM? http://www.linux-kvm[...]
[3] 웹사이트 FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD http://www.freebsd.o[...]
[4] 웹사이트 KVM on illumos http://dtrace.org/bl[...] 2011-08-15
[5] 웹사이트 Gmane - Mail To News And Back Again https://web.archive.[...] 2007-05-07
[6] 웹사이트 Gmane Loom http://news.gmane.or[...] 2007-09-29
[7] 웹사이트 KVM/ARM Open Source Project https://web.archive.[...] 2017-11-01
[8] 간행물 KVM/ARM: The Design and Implementation of the Linux ARM Hypervisor https://dl.acm.org/d[...] ACM International Conference on Architectural Support for Programming Languages and Operating Systems 2014
[9] 웹사이트 kernel/git/torvalds/linux.git: KVM: ia64: remove https://git.kernel.o[...]
[10] 웹사이트 KVM wiki: Guest support status http://www.linux-kvm[...] 2007-05-27
[11] 웹사이트 Running Mac OS X as a QEMU/KVM Guest http://www.contrib.a[...] 2014-08-20
[12] 웹사이트 status https://www.gnu.org/[...] Gnu.org 2014-02-12
[13] 웹사이트 Guest Support Status - KVM http://www.linux-kvm[...] Linux-kvm.org 2014-02-12
[14] 웹사이트 OpenBSD man page virtio(4) https://man.openbsd.[...] 2018-02-04
[15] 웹사이트 virtio binary packages for FreeBSD http://people.freebs[...] 2012-10-29
[16] 웹사이트 NetBSD man page virtio(4) https://web.archive.[...] 2013-07-15
[17] 웹사이트 plan9front https://code.google.[...] 2013-02-11
[18] 웹사이트 An API for virtual I/O: virtio https://lwn.net/Arti[...] LWN.net 2014-04-16
[19] 웹사이트 SCSI target for KVM wiki https://web.archive.[...] linux-iscsi.org 2012-08-12
[20] 웹사이트 Interview: Avi Kivity http://kerneltrap.or[...] KernelTrap 2007-04-26
[21] 웹사이트 Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition http://www.redhat.co[...] Red Hat 2015-06-16
[22] 웹사이트 KVM 15 equipped with live migration | IT World Canada News https://www.itworldc[...] 2007-03-07
[23] 웹사이트 Git Success Stories and Tips from KVM Maintainer Paolo Bonzini https://web.archive.[...] Linux.com 2015-06-17
[24] 웹사이트 KVM/QEMU Storage Stack Performance Discussion http://www-01.ibm.co[...] Linux Plumbers Conference 2015-01-03
[25] 웹사이트 SeaBIOS http://www.seabios.o[...] seabios.org 2014-06-16
[26] 웹사이트 Hot Plugging Virtual CPUs with Red Hat Enterprise Virtualization Manager https://access.redha[...] 2016-02-16
[27] 웹사이트 Faq - KVM https://www.linux-kv[...]
[28] 웹사이트 KVM-15 release [LWN.net] https://lwn.net/Arti[...]
[29] 웹사이트 Migration - KVM https://www.linux-kv[...]
[30] 웹사이트 Daniel P. Berrangé » Blog Archive » Analysis of techniques for ensuring migration completion with KVM https://www.berrange[...]
[31] 웹사이트 The Definitive KVM (Kernel-based Virtual Machine) API Documentation — the Linux Kernel documentation https://www.kernel.o[...]
[32] 웹사이트 Linux kernel licensing rules — The Linux Kernel documentation https://www.kernel.o[...] 2020-01-06
[33] 웹사이트 Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM http://kernelnewbies[...] 2014-06-16
[34] 웹사이트 KVM FAQ: What do I need to use KVM? http://www.linux-kvm[...]
[35] 웹사이트 FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD http://www.freebsd.o[...] 2008-10-03
[36] 웹사이트 KVM on illumos http://dtrace.org/bl[...] 2011-11-15
[37] 웹사이트 Gmane - Mail To News And Back Again http://article.gmane[...] 2007-05-07
[38] 웹사이트 Gmane Loom http://news.gmane.or[...]
[39] 웹사이트 KVM/ARM Open Source Project https://columbia.git[...]
[40] 웹사이트 KVM wiki: Guest support status http://www.linux-kvm[...] 2007-05-27
[41] 웹사이트 Running Mac OS X as a QEMU/KVM Guest http://www.contrib.a[...] 2014-08-20
[42] 웹사이트 status https://www.gnu.org/[...] Gnu.org 2014-02-12
[43] 웹사이트 Guest Support Status - KVM http://www.linux-kvm[...] Linux-kvm.org 2014-02-12
[44] 웹사이트 An API for virtual I/O: virtio https://lwn.net/Arti[...] LWN.net 2014-04-16
[45] 웹사이트 OpenBSD man page virtio(4) https://man.openbsd.[...] 2018-02-04
[46] 웹사이트 virtio binary packages for FreeBSD http://people.freebs[...] 2012-10-29
[47] 웹사이트 NetBSD man page virtio(4) http://netbsd.gw.com[...] 2013-07-15
[48] 웹사이트 plan9front https://code.google.[...] 2013-02-11
[49] 웹사이트 SCSI target for KVM wiki http://linux-iscsi.o[...] linux-iscsi.org 2012-08-12
[50] 웹사이트 Interview: Avi Kivity http://kerneltrap.or[...]
[51] 웹사이트 Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition http://www.redhat.co[...] レッドハット 2015-06-16
[52] 웹사이트 Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM http://kernelnewbies[...] 2014-06-16
[53] 웹사이트 Git Success Stories and Tips from KVM Maintainer Paolo Bonzini http://www.linux.com[...] Linux.com 2015-06-17
[54] 웹사이트 KVM/QEMU Storage Stack Performance Discussion http://www-01.ibm.co[...] Linux Plumbers Conference 2015-01-03
[55] 웹사이트 SeaBIOS http://www.seabios.o[...] seabios.org 2014-06-16
[56] 문서 wiki.qemu.org – QEMU Emulator User Documentation http://wiki.qemu.org[...]
[57] 문서 Ubuntu 7.04 /usr/share/doc/kvm/copyright からのライセンス情報
[58] 웹인용 Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM http://kernelnewbies[...] 2014-06-16
[59] 웹사이트 KVM FAQ: What do I need to use KVM? http://www.linux-kvm[...]
[60] 웹인용 FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD http://www.freebsd.o[...]
[61] 웹인용 KVM on illumos http://dtrace.org/bl[...]
[62] 문서 Licensing info from Ubuntu 7.04 /usr/share/doc/kvm/copyright



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com