内容简介
本Linux
KVM虚拟化技术专著,由Intel虚拟化技术部门虚拟化技术专家和国内KVM技术的先驱者撰写,性毋庸置疑。在具体内容上,本书不仅系统介绍了KVM虚拟机的功能、特性和使用方法,而且还深入地剖析了KVM虚拟机的核心技术和工作原理,对KVM做了全面而透彻的讲解。
全书一共9章:第1章介绍了云计算和虚拟化的概念,并对KVM等几种流行的虚拟化技术做了比较;第2章介绍了KVM的基本架构、QEMU的作用以及Intel的硬件虚拟化技术;第3章详细讲解了KVM依赖的硬件环境配置,编译和安装KVM和QEMU的步骤与方法,以及KVM客户机的启动;第4章深入讲解了KVM的基础功能,包括虚拟的CPU、内存、存储、网络、图形显示等的配置和基本原理,以及CPU和内存的过载使用;第5章讲解了KVM的功能,包括半虚拟化驱动virtio、设备直接分配VT-d、热插拔、动态迁移、嵌套虚拟化、KSM、透明大页、KVM安全技术、QEMU监控器、QEMU命令行参数以及从物理机或其他虚拟机迁移到KVM的方法;第6章介绍了管理KVM虚拟化的上层软件;第7章介绍了RHEL等所有流行的Linux发行版中的KVM虚拟化功能的使用;第8章先介绍了虚拟化性能测试,然后详细介绍了对KVM虚拟化的CPU、内存、网络、磁盘I/O等重要组件进行性能测试的方法、工具和步骤;第9章介绍了Linux、KVM、QEMU等开源社区的情况,KVM、QEMU和KVM单元测试代码的基本结构,以及如何向QEMU/KVM开源社区贡献自己的代码和如何提交KVM相关的bug。
目录
前言
第1章 虚拟化与云计算
1.1 云计算概念
1.1.1 发展历史和现状
1.1.2 概念
1.1.3 云计算模式
1.2 云计算技术
1.2.1 Map/Reduce
1.2.2 资源管理平台
1.2.3 虚拟化
1.3 虚拟化技术
1.3.1 软件虚拟化和硬件虚拟化
1.3.2 准虚拟化与全虚拟化
1.4 KVM简介
1.4.1 KVM的历史
1.4.2 KVM功能概览
1.4.3 KVM的前景
1.5 Xen简介
1.5.1 Xen的历史
1.5.2 Xen功能概览
1.5.3 Xen的前景
1.6 其他虚拟化方案简介
1.6.1 VMware
1.6.2 VirtualBox
1.6.3 Hyper-V
1.7 本章小结
1.8 本章注释
第2章 KVM原理简介
2.1 Linux操作系统简介
2.2 虚拟化模型
2.3 KVM架构
2.4 KVM模块
2.5 QEMU设备模型
2.6 Intel虚拟化技术
2.7 本章小结
第3章 构建KVM环境
3.1 硬件系统的配置
3.2 安装宿主机Linux系统
3.3 编译和安装KVM
3.3.1 下载KVM源代码
3.3.2 配置KVM
3.3.3 编译KVM
3.3.4 安装KVM
3.4 编译和安装qemu-kvm
3.4.1 下载qemu-kvm源代码
3.4.2 配置和编译qemu-kvm
3.4.3 安装qemu-kvm
3.5 安装客户机
3.6 启动第一个KVM客户机
3.7 本章小结
3.8 本章注释和参考阅读
第4章 KVM核心基础功能
4.1 硬件平台和软件版本说明
4.2 CPU配置
4.2.1 vCPU的概念
4.2.2 SMP的支持
4.2.3 CPU过载使用
4.2.4 CPU模型
4.2.5 进程的处理器亲和性和vCPU的绑定
4.3 内存配置
4.3.1 内存设置基本参数
4.3.2 EPT和VPID简介
4.3.3 大页(Huge Page)
4.3.4 内存过载使用
4.4 存储配置
4.4.1 存储配置和启动顺序
4.4.2 qemu-img命令
4.4.3 QEMU支持的镜像文件格式
4.4.4 客户机存储方式
4.5 网络配置
4.5.1 QEMU支持的网络模式
4.5.2 使用网桥模式
4.5.3 使用NAT模式
4.5.4 QEMU内部的用户模式网络
4.5.5 其他网络选项
4.6 图形显示
4.6.1 SDL的使用
4.6.2 VNC的使用
4.6.3 VNC显示中的鼠标偏移
4.6.4 非图形模式
4.6.5 显示相关的其他选项
4.7 本章小结
4.8 本章注释和参考阅读
第5章 KVM功能详解
5.1 半虚拟化驱动
5.1.1 virtio概述
5.1.2 安装virtio驱动
5.1.3 使用virtio_balloon
5.1.4 使用virtio_net
5.1.5 使用virtio_blk
5.1.6 kvm_clock配置
5.2 设备直接分配(VT-d)
5.2.1 VT-d概述
5.2.2 VT-d环境配置
5.2.3 VT-d操作示例
5.2.4 SR-IOV技术
5.3 热插拔
5.3.1 PCI设备热插拔
5.3.2 PCI设备热插拔示例
5.3.3 CPU和内存的热插拔
5.4 动态迁移
5.4.1 动态迁移的概念
5.4.2 动态迁移的效率和应用场景
5.4.3 KVM动态迁移原理和实践
5.4.4 VT-d/SR-IOV的动态迁移
5.5 嵌套虚拟化
5.5.1 嵌套虚拟化的基本概念
5.5.2 KVM嵌套KVM
5.6 KSM技术
5.6.1 KSM基本原理
5.6.2 KSM操作实践
5.7 KVM其他特性简介
5.7.1 1GB大页
5.7.2 透明大页
5.7.3 AVX和XSAVE
5.7.4 AES新指令
5.7.5 暴露宿主机CPU特性
5.8 KVM安全
5.8.1 SMEP
5.8.2 控制客户机的资源使用-cgroups
5.8.3 SELinux和sVirt
5.8.4 可信任启动-Tboot
5.8.5 其他安全策略
5.9 QEMU监控器
5.9.1 QEMU monitor的切换和配置
5.9.2 常用命令介绍
5.10 qemu-kvm命令行参数
5.10.1 回顾已用过的参数
5.10.2 其
摘要与插图
第1章虚拟化与云计算
本书是一本以KVM为例,讲解虚拟化技术的书。可是看到这一章的标题,有读者会问:虚拟化为什么会跟云计算扯到一起去呢?其实,作为两个时下比较热门的技术,它们之间有着密不可分的千丝万缕的联系。本章将试图为读者理清它们之间的关系,从简单介绍云计算的概念开始,逐步解释虚拟化技术在云计算中的作用,并对当前流行的虚拟化解决方案进行一些简单的对比。
1.1 云计算概念
云计算是一个本世纪初才方兴未艾的热门名词,其本身是由Google前席执行官埃里克·施密特(Eric
Schmidt)在2006年8月9日的搜索引擎大会(SES San Jose
2006)上次提出的。在此之后,云计算变得炙手可热,很多公司趁势宣传,号称自己是的云计算公司。加之业界也一直没有对云计算形成一个统一的定义,各种各样的云变得“乱花渐欲迷人眼”。抛开形形色色的宣传,本书试图为读者一步步理清云计算的真实面目。
1.1.1 发展历史和现状
虽然云计算的提出距离现在还只是短短的几年,但是云计算并不算是个的新事物,因为早在它之前已经有各种类似或关联的概念被先后提出。早在60年代麦卡锡(John
McCarthy)就提出了把计算能力作为一种像水和电一样的公用事业提供给用户。1999年,Salesforce.com提出的通过一个网站向企业提供企业级的应用的概念,已经颇有云计算的雏形。另外,20世纪90年代,为了充分利用空闲的CPU资源,通过网络互联搭建平行分布式计算平台,诞生了网格计算,例如1999年出现的SETI@home[1]科学研究项目。在网格计算中,将一个大型的计算任务拆分,分配给各个网格终端计算然后组合的思想,与云计算中的Map/Reduce技术不谋而合。
这些早期的概念虽然与云计算相关,但是要么碍于当时的计算机和网络技术,要么只是作为一种研究项目,始终没有能够被广泛推广并形成规模。然而,在本世纪初,计算机网络的大量普及和Web数据中心的建立,为云计算提供了必要的硬件准备。
在现有的被大家熟知并使用的共有云计算平台中,名的是由Amazon(亚马逊)和Google(谷歌)公司提供的服务。
Amazon使用弹性计算云(EC2)和简单存储服务(S3)为企业提供计算和存储服务。收费的服务项目包括存储服务器、带宽、CPU资源以及月租费。月租费与电话月租费类似,存储服务器、带宽按容量收费,CPU根据时长(小时)运算量收费。Amazon把云计算做成一个大生意并没有花太长的时间:不到两年时间,在Amazon上注册的开发人员就达44万人,还有为数众多的企业级用户。云计算是Amazon增长的业务之一。Amazon的财报数据显示,在其2012年收入中,云计算相关业务的收入已经高达21亿美元。
Google则当数的云计算的使用者。Google搜索引擎就建立在分布在全世界200多个地点、超过100万台服务器的支撑之上,这些设施的数量正在迅猛增长。Google地球、地图、Gmail、Docs等也同样使用了这些基础设施。对于Google
Docs[2]之类的应用,用户数据会保存在互联网上的某个位置,可以通过任何一个与互联网相连的系统十分便利地访问这些数据。Google于2008年4月推出了Google
App
Engine(GAE)云计算服务,GAE是采用“平台即服务”(PaaS)的云计算模式,可以让第三方开发者在GAE平台上快速地开发自己的Web应用程序,而且GAE还将开发者的Web应用程序部署在Google的数据中心。Google还于2012年6月底发布了自己的“基础设施即服务”(IaaS)模式的云计算平台—Google
Compute Engine(GCE),GCE的底层采用的是KVM虚拟化技术,它提供了与亚马逊EC2类似的云计算服务。
随着云计算的价值被不