1. 程式人生 > >KVM虛擬化概述與安裝

KVM虛擬化概述與安裝

ask 很多 但是 驅動程序 rest config rep 虛擬機 所在

虛擬化是構建雲計算基礎架構不可或缺的關鍵技術之一,雲計算的雲端系統,其實質上就是一個大型的KVM分布式系統,虛擬化通過在一個物理平臺上虛擬出更多的虛擬平臺,而其中的每一個虛擬平臺則可以作為獨立的終端加入雲端的分布式系統.比起直接使川物理平臺,虛擬化在資源的有效利用,動態調配和高可靠性方而有著巨大的優勢.利用虛擬化,企業不必拋棄現有的基礎架構即可構建全新的信息基礎架構,從而更加充分地利用原有的IT投資,可以說虛擬化是雲計算不可缺少的重要組件.

本小結內容將主要介紹一下KVM虛擬機的一些原理性的東西,包括常用的虛擬化軟件廠商等,KVM章節所有內容參考KVM虛擬化技術-實戰與原理解析這本書,文中的內容均為個人隨筆與總結,沒有任何商業目的,只為工作方便使用.

虛擬化其實是一個廣義上的術語,它是指計算機系統在虛擬的環境上運行,而不是真是主機,主要目的是為了簡化管理,優化資源的解決方案,打個比方你現在有一臺64核的主機,但是你的主機資源並不會全部利用起來,想一下會不會造成資源的浪費呢,在這裏虛擬化就起到了至關重要的作用啦,它可以輕易地分配我們的主機資源避免浪費等.

在X86平臺虛擬化技術中,新引入的虛擬化層通常稱為虛擬機監控器 (Vutual Machine Monitor VMM),也叫做Hypervisor虛擬機監控器運行的環境,也就是真實的物理平臺,稱之為宿主機.而虛擬出來的平臺通常稱為客戶機,裏向運行的系統對應地也稱為客戶機操作系統.

虛擬化技術有很多種實現方式,比如軟件虛擬化和硬件虛擬化

,再比如全虛擬化和半虛擬化,接下來我們就看了解一下各種虛擬化的優缺點吧.

軟件虛擬化與硬件虛擬化

軟件虛擬化: 軟件虛擬化,就是在現有的物理平臺上,實現對物理平臺訪問的截獲和模擬,常見的軟件虛擬機例如QEMU,它是通過純軟件來仿真x86平臺處理器的取指、解碼和執行,客戶機的指令並不在物理平臺上直接執行,由於所有的指令都是軟件模擬的,因此性能往往比較差,但是可以在同一平臺上模擬不同架構平臺的虛擬機.

而VMWare的軟件虛擬化則使用了動態二進制翻譯的技術,虛擬機監控機在可控制的範圍內,允許客戶機的指令在物理平臺下直接運行.但是,客戶機指令在運行前會被虛擬機監控機掃描,其中突破虛擬機監控機限制的指令會被動態替換為可以在物理平臺上直接運行的安全指令,或者替換為對虛擬機監控器的軟件調用這樣做的好處是比純軟件模擬性能有大幅的提升,但是也同時失去了跨平臺虛擬化的能力.

硬件虛擬化: 硬件虛擬化,就是物理平臺本身提供了對特殊指令的截獲和重定向的硬件支持,甚至有的硬件會提供額外的資源來幫助軟件實現對關鍵硬件資源的虛擬化,從而提升整體性能,由於硬件虛擬化,無需進行二進制轉換,減少了性能上的開銷,極大的簡化了VMM設計,進而使得VMM能夠按通用標準進行編寫,性能更加強大.

但是需要註意的是,硬件虛擬化是一整套解決方案,完整的情況下需要使用CPU,主板芯片組,BIOS和軟件的支持,缺一不可,只有全部買齊交夠了錢,才能夠發揮硬件虛擬化的全部性能.

半虛擬化與全虛擬化對比

半虛擬化: 軟件虛擬化可以在缺乏硬件虛擬化支持的平臺上完全通過VMM軟件來實現對各個虛擬機的監控,以保證它們之間彼此獨立和隔離,但是付出的代價是軟件的復雜度增加性能上損失了,本質上來說,半虛擬化弱化了對虛擬機特殊指令的被動截獲要求,將其轉化成客戶機操作系統的主動通知,但是半虛擬化要通過修改操作系統源代碼來實現主動通知.

Xen 就是一個開源半虛擬化技術的一個例子,操作系統作為虛擬服務器在Xen-Hypervisor上運行之前,它必須在內核層面進行某些改變.因此Xen適用於BSD、Linux、Solaris及其他開源操作系統,但不適合 Windows 這些幣閉源的的操作系統進行虛擬化處理,因為它們不公開源代碼,所以無法修改其內核.

