KVM

KVM 虛擬化api

 

KVM 模塊是KVM 虛擬機核心部分,其主要功能是初始化CPU 硬件,打開虛擬化模式,而後將虛擬客戶機運行在虛擬模式下,並對虛擬客戶機的運行提供必定的支持。

QEMU 設備模型,QUMU 自己並非KVM 一部分,其自身就是一個著名的開源虛擬機軟件,與KVM 不一樣,QEMU 虛擬機是一個純軟件的實現,因此性能不高,可是優勢是在支持QEMU 自己編譯運行的平臺上就能夠實現虛擬機的功能,
   甚至虛擬機與宿主機並非一個同一個架構,QEMU 代碼中有整套的虛擬機實現,包括處理器虛擬化,內存虛擬化,以及KVM 使用到的虛擬設備(好比網卡,顯卡,存儲控制器和硬盤等)
   KVM 在QEMU 的基礎上進行了修改,虛擬機運行期間,QEMU 經過KVM 提供的系統調用進入內核,由KVM 模塊負責將虛擬機置於處理器的特殊模式。遇到虛擬機進行輸入輸出操做,KVM 模塊會從上次的系統調用出口返回QEMU,
   由QEMU 負責解析和模擬這些設備。
Intel 虛擬化技術: Intel 虛擬化技術實際上是一系列硬件技術的結合,虛擬機監控機軟件經過選擇利用各項技術,從而提升虛擬化軟件的性能或者實現各類不一樣的功能。

 

 

 

 

KVM: Kernel-based Virtual Machine, Qumranet公司, 依賴於HVM;Intel VT-x, ADM ADM-V;

    KVM模塊載入後的系統的運行模式:
        內核模式:GuestOS執行I/O類操做,或其它的特殊指令的操做;稱做「來賓-內核」模式;
        用戶模式:表明GuestOS請求I/O類操做;
        來賓模式:GuestOS的非I/O類操做;事實上,它被稱做「來賓-用戶」模式;
        kvm hypervisor:

 

KVM 組件架構

KVM的組件:
        兩類組件:
            /dev/kvm:工做於hypervisor,在用戶空間可經過ioctl()系統調用來完成VM建立、啓動等管理功能;它是一個字符設備,功能:
                建立VM、爲VM分配內存、讀寫VCPU的寄存器、向VCPU注入中斷、運行VCPU等等;
            qemu進程:工做於用戶空間,主要用於實現模擬PC機的IO設備;

 

    KVM的工具棧:
        qemu:
            qemu-kvm
            qemu-img
        libvirt
            GUI: virt-manager, virt-viewer
            CLI: virt-install, virsh

        QEMU主要提供瞭如下幾個部分:
            處理器模擬器
            仿真IO設備
            關聯模擬的設備至真實設備;
            調試器
            與模擬器交互的用戶接口

 

安裝工具

#檢查是否支持虛擬化Intel 系列CPU 支持虛擬化的標誌是vmx ,AMD 系列CPU 的標誌爲svm 。
[root@localhost
~]# grep -E --color "(vmx|svm)" /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm epb tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt dtherm arat pln pts [root@localhost ~]#
[root@localhost ~]# modprobe kvm #裝載模塊

[root@localhost ~]# ls /dev/kvm     #驗證
/dev/kvm
[root@localhost ~]# 性能

 

 

[root@localhost /]# modinfo kvm   #查看裝載的模塊
filename:       /lib/modules/3.10.0-862.el7.x86_64/kernel/arch/x86/kvm/kvm.ko.xz
license:        GPL
author:         Qumranet
retpoline:      Y
rhelversion:    7.5
srcversion:     8A3372406CDF0ACF69A0E58
depends:        irqbypass
intree:         Y
vermagic:       3.10.0-862.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        3A:F3:CE:8A:74:69:6E:F1:BD:0F:37:E5:52:62:7B:71:09:E3:2B:96
sig_hashalgo:   sha256
parm:           ignore_msrs:bool
parm:           min_timer_period_us:uint
parm:           kvmclock_periodic_sync:bool
parm:           tsc_tolerance_ppm:uint
parm:           lapic_timer_advance_ns:uint
parm:           vector_hashing:bool
parm:           halt_poll_ns:uint
parm:           halt_poll_ns_grow:uint
parm:           halt_poll_ns_shrink:uint
[root@localhost /]# modinfo kvm-amd   #查看裝載的模塊
filename:       /lib/modules/3.10.0-862.el7.x86_64/kernel/arch/x86/kvm/kvm-amd.ko.xz
license:        GPL
author:         Qumranet
retpoline:      Y
rhelversion:    7.5
srcversion:     D8DE38BB5E913565DEFB99E
alias:          x86cpu:vendor:*:family:*:model:*:feature:*00C2*
depends:        kvm
intree:         Y
vermagic:       3.10.0-862.el7.x86_64 SMP mod_unload modversions 
signer:         CentOS Linux kernel signing key
sig_key:        3A:F3:CE:8A:74:69:6E:F1:BD:0F:37:E5:52:62:7B:71:09:E3:2B:96
sig_hashalgo:   sha256
parm:           npt:int
parm:           nested:int
parm:           avic:int
parm:           vls:int
parm:           vgif:int
[root@localhost /]# 

 

 

管理工具ui

KVM的工具棧:
        qemu:              #管理工具
            qemu-kvm                  
            qemu-img
libvirt GUI: virt
-manager, virt-viewer CLI: virt-install, virsh#libvirt是一套用於管理硬件虛擬化的開源API、守護進程與管理工具。[3]此套組可用於管理KVM、Xen、VMware ESXi、QEMU及其餘虛擬化技術。libvirt內置的API普遍用於雲解決方案開發中的虛擬機監視器編排層(Orchestration Layer)。
相關文章
相關標籤/搜索