雖然學(xué)過虛擬化,這里還有你不知道的呦!
什么是虛擬化技術(shù)
在計(jì)算機(jī)中,虛擬化是一種資源管理技術(shù),是將計(jì)算機(jī)的各種實(shí)體資源,如服務(wù)器、網(wǎng)絡(luò)、內(nèi)存及存儲(chǔ)等,予以抽象、轉(zhuǎn)換后呈現(xiàn)出來(lái),打破實(shí)體結(jié)構(gòu)間的不可切割的障礙,使用戶可以比原本的組態(tài)更好的方式來(lái)應(yīng)用這些資源。這些資源的新虛擬部份是不受現(xiàn)有資源的架設(shè)方式,地域或物理組態(tài)所限制。一般所指的虛擬化資源包括計(jì)算能力和資料存儲(chǔ)。
虛擬化技術(shù)分為哪些
1.硬件虛擬化
2.虛擬機(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)無(wú)需修改,所有軟件都能在虛擬機(jī)中運(yùn)行,例如IBM CP/CMS,VirtualBox,VMware Workstation
- 硬件輔助虛擬化,利用硬件(主要是CPU)輔助處理敏感指令以實(shí)現(xiàn)完全虛擬化的功能,客戶操作系統(tǒng)無(wú)需修改,例如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)境
3.虛擬內(nèi)存,將不相鄰的內(nèi)存區(qū),甚至硬盤空間虛擬成統(tǒng)一連續(xù)的內(nèi)存地址
4.存儲(chǔ)虛擬化,將實(shí)體存儲(chǔ)空間(如硬盤)分隔成不同的邏輯存儲(chǔ)空間
5.網(wǎng)絡(luò)虛擬化,將不同網(wǎng)絡(luò)的硬件和軟件資源結(jié)合成一個(gè)虛擬的整體
虛擬專用網(wǎng)絡(luò)(VPN),在大型網(wǎng)絡(luò)(通常是Internet)中的不同計(jì)算機(jī)(節(jié)點(diǎn))通過加密連接而組成的虛擬網(wǎng)絡(luò),具有類似局域網(wǎng)的功能
存儲(chǔ)器虛擬化,將網(wǎng)絡(luò)系統(tǒng)中的隨機(jī)存儲(chǔ)器聚合起來(lái),形成統(tǒng)一的虛擬內(nèi)存池
6.桌面虛擬化,在本地計(jì)算機(jī)顯示和操作遠(yuǎn)程計(jì)算機(jī)桌面,在遠(yuǎn)程計(jì)算機(jī)執(zhí)行程序和儲(chǔ)存信息
7.數(shù)據(jù)庫(kù)虛擬化
8.軟件虛擬化
9.服務(wù)虛擬化
10.虛擬化發(fā)展時(shí)間線
最好不要虛擬化
虛擬化雖好,但在數(shù)據(jù)中心里并不能把所有的東西都拿來(lái)虛擬化。下面所列舉的服務(wù)器就并不適合整合進(jìn)入虛擬化平臺(tái)。
近些年虛擬化技術(shù)對(duì)IT行業(yè)的發(fā)展有很大的幫助,但有時(shí)它并不是萬(wàn)能的。
對(duì)數(shù)據(jù)中心來(lái)說,虛擬化可以節(jié)約成本,最大化利用數(shù)據(jù)中心的容量和更好的保護(hù)數(shù)據(jù)。資源虛擬化管理為CIO提供了有形的指標(biāo),讓IT部門運(yùn)行更加有效率。
既然虛擬化有這么多的好處,那么問題來(lái)了:虛擬化就一定是好的嗎?
在一些特殊的情況下,虛擬化并不理想。那些數(shù)據(jù)中心里不可或缺的資源就必須部署在物理服務(wù)器。將這些資源放在虛擬化平臺(tái)也不是不能正常工作,但放在物理服務(wù)器是合理的風(fēng)險(xiǎn)規(guī)避。
虛擬機(jī)原理
虛擬機(jī)是對(duì)真實(shí)計(jì)算環(huán)境的抽象和模擬,VMM 需要為每個(gè)虛擬機(jī)分配一套數(shù)據(jù)結(jié)構(gòu)來(lái)管理它們狀態(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。此外,外部中斷的到來(lái)也會(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)整體性能受到明顯的損害。