《KVM實戰原理、進階與性能調優》一前言+目錄

      網友投稿 990 2025-04-01

      云計算與虛擬化技術叢書


      KVM實戰:

      原理、進階與性能調優

      任永杰 程舟 著

      Preface? 前  言

      為什么要寫這本書

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

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

      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

      《KVM實戰:原理、進階與性能調優》一前言+目錄

      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

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:解決運行excel時彈出“正在準備安裝”窗口的方法
      下一篇:Bootstrap.yml的作用
      相關文章
      亚洲一线产区二线产区精华| 国产亚洲美女精品久久久久狼| 亚洲线精品一区二区三区影音先锋 | www亚洲精品久久久乳| 亚洲一级黄色大片| 亚洲人成电影在线观看青青| 久久精品国产亚洲AV高清热| 久久精品国产精品亚洲色婷婷| 久久久久久a亚洲欧洲aⅴ| 亚洲成在人线av| 亚洲精品自在在线观看| 亚洲乱码精品久久久久..| 亚洲国产a∨无码中文777| 亚洲AV综合色区无码一区| 亚洲AV成人无码久久精品老人 | 亚洲国产成人精品电影| 亚洲午夜久久久精品电影院| 91亚洲国产成人久久精品网址| 亚洲精品中文字幕无码AV| 亚洲国产精品线观看不卡 | 亚洲日韩在线观看免费视频| 久久夜色精品国产亚洲av| 亚洲人色婷婷成人网站在线观看| 国产成A人亚洲精V品无码| 亚洲成a人片77777老司机| 亚洲视频一区二区在线观看| 亚洲免费视频网址| 最新亚洲春色Av无码专区| 亚洲人成色777777老人头| 99亚洲男女激情在线观看| 亚洲乱码中文字幕手机在线| 国产aⅴ无码专区亚洲av麻豆| 亚洲欧洲美洲无码精品VA| 亚洲成年人在线观看| 亚洲黄色在线电影| 亚洲一区二区三区乱码在线欧洲| 亚洲精品乱码久久久久久V| 亚洲高清最新av网站| 亚洲精品高清无码视频| 亚洲高清视频免费| 亚洲日韩乱码中文字幕|