KVM服務器虛擬化

 系統運維     |      2024-04-28 08:26

KVM虛擬機簡介

 
    Kernel-based Virtual Machine的簡稱,是一個開源的系統虛擬化模塊,自Linux2.6.20之后繼承Linux的主要發行版本中。它使用Linux自身的調度器進行管理,所以相對于Xen,其核心源碼很少。KVM目前已成為學術界的VMM之一。
 
    Kvm僅僅是一個linux內核的模塊,當在linux中安裝了kvm后,linux會變成了hypervisor,即VMM,進行CPU和內存的虛擬管理,而qemu工具,實現虛擬機的創建管理,monitor管理各個IO設備,redhat在購買掉kvm后,專門定制了適合于redhat系統的qemu-kvm管理工具。
 
   
 
    Kvm只能運行在支持硬件虛擬化的CPU上,并且只支持64bits系統。kvm屬于完全虛擬化的實現軟件。
 
 
 

KVM架構

 
 
 
   
 
 
   
 
 
 
 
 
  如上kvm架構圖   安裝了kvm后的內核變得很詭異,其模式分為了三部分:內核模式,用戶模式,來賓模式      VCPU:用線程模擬實現的CPU      KVM的主要兩類組件:   1、/dev/kvm:管理虛擬機的設備文件,用戶空間的程序可通過調用其ioctl()來完成虛擬機的創建啟動等管理工作,它是一個字符設備;其主要完成的操作包括:     創建虛擬機;     為虛擬機分配內存;     讀、寫VCPU的寄存器;     向VCPU注入中斷請求;     運行VCPU;   2、qemu進程:工作于用戶空間的組件,用于方針PC機的I/0類硬件設備。
 
 
 
 
 
 
 

KVM內存管理

 
  KVM繼承了Linux系統管理內存的諸多特性,比如分配給虛擬使用的內存可以被交換至交換空間、能夠使用大內存頁以實現更好的性能,以及對NUMA的 的支持能夠讓虛擬機高效訪問更大的內存空間等。
 
  KVM基于Intel的EPT(Extended Page Table)或AMD的RVI(Rapid Virtualization Indexing)技術可以支持更新的內存虛擬功能,這可以降低CPU的占用率,并提高較好的吞吐量。
 
  此外,KVM還借助于KSM(Kernel Same-page Merging)這個內核特性實現了內存頁面恭喜那個。KSM 通過掃描每個虛擬機的內存查找各虛擬機間相同的內存頁,并將這些內存合并為一個被各種相關虛擬機共享的單獨頁面。在某虛擬機試圖修改此頁面中的數據時,KSM會重新為其提供一個新的頁面副本。實踐中,運行于同一臺物理主機上的具有相同GuestOS的虛擬機之間出現相同內存頁面的概率是很大的,比如共享庫,內核或其他內存對象等都有可能表現為相同的內存頁,因此KSM技術可以降低內存占用而提高整體性能。
 

KVM的管理工具

 
    
 
 
 
 
 
 

使用qemu-kvm管理KVM虛擬機

 
  Qemu是一個廣泛使用的開源計算機仿真器和虛擬機。當作為仿真器時,可以在一種架構(如PC機)下運行另一種架構如(ARM)的操作系統和程序。而通過動態轉換,其可以獲得很高的運行效率,當作為一個虛擬機時,qemu可以通過直接使用真機的系統資源,讓虛擬系統能夠獲得接近于物理機的性能表現。qemu支持xen或者kvm模式下的虛擬化。當用kvm時,qemu可以虛擬x86、服務器和嵌入式powerpc,以及s390的系統
 
 
 
  Qemu當運行與主機架構相同的目標架構時可以使用KVM。例如當在一個x86兼容處理器上運行qemu-system-x86時,可以利用kvm加速——為宿主機和客戶機提供更好的性能
 
 
 
  Qemu的組成部分:
 
    處理器模擬器(x86、PowerPC和Sparc)
 
    仿真設備(顯卡、網卡、硬盤、鼠標等)
 
    用于將仿真設備連接至主機設備(真實設備)的通用設備;
 
    模擬機的描述信息;
 
    調試器;
 
    與模擬器交互的用戶接口;