歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 完全虛擬化軟件KVM的應用

完全虛擬化軟件KVM的應用

日期:2017/2/28 14:26:10   编辑:Linux教程

一、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

--------------------------------------分割線 --------------------------------------

RHEL6 KVM虛擬化創建橋接網卡-網橋 http://www.linuxidc.com/Linux/2013-08/88517.htm

RedHat Linux KVM虛擬機橋接 http://www.linuxidc.com/Linux/2013-02/79934.htm

CentOS 5.6下KVM的安裝/橋接設置/虛擬機創建及運行 http://www.linuxidc.com/Linux/2012-12/76883.htm

Ubuntu下用libvirt安裝KVM虛擬機時找不到/bin/qemu-kvm問題解決 http://www.linuxidc.com/Linux/2013-08/88985.htm

RedHat6.5下安裝配置KVM虛擬機 http://www.linuxidc.com/Linux/2014-10/107972.htm

--------------------------------------分割線 --------------------------------------

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技術可以降低內存占用而提高整體性能。

Copyright © Linux教程網 All Rights Reserved