一 、虛擬化linux
虛擬化是指計算機元件在虛擬的基礎上而不是真實的基礎上運行。虛擬化技術能夠擴大硬件的容量,簡化軟件的從新配置過程。CPU的虛擬化技術能夠單CPU模 擬多CPU並行,容許一個平臺同時運行多個操做系統,而且應用程序均可以在相互獨立的空間內運行而互不影響,從而顯著提升計算機的工做效率。windows
虛擬化的類型:網絡
全虛擬化架構
半虛擬化(涉及修改guestos內核,所以僅支持開源kernel的系統)dom
硬件輔助虛擬化(主板上開啓虛擬化支持)性能
幾種虛擬化軟件簡介優化
KVM操作系統
徹底虛擬化翻譯
架構:寄居架構(linux內核);祼金屬架構RHEV-Horm
特色:祼金屬架構RHEV-H或在關鍵的硬盤和網卡上支持半虛擬化VirtIO,達到最佳性能。
I/O協議棧:KVM重用了整個Linux I/O協議棧,因此KVM的用戶就天然就得到了最新的驅動和I/O協議棧的改進。
VmWare ESX
徹底虛擬化
架構:裸金屬架構
I/O協議棧:VMware選擇性能,可是把I/O協議棧放到了hypervisor裏面。不幸的是,VMware kernel是專有的,那就意味着VMware不得不開發和維護整個協議棧,會致使開發速度會減慢,你的硬件可能要等一段時間纔會獲得VMware的支持。
Citrix XenServer
半虛擬化(linux安裝linux);全虛擬化(linux安裝windows),硬件輔助虛擬化
架構:裸金屬架構
I/O協議棧:Xen選擇了可維護這條道路,它將全部的I/O操做放到了Linux guest裏面,也就是所謂的domain-0裏面。重用Linux來作I/O, Xen的維護者就不用重寫整個I/O協議棧了。但不幸的是,這樣就犧牲了性能:每個中斷都必需通過Xen的調度,才能切換到domain 0, 而且全部的東西都不得不通過一個附加層的映射。
硬件虛擬化
CPU的虛擬化技術是一種硬件方案,支持虛擬技術的CPU帶有經特別優化過的指令集來控制虛擬過程,經過這些指令集,虛擬機能夠很容易提升性能,相比純軟件的虛擬化技術會在很大程度上提升性能。
純軟件的虛擬化技術
在純軟件虛擬化解決方案中,虛擬機中的操做系統實際上是真是操做系統下的一個應用程序,所以,虛擬操做系統上的應用程序到實際操做系統就要比一般應用程序多通過一個通訊層。
虛擬化技術分爲:
平臺虛擬化(Platform Virtualization)
針對計算機和操做系統的虛擬化。
資源虛擬化(Resource Virtualization)
針對特定的系統資源的虛擬化,好比內存、存儲、網絡資源等。
應用程序虛擬化(Application Virtualization)
包括仿真、模擬、解釋技術等。
純軟件虛擬化:
經過模擬完整的硬件環境來虛擬化guestos
效率較低
QEMU
虛擬化層翻譯:
多數的虛擬化採用虛擬機管理程序Hypervisor
Hypervisor是一個軟件層或者子系統(也稱爲VMM--Virtual Machine Monitor)
容許多種OS在相同的物理OS中運行
控制硬件並向GuestOS提供訪問底層硬件的途徑
向GuestOS提供虛擬化的硬件
x86 CPU環
核心指令直接調用運行Ring 0
應用程序運行調用Ring 3
在使用虛擬化時,GuestOS也要有指令運行在Ring 0,爲解決此問題採用:
①全虛擬化:
基於二進制翻譯
Hypervisor運行在Ring 0(翻譯指令)
GuestOS運行在Ring 1
經過異常捕獲機制
例如:VM QEMU
②半虛擬化
Hpervisor運行在Ring 0
GusetOS不能直接運行在Ring 0,須要對kernel進行修改,將運行在Ring 0上的指令轉爲調用Hypervisor
GuestOS上的應用運行在Ring 3
例如:Xen
③硬件輔助虛擬化
Intel-VT和AMD-V建立了一個新的Ring -1單獨給Hypervisor使用
GuestOS能夠直接使用Ring 0而無需修改
主流例如:KVM VM.ESXi Xen-3.0
Hypervisor分類
類型一:裸金屬型(直接安裝在硬件設備)
類型二:宿主型(安裝的有OS的設備上)