日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

(ZZ) 剖析系统虚拟化(4)——VMware ESX架构介绍

發布時間:2023/12/20 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (ZZ) 剖析系统虚拟化(4)——VMware ESX架构介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上篇文章已經向大家介紹了VMware vSphere,而本篇將繼續把重點放在vSphere身上,并向介紹大家vSphere之核心ESX的架構,雖然關于ESX架構的公開資料較少,但是基于這些已公開的資料,并加上我的一些實際經驗,我覺得還是能對ESX的架構有一個大致的描述,下圖為ESX的架構:

圖1. ESX的架構圖(點擊可看大圖)(參【2】)

ESX主要可被分為兩部分:其一是用于提供管理服務的Service Console,其二是ESX的核心,也是主要提供虛擬化能力的VMKernel。

Service Console

簡單的來說,Service Console就是一個簡化版Redhat Enterprise OS。雖然其不能實現任何虛擬化功能,但是對這個ESX架構而言,它卻是一個不可分割的一部分。主要有五個方面功能:

  • 啟動VMKernel,當ESX主機啟動的時候,首先會啟動Service Console,接著在Linux runlevel 3上啟動VMKernel,之后將全部硬件資源的管理權移交給VMKernel。當VMKernel啟動成功之后Service Console就成為運行VMKernel上面的第一個虛擬機。
  • 提供各種服務接口,比如命令行,Web接口,SDK接口等,并安裝VirtualCenter Agent以支持很多需要和Virtual Center配合的高級服務,比如,vMotion和DRS等。
  • 性能檢測,因為所有VMkernel的性能數據都會記錄在Service Console的/proc目錄下,所以不僅能夠通過腳本來處理這些性能數據,而且還能使用Service Console自帶的ESXTOP命令來觀測。
  • 認證,Service Console提供多種認證機制。
  • 負責主機部分硬件的管理,比如,鼠標,鍵盤,顯示屏和CD-ROM等等。
  • 注:雖然Service Console提供了許多功能,但因為其本身資源所限的原因(關于這點,我曾經和一位VMware工程師有過聊天,好像整個Service Console大概只能占有280MB內存和少量的I/O),所以不適合在Service Console中執行一些重量級的任務,比如:上傳或者復制虛擬磁盤(Virtual Disk)。

    VMKernel

    VMKernel是由VMware開發的基于POSIX協議的操作系統,它提供了很多在其它操作系統中也能找到的功能,比如,創建和管理進程,信號(Signal),文件系統和多線程等。但它是為運行多個虛擬機而“度身定做”的。它的核心功能是資源進行虛擬化。下面將通過CPU,內存和I/O這三個方面,來講解VMKernel是如何實現虛擬化的。

    CPU

    在CPU方面,ESX使用了在第二篇提到的兩個全虛擬化技術:優先級壓縮(Ring Compression)和二進制代碼翻譯(Binary Translation)。

    優先級壓縮,指的是為了讓VMKernel獲得所有物理資源的控制權,比如CPU。這就需要讓VMKernel運行在Ring 0,在其上面的虛擬機內核代碼是運行在Ring 1,而虛擬機的用戶代碼只能運行在Ring 3上。這種做法不僅能讓VMKernel安全地控制所有的物理資源,而且能讓VMKernel截獲部分在虛擬機上執行的特權指令,并對其進行虛擬化。

    二進制代碼翻譯,雖然上面的優先級壓縮這個技術已經處理了很多特權指令引發的異常情況,但是由于X86架構在初始設計方面并沒有考慮到虛擬化這個需求,所以有很多X86特權指令成了優先級壓縮的漏網之魚,雖然通過傳統的Trap-Emulation技術也能處理這些指令,但是由于其不僅需要花時間觀測有潛在影響的指令,而且還要監視那些非常普通的指令,導致Trap-Emulation的效率非常低,所以VMware引進了二進制代碼翻譯這個技術,這個技術能讓那些非常普通的指令直接執行,不干涉,并提供接近物理機的速度,但會掃描并修改那些有嫌疑的代碼,使其無法對虛擬機造成錯誤的影響。由于大多數代碼都不屬于有嫌疑的,所以二進制代碼翻譯的效率遠勝Trap-Emulation。還有經過VMware長達十年的調優,使得二進制代碼翻譯這個技術越發優秀。

    接下來,談一下的VMware的二進制代碼翻譯技術的特點:

  • 純二進制:二進制翻譯器的輸入和輸出都是二進制的X86代碼,而不是文本形式的源代碼。
  • 動態:二進制代碼只會在運行時翻譯,翻譯器會在生成代碼之間進行串聯。
  • 隨需應變:只有在代碼即將執行時翻譯,這樣只有代碼才會被翻譯,從而避免對數據的進行翻譯。
  • 基于底層:翻譯器只會根據X86指令集進行翻譯,而不是上層的二進制接口。
  • 子集:如果翻譯器的輸入是完整的X86指令集,但是它的生成的代碼是X86的安全子集,同時意味著生成的代碼能在低權限的用戶模式運行。
  • 靈活:翻譯的代碼會根據虛擬機的運行狀態來進行調整,從而提升效率。
  • 對于CPU虛擬化而言,只有上面這兩種技術是遠遠不夠的,還需要調度技術,也就是需要CPU調度器(Scheduler)。但是CPU的調度器和常見操作系統的調度器是很不同的,因為CPU的調度器的責任是將執行上下文分配給一個處理器,而普通操作系統的調度器則是執行上下文分配給一個進程。同樣的是,CPU調度器并沒有采用傳統的優先級機制,而是采用平衡共享的機制,來將處理器資源更好地分配給虛擬機,同時也能設定每個虛擬機的份額,預留和極限等設定值。在VMware最常用的CPU調度器算法,是“Co-Scheduling”算法,其也常被稱為“gang-scheduling”算法,它的核心概念是讓相關的多個進程盡可能在多個處理器上同時執行,因為當多個相關進程同時執行時,它們互相之間會進行同步,假設他們不再一起執行的話,將會增加很多由同步導致的延遲。在vSphere中,VMware推出了Co-Scheduling的更新版本,叫做Relaxed Co-Scheduling,它能更好地與虛擬機進行協作。同時,為了更好利用最新推出了多核系統,VMware也給調度器添加很多新的特性,主要集中在兩方面:其一是對現有多核環境的探知,比如對NUMA(Non-Uniform Memory Access),Hyperthreading,VM-Affinity的支持。其二是在多核之間進行有效的負載均衡。

    ?

    內存

    VMKernel在內存虛擬化方面所采用的核心機制就是“影子頁表 (Shadow Page Table)”。在探討影子頁表的機制之前,先看一下傳統頁表的運行機制,其實也很簡單,就是頁表將VPN(Virtual Page Number 虛擬內存頁號)翻譯成MPN(Machinel Page Number,機器內存頁號),之后將這個MPN發給上層,讓其調用。但是這種做法在虛擬的環境是不適用的,因為當虛擬機從頁表得到的翻譯之后的頁號不是MPN是PPN(物理內存頁號),之后需要從PPN再轉換成MPN,由于這樣將經歷兩層轉換,所以肯定會較高的成本,所以VMware引入影子頁表這個機制,它維護為每個Guest都維護一個“影子頁表”,在這個表中能直接維護VPN和MPN之間映射關系,并加載在TLB中。所以通過“影子頁表”這個機制能夠讓Guest在大多數情況下能通過TLB直接訪問內存,保證了效率。

    圖2. 內存虛擬化(點擊可看大圖)

    由于虛擬機對內存的消耗勝于對CPU的消耗,同時介于內存的內容同質化和浪費這兩個現象在虛擬環境非常普遍,所以VMware在影子頁表的基礎上引入了三個非常不錯的技術來減少內存的消耗,以支撐更多的虛擬機:其一是Memory Overcommit機制,這個機制通過讓虛擬機占用的內存總量超越物理機的實際容量來使一臺物理機能支持更多的虛擬機。其二是用于減少虛擬機之間相似內存頁的Page Sharing,它主要實現是通過對多個虛擬機的內存頁面進行Hash,來獲知那些內存頁面是重復的,接著將多個重復的內存頁面整合為一個replica,之后通過CoW(Copy On Write)的機制來應對對內存頁面的修改。其三是能在各個虛擬機之間動態調整內存的Balloon Driver,其實現機制就是通過給每個虛擬機安裝VMware Tools(可以把VMware Tools看作VMware的驅動)來裝入Balloon Agent,在運行的時候,Balloon Agent會和主機的Balloon Driver進行溝通,來調整每臺虛擬機的內存空間,來將那些在某些虛擬機上不處于工作狀態的內存通過swapping等方式來閑置出來,以撥給那些急需內存的虛擬機。

    ?

    I/O

    VMKernel的做法是通過模擬I/O設備(磁盤和網卡等)來實現虛擬化。而且主要選取最大眾化的硬件來模擬,比如440BX的主板,LSI Logic的SCSI卡和AMD Lance的網卡,從而提高這些模擬I/O設備的兼容性。 對Guest OS而言,它所能看到就是一組統一的I/O設備,同時Guest OS每次I/O操作都會陷入到VMM,讓VMM來執行。這種方式,對Guest而言,是一種非常透明的方式,因為無需顧忌其是否和底層硬件兼容,比如Guest操作的是SCSI的設備,但實際物理機可以SATA的硬盤。雖然這種模擬I/O設備的做法有一定開支,但在經過了VMware長時間優化,使得其在處理小規模的I/O時,非常游刃有余,但是在這個模型的方法在處理大規模I/O的時候,有時候可能會出現力不從心的局面,所以VMware在I/O層推出一些半虛擬機技術,比如,vmxnet半虛擬化網卡。

    其次,為了更好地為VM服務,VMKernel還支持一些高級I/O技術:

  • VMFS,是VMware為虛擬化設計的分布式文件系統,它不僅能給虛擬機提供高速的I/O,而且由于它自帶的鎖機制,所以允許多個主機能同時訪問同一個文件系統。因為放置在其上面的多為大于1G的Virtual Disk,為了減少存取文件系統數據結構的元數據的大小,它Block大小被設計為1MB到256MB,默認是1MB,使得其元數據得到了精簡,而且所有的元數據都被放置在內存中作為緩存,以提高速度。
  • Virtual Switch,其也是VMKernel的一個組件,主要給ESX主機上面所有虛擬機提供網絡支持。在功能方面。除了不支持STP(Spanning ree protocol,生成樹協議)和無需通過檢測網絡流量來獲得之外,其他基本和物理交換機類似。 在vSphere中,VMware也推出了Virtual Switch的升級版本Distributed Virtual Switch,它將解決一些Virtual Switch的瑕疵。
  • 支持新的物理層技術:VMDirectPath能增強網絡和存儲方面的I/O性能,PCI-SIG的SR-IOV硬件虛擬化技術能更好地對PCIe設備進行虛擬化, vStorage的 Thin Provisioning和Linked Clone這兩個技術可減少存儲空間達50%左右。
  • 網絡和存儲方面的調度:除了系統能通過預設定一些網絡和存儲的參數來提升性能,用戶還可以通過GUI(比如vSphere Client)來對網絡和存儲這兩方面進行調優。
  • ?

    總結

    在開頭也說,有可能是競爭的原因,使得VMware已經越來越少地公開它的技術資料,特別是最核心的ESX技術。 所以上面這些材料主要是來自于ESX 2的文檔,而不是來自于最新的vSphere 4的文檔,但是從這些文檔中,我們還可以可以看出它絕對是全虛擬化的巔峰,并且在其新版中也已經引入了代號為VMI的半虛擬技術和支持Intel/AMD最新的硬件輔助虛擬化技術。就像本系列第二篇X86虛擬化技術所講的那樣,雖然在速度上面,半虛擬化技術和硬件輔助虛擬化技術的確各有千秋,但是他們都有軟肋,半虛擬化技術是需要對Guest OS進行修改,硬件輔助虛擬化技術則是不夠成熟,而且ESX的全虛擬化技術是經過VMware高級工程師們長達10年優化的,所以在跑某些Workload的時候,全虛擬化反而速度更優。綜上所述,用戶在使用最新版ESX的時候,應該根據不同的workload來選擇不同的虛擬化方法,具體可以查看VMware的白皮書(見參3)。

    ?

    ?

    參考資料:

  • 《VMware ESX Server Advanced Technical Design Guide》。
  • VMWare ESX Server 2 – Architecture and Performance Implications。
  • Virtual Machine Monitor Execution Modes in VMware vSphere 4.0。
  • Architecture of VMware ESXi。
  • VMware vSphere 4: The CPU Scheduler in VMware ESX 4。
  • Understanding Memory Resource Management in VMware ESX Server。
  • 轉載于:https://www.cnblogs.com/qyddbear/articles/3449951.html

    總結

    以上是生活随笔為你收集整理的(ZZ) 剖析系统虚拟化(4)——VMware ESX架构介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。