亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

初識openstack之0——虛擬化及Xen和KVM介紹

發布時間:2020-03-19 13:24:41 來源:網絡 閱讀:4737 作者:qiao645 欄目:云計算

一、CPU虛擬化

1.CPU的工作機制
隨著云計算的興起,虛擬化作為云計算的組成部分也火了一把,但虛擬化并不是什么新技術,早在上世紀60年代虛擬化技術就已經出現。X86的CPU架構有4個保護環,分為:環0--環3,環0只與內核通信,執行特權指令,而環3工作在用戶空間,環1、環2預留,每當用戶空間發起特權請求時,會立即激活內核空間,此時用戶與內核空間的切換稱為軟中斷,用戶空間的所有特權指令都必須通過系統調用的方式來完成,CPU虛擬化按照工作機制的不同分為全虛擬化,半虛擬化和硬件輔助虛擬化3種。
初識openstack之0——虛擬化及Xen和KVM介紹
2. 全虛擬化
在傳統架構下,應用程序會直接向環0上的內核發起系統調用,此時系統由用戶空間轉為內核空間的過程稱為軟中斷,當硬件執行完指令時會通知內核的過程稱為硬中斷。在全虛擬化架構下,Hypervisor運行在環0,Guest系統運行在環1,但它以為自己運行在環0,當Guest系統的應用向內核發起系統調用時會發生異常(特權指令無法在環1運行),Hypervisor會捕獲到這些異常,在異常里面做翻譯,模擬,而后的特權指令會在環1和環0之間轉換,最后返回到客戶操作系統內,客戶操作系統認為自己的特權指令工作正常,繼續運行。硬中斷結果返回時先經過Hypervisor,再由Hypervisor通知Guest內核。
初識openstack之0——虛擬化及Xen和KVM介紹
3. 半虛擬化
與全虛擬化Guest內核以為自己運行在環0不同,半虛擬化通過修改Guest的內核,讓它明確知道自己運行在環1,所以當它要運行特權指令時,會將調用內核的請求改為調用環0的Hypervisor,這樣節省了Hypervisor捕獲和翻譯的過程,但由于要修改內核,所以對Windows系統的支持不好。
初識openstack之0——虛擬化及Xen和KVM介紹
4. CPU輔助虛擬化
針對X86系列的CPU虛擬化,Intel從2006年,AMD從2007年開始,對CPU從硬件層面進行了擴展,創造了環-1,Hypervisor運行在環-1,Guest運行在環0,這樣當Guest系統中的應用發起系統調用時,還是直接向Guest內核發起請求,除了部分敏感指令(特權指令的子集)外,其余指令不在需要Hypervisor進行輔助,由于他不需要Guest修改內核,又比全虛擬化省去了捕獲翻譯的過程,所以成為現階段CPU虛擬化的主流技術。
初識openstack之0——虛擬化及Xen和KVM介紹
5.類型1和類型2的虛擬化技術
類型1的虛擬化技術,又稱為裸金屬虛擬化,該技術的特點是Hypervisor直接運行在物理主機上,并且管理虛擬機的操作系統,代表產品為Xen。
初識openstack之0——虛擬化及Xen和KVM介紹
類型2的虛擬化技術,又稱為可托管的虛擬化,他的特點是允許虛擬化技術運行在普通操作系統上,和普通的進程類似,代表產品為QEMU。KVM是一個比較特殊的實現方式,他通過啟用內核中的虛擬化庫將傳統操作系統轉化為類型1的虛擬化,但是它讓然用的是通用操作系統,該內核與其他虛擬操作系統一同爭用物理主機資源,所以KVM更像是類型2的虛擬化技術架構。
初識openstack之0——虛擬化及Xen和KVM介紹

二、內存虛擬化

所有操作系統的內存都是以虛擬內存的方式提供,內存虛擬化很象現在的操作系統支持的虛擬內存方式,所以先來介紹下虛擬內存的實現方式:每個應用程序在運行時需要一段連續的地址空間,如果如實按照應用程序要求的地址空間提供的話,內存中會出現很多碎片,所以內核采取虛擬內存的方式,將物理內存以4K為一個單位進行分頁,應用程序以為自己獲得的是一片連續的地址空間,實際上是若干個內存頁組成,每個內存頁上都以雙向鏈表的方式標明自己上一個和下一個內存頁的位置,而內存虛擬化則是再這個基礎上再做一次分頁,所以Guest系統的內存到物理內存就要經過2次映射,GVA(Guest virtual Address)——GPA(Guest Physical Address)——HPA(Host Physical Address)。
初識openstack之0——虛擬化及Xen和KVM介紹
于是AMD就通過RVI技術,Intel通過EPT技術將Guest內存直接映射到物理內存以減小損耗,GVA——HPA。
現在的 x86 CPU 都包括了一個稱為內存管理的模塊MMU(Memory Management Unit)和 TLB(Translation Lookaside Buffer),通過MMU和TLB來優化虛擬內存的性能,但再虛擬化場景下每臺物理主機上運行著多臺虛擬機,TLB會被反復清零,所以TLB也要進行虛擬化。

