汪小林 李濤 高博 洪星星 羅英偉
摘要:針對(duì)當(dāng)前計(jì)算機(jī)實(shí)驗(yàn)教學(xué)中心學(xué)生上機(jī)環(huán)境在數(shù)據(jù)安全、用戶體驗(yàn)、系統(tǒng)管理等方面存在的問(wèn)題,提出一種基于虛擬機(jī)的個(gè)性化計(jì)算機(jī)實(shí)驗(yàn)教學(xué)環(huán)境pVCE,旨在通過(guò)虛擬機(jī)方式為學(xué)生提供面向課程的個(gè)性化上機(jī)環(huán)境和便捷的個(gè)性化上機(jī)服務(wù),同時(shí)方便教師和管理員管理。
關(guān)鍵詞:虛擬化;個(gè)性化虛擬機(jī);計(jì)算機(jī)實(shí)驗(yàn)教學(xué)環(huán)境;pVCE;實(shí)驗(yàn)管理
0.引言
計(jì)算機(jī)實(shí)驗(yàn)教學(xué)中心是實(shí)施實(shí)驗(yàn)教學(xué)的重要場(chǎng)所,應(yīng)為學(xué)生提供良好的上機(jī)服務(wù),便于教師參與教學(xué)實(shí)踐,管理員參與監(jiān)控管理。隨著教育模式的發(fā)展,傳統(tǒng)實(shí)驗(yàn)教學(xué)中心的不足日益凸顯。首先,在傳統(tǒng)實(shí)驗(yàn)教學(xué)中心開(kāi)展實(shí)驗(yàn)教學(xué)活動(dòng)時(shí)常面臨安全問(wèn)題。公共實(shí)驗(yàn)環(huán)境中用戶共享存儲(chǔ)、私有文件數(shù)據(jù)可隨意被刪改而造成損失;為保證系統(tǒng)安全,學(xué)生通常沒(méi)有權(quán)限安裝軟件,不僅犧牲了學(xué)生的用戶體驗(yàn),還給管理員增加了管理負(fù)擔(dān);硬件故障也易造成嚴(yán)重后果。其次,傳統(tǒng)實(shí)驗(yàn)教學(xué)環(huán)境的資源利用率不高。實(shí)驗(yàn)教學(xué)中心的軟硬件資源通常都不能被用戶充分利用。最后,傳統(tǒng)實(shí)驗(yàn)教學(xué)中心的管理活動(dòng)主要由管理員管理,缺少教師的有力參與且管理員缺乏便捷高效的實(shí)驗(yàn)教學(xué)中心管理機(jī)制。
虛擬化技術(shù)可有效改善上述問(wèn)題。由于虛擬化能幫助屏蔽底層物理硬件差異,為上層用戶提供多樣化的執(zhí)行環(huán)境且虛擬機(jī)之間相互隔離,因此用戶可使用私有虛擬機(jī)作為上機(jī)平臺(tái),自由地安裝個(gè)性化軟件。用戶數(shù)據(jù)存儲(chǔ)在虛擬機(jī)鏡像中能保證數(shù)據(jù)安全,發(fā)生硬件故障時(shí)遷移虛擬機(jī)或轉(zhuǎn)移鏡像文件,即可快速恢復(fù)使用原始的操作系統(tǒng)和應(yīng)用軟件。同時(shí),隨著多核技術(shù)的普及,一臺(tái)物理機(jī)運(yùn)行多臺(tái)虛擬機(jī)也不會(huì)影響用戶體驗(yàn),因此利用虛擬化技術(shù)有助于提升資源利用率,緩解硬件緊缺的現(xiàn)狀。
目前,虛擬化平臺(tái)主要有KVM、Xen、VMWare、Bochs、Hyper-V等。有許多將VMWare虛擬化應(yīng)用到實(shí)驗(yàn)教學(xué)中心的實(shí)踐案例,但普遍缺乏針對(duì)實(shí)驗(yàn)教學(xué)中心參與者(學(xué)生、教師、管理員)面向課程實(shí)驗(yàn)活動(dòng)的管理機(jī)制,因此筆者提出基于XEN/KVM開(kāi)源虛擬化平臺(tái)構(gòu)建基于虛擬機(jī)的個(gè)性化計(jì)算機(jī)實(shí)驗(yàn)教學(xué)環(huán)境pVCE(a personalized virtualized computer experimental environment),為學(xué)生提供個(gè)性化、虛擬化的上機(jī)環(huán)境且實(shí)現(xiàn)讓多類(lèi)用戶參與課程實(shí)驗(yàn)活動(dòng)的便捷高效的使用和管理接口。
1.系統(tǒng)設(shè)計(jì)
1.1設(shè)計(jì)目標(biāo)
為應(yīng)對(duì)傳統(tǒng)實(shí)驗(yàn)教學(xué)環(huán)境中的挑戰(zhàn),我們對(duì)pVCE的設(shè)計(jì)提出以下要求。
(1)個(gè)性化。在實(shí)驗(yàn)教學(xué)中心為學(xué)生提供可自由操作的個(gè)性化虛擬機(jī),虛擬化技術(shù)可支持學(xué)生更靈活地配置出其需要的實(shí)驗(yàn)環(huán)境,包括操作系統(tǒng)、應(yīng)用軟件、計(jì)算資源等(如學(xué)生使用CentOS-x86 64操作系統(tǒng),4 GB內(nèi)存)。pVCE應(yīng)提供方便的交互接口讓學(xué)生控制和使用其虛擬機(jī)(如通過(guò)客戶端、瀏覽器訪問(wèn)各自的虛擬機(jī))。
(2)面向課程。pVCE需面向多樣化的課程教學(xué)需求提供多樣化的上機(jī)環(huán)境(如數(shù)據(jù)庫(kù)概論課程要求PHP、MySQL、Apache,而編譯實(shí)習(xí)課程要求GCC、JDK等)。利用虛擬化技術(shù),教師可突破現(xiàn)有實(shí)驗(yàn)環(huán)境的限制,開(kāi)設(shè)各具特色的實(shí)驗(yàn)課程。pVCE應(yīng)提供一套完善的操作接口讓教師管理課程信息,方便創(chuàng)建、部署及管理。pVCE還應(yīng)用來(lái)拓展實(shí)驗(yàn)教學(xué)模式,如開(kāi)展系統(tǒng)安全課程實(shí)驗(yàn)時(shí)為學(xué)生提供可自由修改的操作系統(tǒng),開(kāi)展網(wǎng)絡(luò)課程實(shí)驗(yàn)時(shí)為其提供若干臺(tái)虛擬機(jī)組建局域網(wǎng)。
(3)便攜。學(xué)生使用USB等設(shè)備時(shí),能攜帶其在計(jì)算機(jī)實(shí)驗(yàn)教學(xué)中心中使用的個(gè)性化實(shí)驗(yàn)環(huán)境,并在其他平臺(tái)上恢復(fù)運(yùn)行使用。
(4)遠(yuǎn)程訪問(wèn)。pVCE應(yīng)提供多樣化的虛擬機(jī)訪問(wèn)方式,如支持學(xué)生遠(yuǎn)程訪問(wèn)其個(gè)性化的虛擬機(jī),遠(yuǎn)程用戶能夠和本地用戶共享計(jì)算資源,并為管理人員提供統(tǒng)一的機(jī)制管理所有的用戶信息和個(gè)性化虛擬機(jī)等。
(5)監(jiān)控管理。為保證實(shí)驗(yàn)教學(xué)中心的良好運(yùn)行,pVCE應(yīng)為管理員生成各類(lèi)計(jì)算資源概覽圖,提供監(jiān)控管理的交互接口,如管理學(xué)生參與課程并使用個(gè)性化虛擬機(jī),管理教師部署課程實(shí)驗(yàn)平臺(tái),監(jiān)測(cè)整個(gè)教學(xué)實(shí)驗(yàn)中心虛擬機(jī)的實(shí)時(shí)狀況。
1.2pVCE架構(gòu)設(shè)計(jì)
為實(shí)現(xiàn)上述目標(biāo),我們提出圖1所示的pVCE架構(gòu)設(shè)計(jì)。學(xué)生參與課程實(shí)驗(yàn)時(shí)能選擇任意一臺(tái)部署了Xen/KVM虛擬化平臺(tái)的節(jié)點(diǎn)使用其個(gè)性化虛擬機(jī),虛擬機(jī)安裝了滿足課程實(shí)驗(yàn)需求的操作系統(tǒng)和應(yīng)用軟件。啟動(dòng)虛擬機(jī)需要主鏡像和子鏡像兩部分,其中主鏡像文件包含課程實(shí)驗(yàn)要求的系統(tǒng)和軟件,子鏡像文件則存儲(chǔ)學(xué)生個(gè)性化的數(shù)據(jù)(包括個(gè)性化軟件和用戶數(shù)據(jù)等)。各節(jié)點(diǎn)都存儲(chǔ)各門(mén)課程的主鏡像,子鏡像則以鏡像資源池的方式保存在存儲(chǔ)服務(wù)器上。主鏡像與子鏡像分離存儲(chǔ),使得學(xué)生使用虛擬機(jī)服務(wù)時(shí)可靈活選擇計(jì)算節(jié)點(diǎn)。由于子鏡像文件通常較小,用戶也可把它拷貝到u盤(pán)以備份、恢復(fù)使用其個(gè)性化環(huán)境。為提升實(shí)驗(yàn)教學(xué)中心的資源利用率,在節(jié)點(diǎn)中也運(yùn)行遠(yuǎn)程用戶的個(gè)性化虛擬機(jī),我們提供接口支持用戶從外部訪問(wèn)服務(wù)。pVCE也為教師和管理員提供管理課程、學(xué)生、計(jì)算資源等接口,pVCE部署在服務(wù)器集群上,包括鏡像管理模塊、虛擬機(jī)管理模塊和元數(shù)據(jù)管理模塊。
鏡像管理模塊管理各節(jié)點(diǎn)上本地鏡像文件庫(kù)的主鏡像組織、存儲(chǔ)服務(wù)器中的子鏡像文件庫(kù)、子鏡像池中子鏡像的部署和虛擬機(jī)鏡像的文件系統(tǒng)。虛擬機(jī)管理模塊管理各節(jié)點(diǎn)上運(yùn)行的虛擬機(jī),如管理虛擬機(jī)運(yùn)行,創(chuàng)建虛擬機(jī)快照,遷移虛擬機(jī)并為本地和遠(yuǎn)程用戶提供統(tǒng)一的虛擬機(jī)管理接口。元數(shù)據(jù)管理模塊管理著數(shù)據(jù)庫(kù)服務(wù)器中存儲(chǔ)的pVCE各對(duì)象信息(如學(xué)生、教師、節(jié)點(diǎn)、虛擬機(jī))及對(duì)象間的關(guān)系(如選課、學(xué)生個(gè)性化鏡像與課程主鏡像的關(guān)系等)。
各管理模塊間相互協(xié)作,為用戶使用管理接口提供服務(wù)。鏡像管理模塊為虛擬機(jī)管理模塊提供主鏡像和子鏡像;元數(shù)據(jù)管理模塊維護(hù)鏡像管理模塊所管理的課程主鏡像及個(gè)性化子鏡像間的映射關(guān)系;元數(shù)據(jù)管理模塊也維護(hù)虛擬機(jī)管理模塊所管理的學(xué)生個(gè)性化虛擬機(jī)及其相關(guān)鏡像文件間的關(guān)系。pVCE根據(jù)學(xué)生、教師和管理員的不同需求提供3類(lèi)用戶訪問(wèn)接口。學(xué)生主要關(guān)注虛擬機(jī)使用,教師則主要關(guān)注課程主鏡像的配置、部署,而管理員則需要管理整個(gè)pVCE環(huán)境的運(yùn)行狀況。
2.pVCE系統(tǒng)實(shí)現(xiàn)
構(gòu)建pVCE系統(tǒng)首先需要讓計(jì)算機(jī)實(shí)驗(yàn)教學(xué)中心的節(jié)點(diǎn)支持虛擬化并配置存儲(chǔ)服務(wù)器等設(shè)備,還需實(shí)現(xiàn)pVCE服務(wù)軟件的各模塊及用戶接口。
2.1教師對(duì)課程和主鏡像的管理
教師主要參與課程和主鏡像的創(chuàng)建與管理。我們稱安裝有課程要求的操作系統(tǒng)和應(yīng)用軟件的主鏡像為課程鏡像模板。教師使用pVCE的基本流程:認(rèn)證登錄到pVCE服務(wù)器、管理課程基本信息、管理課程主鏡像模板,其中最為關(guān)鍵的問(wèn)題是準(zhǔn)備課程主鏡像模板。
為高效地制備課程主鏡像模板,我們提出鏡像模板樹(shù)的概念。圖2所示為pVCE的鏡像模板樹(shù),其中根節(jié)點(diǎn)為空白鏡像文件;深度為1的節(jié)點(diǎn)為僅安裝了各類(lèi)常見(jiàn)發(fā)行版操作系統(tǒng)的鏡像模板;當(dāng)節(jié)點(diǎn)深度k≥1時(shí),其深度為k+1的子節(jié)點(diǎn)是基于它安裝額外軟件所派生出的鏡像模板,父節(jié)點(diǎn)所包含的軟件集是子節(jié)點(diǎn)軟件集的真子集。我們基于鏡像模板樹(shù)的概念構(gòu)建和組織pVCE課程主鏡像的模板庫(kù)。
教師制備鏡像模板的流程將圍繞模板樹(shù)進(jìn)行。通過(guò)調(diào)研往年課程開(kāi)設(shè)情況,pVCE預(yù)先制備了一些鏡像模板。教師先提交課程模板配置以指明實(shí)驗(yàn)要求的操作系統(tǒng)和軟件集等信息,查詢pVCE鏡像模板樹(shù)。查詢過(guò)程通常能讓教師在pVCE所部署的模板庫(kù)中找到滿足其課程要求的鏡像模板,如匹配失敗,則返回所需鏡像模板的最大真子集模板。教師可選擇兩種方式制備模板:第一種方式為教師在線配置鏡像模板,根據(jù)上述查詢結(jié)果利用該返回模板啟動(dòng)虛擬機(jī),只需再安裝少量軟件就能完成鏡像模板的制備,從而提高制備模板的效率;第二種方式是教師獨(dú)立制備鏡像模板,然后上傳到pVCE鏡像庫(kù),經(jīng)過(guò)鏡像管理模塊轉(zhuǎn)換格式加入到模板庫(kù),支持上傳的鏡像格式有RAW、IMG、VMDK、QCOW2等。
當(dāng)課程鏡像模板制備完成,pVCE將分發(fā)到各節(jié)點(diǎn)的本地鏡像文件庫(kù),根據(jù)其所屬教師和課程存儲(chǔ)為/localTemps/teacherlD/courselD/templateName.img,由元數(shù)據(jù)管理模塊維護(hù)課程鏡像模板與教師、課程等對(duì)象之間的關(guān)系。
2.2學(xué)生使用和管理個(gè)性化虛擬機(jī)
pVCE為學(xué)生提供使用和管理虛擬機(jī)的功能,運(yùn)行虛擬機(jī)需要課程主鏡像模板和個(gè)性化子鏡像。當(dāng)確定課程參與學(xué)生名單后,pVCE基于課程主鏡像為每一學(xué)生創(chuàng)建QCOW2類(lèi)型的子鏡像。如圖3所示,學(xué)生有兩種使用個(gè)性化虛擬機(jī)的方式:客戶端和瀏覽器。
學(xué)生通過(guò)客戶端使用個(gè)性化虛擬機(jī)的基本流程:①認(rèn)證登錄到pVCE服務(wù)器;②選擇當(dāng)前課程;③通過(guò)交互界面查看與管理虛擬機(jī)狀態(tài);④通過(guò)Spice客戶端或VNCViewer等連接到虛擬機(jī)桌面進(jìn)行課程實(shí)驗(yàn)。學(xué)生也可通過(guò)瀏覽器使用其個(gè)性化虛擬機(jī):①在pVCE Web服務(wù)主頁(yè)上完成認(rèn)證登錄;②選擇當(dāng)前課程;③查看及管理個(gè)性化虛擬機(jī);④在pVCE Web服務(wù)頁(yè)面獲取虛擬機(jī)桌面;⑤在瀏覽器中使用虛擬機(jī)。
學(xué)生使用個(gè)性化虛擬機(jī)的流程主要涉及3個(gè)關(guān)鍵問(wèn)題:管理虛擬機(jī)Qcow2鏡像、控制虛擬機(jī)以及連接虛擬機(jī)桌面。
管理QCOW2鏡像包括兩方面:一方面需管理QCOW2鏡像文件系統(tǒng),pVCE鏡像管理模塊基于libguestfs API(libguestfs是一組訪問(wèn)和修改虛擬機(jī)鏡像文件的API)和qemu-img等工具管理QCOW2文件,支持查看與編輯鏡像中的文件、監(jiān)測(cè)鏡像文件系統(tǒng)的空閑狀況等;另一方面需維護(hù)學(xué)生QCOW2鏡像與課程鏡像模板問(wèn)的關(guān)系,根據(jù)學(xué)生和課程信息將個(gè)性化子鏡像存儲(chǔ)為/gluster/studentlD/courseID/QCOW2Name,QCOW2,并由元數(shù)據(jù)管理模塊維護(hù)鏡像、學(xué)生和課程間的關(guān)系。
虛擬機(jī)控制包括虛擬機(jī)電源管理、虛擬機(jī)鏡像快照管理、虛擬機(jī)遷移等方面。pVCE虛擬機(jī)管理模塊通過(guò)libvirt API實(shí)現(xiàn)對(duì)虛擬機(jī)的控制,能支持Xen/KVM等多種虛擬化平臺(tái)。
連接虛擬機(jī)桌面,學(xué)生通過(guò)客戶端使用時(shí)可通過(guò)各節(jié)點(diǎn)上已安裝的Spice、VNCViewer等pVCE客戶端連接虛擬機(jī)桌面或者采用ssh方式使用虛擬機(jī),也可以通過(guò)其他遠(yuǎn)程桌面訪問(wèn)工具(如Windows遠(yuǎn)程桌面)連接虛擬機(jī)桌面。對(duì)于Web訪問(wèn)方式,我們集成了noVNC、spice-html5等工具支持學(xué)生不用安裝任何軟件,僅通過(guò)瀏覽器便可直接使用虛擬機(jī)。
2.3管理員監(jiān)控管理pVCE集群
管理員在pVCE中主要參與以下3方面的工作。
(1)維護(hù)鏡像模板庫(kù)。通過(guò)調(diào)研以往課程實(shí)驗(yàn)環(huán)境對(duì)操作系統(tǒng)和軟件的需求,管理員將預(yù)先制備一部分鏡像模板以初始化pVCE鏡像模板庫(kù)。
(2)管理pVCE系統(tǒng)中所有對(duì)象及對(duì)象間的關(guān)系并控制對(duì)象的生命周期。圖4的類(lèi)圖描述了pVCE系統(tǒng)的主要類(lèi),展示了類(lèi)之間的關(guān)系。管理員通過(guò)交互界面,利用元數(shù)據(jù)管理模塊對(duì)pVCE系統(tǒng)進(jìn)行管理。
(3)監(jiān)控pVCE系統(tǒng)。虛擬機(jī)管理模塊和鏡像管理模塊負(fù)責(zé)記錄系統(tǒng)信息(如節(jié)點(diǎn)負(fù)載狀況、虛擬機(jī)運(yùn)行狀態(tài)和鏡像模板庫(kù)的容量狀況等),以幫助系統(tǒng)開(kāi)發(fā)人員、管理員優(yōu)化pVCE系統(tǒng)運(yùn)行,如pVCE能圖形化地展示出各節(jié)點(diǎn)的負(fù)載情況,方便管理員遷移某些虛擬機(jī),以平衡系統(tǒng)負(fù)載。
3.部署pVCE系統(tǒng)
目前,北京大學(xué)計(jì)算機(jī)實(shí)驗(yàn)教學(xué)中心共投入22臺(tái)計(jì)算機(jī)用于構(gòu)建pVCE,其中20臺(tái)計(jì)算節(jié)點(diǎn)供學(xué)生參與課程實(shí)驗(yàn)教學(xué)活動(dòng)時(shí)使用,另有1臺(tái)用做pVCE服務(wù)器,1臺(tái)作為備用節(jié)點(diǎn)。同時(shí),20臺(tái)計(jì)算節(jié)點(diǎn)也被部署為Gluster分布式存儲(chǔ)服務(wù)集群,用來(lái)存儲(chǔ)學(xué)生的個(gè)性化QCOW2鏡像。學(xué)生能在任意節(jié)點(diǎn)上啟動(dòng)其虛擬機(jī),不受固定座位的限制,自由地訪問(wèn)其個(gè)性化數(shù)據(jù)。22臺(tái)節(jié)點(diǎn)均安裝了CentOS 6,4操作系統(tǒng)及KVM構(gòu)建虛擬化平臺(tái)。計(jì)算節(jié)點(diǎn)硬件配置信息見(jiàn)表1,pVCE集群軟件配置見(jiàn)表2。
目前,我們?cè)趐VCE中開(kāi)設(shè)了網(wǎng)絡(luò)存儲(chǔ)和系統(tǒng)虛擬化、計(jì)算概論課程,可以支持學(xué)生參與其中并使用各自的個(gè)性化虛擬機(jī)上機(jī)實(shí)驗(yàn)。每門(mén)課程為每位學(xué)生提供3臺(tái)虛擬機(jī),分別運(yùn)行CentOS 6.4、Ubuntu 13.04和Window 7操作系統(tǒng)。我們從學(xué)生、教師那里得到了良好的反饋結(jié)果,pVCE能支持完成實(shí)驗(yàn)教學(xué)任務(wù),滿足用戶對(duì)個(gè)性化實(shí)驗(yàn)環(huán)境的需求且使用便捷,便于管理。我們還對(duì)部署的pVCE實(shí)例中虛擬機(jī)響應(yīng)時(shí)間進(jìn)行了測(cè)試。20臺(tái)虛擬機(jī)(vm1-vm20)同時(shí)啟動(dòng)時(shí)間如圖5所示,每臺(tái)虛擬機(jī)都能快速地啟動(dòng)。