劉佳銘 吳定剛 謝紅勝
(1.海軍裝備部 北京 100071)(2.中國艦船研究設計中心 武漢 430064)
20世紀70年代,IBM公司首次在IBM/370大型機上應用虛擬化技術,極大提高了大型機的資源利用率。隨著軟硬件技術的迅速發展,虛擬化技術開始在普通×86計算機上應用,并成為當前計算機發展和研究的一個熱點方向。
大多數服務器系統具有實現成本低、可擴展性好等優勢,但其編程管理和維護比較復雜。虛擬化技術在物理服務器上架設虛擬機監控器(Virtual Machine Monitor,VMM),將底層的硬件資源進行抽象管理,隱藏底層硬件的實現細節,為客戶操作系統虛擬邏輯上的硬件層,使其呈現出多個邏輯服務器。
目前,虛擬化技術主要應用在商業數據中心,高校計算機教學和數字圖書館建設等方面,已經取得了較好的效果。文中結合艦載作戰系統仿真特點,提出基于KVM虛擬化的仿真實現方案,為作戰系統的仿真實現提供了較好的技術支撐。
虛擬化為一組物理資源提供統一的邏輯訪問接口[1],通過分層組織,由底層的硬件和高層的軟件實現抽象層次,從邏輯層面對物理資源進行重新分配與描述,使其不受底層資源配置的限制。通過由位于下層的軟件向位于上層的軟件提供一個與它期待的運行環境完全一致的接口方法,抽象出一個虛擬的軟件或硬件接口,使得上層的軟件可以直接運行在虛擬環境之上。
虛擬化技術能夠在一套物理計算機上虛擬出多個邏輯上獨立的計算機系統,運行多個獨立的操作系統和獨立的應用軟件。實現系統和應用間的有效隔離,對資源進行按需分配,保障每個系統的安全性和運行性能。典型的系統架構如圖1所示。

圖1 虛擬化系統架構
虛擬化系統的核心是虛擬機監控器VMM。它主要對資源進行調度、分配和管理,保證多個虛擬機(Virtual Machine,VM)系統間的相互隔離和多個客戶操作系統的正常運行。虛擬機監控器具有最高級的運行權限,實現對物理硬件設備的直接管理,而虛擬機和客戶操作系統可作為運行在VMM上的用戶程序。
虛擬化技術主要分為平臺虛擬化、資源虛擬化、應用程序虛擬化和表示層虛擬化。在應用層面上表現為服務器虛擬化、內存虛擬化、設備虛擬化、存儲虛擬化和網絡虛擬化等。其中服務器虛擬化主要可分為三類[2~5]:
1)全虛擬化。虛擬操作系統與底層硬件完全隔離,由hypervisor層轉化虛擬操作系統對底層硬件的調用代碼,操作系統可以原封不動地安裝到虛擬機上,具有實現簡單、兼容性好等特點。其客戶操作系統的運行速度會根據不同的實現方式而不同。完全虛擬化依賴于高水平的處理器集成技術,要求hypervisor層管理各個虛擬服務器,并保持彼此間的獨立性。
2)準虛擬化。準虛擬化與完全虛擬化有一些類似,它在客戶操作系統中集成了與準虛擬化相關的指令,客戶操作系統通過這些指令配合hypervisor層調用硬件資源,減少了指令轉換開銷,可以提供很高的虛擬性能。
3)操作系統層虛擬化。操作系統層的虛擬化不依賴于hypervisor層,所有虛擬機運行于同一個主機操作系統上,主機操作系統負責多個虛擬機間的硬件資源分配,并且讓這些虛擬機彼此獨立,統一運行。
隨著虛擬化技術的快速發展和應用范圍的擴大,虛擬化的優勢也越來越明顯。虛擬化技術的主要優勢有:
1)提高硬件資源的利用率
虛擬化技術使得單一物理服務器可以運行多個操作系統或獨立應用,讓每一個應用(如數據庫系統、網絡服務器系統)在單一的操作系統上獨立運行,提高了服務器資源的利用率和應用的承載能力,降低了運維的成本和管理難度。
2)服務的隔離
虛擬化技術能夠在一臺物理設備上為應用提供多個有效的獨立運行支撐平臺,保障應用需求。滿足絕大多數應用對具有獨立運行環境和平臺的應用需求,保障不同業務運行在不同的獨立平臺上,相互間完全隔離,不產生干擾。
3)高可用性
虛擬機比實體機具有更強的彈性。利用虛擬化技術可以有效解決高可用性、容錯、負載均衡、備份等應用問題,而不必依靠復雜技術或是昂貴設備。
此外,虛擬化還可以解決很多物理設備無法解決的問題,包括動態主機遷移、快速刪除重復數據、統一桌面管理等,甚至可以創建永不宕機的集成環境。
基于內核的虛擬機(Kernel Virtual Machine,KVM)是開源組織提出的基于硬件虛擬化的虛擬機實現方案,2007年2月發布的Linux2.6.20內核第一次包含了KVM,是進入Linux核心的虛擬化解決方案。利用KVM實現物理計算機的虛擬化,還需要借助QEMU,為客戶操作系統提供網卡、I/O等設備的虛擬,其架構如圖2所示。

