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