劉子杰, 文成玉, 薛 霽
(成都信息工程大學(xué) 通信工程學(xué)院,成都 610225)
隨著計算機(jī)技術(shù)的飛速發(fā)展,傳統(tǒng)的PC桌面面臨著諸多急需解決的問題. 比如,計算機(jī)的升級換代和管理維護(hù)方面,都需要投入大量的資金; 普通辦公人員只是日常業(yè)務(wù)辦公,會導(dǎo)致計算機(jī)CPU資源浪費(fèi)嚴(yán)重;由于系統(tǒng)安全性較差,還存在容易受到網(wǎng)絡(luò)或其他潛在的病毒攻擊的風(fēng)險. 因此,在步入云時代的今天,桌面虛擬化[1]通過將虛擬化技術(shù)和云計算技術(shù)相結(jié)合,以及將用戶的終端設(shè)備與桌面環(huán)境解耦合,所有用戶的桌面環(huán)境均存放在服務(wù)器端,進(jìn)行統(tǒng)一管理. 用戶使用終端設(shè)備時,通過輸入用戶名和密碼等登錄信息實(shí)現(xiàn)隨時隨地的接入到虛擬主機(jī)上的個人桌面[2]. 虛擬桌面很大程度上降低了運(yùn)維和管理成本,系統(tǒng)的集中化管理,有效的提高了數(shù)據(jù)安全性和資源利用率.
桌面?zhèn)鬏攨f(xié)議用于服務(wù)器和用戶終端之間進(jìn)行通信連接,主要完成從服務(wù)器到用戶終端的圖像、音頻、視頻的傳輸以及從用戶終端到服務(wù)器輸入信息的傳輸,包括鼠標(biāo)、鍵盤、外設(shè)等輸入信息[3]. 旨在為用戶提供一個與本地辦公無差異的桌面辦公環(huán)境. 桌面?zhèn)鬏攨f(xié)議原理如圖1所示.
圖1 桌面?zhèn)鬏攨f(xié)議原理
桌面虛擬化技術(shù)的核心是桌面?zhèn)鬏攨f(xié)議[4],當(dāng)前主流的虛擬桌面廠商已經(jīng)有了各自的桌面?zhèn)鬏攨f(xié)議,主要包括Citrix公司的 ICA 協(xié)議、VMware 公司的 PCoIP協(xié)議、Microsoft 公司的 RDP 協(xié)議以及 Redhat 公司KVM 的開源 SPICE 協(xié)議,各主流傳輸協(xié)議的對比分析結(jié)果如表1所示.
表1 主流虛擬桌面?zhèn)鬏攨f(xié)議比較
從表中可以看出,這些傳輸協(xié)議都存在一定的不足,不能完全適用于所有的場景. 傳輸帶寬要求的高低直接影響了遠(yuǎn)程服務(wù)訪問的流暢性.
ICA采用具有極高處理性能和數(shù)據(jù)壓縮比的壓縮算法,降低了對網(wǎng)絡(luò)帶寬的需求[5],但是它在圖像和視頻的畫質(zhì)方面仍不是很流暢. PCoIP 協(xié)議采用的是分層漸進(jìn)的方式在用戶終端顯示桌面內(nèi)容,首先傳送給用戶一個完整但是比較模糊的圖像,在此基礎(chǔ)上逐步精化,提升用戶的視覺體驗(yàn),但是PCoIP 對于用戶語音上傳的支持以及視頻播放尚存缺陷. RDP協(xié)議缺乏跨平臺性,綜合體驗(yàn)效果不如另外三個. SPICE協(xié)議對帶寬的要求適中,是所有協(xié)議中綜合體驗(yàn)效果做好的.
SPICE協(xié)議能夠直接與服務(wù)器上的虛擬機(jī)進(jìn)行通信,是一項(xiàng)高性能、動態(tài)的自適應(yīng)遠(yuǎn)程網(wǎng)絡(luò)協(xié)議,能夠自適應(yīng)地感知用戶端設(shè)備的處理能力,然后在用戶的終端上進(jìn)行圖像渲染操作,為終端用戶帶來接近于本地桌面的體驗(yàn).
在虛擬桌面?zhèn)鬏攬D片中,圖形數(shù)據(jù)的處理是至關(guān)重要的,是影響用戶體驗(yàn)的關(guān)鍵因素. 用戶終端需要從服務(wù)器獲得大量的數(shù)據(jù),所以需要較大的帶寬,特別是傳輸視頻的時候,盡管目前的桌面?zhèn)鬏攨f(xié)議都采用了各種壓縮技術(shù),但是減少的數(shù)據(jù)量是有限的. 另外,圖形處理本身就消耗大量計算資源,當(dāng)多個桌面同時在服務(wù)端進(jìn)行圖形渲染時,服務(wù)器將會有非常大的負(fù)擔(dān).
傳輸協(xié)議對圖形數(shù)據(jù)的處理方式主要有兩種:一個是基于矢量數(shù)據(jù)的傳輸,另一個是基于位圖數(shù)據(jù)的傳輸[6]. 采用不同的數(shù)據(jù)格式,對協(xié)議的實(shí)現(xiàn)和性能有多方面影響. 采用基于矢量數(shù)據(jù)的處理方式,所需傳輸?shù)臄?shù)據(jù)量較少,相應(yīng)的所需帶寬也就低一些,而且服務(wù)器沒有處理圖形的負(fù)擔(dān),但是客戶端需要有強(qiáng)大的處理能力; 采用基于位圖數(shù)據(jù)的處理方式則需要較大的帶寬,服務(wù)器要處理圖形數(shù)據(jù)有很大的運(yùn)行負(fù)擔(dān),但是對于客戶端沒有要求.
ICA 協(xié)議采用的是基于矢量數(shù)據(jù)的處理方式,將數(shù)據(jù)傳到客戶端后進(jìn)行渲染顯示,RDP 協(xié)議和 PCoIP協(xié)議則采用了基于位圖的處理方式,在服務(wù)器端對圖形數(shù)據(jù)進(jìn)行渲染,生成位圖數(shù)據(jù)后再進(jìn)行壓縮和編碼處理,最終傳輸?shù)娇蛻舳说氖强梢灾苯语@示的位圖數(shù)據(jù). SPICE協(xié)議則是同時采用了以上兩種圖形處理方式,并能夠根據(jù)終端的處理能力選擇其中任意一種方式.
壓縮技術(shù)的好壞直接影響了終端用戶的使用體驗(yàn),緩存技術(shù)能夠有效地減少對冗余圖像數(shù)據(jù)的傳輸量.SPICE桌面虛擬化框架采用以服務(wù)器端為主導(dǎo)的客戶端圖像緩存技術(shù),對多種數(shù)據(jù)進(jìn)行緩存,比如像素數(shù)據(jù)、調(diào)色板和光標(biāo)數(shù)據(jù). 用戶終端緩存保存經(jīng)常使用的顯示元素,如果當(dāng)前需要顯示的元素在緩存中就可以直接從緩存中獲得,而不必重復(fù)向服務(wù)器端發(fā)送請求.
SPICE運(yùn)用的兩個專有圖像壓縮算法分別是Quic和GLZ,不同的圖像數(shù)據(jù)使用不同的壓縮算法,人工拍攝的圖像使用Quic算法; 操作系統(tǒng)合成的圖像使用GLZ算法. 對于圖像壓縮算法的選擇,可以在服務(wù)端初始化時進(jìn)行選擇,或者在運(yùn)行時進(jìn)行調(diào)整.SPICE根據(jù)圖像數(shù)據(jù)的特性,在Quic算法和GLZ 算法之間進(jìn)行選擇.
SPICE協(xié)議[7]是一種自適應(yīng)的虛擬桌面?zhèn)鬏攨f(xié)議,具有與其他遠(yuǎn)程顯示協(xié)議與眾不同的設(shè)計架構(gòu). 圖2是SICE桌面虛擬化架構(gòu),主要由SPICE客戶端、SPICE服務(wù)端以及相應(yīng)的QXL設(shè)備、Guest端QXL驅(qū)動等構(gòu)成[8,9].
圖2 SPICE桌面虛擬化框架
SPICE客戶端是部署于終端設(shè)備上的組件,負(fù)責(zé)顯示每個虛擬桌面,終端可以是瘦客戶機(jī)或?qū)S玫腜C;SPICE服務(wù)端以動態(tài)連接庫的形式與KVM虛擬機(jī)整合,通過SPICE協(xié)議與客戶端進(jìn)行通信; QXL驅(qū)動部署在服務(wù)器側(cè),提供虛擬桌面服務(wù)的虛擬機(jī)中,用于接收操作系統(tǒng)和應(yīng)用程序的圖形命令,并將其轉(zhuǎn)換為KVM的QXL圖形設(shè)備命令; QXL設(shè)備部署在KVM服務(wù)器虛擬化的Hypervisor中,用于處理各虛擬機(jī)發(fā)來的圖形圖像操作.
SPICE協(xié)議通過各種不同的channel實(shí)現(xiàn)客戶端和服務(wù)端之間的通信[10],利用不同的通道傳輸不同的內(nèi)容,每一種通道用來專門負(fù)責(zé)一種類型的數(shù)據(jù)傳輸與通信,每個通道中的內(nèi)容都可以通過相應(yīng)的圖形命令數(shù)據(jù)流或代理命令數(shù)據(jù)流傳輸. SPICE協(xié)議提供了和真實(shí)PC相同的用戶體驗(yàn),通過SPICE可以直接在虛擬機(jī)里播放視頻和音頻等.
為了實(shí)現(xiàn)桌面虛擬化,首先需要搭建一個可靠的云平臺,當(dāng)前主流的云計算平臺主要有Eucalyptus、OpenNebula、Openstack和Cloudstack等. 這些產(chǎn)品各有各的優(yōu)勢,通過對它們性能和應(yīng)用范圍的分析,選用綜合性能良好的Openstack為虛擬桌面的服務(wù)器端提供基礎(chǔ)服務(wù).
Openstack平臺能夠統(tǒng)一管理與整合虛擬機(jī)的相關(guān)資源. Openstack平臺主要由Nova、Swift、Glance、Keystone、Horizon 5個組件構(gòu)成[10],各個組件間的調(diào)用關(guān)系如圖3,其中Compute對應(yīng)Nova,Object對應(yīng)Swift,Image對應(yīng)Glance,Idenity對應(yīng)Kestone,Dashboard對應(yīng)Horizon.
圖3 Openstack組件間關(guān)系
整個Openstack平臺架構(gòu)主要由控制節(jié)點(diǎn)、計算節(jié)點(diǎn)和網(wǎng)絡(luò)節(jié)點(diǎn)組成. 控制節(jié)點(diǎn)負(fù)責(zé)對其余節(jié)點(diǎn)的控制,包含虛擬機(jī)建立,遷移,網(wǎng)絡(luò)控制、調(diào)度管理、API服務(wù)、存儲管理、數(shù)據(jù)庫管理、身份管理和鏡像管理等; 計算節(jié)點(diǎn)負(fù)責(zé)虛擬機(jī)運(yùn)行; 網(wǎng)絡(luò)節(jié)點(diǎn)負(fù)責(zé)網(wǎng)絡(luò)之間的通信.
虛擬桌面平臺的整個系統(tǒng)采用Openstack、KVM和SPICE協(xié)議相結(jié)合來實(shí)現(xiàn). 企業(yè)中的Openstack平臺一般是以一臺主機(jī)作為控制節(jié)點(diǎn),其余的全部作為計算節(jié)點(diǎn),在計算節(jié)點(diǎn)上配置出若干個虛擬機(jī),以滿足整個企業(yè)的需求.
為了避免數(shù)據(jù)交換過程中造成擁塞,保證傳輸過程的流暢性,所有的服務(wù)器都采用三網(wǎng)卡機(jī)型. 以1個控制節(jié)點(diǎn)和1個計算節(jié)點(diǎn)為例,3個網(wǎng)卡之間的網(wǎng)絡(luò)分為內(nèi)網(wǎng)和外網(wǎng)(公共網(wǎng)絡(luò))兩部分,其中內(nèi)網(wǎng)又分為管理網(wǎng)絡(luò)和用于存儲的網(wǎng)絡(luò),所以就是1個網(wǎng)絡(luò)1個網(wǎng)卡,分為3個網(wǎng)段. 外網(wǎng)網(wǎng)段指的是能直接訪問到互聯(lián)網(wǎng)的網(wǎng)段,這里的外網(wǎng)指的是Openstack網(wǎng)絡(luò)系統(tǒng)之外的網(wǎng)絡(luò),它的網(wǎng)段是192.168.2.0/24; 內(nèi)網(wǎng)網(wǎng)段指的是Openstack系統(tǒng)內(nèi)各服務(wù)器之間互聯(lián)的頂層交換機(jī)所劃的網(wǎng)段,此網(wǎng)段無需出口,管理網(wǎng)絡(luò)用于Openstack內(nèi)部各個組件之間的通信,比如API之間、Keystone認(rèn)證、監(jiān)控等,其網(wǎng)段設(shè)置為192.168.1.0/24;存儲網(wǎng)絡(luò)顧名思義就是專門給存儲用的私網(wǎng),這個網(wǎng)絡(luò)的流量是很大的,給它設(shè)置的網(wǎng)段是192.168.0.0/24.
采用腳本安裝部署的方式安裝云平臺,首先在所有節(jié)點(diǎn)上安裝Openstack包,在控制節(jié)點(diǎn)上安裝SQL數(shù)據(jù)庫、消息隊(duì)列、Memcached,認(rèn)證服務(wù)、鏡像服務(wù)、計算服務(wù)、網(wǎng)絡(luò)服務(wù)和Dashboard參照官網(wǎng)依次安裝. 在計算節(jié)點(diǎn)上安裝計算服務(wù)和網(wǎng)絡(luò)服務(wù).Opensatck平臺搭建成功.
Openstack平臺中默認(rèn)的是VNC議,替換成本文要使用的SPICE協(xié)議. 首先安裝SPICE,然后在計算節(jié)點(diǎn)和控制節(jié)點(diǎn)上修改配置文件:/etc/nova/nova.conf,注釋掉localrc文件里默認(rèn)的VNC協(xié)議的配置,最后重啟服務(wù). 確保在Control node上看到6082端口在監(jiān)聽,虛擬機(jī)重啟才能使用SPICE協(xié)議. SPICE Driver存在于Openstack系統(tǒng)的控制節(jié)點(diǎn)中,SPICE Device存在于計算節(jié)點(diǎn)中.
為了對SPICE有一個全面的了解,對SPICE的性能進(jìn)行了測試. 對虛擬桌面性能影響最大的是網(wǎng)絡(luò)負(fù)載,不同的負(fù)載對網(wǎng)絡(luò)傳輸有不同的影響. 本測試對音頻場景和視頻場景的帶寬進(jìn)行了實(shí)時監(jiān)控.
圖4 音頻帶寬圖
圖5 視頻帶寬圖
圖4和圖5記錄了一分鐘內(nèi)音頻和視頻兩種場景下的帶寬占用情況,當(dāng)帶寬受到限制時,音頻和視頻播放可能會出現(xiàn)丟幀,播放不流暢等現(xiàn)象; 當(dāng)帶寬嚴(yán)重不足時,用戶甚至無法擁有正常體驗(yàn). 但是基本的桌面辦公不會受到影響.
上圖反映出當(dāng)前現(xiàn)有環(huán)境搭建的一臺虛擬機(jī)實(shí)現(xiàn)的虛擬桌面的效果,如果想要大規(guī)模的應(yīng)用,可以短時間內(nèi)在服務(wù)器端配置出更多的虛擬機(jī),實(shí)現(xiàn)更多的虛擬桌面. 臨汾氣象局機(jī)房搭建的虛擬桌面平臺配置了大量的虛擬機(jī),個人能在客戶端隨時隨地的登錄虛擬桌面,讓企業(yè)能夠集中化管理操作系統(tǒng),出現(xiàn)問題時管理員也能在后臺統(tǒng)一進(jìn)行處理. 很大程度上降低了企業(yè)的運(yùn)營成本.
本文首先介紹了桌面?zhèn)鬏攨f(xié)議以及影響虛擬桌面性能的因素,然后分析了虛擬桌面中應(yīng)用到的Openstack平臺和SPICE框架,最后通過測試結(jié)果證明虛擬桌面在音頻和視頻方面較傳統(tǒng)PC桌面有了很大的性能提升. 因此,越來越多的企業(yè)選擇使用虛擬桌面,不僅能夠提高公司在管理和維護(hù)方面的效率,減少機(jī)房維護(hù)人員的工作量,而且能夠很大程度上降低企業(yè)的成本. 本次測試證明此方案切實(shí)可行,并且已投入正式使用中.
1 Wikipedia. Desktop virtualization. http://en.wikipedia.org/wiki/Desktop_virtualization. [2012-03-26].
2 楊彩亮. 基于Spice桌面虛擬化框架的移動云桌面研究與實(shí)現(xiàn)[碩士學(xué)位論文]. 廣州:華南理工大學(xué),2015.
3 徐浩,蘭雨晴. 基于SPICE協(xié)議的桌面虛擬化技術(shù)研究與改進(jìn)方案. 計算機(jī)工程與科學(xué),2013,35(12):20-25.
4 王寧,王浩杰,屈喜龍. 基于SPICE協(xié)議的Android云桌面客戶端研究. 湖南工程學(xué)院學(xué)報,2016,26(2):33-36,61.
5 李博. 基于SPICE協(xié)議的桌面虛擬化客戶端的設(shè)計與實(shí)現(xiàn)[碩士學(xué)位論文]. 廣州:華南理工大學(xué),2012.
6 賴孫榮. 虛擬桌面框架Spice剖析及其客戶端的設(shè)計與實(shí)現(xiàn)[碩士學(xué)位論文]. 廣州:華南理工大學(xué),2012.
7 Red Hat. Spice for newbies:Draft 2. http://spice-space.org/docs/spice_for_newbies.pdf. 2009.
8 洪文圳,周勁樺,梁慧娜. 開源虛擬化桌面在實(shí)驗(yàn)環(huán)境部署中的應(yīng)用. 計算機(jī)教育,2015,(2):94-98.
9 楊飛,朱志祥,梁小江. 基于SPICE協(xié)議的云實(shí)驗(yàn)室設(shè)計與實(shí)現(xiàn). 現(xiàn)代電子技術(shù),2016,39(1):13-15.
10 張毅. 基于OpenStack的虛擬桌面云系統(tǒng)服務(wù)端設(shè)計與實(shí)現(xiàn)[碩士學(xué)位論文]. 廣州:華南理工大學(xué),2013.