介紹KVM,它的本質(zhì)以及如何配置和安裝。虛擬化最近幾年取得了長足的進步,首先由于有大量的開源虛擬機管理程序在不斷發(fā)展,這個改進幾乎排除了操作系統(tǒng)與大功率服務(wù)器快速增長的利用之間的障礙,公司立即受益。知道最近,軟件仿真虛擬化一直是關(guān)注的焦點,兩個常見的軟件仿真虛擬化途徑是完全虛擬化和半虛擬化。對于完全虛擬化,通常調(diào)用管理程序或虛擬機監(jiān)視器,存在于虛擬操作系統(tǒng)和硬件層之間,這個層在操作系統(tǒng)實例之間多路復(fù)用競爭系統(tǒng)資源。半虛擬化不同,管理程序在一個協(xié)作的環(huán)境中運作,因為每個客戶操作系統(tǒng)都知道它正運行在一個虛擬化環(huán)境中,因此每個使用管理程序的協(xié)作都在硬件下完成虛擬。
兩個途徑都有優(yōu)勢也有劣勢,半虛擬化的主要優(yōu)勢在于它運行盡可能快地基于軟件的虛擬化,以不支持有專利的操作系統(tǒng)為代價。完全虛擬化沒有這個限制,但是,完全虛擬化管理程序非常復(fù)雜。VMware,一個商業(yè)虛擬化解決方案,它就是一個完全虛擬化的例子,Xen,用戶模式Linux(UML)和其他提供的是半虛擬化解決方案。
簡單介紹一下基于硬件的虛擬化,這個線路已經(jīng)變得模糊起來,隨著Intel的VT技術(shù)和AMD的SVM技術(shù)的出現(xiàn),編寫一個管理程序變得更加簡單了,現(xiàn)在,保持管理程序復(fù)雜性到最小程度,對于完全虛擬化受益匪淺。
Xen作為最優(yōu)秀的半虛擬化引擎,在基于硬件的虛擬化的幫助下,現(xiàn)在也支持完全虛擬化MS windows了。KVM是一個相對較新的簡單的,但也非常強大的虛擬化引擎,它已經(jīng)集成到Linux內(nèi)核中去了,讓內(nèi)核天生有虛擬化的能力,因為KVM使用的是基于硬件的虛擬化技術(shù),它不需要修改客戶操作系統(tǒng),因此,部署在一個受支持的處理器上,它可以從Linux支持任何平臺。
KVM
kvm是一個獨特的管理程序,kvm開發(fā)者們發(fā)明了一個方法讓Linux內(nèi)核自身變成一個管理程序,通過將KVM作為一個內(nèi)核模塊實現(xiàn),在虛擬環(huán)境下Linux內(nèi)核集成管理程序?qū)⑵渥鳛橐粋€可加載的模塊可以簡化管理和提升性能。這可能是開發(fā)者將KVM添加到內(nèi)核的主要原因。
這種方法有許多優(yōu)勢,通過添加虛擬化功能到一個標準的Linux內(nèi)核,虛擬環(huán)境能從所有正在Linux內(nèi)核上運行的工作中受益,在這種模式下,每個虛擬機都是一個常規(guī)的Linux進程,通過Linux調(diào)度程序進行調(diào)度,通常,一個標準的Linux進程都有兩個執(zhí)行模式:內(nèi)核模式和用戶模式。對于應(yīng)用程序而言用戶模式是默認模式,當它需要一些來自內(nèi)核的服務(wù)時就進入內(nèi)核模式,如往磁盤上寫入時。KVM添加了第三個模式:客戶模式。
客戶模式進程是運行在虛擬機內(nèi)的,它非常象正常模式(無虛擬實例),有它自己的內(nèi)核和用戶空間變量、在客戶模式下可以使用正常的kill和ps命令,因為無虛擬實例,KVM虛擬機表現(xiàn)為一個正常的進程,能象其他進程一樣被殺掉,KVM利用硬件虛擬技術(shù)虛擬處理器的形態(tài),虛擬機的內(nèi)存管理由內(nèi)核直接處理,目前的版本I/O在用戶空間處理,主要通過QEMU完成。
一個典型的KVM安裝包括以下部件:
一個管理虛擬硬件的設(shè)備驅(qū)動,這個驅(qū)動通過一個字符設(shè)備/dev/kvm陳列它的功能
一個模擬pc硬件的用戶空間部件,目前,這在用戶空間處理,它是一個稍微改動過的QEMU進程。
I/O模型直接衍生于QEMU,支持寫時復(fù)制磁盤映像和其他QEMU特征。
你如何查明你的系統(tǒng)是否能運行KVM?首先,你需要一個支持虛擬化的處理器,這里有一個兼容KVM的處理器列表(http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors),看看你的處理器是否在其中。另外,你還可以檢查/proc/cpuinfo,如果在cpu flags字段看到了vmx或smx,那么你的處理器就支持KVM。
如何比較KVM和現(xiàn)存的管理程序
相對它的競爭者而言,KVM還是一個比較新的項目,與KVM的主要開發(fā)者Avi Kivity會面時,他是這樣與其他解決方案做對比的:
在許多方面,VMware是一個基礎(chǔ)破壞技術(shù),它只用軟件技術(shù)管理眾所周知地的復(fù)雜的x86架構(gòu)的完全虛擬化,達到了非常好的性能和穩(wěn)定性。結(jié)果,VMware變得非常大而其非常復(fù)雜的軟件了。換句話說,KVM依賴于最新的硬件的虛擬技術(shù),就其本身而論,它非常小(大約1萬行代碼)且相當簡單,另外一個巨大的不同之處是VMware是有專利的,而KVM是開源的。
Xen是一個相當大的項目,同時提供半虛擬化和完全虛擬化,它被設(shè)計為一個獨立的內(nèi)核,它只需要Linux執(zhí)行I/O,這樣使得它相當?shù)拇螅凶约旱恼{(diào)度程序、內(nèi)存管理器、計時器和機器初始化程序。
相反,KVM使用標準Linux調(diào)度程序、內(nèi)存管理器和其他服務(wù)。這樣KVM開發(fā)者們可以集中精力在虛擬化上,將虛擬技術(shù)建立在內(nèi)核上而不是去替換內(nèi)核。
QEMU是一個用戶空間模擬器,它是一個相當驚人的項目,可以在不同宿主處理器上模擬非常多的客戶處理器,而且性能非常好。但是,用戶空間架構(gòu)不允許它在無內(nèi)核加速器的情況下解決天生的速度問題。KVM認可QEMU的實用價值,使用它進行I/O硬件模擬。盡管KVM不帶有任何特殊的用戶空間,但QEMU代碼寫得非常好--因此我們使用了這些代碼。
但是,KVM也不是完美的,因為它還是一個新技術(shù),它包括下面的這樣一些限制:
在寫本文的時候,KVM僅支持Intel和AMD虛擬化,而Xen還支持IBM PowerPC和Itanium處理器。
目前的版本最宿主SMP處理器的支持還比較弱。
共2頁: 1 [2] 下一頁 | ||||
|