圖2 KVM系統架構
QEMU對虛擬機操作系統的I/O操作進行虛擬。虛擬操作系統生成的I/O請求被截獲并轉發到用戶空間,由QEMU的設備模型模擬I/O操作,觸發真實的I/O操作。QEMU實質是一種利用動態翻譯技術實現的快速指令集層虛擬機,可以支持對整個計算機系統設備的模擬,包括多種處理器(×86、ARM、PowerPC等)、存儲設備、圖形處理設備和網絡設備等[8]。
KVM通過使用硬件虛擬化技術,實現對虛擬機操作系統代碼的直接硬件處理,減少了指令轉化的開銷,提高了系統的性能。
KVM虛擬機支持的虛擬操作系統種類很多,基于×86架構的Windows、Unix等操作系統都可以穩定運行。同時KVM本身以瘦虛擬化形式運行在Linux內核中,具有很強的硬件支持能力。當前主流硬件設備均配有對應的Linux驅動,因此KVM也可以順利運行在在最廣泛的主流硬件系統之上[9]。
此外,KVM虛擬化技術具有較強的靈活性,能較好地利用不同操作系統和特殊硬件設備,降低不同系統間的維護復雜度,為系統提供優良的系統性能和穩定性。
采用RHEL6.0內核中的KVM完成對物理計算機的虛擬化,對網卡進行虛擬,采用TUN/TAP模式進行網絡配置,搭建基于KVM虛擬化的作戰系統仿真運行平臺。
將虛擬機創建為Linux系統內的一個普通鏡像文件。創建命令如下

用qemu命令創建名為“linux.img”、容量為100G的虛擬磁盤。虛擬磁盤并非預先分配全部空間,而會根據使用情況進行動態分配,容量分配范圍不超過100G。
KVM通過虛擬機命令參數啟動指定虛擬機所對應的CPU、內存、硬盤、網卡、系統時鐘等硬件配置。使用啟動命令將虛擬磁盤文件和虛擬機關聯起來,引導安裝操作系統,操作系統安裝引導指令為

設置虛擬機使用位于“/data/”目錄下的磁盤鏡像文件“linux.img”作為系統安裝硬盤,內存容量為1024M,從光驅啟動虛擬機進行操作系統安裝。隨后進入系統安裝引導程序,安裝操作界面與在物理計算機上正常安裝操作系統的操作界面一致。
安裝完畢后將上述啟動命令中的參數“-boot d”修改為“-boot c”,即可從磁盤鏡像正常啟動虛擬機。
在仿真實現過程中,可以通過軟件實現對虛擬機創建命令的自動控制,完成對虛擬的動態創建和管理。
通過TUN/TAP模式進行物理網卡與虛擬網卡間的網橋連接,實現虛擬機與主機、虛擬機與外部網絡設備間的正常通信[10]。虛擬操作系統可按手工指定方式設置網卡IP地址,詳細操作如下:
1)創建虛擬網橋br0。創建ifcfg-br0文件,編輯如下內容:

2)修改主機網卡信息。修改主機網卡配置文件的內容,添加“BRIDGE=br0”。
3)進行虛擬網卡與物理網卡間的橋接。
(1)創建一個名為tap0的虛擬網卡,所有者為root。
tunctl–t tap0-u root
(2)將主機網卡eth0加入網橋br0。
brctl addif br0eth0
(3)將虛擬網卡tap0加入網橋br0。
brctl addif br0tap0
(4)激活虛擬網卡tap0。
ifconfig tap0up
TUN設備會通過網橋br0將虛擬網卡tap0與物理網卡eth0進行映射和鏈接。最后檢查網絡配置,顯示tap0、br0和eth0的詳細信息。
啟動虛擬機系統,按照上述操作配置網絡信息,即可在同一網段內實現虛擬機與主機系統及其它網絡節點間的信息通信。
艦載作戰系統分系統的設備數量不斷增加,增加了系統內部結構的復雜性,對系統的體系結構設計也提出了更高的要求,同時也提高了設備安裝的空間需求。
此外,各分系統設備間存在著大量功能重復的設備,例如:幾乎所有的分系統均配有獨立的信息處理設備,造成了大量處理設備的重復和空間浪費。
為了實現設備的集中控制和統一管理,對資源進行有效分配,需要利用虛擬化技術對服務器等處理設備進行虛擬化處理,結合應用需求完成對物理資源的管理和應用程序的部署。
利用KVM虛擬化技術,在兩臺臺式工作站上共計虛擬出五個虛擬機。通過對KVM虛擬化命令的集成,實現對虛擬機的自動創建和網絡配置。在五個虛擬機上分別部署不同的客戶操作系統,主要有:Windows、Linux、Vx-Works和Solaris等,搭建相互獨立的仿真運行平臺,結合仿真需求將不同類型的應用程序部署在對應的平臺上,實現對作戰系統主要功能的模擬與仿真。仿真體系結構如圖3所示。

