Linux支持的虛擬化
1.完全虛擬化:為客戶(hù)操作系統(tǒng)創(chuàng)建一個(gè)虛擬機(jī)實(shí)例状您,使客戶(hù)操作系統(tǒng)可以不加修改地運(yùn)行脖捻,虛擬機(jī)模擬底層硬件的某些部分愈诚,捕捉需要由管理程序(虛擬機(jī)監(jiān)視器)進(jìn)行仲裁的調(diào)用荣堰。要求所有的操作系統(tǒng)都是針對(duì)統(tǒng)一處理器架構(gòu)開(kāi)發(fā)的。最大問(wèn)題是如何處理特殊的特權(quán)指令模式医舆。這些指令必須被正確捕捉并且由管理程序處理俘侠。通過(guò)代碼掃描(即在一個(gè)未加修改的操作系統(tǒng)中即沒(méi)有虛擬化硬件的情況下州叠,找出那些調(diào)用并轉(zhuǎn)換為管理程序調(diào)用)向原始代碼中找到的特權(quán)捕獲指令處插入管理程序 調(diào)用代碼唱逢。
2.準(zhǔn)虛擬化:
3.模擬:
(1)系統(tǒng)模擬
(2)語(yǔ)言虛擬機(jī)
(3)專(zhuān)用模擬器
4.操作系統(tǒng)的虛擬化:在于更多地在操作系統(tǒng)的層次隔離服務(wù),而非在一個(gè)給定的平臺(tái)上虛擬化兩個(gè)或更多的操作系統(tǒng)啃洋,不如別的虛擬化方式那么可靠娃胆,一個(gè)用戶(hù)空間引起系統(tǒng)崩潰遍希,所有用戶(hù)空間都會(huì)隨之崩潰,因?yàn)楣蚕韮?nèi)核里烦。
/**********************硬件輔助虛擬化*************************/
/***********************開(kāi)源虛擬化解決方案*************************/
QEMU:平臺(tái)虛擬化應(yīng)用程序凿蒜,全系統(tǒng)模擬器,通過(guò)一個(gè)應(yīng)用程序來(lái)創(chuàng)建一臺(tái)(虛擬的)PC胁黑,然后模擬指定的操作系統(tǒng)废封。兩種模擬方式:
1.模擬的指令集和主機(jī)的相同,由于指令集吻合丧蘸,模擬過(guò)程相對(duì)簡(jiǎn)單漂洋。允許客戶(hù)代碼直接在CPU上運(yùn)行(不對(duì)其進(jìn)行模擬),接近于準(zhǔn)虛擬化的解決方案(但有一個(gè)模擬的PC環(huán)境)
2.模擬其他架構(gòu)力喷,相對(duì)較慢刽漂,通過(guò)動(dòng)態(tài)翻譯過(guò)程提高模擬效率。動(dòng)態(tài)翻譯過(guò)程中對(duì)翻譯代碼緩存?zhèn)溆玫苊希槐囟啻沃貜?fù)翻譯贝咙。翻譯方法采用編譯技術(shù)從而快速高效地將一種指令集中的指令序列翻譯到另一種指令集中
KVM:內(nèi)核虛擬機(jī),準(zhǔn)虛擬化的一個(gè)解決方案拂募,將Linux主操作系統(tǒng)轉(zhuǎn)變?yōu)橐粋€(gè)管理程序庭猩,一個(gè)可選加載的模塊,擴(kuò)充proc中的文件以支持虛擬化陈症。每個(gè)虛擬化內(nèi)核都作為主操作系統(tǒng)的進(jìn)程空間中的一個(gè)獨(dú)立進(jìn)程蔼水,此時(shí)主操作系統(tǒng)用做管理程序。依賴(lài)QEMU進(jìn)行平臺(tái)虛擬化