摘要:即使硬件層發(fā)生變化,只要硬件抽象層不變,那么操作系統(tǒng)層將察覺(jué)不到任何的變化。硬件抽象層上的虛擬化是指通過(guò)虛擬硬件抽象層來(lái)實(shí)現(xiàn)虛擬機(jī),為客戶(hù)機(jī)操作系統(tǒng)呈現(xiàn)出與物理硬件相同或相近的硬件抽象層。
云計(jì)算的一個(gè)核心思想就是在服務(wù)器端提供集中的物理計(jì)算資源,這些計(jì)算資源可以被分解成更小的單位去獨(dú)立地服務(wù)于不同的用戶(hù),也就是在共享物理資源的同時(shí),為每個(gè)用戶(hù)提供隔離、安全、可信的虛擬工作環(huán)境,而這一切不可避免地要依賴(lài)于虛擬化技術(shù)。
一、虛擬化技術(shù)的概述虛擬化技術(shù)對(duì)大家來(lái)說(shuō)都不陌生,比如虛擬內(nèi)存和虛擬服務(wù)器等,為了更好的理解虛擬化我們應(yīng)該首先來(lái)了解一下計(jì)算機(jī)系統(tǒng)的層次結(jié)構(gòu)。
每一層都向上層提供一個(gè)抽象,并且每一層只需要知道下層抽象的接口,而并不需要了解其內(nèi)部運(yùn)作機(jī)制。例如,操作系統(tǒng)看到的是一個(gè)硬件抽象層,它并不知道硬件中布線(xiàn)和電器特征。即使硬件層發(fā)生變化,只要硬件抽象層不變,那么操作系統(tǒng)層將察覺(jué)不到任何的變化。
這種分層有一定的優(yōu)點(diǎn)。首先,每一層只需要考慮本層的設(shè)計(jì)以及相鄰層間的交互接口,從而大大的降低了系統(tǒng)設(shè)計(jì)的復(fù)雜性,提高了軟件的移植性。另外,這樣的設(shè)計(jì)也是給下一層軟件模塊為上一層軟件模塊創(chuàng)造“虛擬世界”提供了條件。
所謂的虛擬化就是有位于下層的軟件模塊,根據(jù)上一層軟件模塊的期待,抽象出一個(gè)虛擬的軟件或硬件接口,使上一層軟件可以直接運(yùn)行在與自己所期待的運(yùn)行環(huán)境完全一致的虛擬環(huán)境上。
虛擬化可以發(fā)生在上圖中的每一個(gè)層次上,硬件的虛擬化,操作系統(tǒng)的虛擬化等等,但是對(duì)于IaaS(基礎(chǔ)架構(gòu)即服務(wù))的云計(jì)算,更關(guān)心的是硬件抽象層上的虛擬化。硬件抽象層上的虛擬化是指通過(guò)虛擬硬件抽象層來(lái)實(shí)現(xiàn)虛擬機(jī),為客戶(hù)機(jī)操作系統(tǒng)呈現(xiàn)出與物理硬件相同或相近的硬件抽象層。
如上圖所示,系統(tǒng)虛擬化在硬件和操作系統(tǒng)之間引入了一個(gè)虛擬化層,虛擬化層提供一個(gè)操作系統(tǒng)期望的接口,統(tǒng)一處理操作系統(tǒng)的請(qǐng)求,使得操作系統(tǒng)層感覺(jué)不到虛擬化層的存在,任然認(rèn)為自己在享有整個(gè)硬件。每個(gè)虛擬計(jì)算機(jī)系統(tǒng)(虛擬機(jī))都擁有自己的虛擬硬件,并提供一個(gè)獨(dú)立的虛擬運(yùn)行環(huán)境,通過(guò)虛擬機(jī)監(jiān)控器(VMM)的模擬,虛擬機(jī)中的操作系統(tǒng)認(rèn)為自己仍然是獨(dú)占一個(gè)系統(tǒng)在運(yùn)行。
二、虛擬化實(shí)現(xiàn)方式 1、按照實(shí)現(xiàn)方式分按照實(shí)現(xiàn)方式虛擬化可以分為兩種:
VMM直接運(yùn)行在硬件平臺(tái)上,控制所有硬件并管理客戶(hù)操作系統(tǒng)??蛻?hù)操作系統(tǒng)運(yùn)行在比VMM更高的級(jí)別上,Xen就是采用的這個(gè)模型。
VMM運(yùn)行在一個(gè)傳統(tǒng)的操作系統(tǒng)里(第一層軟件),可以看做是第二層軟件,而客戶(hù)機(jī)操作系統(tǒng)則是第三層了。KVM和VirtualBox就是這種實(shí)現(xiàn)。
2、按照VMM所提供的虛擬平臺(tái)類(lèi)型分:按照VMM所提供的虛擬平臺(tái)類(lèi)型可以分為兩類(lèi)
(1) 完全虛擬化VMM虛擬的是現(xiàn)實(shí)存在的平臺(tái),并且在客戶(hù)機(jī)操作系統(tǒng)看來(lái),虛擬平臺(tái)和現(xiàn)實(shí)平臺(tái)是一樣的,客戶(hù)機(jī)操作系統(tǒng)感覺(jué)不到運(yùn)行在一個(gè)虛擬平臺(tái)上,現(xiàn)有的操作系統(tǒng)無(wú)需進(jìn)行任何修改就可以在這樣的虛擬平臺(tái)上運(yùn)行,因此這種方式被稱(chēng)為完全虛擬化。
完全虛擬化中,VMM需要能夠正確處理客戶(hù)機(jī)操作系統(tǒng)所有可能的行為,或者說(shuō)正確處理所有可能的指令,完全虛擬化經(jīng)歷了兩個(gè)階段:軟件輔助的完全虛擬化與硬件輔助的完全虛擬化。
在x86虛擬技術(shù)的早期,x86體系中沒(méi)有在硬件層次對(duì)虛擬化提供支持,因此完全虛擬只能靠軟件來(lái)實(shí)現(xiàn),典型的做法就是優(yōu)先級(jí)壓縮和二進(jìn)制代碼翻譯相結(jié)合。
優(yōu)先級(jí)壓縮的原理是:將VMM和客戶(hù)機(jī)的優(yōu)先級(jí)放到同一個(gè)CPU中來(lái)運(yùn)行,對(duì)應(yīng)于x86架構(gòu),通常VMM在ring0,客戶(hù)機(jī)操作系統(tǒng)內(nèi)核在ring1,客戶(hù)機(jī)操作系統(tǒng)應(yīng)用程序在ring3。當(dāng)客戶(hù)機(jī)操作系統(tǒng)內(nèi)核執(zhí)行特權(quán)指令時(shí),由于處在非特權(quán)的ring1,通常會(huì)觸發(fā)異常,VMM截獲后就可以進(jìn)行特權(quán)指令的虛擬化。但是x86指令體系結(jié)構(gòu)在設(shè)計(jì)之初并沒(méi)有考慮到虛擬化,一小部分特權(quán)指令在ring1中沒(méi)有觸發(fā)異常,VMM也就不能進(jìn)行截獲進(jìn)行虛擬化,所以就需要用二進(jìn)制代碼翻譯來(lái)處理這些不友好的指令。
二進(jìn)制代碼翻譯的原理:VMM通常會(huì)對(duì)操作系統(tǒng)的二進(jìn)制代碼進(jìn)行掃描,一旦發(fā)現(xiàn)虛擬化不友好的指令,就將其替換成支持虛擬化的指令塊。
Intel的VTx技術(shù)是硬件輔助虛擬化的代表。VTx技術(shù)在處理器上引入了一個(gè)新的執(zhí)行模式用于運(yùn)行虛擬機(jī)。當(dāng)虛擬機(jī)運(yùn)行在這個(gè)特殊模式中時(shí),他仍然面對(duì)一套完整的處理器寄存器和執(zhí)行環(huán)境,只是任何特權(quán)操作都會(huì)被處理器截獲并報(bào)告給VMM。VMM本省就運(yùn)行在正常模式下,在接收到處理器的報(bào)告后,通過(guò)對(duì)目標(biāo)指令的解碼,找到相應(yīng)的虛擬化模塊進(jìn)行模擬,并把最終的效果反映在特殊的環(huán)境中。
類(lèi)虛擬化虛擬出的平臺(tái)在現(xiàn)實(shí)中是不存在的,而是經(jīng)過(guò)VMM重新定義的。這樣的虛擬平臺(tái)需要對(duì)所運(yùn)行的客戶(hù)機(jī)操作系統(tǒng)進(jìn)行或多或少的修改使之能夠適應(yīng)虛擬環(huán)境,客戶(hù)機(jī)操作系統(tǒng)也就知道自己運(yùn)行在虛擬平臺(tái)上,并且會(huì)主動(dòng)去適應(yīng)。
類(lèi)虛擬化是通過(guò)在源代碼級(jí)別修改指令以回避虛擬漏洞的方式來(lái)使VMM能夠?qū)ξ锢碣Y源實(shí)現(xiàn)虛擬化。對(duì)于x86中難以虛擬化的指令,類(lèi)虛擬化采取的方式是修改操作系統(tǒng)內(nèi)核代碼,使得操作系統(tǒng)內(nèi)核完全避免這些難以虛擬化的指令。
動(dòng)態(tài)遷移是虛擬化特有的新特性,它將虛擬機(jī)從一個(gè)物理機(jī)快速遷移到另一個(gè)物理機(jī),但是虛擬機(jī)里面的程序和網(wǎng)絡(luò)都保持連接。從用戶(hù)的角度來(lái)看,動(dòng)態(tài)遷移對(duì)虛擬機(jī)的可用性沒(méi)有任何影響,用戶(hù)不會(huì)察覺(jué)任何的服務(wù)被中斷。
動(dòng)態(tài)遷移實(shí)現(xiàn)的方法是在目的服務(wù)器上建立一臺(tái)同樣配置的新虛擬機(jī),然后不斷地在兩個(gè)虛擬機(jī)之間同步各種內(nèi)部狀態(tài),比如內(nèi)存、外設(shè)、CPU等。等狀態(tài)同步完成后,關(guān)掉老的虛擬機(jī),啟動(dòng)新的虛擬機(jī)。
原文鏈接: http://blog.csdn.net/xingjiarong/article/details/50542523
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/11494.html
摘要:和的云計(jì)算功能特點(diǎn)對(duì)比正式這個(gè)戰(zhàn)爭(zhēng)或者說(shuō)趨勢(shì)的一個(gè)生動(dòng)寫(xiě)照??偠灾?,目前調(diào)度器將只會(huì)對(duì)部署虛擬機(jī)環(huán)節(jié)有影響。目前有一個(gè)孵化項(xiàng)目其作用是為提供虛擬機(jī)級(jí)別高可用支持。容錯(cuò)在中沒(méi)有針對(duì)于容錯(cuò)的功能,并且截至目前也沒(méi)有計(jì)劃去完成這些功能。 OpenStack中國(guó)社區(qū)編者按:在云計(jì)算生態(tài)系統(tǒng)中,有兩種類(lèi)型的用戶(hù)需要使用云計(jì)算資源:傳統(tǒng)型(Traditional IT applications)和在互...
摘要:和的云計(jì)算功能特點(diǎn)對(duì)比正是這個(gè)戰(zhàn)爭(zhēng)或者說(shuō)趨勢(shì)的一個(gè)生動(dòng)寫(xiě)照。在設(shè)計(jì)方面稍占優(yōu)勢(shì),這源于它優(yōu)秀的文檔資料以及便捷易用的部署和管理接口。總而言之,目前調(diào)度器將只會(huì)對(duì)部署虛擬機(jī)環(huán)節(jié)有影響。 在云計(jì)算生態(tài)系統(tǒng)中,有兩種類(lèi)型的用戶(hù)需要使用云計(jì)算資源:傳統(tǒng)型(Traditional IT applications)和在互聯(lián)網(wǎng)大潮下逐漸崛起云計(jì)算應(yīng)用型(Cloud-aware applications)。...
摘要:一簡(jiǎn)介是由開(kāi)發(fā)的一套開(kāi)源的軟件工具,目標(biāo)是提供一個(gè)通用和穩(wěn)定的軟件庫(kù)來(lái)高效安全地管理一個(gè)節(jié)點(diǎn)上的虛擬機(jī),并支持遠(yuǎn)程操作。用戶(hù)只關(guān)心高層的功能,而的實(shí)現(xiàn)細(xì)節(jié),對(duì)于最終用戶(hù)應(yīng)該是透明的。本機(jī)之間的通信在初始化的過(guò)程中,所有的驅(qū)動(dòng)被枚舉和注冊(cè)。 一、Libvirt簡(jiǎn)介 Libvirt是由Redhat開(kāi)發(fā)的一套開(kāi)源的軟件工具,目標(biāo)是提供一個(gè)通用和穩(wěn)定的軟件庫(kù)來(lái)高效、安全地管理一個(gè)節(jié)點(diǎn)上的虛擬機(jī)...
摘要:一為什么要使用虛擬云桌面背景攜程呼叫中心,即服務(wù)聯(lián)絡(luò)中心,是攜程的核心部門(mén)之一,現(xiàn)有幾萬(wàn)員工。他們?nèi)晷r(shí)為全球攜程用戶(hù)提供服務(wù)。為此,攜程正式引入了虛擬云桌面。攜程云桌面現(xiàn)狀攜程云桌面現(xiàn)已部署上海南通如皋合肥信陽(yáng)穆棱六個(gè)呼叫中心。 編者:本文為劉科在第六期【攜程技術(shù)微分享】中的分享內(nèi)容。在攜程技術(shù)中心(微信號(hào)ctriptech)微信后臺(tái)回復(fù)【云桌面】,可加入微信交流群,和關(guān)注云桌面的...
摘要:一為什么要使用虛擬云桌面背景攜程呼叫中心,即服務(wù)聯(lián)絡(luò)中心,是攜程的核心部門(mén)之一,現(xiàn)有幾萬(wàn)員工。他們?nèi)晷r(shí)為全球攜程用戶(hù)提供服務(wù)。為此,攜程正式引入了虛擬云桌面。攜程云桌面現(xiàn)狀攜程云桌面現(xiàn)已部署上海南通如皋合肥信陽(yáng)穆棱六個(gè)呼叫中心。 編者:本文為劉科在第六期【攜程技術(shù)微分享】中的分享內(nèi)容。在攜程技術(shù)中心(微信號(hào)ctriptech)微信后臺(tái)回復(fù)【云桌面】,可加入微信交流群,和關(guān)注云桌面的...
閱讀 3678·2020-12-03 17:42
閱讀 2829·2019-08-30 15:54
閱讀 2306·2019-08-30 15:44
閱讀 625·2019-08-30 14:08
閱讀 1026·2019-08-30 14:00
閱讀 1156·2019-08-30 13:46
閱讀 2848·2019-08-29 18:33
閱讀 3130·2019-08-29 14:11