這是 wiki 對於 KVM 的定義.
http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine
Kernel-based Virtual Machine (KVM) 是 Linux 核心的架構下的一部份,目前 KVM 支援 native virtualization 的架構.native virtualization (也有人稱為 hardware-assisted virtualization) 是由 CPU 來支援的虛擬化技術Intel 叫做 VT(Virtualization Technology) 或者 AMD 的 V Pacifica.在 Linux 這兩種 CPU 透過兩個不同的 module 來支援 KVM (INTEL: kvm-intel.ko AMD: kvm-amd.ko).在 RHEL5 update4 會自動依據 /proc/cpuinfo 的 flag 來選擇出適合的 CPU 模組 ,這 script 檔儲存在 /etc/sysconfig/modules/kvm.modules
對於 paravirtualization 的支援,目前像是他同時支援 Linux 和 Windows 的 Paravirtual network 裝置驅動程式,以及 balloon (關於記憶體的技術 VMM - virtual memory manager) 還針對 Linux Guest 的 CPU 做最佳化.
目前 KVM 只能運作在 i386 / x86_64 的 CPU 系統上,像是 s390,[3] PowerPC,[4] and IA64 都還在開發階段.Linux 的核心小組在 Linux 2.6.20 (February 2007) 版本就將 KVM 包括進去.至於 Linux 的兄弟 FreeBSD 也支援 KVM 以 Kernel module 方式來支援.
最重要的 Guest OS 支援基本上是囊闊市面上的作業系統了,雖然有一些我連聽都沒聽過都有支援.像是 Linux, BSD, Solaris, Windows, Haiku, ReactOS 和 AROS Research Operating System連 Mac OS X 都在特定版本的 KVM 有支援.可以上 KVM 的關網查詢 Guest OS 的支援. http://www.linux-kvm.org/page/Guest_Support_Status
不過光靠 KVM 還無法將虛擬化的工作完成,還須配合 QEMU 做一些裝置模擬以及下列的 GNU 的軟體.
KVM kernel module: GPL v2
KVM user module: LGPL v2
QEMU virtual CPU core library (libqemu.a) 和 QEMU PC system emulator: LGPL
Linux user mode QEMU emulator: GPL
BIOS files (bios.bin, vgabios.bin and vgabios-cirrus.bin): LGPL v2 or later
KVM 目前是由一家叫做 Qumranet 公司的 Avi Kivity 來做維護,不過目前已轉移給 Red Hat 來使用所以在未來 RHEL 的版本都會以 KVM 為主.
不過讓我比較好奇的是 KVM 只是 Linux 核心的一部份,那就不會像是傳統使用 VMM(Virtual machine monitor) 來管理分配 Guest 的資源.那是由誰來管理分配,那 Linux 的 Kernel 也會被安置在 Root mode 嗎??看一下 KVM 的運作原理.
但是透 Intel (VT) and AMD (AMD-V) 的支援,Linux 的核心(就是 VMM)再加上 KVM 的功能,就可以直接實現虛擬化的環境,其實 KVM 的運作方式和 Xen 的 Full virtualization 類似,除了原本的 Kernel 和 User 模式外還多了一個 Guest mode 模式(這模式可以讓 Guest OS 自己擁有Kernel 和 User 模式),每一個 Virtual Machine 對 Linux 而言就如同一個 Process(行程).