前面的章节概述了虚拟化技术及其原理,本章开始逐步探究虚拟化技术的实现方案。
从20世纪90年代至今,虚拟化软件已经取得了长足的发展,呈现出百花齐放的繁荣景象。第2章在对VMM进行分类时提到了VMware、Xen和Hyper-V等产品,这里不得不再次提及当前服务器上常用的开源虚拟化项目——KVM。KVM是运行于x86硬件上的Linux操作系统的完整虚拟化解决方案。作为一款开源软件,KVM能够运行多个虚拟机实例,客户机操作系统则可以直接采用未经修改的Linux或Windows镜像文件进行加载启动。
本章首先回顾KVM的发展历程,简要介绍KVM的软件架构以及用户态虚拟机所调用的应用编程接口,然后深入讲解KVM的实现,通过剖析关键代码引领读者逐步了解KVM的初始化、如何创建KVM虚拟机以及在KVM中如何实现虚拟化的三个主要任务:CPU虚拟化、内存虚拟化和I/O虚拟化。I/O虚拟化因涉及内容庞杂,我们将其中外设部分的虚拟化单独列出,在3.4节从设备不同的虚拟化方式来专门阐述设备虚拟化。