组件原理
KVM
KVM基于Linux内核部分机制实现包括CPU虚拟化,内存虚拟化和外设虚拟化及虚拟机管理等主要功能,它是支撑软件模拟硬件以及连接各个模式间转换的桥梁。KVM架构如图1所示。
KVM作为Hypervisor运行在宿主机内核(Host OS Kernel),支持对CPU、内存、IO的模拟,对虚拟机的监测,并为QEMU提供实体支撑。
KVM的优势:
- 兼容性好。
- 内存易于管理,虚拟机就是一个进程。
- 性能相对较高,KVM与OS内核的代码资源可直接调用。
- 充分利用硬件支持的虚拟化,专注于虚拟化。
- 可扩展性好,以原生使用Linux内核提供的内存管理、多处理器支持等功能。
- 简单,目前KVM的IO虚拟化工作是借助QEMU完成的,也显著地降低了实现的工作量。
QEMU
QEMU是一个模拟器,为虚拟机提供运行的硬件环境。它作为进程运行在宿主机的用户态,基于KVM及内核的特性,能为Guest OS模拟出CPU、内存、IO等硬件,支撑Guest OS在进程中运行。QEMU支持全系统仿真、全虚拟化和半虚拟化模式。全系统仿真和全虚拟化是纯软件模拟,允许一个CPU构建的进程在另外一个CPU上执行,不同的是全系统仿真允许对整个系统进行仿真,包括CPU和配套的外围设备,而半虚拟化模式下QEMU和KVM配合使用,通过KVM硬件辅助虚拟化的方式模拟CPU,这种方式效率高,也是目前普遍使用的一种方式。QEMU架构如图2所示。
QEMU和KVM配合使用,KVM运行在
- 通过QMP接口与上层libvirt交互。
- 虚拟设备模拟。
- 通过ioctl与下层KVM模块交互。
父主题: 虚拟化方案(基于开源KVM)