全虛擬化: 與半虛擬化技術不同,全虛擬化為客戶機提供了完整的虛擬化X86平臺,包括處理器內存和外設,支持任何可以在物理機上運行的操作平臺和系統,也無需對操作平臺和系統進行任何修改即可實現運行,為虛擬機平臺提供了最大的靈活性,這也是全虛擬化無可比擬的優勢所在.

近年來隨著硬件虛擬化技術的產生,運行於Intel平臺的全虛擬化性能已經超越了半虛擬化產品,這一點在x64平臺操作系統上表現的更出色,可以語言在將來,全虛擬化必將成為主流的存在趨勢.

KVM虛擬化系統簡介

KVM 的全稱是(Kernel Virtual Machine 內核虛擬機),KVM虛擬機最初是由一個以色列的創業公司Qumranet開發的,作為他們的VDI產品的虛擬機,2006年10月KVM模塊的源代碼被正式接納進入Linux Kermel成為內核源代碼的一部分、作為一個功能和成熟度都遜於Xen的項目,在這麽快的時間內被內核社區接納,主要原因在於:在虛擬化方興未艾的同時,內核社區急於將虛擬化的支持包含在內,但是Xen取代內核自身的管理系統資源的架構引起了內核開發人員的不滿和抵觸,此時KVM就是首選的產品,在2008年RedHat出資1億700美金收購了Qumranet,從此KVM在RHEL6以後的系統上默認替代了Xen成為了,RedHat的默認虛擬化產品.

KVM功能概述

KVM是基於虛擬化擴展(Intel VT或AMD-V)的x86硬件,是Linux系統完全原生的全虛擬化解決方案,部分的半虛擬化支持,主要是通過半虛擬網絡驅動程序的形式用於Linux和Windows客戶機系統的,KVM目前設計為通過可加載的內核模塊,支持廣泛的客戶機操作系統,比如 Linux、BSD、Windows、Solaris、RcactOS和AROS Rcsearch operating Systcm.

但需要註意的是,KVM本身不執行任何模擬,需要用戶空間程序通過/dev/kvm接口設置一個客戶機虛擬服務器的地址空間,向它提供模擬的I/O,並將它的視頻顯示到宿主機器的屏幕上.

KVM的發展前景

盡管 KVM 是一個相對較新的虛擬機管理程序,但是誕生不久就被 Linux 社區接納,成為隨 Linux 內核發布的輕量級模塊,與 Linux 內核集成,使 KVM 可以直接獲益於最新的 Linux 內核開發成果,比如更好的進程調度支持、更廣泛物理硬件平臺的驅動、更高的代碼質量,等等.

作為相對較新的虛擬化方案,KVM一直沒有成熟的工具可用於管理KVM服務器和客戶機,不過現在隨著libvirt、virt-manager等工具和OpenStack等雲計算平臺的逐漸完善,KvM管理工具在易用性方面的劣勢已經逐漸被克服.

另外,KVM仍然可以改進虛擬網絡的支持、虛擬存儲支持、增強的安全性、高可用性、容錯性、電源管理、HPC實時支持、虛擬 CPU可伸縮性、跨供應商兼容性、科技可移植性等方面,不過現在KVM開發者社區比較活躍,也有不少大公司的高級工程師參與開發,我們有理由相信很多功能都會在不遠的將來得到完善.

安裝並配置KVM

1.首先宿主機必須是Linux系統,然後通過YUM倉庫,快速安裝KVM管理工具.

[[email protected] ~]# yum install -y qemu-kvm libvirt virt-install bridge-utils

Package 10:qemu-kvm-1.5.3-160.el7.x86_64 already installed and latest version
Package libvirt-4.5.0-10.el7_6.3.x86_64 already installed and latest version
Package virt-install-1.5.0-1.el7.noarch already installed and latest version
Package bridge-utils-1.5-9.el7.x86_64 already installed and latest version
Nothing to do

2.安裝完畢之後,檢查一下KVM模塊是否已經加載到系統,並設置開機自啟動.

[[email protected] ~]# lsmod |grep "kvm"
kvm_intel             174841  0
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm

[[email protected] ~]# ln -s /usr/libexec/qemu-kvm /sbin/
[[email protected] ~]# systemctl restart libvirtd
[[email protected] ~]# systemctl enable libvirtd

3.配置一個網橋設備,用於遠程連接到本主機內的虛擬機.

[[email protected] ~]# cd /etc/sysconfig/network-scripts
[[email protected] ~]# vim ifcfg-br0

TYPE=Bridge
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114

[[email protected] ~]# reboot

KVM虛擬化概述與安裝