計算機中,Virtualization是一種資源管理技術,是將計算機的各種實體資源,如服務器、網絡、內存及存儲等,予以抽象、轉換后呈現出來,打破實體結構間的不可切割的障礙,使用戶可以比原本的組態更好的方式來應用這些資源。這些資源的新虛擬部分是不受現有資源的架設方式,地域或物理組態所限制。一般所指的虛擬化資源包括計算能力和資料存儲。
實際生產環境中,虛擬化技術主要用來解決高性能的物理硬件產能過剩的老的舊的硬件產能過低的重組重用,透明化底層物理硬件,從而最大化的利用物理硬件。
虛擬化技術中,可以同時運行多個操作系統,而且每一個操作系統中都有多個程序運行,每一個操作系統都運行在一個虛擬的CPU或者是虛擬主機上。
虛擬化技術也與VMware Workstation等同樣能達到虛擬效果的軟件不同,是一個巨大的技術進步,具體表現在減少軟件虛擬機相關開銷和支持更廣泛的操作系統方面。
按虛擬的對象分類:
1.硬件虛擬化,使用硬件模擬, 你能夠在基於ARM處理器的主機上模擬運行基於PowerPC未經任何修改的操作系統. 你甚至能在每個不同模擬處理器上運行多個虛擬機.
2.虛擬機(Virtual machine或VM),可以像真實機器一樣運行程序的計算機的軟件實現
①平台虛擬化,將操作系統和硬件平台資源分區開
a.完全虛擬化,敏感指令在操作系統和硬件之間被捕捉處理,客戶操作系統無需修改,所有軟件都能在虛擬機中運行,例如IBM CP/CMS,VirtualBox,VMware Workstation
b.硬件輔助虛擬化,利用硬件(主要是CPU)輔助處理敏感指令以實現完全虛擬化的功能,客戶操作系統無需修改,例如VMware Workstation,Xen,KVM
c.部分虛擬化,針對部分應用程序進行虛擬,而不是整個操作系統
d.准虛擬化/超虛擬化(paravirtualization),為應用程序提供與底層硬件相似但不相同的軟件接口,客戶操作系統需要進行修改。例如Xen的半虛擬化模式。
e.操作系統級虛擬化,使操作系統內核支持多用戶空間實體,例如Parallels Virtuozzo Containers、OpenVZ、LXC以及類Unix系統上的chroot,Solaris上的Zone
②應用程序虛擬化,在操作系統和應用程序間創建虛擬環境
a.便攜式應用程序,允許程序在便攜式設備中運行而不用在操作系統中安裝
b.跨平台虛擬化,允許針對特定CPU或者操作系統的軟件不做修改就能運行在其他平台上,例如Wine
c.虛擬設備,運行於虛擬化平台之上,面向應用的虛擬機映像
d.模擬器
3.虛擬內存,將不相鄰的內存區,甚至硬盤空間虛擬成統一連續的內存地址
4.存儲虛擬化,將實體存儲空間(如硬盤)分隔成不同的邏輯存儲空間
5.網絡虛擬化,將不同網絡的硬件和軟件資源結合成一個虛擬的整體(請給出來源?)
①虛擬專用網絡(VPN),在大型網絡(通常是Internet)中的不同計算機(節點)通過加密連接而組成的虛擬網絡,具有類似局域網的功能
②存儲器虛擬化,將網絡系統中的隨機存儲器聚合起來,形成統一的虛擬內存池
6.桌面虛擬化,在本地計算機顯示和操作遠程計算機桌面,在遠程計算機執行程序和儲存信息
7.數據庫虛擬化
8.軟件虛擬化
9.服務虛擬化
按照抽象程度的不同,常常把虛擬技術分為五個層次:
① 指令集結構層(Instruction Set Architecture Level)指令集結構層的虛擬技術是通過軟件方法模擬指令的執行效果。
② 硬件抽象層(Hardware Abstraction Level)硬件抽象層的虛擬技術是有硬件支持的虛擬技術,如2005年和2006年Intel公司和AMD公司推出的大部分新款x86架構處理器都帶有虛擬技術支持。兩家公司都稱新的帶有虛擬技術支持的處理器可以大大提高虛擬機的運行效率和性能。
③ 操作系統層(OS Level)
④ 應用層(Application Level)應用層的虛擬技術是最常見的,如Java虛擬機、微軟.net CLI和Parrot。
⑤ 庫層(Library Level)
虛擬化技術的應用:
服務器集成
沙盒(Sandboxing)
多運行環境
多操作系統
測試和性能監視
應用集成
虛擬硬件
軟件移植
系統可管理性
測試/質量保證