根据提供的文章内容,总结如下:
本文是《第2章 KVM原理简介》,系统地介绍了KVM虚拟化技术的原理和架构。
1. 基础背景
- Linux操作系统:作为KVM的宿主,Linux是一个自由开源的类UNIX内核,采用单内核但模块化设计,允许动态加载内核模块(如KVM模块)以扩展功能。
2. 虚拟化模型
- 核心是虚拟机监控器,它管理物理硬件并为每个虚拟机提供虚拟的硬件平台。
- 虚拟机分为类型一(监控器直接运行在硬件上,如Xen)和类型二(监控器作为应用程序运行在宿主机OS上,如KVM)。KVM属于类型二,优势在于能充分利用现有OS功能。
3. KVM架构与核心组件
KVM采用类型二架构,其核心由两部分组成:
- KVM内核模块:是KVM的核心,以内核模块形式加载。
负责初始化CPU硬件,开启虚拟化模式(如Intel VT-x)。
管理处理器的虚拟化(vCPU)和内存的虚拟化(早期使用影子页表,后利用硬件EPT技术实现二维分页)。
提供/dev/kvm接口,与用户空间通过IOCTL调用进行通信。 - QEMU设备模型(用户空间程序):负责虚拟机的创建、配置、用户交互及大部分I/O设备的模拟(如网卡、磁盘)。
利用KVM模块进行硬件加速,当虚拟机执行I/O操作时,由KVM切换回QEMU进行处理。
4. 硬件依赖
- KVM严重依赖处理器的硬件虚拟化扩展(如Intel VT-x)来实现高效虚拟化。
- 此外,还利用芯片组级(如Intel VT-d)和I/O设备级(如SR-IOV)的虚拟化技术来提升性能与功能。
总结:KVM是一个基于Linux内核的开源虚拟化解决方案。它巧妙地将内核模块(KVM)与用户空间设备模拟器(QEMU)相结合,在充分利用Linux操作系统功能和硬件虚拟化支持的基础上,实现了高性能的虚拟机管理。
