Kernel-based Virtual Machine
![]() | |
![]() | |
Original author(s) | Qumranet |
---|---|
Developer(s) | The Linux Kernel community |
Written in | C |
Operating system | Unix-like |
Platform | ARM, IA-64, PowerPC, S/390, x86, x86-64 |
Type | Hypervisor |
License | GNU GPL or LGPL |
Website | www |
커널-기반 가상 기계(Kernel-based Virtual Machine, 줄여서 KVM)는 커널에게 하이퍼바이저로 기능하도록 허용하는 리눅스 커널의 가상화 모듈입니다. 그것은 2007년 2월 5일에 릴리스된 버전 2.6.20에서 메인라인 리눅스 커널에 병합되었습니다.[1] KVM은 Intel VT 또는 AMD-V와 같은 하드웨어 가상화 확장 기능을 갖는 프로세서를 필요로 합니다.[2] KVM은 역시 로드-가능한 커널 모듈의 형태로 FreeBSD[3] 및 illumos[4]와 같은 다른 운영 시스템에 이식되어 왔습니다.
KVM은 원래 x86 프로세서에 대해 설계되었지만 이후 S/390,[5] PowerPC,[6] IA-64, 및 ARM으로 이식되어 왔습니다.[7]
KVM은 Linux, BSD, Solaris, Windows, Haiku, ReactOS, Plan 9, AROS Research Operating System 및 macOS를 포함하여 다양한 게스트 운영 시스템을 위한 하드웨어-지원 가상화를 제공합니다.[8][9] 게다가, Android 2.2, GNU/Hurd[10] (Debian K16), Minix 3.1.2a, Solaris 10 U3 and Darwin 8.0.1은, 나열된 이것들의 다른 운영 시스템과 일부 더 최신 버전과 함께, 특정 제한 사항이 있는 것으로 얄려져 있습니다.[11]
추가적으로, KVM은 VirtIO API를 사용하여 Linux, OpenBSD,[12] FreeBSD,[13] NetBSD,[14] Plan 9[15] 및 윈도우 게스트에 대한 반가상화 지원을 제공합니다.[16] 여기에는 반가상 이더넷 카드, 디스크 I/O 컨트롤러,[17] balloon driver, SPICE 또는 VMware 드라이버를 사용하는 VGA 그래픽 인터페이스를 포함합니다.
History
Avi Kivity는 2008년 Red Hat에 인수된 기술 신생 회사,[18] Qumranet에서 2006년 중반에 KVM 개발을 시작했습니다.[19]
KVM은 2006년 10월에 등장했었고,[20] 2007년 2월 5일에 릴리스된 커널 버전 2.6.20에서 리눅스 커널 메인라인에 병합되었습니다.[1]
KVM은 Paolo Bonzini에 의해 유지 관리됩니다.[21]
Internals
![](https://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Kernel-based_Virtual_Machine.svg/400px-Kernel-based_Virtual_Machine.svg.png)
KVM은 장치 추상화를 제공하지만 프로세서 에뮬레이션은 제공하지 않습니다. 그것은 사용자 모드 호스트가 다음을 수행하기 위해 사용할 수 있는 /dev/kvm 인터페이스를 노출합니다:
- 게스트 VM의 주소 공간을 설정합니다. 호스트는 역시 게스트가 기본 OS로 부트스트랩하기 위해 사용할 수 있는 펌웨어 이미지 (보통 PC를 에뮬레이트할 때 사용자-지정 BIOS)를 제공해야 합니다.
- 게스트 시뮬레이션 I/O를 제공합니다.
- 게스트의 비디오 디스플레이를 시스템 호스트에 다시 매핑합니다.
리눅스에서, QEMU 버전 0.10.1 이상은 그러한 사용자-공간 호스트 중 하나입니다. QEMU는 기본에 가까운 속도로 게스트를 가상화할 수 있는 경우 KVM을 사용하지만, 그렇지 않으면 소프트웨어-전용 에뮬레이션으로 대체합니다.
내부적으로, KVM은 SeaBIOS를 16-비트 x86 BIOS의 오픈 소스 구현으로 사용합니다.[23]
Features
KVM은 2007년 2월부터 핫 플러그 vCPU,[24] 동적 메모리 관리,[25] 및 라이브 마이그레이션을 지원합니다.[26][27] 마이그레이션 프로세스에서 메모리 쓰기 집약적 워크로드가 영향을 미칩니다.[28]
Emulated hardware
KVM 자체는 장치 에뮬레이션을 위해 QEMU, crosvm 또는 Firecracker와 같은 더 높은 수준의 클라이언트 응용 프로그램에 맡기는 대신 아주 작은 하드웨어를 에뮬레이트합니다.
KVM은 다음과 같은 에뮬레이트된 장치를 제공합니다:
Graphical management tools
![](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Libvirt_support.svg/300px-Libvirt_support.svg.png)
- Kimchi – KVM을 위한 웹-기반 가상화 관리 도구
- Virtual Machine Manager – KVM-기반 가상 기계의 생성, 편집, 시작, 및 중지를 지원할 뿐만 아니라, 호스트 사이의 VM의 라이브 또는 콜드 드래그-앤-드롭 마이그레이션을 지원합니다.
- Proxmox Virtual Environment – KVM 및 LXC를 포함한 오픈-소스 가상화 관리 패키지. 그것은 베어-메탈 설치 프로그램, 웹 기반 원격 관리 GUI, HA 클러스터 스택, 통합 스토리지, 유연한 네트워크, 및 선택적 상용 지원을 가집니다.
- OpenQRM – 이기종 데이터센터 인프라를 관리하기 위한 관리 플랫폼.
- GNOME Boxes – 리눅스에서 libvirt 게스트를 관리하기 위한 그놈 인터페이스.
- oVirt – libvirt 꼭대기에 구축된 KVM을 위한 오픈-소스 가상화 관리 도구
Licensing
KVM의 커널-모드 구성 요소는 리눅스 커널의 일부이며, 자체적으로 GNU General Public License, 버전 2에 따라 사용이 허가됩니다.[30]
See also
References
- ^ a b "Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM". kernelnewbies.org. 2007-02-05. Retrieved 2014-06-16.
- ^ KVM FAQ: What do I need to use KVM?
- ^ "FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD".
- ^ "KVM on illumos".
- ^ "Gmane - Mail To News And Back Again". Archived from the original on 2007-09-29. Retrieved 2007-05-07.
- ^ Gmane Loom Archived 2007-09-29 at the Wayback Machine
- ^ "KVM/ARM Open Source Project". Archived from the original on 2013-03-10. Retrieved 2017-11-01.
- ^ "KVM wiki: Guest support status". Retrieved 2007-05-27.
- ^ "Running Mac OS X as a QEMU/KVM Guest". Retrieved 2014-08-20.
- ^ "status". Gnu.org. Retrieved 2014-02-12.
- ^ "Guest Support Status - KVM". Linux-kvm.org. Retrieved 2014-02-12.
- ^ "OpenBSD man page virtio(4)". Retrieved 2018-02-04.
- ^ "virtio binary packages for FreeBSD". Retrieved 2012-10-29.
- ^ "NetBSD man page virtio(4)". Retrieved 2013-07-15.
- ^ "plan9front". Retrieved 2013-02-11.
- ^ "An API for virtual I/O: virtio". LWN.net. 2007-07-11. Retrieved 2014-04-16.
- ^ "SCSI target for KVM wiki". linux-iscsi.org. 2012-08-07. Retrieved 2012-08-12.
- ^ Interview: Avi Kivity Archived 2007-04-26 at the Wayback Machine on KernelTrap
- ^ "Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition". Red Hat. 4 September 2008. Retrieved 16 June 2015.
- ^ "KVM 15 equipped with live migration | IT World Canada News". 7 March 2007.
- ^ Libby Clark (7 April 2015). "Git Success Stories and Tips from KVM Maintainer Paolo Bonzini". Linux.com. Archived from the original on 15 March 2016. Retrieved 17 June 2015.
- ^ Khoa Huynh; Stefan Hajnoczi (2010). "KVM/QEMU Storage Stack Performance Discussion" (PDF). IBM. Linux Plumbers Conference. Retrieved January 3, 2015.[permanent dead link]
- ^ "SeaBIOS". seabios.org. 2013-12-21. Retrieved 2014-06-16.
- ^ "Hot Plugging Virtual CPUs with Red Hat Enterprise Virtualization Manager".
- ^ "Faq - KVM".
- ^ "KVM-15 release [LWN.net]".
- ^ "Migration - KVM".
- ^ https://www.berrange.com/posts/2016/05/12/analysis-of-techniques-for-ensuring-migration-completion-with-kvm/
- ^ https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-create-irqchip
- ^ "Linux kernel licensing rules — The Linux Kernel documentation". www.kernel.org. Archived from the original on 7 March 2020. Retrieved 2020-01-06.
Bibliography
- Amit Shah (2016-11-02). "Ten years of KVM". lwn.net. Retrieved 2017-02-10.
External links
- Official website
- Best practices for the Kernel-based Virtual Machine, IBM, second edition, April 2012
- Virtio-blk Performance Improvement, KVM Forum 2012, November 8, 2012, by Asias He
- Wikibook QEMU & KVM
- crosvm - chrome OS virtual machine monitor
- Firecracker VMM for KVM