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