黃鴻, 李文杰, 劉東東
(廣東電網有限責任公司 云浮供電局, 廣東 云浮 527300)
信息化的發展給IT管理領域帶來了更多的挑戰,如在需求用更少的資源做更多事情時,如何更好地保持和改建現有的桌面管理;面對不同種類的最終用戶需求,如何在降低成本的前提下更好地管理各種端點設備等,而借助虛擬桌面基礎設施可以讓管理員構建與硬件無關的桌面環境,并且在同一個系統中,可以同時運行多臺虛擬機,同時系統中的虛擬機也是相互獨立和隔離開來的。完善的桌面虛擬化架構也可以保證在很短的時間內設立新的虛擬機,再加上內核虛擬機的融合應用,會讓虛擬桌面比傳統的桌面更加完善,優化桌面工作環境,提升啟動速度。
KVM虛擬機是一種開源系統虛擬化模塊,這種內核虛擬機主要使用Linux自帶的調度器進行系統管理,所以這種虛擬技術核心源碼更少,也是目前學術界主流的VMM之一,KVM虛擬化必須借助ADM V技術或者是Intel VT技術等硬件的支持,故而也是一種基于硬件設施的完全虛擬化。
基于KVM的虛擬化技術靈活性更強,這種技術可以將不同操作系統、特殊硬件設備進行充分利用,進而答復降低不同系統維護的難度,正是由于這種特性,所以這種虛擬技術可以支持基于X86架構的Windows、Linux、Unix等操作系統更加穩定的運行。其具體架構,如圖1所示。

圖1 基于KVM的虛擬架構圖
由圖1可知,KVM在Linux系統中主要使用地層的硬件和設備虛擬化支撐,進而來為系統提供相對完成的原生虛擬化,當然只需要地層硬件虛擬化的支持,KVM就可以支持大量的客戶機操作系統。
這種內核虛擬機技術的實現主要通過CPU虛擬化和內存虛擬化兩方面實現。
(1) CPU虛擬化
第一,KVM首先需要執行VMXON指令,然后方可進入到VMX系統操作模式,此時CPU則是處在VMX根操作模式中,故而KVM軟件開始執行相關指令;
第二,當KVM在執行VMLAUNCH指令或者是VMRESUME指令時,會產生相對應的虛擬機進入,此時虛擬機軟件開始執行相關質量,同時CPU會進入到非根模式中;
第三,如果虛擬機需要執行特殊指令,或者是虛擬機在運行過程中出現系統異常、中斷等情況時,則虛擬機會由于自動退出而進入KVM,此時CPU也會自動切換到根模式,并且KVM會根據VM Exit的具體情況作出對應處理,之后重復“第二”的操作流程;
第四,KVM如果決定退出VM Exit,則會自動執行VMXOFF,然后關閉VMX操作模式。
(2) 內存虛擬化
所有的客戶操作系統都是借助/dev/kvm設備映射的,并且每一個系統都有對應的虛擬地址空間,各自的空間會重復的映射到宿主機內核物力地址空間中。KVM內存虛擬化的實現,首先EPT需要在原有的地址映射基礎之上,引入EPT頁表實現另一次映射,通過這種操作,客戶虛擬地質、物理地址、宿主機物理地址中不同的地址轉換都借助CPU硬件來自動實現。KVM實際上也可看做一種瘦虛擬化架構,由于本身體積較小,所以其支持硬件需要由Linux系統自身對硬件的支持來決定。
(1) 虛擬桌面服務器端
桌面虛擬化架構中,桌面服務器端需使用中高端的服務器,然后在服務器中安裝虛擬化軟件,借助服務器的虛擬化在宿主機中創建多個虛擬分區,每一個分區對應各自的終端桌面用戶。
(2) 終端用戶桌面端
終端用戶桌面端顧名思義主要是面向終端用戶,使用瘦客戶端或者是專用的云終端,并且需要為每一個桌面用戶配置對應的顯示器、鍵盤、鼠標和專用云終端設備。
(3) 連接管理中間件組件
這一層主要是用戶連接、調度的資源池,以VDI架構為例,這種組件主要存在于數據中心的虛擬桌面服務器中,利用這種組件可以為用戶提供成百上千的虛擬桌面客戶端。
桌面顯示協議是影響虛擬桌面用戶體驗的關鍵所在,例如VDI架構中,必須借助虛擬桌面通訊協議來連通虛擬桌面和用戶云終端,然后打包、壓縮、加密用戶云終端錄入的信息數據,之后將數據信息傳輸到虛擬機進行進一步運算,而用戶最終看到的是經過打包、加密、傳輸、解析之后的運算結果,不同的顯示協議所體現的特征有所不同,對當前主流的顯示協議做了重點比對,如表1所示。

