前 言 Preface

目前,国内新一代的公有云底层采用的都是KVM,据笔者了解,国内原来一些采用Xen的公有云也逐步在向KVM迁移。许多企业的私有云项目招标中,已经明确要求使用KVM。在全球范围内,OpenStack就是云建设的标准,而当前OpenStack底层默认就是KVM。经过几年的快速发展,KVM技术已经非常成熟稳定,在任何Linux发行版中,KVM都是标配。虚拟化已经成为一项必备的技术技能,而学习Linux就必须学习KVM。

为什么写这本书

2009年,当虚拟化在互联网业内鲜有使用时,我们虚拟化小组在国内已经在生产环境率先开始KVM虚拟化技术的探索。通过实施虚拟化,我们几年内为公司节省了上亿元的运营成本,帮助公司多个处于生命周期末的游戏项目实现扭亏为盈。

当时,KVM还是一个小众产品,国内文档较少,我们只能通过钻研国外的英文资料甚至阅读源代码来学习。RedHat是KVM的重要支持者,因此与其公司RHEL系统同源的CentOS成为了研究KVM的重要资料。从当时刚发布的CentOS5.5版本开始,我们一路追随CentOS系统的升级,每有一个版本发布,我们都要测试评估新的KVM虚拟化特性,然后逐步在生产环境部署,这样的工作方法一直持续到最新的CentOS6.6及CentOS7.1。这也是我们小组人员快速成长的一个阶段,我们对KVM技术的热爱一直保持了下来,我们在周围普及KVM技术的热情一直没有改变。

时至今日,KVM经过几年的快速发展,已经成为了最炙手可热的虚拟化引擎,国内新一代的公有云全部选择了KVM。而与KVM如火如荼的发展形成鲜明对比的是中文资料依然匮乏,尤其是介绍实践经验的资料。在我们周围和各种技术论坛上,经常碰到一些运维工程师,在实施一个KVM虚拟化项目时,不知道从哪里开始;也碰到对KVM技术感兴趣的运维人员在重复问一些相近的问题。于是,我们几个人萌生了一个想法,为什么不把我们的KVM项目运维实践经验一一记录下来,分享给大家。与此同时,我们也犹豫过,因为有许多问题我们也并未完全理解。但是,经过认真思考后的我们认为,即便在这种情况下,我们几年积累下来的实践经验对于想要了解和学习KVM虚拟化技术的工程师来说也是非常有意义的,毕竟实践更能检验真理。回想当初自己遇到问题的时候,我们也得到了一些论坛朋友、圈内专家的热心解答。互联网精神崇尚开放,这更加坚定了我们创作此书的决心。我们愿意将自己对KVM技术的理解和认识,以及在KVM虚拟化中解决问题的思路和方法分享出来,让大家少走一些我们走过的弯路,同时能够与所有运维工程师共同学习提升!

本书特色

本书是KVM一线项目运维实践经验总结,在KVM CPU、内存、网络、磁盘方面拥有丰富的技术积累,在KVM虚拟化开源分布式与商业存储、KVM桌面虚拟化方面有的大量实践,我们还会指出踩过的“技术坑”,这些都是弥足珍贵的经验。

本书对Linux系统和虚拟化有一定了解,但是对KVM不了解或者是了解不多,而准备在测试或者生产环境部署KVM虚拟化的读者,本书会介绍虚拟化项目如何评估、如何逐步实施,并介绍相关的技术与运维实践,希望对读者的生产环境虚拟化实施有所帮助。

对于正在做KVM虚拟化日常运维的读者,本书有相应的技术、实践经验、问题案例分享,便于这些读者碰到相似的问题时查询或者找到解决思路。

本书面向的读者

KVM已经是Linux系统的标配,是Linux的必备技能,希望本书对广大Linux从业者能够有所帮助。

本书适用于以下读者:

❑Linux系统工程师。

❑从事Linux虚拟化开发的程序员。

❑虚拟化工程师。

❑IDC机房管理员。

❑有志于从事虚拟化的在校大学生。

如何阅读本书

本书分为五篇。

第一篇(第1~8章),介绍虚拟化选型及KVM虚拟机技术。实施虚拟化可带给我们哪些收益,虚拟化引擎选择,KVM虚拟化相关的CPU、内存、磁盘、网络技术及生产环境应用场景,物理机转虚拟机,KVM桌面虚拟化实践。

第二篇(第9~10章),介绍开源分布式文件系统在KVM虚拟化的应用。介绍一些常见的开源分布式文件系统如何在KVM环境使用,重点详细介绍最近一两年比较热的Ceph文件系统,包括配置、使用和常见故障处理。

