KVM(Kernel-based Virtual Machine,内核虚拟机)
是基于 x86
虚拟化扩展(Intel VT
或者 AMD-V
) 技术的虚拟机软件是一个开源的系统虚拟化模块。KVM
是基于 Linux 内核
实现的,自 Linux 2.6.20
开始集成在 Linux
的各个主要发行版本中。OpenStack 对 KVM
支持得也最好。
发展史
- 2006 年有
Qumranet
公司发布,同年 10 月正式纳入 Linux Kernel
- 2008 年 9 月
Qumranet
被 Redhat
收购 - 2010 年 11 月
Redhat 6.0
的改造版本中,KVM
替代原来的 Xen
组成

KVM
的内核空间
模块叫 kvm.ko
,作为一个 Hypervisor
,只用于管理虚拟 CPU
和内存
。对应的设备文件:/dev/kvm
QEMU(quick emulator)
运行在用户空间
,是一个纯软件的虚拟机实现(在没有 KVM模块
的情况下可以独立运行,但性能比较低),包括CPU虚拟化
、内存虚拟化
以及I/O设备虚拟化(存储和网络)
QEMU
是 系统模拟器
,包括提供 Guest OS 虚拟化平台
,提供整个系统的仿真(PCI host controller, disk, network, video hardware, USB controller等)。
- 每个虚拟机都是 Linux 的一个常规进程,由 Linux 调度程序进行调度
架构
从上到下一般包括如下部分:

- 云资源管理:如
OpenStack
等 - 主机管理工具:
libvirt
,可以管理的 Hypervisor
包括:KVM、Xen、VirtualBox。libvirt 有 3 部分组成:API 库
virsh
:KVM 命令行工具,实现虚拟机的创建、删除等管理操作libvirtd
:服务程序,接收和处理 API 请求
- 虚拟化仿真:
QEMU
- 硬件资源访问管理:
KVM