曹天澤
(杭州師范大學,杭州 311121)
機房供學生教學的電腦都安裝了windows操作系統,在windows系統中體驗Linux系統時共有兩種方案,一種是在windows內安裝虛擬管理軟件VMware Workstation,該方案要求教學電腦內存需8G以上,在運行2G內存Linux虛擬機時才不會對其他軟件的運行有明顯的影響,且VMware Workstation是一款商業收費軟件,每個安裝使用VMware Workstation的教學電腦都要向VMvare公司購買授權許可證。另一種是在遠端服務器的電腦上安裝Linux,教學電腦通過SSH客戶端連接Linux。該方案要求學生熟悉基本的Shell操作命令,但對教學電腦的硬件要求不高,運算負載集中在服務器端。現有許多公司提供此問題的解決方案,但需付費購買昂貴的服務器和工作站,且高度封裝,不利于學生了解底層技術。本研究提出的實訓方案是基于遠端服務器安裝Linux,硬件可以利用淘汰的老PC機,軟件采用開源平臺,無需投入過多成本。
SSH(Secure Shell)是一種基于非對稱加密的網絡協議,在安裝了Linux系統的電腦中安裝SSH協議的服務端軟件后,處于同一網絡的其他電腦可以通過SSH客戶端登錄電腦,通過Shell命令操作該Linux電腦,也可以通過支持SFTP的軟件對該Linux電腦上傳和下載文件。本研究采用的基于Windows的開源SSH客戶端軟件為PuTTY和WinSCP,基于Linux的開源SSH服務端軟件為openssh-server。
KVM[1](Kernel-based Virtual Machine)是Linux系統自帶的內核模塊,此模塊能實現CPU的虛擬化和內存虛擬化。QEMU(quick emulator)是一款免費開源的可執行硬件虛擬的軟件。QEMU-KVM是KVM的開發者對二者封裝后生成的軟件,由KVM負責CPU和內存的虛擬化,QEMU負責其他IO設備的虛擬化。
Libvirt[2]是一套基于C語言的開源虛擬機管理API,它支持KVM、QEMU、Xen等虛擬機化計算, API可以通過編程方式管理虛擬機。virt-manager[3]是紅帽公司推出的一套開源圖形學虛擬機管理軟件,它功能強大,操作簡便。
硬件資源分為三部分:第一部分是頂端的“學生機”,安裝系統為window 7或windows 10操作系統。第二部分為底部“VM服務端”,根據教學人數和本機電腦配置所需臺數。第三部分為右方的“VM管理端”,用來管理VM服務端虛擬機的創建、啟動和關閉。第二部分和第三部分的機器全部安裝Linux系統,推薦使用Ubuntu 16.04以上操作系統。機器需在一個網絡內,相互之間可以連通。

圖1 總體架構圖Fig.1 General structure diagram
整體軟件設計分為以下幾個步驟:(1)在“學生機”中安裝PuTTY和WinSCP;(2)在“VM服務端”安裝KVM-QEMU和附屬軟件,Ubuntu系統在命令行輸入“sudo apt install qemu qemu-kvm libvirt-bin bridge-utils ssh-askpass”后,系統會自動安裝;(3)在“VM服務端”安裝ssh服務端軟件,Ubuntu系統在命令行輸入“sudo apt intall openssh-server”后,由系統自動安裝;(4)在“VM管理端”中安裝virt-manager軟件,Ubuntu系統在命令行輸入“sudo apt install virt-manager”后,由系統自動安裝;(5)在“VM管理端”中配置各個“VM服務端”ssh免密碼登錄功能。首先在命令行輸入命令“ssh-keygen -t rsa”,在VM管理端的home主目錄下的“.ssh”目錄中生成名稱為“id_rsa.pub”的密鑰,然后執行“ssh-copy-id -i ~/.ssh/id_rsa.pub username@ipaddress”命令,其中“ipaddress”需替換為VM服務端的IP地址,“username”需替換為VM服務端Linux系統的賬戶名;(6)在“VM管理端”中啟動virt-manager,通過該軟件菜單欄的“File”->“Add Connection”,在彈出的選項框中分別輸入各“VM服務端”的賬戶名及IP,將各個VM服務端納入VM管理端的管理范圍;(7)在virt-manager中連接任意一個VM服務端,并借助事先下載的LinuxISO鏡像創建VM,內存建議不小于2G,網絡連接選擇“橋接網絡”(bridged networking)。完成VM創建后,通過virt-manager登錄到VM,為VM配置同一網絡的IP信息,并在VM中安裝ssh服務端軟件,Ubuntu系統在命令行輸入“sudo apt intall openssh-server”,由系統自動安裝;按照教學需求虛擬機的數量克隆上一步驟,創建VM,并為克隆的每個VM配置同一網絡的IP信息。
在實訓相關課程時先啟動全部電腦,在VM管理端啟動virt-manager,通過界面操作,啟動每個VM。學生在教學電腦上使用PuTTY或WinSCP軟件,通過輸入對應VM的IP和賬戶名登錄到虛擬機進行實訓操作。
軟件開發課程教學必須理論結合實訓,只有通過動手操作,才能舉一反三的驗證理論。有別于以往計算機課程在windows系統中就可完成從開發到運行以及驗證的全部步驟,大數據軟件開發課程必須基于Linux類系統進行運行驗證。本方案在無需投資的情況下充分利用舊有硬件資源和免費開源軟件,具有易上手,低投入的特點。但部署過程中還有更多優化空間,如通過編寫Linux腳本簡化運維,定制化鏡像的開發,都有待進一步的研究和改進。