虛擬化技術(shù)基礎(chǔ)知識(shí)
在實(shí)際的生產(chǎn)環(huán)境中,虛擬化技術(shù)主要用來解決高性能的物理硬件產(chǎn)能過剩和老的舊的硬件產(chǎn)能過低的重組重用,透明化底層物理硬件,從而最大化的利用物理硬件,以下是由學(xué)習(xí)啦小編整理關(guān)于虛擬化技術(shù)基礎(chǔ)知識(shí)的內(nèi)容,希望大家喜歡!
虛擬化技術(shù)的定義
虛擬化技術(shù)與多任務(wù)以及超線程技術(shù)是完全不同的。多任務(wù)是指在一個(gè)操作系統(tǒng)中多個(gè)程序同時(shí)一起運(yùn)行,而在虛擬化技術(shù)中,則可以同時(shí)運(yùn)行多個(gè)操作系統(tǒng),而且每一個(gè)操作系統(tǒng)中都有多個(gè)程序運(yùn)行,每一個(gè)操作系統(tǒng)都運(yùn)行在一個(gè)虛擬的CPU或者是虛擬主機(jī)上;而超線程技術(shù)只是單CPU模擬雙CPU來平衡程序運(yùn)行性能,這兩個(gè)模擬出來的CPU是不能分離的,只能協(xié)同工作。
虛擬化技術(shù)也與VMware Workstation等同樣能達(dá)到虛擬效果的軟件不同,是一個(gè)巨大的技術(shù)進(jìn)步,具體表現(xiàn)在減少軟件虛擬機(jī)相關(guān)開銷和支持更廣泛的操作系統(tǒng)方面。
純軟件虛擬化解決方案存在很多限制。“客戶”操作系統(tǒng)很多情況下是通過VMM(Virtual Machine Monitor,虛擬機(jī)監(jiān)視器)來與硬件進(jìn)行通信,由VMM來決定其對(duì)系統(tǒng)上所有虛擬機(jī)的訪問。(注意,大多數(shù)處理器和內(nèi)存訪問獨(dú)立于VMM,只在發(fā)生特定事件時(shí)才會(huì)涉及VMM,如頁(yè)面錯(cuò)誤。)在純軟件虛擬化解決方案中,VMM在軟件套件中的位置是傳統(tǒng)意義上操作系統(tǒng)所處的位置,而
操作系統(tǒng)的位置是傳統(tǒng)意義上應(yīng)用程序所處的位置。
虛擬化技術(shù)是一套解決方案。完整的情況需要CPU、主板芯片組、BIOS和軟件的支持,例如VMM軟件或者某些操作系統(tǒng)本身。即使只是CPU支持虛擬化技術(shù),在配合VMM的軟件情況下,也會(huì)比完全不支持虛擬化技術(shù)的系統(tǒng)有更好的性能。
兩大CPU巨頭Intel和AMD都想方設(shè)法在虛擬化領(lǐng)域中占得先機(jī),但是AMD的虛擬化技術(shù)在時(shí)間上要比Intel落后幾個(gè)月。Intel自2005年末開始便在其處理器產(chǎn)品線中推廣應(yīng)用Intel Virtualization Technology(Intel VT)虛擬化技術(shù)。
而AMD方面也已經(jīng)發(fā)布了支持AMD Virtualization Technology(AMD VT)虛擬化技術(shù)的一系列處理器產(chǎn)品,包括Socket S1接口的Turion 64 X2系列以及Socket AM2接口的Athlon 64 X2系列和Athlon 64 FX系列等等,并且絕大多數(shù)的AMD下一代主流處理器,包括即將發(fā)布的Socket F接口的Opteron都將支持AMD VT虛擬化技術(shù)。
虛擬化技術(shù)的原理
虛擬機(jī)是對(duì)真實(shí)計(jì)算環(huán)境的抽象和模擬,VMM 需要為每個(gè)虛擬機(jī)分配一套數(shù)據(jù)結(jié)構(gòu)來管理它們狀態(tài),包括虛擬處理器的全套寄存器,物理內(nèi)存的使用情況,虛擬設(shè)備的狀態(tài)等等。VMM 調(diào)度虛擬機(jī)時(shí),將其部分狀態(tài)恢復(fù)到主機(jī)系統(tǒng)中。并非所有的狀態(tài)都需要恢復(fù),例如主機(jī) CR3 寄存器中存放的是 VMM 設(shè)置的頁(yè)表物理地址,而不是 Guest OS 設(shè)置的值。主機(jī)處理器直接運(yùn)行 Guest OS 的機(jī)器指令,由于 Guest OS運(yùn)行在低特權(quán)級(jí)別,當(dāng)訪問主機(jī)系統(tǒng)的特權(quán)狀態(tài)(如寫 GDT寄存器)時(shí),權(quán)限不足導(dǎo)致主機(jī)處理器產(chǎn)生異常,將運(yùn)行權(quán)自動(dòng)交還給 VMM。此外,外部中斷的到來也會(huì)導(dǎo)致 VMM 的運(yùn)行。
VMM 可能需要先將 該虛擬機(jī)的當(dāng)前狀態(tài)寫回到狀態(tài)數(shù)據(jù)結(jié)構(gòu)中,分析虛擬機(jī)被掛起的原因,然后代表 Guest OS 執(zhí)行相應(yīng)的特權(quán)操作。最簡(jiǎn)單的情況,如Guest OS 對(duì) CR3 寄存器的修改,只需要更新虛擬機(jī)的狀態(tài)數(shù)據(jù)結(jié)構(gòu)即可。一般而言,大部分情況下,VMM 需要經(jīng)過復(fù)雜的流程才能完成原本簡(jiǎn)單的操作。最后 VMM 將運(yùn)行權(quán)還給 Guest OS,Guest OS 從上次被中斷的地方繼續(xù)執(zhí)行,或處理 VMM “塞”入的虛擬中斷和異常。這種經(jīng)典的虛擬機(jī)運(yùn)行方式被稱為 Trap-And-Emulate,虛擬機(jī)對(duì)于 Guest OS 完全透明,Guest OS 不需要任何修改,但是 VMM 的設(shè)計(jì)會(huì)比較復(fù)雜,系統(tǒng)整體性能受到明顯的損害。
虛擬化技術(shù)的分類
硬件虛擬化
虛擬機(jī)(Virtual machine或VM),可以像真實(shí)機(jī)器一樣運(yùn)行程序的計(jì)算機(jī)的軟件實(shí)現(xiàn)
便攜式應(yīng)用程序,允許程序在便攜式設(shè)備中運(yùn)行而不用在操作系統(tǒng)中安裝
跨平臺(tái)虛擬化,允許針對(duì)特定CPU或者操作系統(tǒng)的軟件不做修改就能運(yùn)行在其他平臺(tái)上,例如Wine
虛擬設(shè)備,運(yùn)行于虛擬化平臺(tái)之上,面向應(yīng)用的虛擬機(jī)映像
模擬器
完全虛擬化,敏感指令在操作系統(tǒng)和硬件之間被捕捉處理,客戶操作系統(tǒng)無需修改,所有軟件都能在虛擬機(jī)中運(yùn)行,例如IBM CP/CMS,VirtualBox,VMware Workstation
硬件輔助虛擬化,利用硬件(主要是CPU)輔助處理敏感指令以實(shí)現(xiàn)完全虛擬化的功能,客戶操作系統(tǒng)無需修改,例如VMware Workstation,Xen,KVM
部分虛擬化,針對(duì)部分應(yīng)用程序進(jìn)行虛擬,而不是整個(gè)操作系統(tǒng)
準(zhǔn)虛擬化/超虛擬化(paravirtualization),為應(yīng)用程序提供與底層硬件相似但不相同的軟件接口,客戶操作系統(tǒng)需要進(jìn)行修改,例如早期的Xen
操作系統(tǒng)級(jí)虛擬化,使操作系統(tǒng)內(nèi)核支持多用戶空間實(shí)體,例如Parallels Virtuozzo Containers,Unix-like系統(tǒng)上的chroot,Solaris上的Zone
平臺(tái)虛擬化,將操作系統(tǒng)和硬件平臺(tái)資源分割開
應(yīng)用程序虛擬化,在操作系統(tǒng)和應(yīng)用程序間建立虛擬環(huán)境
虛擬內(nèi)存,將不相鄰的內(nèi)存區(qū),甚至硬盤空間虛擬成統(tǒng)一連續(xù)的內(nèi)存地址
存儲(chǔ)虛擬化,將實(shí)體存儲(chǔ)空間(如硬盤)分隔成不同的邏輯存儲(chǔ)空間
網(wǎng)絡(luò)虛擬化,將不同網(wǎng)絡(luò)的硬件和軟件資源結(jié)合成一個(gè)虛擬的整體
虛擬專用網(wǎng)絡(luò)(),在大型網(wǎng)絡(luò)(通常是Internet)中的不同計(jì)算機(jī)(節(jié)點(diǎn))通過加密連接而組成的虛擬網(wǎng)絡(luò),具有類似局域網(wǎng)的功能
存儲(chǔ)器虛擬化,將網(wǎng)絡(luò)系統(tǒng)中的隨機(jī)存儲(chǔ)器聚合起來,形成統(tǒng)一的虛擬內(nèi)存池
桌面虛擬化,在本地計(jì)算機(jī)顯示和操作遠(yuǎn)程計(jì)算機(jī)桌面,在遠(yuǎn)程計(jì)算機(jī)執(zhí)行程序和儲(chǔ)存信息
數(shù)據(jù)庫(kù)虛擬化
軟件虛擬化
服務(wù)虛擬化
虛擬化發(fā)展時(shí)間線
看過“虛擬化技術(shù)基礎(chǔ)知識(shí)“的人還看了: