1. 虛擬化及分類
虛擬化是指計算機元件在虛擬的基礎上而不是真實的基礎上運行。虛擬化技術可以擴大硬件的容量,簡化軟件的重新配置過程。CPU的虛擬化技術可以單CPU模擬多CPU並行,允許一個平台同時運行多個操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。
http://m.ctocio.com.cn/virtualization/392/12425892_m.shtml
顧名思義,虛擬化就是在計算上虛擬出一些實際計算機里真實存在的東西,以達到更方便、簡單、成本低、安全性高的目的。比如,虛擬計算機硬件,可以安裝操作系統;以現有操作系統為藍本,再虛擬出幾個一摸一樣的;虛擬一個操作系統環境,可以安裝應用軟件。這個解釋,是本人很通俗的說法,嚴格精准的定義,至今還未看到。
虛擬化技術,經過數年的發展,已經成為一個龐大的技術家族,其技術形式種類繁多,實現的應用也一大籮筐了。但對其分類,網上的介紹比較含糊,分類屬性不一。如將服務器虛擬化、硬件虛擬化、cpu虛擬化相提並論,但其實它們都屬一個類別,只是按不同屬性分類得出的不同名稱。
1.1 以實現層次來分:硬件虛擬化,操作系統虛擬化,應用程序虛擬化。
言歸正傳,現在按照不同屬性,對虛擬化做一個分類:
- 以被應用的領域來划分:服務器虛擬化、存儲虛擬化、網絡虛擬化、桌面虛擬化。
- 還有從以某類里衍生出來的,無法歸類,比如cpu虛擬化,文件虛擬化。
這些不用屬性的類別之間的關系又是交錯聯系的,下面逐一簡單介紹一下。
1.1.1 硬件虛擬化
硬件虛擬化,就是用軟件來虛擬一台標准電腦的硬件配置,如cpu、內存、硬盤、聲顯卡、光驅等,成為一台虛擬的裸機,然后就可以在上面安裝操作系統了,其代表產品VMware。
使用時,先在操作系統里安裝一個硬件虛擬化軟件,用其虛擬出一台電腦,再安裝系統,做到系統里運行系統,並可虛擬出多台電腦,安裝多個相同或不同的系統。
其代表產品為VMware,其余幾個知名的有:微軟的Virtual PC,開源免費的VirtualBox。
為虛擬機分配的硬件資源要占用實際硬件的資源,對性能損耗也較大。因為是在系統里安裝虛擬化軟件,再在虛擬的電腦上裝系統,所以就有原系統和虛擬化軟件兩層消耗,為了提高性能,出現了另外一種硬件虛擬化形式:直接在裸機上安裝虛擬化軟件,然后安裝多個系統,並同時運行。跳過原系統這一環節,性能大大提高。這種虛擬化又叫做准虛擬化。VMware推出的相關產品叫VMware ESXi,微軟的該類產品為Hyper-V,主要應用於服務器領域。
1.1.2 操作系統虛擬化(OS-level virtualization)
操作系統虛擬化就是以一個系統為母體,克隆出多個系統。它比硬件虛擬化要靈活方便,因為只需在系統里裝一個虛擬化軟件,就能以原系統為樣本,很快克隆出系統,克隆出的系統與原系統除去一些ID標識外,其余都一樣。
看似與硬件虛擬化一樣,都是虛擬多個操作系統出來,但與硬件虛擬化還是很多不同之處:
1. 操作系統虛擬化是以原系統為樣本,虛擬出一個近乎一摸一樣的系統;硬件虛擬化是虛擬硬件環境,然后真實的安裝系統。它們虛擬的東西不一樣。
2. 操作系統虛擬化,虛擬的系統都只能為同樣的系統;硬件虛擬化,虛擬的系統可以為不同的系統,如linnux、mac、windows家族。
3. 操作系統虛擬化,虛擬的多個系統有較強的聯系,體現在:第一,可以多個虛擬系統同時進行配置,更改了原系統,就改了所有;第二,如果原系統損壞,會殃及所有虛擬系統。硬件虛擬化虛擬的多個系統,是相互獨立,與原系統也無聯系。原系統的損壞不會殃及虛擬的系統。
4. 操作系統虛擬化的性能損耗低,它們都是虛擬的系統,而非硬件虛擬化那樣真實安裝的實體;沒有硬件虛擬化的虛擬硬件層,也大大降低了性能損耗。
這種方式由FreeBSD jails首創;類似的例子包括Solaris Containers, OpenVZ, Linux-VServer, AIX Workload Partitions, Parallels Virtuozzo Containers, 以及 iCore Virtual Accounts。
1.1.3 應用虛擬化
前兩種虛擬化技術,大多應用於企業、服務器和一些IT專業工作領域。隨着虛擬化技術的發展,逐漸從企業往個人、專業往大眾應用的趨勢發展,便出現了應用程序虛擬化技術,簡稱應用虛擬化。它近年虛擬化的新貴和熱門領域。
前兩種虛擬化的目的是虛擬完整的真實的操作系統,應用虛擬化的目的也是虛擬操作系統,但只是為保證應用程序的正常運行虛擬系統的某些關鍵部分,如注冊表、C盤環境等,所以較為輕量、小巧。
1.2 根據虛擬化程度分為:軟件全虛擬化、軟件半虛擬化和硬件輔助虛擬化
純軟件的“全虛擬化”方式不需要修改客戶機操作系統,但是其性能較未虛擬化時影響比較大。支持完全虛擬化的虛擬機軟件包括VMware Workstation和Virtual PC等。
半虛擬化模式,這種模式需要對客戶機操作系統進行更改,使得客戶機操作系統知道其運行在虛擬化環境下,從而可以獲得更高的性能。半虛擬化的典型產品包括Xen、UML等。
看虛擬化技術是完全虛擬化還是半虛擬化,首先看虛擬化技術有沒有修改內核,xen虛擬化技術需要修改內核,因此它有完全虛擬化和半虛擬化之分,kvm沒有修改內核,因此,它只有完全虛擬化;還要看cpu是否支持硬件虛擬化,支持硬件虛擬化,就是完全虛擬化,不支持,就是半虛擬化。xen有兩種選擇,而kvm只有一種選擇,所以,xen有完全虛擬化和半虛擬化之分,kvm只有完全虛擬化。
硬件輔助虛擬化技術,在處理器中加入了新的特權級來運行虛擬機監控層,使得客戶機操作系統可以運行在原始特權級,不需要更改,並且由硬件來完成兩個特權級之間的轉換。硬件輔助虛擬技術提高了虛擬機的兼容性和性能。支持硬件輔助虛擬化的有 Linux KVM和Xen等。
1.3 按照虛擬層次分為:分為程序級虛擬化和系統級虛擬化
前者通常是在應用層上創建虛擬機,這種虛擬機通常是為了運行應用程序而創建,並且隨着應用程序的退出而結束。應用級虛擬機的一個典型例子就是Java虛擬機(JVM)。
系統級虛擬化包括一個Hypervisor或者VMM(Virtual Machine Monitor)。Hypervisor是位於硬件資源和操作系統之間的軟件層。它使得多個單獨的虛擬機實例可以同時運行,並使得多個虛擬機可以共享各種物理硬件資源。Hypervisor協調這些硬件資源(CPU、內存和各種I/O設備)的訪問,為虛擬機分配各種需要使用的資源。
對於系統級虛擬化,根據虛擬機監視器 Hypervisor或VMM的實現層次,主要可以分為基於宿主操作系統的系統級虛擬化和基於硬件的系統級虛擬化。
基於宿主操作系統的虛擬機作為應用程序運行在宿主操作系統(Host OS)之上,其架構如圖1 所示。因此Guest VM需要由Guest Os內核先經過Hypervisor,再經過宿主操作系統才能訪問硬件。支持基於宿主操作系統虛擬化的產品有 Virtual PC、VMWare Workstation和VirtualBox等。
另外一種虛擬化是基於硬件的系統級虛擬化。在這種模式下,如圖2虛擬機監控層Hypervisor或VMM直接運行在裸機硬件之上。它具有最高的特權,可以直接管理和調用底層的硬件資源。虛擬機監控層向Guest VM提供虛擬的硬件資源,而Guest Vm對硬件資源的訪問都需要通過這一層。支持基於硬件的系統級虛擬化產品包括VMware ESX/ESXi和Xen等。
1.5 其它虛擬化
-
虛擬內存,將不相鄰的內存區,甚至硬盤空間虛擬成統一連續的內存地址
-
存儲虛擬化,將實體存儲空間(如硬盤)分隔成不同的邏輯存儲空間
-
網絡虛擬化,將不同網絡的硬件和軟件資源結合成一個虛擬的整體
-
虛擬專用網絡(VPN),在大型網絡(通常是Internet)中的不同計算機(節點)通過加密連接而組成的虛擬網絡,具有類似局域網的功能
-
存儲器虛擬化,將網絡系統中的隨機存儲器聚合起來,形成統一的虛擬內存池
-
桌面虛擬化,在本地計算機顯示和操作遠程計算機桌面,在遠程計算機執行程序和儲存信息
-
數據庫虛擬化
-
軟件虛擬化
-
服務虛擬化
2. Hypervisor:用來創建和運行虛擬機的軟件,固件或硬件
http://www.cnblogs.com/beanmoon/archive/2012/12/18/2822050.html
Hypervisor 是用來創建和運行虛擬機的軟件,固件或硬件。運行Hypervisor的電腦叫做主機(host machine),hypervisor之上運行的操作系統叫做客戶機(guest machine)。hypervisor 把主機的硬件資源虛擬化,從而為客戶機提供了運行其操作系統的平台。按hypervisor運行的層次不同,可以把它可以分為兩類,如下所示:
1)type1 hypervisor(也叫bare metal hypervisor)直接運行在硬件層面上,常見的type1 hypervisor有vmware的Esxi(集成在vmware vsphere中的)和開源軟件Xen,兩者都是免費的。我們可以把它們刻錄到光盤中然后從光盤啟動就可以直接安裝到硬件層面上了。由於type1 hypervisor提供的界面是非常簡單的使得對其的管理還需借助另一種管理軟件——hypervisor management software(這個是要收費的)。Vmware把hypervisor和hypervisor management software集成到一起了,也即是vsphere。
2)type2 hypervisor相信大家就比較熟悉了,像我們平常使用的vmware workstation或者vitual box都屬於此類,我們在自己的windows機上安裝上vmware workstation或者vitual box,然后創建新的操作系統,接着就同時運行幾個虛擬的操作系統了(前提是你的內存足夠大以容納這些操作系統)。
type1 hypervisor和type2 hypervisor的工作機制是差不多的(vsphere的管理界面甚至和vmware workstation類似),只是前者直接工作在硬件層面,效率較高,兩者還有一個區別是前者的虛擬客戶機所需要的內存是按需分配的(例如你分配了1G內存給虛擬客戶機,如果現在該客戶機只需512M就可以了,那么type1 hypervisor就只給它分配512M內存),這樣你所有正在運行的虛擬機的所分配內存之和可以比實際的物理內存大(后者就不行);而type2 hypervisor是你給虛擬客戶機分配多少內存,你的虛擬客戶機就在內存中占用多少內存空間,此外在type2 hypervisor中還要考慮主機的操作系統的內存使用。
2. 幾種Hypervisor介紹
http://www.cnblogs.com/skyme/archive/2013/06/05/3114265.html
2.1 RedHat KVM
- 虛擬化方式:完全虛擬化
- 架構:寄居架構(linux內核); 祼金屬架構RHEV-H
- 特點:祼金屬架構RHEV-H或在關鍵的硬盤和網卡上支持半虛擬化VirtIO,達到最佳性能。
- I/O協議棧:KVM重用了整個Linux I/O協議棧,所以KVM的用戶就自然就獲得了最新的驅動和I/O協議棧的改進。
架構圖:
2.2 VmWare ESX
- 虛擬化方式:完全虛擬化
- 架構:裸金屬架構
- I/O協議棧:VMware 選擇性能,但是把I/O協議棧放到了hypervisor里面。不幸的是,VMware kernel是專有的,那就意味着VMware不得不開發和維護整個協議棧,會導致開發速度會減慢,你的硬件可能要等一段時間才會得到VMware的支持。
架構圖:
2.3 Citrix XenServer
- 虛擬化方式:半虛擬化(linux安裝linux); 全虛擬化(linux安裝windows),硬件輔助虛擬化
- 架構:裸金屬架構
- I/O協議棧:Xen選擇了可維護這條道路,它將所有的I/O操作放到了Linux guest里面,也就是所謂的domain-0里面。重用Linux來做I/O, Xen的維護者就不用重寫整個I/O協議棧了。但不幸的是,這樣就犧牲了性能:每一個中斷都必需經過Xen的調度,才能切換到domain 0, 並且所有的東西都不得不經過一個附加層的映射。
架構圖:
xen的完全虛擬化與半虛擬化的區別是,完全虛擬化需要cpu支持硬件虛擬化,而半虛擬化不需要cpu支持硬件虛擬化。也就是,cpu支持了硬件虛擬化,xen配置完成后就是完全虛擬化,cpu不支持就是半虛擬化。
2.4 Microsoft Hyper-V
- 虛擬化方式:半虛擬化
- 架構:裸金屬架構 Hyper-V Server; 寄居架構 Windows 2008
- 特點:父分區(宿主機操作系統)的位置挪到了子分區(虛擬機操作系統)的旁邊,宿主機操作系統和虛擬機操作系統是平級的,沒有誰依附誰之上的關系。
- I/O協議棧:虛擬機看到的所有設備不再都是虛擬出來的,有部分的硬件資源是真實的物理設備。
架構圖: