KVM實戰(zhàn):原理、進階與性能調優(yōu)
定 價:89 元
叢書名:云計算與虛擬化技術叢書
- 作者:任永杰 程舟
- 出版時間:2019/2/1
- ISBN:9787111619819
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP338
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
內容簡介
這是一部兼具實戰(zhàn)性、系統(tǒng)性又不乏深度的KVM虛擬化技術指南,既能讓新人快速掌握KVM的基礎知識,又能滿足有經(jīng)驗的讀者進階學習的需求。
本書兩位作者來自于阿里云和Intel,在云計算和KVM方面有深入的研究,他們將自己的經(jīng)驗傾囊相授,帶你全面了解KVM的各種技術細節(jié)。
本書在邏輯上分為三大部分:
第yi部分 基礎篇(第1~5章)
以云計算、虛擬化的概念開篇,首先,詳細介紹了KVM的原理和基礎架構,以及KVM生產(chǎn)環(huán)境的構建;然后,詳細講解了libvirt、virsh、virt-manager等KVM主流管理工具,以及包括CPU、內存、存儲、網(wǎng)絡、圖形界面等在內的各種核心基礎功能。這部分內容將幫助讀者打下扎實的KVM虛擬化技術基礎。
第二部分 進階篇(第6~9章)
從設備管理、內存管理、動態(tài)遷移、嵌套虛擬化、安全、CPU指令性能優(yōu)化等幾個特定的相對高階的知識點詳細展開。相信通過這部分內容的系統(tǒng)學習,讀者可以對半虛擬化驅動、設備直接分配、設備熱插拔、大頁內存、NUMA、嵌套虛擬化、安全特性、CPU新指令集等一系列熱門及高階的名詞和技術都會有比較深入的理解,并能培養(yǎng)起可以真正動手實踐的能力。
第三部分 性能測試與調優(yōu)篇(第10章)
從CPU、內存、網(wǎng)絡、磁盤等各個方面來介紹性能評估工具與測試參考結果,同時介紹了CPU新指令(如AVX2等)、THP、KSM、NUMA等對性能的影響。讀者可以根據(jù)本篇介紹的方法來對云服務器做性能評估,也可以對自己搭建的虛擬化環(huán)境做性能調優(yōu)。
(1)兩位作者來自于Intel和阿里云,是國內早期的KVM布道者之一,是虛擬化和云計算方面的專家。
(2)2013年,本書的第yi版彌補了市場空白,得到了市場的廣泛認可,本書在此基礎上做了大幅度修訂,與時具進。
為什么要寫這本書
自《KVM虛擬化技術:實戰(zhàn)與原理解析》(以下簡稱“上一本書”)出版以來,受到了讀者的熱烈歡迎,幾度脫銷重印。這給了筆者強烈的鼓舞和責任感,覺得有必要與時俱進給讀者介紹最新的KVM虛擬化技術的相關知識。
從上一本書出版后到現(xiàn)在近5年時間里,國內虛擬化技術迅速普及,云計算應用風起云涌,阿里云、騰訊云、華為云等國內云服務提供商迅速崛起,使得云計算、虛擬化不再是原來象牙塔里虛無縹緲的技術概念,而是與普通大眾日常生活息息相關的新名詞,KVM被這幾大云服務提供商廣泛采用,使得它成為云計算世界里事實上的虛擬化標準。在這樣的市場背景下,以Intel為代表的x86硬件廠商,這些年也愈加重視虛擬化技術的硬件支持與創(chuàng)新,ARM平臺的硬件虛擬化支持也愈加完善。硬件層面的創(chuàng)新也促使QEMU、KVM在軟件層面日新月異。比如,從2013年第1版發(fā)行至今,KVM(內核)版本從3.5發(fā)展到了4.8;QEMU版本從1.3發(fā)展到了2.7;專門針對KVM的qemu-kvm代碼樹已經(jīng)廢棄(被合并到了主流QEMU中)……因此,上一本書中的很多用例、方法和結論等,在新的代碼環(huán)境下已經(jīng)有些不合時宜,甚至會出錯。我們有必要給讀者提供最新且正確的信息。
相對于上一本書的修改
總體來說,我們對上一本書里所有的用例、圖例都做了大量修改更新,實驗環(huán)境采用筆者寫作時的最新技術:硬件平臺采用Intel Broadwell Xeon Server,KVM(內核)為4.8版本,QEMU為2.7版本,操作系統(tǒng)環(huán)境是RHEL 7.3。文中注釋改成腳注的形式,而不是像上一本書那樣出現(xiàn)在每章末尾。我們認為這樣更方便讀者閱讀。當然,文字表述上也進行了許多修改。
另外,我們對章節(jié)的結構也進行了重新組織,全書共分3篇,10章:第一篇“KVM虛擬化基礎”(第1章~第5章),第二篇“KVM虛擬化進階”(第6章~第9章),第三篇“性能測試與調優(yōu)”(第10章)。
除了上述的總體修改外,各章主要修改內容如下。
第1章,我們重新組織了結構,精簡了一些文字介紹,加入了一些數(shù)據(jù)圖表以便于讀者的理解。加入了云計算幾種服務模型的描述和圖示。加入了一節(jié)關于容器(Container)的簡介,以便讀者對比學習。
第2章,對上一本書相關章節(jié)進行了更為系統(tǒng)的梳理,介紹了硬件虛擬化技術、KVM、QEMU、與KVM配合的組件以及相關工具鏈。
第5章,著重對其中的網(wǎng)絡配置一節(jié)進行了更新。將上一本書中的第5章拆分成了第6章、第7章、第8章和第9章,并分別進行了內容擴充。
第6章,對應上一本書中的第5章的半虛擬化、設備直接分配、熱插拔這3節(jié),并分別進行了補充。在半虛擬化驅動一節(jié)中,我們新增了“內核態(tài)的vhost-net后端以及網(wǎng)卡多隊列”“使用用戶態(tài)的vhost-user作為后端驅動”“對Windows客戶機的優(yōu)化”這3小節(jié)。在設備直接分配一節(jié)中,我們使用VFIO替換掉了已經(jīng)被廢棄的Legacy passthrough。在熱插拔一節(jié),我們將內存熱插拔獨立出來,并著重更新,因為在上一本書出版時它還未被完全支持。除此之外,我們還新增了磁盤熱插拔和網(wǎng)絡接口的熱插拔兩節(jié)。
第7章,我們將上一本書中的第4章中內存大頁部分和上一本書中的第5章中的KSM、透明大頁等內容湊在一起,組成了KVM內存管理高級技巧,同時新增了NUMA(非統(tǒng)一內存訪問架構)一節(jié)。
第8章,由上一本書中的第5章的“動態(tài)遷移”和“遷移到KVM虛擬化環(huán)境”兩節(jié)組成。
第9章,在上一本書中的第5章的“嵌套虛擬化”“KVM安全”等內容的基礎上,新增了“CPU指令相關的性能優(yōu)化”一節(jié),著重介紹了最近幾年Intel的一些性能優(yōu)化新指令在虛擬化環(huán)境中的應用。
第10章,對應上一本書中的第8章,專門講KVM性能測試與優(yōu)化。我們在最新的軟硬件環(huán)境中重做了CPU、內存、網(wǎng)絡、磁盤的性能測試,獲取了最新的數(shù)據(jù),尤其對一些測試工具(benchmark)進行了重新選取,比如磁盤性能測試,我們放棄了IOzone和Bonnie++,而選用業(yè)界更認可的fio。另外,我們還加入了“CPU指令集對性能的提升”和“其他的影響客戶機性能的因素”兩節(jié)進行分析,希望對讀者進行虛擬化系能調優(yōu)有所啟示。
上一本書中的第7章“Linux發(fā)行版中的KVM”和第9章“參與KVM開源社區(qū)”分別作為本書的附錄A和附錄B,并進行了相應的內容更新。
其他章節(jié)的內容保持不變,即第3章為上一本書的第3章且內容不變;第4章為上一本書的第6章,內容不變。
讀者對象
本書適合對Linux下虛擬化或云計算基礎技術感興趣的讀者閱讀,包括Linux運維工程師、KVM開發(fā)者、云平臺開發(fā)者、虛擬化方案決策者、KVM的用戶以及其他對KVM虛擬機感興趣的計算機愛好者。希望本書對這些讀者了解KVM提供以下幫助。
Linux運維工程師:了解KVM的使用方法、功能和基本的性能數(shù)據(jù),能夠搭建高性能的KVM虛擬化系統(tǒng),并應用于生產(chǎn)環(huán)境中。
KVM開發(fā)者:了解KVM的基本原理和功能,也了解其基本用法和一些調試方法,以及如何參與到KVM開源社區(qū)中去貢獻代碼。
云平臺開發(fā)者:了解底層KVM虛擬化的基本原理和用法,以促進云平臺上層應用的開發(fā)和調試的效率。
虛擬化方案決策者:了解KVM的硬件環(huán)境需求和它的功能、性能概況,以便在虛擬化技術選型時做出最優(yōu)化的決策。
普通用戶:了解KVM的功能和如何使用KVM,用掌
前言
第一篇 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的現(xiàn)狀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虛擬化技術發(fā)展24
2.2 KVM架構概述25
2.3 KVM內核模塊26
2.4 QEMU用戶態(tài)設備模擬27
2.5 與QEMU/KVM結合的組件28
2.6 KVM上層管理工具30
2.7 本章小結31
第3章 構建KVM環(huán)境32
3.1 硬件系統(tǒng)的配置32
3.2 安裝宿主機Linux系統(tǒng)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 曾經(jīng)的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 內存設置基本參數(shù)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 網(wǎng)絡配置150
5.5.1 用QEMU實現(xiàn)的網(wǎng)絡模式151
5.5.2 使用直接的網(wǎng)橋模式154
5.5.3 用網(wǎng)橋實現(xiàn)NAT模式161
5.5.4 QEMU內部的用戶模式網(wǎng)絡170
5.5.5 其他網(wǎng)絡選項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 內核態(tài)的vhost-net后端以及網(wǎng)卡多隊列212
6.1.7 使用用戶態(tài)的vhost-user作為后端驅動215
6.1.8 kvm_clock配置216
6.1.9 對Windows客戶機的優(yōu)化218
6.2 設備直接分配(VT-d)219
6.2.1 VT-d概述219
6.2.2 VFIO簡介220
6.2.3 VT-d環(huán)境配置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 網(wǎng)卡接口的熱插拔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 動態(tài)遷移297
8.1.1 動態(tài)遷移的概念297
8.1.2 動態(tài)遷移的效率和應用場景298
8.1.3 KVM動態(tài)遷移原理299
8.1.4 KVM動態(tài)遷移實踐302
8.1.5 VT-d/SR-IOV的動態(tài)遷移306
8.2 遷移到KVM虛擬化環(huán)境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虛擬化環(huán)境(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