当前位置: 首页 > news >正文

新书推荐 |《KVM实战:原理、进阶与性能调优》

新书推荐

《KVM实战:原理、进阶与性能调优》

长按二维码
了解及购买

阿里云和Intel的云计算与虚拟化技术专家联合撰写,从基本原理、实战进阶和性能优化3个维度详细讲解KVM各种技术细节,极具系统性、实战性和深度

编辑推荐

1. 两位作者来自于Intel和阿里云,是国内早期的KVM布道者之一,是虚拟化和云计算方面的专家。

2. 2013年,本书的第一版弥补了市场空白,得到了市场的广泛认可,本书在此基础上做了大幅度修订,与时俱进。

内容简介

这是一部兼具实战性、系统性又不乏深度的KVM虚拟化技术指南,既能让新人快速掌握KVM的基础知识,又能满足有经验的读者进阶学习的需求。

本书两位作者来自于阿里云和Intel,在云计算和KVM方面有深入的研究,他们将自己的经验倾囊相授,带你全面了解KVM的各种技术细节。

本书在逻辑上分为三大部分:

  • 第一部分 基础篇(第1~5章) 

以云计算、虚拟化的概念开篇,首先,详细介绍了KVM的原理和基础架构,以及KVM生产环境的构建;然后,详细讲解了libvirt、virsh、virt-manager等KVM主流管理工具,以及包括CPU、内存、存储、网络、图形界面等在内的各种核心基础功能。这部分内容将帮助读者打下扎实的KVM虚拟化技术基础。

  • 第二部分 进阶篇(第6~9章)

从设备管理、内存管理、动态迁移、嵌套虚拟化、安全、CPU指令性能优化等几个特定的相对高阶的知识点详细展开。相信通过这部分内容的系统学习,读者可以对半虚拟化驱动、设备直接分配、设备热插拔、大页内存、NUMA、嵌套虚拟化、安全特性、CPU新指令集等一系列热门及高阶的名词和技术都会有比较深入的理解,并能培养起可以真正动手实践的能力。

  • 第三部分 性能测试与调优篇(第10章)

从CPU、内存、网络、磁盘等各个方面来介绍性能评估工具与测试参考结果,同时介绍了CPU新指令(如AVX2等)、THP、KSM、NUMA等对性能的影响。读者可以根据本篇介绍的方法来对云服务器做性能评估,也可以对自己搭建的虚拟化环境做性能调优。

作者简介

任永杰

资深虚拟化和云计算技术专家,就职于阿里云,担任技术专家。曾在Intel公司担任KVM/Xen等虚拟化的测试负责人,也曾在水木社区的虚拟化技术版块担任版主。

有十多年的虚拟化部署和使用经验,有超过七年的KVM虚拟化相关的研发和测试经验。对包括KVM在内的虚拟化技术有深入的研究,积累了丰富的实战经验,同时在Linux系统、C、Python、性能优化等方面也有很深的积累。

曾著有《KVM虚拟化:实战与原理解析》一书,填补了KVM类图书的空白。

程舟

资深虚拟化技术工程师和软件开发工程师,从事虚拟化领域的开发和测试工作多年。目前就职于Intel公司,担任虚拟化软件开发工程师。曾在Cisco担任软件开发工程师,有将近7年的网络设备的软件开发工作经验。对虚拟化技术、网络框架的设计调优、Kernel开发与调优非常擅长,有丰富的经验。

目录

前言

第一篇 KVM虚拟化基础

第1章 虚拟化简介2

1.1 云计算概述2

1.1.1 什么是云计算2

1.1.2 云计算的历史4

1.1.3 云计算的几种服务模型5

1.2 虚拟化技术6

1.2.1 什么是虚拟化6

1.2.2 软件虚拟化和硬件虚拟化7

1.2.3 半虚拟化和全虚拟化8

1.2.4 Type1和Type2虚拟化8

1.3 KVM简介9

1.3.1 KVM的历史9

1.3.2 KVM的功能概览10

1.3.3 KVM的现状12

1.3.4 KVM的展望13

1.4 其他的虚拟化解决方案简介14

1.4.1 Xen14

1.4.2 VMware14

1.4.3 HyperV16

1.4.4 Container17

1.5 本章小结17

第2章 KVM原理简介18

2.1 硬件虚拟化技术18

2.1.1 CPU虚拟化18

2.1.2 内存虚拟化20

2.1.3 I/O虚拟化22

2.1.4 Intel虚拟化技术发展24

2.2 KVM架构概述25

