中圖分類號:TP392 文獻標識碼:A
摘要:本文介紹了KVM的相關(guān)理論,探討了在服務(wù)器端的內(nèi)核級虛擬化管理平臺 KVM的實現(xiàn)細節(jié),研究了用于 PC 平臺模擬的虛擬化軟件QEMU和支持 QEMU 設(shè)備驅(qū)動的 Libvirt 虛擬化環(huán)境管理套件實現(xiàn)途徑。
關(guān)鍵詞:服務(wù)器虛擬化;KVM ;QEMU
1.KVM 虛擬化技術(shù)
虛擬化就是將原本運行在真實環(huán)境下的計算機系統(tǒng)或組件運行在虛擬出來的環(huán)境中,是一種調(diào)配計算資源的方法,它利用軟件將不同層面,比如硬件、軟件、數(shù)據(jù)、網(wǎng)絡(luò)、存儲等隔離開來,使得層與層之間的改動更容易被實施,帶來的直接效果就是高效管理以能更有效地利用IT資源并方便提供合適的計算資源。
與桌面虛擬化、存儲虛擬化和網(wǎng)絡(luò)虛擬化不同,當利用軟件在服務(wù)器上創(chuàng)建一個虛擬機來模擬底層硬件的服務(wù)和功能,使得它能在一臺機器上運行多個操作系統(tǒng)時被稱為服務(wù)器虛擬技術(shù)。虛擬服務(wù)器端實現(xiàn)的功能模塊主要包括內(nèi)核級虛擬化管理平臺KVM,用于PC 平臺模擬的虛擬化軟件QEMU ,支持設(shè)備驅(qū)動的虛擬化環(huán)境管理套件Libvirt 。
KVM(Kernel-based Virtual Machine) 是一款基于GPL 授權(quán)方式的開源虛擬機軟件,由AviKivity 開發(fā)和維護,現(xiàn)歸RedHat 公司所有。KVM 是在Linux 系統(tǒng)中使用基于Intel VT 技術(shù)采用底層硬件的虛擬化支持來提供完整的原生虛擬化,只要底層硬件虛擬化支持,就能較好地將不同的操作系統(tǒng)和特殊硬件設(shè)備加以利用,從而能夠降低不同系統(tǒng)間維護的復(fù)雜度。
KVM只提供了一個虛擬化框架,還需要一種用戶空間工具來提供環(huán)境仿真能力,因此使用了QEMU 。QEMU 是一個平臺虛擬化解決方案,在KVM之前就已經(jīng)存在,可以仿真一個具有處理器和包括圖形適配器、磁盤、網(wǎng)絡(luò)設(shè)備等外圍設(shè)備的完整計算機系統(tǒng)。在客戶操作系統(tǒng)上執(zhí)行的功能是由QEMU 提供的,客戶操作系統(tǒng)所生成的任何請求都會被中途截獲,并重新發(fā)送到進程模擬的用戶模式中[1]。
Libvirt 是管理虛擬機和其他虛擬化功能的軟件集合。這些軟件包括一個API 庫、一個daemon 和一個命令行工具,用于實現(xiàn)一種單一的方式管理多種不同的虛擬化提供方式和hypervisor 虛擬化平臺。libvirt 通過一種特定于虛擬機監(jiān)控程序的機制與每個有效虛擬機監(jiān)控程序進行通信,以完成API 請求,并通過QEMU 來實現(xiàn)該功能。
Libvirt 分為Libvirtd 和Driver 兩部分,Libvirtd 是一個守護服務(wù)進程(Daemon Service) ,打開一個服務(wù)器可配偵聽端口號,偵聽從Libvirt 客戶端發(fā)出的URI 請求并解析該請求,然后調(diào)用Driver 向具體的虛擬機發(fā)出命令。
Libvirt 支持QEMU 虛擬環(huán)境,相應(yīng)地支持QEMU 的設(shè)備驅(qū)動。QEMU 的命令都可以通過Libvirt QEMU Driver 調(diào)用。Libvirt QEMU Driver 通過CLI 命令行方式發(fā)起對QEMU 的請求。Libvirt Driver 與QEMU 之間的通訊通過Linux PIPE 實現(xiàn),也就是Libvirt Driver 打開一個寫通道,QEMU 打開一個讀通道[2]。
Libvirt 的主要功能是進行虛擬機管理、遠程機器支持、存儲管理、網(wǎng)絡(luò)接口管理和虛擬NAT和基于路由的網(wǎng)絡(luò)。
virsh 構(gòu)建于libvirt 之上,它是一種虛擬shell 。virt-install 可用于從多個操作系統(tǒng)發(fā)行版供應(yīng)新域,virt-clone 可用于復(fù)制一個VM為新的VM ,virt-manager 是多用途桌面管理工具,virt-viewer 是安全連接到VM圖形控制臺的輕量級工具。
構(gòu)建于libvirt 之上的一種最重要的工具名為VirtIO 。VirtIO VM 管理應(yīng)用程序旨在管理單個節(jié)點上的單個VM 或多個主機上的大量VM。除了可以簡化大量主機和VM的管理之外,它還可用于跨平臺和架構(gòu)自動化集群,負載平衡和工作[3]。
2.高校實現(xiàn)服務(wù)器虛擬化的優(yōu)勢
服務(wù)器虛擬化架構(gòu)具有靈活多變的組織形式,非常適合于像高校這種頻繁更換OS系統(tǒng)平臺、機房、教學(xué)中心等大規(guī)模的、需求多變的應(yīng)用場景。
2.1提高服務(wù)器部署效率和利用率。
部署虛擬化服務(wù)器平臺之后,若某個系部或教師需要使用服務(wù)器進行教學(xué)科研或其他應(yīng)用活動,網(wǎng)管中心管理員在短時間內(nèi)就可以從虛擬化服務(wù)器平臺中按照需求劃分出滿足要求的虛擬服務(wù)器以供使用,盡最大能力合理分配服務(wù)器資源,當某個服務(wù)器不再使用時,管理員可以隨時將虛擬機撤銷,計算資源立即被釋放,然后這部分被釋放的計算資源可再次劃分為另一臺虛擬服務(wù)器,供另一個部門使用,避免造成資源浪費。
2.2提高網(wǎng)絡(luò)教學(xué)上機環(huán)境統(tǒng)一部署效率。
在典型的網(wǎng)絡(luò)教學(xué)環(huán)境中,教師除了授課之外,最大的困難在于為數(shù)十臺或上百臺學(xué)生機部署上機環(huán)境和經(jīng)常出現(xiàn)的由于硬件故障導(dǎo)致多個學(xué)生無法使用計算機的情況?;诜?wù)器虛擬化后可以使用RDP 、SPICE 等桌面顯示協(xié)議虛擬桌面環(huán)境解決方案,將傳統(tǒng)網(wǎng)絡(luò)教學(xué)環(huán)境下的學(xué)生機轉(zhuǎn)換為瘦客戶端,其所有軟件環(huán)境全部部署在后端數(shù)據(jù)中心虛擬桌面服務(wù)器上,實現(xiàn)快速的實驗環(huán)境模擬、重建,且使用瘦客戶端避免了學(xué)生機的硬件損壞,提高了授課中設(shè)備的正常使用率。
2.3極強的服務(wù)遷移和擴展能力。
在進行服務(wù)器應(yīng)用遷移的時候,只需要將這個包含了操作系統(tǒng)和應(yīng)用程序的虛擬機文件通過拷貝的方式復(fù)制到另外一臺服務(wù)器上面,如果對虛擬機文件進行復(fù)制操作,立刻就可以將一個虛擬機變成兩份完全一樣的虛擬機,極易部署和遷移。
若需提高虛擬化服務(wù)器平臺的處理能力,只需要增加更多的物理服務(wù)器數(shù)量來增強整個虛擬化平臺的處理能力,并將一部分應(yīng)用遷移到其上運行即可,整個過程不會對正在運行的虛擬機產(chǎn)生任何影響。
2.4高可用性和節(jié)能環(huán)保。
部署虛擬化服務(wù)器平臺之后,所有的服務(wù)器就構(gòu)建成一個統(tǒng)一的硬件處理平臺,任何一臺服務(wù)器的故障不會對整個系統(tǒng)造成任何影響,運行在其上的虛擬機以及運行在虛擬機上的業(yè)務(wù)不會因為一臺物理服務(wù)器或虛擬機的故障而停機,相當于為所有的服務(wù)器都構(gòu)建了高可用的系統(tǒng),任何一臺服務(wù)器的故障不會對運行在其上的虛擬機造成影響。
通過整合減少服務(wù)器數(shù)量,可減少服務(wù)器占用機房空間,降低發(fā)熱量,從而降低在制冷設(shè)備方面的投入及散熱成本。耗電量的減少及線纜維護工作量的減少,大大降低網(wǎng)管工作量和運營成本。
3.服務(wù)器虛擬化的實現(xiàn)過程
選用IBMx3650 服務(wù)器,安裝基于linux3.2.0 內(nèi)核的Ubuntu Server 12.04 x86_64 位操作系統(tǒng),基于KVM對服務(wù)器進行虛擬化,設(shè)置CPU 、內(nèi)存、硬盤、網(wǎng)絡(luò)等硬件環(huán)境,安裝操作系統(tǒng)及應(yīng)用,實現(xiàn)完整的服務(wù)器虛擬化解決方案。
3.1環(huán)境檢查及軟件安裝
KVM是基于CPU 硬件虛擬化基礎(chǔ)之上的,在安裝KVM 之前必須確認硬件層CPU 是否支持虛擬化技術(shù)。使用如下命令進行檢測,有輸出結(jié)果說明CPU 支持虛擬化。
3.2建立虛擬磁盤鏡像并安裝虛擬機
此步驟和傳統(tǒng)安裝方式一致。
3.3虛擬網(wǎng)絡(luò)的配置
默認設(shè)置是使用SLIRP 協(xié)議的用戶模式連接,它通過網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT) 透過宿主機和外部網(wǎng)絡(luò)進行通信,虛擬機操作系統(tǒng)內(nèi)網(wǎng)卡采用內(nèi)部DHCP 方式獲取私有IP 地址與外部網(wǎng)絡(luò)通訊,但虛擬機不能向外提供服務(wù),也不能與主機進行通信。
為了使外部主機可以直接連接到虛擬服務(wù)器上,需要配置網(wǎng)橋(bridge) ,網(wǎng)橋是一個接口,與eth0 不同的是它由多個接口共同構(gòu)成。網(wǎng)橋使虛擬接口通過物理接口連接到外部網(wǎng)絡(luò),對網(wǎng)絡(luò)中的其他主機來說,虛擬機看起來就像一臺普通的服務(wù)器主機。
網(wǎng)橋模式是將物理網(wǎng)卡eht0 虛擬成一個虛擬網(wǎng)橋brx 和虛擬網(wǎng)卡tapx ,然后將虛擬網(wǎng)卡tapx 和物理網(wǎng)卡ethx 加入網(wǎng)橋,設(shè)置成網(wǎng)橋端口并激活虛擬網(wǎng)卡tapx 。libvirt 每啟動一個VM 時,就為這個VM 創(chuàng)建一個tap 設(shè)備,稱為vnetx ,然后將這塊虛擬網(wǎng)卡加入橋設(shè)備brx ,網(wǎng)橋IP 設(shè)置成原主機IP 地址,這時主機操作系統(tǒng)就可正常通訊。
3.3虛擬機的優(yōu)化和管理
利用構(gòu)建于libvirt 之上的虛擬shell 程序virsh 以交互方式使用多個libvirt 功能。首先是要定義libvirt 屬性多樣化域配置文件。利用該域配置文件修改QEMU 域要使用的一些基本元數(shù)據(jù),包括域名、最大內(nèi)存、初始可用內(nèi)存以及該域可用的虛擬處理器數(shù)量以及上述bridge 網(wǎng)絡(luò)參數(shù),然后啟動新域,使用內(nèi)的命令列出給定主機上的活動域。
4.結(jié)論
虛擬化后隨著服務(wù)器的數(shù)量減少,故障率明顯降低,故障修復(fù)周期也大幅縮短,保障了教學(xué)資源的穩(wěn)定運行。部署新服務(wù)器工作周期的縮短極大地降低部署復(fù)雜程度,提高了工作效率。
參考文獻:
[1]崔澤永,趙會群.基于KVM 的虛擬化研究及應(yīng)用[J]. 計算機技術(shù)與發(fā)展,2011(6):108.
[2]敖青云,蔣文蓉.基于和的虛擬桌面系統(tǒng)的實現(xiàn)與應(yīng)用[J].計算機應(yīng)用與軟件2012(11):218.
[3]崔澤永.基于的虛擬機調(diào)度方法研究.北方工業(yè)大學(xué)工程碩士論文
[4]徐燕雯.基于KVM 的桌面虛擬化架構(gòu)設(shè)計與實現(xiàn)[D]. 上海交通大學(xué)工程碩士專業(yè)學(xué)位論文,2012,6:28.
[5]Tim Jones M.Libvirt.虛擬化庫剖析━━針對簡單的Linux 虛擬化的API[EB/OL].http://www.ibm.com/developerworks/cn/ linux/l-libvirt/. Realization of the KVM Based Sever Virtualization EnvironmentLI Bin, HU Yi-feng (Sanmenxia Polytechnic, Sanmenxia 472000, China)