第1章 虚拟化与云计算 1
1.1 云计算概念 1
1.1.1 发展历史和现状 1
1.1.2 概念 2
1.1.3 云计算模式 3
1.2 云计算技术 4
1.2.1 Map/Reduce 4
1.2.2 资源管理平台 5
1.2.3 虚拟化 5
1.3 虚拟化技术 5
1.3.1 软件虚拟化和硬件虚拟化 6
1.3.2 准虚拟化与全虚拟化 8
1.4 KVM简介 9
1.4.1 KVM的历史 9
1.4.2 KVM功能概览 9
1.4.3 KVM的前景 11
1.5 Xen简介 11
1.5.1 Xen的历史 11
1.5.2 Xen功能概览 12
1.5.3 Xen的前景 13
1.6 其他虚拟化方案简介 13
1.6.1 VMware 14
1.6.2 VirtualBox 14
1.6.3 Hyper-V 15
1.7 本章小结 15
1.8 本章注释 15
第2章 KVM原理简介 17
2.1 Linux操作系统简介 17
2.2 虚拟化模型 18
2.3 KVM架构 19
2.4 KVM模块 21
2.5 QEMU设备模型 22
2.6 Intel虚拟化技术 22
2.7 本章小结 23
第3章 构建KVM环境 24
3.1 硬件系统的配置 24
3.2 安装宿主机Linux系统 26
3.3 编译和安装KVM 28
3.3.1 下载KVM源代码 28
3.3.2 配置KVM 30
3.3.3 编译KVM 33
3.3.4 安装KVM 35
3.4 编译和安装qemu-kvm 37
3.4.1 下载qemu-kvm源代码 37
3.4.2 配置和编译qemu-kvm 38
3.4.3 安装qemu-kvm 39
3.5 安装客户机 40
3.6 启动第一个KVM客户机 42
3.7 本章小结 43
3.8 本章注释和参考阅读 44
第4章 KVM核心基础功能 45
4.1 硬件平台和软件版本说明 45
4.2 CPU配置 48
4.2.1 vCPU的概念 48
4.2.2 SMP的支持 49
4.2.3 CPU过载使用 54
4.2.4 CPU模型 55
4.2.5 进程的处理器亲和性和vCPU的绑定 57
4.3 内存配置 61
4.3.1 内存设置基本参数 61
4.3.2 EPT和VPID简介 64
4.3.3 大页(Huge Page) 66
4.3.4 内存过载使用 68
4.4 存储配置 70
4.4.1 存储配置和启动顺序 70
4.4.2 qemu-img命令 75
4.4.3 QEMU支持的镜像文件格式 78
4.4.4 客户机存储方式 80
4.5 网络配置 82
4.5.1 QEMU支持的网络模式 83
4.5.2 使用网桥模式 85
4.5.3 使用NAT模式 90
4.5.4 QEMU内部的用户模式网络 98
4.5.5 其他网络选项 102
4.6 图形显示 103
4.6.1 SDL的使用 103
4.6.2 VNC的使用 105
4.6.3 VNC显示中的鼠标偏移 112
4.6.4 非图形模式 113
4.6.5 显示相关的其他选项 115
4.7 本章小结 116
4.8 本章注释和参考阅读 116
第5章 KVM高级功能详解 120
5.1 半虚拟化驱动 120
5.1.1 virtio概述 120
5.1.2 安装virtio驱动 122
5.1.3 使用virtio balloon 128
5.1.4 使用virtio net 133
5.1.5 使用virtio blk 137
5.1.6 kvm clock配置 138
5.2 设备直接分配(VT-d) 140
5.2.1 VT-d概述 140
5.2.2 VT-d环境配置 141
5.2.3 VT-d操作示例 150
5.2.4 SR-IOV技术 160
5.3 热插拔 170
5.3.1 PCI设备热插拔 170
5.3.2 PCI设备热插拔示例 171
5.3.3 CPU和内存的热插拔 176
5.4 动态迁移 177
5.4.1 动态迁移的概念 177
5.4.2 动态迁移的效率和应用场景 178
5.4.3 KVM动态迁移原理和实践 180
5.4.4 VT-d/SR-IOV的动态迁移 187
5.5 嵌套虚拟化 188
5.5.1 嵌套虚拟化的基本概念 188
5.5.2 KVM嵌套KVM 188
5.6 KSM技术 191
5.6.1 KSM基本原理 191
5.6.2 KSM操作实践 193
5.7 KVM其他特性简介 197
5.7.1 1GB大页 197
5.7.2 透明大页 200
5.7.3 AVX和XSAVE 203
5.7.4 AES新指令 205
5.7.5 完全暴露宿主机CPU特性 210
5.8 KVM安全 212
5.8.1 SMEP 212
5.8.2 控制客户机的资源使用——cgroups 213
5.8.3 SELinux和sVirt 220
5.8.4 可信任启动——Tboot 228
5.8.5 其他安全策略 237
5.9 QEMU监控器 241
5.9.1 QEMU monitor的切换和配置 241
5.9.2 常用命令介绍 242
5.10 qemu-kvm命令行参数 249
5.10.1 回顾已用过的参数 249
5.10.2 其他常用参数 253
5.11 迁移到KVM虚拟化环境 261
5.11.1 virt-v2v工具介绍 261
5.11.2 从Xen迁移到KVM 262
5.11.3 从VMware迁移到KVM 265
5.11.4 从VirtualBox迁移到KVM 266
5.11.5 从物理机迁移到KVM虚拟化环境(P2V) 266
5.12 本章小结 267
5.13 注释和参考阅读 268
第6章 KVM管理工具 272
6.1 libvirt 272
6.1.1 libvirt简介 272
6.1.2 libvirt的编译、安装和配置 275
6.1.3 libvirt和libvirtd的配置 281
6.1.4 libvirt域的XML配置文件 285
6.1.5 libvirtAPI简介 297
6.1.6 建立到Hypervisor的连接 299
6.1.7 libvirt API使用示例 303
6.2 virsh 308
6.2.1 virsh简介 308
6.2.2 virsh常用命令 310
6.3 virt-manager 316
6.3.1 virt-manager简介 316
6.3.2 virt-manager编译和安装 317
6.3.3 virt-manager使用 317
6.4 virt-viewer、virt-install和virt-top 324
6.4.1 virt-viewer 324
6.4.2 virt-install 325
6.4.3 virt-top 327
6.5 OpenStack云计算平台 327
6.5.1 OpenStack简介 327
6.5.2 使用DevStack安装和配置OpenStack开发环境 330
6.5.3 在OpenStack中使用KVM 332
6.6 本章小结 334
6.7 本章注释和参考阅读 334
第7章 Linux发行版中的KVM 336
7.1 RHEL和Fedora中的KVM 336
7.1.1 Red Hat、RHEL、Fedora和CentOS简介 336
7.1.2 RHEL中的KVM 337
7.1.3 Fedora中的KVM 338
7.2 SLES和openSUSE中的KVM 339
7.2.1 SLES中的KVM 339
7.2.2 openSUSE中KVM 341
7.3 Ubuntu中的KVM 341
7.4 本章小结 343
7.5 本章注释和参考阅读 344
第8章 KVM性能测试及参考数据 345
8.1 虚拟化性能测试简介 345
8.2 CPU性能测试 347
8.2.1 CPU性能测试工具 347
8.2.2 测试环境配置 349
8.2.3 性能测试方法 350
8.2.4 性能测试数据 352
8.3 内存性能测试 354
8.3.1 内存性能测试工具 355
8.3.2 测试环境配置 356
8.3.3 性能测试方法 356
8.3.4 性能测试数据 357
8.4 网络性能测试 360
8.4.1 网络性能测试工具 360
8.4.2 测试环境配置 361
8.4.3 性能测试方法 362
8.4.4 性能测试数据 364
8.5 磁盘I/O性能测试 367
8.5.1 磁盘I/O性能测试工具 367
8.5.2 测试环境配置 368
8.5.3 性能测试方法 369
8.5.4 性能测试数据 370
8.6 本章小结 373
8.7 本章注释和参考阅读 373
第9章 参与KVM开源社区 375
9.1 开源社区介绍 375
9.1.1 Linux开源社区 375
9.1.2 KVM开源社区 377
9.1.3 QEMU开源社区 377
9.1.4 其他开源社区 378
9.2 代码结构简介 379
9.2.1 KVM代码 379
9.2.2 QEMU代码 381
9.2.3 KVM单元测试代码 383
9.2.4 KVM Autotest代码 385
9.3 向开源社区贡献代码 386
9.3.1 开发者邮件列表 386
9.3.2 代码风格 387
9.3.3 生成patch 391
9.3.4 检查patch 394
9.3.5 提交patch 396
9.4 提交KVM相关的bug 399
9.4.1 通过邮件列表提交bug 399
9.4.2 使用bug管理系统提交bug 401
9.4.3 使用二分法定位bug 401
9.5 本章小结 404
9.6 本章注释和参考阅读 404