雖然學過虛擬化,這里還有你不知道的呦!
什么是虛擬化技術
在計算機中,虛擬化是一種資源管理技術,是將計算機的各種實體資源,如服務器、網絡、內存及存儲等,予以抽象、轉換后呈現出來,打破實體結構間的不可切割的障礙,使用戶可以比原本的組態更好的方式來應用這些資源。這些資源的新虛擬部份是不受現有資源的架設方式,地域或物理組態所限制。一般所指的虛擬化資源包括計算能力和資料存儲。
虛擬化技術分為哪些
1.硬件虛擬化
2.虛擬機(Virtual machine或VM),可以像真實機器一樣運行程序的計算機的軟件實現
- 便攜式應用程序,允許程序在便攜式設備中運行而不用在操作系統中安裝
- 跨平臺虛擬化,允許針對特定CPU或者操作系統的軟件不做修改就能運行在其他平臺上,例如Wine
- 虛擬設備,運行于虛擬化平臺之上,面向應用的虛擬機映像
- 模擬器
- 完全虛擬化,敏感指令在操作系統和硬件之間被捕捉處理,客戶操作系統無需修改,所有軟件都能在虛擬機中運行,例如IBM CP/CMS,VirtualBox,VMware Workstation
- 硬件輔助虛擬化,利用硬件(主要是CPU)輔助處理敏感指令以實現完全虛擬化的功能,客戶操作系統無需修改,例如VMware Workstation,Xen,KVM
- 部分虛擬化,針對部分應用程序進行虛擬,而不是整個操作系統
- 準虛擬化/超虛擬化(paravirtualization),為應用程序提供與底層硬件相似但不相同的軟件接口,客戶操作系統需要進行修改,例如早期的Xen
- 操作系統級虛擬化,使操作系統內核支持多用戶空間實體,例如Parallels Virtuozzo Containers,Unix-like系統上的chroot,Solaris上的Zone
- 平臺虛擬化,將操作系統和硬件平臺資源分割開
- 應用程序虛擬化,在操作系統和應用程序間建立虛擬環境
3.虛擬內存,將不相鄰的內存區,甚至硬盤空間虛擬成統一連續的內存地址
4.存儲虛擬化,將實體存儲空間(如硬盤)分隔成不同的邏輯存儲空間
5.網絡虛擬化,將不同網絡的硬件和軟件資源結合成一個虛擬的整體
虛擬專用網絡(VPN),在大型網絡(通常是Internet)中的不同計算機(節點)通過加密連接而組成的虛擬網絡,具有類似局域網的功能
存儲器虛擬化,將網絡系統中的隨機存儲器聚合起來,形成統一的虛擬內存池
6.桌面虛擬化,在本地計算機顯示和操作遠程計算機桌面,在遠程計算機執行程序和儲存信息
7.數據庫虛擬化
8.軟件虛擬化
9.服務虛擬化
10.虛擬化發展時間線
最好不要虛擬化
虛擬化雖好,但在數據中心里并不能把所有的東西都拿來虛擬化。下面所列舉的服務器就并不適合整合進入虛擬化平臺。
近些年虛擬化技術對IT行業的發展有很大的幫助,但有時它并不是萬能的。
對數據中心來說,虛擬化可以節約成本,最大化利用數據中心的容量和更好的保護數據。資源虛擬化管理為CIO提供了有形的指標,讓IT部門運行更加有效率。
既然虛擬化有這么多的好處,那么問題來了:虛擬化就一定是好的嗎?
在一些特殊的情況下,虛擬化并不理想。那些數據中心里不可或缺的資源就必須部署在物理服務器。將這些資源放在虛擬化平臺也不是不能正常工作,但放在物理服務器是合理的風險規避。
虛擬機原理
虛擬機是對真實計算環境的抽象和模擬,VMM 需要為每個虛擬機分配一套數據結構來管理它們狀態,包括虛擬處理器的全套寄存器,物理內存的使用情況,虛擬設備的狀態等等。VMM 調度虛擬機時,將其部分狀態恢復到主機系統中。并非所有的狀態都需要恢復,例如主機 CR3 寄存器中存放的是 VMM 設置的頁表物理地址,而不是 Guest OS 設置的值。主機處理器直接運行 Guest OS 的機器指令,由于 Guest OS運行在低特權級別,當訪問主機系統的特權狀態(如寫 GDT寄存器)時,權限不足導致主機處理器產生異常,將運行權自動交還給 VMM。此外,外部中斷的到來也會導致 VMM 的運行。
VMM 可能需要先將 該虛擬機的當前狀態寫回到狀態數據結構中,分析虛擬機被掛起的原因,然后代表 Guest OS 執行相應的特權操作。最簡單的情況,如Guest OS 對 CR3 寄存器的修改,只需要更新虛擬機的狀態數據結構即可。一般而言,大部分情況下,VMM 需要經過復雜的流程才能完成原本簡單的操作。最后 VMM 將運行權還給 Guest OS,Guest OS 從上次被中斷的地方繼續執行,或處理 VMM “塞”入的虛擬中斷和異常。這種經典的虛擬機運行方式被稱為 Trap-And-Emulate,虛擬機對于 Guest OS 完全透明,Guest OS 不需要任何修改,但是 VMM 的設計會比較復雜,系統整體性能受到明顯的損害。