第三篇(第11~13章),介绍开源的虚拟化管理平台在生产环境的实践经验。重点介绍OpenStack、OpenNebula在生产环境的实践及故障处理,还有oVirt、CloudStack、Convirt、WebVirtMgr几个管理平台的架构和理念。

第四篇(第14~21章),介绍KVM虚拟化项目实施经验,涵盖业务性能评估、压力模型建立、虚拟机性能测试、宿主机基准测试、业务测试环境测试验证、单机虚拟化技术、集群虚拟化技术、虚拟化正式环境上线等一套完整的虚拟化项目实施过程。

第五篇(第22章),介绍KVM虚拟化过程中比较典型的一些案例。主要介绍一些在生产环境中的案例及解决思路、方法,方便读者碰到类似的问题时找到解决方案。

根据本书内容,我们给出如下阅读建议:

❑如果是刚准备开始实施虚拟化的读者,请从头开始阅读本书。

❑如果对分布式文件系统在虚拟化中的应用感兴趣的读者,可以阅读第二篇的内容。

❑如果对虚拟化管理平台使用感兴趣的读者,可以阅读第三篇的内容。

❑如果是对虚拟化技术有一定了解,但是对不知道如何实施虚拟化的读者,建议阅读第四篇的内容。

❑如果在虚拟化实施碰到问题,需要寻找解决方法的读者,可以阅读第五篇的内容。

资源和勘误

由于时间紧张,笔者水平有限,书中难免有错误和不足之处,笔者运营着一个微信订阅号,名字为“KVM虚拟化实践”,订阅号为“kvm_virt”二维码为:

欢迎读者扫描关注,“KVM虚拟化实践”会定时发布笔者对KVM虚拟化新的认识和经验总结。也欢迎读者通过这个微信订阅号和笔者交互,书中的勘误和更新也会通过这个订阅号发布。

致谢

感谢盛大游戏高级总监陈桂新,盛大游戏副总监、G云COO冯祯旺对我们的支持,我们四个人都曾经或者现在在盛大游戏虚拟化小组工作,桂总、冯总一路上支持我们,坚定地支持我们沿着KVM的方向前进,即使中间碰到多次挫折。回首看,我们坚持了下来,也很高兴我们这些年的成果终于开花结果,孵化出了G云(www.gicloud.com.cn),一款专门针对游戏行业物理机和云主机的混合云。

感谢金山西山居运维总监赫宝生对本书写作的鼓励和支持。感谢金山西山居运维架构师刘宇对本书的帮助和建议。

感谢曾经在盛大游戏虚拟化小组工作过的刘晓光、秦洁、杨树林,感谢现在还在盛大游戏虚拟化小组工作的夏学峰、闫强,这本书也是我们所有人的经验总结。

感谢盛大游戏网络技术负责人、G云网络架构师苏永华,金山西山居资深网络工程师李正奇在网络方面的支持和帮助。

感谢金山西山居资深系统工程师、Zabbix权威专家薛群在宿主机监控方面的帮助。

特别感谢金山西山居高级系统工程师赵斌,提供了部分虚拟化生产环境实践案例及测试结果。

感谢盛大游戏资深工程师杨帆、季青、武文对我们在服务器知识方面的支持和帮助。

感谢国内顶尖的数据库专家叶金荣在本书成书过程中的支持和协助。

感谢机械出版社的杨福川和高婧雅,福川兄出版了一系列互联网技术图书,在认识福川兄之前,我们已经购买了多本福川兄出版的书,和福川兄的合作是我们的梦想。相信随着时间的推移,会有更多的人认识到福川兄对中国互联网技术巨大的贡献。高婧雅编辑的专业、细致、认真、耐心令我们非常敬佩,和高婧雅合作的大半年内,我们受益匪浅,很感谢、很庆幸有机会和杨兄、高编辑合作。

致我们的家人

感谢我的舅舅、舅妈、表哥、表姐,你们对我的人生观影响很大;感谢我的父亲、母亲,是你们一直在默默支持我;感谢我妻子和女儿一直以来的理解和支持,你们是我的动力。

——肖力,2015年6月

感谢父母辛苦的培养,没有你们就没有今天的我。感谢老婆在我一无所有的时候默默陪在我的身边,还有可爱的儿子,你们是我一直前进的动力。

——汪爱伟,2015年6月

感谢生我养我的父亲母亲,这些年,你们辛苦了,儿子长大了,你们却老了。感谢所有一路和我走过来的人,你们的支持和信任,给了我前进的勇气和力量。感谢相信我,愿意和我一路走下去的人,无论明天怎样,我都希望一路有你。

——杨俊俊,2015年6月

参与这本书的写作对我来说非常荣幸,首先要感谢肖力等前辈传授经验并耐心支持,其次还要感谢家人对我业余时间不能陪伴的理解!

——赵德禄,2015年6月