1. 程式人生 > >虛擬化技術原理(上)

虛擬化技術原理(上)

虛擬化 原理 基礎

現在很流行什麽大數據,虛擬化,雲計算什麽一堆堆的,聽著就高端大氣上檔次,那麽什麽是虛擬化呢,筆者也在學習中,和大家分享下最近學的虛擬化,希望大家一起學習


虛擬化前言
在生產環境中,可能會需要很多服務來應用,但是有的服務可能占用的資源會很少,如果每個服務用一臺服務器來跑的話,可能會很浪費資源,而且增大消費,但是如果把很多服務在一臺服務器上跑的話,文件會很混亂。所以希望服務運行在很多個不會影響的OS,並且減少服務器數量。因此,虛擬化技術應用而生,簡單的說,虛擬化技術就是一臺服務器上運行多個OS。
列如VMware workstation虛擬機來說,VMware只是服務器上的一個進程,而它上面可以運行很多個虛擬機, 如Centos、Ubantu、03、08等各種系統,它們只是進程VMware裏面的進程,這些虛擬機都城為Guest OS,而宿主機為Host OS
技術分享圖片
虛擬化概念
再分層架構中,提供虛擬化平臺的層稱為hypervisor,又叫VMM。虛擬化的核心技術就是VMM(虛擬機監控器),它是一個管理中間層軟件,運行在系統和硬件之間,可以讓多個OS共享一套硬件。VMM具有管理、部署、規劃虛擬機硬件的功能。VMM和虛擬機一起運行,並且相互不為影響。當運行VMM時,VMM會分配給每臺虛擬機指定的CPU、Memory、I/O等硬件資源,並加載Guest OS。當然,虛擬機裏的操作同樣也是由VMM來接收再轉發給硬件。
VMM必須滿足三個要求:1、程序在虛擬環境中和真實環境中運行必須完全相同。 2、指令集中的絕大部分指令可以直接在CPU上運行(排除電源關閉等指令集) 3、VMM能完全控制所有系統資源。
技術分享圖片
虛擬化類型
虛擬化根據不同的標準有很多種分類,如:完全虛擬化、半虛擬化、硬件虛擬化、跨平臺虛擬化等。

完全虛擬化
在完全虛擬化中,Guest OS就像在運行在正常的服務器上一樣,完全不知道自己運行在虛擬化平臺上,可以向機器發出指令,Guest OS發出的指令,全程由VMM接受,再轉發送給CPU,但對於一些敏感的指令,VMM會過濾掉。
列如Guest OS發出power off的指令,如果不經過過濾CPU會直接關閉電源。這裏VMM會接受並修改這個指令,再轉發給CPU,僅讓CPU關閉虛擬機的電源。
硬件虛擬化
硬件虛擬化是由CPU廠商直接在芯片上提供了對虛擬化的支持。比如Intel的vt和AMD的amd-v都為CPU增加了新的執行模式。Intel對指令集重新設計,使得原本不能通過先陷入後模擬的方式執行的指令都可以順利執行。開啟vt-x後,可以把一個CPU邏輯上轉換為多個CPU。新的指令集增加了Root模式位於Ring 0的下面,可以理解為在硬件級別增添了Ring -1,讓VMM運行Ring -1(相當於普通服務器Ring 0),而Guest OS運行在Non-Root模式——Ring 0。當切換到Guest模式時,CPU提供了先前完整的特權等級,讓Guest OS可以不加修改的運行在物理的CPU上。此時,VMM通過一個位於內存的數據結構(Intel稱為VMCS,AMD稱為VMCB)來控制Guest OS與Host OS的交互,以完成整個平臺的虛擬化

技術分享圖片
筆者現在也就學了這麽多,希望大家有什麽多指出來,大家一起學習

虛擬化技術原理(上)