●前言
篇KVM虛擬化基礎
章虛擬化簡介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.4Type1和Type2虛擬化8
1.3KVM簡介9
1.3.1KVM的歷史9
1.3.2KVM的功能概覽10
1.3.3KVM的現狀12
1.3.4KVM的展望13
1.4其他的虛擬化解決方案簡介14
1.4.1Xen14
1.4.2VMware14
1.4.3HyperV16
1.4.4Container17
1.5本章小結17
第2章KVM原理簡介18
2.1硬件虛擬化技術18
2.1.1CPU虛擬化18
2.1.2內存虛擬化20
2.1.3I/O虛擬化22
2.1.4Intel虛擬化技術發展24
2.2KVM架構概述25
2.3KVM內核模塊26
2.4QEMU用戶態設備模擬27
2.5與QEMU/KVM結合的組件28
2.6KVM上層管理工具30
2.7本章小結31
第3章構建KVM環境32
3.1硬件繫統的配置32
3.2安裝宿主機Linux繫統34
3.3編譯和安裝KVM37
3.3.1KVM源代碼37
3.3.2配置KVM39
3.3.3編譯KVM43
3.3.4安裝KVM44
3.4編譯和安裝QEMU46
3.4.1曾經的qemu-kvm46
3.4.2QEMU源代碼47
3.4.3配置和編譯QEMU47
3.4.4安裝QEMU49
3.5安裝客戶機50
3.6啟動個KVM客戶機53
3.7本章小結5
第4章KVM管理工具55
4.1libvirt55
4.1.1libvirt簡介55
4.1.2libvirt的安裝與配置58
4.1.3libvirt域的XML配置文件63
4.1.4libvirtAPI簡介76
4.1.5建立到Hypervisor的連接78
4.1.6libvirtAPI使用示例82
4.2virsh87
4.2.1virsh簡介87
4.2.2virsh常用命令88
4.3virt-manager95
4.3.1virt-manager簡介95
4.3.2virt-manager編譯和安裝96
4.3.3virt-manager使用96
4.4virt-viewer、virt-install、virt-top和libguestfs105
4.4.1virt-viewer105
4.4.2virt-install106
4.4.3virt-top107
4.4.4libguestfs107
4.5雲計算管理平臺109
4.5.1OpenStack簡介109
4.5.2ZStack簡介111
4.6本章小結111
第5章KVM核心基礎功能112
5.1硬件平臺和軟件版本說明112
5.2CPU配置114
5.2.1vCPU的概念115
5.2.2SMP的支持116
5.2.3CPU過載使用123
5.2.4CPU模型124
5.2.5進程的處理器親和性和vCPU的綁定127
5.3內存配置131
5.3.1內存設置基本參數132
5.3.2EPT和VPID簡介133
5.3.3內存過載使用136
5.4存儲配置137
5.4.1存儲配置和啟動順序137
5.4.2qemu-img命令142
5.4.3QEMU支持的鏡像文件格式145
5.4.4客戶機存儲方式149
5.5網絡配置150
5.5.1用QEMU實現的網絡模式151
5.5.2使用直接的網橋模式154
5.5.3用網橋實現NAT模式161
5.5.4QEMU內部的用戶模式網絡170
5.5.5其他網絡選項174
5.6圖形顯示175
5.6.1SDL的使用175
5.6.2VNC的使用177
5.6.3VNC顯示中的鼠標偏移186
5.6.4非圖形模式187
5.6.5顯示相關的其他選項189
5.7本章小結191
第二篇KVM虛擬化進階
第6章KVM設備不錯管理194
6.1半虛擬化驅動194
6.1.1virtio概述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.8kvm_clock配置216
6.1.9對Windows客戶機的優化218
6.2設備直接分配(VT-d)219
6.2.1VT-d概述219
6.2.2VFIO簡介220
6.2.3VT-d環境配置221
6.2.4VT-d操作示例230
6.2.5SR-IOV技術240
6.3熱插撥251
6.3.1PCI設備熱插撥252
6.3.2PCI設備熱插撥示例253
6.3.3CPU的熱插撥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.2KVM虛擬化對大頁的利用271
7.2透明大頁274
7.3KSM277
7.3.1KSM基本原理278
7.3.2KSM操作實踐280
7.3.3QEMU對KSM的控制286
7.4與NUMA相關的工具288
7.4.1numastat289
7.4.2numad290
7.4.3numactl294
7.5本章小結295
第8章KVM遷移297
8.1動態遷移297
8.1.1動態遷移的概念297
8.1.2動態遷移的效率和應用場景298
8.1.3KVM動態遷移原理299
8.1.4KVM動態遷移實踐302
8.1.5VT-d/SR-IOV的動態遷移306
8.2遷移到KVM虛擬化環境307
8.2.1virt-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.2KVM嵌套KVM315
9.2KVM安全318
9.2.1SMEP/SMAP/MPX318
9.2.2控制客戶機的資源使用——cgroups319
9.2.3SELinux和sVirt327
9.2.4其他安全策略336
9.3CPU指令相關的性能優化340
9.3.1AVX/AVX2/AVX512340
9.3.2XSAVE指令集342
9.3.3AES新指令343
9.3.4完全暴露宿主機CPU特性349
9.4QEMU監控器351
9.4.1QEMUmonitor的切換和配置351
9.4.2常用命令介紹352
9.5qemu命令行參數358
9.5.1回顧已用過的參數358
9.5.2其他常用參數363
9.6本章小結372
第三篇性能測試與調優
0章KVM性能測試及參考數據374
10.1虛擬化性能測試簡介374
10.2CPU性能測試376
10.2.1CPU性能測試工具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.6CPU指令集對性能的提升403
10.7其他影響客戶機性能的因素405
10.8本章小結407
附錄ALinux發行版中的KVM408
附錄B參與KVM開源社區417
內容簡介
內容簡介這是一部兼具實戰性、繫統性又不乏深度的KVM虛擬化技術指南,既能讓新人快速掌握KVM的基礎知識,又能滿足有經驗的讀者進階學習的需求。本書兩位作者來自於阿裡雲和Intel,在雲計算和KVM方面有深入的研究,他們將自己的經驗傾囊相授,帶你全面了解KVM的各種技術細節。本書在邏輯上分為三大部分:第yi部分 基礎篇(~5章) 以雲計算、虛擬化的概念開篇,首先,詳細介紹了KVM的原理和基礎架構,以及KVM生產環境的構建;然後,詳細講解了libvirt、virsh、virt-manager等KVM主流管理工具,以及包括CPU、內存、存儲、網絡、圖形界面等在內的各種核心基礎功能。這部分內容將幫助讀者打下扎實的KVM虛擬化技術基礎。第二部分 進階篇(第6~9章)從設備管理、內存管理、動態遷移、嵌套虛擬化、安全、CPU指令性能優化等幾個特定的相對高階的知識點詳細展開。相信通過這部分內容的繫統學習,讀......