梁崢,刁偉孟
近年來,以虛擬化技術為核心的“云計算”已經(jīng)成為繼個人計算機、互聯(lián)網(wǎng)之后新的熱點技術,各種商業(yè)軟件和開源軟件層出不窮。商業(yè)軟件主要有Citrix XenDesktop、VMware ESXi、Microsoft Hyper-V和Redhat Hypervisor等,在開源技術方面,基于Xen[1]和KVM[2]等Linux下的虛擬化引擎,有OpenStack[3]、CloudStack[4]、Ovirt[5]等多種虛擬桌面和服務器管理項目。
從相關文獻和項目可以看到,對于各種虛擬化技術的獨立研究已經(jīng)比較深入,但是綜合上述技術的產(chǎn)品和應用相對還少。我們在Linux下利用KVM[6]和QEMU[7]的模塊部署了一個虛擬化平臺,KVM作為虛擬化引擎,QEMU則提供PC環(huán)境仿真能力。然后再基于該虛擬化平臺搭建一個語音教室,并在這個語音教室中進行了實際應用的各種測試,總體來說效果還不錯,但這個過程中,也需要解決一些具體的問題,采取一些相應的措施。
本文整理了基于虛擬化平臺在搭建語音教室應用中的一些關鍵技術問題及其解決方法,組織如下:第1節(jié)介紹虛擬化平臺中可以采用的不同設備重定向技術;第2節(jié)和第3節(jié)分別闡述視頻和音頻消息在桌面與客戶端之間的傳輸方法,以及合適的協(xié)議;第4節(jié)說明如何對無盤啟動技術簡化客戶端部署的過程進行了闡述;第5節(jié)說明使用用戶認證方式的虛擬化平臺,如何通過用戶/客戶端映射模塊,實現(xiàn)客戶端自動登錄連接相應的桌面;最后進行總結。
基于虛擬化平臺構建語音教學環(huán)境首先要解決的問題就是設備重定向。在很多場合下需要用到設備重定向:例如教師將存有課件的 U盤插到教師機上,其內(nèi)容需要呈現(xiàn)在教師機所連接的運行在虛擬化服務器上的教師桌面中。更重要的是,同很多商業(yè)軟件一樣,語音軟件也通過加密狗作為許可證保護機制。在傳統(tǒng)網(wǎng)絡環(huán)境中部署時,加密狗硬件設備插在裝有語音軟件教師端的教師機上,允許一定數(shù)目的學生端來連接。在虛擬化平臺下教師桌面,要使語音軟件能夠繼續(xù)工作,需要使得加密狗硬件設備被“重定向”教師桌面中。有兩種方式實現(xiàn)加密狗重定向:
第一種是將加密狗還是插在教師機上,實際上它作為一個硬件設備出現(xiàn)在教師機本地的操作系統(tǒng)??梢允褂?USB over IP的機制將它實現(xiàn)重定向。
a) 在教師機本地安裝USB重定向服務器軟件,教師機將作為USB服務器;
b) 在USB服務器上共享加密狗硬件設備(在USB設備被共享后,它就無法在教師機本地使用);
c) 在教師桌面上安裝USB重定向客戶端軟件,教師桌面將作為USB客戶端;
d) 在USB客戶端和USB服務器之間建立通信,這將在USB客戶端列出從USB服務器共享的所有USB設備;
e) 在USB客戶端上選擇要重定向的USB設備,并執(zhí)行連接,這時USB設備會出現(xiàn)在教師桌面的設備列表中,現(xiàn)在就可以在教師桌面上使用這個USB設備了。
2.第二種是將加密狗插在教師桌面所運行的虛擬化服務器上,這種情況下,可以使用qemu本身的設備重定向機制。
這種方式需要將教師桌面“固定”在某臺特定的虛擬化服務器上運行,一般的虛擬化平臺都提供此項功能。這種方案實際上是將宿主機上的本地USB設備“分配”給虛擬機,例如,如果虛擬化平臺采用QEMU來仿真,qemu命令的-usb參數(shù)允許添加宿主機的主機控制器,添加-device usb-host,hostbus=2,hostaddr=3將添加宿主機在總線2設備3的USB設備。
a) 將USB設備插到虛擬化服務器上;
b) 虛擬化服務器上添加主機鉤子,這個鉤子的目的就是在啟動運行在其上的虛擬機時,修改虛擬機的啟動參數(shù);
c) 在宿主機鉤子中,根據(jù)UUID或名字檢查要處理的虛擬機是否就是教師桌面;
d) 若是教師桌面,則讀取USB重定向配置文件,其中包含要重定向到教師桌面的USB設備的廠商ID和產(chǎn)品ID;
e)修改qemu參數(shù),添加-device usb-host,vendorid=#,productid=#參數(shù)。
這樣,在教師桌面啟動起來后,插在虛擬化服務器上的USB設備就將會出現(xiàn)在教師桌面的設備列表中。
在虛擬化平臺上使用設備重定向允許某些傳統(tǒng)軟件能夠繼續(xù)在虛擬化平臺中使用,并且讓用戶在享用新技術的同時,保持與傳統(tǒng)桌面相同的體驗。
在虛擬化平臺中,所有虛擬桌面都運行在服務器上,而用戶從客戶端連接這些虛擬桌面,其中的關鍵是桌面協(xié)議。桌面協(xié)議是一組用來在虛擬桌面和客戶端之間進行通信的協(xié)議,主要完成虛擬桌面到客戶端的圖形、圖像、音頻的傳輸以及客戶端到虛擬桌面輸入信息的傳輸,包括鼠標、鍵盤、外設等,如圖1所示:
圖1 虛擬化平臺中的傳輸協(xié)議原理
桌面協(xié)議為用戶提供一個從客戶端到虛擬桌面的鏈接。連接在客戶端的鍵盤和鼠標的輸入通過網(wǎng)絡被發(fā)送到虛擬桌面,虛擬桌面解釋這些指令,然后以圖像的形式發(fā)回結果到客戶端。這樣,用戶在客戶端訪問虛擬桌面時,就如同使用本地系統(tǒng)一樣。
桌面協(xié)議的效率決定了虛擬化平臺的用戶體驗。當前,虛擬化平臺中使用的桌面協(xié)議主要分為兩種類型。第一種稱為基于像素的桌面協(xié)議,在送回圖像時使用原始像素數(shù)據(jù);而另一種稱為基于對象的桌面協(xié)議,使用的是畫圖原語。
(1)基于像素的桌面協(xié)議:使用遠程像素數(shù)據(jù)具有很大的靈活性,但這是以性能為代價的。這種類型的桌面協(xié)議的工作原理是:發(fā)送幀緩沖區(qū)的一個拷貝到客戶端,而幀緩沖區(qū)保存了所有顯示在屏幕上的像素的記錄。這允許基于像素的桌面協(xié)議可以在任何類型的窗口系統(tǒng)、操作系統(tǒng)和應用程序中工作。
(2)基于對象的桌面協(xié)議:桌面協(xié)議可以在本地主機上畫圖像,通過使用應用程序級的顯示命令,從虛擬桌面發(fā)送過來的,例如畫方框和寫文本。這些命令由客戶端解釋,然后在屏幕上畫出來。正因為如此,和使用原始像素數(shù)據(jù)的桌面協(xié)議相比,這種桌面協(xié)議要求客戶端主機具有更高的計算能力。
基于像素和基于對象的桌面協(xié)議各有優(yōu)缺點,與客戶端計算能力、虛擬桌面中應用類型等密切相關。在基于虛擬化平臺搭建語音教室時,測試了多種桌面協(xié)議,包括:
RDP[8]:RDP(遠程桌面協(xié)議)是微軟開發(fā)的協(xié)議,允許用戶通過圖形界面連接到遠程計算機。RDP是一種多通道協(xié)議,允許單獨的虛擬通道攜帶演示文稿數(shù)據(jù)、串行設備通信、授權信息、加密的鍵盤和鼠標活動等。RDP還支持驅(qū)動器重定向、剪貼板映射、遠程應用等高級功能。
SPICE[9]:SPICE(獨立計算環(huán)境的簡單協(xié)議)是一個開放到遠程計算解決方案。其工作原理是創(chuàng)建幾個通用接口或“通道”,每樣都會獲得不同的用戶體驗,它們都高度抽象,所以能在各種平臺上使用。SPICE是的一個主要特點是自適用性,能夠根據(jù)客戶端的計算能力確定是否是將畫圖命令發(fā)送給客戶端,或者是將渲染的結果發(fā)送過去。
Splashtop[10]:Splashtop是一款商業(yè)版本的高性能、跨平臺遠程桌面控制協(xié)議,它具有廣泛的個人用戶。其技術原理是將遠程主機的屏幕像素進行“編碼”,通過 Internet、Wi-Fi或其他網(wǎng)絡協(xié)議傳輸?shù)娇蛻舳嗽O備,由它進行解碼并顯示在屏幕上。Splashtop有很多的技術獨特性,其中一個主要的就是采用了P2P技術穿透防火墻或NAT內(nèi)部,實現(xiàn)客戶端和虛擬桌面的連接。
語音教室的另一個重要方面是語音傳輸:教師在話筒中的聲音需要被傳送到學生的耳機,學生在話筒中的聲音也要被傳送到教師以及其他學生的耳機。如果是在傳統(tǒng)網(wǎng)絡架構下,這個過程非常簡單,只需要語音軟件通過特定的協(xié)議在教師機與學生機之間進行傳輸即可。
在虛擬化平臺下,這個過程就要復雜的多。如圖2所示:
圖2 基于虛擬化平臺的語音教室應用中音頻傳輸?shù)倪^程
教師(學生)聲音先通過RECORD通道從教師(學生)機傳輸?shù)浇處煟▽W生)桌面,然后由語音軟件協(xié)議傳送到學生(教師)桌面,進而通過PLAYBACK通道傳輸?shù)綄W生(教師)機。這里的關鍵就在于聲音在桌面和客戶端之間的傳輸。大多數(shù)桌面媒體流傳輸技術只支持將視頻和音頻從桌面?zhèn)鬏數(shù)娇蛻舳?。要實現(xiàn)聲音從客戶端傳輸?shù)阶烂?,必須借助于其他的協(xié)議。
基于QEMU和KVM的虛擬化平臺可以采用SPICE協(xié)議。
SPICE通信會話被分成多個通信通道以便可以按照通道類型控制消息的通信和執(zhí)行。當前 SPICE協(xié)議定義了下列通信通道:
主通道是 SPICE會話控制通道,復雜處理通信初始化(通道列表)、遷移和代理通信等。
顯示通道用于接受遠程顯示更新。
輸入通道用于發(fā)送鼠標和鍵盤事件。
光標通道用于接受指針形狀和位置。
回放通道用于接受音頻流。
記錄通道用于發(fā)送音頻捕獲。
而 SPICEC客戶端包含一些參數(shù)用于啟用(--enable-channels)或禁用(--disable-channels)通道。
綜上所述,為了實現(xiàn)語音教學過程中的音頻傳輸,可以同時使用兩種協(xié)議,桌面媒體流傳輸協(xié)議用于傳輸音頻回放消息,而SPICE協(xié)議只用于傳輸音頻記錄消息。
在現(xiàn)有大多數(shù)虛擬化平臺中,都引入了模板和虛擬機池。模板從已經(jīng)安裝了完整環(huán)境的桌面制作而成,可以很方便地克隆出具有相同初始配置的虛擬桌面?;谝阎谱骱玫哪0宀渴鹛摂M桌面省去了操作系統(tǒng)和軟件安裝的過程,基本上只是在虛擬機服務器上的映像文件拷貝,因為非常快速。桌面池表示從同一個模板創(chuàng)建的一批桌面,引入的目的是為了方便為一組用戶創(chuàng)建多個具有相同初始配置的桌面。
在教學環(huán)境中使用虛擬化平臺時的操作流程是:教師連接到在管理員創(chuàng)建好并分配給他的虛擬桌面中安裝操作系統(tǒng)以及所需要的應用程序,然后從已準備好的虛擬桌面制作模板,然后再基于這個模塊創(chuàng)建一個虛擬機池,確保每個學生在虛擬機池中分配一個虛擬桌面。當需要更改教學環(huán)境時,教師必須修改原始虛擬桌面,再次制作模板和創(chuàng)建虛擬機池,因此,過程稍顯復雜。
實際上,無盤啟動技術在教學中有很長的應用歷史,并且非常成熟。當前網(wǎng)絡環(huán)境下的無盤啟動技術是物理機通過網(wǎng)絡啟動,從無盤啟動服務器上抓起一個系統(tǒng)映像,然后從這個系統(tǒng)映像引導進入操作系統(tǒng)。每次物理機啟動時,學生選擇是否還原到系統(tǒng)的最初狀態(tài)。
實際上,無盤啟動技術也可以結合到虛擬化平臺中,從而簡化教學環(huán)境的制作和修改過程。虛擬化平臺中的無盤啟動部署方案如圖3所示:
圖3 通過無盤技術簡化基于虛擬化平臺的語言教室部署
圖3中包含無盤啟動服務器、Windows共享服務器、教師機和學生機等,它們實際上都是虛擬化平臺中的虛擬機(虛擬服務器和虛擬桌面)。
無盤啟動服務器是基于無盤啟動技術的核心。其中包含有DHCP、TFTP、HTTP以及iSCSI目標器(或AOE目標器)等各種服務,并且存儲有客戶端所希望進入的各種操作系統(tǒng),在客戶端通過網(wǎng)絡啟動時,為其分配IP地址,并且向客戶端提供啟動進入操作系統(tǒng)所需的文件。
Windows共享服務器為教師在安裝基于Windows的操作系統(tǒng)時使用。Windows操作系統(tǒng)的安裝過程是,首先,無盤啟動進入 Window預裝環(huán)境,然后連接到包含 Windows安裝文件的文件服務器運行安裝程序。
教師機實際上是無盤啟動的管理端,它通過網(wǎng)絡啟動后,將請求無盤啟動服務器生成動態(tài)管理菜單,每個菜單對應無盤啟動服務器上代表教學環(huán)境的一個映像文件,管理員可以更新映像文件、刪除映像文件,或者創(chuàng)建新的映像文件。
學生機實際上是無盤啟動的普通客戶端,它們通過網(wǎng)絡啟動后,將從無盤啟動服務器下載生成的映像菜單,供用戶選擇任何一個映像文件并進入對應的教學環(huán)境。
無盤啟動技術讓教師制作和修改教學環(huán)境非常方便。教師只需要運行并連接到教師機,通過網(wǎng)絡啟動,即可創(chuàng)建新的映像文件,如果是Windows的教學環(huán)境,利用WINPE啟動,然后從Windows服務器上映射Windows操作系統(tǒng)的安裝文件,直接運行安裝文件進行安裝。如果要修改教學環(huán)境,只需要進入該映像文件的操作系統(tǒng),在其上直接安裝新的應用程序即可。
而學生可以運行并連接到各自的學生機即可,可以同時訪問同一個教學環(huán)境,進入對應操作系統(tǒng),并使用其中的應用程序。并且學生所作的任何修改都是無狀態(tài)的,即一旦關機或重啟,這些改動將丟失,操作系統(tǒng)和應用程序自動還原到上次管理員更新的狀態(tài)。
在實際的語音教室搭建時,無盤啟動采用iPXE[11]技術,映像文件掛接到物理客戶端采用的是iSCSI[12]協(xié)議。學生桌面運行時,后臺基于相應映像文件創(chuàng)建一個快照,同樣將這些快照掛載到物理客戶端,這個每個學生進入系統(tǒng)之后,實際上看到的環(huán)境和教師在教師機上制作的環(huán)境完全一致。在學生客戶端重啟時,后天刪除現(xiàn)有快照,創(chuàng)建新的快照,從而達到還原的效果。
虛擬化平臺可以和基于LDAP和Windows活動目錄的現(xiàn)有用戶認證系統(tǒng)相集成,還支持使用獨立的用戶認證系統(tǒng)。用戶認證模塊作為一個虛擬實例部署,允許在管理引擎中管理外部認證域,并通過瀏覽器很方便地添加、刪除、鎖定和激活用戶。
虛擬化平臺將虛擬桌面分配給不同的用戶,憑自己的帳號和密碼,用戶幾乎在任何時間、從任何地點、用任何設備來訪問。
但是當應用虛擬化平臺技術來搭建語音教室時,使用用戶帳號登錄就顯得“多此一舉”了,最好的方式是每個客戶端(學生機或教師機)對應一個固定的桌面(學生桌面或教師桌面)。當學生在任意一臺主機前坐下,運行虛擬化客戶端軟件,將自動連接到和這臺主機對應的桌面。這里面的關鍵就是實現(xiàn)“客戶端和用戶之間的映射”,有兩種方法來做:
第一種是,每個客戶端都有一個配置文件,其中記錄映射到該客戶端的用戶帳號和(加過密的)密碼,虛擬化客戶端軟件運行時,將讀取該配置文件,解析出帳號和密碼然后自動連接分配給該用戶的桌面。這種方法的缺點在于客戶端的部署和維護比較困難。
第二種方法是將這些映射信息保存在某個服務器上,例如創(chuàng)建一個虛擬服務器,并安裝用于用戶/客戶端映射的模塊。管理員通過瀏覽器查看虛擬化平臺中已經(jīng)建好的用戶信息,以及語音教室每個客戶端的信息,然后為每組用戶和客戶端之間建立映射。客戶端本地則安裝完全相同的虛擬化客戶端軟件,或者使用無盤啟動技術抓起包含相同虛擬化客戶端軟件的映像。在客戶端軟件運行起來后,首先發(fā)送請求到映射服務器,獲取對應的用戶信息,解析出帳號和密碼然后自動連接分配給該用戶的桌面。
基于虛擬化平臺搭建語音教學環(huán)境,和在傳統(tǒng)網(wǎng)絡架構下搭建語音教學環(huán)境,具有充分利用當前基礎設施,方便管理和訪問,方便教學環(huán)境的制作和修改等很多優(yōu)勢。但是,在這個過程中,也發(fā)現(xiàn)了虛擬化技術在與日常辦公環(huán)境下部署面臨的不同問題。通過解決這些問題,確實證明虛擬化平臺是可以實際應用在各種教學環(huán)境下的。
[1]Barham P, Dragovic B, Fraser K, et al.Xen and the Art of Virtualization [C]//Proceedings of the 19th ACM Symposium on Operating Systems Principles.New York:Bolton Landing, 2003:164-177.
[2]Kivity A, Kamay Y, Laor D, et al.KVM: the Linux virtual machine monitor [C]//Proceedings of the 2007 Ottawa Linux Symposium.Ottawa, Canada: Ottawa Linux Symposium, 2007: 225-230.
[3]Sefraoui O, Aissaoui M, Eleuldj M.OpenStack: Toward an Open-source Solution for Cloud Computing [J].International Journal of Computer Applications.2012,55(3):38-42.
[4]CloudStack.Open Source Cloud Computing [EB/OL].[2013-12].http://cloudstack.apache.org.
[5]oVirt.Quick Start Guide [EB/OL].[2013-12].http://www.ovirt.org/Quick_Start_Guide.
[6]KVM.Kernel Based Virtual Machine [EB/OL].[2013-12].http://www.linux-kvm.org/.
[7]QEMU.Open Source Processor Emulator [EB/OL],http://www.qemu.org/
[8]FreeRDP.A Remote Desktop Protocol Implementation[EB/OL].[2013-12].http://www.freerdp.com/.
[9]SPICE.Spice User Manual [EB/OL].[2013-12].http://www.spice-space.org/docs/spice_user_manual.pdf.
[10]Splashtop.Top-performing Remote Desktop and Remote Support [EB/OL].[2013-12].http://www.splashtop.com/.
[11]iPXE.Open Source Boot Firmware [EB/OL].[2013-12].http://www.ipxe.org/.
[12]Satran J, Meth K, Sapuntzakis C, et al.RFC 3720-2004,Internet Small Computer System Interface (iSCSI) [S].USA: IETF, 2004-4.