2.3 KVM内核模块26

2.4 QEMU用户态设备模拟27

2.5 与QEMU/KVM结合的组件28

2.6 KVM上层管理工具30

2.7 本章小结31

第3章 构建KVM环境32

3.1 硬件系统的配置32

3.2 安装宿主机Linux系统34

3.3 编译和安装KVM37

3.3.1 下载KVM源代码37

3.3.2 配置KVM39

3.3.3 编译KVM43

3.3.4 安装KVM44

3.4 编译和安装QEMU46

3.4.1 曾经的qemu-kvm46

3.4.2 下载QEMU源代码47

3.4.3 配置和编译QEMU47

3.4.4 安装QEMU49

3.5 安装客户机50

3.6 启动第一个KVM客户机53

3.7 本章小结53

第4章 KVM管理工具55

4.1 libvirt55

4.1.1 libvirt简介55

4.1.2 libvirt的安装与配置58

4.1.3 libvirt域的XML配置文件63

4.1.4 libvirt API简介76

4.1.5 建立到Hypervisor的连接78

4.1.6 libvirt API 使用示例82

4.2 virsh87

4.2.1 virsh简介87

4.2.2 virsh常用命令88

4.3 virt-manager95

4.3.1 virt-manager简介95

4.3.2 virt-manager编译和安装96

4.3.3 virt-manager使用96

4.4 virt-viewer、virt-install、virt-top和libguestfs105

4.4.1 virt-viewer105

4.4.2 virt-install106

4.4.3 virt-top107

4.4.4 libguestfs107

4.5  云计算管理平台109

4.5.1 OpenStack简介109

4.5.2 ZStack简介111

4.6 本章小结111

第5章 KVM核心基础功能112

5.1 硬件平台和软件版本说明112

5.2 CPU配置114

5.2.1 vCPU的概念115

5.2.2 SMP的支持116

5.2.3 CPU过载使用123

5.2.4 CPU模型124

5.2.5 进程的处理器亲和性和vCPU的绑定127

5.3 内存配置131

5.3.1 内存设置基本参数132

5.3.2 EPT和VPID简介133

5.3.3 内存过载使用136

5.4 存储配置137

5.4.1 存储配置和启动顺序137

5.4.2 qemu-img命令142

5.4.3 QEMU支持的镜像文件格式145

5.4.4 客户机存储方式149

5.5 网络配置150

5.5.1 用QEMU实现的网络模式151

5.5.2 使用直接的网桥模式154

5.5.3 用网桥实现NAT模式161

5.5.4 QEMU内部的用户模式网络170

5.5.5 其他网络选项174

5.6 图形显示175

5.6.1 SDL的使用175

5.6.2 VNC的使用177

5.6.3 VNC显示中的鼠标偏移186

5.6.4 非图形模式187

5.6.5 显示相关的其他选项189

5.7 本章小结191

第二篇 KVM虚拟化进阶

第6章 KVM设备高级管理194

6.1 半虚拟化驱动194

6.1.1 virtio概述194

6.1.2 安装virtio驱动196

6.1.3 使用virtio_balloon203

6.1.4 使用virtio_net208

6.1.5 使用virtio_blk210

6.1.6 内核态的vhost-net后端以及网卡多队列212

6.1.7 使用用户态的vhost-user作为后端驱动215

6.1.8 kvm_clock配置216

6.1.9 对Windows客户机的优化218

6.2 设备直接分配(VT-d)219

6.2.1 VT-d概述219

6.2.2 VFIO简介220

6.2.3 VT-d环境配置221

6.2.4 VT-d操作示例230

6.2.5 SR-IOV技术240

6.3 热插拔251

6.3.1 PCI设备热插拔252

6.3.2 PCI设备热插拔示例253

6.3.3 CPU的热插拔259

6.3.4 内存的热插拔260

6.3.5 磁盘的热插拔264

6.3.6 网卡接口的热插拔265

6.4 本章小结266

第7章 KVM内存管理高级技巧268

7.1 大页268

7.1.1 大页的介绍268

7.1.2 KVM虚拟化对大页的利用271

7.2 透明大页274

7.3 KSM277

7.3.1 KSM基本原理278

7.3.2 KSM操作实践280

7.3.3 QEMU对KSM的控制286

7.4 与NUMA相关的工具288

7.4.1 numastat289

7.4.2 numad290

7.4.3 numactl294

7.5 本章小结295

第8章 KVM迁移297

8.1 动态迁移297

8.1.1 动态迁移的概念297

