Contents 目 錄
前言
第一篇 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
· · · · · · (
收起)