這是一部兼具實戰性、系統性又不乏深度的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等對性能的影響。讀者可以根據本篇介紹的方法來對雲伺服器做性能評估,也可以對自己搭建的虛擬化環境做性能調優。
目錄
前言
第一篇 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
第一篇 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
網路書店
類別
折扣
價格
-
新書87折$465