一 、虛擬化
虛擬化是指計算機元件在虛擬的基礎上而不是真實的基礎上運行。虛擬化技術可以擴大硬件的容量,簡化軟件的重新配置過程。CPU的虛擬化技術可以單CPU模 擬多CPU並行,允許一個平台同時運行多個操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。
虛擬化的類型:
全虛擬化
半虛擬化(涉及修改guestos內核,因此僅支持開源kernel的系統)
硬件輔助虛擬化(主板上開啟虛擬化支持)
幾種虛擬化軟件簡介
KVM
完全虛擬化
架構:寄居架構(linux內核);祼金屬架構RHEV-H
特點:祼金屬架構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的設備上)