基于KVM的虚拟化研究及应用
引言
??? 虛擬化技術(shù)是IBM在20世紀(jì)70年代首先應(yīng)用在IBM/370大型機(jī)上,這項(xiàng)技術(shù)極大地提高了大型機(jī)資源利用率。隨著軟硬件技術(shù)的迅速發(fā)展,這項(xiàng)屬于大型機(jī)及專利的技術(shù)開始在普通X86計(jì)算機(jī)上應(yīng)用并成為當(dāng)前計(jì)算機(jī)發(fā)展和研究的一個(gè)熱點(diǎn)方向。目前,虛擬化技術(shù)在高校數(shù)據(jù)中心虛擬化、計(jì)算機(jī)教學(xué)、數(shù)字圖書館等各方面都有所應(yīng)用并取得了較好的效果。文中提出基于KVM的教學(xué)平臺(tái)虛擬化方案設(shè)計(jì),較好地解決了使用加密狗作為加密手段的應(yīng)用虛擬化問題。
1 KVM虛擬化技術(shù)概述
??? 虛擬化技術(shù)能夠在一臺(tái)計(jì)算機(jī)上運(yùn)行多個(gè)操作系統(tǒng),每個(gè)系統(tǒng)上運(yùn)行自己獨(dú)立的應(yīng)用軟件。虛擬化技術(shù)可以對(duì)這些系統(tǒng)進(jìn)行有效隔離,對(duì)資源進(jìn)行按需分配,從而保證每個(gè)系統(tǒng)的安全性和性能。目前虛擬化技術(shù)已經(jīng)形成從硬件到軟件一整套的解決方案。基于X86架構(gòu)的硬件技術(shù)主要是由Intel和AMD提供的VirtualizationTechnology(VT)和Pacifica(AMD—V)虛擬化技術(shù),該技術(shù)對(duì)處理器進(jìn)行了擴(kuò)展,從而實(shí)現(xiàn)了處理器的虛擬化。軟件方面主要有Vmware公司的VSpare和VmwareWorkstation、Microsofl公司的Hy—per—V和VirtualPC以及Linux系統(tǒng)下的Xen和KVM等。前兩個(gè)軟件是已經(jīng)商業(yè)化的系統(tǒng),Xen也開始了商業(yè)化運(yùn)作,KVM是免費(fèi)的開源系統(tǒng)并在迅速發(fā)展當(dāng)中,是目前唯一進(jìn)入Linux核心的虛擬化解決方案。
??? KVM是由以色列的一個(gè)名為Qumrant的開源組織于2006年10月提出的基于硬件虛擬化的虛擬機(jī)(VirtualMachine,VM)實(shí)現(xiàn)方案,2007年2月發(fā)布的Linux2.6.20內(nèi)核第一次包含了KVM。實(shí)際上KVM只是虛擬化解決方案的一部分,其底層需要處理器支持,為多個(gè)操作系統(tǒng)提供虛擬化處理器,I/O通過QE—MU進(jìn)行,其架構(gòu)如圖1所示。
?
圖1 KVM系統(tǒng)架構(gòu)
??? KVM包含內(nèi)核模塊和處理器模塊兩部分,內(nèi)核模塊kvm.ko提供核心的虛擬化支持,處理器模塊kvm—inte1.ko和kvm—amd.ko分別提供了對(duì)Intel和AMD處理器虛擬化技術(shù)的支持。KVM通過加載kvm.ko內(nèi)核模塊將Linux內(nèi)核轉(zhuǎn)換為一個(gè)VirtualMachineMonitor(VMM,Hypervisor),因此KVM可以隨著Linux標(biāo)準(zhǔn)內(nèi)核的升級(jí)而獲得性能提升(如調(diào)度程序、內(nèi)存支持等)。虛擬機(jī)對(duì)應(yīng)成為標(biāo)準(zhǔn)的Linux進(jìn)程,因而可以用標(biāo)準(zhǔn)的Linux進(jìn)程管理機(jī)制進(jìn)行管理。
??? 在普通的Linux進(jìn)程有內(nèi)核模式和用戶模式兩種運(yùn)行模式,內(nèi)核模式表示代碼執(zhí)行的特權(quán)模式,用戶模式表示代碼執(zhí)行的非特權(quán)模式。在KVM系統(tǒng)中為L(zhǎng)inux引入了一種新的進(jìn)程模式,新的模式稱為客戶模式,客戶模式用來執(zhí)行虛擬機(jī)操作系統(tǒng)非I/O代碼。在客戶模式中包含內(nèi)核模式和用戶模式兩種標(biāo)準(zhǔn)模式,VM操作系統(tǒng)可在內(nèi)核模式下運(yùn)行標(biāo)準(zhǔn)的內(nèi)核,在用戶模式下支持自己的內(nèi)核和用戶空間應(yīng)用程序。
??? 虛擬機(jī)操作系統(tǒng)的I/O操作是由修改過的QEMU支持的。QEMU是一種用動(dòng)態(tài)翻譯技術(shù)實(shí)現(xiàn)的快速指令集層虛擬機(jī),它支持整個(gè)計(jì)算機(jī)系統(tǒng)的模擬,包括多種處理器(X86、ARM、PowerPC等)、磁盤、圖形適配器和網(wǎng)絡(luò)設(shè)備等。KVM是用硬件虛擬化技術(shù)代替了QEMU的動(dòng)態(tài)翻譯技術(shù),實(shí)現(xiàn)虛擬機(jī)操作系統(tǒng)代碼直接由硬件處理從而提高系統(tǒng)性能。VM操作系統(tǒng)生成的I/O請(qǐng)求會(huì)被截獲并轉(zhuǎn)發(fā)到用戶空間,由QEMU的設(shè)備模型來模擬I/O操作,在需要的情況下觸發(fā)真實(shí)的I/O操作。
2 KVM教學(xué)平臺(tái)虛擬化應(yīng)用系統(tǒng)設(shè)計(jì)
??? 隨著經(jīng)濟(jì)模式的轉(zhuǎn)變和信息技術(shù)的發(fā)展,社會(huì)對(duì)復(fù)合型人才的數(shù)量和質(zhì)量要求越來越高。為了適應(yīng)這種變化,高等教育不斷重視和加強(qiáng)實(shí)踐教學(xué),利用現(xiàn)代計(jì)算技術(shù)貼近現(xiàn)實(shí)成為其中最重要的手段之一。國(guó)內(nèi)大部分院校均已建立起一定規(guī)模的實(shí)踐教學(xué)環(huán)境,初步建立了教學(xué)、科研等各種網(wǎng)絡(luò)應(yīng)用系統(tǒng)。這些系統(tǒng)在實(shí)踐教學(xué)秩序的穩(wěn)定性和教學(xué)質(zhì)量的提升等方面發(fā)揮了重要作用。
??? 一般實(shí)踐教學(xué)數(shù)據(jù)中服務(wù)器拓?fù)浣Y(jié)構(gòu)如圖2所示,其中包括目錄服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、文件服務(wù)器、WEB服務(wù)器及專業(yè)教學(xué)軟件應(yīng)用服務(wù)器,部分院校還部署了防火墻、負(fù)載均衡等擴(kuò)展設(shè)備,以保證服務(wù)器的安全性、高性能和高可靠性。
?
圖2 實(shí)踐教學(xué)數(shù)據(jù)中心服務(wù)器拓?fù)浣Y(jié)構(gòu)
在實(shí)踐教學(xué)快速發(fā)展過程中,各院校的數(shù)據(jù)中心在建設(shè)和管理上也面臨著許多困難和問題。
??? ①服務(wù)器數(shù)量越來越龐大,經(jīng)常是一個(gè)建設(shè)項(xiàng)目建立一套服務(wù)器系統(tǒng),在此情況下服務(wù)器利用率相當(dāng)?shù)?#xff1b;
??? ②服務(wù)器資源爭(zhēng)奪,有時(shí)為了提高服務(wù)器利用率,將不同系統(tǒng)部署在同一臺(tái)服務(wù)器上,造成不同應(yīng)用系統(tǒng)之間的沖突,比如加密狗之間的沖突、端口之間的爭(zhēng)奪、環(huán)境資源沖突等。虛擬化技術(shù)的應(yīng)用為解決這些問題提供了一條很好的思路。
????2.1KVM技術(shù)在虛擬化中的優(yōu)勢(shì)
??? KVM虛擬化技術(shù)具有較強(qiáng)的靈活性,能較好地將不同操作系統(tǒng)和特殊硬件設(shè)備加以利用,降低不同系統(tǒng)間維護(hù)的復(fù)雜度。
??? KVM支持VM操作系統(tǒng)種類多,常見的基于X86架構(gòu)的Windows、Linux、Unix操作系統(tǒng)絕大部分可以穩(wěn)定運(yùn)行。
??? KVM本身運(yùn)行在Linux系統(tǒng)內(nèi)核當(dāng)中,屬于瘦虛擬化方案,KVM本身體積很小,其支持硬件取決于Linux系統(tǒng)本身對(duì)硬件的支持。目前主流硬件設(shè)備均有對(duì)應(yīng)的Linux驅(qū)動(dòng),這也就決定了KVM可以在最廣泛的硬件系統(tǒng)之上運(yùn)行。
??? KVM可以直接使用指定的硬件設(shè)備,如USB端口等。利用此項(xiàng)功能,可以直接將特定應(yīng)用USB加密狗與運(yùn)行該應(yīng)用的VM綁定,從而解決加密狗沖突的問題。
??? 同時(shí)KVM具有優(yōu)良的系統(tǒng)性能和穩(wěn)定性,系統(tǒng)更新便捷。
????2.2虛擬化設(shè)計(jì)的原則
??? 現(xiàn)有系統(tǒng)的分類整合,對(duì)目前應(yīng)用系統(tǒng)按照技術(shù)架構(gòu)進(jìn)行分類,分析其應(yīng)用特性,將類似的系統(tǒng)進(jìn)行合并服務(wù)器處理,以利于將應(yīng)用遷移到虛擬主機(jī)上。對(duì)將來要增加的應(yīng)用系統(tǒng)進(jìn)行預(yù)測(cè),以保證系統(tǒng)的擴(kuò)展性滿足未來的需求。
??? 數(shù)據(jù)集中存儲(chǔ),將虛擬機(jī)文件及數(shù)據(jù)庫(kù)集中存放到存儲(chǔ)設(shè)備中,實(shí)現(xiàn)數(shù)據(jù)的集中統(tǒng)一管理。
????2.3服務(wù)器虛擬化方案設(shè)計(jì)
??? 根據(jù)現(xiàn)有應(yīng)用系統(tǒng)的性質(zhì)將其分為兩大類,一類為教學(xué)服務(wù)器,專門運(yùn)行教學(xué)相關(guān)的專業(yè)軟件。另一類為環(huán)境支持系統(tǒng),包括域服務(wù)器、網(wǎng)站服務(wù)器、文件服務(wù)器。教學(xué)服務(wù)器平時(shí)壓力并不大,但是當(dāng)展開教學(xué)活動(dòng)時(shí),服務(wù)器負(fù)載會(huì)迅速提高鑒于教學(xué)系統(tǒng)的特點(diǎn),將教學(xué)系統(tǒng)服務(wù)器作為首先進(jìn)行虛擬化的部分,系統(tǒng)結(jié)構(gòu)如圖3所示。
?
圖3 應(yīng)用服務(wù)器虛擬化架構(gòu)
??? 將教學(xué)系統(tǒng)服務(wù)器按資源利用率分為兩部分,利用率超過20%的系統(tǒng)將單獨(dú)設(shè)置虛擬機(jī),利用率在20%以下的按照提供服務(wù)種類組合在不同虛擬機(jī)中。按服務(wù)性質(zhì)將服務(wù)分為純加密保護(hù)驗(yàn)證類、B/S應(yīng)用服務(wù)類、C/S應(yīng)用服務(wù)類、自有專用服務(wù)類等四類。在教學(xué)系統(tǒng)中大量應(yīng)用使用USB加密狗進(jìn)行版權(quán)保護(hù),為避免加密狗之間相互沖突,將加密狗對(duì)應(yīng)USB端口直接指向?qū)?yīng)的虛擬機(jī),使之成為私有端口,不被主機(jī)系統(tǒng)和其它虛擬機(jī)系統(tǒng)所識(shí)別和使用,從而達(dá)到消除沖突的目的。
??? 依據(jù)數(shù)據(jù)集中存儲(chǔ)的原則,采用SAN(存儲(chǔ)區(qū)域網(wǎng)絡(luò))集中存儲(chǔ)方式,將虛擬機(jī)鏡像文件部署在SAN共享存儲(chǔ)陣列中。當(dāng)物理主機(jī)發(fā)生故障時(shí),可通過集群轉(zhuǎn)移或者指定其他物理主機(jī)重新運(yùn)行虛擬機(jī),縮短應(yīng)用中斷時(shí)間。
??? 通過分析應(yīng)用系統(tǒng)的運(yùn)行原理,建立分布式數(shù)據(jù)庫(kù),使其與應(yīng)用分離,數(shù)據(jù)庫(kù)集中存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器上。應(yīng)用采用虛擬機(jī)多機(jī)備份機(jī)制,保證在應(yīng)用的安全性。對(duì)于部分?jǐn)?shù)據(jù)庫(kù)和應(yīng)用不能分離的業(yè)務(wù),采用多級(jí)備份的方式,以降低風(fēng)險(xiǎn)發(fā)生時(shí)造成的損失。
3 KVM虛擬化應(yīng)用系統(tǒng)部署
??? 采用Ubuntu910系統(tǒng),基于KVM84對(duì)服務(wù)器進(jìn)行虛擬化,設(shè)置CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)等硬件環(huán)境,安裝操作系統(tǒng)及應(yīng)用,加載相應(yīng)USB加密狗,實(shí)現(xiàn)從虛擬化平臺(tái)到軟件應(yīng)用的完整虛擬化解決方案。
????3.1 環(huán)境檢查及軟件配置
??? KVM是基于CPU硬件虛擬化基礎(chǔ)之上的,在安裝KVM之前必須確認(rèn)CPU支持虛擬化技術(shù)。使用cat/proc/cpuinfolgrep-E(vmxIsvn1)命令進(jìn)行檢測(cè),有輸出結(jié)果說明CPU支持虛擬化。部分服務(wù)器默認(rèn)是關(guān)閉虛擬化技術(shù)的,需要進(jìn)入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載入。
?
轉(zhuǎn)載于:https://www.cnblogs.com/heidsoft/p/3525655.html
總結(jié)
以上是生活随笔為你收集整理的基于KVM的虚拟化研究及应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Linux的 Open×××网络之网
- 下一篇: 梦到红帽子什么意思