Jump to content

Kernel-based Virtual Machine

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning
KVM
Original author(s)Qumranet
Developer(s)The Linux Kernel community
Written inC
Operating systemUnix-like
PlatformARM, IA-64, PowerPC, S/390, x86, x86-64
TypeHypervisor
LicenseGNU GPL or LGPL
Websitewww.linux-kvm.org

커널-기반 가상 기계(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 SystemmacOS를 포함하여 다양한 게스트 운영 시스템을 위한 하드웨어-지원 가상화를 제공합니다.[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

A high-level overview of the KVM/QEMU virtualization environment[22]: 3 

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

libvirt supports KVM
  • 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

  1. ^ a b "Linux kernel 2.6.20, Section 2.2. Virtualization support through KVM". kernelnewbies.org. 2007-02-05. Retrieved 2014-06-16.
  2. ^ KVM FAQ: What do I need to use KVM?
  3. ^ "FreeBSD Quarterly Status Report: Porting Linux KVM to FreeBSD".
  4. ^ "KVM on illumos".
  5. ^ "Gmane - Mail To News And Back Again". Archived from the original on 2007-09-29. Retrieved 2007-05-07.
  6. ^ Gmane Loom Archived 2007-09-29 at the Wayback Machine
  7. ^ "KVM/ARM Open Source Project". Archived from the original on 2013-03-10. Retrieved 2017-11-01.
  8. ^ "KVM wiki: Guest support status". Retrieved 2007-05-27.
  9. ^ "Running Mac OS X as a QEMU/KVM Guest". Retrieved 2014-08-20.
  10. ^ "status". Gnu.org. Retrieved 2014-02-12.
  11. ^ "Guest Support Status - KVM". Linux-kvm.org. Retrieved 2014-02-12.
  12. ^ "OpenBSD man page virtio(4)". Retrieved 2018-02-04.
  13. ^ "virtio binary packages for FreeBSD". Retrieved 2012-10-29.
  14. ^ "NetBSD man page virtio(4)". Retrieved 2013-07-15.
  15. ^ "plan9front". Retrieved 2013-02-11.
  16. ^ "An API for virtual I/O: virtio". LWN.net. 2007-07-11. Retrieved 2014-04-16.
  17. ^ "SCSI target for KVM wiki". linux-iscsi.org. 2012-08-07. Retrieved 2012-08-12.
  18. ^ Interview: Avi Kivity Archived 2007-04-26 at the Wayback Machine on KernelTrap
  19. ^ "Red Hat Advances Virtualization Leadership with Qumranet, Inc. Acquisition". Red Hat. 4 September 2008. Retrieved 16 June 2015.
  20. ^ "KVM 15 equipped with live migration | IT World Canada News". 7 March 2007.
  21. ^ 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.
  22. ^ Khoa Huynh; Stefan Hajnoczi (2010). "KVM/QEMU Storage Stack Performance Discussion" (PDF). IBM. Linux Plumbers Conference. Retrieved January 3, 2015.[permanent dead link]
  23. ^ "SeaBIOS". seabios.org. 2013-12-21. Retrieved 2014-06-16.
  24. ^ "Hot Plugging Virtual CPUs with Red Hat Enterprise Virtualization Manager".
  25. ^ "Faq - KVM".
  26. ^ "KVM-15 release [LWN.net]".
  27. ^ "Migration - KVM".
  28. ^ https://www.berrange.com/posts/2016/05/12/analysis-of-techniques-for-ensuring-migration-completion-with-kvm/
  29. ^ https://www.kernel.org/doc/html/latest/virt/kvm/api.html#kvm-create-irqchip
  30. ^ "Linux kernel licensing rules — The Linux Kernel documentation". www.kernel.org. Archived from the original on 7 March 2020. Retrieved 2020-01-06.

Bibliography

External links