圖3 基于KVM虛擬化仿真體系結構圖
將指揮控制模擬系統、探測模擬系統、武器模擬系統、數據庫系統及Eclipse等相關的模擬系統/設備或軟件部署到相應的虛擬機上。由于對虛擬機的管理和監控需求要求不高,所以直接利用RHEL中KVM的管理功能對虛擬平臺進行管理與監控。各模擬系統或軟件通過虛擬網卡與以太網連接,完成相互間的信息交互。對于承載作戰業務的指揮控制模擬系統、探測模擬系統和武器模擬系統需要在啟動時自動調用并加載Eclipse界面組件提供的配置界面,通過配置界面提供相應的人機操作接口,控制和觸發相應的操作,并進行業務信息的顯示和處理。
1)仿真性能
通過虛擬化技術,可以在較少的物理服務器上虛擬出多個邏輯服務器,雖然提高了服務器的利用率,但對虛擬機的性能還是有影響的[11]。而對實時性要求較高的作戰仿真而言,性能影響直接決定著仿真的效果。經測試統計,在一個單內核的物理服務器上虛擬一個虛擬機,其性能損耗較少,約為2%~7%;若在一個單內核的物理服務器上虛擬出三個虛擬機時,其性能損耗可高達20%~40%,虛擬機的性能損耗會隨著虛擬機的數量增加而顯著增加,因此虛擬機性能的損耗直接影響著虛擬機的數量。有限數量范圍內的虛擬機性能,可以通過提高物理服務器的內存和CPU配置來提高虛擬機的運行性能,使其滿足仿真需求。
2)資源監控與管理
虛擬機的監控與管理是體現虛擬化技術優勢的重要特征,可以實現對物理主機資源和虛擬資源的有效管理和分配。結合應用需求對資源進行動態分配和統一管理,實現模擬軟件的動態遷移和運行負載的實時調配。對于同構服務器資源的監控、管理與遷移相對比較簡單,可直接利用KVM提供的監控接口和功能,設計符合仿真界面要求的監控軟件,監控管理虛擬資源和應用程序。對于異構分布式服務器系統的監控與管理是一個較難的課題,不僅涉及到異構平臺間監控信息的一致性,更要考慮對虛擬機的遠程控制,需要進行更加深入的研究。
KVM作為Linux內核中的虛擬化實現軟件,具有靈活、可擴展等較多的優勢,可以將相對有限的計算機物理資源進行虛擬,按照需求進行邏輯重組,保持資源的獨立性,充分利用服務器資源的同時,提高了對資源的管理和控制能力。結合作戰系統仿真的需求,詳細描述了一個簡單仿真系統的搭建和虛擬化實現過程,為物理資源虛擬和平臺資源的配置研究奠定了基礎。
[1]何新華,金國柱,王瓊.仿真試驗中的虛擬化技術應用[J].四川兵工學報,2011,32(8):71-73.
[2]劉一威,虛擬化程度分類與技術應用[J].企業技術開發,2011,30(3):172-173.
[3]郭春梅,孟慶森,畢學堯.服務器虛擬化技術及安全研究[C]//第26次全國計算機安全學術交流會,2011(9):35-37.
[4]梁雪峰.計算機虛擬化新技術的應用[J].科技創新,2010(12):97.
[5]韓寓.服務器虛擬化技術研究與分析[J].電腦知識與技術,2011,7(7):1654-1655.
[6]程瑩,張云勇,劉露.企業級虛擬化應用研究[J].電信網技術,2011(5):19-22.
[7]崔澤永,趙會群.基于KVM的虛擬化研究及應用[J].計算機技術與發展,2011,21(6):108-111.
[8]譚郁松,吳慶波.虛擬化與操作系統辨析[J].計算機工程與科學,2011,33(4):62-67.
[9]李昕,吳劍平.虛擬化技術及其應用[J].鑿巖機械氣動工具,2011(3):32-35.
[10]李馥娟.虛擬機技術在復雜網絡實驗中的應用[J].實驗技術與管理,2009,26(12):79-83.
[11]余明輝.虛擬化技術應用的風險分析及對策研究[J].信息安全與技術,2010(10):77-79.