虛擬化是云計算的基礎,虛擬化可以讓一臺物理服務器上運行多臺虛擬機,這些虛擬機雖然共享同一臺服務器上的cpu、內存等資源,而它們之間又是彼此相互隔離,可以分配給多個人同時使用,互不影響。我們可以把這臺做了虛擬化的物理服務器成為云計算服務器,當這些用戶使用虛擬機時,所有的運算、資源調用都在服務器上進行,本地只負責顯示和交互,這就是云計算的概念。
在說到云計算時,往往有一些專業術語,讓初次接觸虛擬化的小白不知所措,這里我們就來解釋一下。
Hypervisor:Hypervisor是計算概念的一部分,作為虛擬化技術為人所知。基本上Hypervisor的目的是共享硬件資源,Hypervisor允許多個操作系統共享一個CPU,我們可以簡單的把Hypervisor理解成像一個操作系統的的東西,但是它在操作系統的上層。
全虛擬化:把Hypervisor直接安裝在物理機器上,在Hypervisor上運行多個虛擬的操作系統。
半虛擬化:在物理機器上先安裝操作系統,比如:Linux,然后再操作系統上通過如KVM這些軟件來虛擬機。
全虛擬化一般對硬件虛擬化功能進行了特別優化,性能上比半虛擬化要高。
半虛擬化因為基于普通的操作系統,會比較靈活,還可以支持虛擬機嵌套。
KVM:KVM全稱是 Kernel-Based Virtual Machine。也就是基 Linux內核實現的虛擬機。
KVM主要包含兩個模塊:KVM內核模塊和QEMU設備模塊。
KVM內核模塊:主要包括KVM虛擬化核心模塊KVM.ko,以及硬件相關的KVM_intel或KVM_AMD模塊;負責CPU與內存虛擬化,包括VM創建,內存分配與管理、vCPU執行模式切換等。
QEMU設備模擬:實現IO虛擬化與各設備模擬(磁盤、網卡、顯卡、聲卡等),通過IOCTL系統調用與KVM內核交互。KVM僅支持基于硬件輔助的虛擬化(如Intel-VT與AMD-V)。
在內核加載時,KVM先初始化內部數據結構,打開CPU控制寄存器CR4里面的虛擬化模式開關,執行VMXON指令將Host OS設置為root模式,并創建的特殊設備文件/dev/kvm等待來自用戶空間的命令,然后由KVM內核與QEMU相互配合實現VM的管理。
KVM會復用部分Linux內核的能力,如進程管理調度、設備驅動,內存管理等。
作者:禹龍云 上傳時間:2021-05-21 15:39:54