1.CPU的工作機(jī)制
隨著云計(jì)算的興起,虛擬化作為云計(jì)算的組成部分也火了一把,但虛擬化并不是什么新技術(shù),早在上世紀(jì)60年代虛擬化技術(shù)就已經(jīng)出現(xiàn)。X86的CPU架構(gòu)有4個(gè)保護(hù)環(huán),分為:環(huán)0--環(huán)3,環(huán)0只與內(nèi)核通信,執(zhí)行特權(quán)指令,而環(huán)3工作在用戶空間,環(huán)1、環(huán)2預(yù)留,每當(dāng)用戶空間發(fā)起特權(quán)請求時(shí),會(huì)立即激活內(nèi)核空間,此時(shí)用戶與內(nèi)核空間的切換稱為軟中斷,用戶空間的所有特權(quán)指令都必須通過系統(tǒng)調(diào)用的方式來完成,CPU虛擬化按照工作機(jī)制的不同分為全虛擬化,半虛擬化和硬件輔助虛擬化3種。
2. 全虛擬化
在傳統(tǒng)架構(gòu)下,應(yīng)用程序會(huì)直接向環(huán)0上的內(nèi)核發(fā)起系統(tǒng)調(diào)用,此時(shí)系統(tǒng)由用戶空間轉(zhuǎn)為內(nèi)核空間的過程稱為軟中斷,當(dāng)硬件執(zhí)行完指令時(shí)會(huì)通知內(nèi)核的過程稱為硬中斷。在全虛擬化架構(gòu)下,Hypervisor運(yùn)行在環(huán)0,Guest系統(tǒng)運(yùn)行在環(huán)1,但它以為自己運(yùn)行在環(huán)0,當(dāng)Guest系統(tǒng)的應(yīng)用向內(nèi)核發(fā)起系統(tǒng)調(diào)用時(shí)會(huì)發(fā)生異常(特權(quán)指令無法在環(huán)1運(yùn)行),Hypervisor會(huì)捕獲到這些異常,在異常里面做翻譯,模擬,而后的特權(quán)指令會(huì)在環(huán)1和環(huán)0之間轉(zhuǎn)換,最后返回到客戶操作系統(tǒng)內(nèi),客戶操作系統(tǒng)認(rèn)為自己的特權(quán)指令工作正常,繼續(xù)運(yùn)行。硬中斷結(jié)果返回時(shí)先經(jīng)過Hypervisor,再由Hypervisor通知Guest內(nèi)核。
3. 半虛擬化
與全虛擬化Guest內(nèi)核以為自己運(yùn)行在環(huán)0不同,半虛擬化通過修改Guest的內(nèi)核,讓它明確知道自己運(yùn)行在環(huán)1,所以當(dāng)它要運(yùn)行特權(quán)指令時(shí),會(huì)將調(diào)用內(nèi)核的請求改為調(diào)用環(huán)0的Hypervisor,這樣節(jié)省了Hypervisor捕獲和翻譯的過程,但由于要修改內(nèi)核,所以對Windows系統(tǒng)的支持不好。
4. CPU輔助虛擬化
針對X86系列的CPU虛擬化,Intel從2006年,AMD從2007年開始,對CPU從硬件層面進(jìn)行了擴(kuò)展,創(chuàng)造了環(huán)-1,Hypervisor運(yùn)行在環(huán)-1,Guest運(yùn)行在環(huán)0,這樣當(dāng)Guest系統(tǒng)中的應(yīng)用發(fā)起系統(tǒng)調(diào)用時(shí),還是直接向Guest內(nèi)核發(fā)起請求,除了部分敏感指令(特權(quán)指令的子集)外,其余指令不在需要Hypervisor進(jìn)行輔助,由于他不需要Guest修改內(nèi)核,又比全虛擬化省去了捕獲翻譯的過程,所以成為現(xiàn)階段CPU虛擬化的主流技術(shù)。
5.類型1和類型2的虛擬化技術(shù)
類型1的虛擬化技術(shù),又稱為裸金屬虛擬化,該技術(shù)的特點(diǎn)是Hypervisor直接運(yùn)行在物理主機(jī)上,并且管理虛擬機(jī)的操作系統(tǒng),代表產(chǎn)品為Xen。
類型2的虛擬化技術(shù),又稱為可托管的虛擬化,他的特點(diǎn)是允許虛擬化技術(shù)運(yùn)行在普通操作系統(tǒng)上,和普通的進(jìn)程類似,代表產(chǎn)品為QEMU。KVM是一個(gè)比較特殊的實(shí)現(xiàn)方式,他通過啟用內(nèi)核中的虛擬化庫將傳統(tǒng)操作系統(tǒng)轉(zhuǎn)化為類型1的虛擬化,但是它讓然用的是通用操作系統(tǒng),該內(nèi)核與其他虛擬操作系統(tǒng)一同爭用物理主機(jī)資源,所以KVM更像是類型2的虛擬化技術(shù)架構(gòu)。
所有操作系統(tǒng)的內(nèi)存都是以虛擬內(nèi)存的方式提供,內(nèi)存虛擬化很象現(xiàn)在的操作系統(tǒng)支持的虛擬內(nèi)存方式,所以先來介紹下虛擬內(nèi)存的實(shí)現(xiàn)方式:每個(gè)應(yīng)用程序在運(yùn)行時(shí)需要一段連續(xù)的地址空間,如果如實(shí)按照應(yīng)用程序要求的地址空間提供的話,內(nèi)存中會(huì)出現(xiàn)很多碎片,所以內(nèi)核采取虛擬內(nèi)存的方式,將物理內(nèi)存以4K為一個(gè)單位進(jìn)行分頁,應(yīng)用程序以為自己獲得的是一片連續(xù)的地址空間,實(shí)際上是若干個(gè)內(nèi)存頁組成,每個(gè)內(nèi)存頁上都以雙向鏈表的方式標(biāo)明自己上一個(gè)和下一個(gè)內(nèi)存頁的位置,而內(nèi)存虛擬化則是再這個(gè)基礎(chǔ)上再做一次分頁,所以Guest系統(tǒng)的內(nèi)存到物理內(nèi)存就要經(jīng)過2次映射,GVA(Guest virtual Address)——GPA(Guest Physical Address)——HPA(Host Physical Address)。
于是AMD就通過RVI技術(shù),Intel通過EPT技術(shù)將Guest內(nèi)存直接映射到物理內(nèi)存以減小損耗,GVA——HPA。
現(xiàn)在的 x86 CPU 都包括了一個(gè)稱為內(nèi)存管理的模塊MMU(Memory Management Unit)和 TLB(Translation Lookaside Buffer),通過MMU和TLB來優(yōu)化虛擬內(nèi)存的性能,但再虛擬化場景下每臺(tái)物理主機(jī)上運(yùn)行著多臺(tái)虛擬機(jī),TLB會(huì)被反復(fù)清零,所以TLB也要進(jìn)行虛擬化。
1.I/O虛擬化說明
無論是Xen還是KVM都只是實(shí)現(xiàn)了CPU和內(nèi)存的虛擬化,傳統(tǒng)或默認(rèn)I/O虛擬化是通過宿主機(jī)系統(tǒng)用戶空間中的Qemu程序完成,所以一個(gè)完整的虛擬化是由Xen或KVM加上Qemu組成。按照類型可以分為全虛擬化、半虛擬化和直通3種。
2. 全虛擬化
應(yīng)用程序在往Guest系統(tǒng)內(nèi)的I/O設(shè)備上寫數(shù)據(jù)時(shí),由于I/O設(shè)備并不知道自己運(yùn)行在虛擬化環(huán)境中,從而會(huì)去調(diào)用物理設(shè)備驅(qū)動(dòng),這個(gè)過程會(huì)觸發(fā)異常,該異常在被KVM捕獲后交給Qemu進(jìn)行模擬處理后最終將數(shù)據(jù)寫到物理設(shè)備上。
3. 半虛擬化
不同于全虛擬化場景,半虛擬化下I/O設(shè)備明確知道自己運(yùn)行在虛擬化環(huán)境下,通過在Guest系統(tǒng)上安裝驅(qū)動(dòng),當(dāng)他在寫數(shù)據(jù)時(shí)直接通過Qemu將數(shù)據(jù)寫到物理設(shè)備上,省去了KVM捕獲和Qemu模擬的過程,提高了I/O性能。
不像要修改內(nèi)核才能讓它明確知道自己運(yùn)行在虛擬化環(huán)境下那么復(fù)雜,I/O設(shè)備只需要安裝驅(qū)動(dòng),就可以讓它知道自己運(yùn)行在虛擬化環(huán)境下,驅(qū)動(dòng)分為前后兩部分,前半部分安裝在Guest系統(tǒng)內(nèi),后半部分安裝在Hypervisor內(nèi)核中。
4.直通
無論全虛擬化還是半虛擬化,在I/O虛擬化過程中都需要經(jīng)過Qemu,原因就是虛擬機(jī)共享物理主機(jī)上的硬件,其實(shí)Guest系統(tǒng)中也可以安裝物理I/O設(shè)備的驅(qū)動(dòng),讓寫數(shù)據(jù)時(shí)Guest系統(tǒng)直接訪問物理設(shè)備,不再經(jīng)過KVM和Qemu,此時(shí)硬件I/O設(shè)備的性能是最好的,但這樣這個(gè)物理I/O設(shè)備就只能被這一臺(tái)虛擬機(jī)所使用,這種方式稱為直通。
1.Xen介紹
Xen是KVM出現(xiàn)前的一種類型1的虛擬化技術(shù),不要求CPU必須具備擴(kuò)展功能,支持全虛擬化和半虛擬化,Xen的Hypervisor必須要配合一個(gè)獨(dú)一無二的Domain0才能進(jìn)行工作,所有的Xen虛擬環(huán)境都需要先運(yùn)行Domain0,然后才能運(yùn)行其他的虛擬客戶機(jī)。Domain0中不僅包含所有硬件設(shè)備的驅(qū)動(dòng),還可以通過它對其他虛擬機(jī)進(jìn)行全生命周期的管理,整個(gè)Xen架構(gòu)中,只有Domain0有權(quán)限訪問硬件I/O,其他的虛擬機(jī)DomainU(unprivilege)訪問硬件必須通過Domain0完。
2.KVM介紹
KVM的前提是要求CPU必須具備擴(kuò)展功能,在2.6.2之后的內(nèi)核版本中,KVM就以一個(gè)模塊的形式集成在里面,當(dāng)內(nèi)核裝載了該模塊之后就變成了支持hypervisor的內(nèi)核。但是KVM本身只能夠?qū)崿F(xiàn)CPU和內(nèi)存的虛擬化,KVM在I/O虛擬化方面,傳統(tǒng)或者默認(rèn)的方式是使用用戶空間的QEMU純軟件的方式來模擬I/O設(shè)備,包括鍵盤、鼠標(biāo)、顯示器,硬盤和網(wǎng)卡等,從這個(gè)角度看,原有的操作系統(tǒng)也有點(diǎn)Domain0的特征。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞名稱:初識(shí)openstack之0——虛擬化及Xen和KVM介紹-創(chuàng)新互聯(lián)
URL地址:http://www.rwnh.cn/article16/cehdgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、靜態(tài)網(wǎng)站、域名注冊、標(biāo)簽優(yōu)化、網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容