第一篇 雲計算與虛擬化技術 1
第1章 虛擬化技術基本原理 2
1.1 雲計算與虛擬化技術 3
1.2 x86和非x86體係結構基礎 4
1.2.1 x86的發展曆程 4
1.2.2 x86-64 6
1.2.3 x86內存架構 7
1.2.4 x86-64的基本模式 23
1.2.5 x86-64的寄存器組 25
1.2.6 中斷與異常 26
1.2.7 I/O架構 31
1.2.8 DMA 32
1.2.9 時鍾 33
1.3 操作係統與虛擬化 34
1.3.1 操作係統 35
1.3.2 進程 35
1.3.3 係統虛擬化 38
1.3.4 係統虛擬化的發展曆程 39
1.3.5 可虛擬化條件 41
1.3.6 虛擬化的原理與分類 43
1.4 VMM技術架構分類 45
1.4.1 Hypervisor模型 46
1.4.2 宿主(Hosted)模型 47
1.4.3 混閤模型 48
1.5 本章小結 49
第2章 虛擬化實現技術架構 50
2.1 處理器虛擬化實現技術 52
2.1.1 Intel VT 53
2.1.2 AMD SVM 55
2.1.3 vCPU 55
2.2 中斷虛擬化實現技術 56
2.3 內存虛擬化實現技術 58
2.3.1 影子頁錶 60
2.3.2 Intel EPT 65
2.3.3 AMD NPT 67
2.4 I/O設備虛擬化實現技術 68
2.4.1 Intel VT-d 69
2.4.2 DMA重映射 70
2.4.3 I/O頁錶 73
2.4.4 AMD IOMMU 74
2.5 網絡虛擬化技術 76
2.6 時間虛擬化技術 79
2.6.1 操作係統和客戶機的時間概念 79
2.6.2 客戶機時間概念的實現 82
2.7 主流虛擬化産品及其特點 84
2.7.1 Xen 84
2.7.2 VMware 86
2.7.3 Hyper-V 87
2.7.4 KVM 88
2.8 本章小結 90
第二篇 Xen虛擬化技術 91
第3章 Xen軟件係統原理 92
3.1 Xen軟件模塊結構 93
3.1.1 Xen Hypervisor 93
3.1.2 特權虛擬域0(Dom0) 94
3.1.3 獨立設備驅動域(IDD) 95
3.1.4 非特權虛擬域U(DomU) 96
3.1.5 硬件虛擬域(HVM) 96
3.2 Xen係統啓動工作原理及流程 96
3.2.1 係統引導過程 97
3.2.2 Hypervisor啓動與初始化過程 98
3.2.3 Dom0啓動過程 99
3.2.4 DomU的啓動 99
3.3 Xen CPU虛擬化工作原理 100
3.3.1 x86體係虛擬化存在的問題 100
3.3.2 CPU虛擬化——半虛擬化(又稱為泛虛擬化) 102
3.3.3 CPU虛擬化技術——硬件虛擬化技術支持的全虛擬化 103
3.4 Xen內存虛擬化工作原理 105
3.4.1 內存虛擬化——直接模式 106
3.4.2 內存虛擬化——影子模式 107
3.5 I/O虛擬化工作原理 108
3.5.1 半虛擬化I/O 108
3.5.2 全虛擬化I/O 109
3.6 Xen虛擬機(DomU)生命周期管理 110
3.7 本章小結 112
第4章 Xen Hypervisor技術實現 113
4.1 Xen Hypervisor關鍵技術概述 114
4.2 Hypercall 114
4.2.1 Hypercall的實現機製 115
4.2.2 自定義Hypercall的方法 118
4.2.3 應用程序使用Hypercall的方法 120
4.3 事件通道 121
4.3.1 事件通道的初始化 121
4.3.2 事件通道的綁定 122
4.3.3 發送事件通知 136
4.3.4 事件通知的處理 138
4.4 數據共享 142
4.4.1 授權錶(Grant table) 142
4.4.2 XenStore和XenBus 146
4.4.3 分離設備驅動 149
4.5 本章小結 154
第三篇 KVM虛擬化技術 155
第5章 qemu-kvm虛擬化解決方案 156
5.1 概述 157
5.2 內核模塊組成概述 158
5.2.1 KVM的內核模塊結構 158
5.2.2 Linux內核源碼中的KVM 160
5.3 KVM所提供的API 162
5.3.1 KVM API縱覽 162
5.3.2 system ioctls調用 163
5.3.3 vm ioctl係統調用 164
5.3.4 vcpu ioctl係統調用 165
5.4 KVM內核模塊重要的數據結構 168
5.4.1 KVM結構體 168
5.4.2 kvm_vcpu結構體 169
5.4.3 kvm_x86_ops結構體 169
5.4.4 KVM API中重要的結構體 171
5.5 KVM內核模塊重要流程的分析 173
5.5.1 初始化流程 173
5.5.2 虛擬機的創建 175
5.5.3 vCPU的創建 177
5.5.4 vCPU的運行 180
5.6 qemu-kvm軟件架構分析 184
5.6.1 QEMU的三種運行模式 184
5.6.2 libvirt和virt-manager 185
5.6.3 KVM的調試接口 186
5.7 本章小結 187
第6章 qemu-kvm原理與分析 188
6.1 QEMU軟件架構 189
6.1.1 qemu-kvm的配置與編譯 189
6.1.2 qemu-kvm的架構與配置 190
6.2 QEMU組件 190
6.2.1 模塊模型 190
6.2.2 libkvm模塊 193
6.2.3 virtio組件 196
6.3 基於KVM的QEMU PC Emulator 199
6.3.1 KVM中的Machine模塊 199
6.3.2 基於KVM加速支持的CPU虛擬化模塊 207
6.3.3 虛擬機的內存管理 216
6.3.4 I/O管理 223
6.4 本章小結 225
第四篇 虛擬化軟件開放接口 227
第7章 Xen API接口技術及實現 228
7.1 Xen Management API接口概述 229
7.2 XML-RPC工作原理 230
7.2.1 XML-RPC概述 231
7.2.2 XML-RPC請求 232
7.2.3 XML-RPC響應 234
7.3 Xen Managemnet API的實現 236
7.3.1 C語言和Python語言的擴展與嵌入 236
7.3.2 Xen Management API類的定義 237
7.3.3 Xen Management API處理流程分析 238
7.4 本章小結 242
第8章 libvirt虛擬化控製中間件 243
8.1 libvirt概述 244
8.1.1 libvirt簡介及使用樣例 244
8.1.2 基於libvirt所開發的開源應用 245
8.1.3 安裝與配置 245
8.2 libvirt架構與開發 247
8.2.1 libvirt架構說明 247
8.2.2 libvirt API控製接口 250
8.2.3 libvirt的主機域管理 254
8.2.4 libvirt的網絡架構 254
8.2.5 libvirt的存儲管理 256
8.3 基於libvirt的XML配置解析 256
8.3.1 XML配置格式簡析 256
8.3.2 針對Xen的libvirt配置詳解 264
8.3.3 針對KVM/QEMU的libvirt配置詳解 271
8.4 本章小結 282
參考文獻 283
· · · · · · (
收起)