8.1.2 动态迁移的效率和应用场景298

8.1.3 KVM动态迁移原理299

8.1.4 KVM动态迁移实践302

8.1.5 VT-d/SR-IOV的动态迁移306

8.2 迁移到KVM虚拟化环境307

8.2.1 virt-v2v工具介绍307

8.2.2 从Xen迁移到KVM308

8.2.3 从VMware迁移到KVM310

8.2.4 从VirtualBox迁移到KVM311

8.2.5 从物理机迁移到KVM虚拟化环境(P2V)312

8.3 本章小结313

第9章 其他高级功能314

9.1 嵌套虚拟化314

9.1.1 嵌套虚拟化的基本概念314

9.1.2 KVM嵌套KVM315

9.2 KVM安全318

9.2.1 SMEP/SMAP/MPX318

9.2.2 控制客户机的资源使用—cgroups319

9.2.3 SELinux和sVirt327

9.2.4 其他安全策略336

9.3 CPU指令相关的性能优化340

9.3.1 AVX/AVX2/AVX512340

9.3.2 XSAVE指令集342

9.3.3 AES新指令343

9.3.4 完全暴露宿主机CPU特性349

9.4 QEMU监控器351

9.4.1 QEMU monitor的切换和配置351

9.4.2 常用命令介绍352

9.5 qemu命令行参数358

9.5.1 回顾已用过的参数358

9.5.2 其他常用参数363

9.6 本章小结372

第三篇 性能测试与调优

第10章 KVM性能测试及参考数据374

10.1 虚拟化性能测试简介374

10.2 CPU性能测试376

10.2.1 CPU性能测试工具376

10.2.2 测试环境配置378

10.2.3 性能测试方法381

10.2.4 性能测试数据382

10.3 内存性能测试384

10.3.1 内存性能测试工具384

10.3.2 测试环境配置385

10.3.3 性能测试方法385

10.3.4 性能测试数据387

10.4 网络性能测试388

10.4.1 网络性能测试工具388

10.4.2 测试环境配置389

10.4.3 性能测试方法391

10.4.4 性能测试数据393

10.5 磁盘I/O性能测试394

10.5.1 磁盘I/O性能测试工具394

10.5.2 测试环境配置395

10.5.3 性能测试方法397

10.5.4 性能测试数据400

10.6 CPU指令集对性能的提升403

10.7 其他影响客户机性能的因素405

10.8 本章小结407

附录A Linux发行版中的KVM408

附录B 参与KVM开源社区417

你与世界

只差一个

公众号

相关文章:

  • 高并发编程知识体系
  • 倒计时5天!云计算技术沙龙[北京站]召开在即
  • CSS宣布支持三角函数,下一步是什么?
  • Serverless:云时代的软件架构核心思想
  • 新书推荐 |《C# 7.0本质论(英文版)》
  • 新书推荐 |《机器学习精讲:基础、算法及应用》
  • 1/10个iPhone Xs = 英伟达最便宜AI计算机,这是唯一的“核弹”?
  • 新书推荐《嵌入式实时操作系统:RT-Thread设计与实现》
  • 新书推荐 |《硅谷设计之道:探寻硅谷科技公司的体验设计策略》
  • 叫板 Android 开发!跨平台应用开发神器 Flutter 又添开源插件!
  • AI大牛推荐的八本必读NLP书籍(建议收藏)
  • 新书推荐 |《HTML 5与CSS 3权威指南(第4版•上下册)》
  • 以女大学生相亲为例,给你讲明白数据挖掘算法
  • 新书推荐 |《网络空间安全防御与态势感知》
  • 新书推荐 |《Hyperledger Fabric技术内幕:架构设计与实现原理》
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • CentOS从零开始部署Nodejs项目
  • Intervention/image 图片处理扩展包的安装和使用
  • Iterator 和 for...of 循环
  • javascript从右向左截取指定位数字符的3种方法
  • laravel 用artisan创建自己的模板
  • - 概述 - 《设计模式(极简c++版)》
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 聊一聊前端的监控
  • 入口文件开始,分析Vue源码实现
  • 什么是Javascript函数节流?
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 写代码的正确姿势
  • 智能合约Solidity教程-事件和日志(一)
  • 智能合约开发环境搭建及Hello World合约
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1)(1.9) MSP (version 4.2)
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (四)JPA - JQPL 实现增删改查
  • (转)shell调试方法
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net core 6 集成和使用 mongodb
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net 无限分类
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET导入Excel数据