前言 本书的由来 与VMware、Microsoft虚拟化技术相比,KVM虚拟化对于初学者并不“友好”。作为虚拟化项目的组成部分,笔者从2011年开始为客户讲授KVM虚拟化的课程,对此感触特别深。为了“不重复发明轮子”,KVM虚拟化充分利用了Linux、QEMU和libvirt等开源技术,是一种组合型的解决方案,对初学者要求较高。 根据长期的KVM面授课程的经验,笔者总结出这样一种教学方法: 针对每个知识点,先学习适当深度的原理,再动手做实验; 先通过图形界面的操作,看到大概的轮廓,再通过大量的命令行、脚本的练习强化学习到的知识; 先学基本知识,再掌握最佳实践方案。采用这种教学方法,通过8天左右的培训,就可以让初学者成为一名合格的KVM虚拟化平台的管理员。 2015年,笔者将面授课程搬到了线上,制作了“开源虚拟化KVM入门”和“KVM虚拟化进阶与提高”两门视频课程,发布在51CTO学院上,目前已有约23万人参加学习。 随着RHEL/CentOS 8的发布,笔者又将这套课程进行更新迭代,形成了《虚拟化KVM极速入门》和《虚拟化KVM进阶实践》,仍然沿用“原理+实验”的风格,希望能够帮助读者。 本书内容 本书共分6章。通过学习本书,KVM虚拟化的初学者可以掌握KVM虚拟化的原理,以及管理单台宿主机所需要的知识。 第1章介绍虚拟化定义与历史,KVM的原理与架构,KVM与QEMU、libvirt等的关系。 第2章介绍如何将一台Linux主机配置为虚拟化主机,验证虚拟化功能及管理KVM的工具。 第3章介绍在RHEL/CentOS 8中通过Cockpit、virtmanager和virtinstall等方法创建虚拟机,VirtIO驱动程序、QEMU Guest Agent和SPICE Agent的工作原理及安装。 第4章介绍通过virtmanager、virsh和Cockpit对虚拟化平台进行日常管理,包括创建、暂停、恢复、停止及删除等生命周期的操作管理。 第5章介绍虚拟网络的管理,包括NAT、桥接、隔离、路由、开放等网络类型的原理与配置,VLAN和网络过滤器的原理与配置。 第6章介绍虚拟存储的管理,包括托管和非托管的存储区别,qemuimg命令的使用,存储池、存储卷的原理。 如何使用本书 本书既是笔者自己学习和使用KVM虚拟化的总结,又是讲授KVM虚拟化课程的课件。笔者认为学习原理、动手实践、做好记录、细心排错是学习KVM虚拟化的关键。 聪明人下笨功夫。在本书的陪伴下,我们一起: (1) 深入理解原理。 (2) 精读man帮助、官方文档等。 (3) 做所有的实验。 (4) 详细记录实验过程。 (5) 使用思维导图等辅助工具。 (6) 享受排错的过程,在寻求帮助之前先尝试自己解决。 致谢 开源软件的世界精彩万千,在本书的写作过程中参考了很多开源社区的资料。在此向开源社区所有参与者和无私的代码贡献者致敬。 感谢龙芯中科杨昆、田延辉先生对龙芯CPU运行KVM虚拟机技术细节的介绍。 感谢陈庭暄先生在Red Hat Enterprise Linux 8.4 Beta 上对全部实验进行的验证工作。 感谢清华大学出版社的工作人员为本书付出的辛勤劳动。 云计算技术发展很快,加之笔者水平有限,书中难免存在疏漏,敬请读者批评指正。 陈涛2022年1月 本书源代码