3dwoo大學簡體電腦書店
KVM實戰:原理、進階與性能調優
( 簡體 字)
作者:任永杰 程舟 著類別:1. -> 作業系統 -> 虛擬機(VMWare)
出版社:機械工業出版社KVM實戰:原理、進階與性能調優 3dWoo書號: 50704
詢問書籍請說出此書號!
有庫存
NT售價: 445
出版日:2/1/2019
頁數:442
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787111619819 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
前言
第一篇 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
這是一部兼具實戰性、系統性又不乏深度的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等對性能的影響。讀者可以根據本篇介紹的方法來對云服務器做性能評估,也可以對自己搭建的虛擬化環境做性能調優。



2013年,當KVM在國內被廣泛認可和使用時,本書的前身《KVM虛擬機化技術:實戰與原理解析》填補了KVM圖書的空白,所幸的是,口碑和銷量都不錯。5年多來,隨著虛擬化技術和云計算的發展和普及,KVM已經成為云計算領域虛擬化技術的事實標準,與KVM相關的軟硬件生態環境都發生了很大的變化,導致《KVM虛擬機化技術:實戰與原理解析》里面的很多內容已經過時。應廣大讀者的要求,我們對這本書進行了大幅修改和重寫,因為改動比較大,所以書名也做了相應的調整,使之與內容更加貼合。

總的來說,本書做了以下方面的調整:

實驗的硬件、軟件和操作系統均采用當前最新的版本;

所有的用例、圖例都做了修改和更新;

對全書的結構做了較大的調整,內容邏輯和學習曲線更加合理;

刪除和更新了原有過時的內容;

優化和補充了原有的部分內容,使之更深入和透徹;

新增了大量與新技術和作者新經驗相關的內容。

……

具體的變化,前言中做了非常詳盡的描述。
為什么要寫這本書

自《KVM虛擬化技術:實戰與原理解析》(以下簡稱“上一本書”)出版以來,受到了讀者的熱烈歡迎,幾度脫銷重印。這給了筆者強烈的鼓舞和責任感,覺得有必要與時俱進給讀者介紹最新的KVM虛擬化技術的相關知識。

從上一本書出版后到現在近5年時間里,國內虛擬化技術迅速普及,云計算應用風起云涌,阿里云、騰訊云、華為云等國內云服務提供商迅速崛起,使得云計算、虛擬化不再是原來象牙塔里虛無縹緲的技術概念,而是與普通大眾日常生活息息相關的新名詞,KVM被這幾大云服務提供商廣泛采用,使得它成為云計算世界里事實上的虛擬化標準。在這樣的市場背景下,以Intel為代表的x86硬件廠商,這些年也愈加重視虛擬化技術的硬件支持與創新,ARM平臺的硬件虛擬化支持也愈加完善。硬件層面的創新也促使QEMU、KVM在軟件層面日新月異。比如,從2013年第1版發行至今,KVM(內核)版本從3.5發展到了4.8;QEMU版本從1.3發展到了2.7;專門針對KVM的qemu-kvm代碼樹已經廢棄(被合并到了主流QEMU中)……因此,上一本書中的很多用例、方法和結論等,在新的代碼環境下已經有些不合時宜,甚至會出錯。我們有必要給讀者提供最新且正確的信息。

相對于上一本書的修改

總體來說,我們對上一本書里所有的用例、圖例都做了大量修改更新,實驗環境采用筆者寫作時的最新技術:硬件平臺采用Intel Broadwell Xeon Server,KVM(內核)為4.8版本,QEMU為2.7版本,操作系統環境是RHEL 7.3。文中注釋改成腳注的形式,而不是像上一本書那樣出現在每章末尾。我們認為這樣更方便讀者閱讀。當然,文字表述上也進行了許多修改。

另外,我們對章節的結構也進行了重新組織,全書共分3篇,10章:第一篇“KVM虛擬化基礎”(第1章~第5章),第二篇“KVM虛擬化進階”(第6章~第9章),第三篇“性能測試與調優”(第10章)。

除了上述的總體修改外,各章主要修改內容如下。

第1章,我們重新組織了結構,精簡了一些文字介紹,加入了一些數據圖表以便于讀者的理解。加入了云計算幾種服務模型的描述和圖示。加入了一節關于容器(Container)的簡介,以便讀者對比學習。

第2章,對上一本書相關章節進行了更為系統的梳理,介紹了硬件虛擬化技術、KVM、QEMU、與KVM配合的組件以及相關工具鏈。

第5章,著重對其中的網絡配置一節進行了更新。將上一本書中的第5章拆分成了第6章、第7章、第8章和第9章,并分別進行了內容擴充。

