一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

剖析系統(tǒng)虛擬化(4)- VMware ESX架構(gòu)

 waders 2010-06-02
剖析系統(tǒng)虛擬化 (4)- VMware ESX架構(gòu) 作者:吳朱華    厚樸教育來源:人 云亦云    點(diǎn)擊數(shù):102    更新時間:2010-5-25

上篇文章已經(jīng)向大家介紹了VMware vSphere,而本篇將繼續(xù)把重點(diǎn)放在vSphere身上,并向介紹大家vSphere之核心ESX的架構(gòu),雖然關(guān)于ESX架構(gòu)的公開資料較少,但是基 于這些已公開的資料,并加上我的一些實(shí)際經(jīng)驗(yàn),我覺得還是能對ESX的架構(gòu)有一個大致的描述,下圖為ESX的架構(gòu):

 
圖1. ESX的架構(gòu)圖(點(diǎn)擊可看大圖)(參【2】)

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

Service Console

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

1.啟動VMKernel,當(dāng)ESX主機(jī)啟動的時候,首先會啟動Service Console,接著在Linux runlevel 3上啟動VMKernel,之后將全部硬件資源的管理權(quán)移交給VMKernel。當(dāng)VMKernel啟動成功之后Service Console就成為運(yùn)行VMKernel上面的第一個虛擬機(jī)。
  2.提供各種服務(wù)接口,比如命令行,Web接口,SDK接口等,并安裝 VirtualCenter Agent以支持很多需要和Virtual Center配合的高級服務(wù),比如,vMotion和DRS等。
3.性能檢測,因?yàn)樗蠽Mkernel的性能數(shù)據(jù)都會記錄在Service Console的/proc目錄下,所以不僅能夠通過腳本來處理這些性能數(shù)據(jù),而且還能使用Service Console自帶的ESXTOP命令來觀測。
  4.認(rèn)證,Service Console提供多種認(rèn)證機(jī)制。
  5.負(fù)責(zé)主機(jī)部分硬 件的管理,比如,鼠標(biāo),鍵盤,顯示屏和CD-ROM等等。

注:雖然Service Console提供了許多功能,但因?yàn)槠浔旧碣Y源所限的原因(關(guān)于這點(diǎn),我曾經(jīng)和一位VMware工程師有過聊天,好像整個Service Console大概只能占有280MB內(nèi)存和少量的I/O),所以不適合在Service Console中執(zhí)行一些重量級的任務(wù),比如:上傳或者復(fù)制虛擬磁盤(Virtual Disk)。

VMKernel

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

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

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

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

接下來,談一下的VMware的二進(jìn)制代碼翻譯技術(shù)的特點(diǎn):

1.純二進(jìn)制:二進(jìn)制翻譯器的輸入和輸出都是二進(jìn)制的X86代碼,而不是文本形式的源代碼。
2.動態(tài):二進(jìn)制代碼只會在運(yùn)行時翻譯,翻譯器會在生成代碼之間進(jìn)行串聯(lián)。
隨需應(yīng)變:只有在代碼即將執(zhí)行時翻譯,這樣只有代碼才會被翻譯,從而 避免對數(shù)據(jù)的進(jìn)行翻譯。
  3.基于底層:翻譯器只會根據(jù)X86指令集進(jìn)行翻譯,而不是上層的二進(jìn)制接口。
  4.子集:如果翻譯器的輸 入是完整的X86指令集,但是它的生成的代碼是X86的安全子集,同時意味著生成的代碼能在低權(quán)限的用戶模式運(yùn)行。
  5.靈活:翻譯的代碼會根 據(jù)虛擬機(jī)的運(yùn)行狀態(tài)來進(jìn)行調(diào)整,從而提升效率。

對于CPU虛擬化而言,只有上面這兩種技術(shù)是遠(yuǎn)遠(yuǎn)不夠的,還需要調(diào)度技術(shù),也就是需要CPU 調(diào)度器(Scheduler)。但是CPU的調(diào)度器和常見操作系統(tǒng)的調(diào)度器是很不同的,因?yàn)镃PU的調(diào)度器的責(zé)任是將執(zhí)行上下文分配給一個處理器,而普通 操作系統(tǒng)的調(diào)度器則是執(zhí)行上下文分配給一個進(jìn)程。同樣的是,CPU調(diào)度器并沒有采用傳統(tǒng)的優(yōu)先級機(jī)制,而是采用平衡共享的機(jī)制,來將處理器資源更好地分配 給虛擬機(jī),同時也能設(shè)定每個虛擬機(jī)的份額,預(yù)留和極限等設(shè)定值。在VMware最常用的CPU調(diào)度器算法,是“Co-Scheduling”算法,其也常 被稱為“gang-scheduling”算法,它的核心概念是讓相關(guān)的多個進(jìn)程盡可能在多個處理器上同時執(zhí)行,因?yàn)楫?dāng)多個相關(guān)進(jìn)程同時執(zhí)行時,它們互相 之間會進(jìn)行同步,假設(shè)他們不再一起執(zhí)行的話,將會增加很多由同步導(dǎo)致的延遲。在vSphere中,VMware推出了Co-Scheduling的更新版 本,叫做Relaxed Co-Scheduling,它能更好地與虛擬機(jī)進(jìn)行協(xié)作。同時,為了更好利用最新推出了多核系統(tǒng),VMware也給調(diào)度器添加很多新的特性,主要集中在 兩方面:其一是對現(xiàn)有多核環(huán)境的探知,比如對NUMA(Non-Uniform Memory Access),Hyperthreading,VM-Affinity的支持。其二是在多核之間進(jìn)行有效的負(fù)載均衡。

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

 
圖2. 內(nèi)存虛擬化(點(diǎn)擊可看大圖)

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

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

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

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

總結(jié)

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

厚樸教育錄入:陳超銘    責(zé)任編輯:陳超銘 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产精品日韩欧美一区二区| 国产精品白丝一区二区| 精品伊人久久大香线蕉综合| 四季av一区二区播放| 国内女人精品一区二区三区| 蜜桃臀欧美日韩国产精品| 99视频精品免费视频播放| 日韩成人中文字幕在线一区| 亚洲国产成人一区二区在线观看| 久久精品亚洲情色欧美| 成人你懂的在线免费视频| 国产人妻熟女高跟丝袜| 中文字幕av诱惑一区二区| 男人操女人下面国产剧情| 国产成人精品一区二区三区| 日本特黄特色大片免费观看| 亚洲天堂一区在线播放| 亚洲一区二区亚洲日本| 青青操日老女人的穴穴| 99秋霞在线观看视频| 国产成人精品一区二三区在线观看 | 国产亚洲欧美自拍中文自拍| 91欧美日韩一区人妻少妇| 日韩女优精品一区二区三区| 日本一本不卡免费视频| 制服丝袜美腿美女一区二区| 精品久久久一区二区三| 国产精品午夜福利免费在线| 成年午夜在线免费视频| 激情亚洲一区国产精品久久| 国产精品福利一二三区| 国产盗摄精品一区二区视频| 人人妻人人澡人人夜夜| 亚洲人妻av中文字幕| 精品午夜福利无人区乱码| 久久99青青精品免费| 97人摸人人澡人人人超碰| 国产成人高清精品尤物| 国产剧情欧美日韩中文在线| 小草少妇视频免费看视频| 久久国产成人精品国产成人亚洲|