引 言
云計算是繼分布式計算、并行計算、網(wǎng)格計算等發(fā)展而來的一個新計算模式,具有分布式及并行處理等優(yōu)點,同時還具備負(fù)載均衡、資源共享、便于維護等特點;谶@些優(yōu)點及特點,近年來,云計算越來越受到學(xué)術(shù)界及IT行業(yè)的重視,相關(guān)技術(shù)日益成熟并實現(xiàn)產(chǎn)品商業(yè)化,云計算產(chǎn)品已投入到教育、醫(yī)療、交通等行業(yè)。隨著云計算產(chǎn)品投入實際應(yīng)用范圍的增多,出現(xiàn)
了硬件兼容、虛擬設(shè)備的穩(wěn)定性及可靠性問題,客戶機電腦系統(tǒng)藍(lán)屏、物理設(shè)備與虛擬設(shè)備的實時響應(yīng)問題。要解決這些問題,需要從云計算虛擬底層技術(shù)進(jìn)行分析,因為云計算系統(tǒng)只是提供了應(yīng)用層面的功能及操作,虛擬技術(shù)屏蔽了應(yīng)用層與硬件之間的驅(qū)動工作機理,給用戶提供了各種虛擬應(yīng)用。一般說來,云計算體系結(jié)構(gòu)分為三層[1]:應(yīng)用層、平臺層和基礎(chǔ)設(shè)施層;A(chǔ)設(shè)施層即要研究的“虛擬技術(shù)底層”,該層經(jīng)過虛擬化的硬件資源和相關(guān)管理功能的集合,實現(xiàn)了內(nèi)部流程自動化和資源管理優(yōu)化,從而向上層應(yīng)用提供動態(tài)、靈活的基礎(chǔ)設(shè)施層服務(wù)[2]。文獻(xiàn)[3]采用虛擬機管理層、功能層、邏輯層、調(diào)度層、GUI層等七層結(jié)構(gòu)研究了虛擬化條件下云平臺故障排除問題。通過大量文獻(xiàn),并結(jié)合高校的云計算工程實例,以及作者所實現(xiàn)的虛擬網(wǎng)絡(luò)接口卡等例程,分析總結(jié)了云計算的核心技術(shù)——虛擬化技術(shù)。
1 云計算虛擬技術(shù)框架
虛擬化概念及技術(shù)起源于20世紀(jì)50年代,20世紀(jì)60年代,IBM360系統(tǒng)首次采用了虛擬化平臺Hypervisor。國外有以IBM、VMare、Xen/Citrix和Microsoft為代表的虛擬化業(yè)界的四大廠商,國內(nèi)有聯(lián)想、華為等公司使用自己的源代碼開發(fā)出了虛擬化產(chǎn)品,他們提供了成熟、多方位、廣泛的虛擬化產(chǎn)品,實現(xiàn)了從服務(wù)器、存儲、網(wǎng)絡(luò)到桌面、虛擬應(yīng)用,甚至數(shù)據(jù)中心的虛擬化。
云計算模式的虛擬化,從宏觀層面可以分為系統(tǒng)虛擬化、網(wǎng)絡(luò)虛擬化、服務(wù)器虛擬化、虛擬機等等;從微觀層面可分為CPU、內(nèi)存、磁盤、網(wǎng)卡、I/O設(shè)備的虛擬化。根據(jù)虛擬技術(shù)底層開發(fā)的過程來看,宏觀層面的虛擬化是建立在對計算機相關(guān)設(shè)備虛擬化的基礎(chǔ)上的。云計算體系結(jié)構(gòu)分為三層,因此,虛擬技術(shù)框架可以對應(yīng)分為三層,從底層向上分別為:基礎(chǔ)設(shè)施層、硬件虛擬層、應(yīng)用虛擬層;A(chǔ)設(shè)施層為硬件虛擬層、應(yīng)用虛擬層提供基礎(chǔ)設(shè)施保障,實現(xiàn)硬件設(shè)備在操作系統(tǒng)內(nèi)核的無縫綁定與釋放;硬件虛擬層實現(xiàn)對硬件設(shè)備的虛擬化,向下提供接口調(diào)用操作系統(tǒng)內(nèi)核功能,向上提供接口與應(yīng)用軟件實現(xiàn)應(yīng)用虛擬化;應(yīng)用虛擬層,即應(yīng)用系統(tǒng)的虛擬化,在基礎(chǔ)設(shè)施層、硬件虛擬層的支持下,結(jié)合應(yīng)用軟件、網(wǎng)絡(luò)通信,應(yīng)用得以實現(xiàn)虛擬化,如虛擬桌面。
云計算虛擬技術(shù)所實現(xiàn)的硬件、操作系統(tǒng)多樣化,因此,有關(guān)公司、學(xué)術(shù)機構(gòu)采用的具體實現(xiàn)技術(shù)也不完全一樣,但它們有一個共同點,那就是離不開對物理設(shè)備的虛擬化、調(diào)用已有操作系統(tǒng)內(nèi)核功能[4]。例如虛擬化存儲,袁東風(fēng)等研究了基于KVM的B/S架構(gòu)虛擬化[5],實現(xiàn)對磁盤的虛擬化,如新建和刪除虛擬磁盤,并將虛擬磁盤名作為參數(shù)傳遞給Web服務(wù)器。KVM全稱為Kernel-based Virtual Machine,由此可看出虛擬技術(shù)離不開對操作系統(tǒng)內(nèi)核功能的調(diào)用。對于操作系統(tǒng)內(nèi)核功能的調(diào)用,Windows操作系統(tǒng)提供了文件驅(qū)動開發(fā)包用于實現(xiàn)對磁盤文件的虛擬化開發(fā),可虛擬出新的文件磁盤盤符;微軟公司提供的NDIS網(wǎng)絡(luò)驅(qū)動開發(fā)包,用于實現(xiàn)網(wǎng)絡(luò)協(xié)議、將網(wǎng)絡(luò)設(shè)備虛擬化,筆者采用NDIS網(wǎng)絡(luò)中間層驅(qū)動技術(shù),實現(xiàn)了對RJ45接口類型網(wǎng)絡(luò)接口卡的虛擬化。
2 設(shè)備虛擬化
2.1 網(wǎng)絡(luò)接口卡虛擬化
網(wǎng)絡(luò)接口卡虛擬化要完成兩個主要功能,一是需要綁定物理設(shè)備,即綁定物理網(wǎng)絡(luò)接口卡,通過網(wǎng)絡(luò)中間驅(qū)動層的協(xié)議接口實現(xiàn)對物理網(wǎng)絡(luò)接口卡的控制,即對物理網(wǎng)絡(luò)接口卡收發(fā)的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行數(shù)據(jù)成幀處理,控制通過它的網(wǎng)絡(luò)數(shù)據(jù)出或入;二是要通過網(wǎng)絡(luò)中間層驅(qū)動提供的微端口向上一層協(xié)議層(TCP/IP協(xié)議)提供微端口,即虛擬的網(wǎng)絡(luò)接口卡,實現(xiàn)對物理網(wǎng)絡(luò)數(shù)據(jù)包的重新封裝,可以實現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)的加解密等功能,通過重寫微軟提供的中間層驅(qū)動程序passthru.c源程序里的receive()和send()函數(shù)實現(xiàn)。這樣,網(wǎng)絡(luò)中間層驅(qū)動程序就實現(xiàn)了網(wǎng)絡(luò)接口卡虛擬化,安裝好驅(qū)動程序后,在電腦控制面板的網(wǎng)絡(luò)適配器的屬性處可看見新增了一個跟物理網(wǎng)絡(luò)接口卡一模一樣的圖標(biāo),這就是虛擬網(wǎng)卡。虛擬網(wǎng)卡的名稱是通過安裝驅(qū)動程序的inf安裝文件里“設(shè)備名稱”指定的。
物理網(wǎng)卡、虛擬網(wǎng)卡、應(yīng)用程序接口關(guān)系結(jié)構(gòu)圖如圖1所示。
圖1 物理網(wǎng)卡、虛擬網(wǎng)卡、應(yīng)用程序接口關(guān)系結(jié)構(gòu)圖
文中采用微軟公司提供的DDK(Driver Development Kit)開發(fā)出了虛擬網(wǎng)卡驅(qū)動程序Passthru.sys,實驗對象為Windows XP操作系統(tǒng),實驗結(jié)果見圖2。
2.2 虛擬機內(nèi)存
虛擬機內(nèi)存可以理解成虛擬內(nèi)存,是虛擬機使用的內(nèi)存。虛擬內(nèi)存是通過驅(qū)動技術(shù)對操作系統(tǒng)所使用的物理內(nèi)存將部分除外的空閑部分綁定后返回給用戶的又一個虛擬設(shè)備,即虛擬機內(nèi)存。在虛擬機里,它和物理機系統(tǒng)一樣是獨立的線性連續(xù)可尋址的存儲單元,具有獨自的虛擬機內(nèi)存地址,與物理內(nèi)存地址存在映射對應(yīng)關(guān)系。驅(qū)動程序?qū)崿F(xiàn)物理內(nèi)存與虛擬機內(nèi)存的映射轉(zhuǎn)換。在此基礎(chǔ)上[6],虛擬機Xen使用影子頁表實現(xiàn)對虛擬內(nèi)存與物理內(nèi)存的映射轉(zhuǎn)換[7],實現(xiàn)用戶虛擬內(nèi)存、虛擬機內(nèi)存、物理內(nèi)存三者之間的相互映射轉(zhuǎn)換,具體分析如下。
圖2 虛擬網(wǎng)卡實驗安裝結(jié)果圖
硬件抽象層中的虛擬機系統(tǒng)存在三個層次內(nèi)存概念:一是用戶虛擬內(nèi)存,虛擬機系統(tǒng)運行的服務(wù)、進(jìn)程所訪問的內(nèi)存,即用戶應(yīng)用程序在虛擬機系統(tǒng)運行時所使用的內(nèi)存[8];二是虛擬機實時內(nèi)存,即虛擬機運行環(huán)境的物理內(nèi)存;三是物理內(nèi)存,即物理主機的內(nèi)存。三者之間的映射關(guān)系如圖3所示。
圖3 虛擬機系統(tǒng)的內(nèi)存映射關(guān)系圖
因此,云計算虛擬技術(shù)的內(nèi)存調(diào)度是兩級調(diào)度,從用戶的角度自上而下為:第一級,用戶應(yīng)用程序所使用內(nèi)存到虛擬機實時內(nèi)存的調(diào)度;第二級,虛擬機內(nèi)存調(diào)度物理內(nèi)存。在第二級的內(nèi)存調(diào)度方面,主要是通過內(nèi)核驅(qū)動技術(shù)在底層實現(xiàn)對物理內(nèi)存的綁定、創(chuàng)建、使用自旋鎖對某段地址空間的內(nèi)存獨占使用,使用完畢釋放該自旋鎖以達(dá)到釋放虛擬機系統(tǒng)所獨占內(nèi)存。在第一級,可以通過API接口實現(xiàn)用戶程序?qū)μ摂M機內(nèi)存的申請使用、釋放。目前,內(nèi)存的底層分配問題得到了解決,而且在虛擬機之間對何時分配內(nèi)存、如何分配等問題也有大量研究。文獻(xiàn)[6]研究了虛擬機之間的內(nèi)存調(diào)度算法,通過邏輯地址空間和全局?jǐn)U展地址空閑空間構(gòu)成,以提高內(nèi)存資源利用率。虛擬機內(nèi)存與物理內(nèi)存之間是一一映射的關(guān)系,而且虛擬機內(nèi)存與物理內(nèi)存之間是無地址沖突的。
2.3 磁盤文件虛擬化
從物理磁盤文件到虛擬機文件系統(tǒng)的映射,可通過三層映射轉(zhuǎn)換實現(xiàn)尋址讀寫功能[6]。磁盤文件虛擬化,與網(wǎng)絡(luò)驅(qū)動開發(fā)類似,微軟提供了文件系統(tǒng)驅(qū)動開發(fā)包IFS DDK,并提供了相關(guān)例程filedisk.c、httpdisk.c。文件系統(tǒng)可分為本地文件系統(tǒng)、網(wǎng)絡(luò)文件系統(tǒng),filedisk.c用于開發(fā)本地文件系統(tǒng),httpdisk.c用于開發(fā)網(wǎng)絡(luò)文件系統(tǒng),用戶可以根據(jù)實際需要在這兩個源程序文件的相關(guān)函數(shù)中添加特定功能的源代碼,實現(xiàn)虛擬文件系統(tǒng),以及對文件的加解密等功能。在上述兩個源程序文件中,可實現(xiàn)文件系統(tǒng)的操作有:磁盤文件創(chuàng)建、磁盤文件加載、磁盤文件的控制(打開、讀寫)、磁盤文件的卸載。與本地文件系統(tǒng)不同的是,網(wǎng)絡(luò)文件系統(tǒng)創(chuàng)建了遠(yuǎn)程磁盤設(shè)備對象,具體實現(xiàn)技術(shù)方面增加了網(wǎng)絡(luò)套接字的鏈接及斷開,遠(yuǎn)程磁盤存儲空間的創(chuàng)建、讀寫、釋放等功能。本地文件系統(tǒng)、網(wǎng)絡(luò)文件系統(tǒng)在底層技術(shù)方面,都采用了IRP實現(xiàn)對物理磁盤的綁定后向用戶提供一個虛擬的磁盤設(shè)備,并且需要解決對共享存儲空間的獨占及共享問題。無論是微軟所提供的DDK開發(fā)工具,還是開源文件系統(tǒng)OpenStack、Hadoop、Linux工具,都不可避免調(diào)用操作系統(tǒng)的內(nèi)核接口[7]。
2.4 指令集虛擬化
指令集虛擬化對于大家來說并不陌生,Java虛擬機之所以能跨操作系統(tǒng)運行,是因為Java虛擬機運行時執(zhí)行其指令,將Java源程序解釋成字節(jié)碼,這些字節(jié)碼經(jīng)過瀏覽器這一應(yīng)用程序解釋成目標(biāo)代碼后運行。虛擬服務(wù)器、微軟虛擬機的運行同樣也執(zhí)行虛擬指令,虛擬指令集是將各種處理器的指令翻譯為虛擬指令,是對原處理器指令的重新構(gòu)建。虛擬指令可屏蔽不同型號CPU處理器指令之間的差異,該項功能正是云計算架構(gòu)在不同的硬件設(shè)備、不同系統(tǒng)、不同平臺上的底層技術(shù)基礎(chǔ)及優(yōu)點。
2.5 其他設(shè)備虛擬化
其他設(shè)備的虛擬化包括CPU、光驅(qū)等設(shè)備的虛擬化。虛擬光驅(qū)的應(yīng)用已歷經(jīng)多年,如以VMare公司推出的虛擬光驅(qū)為代表,應(yīng)用于多操作系統(tǒng)的安裝等。CPU虛擬化主要應(yīng)用在云計算服務(wù)器上,根據(jù)云端應(yīng)用數(shù)量的多少動態(tài)分配CPU資源,在虛擬系統(tǒng)軟件及硬件的支持下,CPU可虛擬出2n指數(shù)級的數(shù)量,但實際應(yīng)用環(huán)境中其數(shù)量有限,必須根據(jù)實際需求進(jìn)行分配。CPU的虛擬化需要電腦主板硬件支持,否則不可實現(xiàn)。
3 系統(tǒng)及應(yīng)用虛擬化
系統(tǒng)及應(yīng)用虛擬化是虛擬技術(shù)在宏觀層面的實現(xiàn)結(jié)果,是在上述設(shè)備、磁盤文件等虛擬化實現(xiàn)的基礎(chǔ)之上,如虛擬機、虛擬服務(wù)器。虛擬機是一套完整的計算機軟硬件虛擬系統(tǒng),包括操作系統(tǒng)、內(nèi)存、CPU、硬盤等軟硬件。虛擬計算機概念最早由IBM公司在二十世紀(jì)六七十年代提出。虛擬化技術(shù)通過在現(xiàn)有硬件平臺上增加一層虛擬機監(jiān)控器(Virtual Machine Monitor,VMM)軟件來實現(xiàn)對系統(tǒng)的虛擬化[8-11]。應(yīng)用虛擬化在教育行業(yè)中的方式之一是虛擬云桌面,如廣州杰賽科技的云桌面系統(tǒng)。該系統(tǒng)采用KVM架構(gòu),其核心是建立在Linux內(nèi)核基礎(chǔ)上的虛擬機,虛擬桌面以模板的方式建立并保存在云服務(wù)器上,教師可根據(jù)不同的教學(xué)需求安裝不同的教學(xué)軟件后保存為新的模板。采用基于KVM架構(gòu)的虛擬云桌面的優(yōu)點是:系統(tǒng)安全穩(wěn)定,病毒感染減少,便于教學(xué)軟硬件的集中維護,節(jié)省硬件及人力資源投入。
4 云計算技術(shù)虛擬技術(shù)底層關(guān)鍵問題分類及解決辦法
4.1 穩(wěn)定性及可靠性問題
由于虛擬設(shè)備、虛擬系統(tǒng)是建立在硬件設(shè)備、操作系統(tǒng)基礎(chǔ)之上,在技術(shù)實現(xiàn)方面需要綁定物理設(shè)備,而且同時要調(diào)用操作系統(tǒng)中斷、內(nèi)存資源等,因此不可避免地與操作系統(tǒng)因搶占中斷資源、內(nèi)存讀寫而發(fā)生沖突,表現(xiàn)為電腦藍(lán)屏、死機。要解決此類問題,必須在底層(操作系統(tǒng)內(nèi)核)綁定硬件設(shè)備,可以采用操作系統(tǒng)開發(fā)公司提供的驅(qū)動開發(fā)工具、開發(fā)平臺進(jìn)行設(shè)備虛擬化、應(yīng)用虛擬化。
4.2 物理設(shè)備與虛擬設(shè)備實時響應(yīng)問題
虛擬設(shè)備有本地虛擬設(shè)備、遠(yuǎn)程虛擬設(shè)備之分,遠(yuǎn)程虛擬設(shè)備是遠(yuǎn)程服務(wù)器上為用戶定制的虛擬桌面上顯示的設(shè)備,容易將本地虛擬設(shè)備與遠(yuǎn)程虛擬設(shè)備混淆。虛擬設(shè)備的響應(yīng)速度遠(yuǎn)比不上實際硬件設(shè)備,虛擬設(shè)備是通過程序在功能上模擬實現(xiàn)硬件設(shè)備的功能,對于如虛擬桌面這樣的應(yīng)用來說,其桌面上顯示的如揚聲器等設(shè)備,即使用鼠標(biāo)調(diào)整其音量大小,也會出現(xiàn)用于其綁定的硬件設(shè)備位于遠(yuǎn)端網(wǎng)絡(luò)中心機房而在本地?zé)o法聽見聲音效果等現(xiàn)象。此外,對虛擬桌面的應(yīng)用軟件實時響應(yīng)問題,特別是圖形、視頻類教學(xué)軟件,這些軟件對服務(wù)器的CPU主頻、內(nèi)存、網(wǎng)絡(luò)帶寬都有較高要求,因此會導(dǎo)致教學(xué)出現(xiàn)實時性差、網(wǎng)絡(luò)延遲等問題?梢岳脧姆⻊(wù)器方面增加如內(nèi)存、更換更高主頻的CPU,在網(wǎng)絡(luò)方面通過端口匯聚以增加網(wǎng)絡(luò)交換機的背板帶寬、增加校園骨干網(wǎng)到樓的光纖數(shù)量及其帶寬等方式予以解決。針對應(yīng)用于教育行業(yè)的虛擬桌面VDI系統(tǒng),在學(xué)生客戶機運行Photoshop、3Dmax等圖形教學(xué)軟件,以解決虛擬服務(wù)器的瓶頸問題,在硬件方面國內(nèi)外推出了GPU,提高了網(wǎng)絡(luò)通信及圖形處理速度及效率[12]。
4.3 系統(tǒng)藍(lán)屏問題
系統(tǒng)藍(lán)屏問題比較復(fù)雜,有操作系統(tǒng)本身的原因,也有軟硬件兼容的原因,實際問題應(yīng)具體分析。
(1)中斷請求沖突。根據(jù)系統(tǒng)藍(lán)屏的提示信息,知道其主要原因是硬件對于中斷請求入口地址與系統(tǒng)的中斷請求入口地址相沖突(操作系統(tǒng)啟動時出現(xiàn)藍(lán)屏,提示信息中有地址訪問沖突,沖突地址為0x0000**),可修改硬件設(shè)備的中斷請求的入口地址。
(2)硬件未通過微軟公司的認(rèn)證。對于該問題,在安裝硬件驅(qū)動程序時,如果此硬件設(shè)備驅(qū)動未通過微軟公司的認(rèn)證,系統(tǒng)會給出提示消息,解決辦法就是獲得微軟公司的認(rèn)證通過。虛擬化涉及硬件、軟操作系統(tǒng),因此,在中斷請求、內(nèi)存的申請使用[13]、CPU及系統(tǒng)時間片的使用方面[14],如果處理不當(dāng),將會導(dǎo)致系統(tǒng)藍(lán)屏。
(3)目標(biāo)內(nèi)存、磁盤被其他程序鎖定使用,當(dāng)虛擬化軟件訪問該內(nèi)存、磁盤時會導(dǎo)致藍(lán)屏。在實際使用虛擬云桌面的過程中,不可避免會遇到藍(lán)屏情況,解決辦法是:
①對于Windows系統(tǒng),修改IRP結(jié)構(gòu)的指向相應(yīng)設(shè)備對象(device object)的指針,修改為指向其他地址空間的內(nèi)存或空閑磁盤;
②增加I/O通道數(shù)量,避免虛擬化與操作系統(tǒng)爭用I/O中斷而導(dǎo)致藍(lán)屏,此方案是筆者所在學(xué)校建設(shè)云實驗室使用華為技術(shù)有限公司的云計算應(yīng)用系統(tǒng)技術(shù)的解決方案;
③對于如Linux等開源工具,可重寫操作系統(tǒng)內(nèi)核程序、云系統(tǒng)軟件并編譯替換之。
5 結(jié)束語
近年來,云計算產(chǎn)品層出不窮,應(yīng)用廣泛。云計算可在已有軟硬件資源上實施整合實現(xiàn),高效地利用現(xiàn)存的軟硬件資源,涉及存儲、數(shù)據(jù)處理、計算、網(wǎng)絡(luò)通信等領(lǐng)域,在底層技術(shù)實現(xiàn)方面則必須無縫地與硬件綁定和釋放,同時在內(nèi)核層必須與操作系統(tǒng)協(xié)調(diào)地調(diào)配軟硬件資源,在應(yīng)用層如何高效地與應(yīng)用軟件實時動態(tài)交互,做到穩(wěn)定、安全可靠、高效是云計算的重點研究課題,虛擬技術(shù)底層問題是其核心重點。隨著技術(shù)的日趨完善,云計算與大數(shù)據(jù)將完美地結(jié)合在一起,其產(chǎn)品將廣泛地應(yīng)用到人們的工作、學(xué)習(xí)、商貿(mào)、生活及娛樂等領(lǐng)域。其中,最核心的仍然是虛擬化技術(shù),虛擬化的對象及內(nèi)容也越來越多,相關(guān)技術(shù)將統(tǒng)一標(biāo)準(zhǔn)化,虛擬化所支持的應(yīng)用系統(tǒng)也日趨穩(wěn)定完善。通過調(diào)查大量文獻(xiàn),在總結(jié)已有研究成果的基礎(chǔ)上,結(jié)合高校云計算系統(tǒng)實際工程的建設(shè)及維護工程,使人們對云計算系統(tǒng)及其核心技術(shù)有一個系統(tǒng)本質(zhì)的認(rèn)識,在開發(fā)云計算應(yīng)用工程或維護工作中有一個重點把握方向。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:云計算研究虛擬化技術(shù)的研究
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/10839720664.html