引言
虛擬化技術(shù)是IBM在20世紀70年代首先應用在IBM/370大型機上,這項技術(shù)極大地提高了大型機資源利用率。隨著軟硬件技術(shù)的迅速發(fā)展,這項屬于大型機及專利的技術(shù)開始在普通X86計算機上應用并成為當前計算機發(fā)展和研究的一個熱點方向。目前,虛擬化技術(shù)在高校數(shù)據(jù)中心虛擬化、計算機教學、數(shù)字圖書館等各方面都有所應用并取得了較好的效果。文中提出基于KVM的教學平臺虛擬化方案設(shè)計,較好地解決了使用加密狗作為加密手段的應用虛擬化問題。
1 KVM虛擬化技術(shù)概述
虛擬化技術(shù)能夠在一臺計算機上運行多個操作系統(tǒng),每個系統(tǒng)上運行自己獨立的應用軟件。虛擬化技術(shù)可以對這些系統(tǒng)進行有效隔離,對資源進行按需分配,從而保證每個系統(tǒng)的安全性和性能。目前虛擬化技術(shù)已經(jīng)形成從硬件到軟件一整套的解決方案;赬86架構(gòu)的硬件技術(shù)主要是由Intel和AMD提供的VirtualizationTechnology(VT)和Pacifica(AMD—V)虛擬化技術(shù),該技術(shù)對處理器進行了擴展,從而實現(xiàn)了處理器的虛擬化。軟件方面主要有Vmware公司的VSpare和VmwareWorkstation、Microsofl公司的Hy—per—V和VirtualPC以及Linux系統(tǒng)下的Xen和KVM等。前兩個軟件是已經(jīng)商業(yè)化的系統(tǒng),Xen也開始了商業(yè)化運作,KVM是免費的開源系統(tǒng)并在迅速發(fā)展當中,是目前唯一進入Linux核心的虛擬化解決方案。
KVM是由以色列的一個名為Qumrant的開源組織于2006年10月提出的基于硬件虛擬化的虛擬機(VirtualMachine,VM)實現(xiàn)方案,2007年2月發(fā)布的Linux2.6.20內(nèi)核第一次包含了KVM。實際上KVM只是虛擬化解決方案的一部分,其底層需要處理器支持,為多個操作系統(tǒng)提供虛擬化處理器,I/O通過QE—MU進行,其架構(gòu)如圖1所示。
圖1 KVM系統(tǒng)架構(gòu)
KVM包含內(nèi)核模塊和處理器模塊兩部分,內(nèi)核模塊kvm.ko提供核心的虛擬化支持,處理器模塊kvm—inte1.ko和kvm—amd.ko分別提供了對Intel和AMD處理器虛擬化技術(shù)的支持。KVM通過加載kvm.ko內(nèi)核模塊將Linux內(nèi)核轉(zhuǎn)換為一個VirtualMachineMonitor(VMM,Hypervisor),因此KVM可以隨著Linux標準內(nèi)核的升級而獲得性能提升(如調(diào)度程序、內(nèi)存支持等)。虛擬機對應成為標準的Linux進程,因而可以用標準的Linux進程管理機制進行管理。
在普通的Linux進程有內(nèi)核模式和用戶模式兩種運行模式,內(nèi)核模式表示代碼執(zhí)行的特權(quán)模式,用戶模式表示代碼執(zhí)行的非特權(quán)模式。在KVM系統(tǒng)中為Linux引入了一種新的進程模式,新的模式稱為客戶模式,客戶模式用來執(zhí)行虛擬機操作系統(tǒng)非I/O代碼。在客戶模式中包含內(nèi)核模式和用戶模式兩種標準模式,VM操作系統(tǒng)可在內(nèi)核模式下運行標準的內(nèi)核,在用戶模式下支持自己的內(nèi)核和用戶空間應用程序。
虛擬機操作系統(tǒng)的I/O操作是由修改過的QEMU支持的。QEMU是一種用動態(tài)翻譯技術(shù)實現(xiàn)的快速指令集層虛擬機,它支持整個計算機系統(tǒng)的模擬,包括多種處理器(X86、ARM、PowERPC等)、磁盤、圖形適配器和網(wǎng)絡(luò)設(shè)備等。KVM是用硬件虛擬化技術(shù)代替了QEMU的動態(tài)翻譯技術(shù),實現(xiàn)虛擬機操作系統(tǒng)代碼直接由硬件處理從而提高系統(tǒng)性能。VM操作系統(tǒng)生成的I/O請求會被截獲并轉(zhuǎn)發(fā)到用戶空間,由QEMU的設(shè)備模型來模擬I/O操作,在需要的情況下觸發(fā)真實的I/O操作。
2 KVM教學平臺虛擬化應用系統(tǒng)設(shè)計
隨著經(jīng)濟模式的轉(zhuǎn)變和信息技術(shù)的發(fā)展,社會對復合型人才的數(shù)量和質(zhì)量要求越來越高。為了適應這種變化,高等教育不斷重視和加強實踐教學,利用現(xiàn)代計算技術(shù)貼近現(xiàn)實成為其中最重要的手段之一。國內(nèi)大部分院校均已建立起一定規(guī)模的實踐教學環(huán)境,初步建立了教學、科研等各種網(wǎng)絡(luò)應用系統(tǒng)。這些系統(tǒng)在實踐教學秩序的穩(wěn)定性和教學質(zhì)量的提升等方面發(fā)揮了重要作用。
一般實踐教學數(shù)據(jù)中服務(wù)器拓撲結(jié)構(gòu)如圖2所示,其中包括目錄服務(wù)器、數(shù)據(jù)庫服務(wù)器、文件服務(wù)器、WEB服務(wù)器及專業(yè)教學軟件應用服務(wù)器,部分院校還部署了防火墻、負載均衡等擴展設(shè)備,以保證服務(wù)器的安全性、高性能和高可靠性。
圖2 實踐教學數(shù)據(jù)中心服務(wù)器拓撲結(jié)構(gòu)
在實踐教學快速發(fā)展過程中,各院校的數(shù)據(jù)中心在建設(shè)和管理上也面臨著許多困難和問題。
①服務(wù)器數(shù)量越來越龐大,經(jīng)常是一個建設(shè)項目建立一套服務(wù)器系統(tǒng),在此情況下服務(wù)器利用率相當?shù)停?/p>
②服務(wù)器資源爭奪,有時為了提高服務(wù)器利用率,將不同系統(tǒng)部署在同一臺服務(wù)器上,造成不同應用系統(tǒng)之間的沖突,比如加密狗之間的沖突、端口之間的爭奪、環(huán)境資源沖突等。虛擬化技術(shù)的應用為解決這些問題提供了一條很好的思路。
2.1KVM技術(shù)在虛擬化中的優(yōu)勢
KVM虛擬化技術(shù)具有較強的靈活性,能較好地將不同操作系統(tǒng)和特殊硬件設(shè)備加以利用,降低不同系統(tǒng)間維護的復雜度。
KVM支持VM操作系統(tǒng)種類多,常見的基于X86架構(gòu)的Windows、Linux、Unix操作系統(tǒng)絕大部分可以穩(wěn)定運行。
KVM本身運行在Linux系統(tǒng)內(nèi)核當中,屬于瘦虛擬化方案,KVM本身體積很小,其支持硬件取決于Linux系統(tǒng)本身對硬件的支持。目前主流硬件設(shè)備均有對應的Linux驅(qū)動,這也就決定了KVM可以在最廣泛的硬件系統(tǒng)之上運行。
KVM可以直接使用指定的硬件設(shè)備,如USB端口等。利用此項功能,可以直接將特定應用USB加密狗與運行該應用的VM綁定,從而解決加密狗沖突的問題。
同時KVM具有優(yōu)良的系統(tǒng)性能和穩(wěn)定性,系統(tǒng)更新便捷。
2.2虛擬化設(shè)計的原則
現(xiàn)有系統(tǒng)的分類整合,對目前應用系統(tǒng)按照技術(shù)架構(gòu)進行分類,分析其應用特性,將類似的系統(tǒng)進行合并服務(wù)器處理,以利于將應用遷移到虛擬主機上。對將來要增加的應用系統(tǒng)進行預測,以保證系統(tǒng)的擴展性滿足未來的需求。
數(shù)據(jù)集中存儲,將虛擬機文件及數(shù)據(jù)庫集中存放到存儲設(shè)備中,實現(xiàn)數(shù)據(jù)的集中統(tǒng)一管理。
2.3服務(wù)器虛擬化方案設(shè)計
根據(jù)現(xiàn)有應用系統(tǒng)的性質(zhì)將其分為兩大類,一類為教學服務(wù)器,專門運行教學相關(guān)的專業(yè)軟件。另一類為環(huán)境支持系統(tǒng),包括域服務(wù)器、網(wǎng)站服務(wù)器、文件服務(wù)器。教學服務(wù)器平時壓力并不大,但是當展開教學活動時,服務(wù)器負載會迅速提高鑒于教學系統(tǒng)的特點,將教學系統(tǒng)服務(wù)器作為首先進行虛擬化的部分,系統(tǒng)結(jié)構(gòu)如圖3所示。
圖3 應用服務(wù)器虛擬化架構(gòu)
將教學系統(tǒng)服務(wù)器按資源利用率分為兩部分,利用率超過20%的系統(tǒng)將單獨設(shè)置虛擬機,利用率在20%以下的按照提供服務(wù)種類組合在不同虛擬機中。按服務(wù)性質(zhì)將服務(wù)分為純加密保護驗證類、B/S應用服務(wù)類、C/S應用服務(wù)類、自有專用服務(wù)類等四類。在教學系統(tǒng)中大量應用使用USB加密狗進行版權(quán)保護,為避免加密狗之間相互沖突,將加密狗對應USB端口直接指向?qū)奶摂M機,使之成為私有端口,不被主機系統(tǒng)和其它虛擬機系統(tǒng)所識別和使用,從而達到消除沖突的目的。
依據(jù)數(shù)據(jù)集中存儲的原則,采用SAN(存儲區(qū)域網(wǎng)絡(luò))集中存儲方式,將虛擬機鏡像文件部署在SAN共享存儲陣列中。當物理主機發(fā)生故障時,可通過集群轉(zhuǎn)移或者指定其他物理主機重新運行虛擬機,縮短應用中斷時間。
通過分析應用系統(tǒng)的運行原理,建立分布式數(shù)據(jù)庫,使其與應用分離,數(shù)據(jù)庫集中存儲在數(shù)據(jù)庫服務(wù)器上。應用采用虛擬機多機備份機制,保證在應用的安全性。對于部分數(shù)據(jù)庫和應用不能分離的業(yè)務(wù),采用多級備份的方式,以降低風險發(fā)生時造成的損失。
3 KVM虛擬化應用系統(tǒng)部署
采用Ubuntu910系統(tǒng),基于KVM84對服務(wù)器進行虛擬化,設(shè)置CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)等硬件環(huán)境,安裝操作系統(tǒng)及應用,加載相應USB加密狗,實現(xiàn)從虛擬化平臺到軟件應用的完整虛擬化解決方案。
3.1 環(huán)境檢查及軟件配置
KVM是基于CPU硬件虛擬化基礎(chǔ)之上的,在安裝KVM之前必須確認CPU支持虛擬化技術(shù)。使用cat/proc/cpuinfolgrep-E(vmxIsvn1)命令進行檢測,有輸出結(jié)果說明CPU支持虛擬化。部分服務(wù)器默認是關(guān)閉虛擬化技術(shù)的,需要進入BIOS打開CPU的虛擬化支持。
Linux內(nèi)核是從2.6.20版本開始集成KVM,因此Linux內(nèi)核版本必須在此之上。使用uname—a命令查看Linux內(nèi)核版本。
在Ubuntu下安裝KVM模塊和安裝其他軟件類似,使用apt—getinstallkvm安裝KVM模塊并添加到Linux核心。lsmod命令可查看KVM模塊是否加載成功,如果未加載成功可以使用命令modprobekvm載入。
3.2V M操作系統(tǒng)實例化
3.2.1建立虛擬磁盤鏡像
虛擬磁盤鏡像在邏輯上足提供給虛擬機使用的硬盤,在物理上可以是Linux系統(tǒng)內(nèi)一普通鏡像文件,也可以是真實的物理磁盤或分區(qū)。本方案設(shè)計中將虛擬機集中存儲在SAN存儲陣列中,采用文件方式,用dd命令創(chuàng)建如下
ddif=/dev/zeroof=hdisk.imgbs=1Gcount=10
dd命令創(chuàng)建一個名為hdisk.img的容量為10G的虛擬磁盤。虛擬磁盤并不會立即分配全部空問,而是根據(jù)使用情況在不超過1OG范圍內(nèi)動態(tài)分配。
3.2.2配置虛擬網(wǎng)絡(luò)
KVM有NAT和TUN/TAP兩種網(wǎng)絡(luò)接入方式。NAT方式下主機操作系統(tǒng)和虛擬機操作系統(tǒng)不需要進行特殊設(shè)置,虛擬機操作系統(tǒng)內(nèi)網(wǎng)卡采用內(nèi)部DH.CP方式獲取私有IP地址,可以與外部網(wǎng)絡(luò)通訊,但是虛擬機不能向外提供服務(wù),也不能與主機進行通信。TUN/TAP方式是采用網(wǎng)橋連接,虛擬機與主機、虛擬機與外部網(wǎng)絡(luò)通訊都正常,其拓撲結(jié)構(gòu)如圖4所示。
圖4 KVM網(wǎng)絡(luò)橋接模式拓撲圖
TUN/TAP模式是將物理網(wǎng)卡eht0設(shè)置成混雜模式,建立一個虛擬網(wǎng)橋br0和虛擬網(wǎng)卡taro,然后將虛擬網(wǎng)卡tarO和物理網(wǎng)卡eth0加入網(wǎng)橋,設(shè)置成網(wǎng)橋端口并激活虛擬網(wǎng)卡tarO。網(wǎng)橋IP設(shè)置成原主機IP地址,這時主機操作系統(tǒng)可正常通訊。當虛擬機操作系統(tǒng)啟動時將自動以tarO為模板建立所需數(shù)量的虛擬網(wǎng)卡并插入系統(tǒng),VM操作系統(tǒng)啟動后可按正常系統(tǒng)DHCP方式或手工指定方式設(shè)置網(wǎng)卡IP地址。
3.2.3部署操作系統(tǒng)
KVM虛擬機硬件配置的設(shè)定或更改非常靈活,KVM通過虛擬機啟動命令參數(shù)指定虛擬機所對應的CPU、內(nèi)存、硬盤、網(wǎng)卡、聲卡、系統(tǒng)時鐘等硬件配置。使用啟動命令將虛擬磁盤文件和虛擬機關(guān)聯(lián)起來,啟動后開始安裝操作系統(tǒng)。
kvm—m512-hda/home/kvm/hdisk.img—cdrom/dev/cdrom..bootd——localtime
此命令是設(shè)置虛擬機使用磁盤鏡像文件/home/kvm/hdisk.img作為硬盤,設(shè)置內(nèi)存容量為512兆,從光驅(qū)啟動虛擬機安裝操作系統(tǒng),安裝界面出現(xiàn)后和在物理機器上正常安裝操作系統(tǒng)一致。
安裝完畢后將啟動命令中的-bootd參數(shù)修改為-boote即可實現(xiàn)從磁盤鏡像正常啟動虛擬機。
3.3虛擬機的優(yōu)化和統(tǒng)一集中管理
Virtio是一套Linux下用于虛擬I/O的通用框架,采用半虛擬化技術(shù)以提高I/0性能,通過在VM內(nèi)加載virtio驅(qū)動以支持網(wǎng)卡、塊存取設(shè)備、PCI等設(shè)備。啟用virtio虛擬千兆網(wǎng)卡替換KVM默認的RealteckRTL8029虛擬網(wǎng)卡,可大幅度提高虛擬網(wǎng)卡的性能和穩(wěn)定性。如選用virtio網(wǎng)卡并指定網(wǎng)卡物理地址,可使用-netnic,model=virtio,mac=52:54:00:l2:34:68參數(shù)。虛擬機啟動后安裝對應的網(wǎng)卡驅(qū)動即可正常使用。虛擬機系統(tǒng)調(diào)試完畢后可將復雜的啟動命令存為腳本,避免出錯并提高管理效率。
KVM虛擬機是針對服務(wù)器虛擬化進行設(shè)計和開發(fā)的虛擬化方案,因此KVM虛擬機對虛擬顯卡支持相對較弱。但是KVM提供了不在物理服務(wù)器端啟動虛擬機圖形界面,而是通過VNC遠程訪問的方式對虛擬機進行管理的工作機制。如使用遠程管理啟動虛擬機,可使用-vrlc172.16.32.3:3參數(shù)啟動VNC服務(wù)器,VNC客戶端通過訪問172.16.32.3:5093地址對虛擬機進行遠程管理控制,為不同虛擬機指定不同端口,形成統(tǒng)一的集中管理。
3.4部署USB加密設(shè)備
在部署應用過程中,加密狗沖突問題可以利用KVM硬件端口指定技術(shù)將不同USB設(shè)備與特定虛擬機綁定,主機操作系統(tǒng)不需要安裝相應USB驅(qū)動,由此可解決USB加密狗在同一系統(tǒng)下沖突的問題。
KVM可使用-usbdevicehost*.*參數(shù)將所有主機上的USB設(shè)備全部指定轉(zhuǎn)接到虛擬機上,此時主機將無法正常使用USB設(shè)備。因此,必須向KVM說明哪些USB設(shè)備由客戶機控制。這里需要使Hj到的是USB設(shè)備的rid和pid兩個參數(shù),每個usb設(shè)備都有這兩個id,vid代表生產(chǎn)商,pid代表產(chǎn)品?梢酝ㄟ^lsusb命令來察看USB設(shè)備的這兩個參數(shù),其中一條結(jié)果如下
Bus001Device007:ID0aSe:2110BroadcomCorp
在啟動命令里邊修改一usbdevice選項,增加該USB設(shè)備一usbdevieehost:0aSe:2110,操作系統(tǒng)啟動后再加載相應USB加密狗驅(qū)動即可正常使用。
3.5虛擬化應用效果分析
目前實驗中心實際運行的教學專用應用中符合虛擬化條件的為37個,分布在l3臺服務(wù)器上,通過虛擬化部署共建立虛擬機12個,分布在4臺服務(wù)器上,有效提高了服務(wù)器的資源利用率。其它服務(wù)器中3臺服役時間已超過6年,實施虛擬化后隨著服務(wù)器的壓力減小,故障率明顯降低,故障修復周期也大幅縮短,保障了教學秩序的穩(wěn)定。
KVM虛擬機只依賴于虛擬磁盤鏡像文件,其他配置在Linux系統(tǒng)中完成。因此只需要復制磁盤鏡像文件,修改對應啟動命令即可完成一臺新服務(wù)器的部署,有效縮短部署新服務(wù)器的工作周期,極大地降低部署復雜程度,提高工作效率。服務(wù)器數(shù)據(jù)備份是管理員日常工作的一個重要組成部分,實施虛擬化后只需備份虛擬磁盤文件,恢復時將虛擬磁盤文件復制回來即可實現(xiàn)應用和數(shù)據(jù)的完整恢復。
4 結(jié)束語
KVM是一個發(fā)展時間比較短,但是性能和穩(wěn)定性表現(xiàn)優(yōu)秀的虛擬化解決方案。文中通過一個實例介紹了KVM在虛擬化過程中的具體應用,其靈活的網(wǎng)絡(luò)拓撲結(jié)構(gòu)、簡便的硬件配置方案、集中統(tǒng)一管理可滿足于大多數(shù)數(shù)據(jù)中心虛擬化實踐。當然KVM也有很多不足,對一些虛擬化擴展特性,如泛虛擬化支持、虛擬機動態(tài)遷移、圖形化管理界面等新功能正在進一步研究和開發(fā)當中。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.oesoe.com/
本文標題:基于KVM的虛擬化研究及應用
本文網(wǎng)址:http://www.oesoe.com/html/consultation/1083938544.html