第6章,對應上一本書中的第5章的半虛擬化、設備直接分配、熱插拔這3節,并分別進行了補充。在半虛擬化驅動一節中,我們新增了“內核態的vhost-net后端以及網卡多隊列”“使用用戶態的vhost-user作為后端驅動”“對Windows客戶機的優化”這3小節。在設備直接分配一節中,我們使用VFIO替換掉了已經被廢棄的Legacy passthrough。在熱插拔一節,我們將內存熱插拔獨立出來,并著重更新,因為在上一本書出版時它還未被完全支持。除此之外,我們還新增了磁盤熱插拔和網絡接口的熱插拔兩節。

第7章,我們將上一本書中的第4章中內存大頁部分和上一本書中的第5章中的KSM、透明大頁等內容湊在一起,組成了KVM內存管理高級技巧,同時新增了NUMA(非統一內存訪問架構)一節。

第8章,由上一本書中的第5章的“動態遷移”和“遷移到KVM虛擬化環境”兩節組成。

第9章,在上一本書中的第5章的“嵌套虛擬化”“KVM安全”等內容的基礎上,新增了“CPU指令相關的性能優化”一節,著重介紹了最近幾年Intel的一些性能優化新指令在虛擬化環境中的應用。

第10章,對應上一本書中的第8章,專門講KVM性能測試與優化。我們在最新的軟硬件環境中重做了CPU、內存、網絡、磁盤的性能測試,獲取了最新的數據,尤其對一些測試工具(benchmark)進行了重新選取,比如磁盤性能測試,我們放棄了IOzone和Bonnie++,而選用業界更認可的fio。另外,我們還加入了“CPU指令集對性能的提升”和“其他的影響客戶機性能的因素”兩節進行分析,希望對讀者進行虛擬化系能調優有所啟示。

上一本書中的第7章“Linux發行版中的KVM”和第9章“參與KVM開源社區”分別作為本書的附錄A和附錄B,并進行了相應的內容更新。

其他章節的內容保持不變,即第3章為上一本書的第3章且內容不變;第4章為上一本書的第6章,內容不變。

讀者對象

本書適合對Linux下虛擬化或云計算基礎技術感興趣的讀者閱讀,包括Linux運維工程師、KVM開發者、云平臺開發者、虛擬化方案決策者、KVM的用戶以及其他對KVM虛擬機感興趣的計算機愛好者。希望本書對這些讀者了解KVM提供以下幫助。

Linux運維工程師:了解KVM的使用方法、功能和基本的性能數據,能夠搭建高性能的KVM虛擬化系統,并應用于生產環境中。

KVM開發者:了解KVM的基本原理和功能,也了解其基本用法和一些調試方法,以及如何參與到KVM開源社區中去貢獻代碼。

云平臺開發者:了解底層KVM虛擬化的基本原理和用法,以促進云平臺上層應用的開發和調試的效率。

虛擬化方案決策者:了解KVM的硬件環境需求和它的功能、性能概況,以便在虛擬化技術選型時做出最優化的決策。

普通用戶:了解KVM的功能和如何使用KVM,用掌握的KVM虛擬化技術來促進其他相關的學習、開發和測試。

如何閱讀本書

前面已經提到,本書相比上一本書內容更加集中,分類更加合理。如果讀者朋友對KVM沒有什么了解,筆者建議按本書章節順序閱讀,通讀一遍之后再對感興趣的章節進行仔細閱讀。對于已有一定KVM知識基礎的讀者,可以根據自己的興趣和已經掌握的知識情況來有選擇地閱讀各個章節。當然,筆者建議今后可能會經常使用KVM的讀者,在閱讀本書時,可以根據書中示例或者其他示例來進行實際操作。如果是開發者,也可以查看相應的源代碼。

勘誤和支持

KVM、QEMU等開源社區非常活躍,QEMU/KVM發展迅速,每天都有新的功能加進去,或者原有功能被改進。特別是qemu命令行參數很可能會有改動,故本書中qemu命令行參數只能完全適用于本書中提及的QEMU版本,讀者若使用不同的版本,命令行參數可能并不完全相同。例如,本書寫作時,“-enable-kvm”已經被社區標為“將要廢棄”,很可能在讀者拿到本書的時候,需要用“-accel kvm”來代替它。

由于KVM和QEMU的發展變化比較快,加之筆者的技術水平有限,編寫時間倉促,書中難免會出現一些錯誤或者不準確的地方,懇請讀者朋友批評指正。讀者朋友對本書相關內容有任何的疑問、批評和建議,都可以通過筆者之一(任永杰)的博客網站 進行討論。也可以發郵件給我們,筆者會盡力回復并給讀者以滿意的答案。全書中涉及的示例代碼程序(不包含單行的命令)和重要的配置文件,都可以從網站查看和下載。

如果讀者朋友們有更多的寶貴意見或者任何關于KVM虛擬化技術的討論,也都歡迎發送電子郵件至郵箱,我們非常期待能夠得到朋友們的真摯反饋。
pagetop