三、I/O虛擬化的實現

1.I/O虛擬化說明
無論是Xen還是KVM都只是實現了CPU和內存的虛擬化,傳統或默認I/O虛擬化是通過宿主機系統用戶空間中的Qemu程序完成,所以一個完整的虛擬化是由Xen或KVM加上Qemu組成。按照類型可以分為全虛擬化、半虛擬化和直通3種。
2. 全虛擬化
應用程序在往Guest系統內的I/O設備上寫數據時,由于I/O設備并不知道自己運行在虛擬化環境中,從而會去調用物理設備驅動,這個過程會觸發異常,該異常在被KVM捕獲后交給Qemu進行模擬處理后最終將數據寫到物理設備上。
初識openstack之0——虛擬化及Xen和KVM介紹
3. 半虛擬化
不同于全虛擬化場景,半虛擬化下I/O設備明確知道自己運行在虛擬化環境下,通過在Guest系統上安裝驅動,當他在寫數據時直接通過Qemu將數據寫到物理設備上,省去了KVM捕獲和Qemu模擬的過程,提高了I/O性能。
初識openstack之0——虛擬化及Xen和KVM介紹
不像要修改內核才能讓它明確知道自己運行在虛擬化環境下那么復雜,I/O設備只需要安裝驅動,就可以讓它知道自己運行在虛擬化環境下,驅動分為前后兩部分,前半部分安裝在Guest系統內,后半部分安裝在Hypervisor內核中。
初識openstack之0——虛擬化及Xen和KVM介紹
4.直通
無論全虛擬化還是半虛擬化,在I/O虛擬化過程中都需要經過Qemu,原因就是虛擬機共享物理主機上的硬件,其實Guest系統中也可以安裝物理I/O設備的驅動,讓寫數據時Guest系統直接訪問物理設備,不再經過KVM和Qemu,此時硬件I/O設備的性能是最好的,但這樣這個物理I/O設備就只能被這一臺虛擬機所使用,這種方式稱為直通。

四、KVM和Xen的實現

1.Xen介紹
Xen是KVM出現前的一種類型1的虛擬化技術,不要求CPU必須具備擴展功能,支持全虛擬化和半虛擬化,Xen的Hypervisor必須要配合一個獨一無二的Domain0才能進行工作,所有的Xen虛擬環境都需要先運行Domain0,然后才能運行其他的虛擬客戶機。Domain0中不僅包含所有硬件設備的驅動,還可以通過它對其他虛擬機進行全生命周期的管理,整個Xen架構中,只有Domain0有權限訪問硬件I/O,其他的虛擬機DomainU(unprivilege)訪問硬件必須通過Domain0完。
2.KVM介紹
KVM的前提是要求CPU必須具備擴展功能,在2.6.2之后的內核版本中,KVM就以一個模塊的形式集成在里面,當內核裝載了該模塊之后就變成了支持hypervisor的內核。但是KVM本身只能夠實現CPU和內存的虛擬化,KVM在I/O虛擬化方面,傳統或者默認的方式是使用用戶空間的QEMU純軟件的方式來模擬I/O設備,包括鍵盤、鼠標、顯示器,硬盤和網卡等,從這個角度看,原有的操作系統也有點Domain0的特征。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

星座| 临泽县| 额尔古纳市| 大理市| 扎兰屯市| 胶州市| 淮阳县| 光山县| 浦江县| 阿拉善左旗| 南部县| 辉县市| 高平市| 祥云县| 莆田市| 威宁| 晋江市| 融水| 永济市| 利川市| 绥宁县| 百色市| 金塔县| 高邑县| 拜城县| 施甸县| 彭州市| 威远县| 长寿区| 河南省| 江西省| 镇赉县| 淮阳县| 安阳县| 三门峡市| 永康市| 五家渠市| 青川县| 金湖县| 且末县| 扬中市|