虛擬化技術(shù)的缺點(diǎn),虛擬化技術(shù)也有約束與限制,最明顯的是由于虛擬化層協(xié)調(diào)資源而導(dǎo)致客戶(hù)機(jī)系統(tǒng)性能下降。此外,由于虛擬化管理軟件抽象層而引起主機(jī)沒(méi)有被優(yōu)化使用,使得主機(jī)利用率低或降低了用戶(hù)服務(wù)質(zhì)量。
不明顯但是更加危險(xiǎn)的是隱含的安全問(wèn)題,這大多是由于模擬不同的執(zhí)行環(huán)境所產(chǎn)生的。
1.性能降低性能問(wèn)題是使用虛擬化技術(shù)所需關(guān)注的主要問(wèn)題之一。由于虛擬化在客戶(hù)機(jī)和主機(jī)之間增加了抽象層,這將增加客戶(hù)任務(wù)的操作延遲。例如,在硬件虛擬化情況下,當(dāng)模擬一個(gè)可以安裝完整系統(tǒng)的裸機(jī)時(shí),性能降低歸咎于下列活動(dòng)產(chǎn)生的開(kāi)銷(xiāo):
①維持虛擬處理器的狀態(tài)。
②支持特權(quán)指令(自陷和模擬特權(quán)指令)。
③支持虛擬機(jī)分頁(yè)。
④控制臺(tái)功能。
此外,當(dāng)硬件虛擬化是通過(guò)在主機(jī)操作系統(tǒng)上安裝或執(zhí)行的程序?qū)崿F(xiàn)時(shí),性能降低的主要原因是虛擬機(jī)管理器同其他應(yīng)用程序一起被執(zhí)行和調(diào)度,從而共享主機(jī)的資源。由于技術(shù)進(jìn)步以及計(jì)算能力的提升,這些問(wèn)題變得不再突出。
例如,用于硬件虛擬化的特定技術(shù),如半虛擬化技術(shù),可以提高客戶(hù)機(jī)程序的性能,無(wú)須修改便可將客戶(hù)機(jī)上的大部分執(zhí)行任務(wù)遷移到主機(jī)上。編程級(jí)的虛擬機(jī),如JVM或.NET,當(dāng)性能要求比較高時(shí),可以選擇編譯本地代碼。
2.低效和用戶(hù)體驗(yàn)下降
虛擬化有時(shí)會(huì)導(dǎo)致主機(jī)的低效使用。特別是當(dāng)某些主機(jī)的特定功能不能由抽象層展現(xiàn),進(jìn)而變得不可訪問(wèn)時(shí)。在硬件虛擬化環(huán)境中,設(shè)備驅(qū)動(dòng)程序可能會(huì)出現(xiàn)這種情況,虛擬機(jī)有時(shí)僅僅提供只映射主機(jī)部分特性的默認(rèn)圖形卡。
在編程級(jí)虛擬機(jī)環(huán)境中,一些底層的操作系統(tǒng)特性變得不可訪問(wèn),除非使用特定的庫(kù)。例如,在Java第一版本中,圖形化編程的支持是非常有限的,應(yīng)用程序的界面和使用感覺(jué)非常差。用于設(shè)計(jì)用戶(hù)界面的Swing新框架解決了這個(gè)問(wèn)題,在軟件開(kāi)發(fā)工具包中集成了OpenGL庫(kù),加強(qiáng)了圖形化功能。
3.安全漏洞和威脅
虛擬化滋生了新的難以預(yù)料的惡意網(wǎng)絡(luò)釣魚(yú),它能夠以完全透明的方式模擬主機(jī)環(huán)境,使得惡意程序可以從客戶(hù)機(jī)提取敏感信息。
在硬件虛擬化環(huán)境中,惡意程序可以在操作系統(tǒng)之前預(yù)安裝,并作為一個(gè)微虛擬機(jī)管理器。這樣該操作系統(tǒng)就可以被控制和操縱,并從中提取敏感信息給第三方。這類(lèi)惡意軟件包括BluePill和SubVirt。BluePill針對(duì)AMD處理器系列,將安裝的操作系統(tǒng)的執(zhí)行移到虛擬機(jī)中完成。微軟與美國(guó)密歇根大學(xué)合作研發(fā)的SubVirt早期版本是原型系統(tǒng)。
SubVirt影響客戶(hù)機(jī)操作系統(tǒng),而當(dāng)虛擬機(jī)重新啟動(dòng)時(shí),它將獲得主機(jī)的控制權(quán)。這類(lèi)惡意軟件的傳播是因?yàn)樵瓉?lái)的硬件和CPU產(chǎn)品并未考慮虛擬化?,F(xiàn)有的指令集不能通過(guò)簡(jiǎn)單的改變或更新以適應(yīng)虛擬化的需求。英特爾和AMD也相繼推出了針對(duì)虛擬化的硬件支持Intel VT和AMD Pacifica。
編程級(jí)的虛擬機(jī)也存在同樣的問(wèn)題:運(yùn)行環(huán)境的改變可以獲得敏感信息或監(jiān)視客戶(hù)應(yīng)用程序所使用的內(nèi)存位置。這樣,運(yùn)行時(shí)環(huán)境的原始狀態(tài)將被修改和替換,如果虛擬機(jī)管理程序內(nèi)存在惡意軟件或主機(jī)操作系統(tǒng)的安全漏洞被利用,將會(huì)經(jīng)常發(fā)生安全問(wèn)題。