表1 主流顯示協議特性對比
因為遠程服務訪問是否流暢是由傳統帶寬要求直接決定的,而ICA本身的處理性能、數據壓縮比相對較高,所以可以大幅度的降低系統對網絡帶寬的需求。用戶圖像顯示一眼則體現的是虛擬桌面視圖的數據組織形式和傳輸順序。PCoIP模式使用的是分層漸進的凡是,進而在用戶端顯示桌面圖像,簡單講就是先給用戶傳輸一個完整但是相對模糊的圖像,然后在此基礎上進行逐步的精化處理,所以相較于其他3個廠商使用的分行掃描方式,視覺體驗更加明顯。
桌面虛擬化架構設計之前需要先決定使用哪一種桌面顯示協議,根據表1的對比數據顯示,同時基于內核虛擬機系統環境需求,本文的虛擬化架構設計中遠程桌面顯示協議使用SPICE協議,以SPICE協議為基礎來規劃桌面虛擬化架構系統,系統構成分為3個部分,即云終端模塊、HOST模塊和Broker中間件模塊,如圖2所示。

圖2 桌面虛擬化架構模塊構成圖
之所以使用這種模塊主要由以下幾種原因。
第一,SPICE協議模塊和桌面虛擬化環境結合更為密切,并且可以從Hypervisor中將顯示、輸入、輸出等設備直接映射到SPICE協議中;
第二,SPICE能夠用于在服務器、桌面計算機虛擬桌面中;
第三,SPICE能夠支持多種系統的虛擬機應用,如Red Hat Enterprise Linux和Windows 7等;
第四,從表1可以看出,SPICE協議的視頻顯示效果相對較好,所以可以支持在虛擬機中播放高清、超清視頻顯示;
第五,SPICE借助雙語音技術可以支持軟件撥號、IP電話等功能,同時雙向視頻技術還可以提供可視電話功能,并且不需要借助特殊硬件設備。
確定使用SPICE協議之后則需要進行在桌面虛擬化架構整體設計。
桌面虛擬化架構設計主要由云終端模塊、HOST模塊、Broker中間件模塊三個模塊構成,從圖2可以看出,云終端模塊的構成包含3個端口,即Broker Agent、云終端(終端用戶桌面端)配置和SPICE客戶端;Host模塊構成則對應云終端模塊和Broker模塊,包括SPICE服務端、QEMU-KVM、Host Agent和Guest Agent 4個;Broker中間件模塊服務器包含的有服務器管理、虛擬機管理、數據庫管理、用戶和數據庫接口等多個模塊。其中,Broker中間件模塊是云終端模塊和Host端模塊中間的一個橋梁模塊端口,借助Broker中間件可以將云終端以及Host端口的虛擬機連成一體,而云終端和Broker中間件模塊間的通訊連接需要借助云終端的Broker Agent模塊實現。Broker Agent模塊通過訪問Broker中間件模塊中的云終端接口來實現兩個模塊的連接,同時通過這個流程云終端模塊可以從Broker中間件中獲取用戶的虛擬桌面信息,之后調用自身模塊中的SPICE客戶端與Host中的SPICE服務器進行通訊連接。另外,Broker中間件模塊會為Host模塊中的Host Agent端口提供Host Agent,從而來管理Host端虛擬機以及相對應的信息數據資源。
(1) QEMU-KVM虛擬機
KVM虛擬化管理模塊主要來自于Linux內核,除此之外,Linux中還包括進程管理模塊、內存管理模塊、中斷與異常情況處理模塊、文件系統管理模塊和設備管理模塊等。KVM主要指的是內核模塊、處理器模塊兩個部分。前者主要提供核心虛擬化支持,后者主要有兩個模塊,分別是kvm-intel.ko和kvm-amd.ko,這兩個模塊分別為Intel和AMD處理器提供虛擬化技術支持。
KVM需要借助加在kvm.ko內核模塊才能將Linux內核轉換成對應的Hypervisor,進而更易控制虛擬化進程,另外KVM還可以隨著Linux標準內核的不斷升級獲取性能提升,例如調度程序的對應升級、內存點持的對應升級等。同時虛擬機對應成為標準的Linux進程,所以也可以使用標準的Linux進程管理機制來進行管理。由于才做系統可以直接和KVM進行交互,故而在不同的場景模式下,都可以直接與硬件實現交互,并且不需要改變虛擬機操作系統。
相較于KVM而言,QEMU則是一種使用動態翻譯技術來實現快速指令的集層虛擬機,這種虛擬機可以支持整個計算機系統模擬,而KVM則是一種借助硬件虛擬化技術來代替QEMU的動態翻譯技術,兩者的結合可以實現Guest OS代碼直接使用硬件處理,大幅提升系統性能。
(2) SPICE服務端功能
SPICE主要是提供強化版的運程桌面體驗,作為一種桌面虛擬化框架主要的優勢在于更多的以來KVM,兩者的密切結合使得這種服務端所提供內容可以直接從模擬顯卡中獲取,并且性能會更優于RDP類型的遠程桌面協議。
SPICE服務端的目的是提供質量更高的遠程虛擬桌面訪問,所以用戶可以在單個服務器中借助QEMU運行兩個以上的Linux或Windows客戶端,然后在遠程電腦中顯示客戶端信息。另外為了支持基于SPICE協議的桌面虛擬化實現,SPICE還在QEMU中實現了QXL(即虛擬化顯示桌面設備驅動),所以SPICE服務端所需要的鍵盤、鼠標、USB等設備驅動都可以直接使用QEMU設備驅動,并且可以在單個服務中運行多個客戶機操作系統,之后借助虛擬設備接口實現遠程客戶端信息顯示,同時每一個遠程桌面都會在KVM上運行。
實際上,SPICE協議主要是基于客戶端——服務器端的一種通訊協議,與遠程設備、圖形指令、鍵盤事件、視頻與音頻流等交互過程中所發出的數據信息設計安全認真、構建連接、流量控制等多種控制。在服務器端口中,SPICE可以將應用軟件的邏輯執行與用戶界面分離,同時借助標準的網絡傳輸協議將用戶界面傳送到客戶端界面,用戶通過客戶端界面可以使用對應的接口,通過這個流程保證該應用邏輯執行全部在服務器端實現。
由于SPICE協議是借助標準協議來傳遞鍵盤、鼠標等指令,所以帶寬需求相對較低,平均只需要20k左右的帶寬,較低的帶寬使用率和較高的傳輸效率可以保證32位應用在客戶端被高效率的訪問應用。
總的來講,借助內核虛擬機技術設計桌面虛擬化架構能夠更好地繼承、部署相對應的技術應用領域,同時還可以按照不同用戶的不同需求做出對應的修改,桌面虛擬化的應用可以更好地解決桌面環境不夠靈活、資源無法充分使用、數據安全無法保全、PC硬件成本較高、系統難以管理等問題,最大限度地將用戶桌面環境和使用的終端設備松耦合,用戶則可以使用不同的終端設備借助網絡來訪問該桌面環境,為用戶提供更加個性化、干凈的全新桌面,提高用戶的使用體驗。