本书对云计算中关键技术之一的虚拟化技术进行了深入的分析,从x86 计算机体系结构以及操作系统的工作原理出发,介绍了虚拟化技术原理以及业界主流虚拟化软件产品,并以Xen、KVM 开源软件为例分析了虚拟化软件的架构及其实现方法,最后对虚拟化软件管理接口的工作原理以及实现方法进行了全面的梳理。本书注重技术理论与应用实践的紧密结合,可供从事云计算技术研究开发、设备制造、咨询设计、工程建设、运营维护与管理的技术人员和管理人员阅读,也可供高等院校通信工程专业、计算机专业师生参考,还可作为IT 培训机构的培训参考书。
·郭京·北京邮电大学硕士研究生,研究方向为云计算及虚拟化技术。 ·侯光华·1995年获北方交通大学信号与信息处理专业硕士学位,拥有近15年的电信行业产品研发经验。2012年加入中国电信云计算分公司,任高级工程师,负责云计算产品规划和研发,同时担任宽带论坛(BBF)商业业务委员会委员,并发表论文、国际文稿若干,拥有多项专利。·司伟·东北大学控制理论与控制工程专业硕士。2008年加入中国电信北京研究院,拥有多年数据通信产品研发经验,目前主要从事虚拟化安全、云计算系统架构、大数据等相关技术研究。·顾茜·毕业于北京邮电大学,主要从事云计算技术研究,政务云行业数据研究工作,掌握云数据管理、云数据挖掘和SPECvirt性能测评等云相关知识体系。发表学术论文8篇,拥有第一发明人发明专利两项,参与发明专利4项。 ·广小明·1993年毕业于上海交通大学。现任中国电信云计算分公司产品部总监,高级工程师,主要研究方向为服务器虚拟化和存储技术。 ·胡杰·2004年毕业于电信科学技术研究院。现任中国电信北京研究院云平台及应用研究团队总监,高级工程师,主要研究方向为服务器虚拟化和存储技术。 ·陈龙·2009年毕业于电子科技大学,毕业后加入中国电信北京研究院,负责中国电信定制网关中间件的开发和云主机业务的开发工作,并对嵌入式开发和和计算机体系结构方面有较深入的研究。
目 录第一篇 云计算与虚拟化技术第1章 虚拟化技术基本原理 21.1 云计算与虚拟化技术 31.2 x86和非x86体系结构基础 41.2.1 x86的发展历程 41.2.2 x86-64 61.2.3 x86内存架构 71.2.4 x86-64的基本模式 231.2.5 x86-64的寄存器组 251.2.6 中断与异常 261.2.7 I/O架构 311.2.8 DMA 321.2.9 时钟 331.3 操作系统与虚拟化 341.3.1 操作系统 351.3.2 进程 351.3.3 系统虚拟化 381.3.4 系统虚拟化的发展历程 391.3.5 可虚拟化条件 411.3.6 虚拟化的原理与分类 431.4 VMM技术架构分类 451.4.1 Hypervisor模型461.4.2 宿主(Hosted)模型 471.4.3 混合模型 481.5 本章小结 49第2章 虚拟化实现技术架构 502.1 处理器虚拟化实现技术 522.1.1 IntelVT 532.1.2 AMD SVM552.1.3 vCPU 552.2 中断虚拟化实现技术 562.3 内存虚拟化实现技术 582.3.1 影子页表 602.3.2 IntelEPT 652.3.3 AMDNPT 672.4 I/O设备虚拟化实现技术 682.4.1 IntelVT-d 692.4.2 DMA重映射 702.4.3 I/O页表 732.4.4 AMDIOMMU 742.5 网络虚拟化技术 762.5.1 虚拟通道 772.6 时间虚拟化技术 792.6.1 操作系统和客户机的时间概念 792.6.2 客户机时间概念的实现 822.7 主流虚拟化产品及其特点 842.7.1 Xen 842.7.2 VMware 862.7.3 Hyper–V 872.7.4 KVM 882.8 本章小结 90第二篇 Xen虚拟化技术篇第3章 Xen软件系统原理 923.1 Xen软件模块结构 933.1.1 XenHypervisor 933.1.2 特权虚拟域0(Dom0) 943.1.3 独立设备驱动域(IDD) 953.1.4 非特权虚拟域U(DomU) 963.1.5 硬件虚拟域(HVM) 963.2 Xen系统启动工作原理及流程 963.2.1 系统引导过程 973.2.2 Hypervisor启动与初始化过程983.2.3 Dom0启动过程 993.2.4 DomU的启动 993.3 XenCPU虚拟化工作原理 1003.3.1 x86体系虚拟化存在的问题 1003.3.2 CPU虚拟化—半虚拟化(又称为泛虚拟化) 1023.3.3 CPU虚拟化技术—硬件虚拟化技术支持的全虚拟化 1033.4 Xen内存虚拟化工作原理 1053.4.1 内存虚拟化—直接模式 1063.4.2 内存虚拟化—影子模式 1073.5 I/O虚拟化工作原理 1083.5.1 半虚拟化I/O 1083.5.2 全虚拟化I/O 1093.6 Xen虚拟机(DomU)生命周期管理 1103.7 本章小结 112第4章 Xen Hypervisor技术实现 1134.1 XenHypervisor关键技术概述 1144.2 Hypercall 1144.2.1 Hypercall的实现机制 1154.2.2 自定义Hypercall的方法 1184.2.3 应用程序使用Hypercall的方法 1204.3 事件通道 1214.3.1 事件通道的初始化 1214.3.2 事件通道的绑定 1224.3.3 发送事件通知 1364.3.4 事件通知的处理 1384.4 数据共享 1424.4.1 授权表(Granttable) 1424.4.2 XenStore和XenBus 1464.4.3 分离设备驱动 1494.5 本章小结 154第三篇 KVM虚拟化技术篇第5章 qemu-kvm虚拟化解决方案 1565.1 概述 1575.2 内核模块组成概述 1585.3 KVM所提供的API 1625.4 KVM内核模块重要的数据结构1685.4.1 KVM结构体 1685.4.2 kvm_vcpu结构体 1695.4.3 kvm_x86_ops结构体 1695.4.4 KVMAPI中重要的结构体 1715.5 KVM内核模块重要流程的分析1735.5.1 初始化流程 1735.5.2 虚拟机的创建 1755.5.3 vCPU的创建 1775.5.4 vCPU的运行 1805.6 qemu-kvm软件架构分析 1845.6.1 QEMU的三种运行模式 1845.6.2 libvirt和virt-manager 1855.6.3 KVM的调试接口 1865.7 本章小结 187第6章 qemu-kvm原理与分析 1886.1 QEMU软件架构 1896.1.1 qemu-kvm的配置与编译1896.1.2 qemu-kvm的架构与配置1906.2 QEMU组件 1906.2.1 模块模型 1906.2.2 libkvm模块 1936.2.3 virtio组件 1966.3 基于KVM的QEMU PCEmulator 1996.3.1 KVM中的Machine模块 1996.3.2 基于KVM加速支持的CPU虚拟化模块 2076.3.3 虚拟机的内存管理 2166.3.4 I/O管理 2236.4 本章小结 225第四篇 虚拟化软件开放接口第7章 Xen API接口技术及实现 2287.1 Xen ManagementAPI接口概述 2297.2 XML-RPC工作原理 2307.2.1 XML-RPC概述 2317.2.2 XML-RPC请求 2327.2.3 XML-RPC响应 2347.3 Xen ManagemnetAPI的实现 2367.3.1 C语言和Python语言的扩展与嵌入 2367.3.2 XenManagement API类的定义 2377.3.3 XenManagement API处理流程分析 2387.4 本章小结 242第8章 libvirt虚拟化控制中间件 2438.1 libvirt概述 2448.1.1 libvirt简介及使用样例 2448.1.2 基于libvirt所开发的开源应用 2458.1.3 安装与配置 2458.2 libvirt架构与开发 2478.2.1 libvirt架构说明2478.2.2 libvirtAPI控制接口 2508.2.3 libvirt的主机域管理2548.2.4 libvirt的网络架构 2548.2.5 libvirt的存储管理 2568.3 基于libvirt的XML配置解析 2568.3.1 XML配置格式简析 2568.3.2 针对Xen的libvirt配置详解 2658.3.3 针对KVM/QEMU的libvirt配置详解 2718.4 本章小结 282参考文献 283图目录 图1-1 x86的发展历程 4图1-2 线性地址空间构造 9图1-3 分段机制流程分布 11图1-4 段选择符的结构 12图1-5 段寄存器的构造 13图1-6 段描述符的结构 14图1-7 通过段选择符索引段描述符表 16图1-8 分页机制流程分布 17图1-9 未启用PAE的4KB页——二级页表 18图1-10 启用PAE的4KB页——三级页表 20图1-11 四级页表结构 23图1-12 APIC系统架构 28图1-13 中断门的格式 30图1-14 陷阱门的格式 30图1-15 DMA传输示意图 33图1-16 系统虚拟化结构 38图1-17 系统虚拟化的发展历程 39图1-18 虚拟环境的组成 41图1-19 Hypervisor模型的VMM 46图1-20 宿主模型的VMM 47图1-21 混合模型的VMM 48 图2-1 Intel VT的组成 51图2-2 VT-x 的基本思想 54图2-3 物理平台的中断架构 57图2-4 虚拟机的中断架构 57图2-5 内存虚拟化示意图 59图2-6 影子页表的作用 60图2-7 客户机操作系统页表与影子页表 61图2-8 EPT原理图 66图2-9 传统分页技术下的地址转换 67图2-10 嵌套分页技术下的地址转换 68图2-11 使用VT-d后访问内存架构 69图2-12 BDF结构 70图2-13 根条目的结构 71图2-14 上下文条目的结构 72图2-15 根条目表和上下文条目表构成的两级结构 73图2-16 DMA重映射的4KB页面地址转换过程 74图2-17 IOMMU技术示意图 75
转型时代丛书虚拟化技术原理与实现pdf