姚莉娟,陳 瑋
(成都紡織高等??茖W校信息中心,四川 成都 611731)
隨著計算機技術的發(fā)展,高校采用計算機進行實訓的課程越來越多,對計算機練習的要求越來越平常,課程工程文件越來越復雜。 最近幾年,計算機實訓課程的機房多采用桌面云技術[1],云技術的使用極大降低了計算機實訓室硬件維護、應用軟件沖突配置方面的繁重工作,極大程度提升了實訓課程的效率,優(yōu)化了學生體驗。 但現(xiàn)在的云計算系統(tǒng)中的存儲系統(tǒng)并未設計獨立云盤化[2],各個同學的項目文件保存于共享存儲結構中。 因此,在同學交叉使用電腦的情況下,個人項目文件易被覆蓋、誤刪、甚至丟失。 加之在實訓室和個人電腦間進行拷貝操作也極不方便,為同學們課前、課后練習帶來了諸多不便。
為解決以上學生課前課后計算機實訓中工程文件保存、移動不便的問題,結合公共計算機課實訓中網(wǎng)絡存儲的需求特點,本文設計并實現(xiàn)了基于 Samba[3]和Web Service[4-5]的共享網(wǎng)盤,實現(xiàn)了工程文件在不同環(huán)境的無縫使用。
計算機實訓課程存儲平臺,主要用于學生云桌面系統(tǒng)在進行實訓課時,實訓工程文件的存放,服務器共享存儲空間。
(1)用戶獨立管理自身存儲,不互相干擾。 (2)工程文件一般對存儲空間要求不大,但由于人數(shù)眾多,需要存儲空間能夠進行動態(tài)拓展。 (3)由于學生上機位置、時間不限,同時要求課前、課后進行實訓,因此需要能夠在校內(nèi)進行網(wǎng)絡訪問,校外則通過WEB 服務進行訪問。 (4)另外,由于使用同學大多是一年級的新生,對電腦的操作使用還不夠熟練,系統(tǒng)需要支撐在Windows 操作系統(tǒng)下的簡單快速的掛載。
Samba 是基于 NetBIOS 的 Linux 和 Windows 系統(tǒng)在網(wǎng)絡中進行文件共享的協(xié)議,Linux 中運行Samba 服務器,Windows 作為客戶端對網(wǎng)絡上的文件進行訪問。
該協(xié)議用于客戶服務器模式的開發(fā)。 Windows 用戶通過類似于IP 地址或主機名、共享目錄名的方式將共享目錄映射到本地,這樣就可以像訪問本地目錄一樣操作網(wǎng)絡上共享的目錄和文件,對初學者來說尤為方便。
在Web2.0 時代,Web 已經(jīng)成為因特網(wǎng)上的主要內(nèi)容。 而Web Service 是一種分布式的計算模式,是指在因特網(wǎng)上通過定義好的,能被其他軟件或者服務調(diào)用的功能組件。 Web 服務能夠?qū)崿F(xiàn)跨平臺應用,利用HTTP,SOAP,RESTful,XML 等規(guī)范協(xié)議,提供高效、重復利用率高以及技術耦合度低等特點的服務,因此在網(wǎng)絡上應用非常廣泛。
Windows 系統(tǒng)一直以來依靠 NetBIOS 來發(fā)現(xiàn)其他機器。 由于SMBv1 出現(xiàn)了安全問題,因而Windows 系統(tǒng)中默認禁用了SMBv1,但是可以采用Web Service Discovery 來發(fā)現(xiàn) Samba 服務。
本項目一方面用Web Service 來對用戶管理界面進行設計,一方面利用其來發(fā)現(xiàn)Samba 服務。
基于SAMBA 和Web 服務的共享網(wǎng)盤系統(tǒng)構架,如圖1 所示。
圖1 中可見實訓課存儲平臺由以下2 個模塊構成:Samba 后臺服務和云服務器端。 云服務器端包括中間件、Samba 接口、提供給用戶的Web 服務。
圖1 基于SAMBA 和WEB 服務的共享網(wǎng)盤系統(tǒng)構架
整個平臺部署在CentOS 系統(tǒng)中,文件系統(tǒng)整體采用邏輯卷管理(LVM),其構架在物理卷之上,通過物理磁盤的增加任意調(diào)整邏輯卷的存儲空間大小。 通過部署定期檢測策略,可以在存儲空間達到門限時提前發(fā)出提醒。
系統(tǒng)部署SAMBA 后臺服務程序,提供共享存儲服務。
云服務器端采用 Node.js 承載,Node.js 采用JavaScript 開發(fā),語法非常簡單,模塊眾多,是利用快速邏輯的一種簡單應用。 由于采用高效的V8 解釋引擎,能夠很好保證其作為服務器的運行效率。
JavaScript 開發(fā)的中間件幫助對Samba 訪問的集中實現(xiàn),該中間件面向用戶主要提供用戶目錄管理,包括對管理員提供主要用戶創(chuàng)建、目錄建立的日常管理功能。
Node.js 部署了Web 服務對外向網(wǎng)絡,向用戶提供文件管理、Web 文件查看、刪除等功能服務。 學生的計算機可以通過瀏覽器瀏覽文件,下載文件進行操作實訓。 更通常的做法是通過下載自動配置腳本,將遠程目錄映射到本地進行操作實訓。
出于安全考慮,Node.js 針對管理工作提供了本地服務端口,管理界面只能在本地登錄,工作只能在服務器本地執(zhí)行。 完成對用戶數(shù)量的增減進行批量操作、目錄的建立等,該功能通過直接調(diào)用實現(xiàn)的Samba 接口來完成管理功能。
由于Samba 的Web 管理工具已經(jīng)與新版差距比較大,因此利用Samba 的管理工具命令集開發(fā)了Samba接口。 該接口是由Shell 腳本實現(xiàn)的一系列調(diào)用Samba的Shell 管理工具來完成特定功能的函數(shù)集組成。
Samba 接口功能劃分,如圖2 所示。
圖2 基于腳本的Samba 接口功能模塊
基于Shell 腳本的管理函數(shù)集合,被部署在管理工具集中,通過對Node.js 的執(zhí)行權限的提升,以及引入Node.js 的Shell 腳本執(zhí)行模塊完成執(zhí)行操作。
進行Samba 客戶端的訪問需要用到大量的Windows 管理員命令,才能在控制終端完成操作。 即使是熟練的使用者都難以流暢地使用,更何況該系統(tǒng)面向的主要是一年級的新生。 為了簡化初學者使用,文章設計了Windows 端自動配置腳本。
Windows 腳本是系統(tǒng)提供了一種腳本環(huán)境,在這個環(huán)境中,預定義了一些對象,包括管理員命令。 通過這些對象可以訪問其范圍內(nèi)的方法和屬性,通常也通過使用一種解釋執(zhí)行的語言來操作。
服務器端配置有自動配置腳本模板,當用戶登錄到Web 界面時,在下載配置腳本時,服務器就會自動生成,訪問必須有的目錄等內(nèi)容。 用戶下載該文件后,在本地以管理員運行的方式執(zhí)行該腳本,快速進行共享目錄的掛載和移除。
在學校環(huán)境中對該計算機實訓課存儲平臺進行了初步部署和試運行,采用的服務器是Intel 至強E5-1603 ,主頻2.8 GHz,內(nèi)存16 GB,SATA 磁盤空間1T,沒有采用SSD 緩存,Intel 網(wǎng)卡通過千兆電口連接到48口千兆交換機。 系統(tǒng)采用CentOS 8 x86_64。 系統(tǒng)在初始化時,預置了120 個用戶。
首先進行了遠程目錄的讀寫性能測試,通過將文件拷貝到共享目錄和將拷貝文件到本地進行測試。 為了計算速度方便記錄,采用了約1G 的大文件,測試得到平均讀寫速度為20 MB/s 左右,可以看出讀寫主要受限于磁盤緩存等,滿足實訓工程中的一般要求。
另外文章對并發(fā)情況下的遠程目錄讀寫進行了測試,同時啟動50 個用戶進行讀寫測試,采用64 MB 左右的文件進行,測得用戶端平均速度約為1.8 MB/s。滿足一般實訓要求。
由于日常的實訓課程包含的文件都不大,例如計算機基礎、C 語言程序設計、工程制圖、網(wǎng)頁制作等,但是這些實訓課程內(nèi)文件數(shù)目非常多。 針對并發(fā)、文件數(shù)目多的情況下對遠程目錄讀寫進行了測試,同樣同時啟動50 個用戶進行讀寫測試,采用64 MB 左右的文件夾包含100 個左右的文件。 進行測試,測得用戶端平均速度約為2.0 MB/s,差別不大,可滿足一般實訓要求。
需要注意的是用戶端平均運行速度在校園網(wǎng)環(huán)境下性能有所下降,并發(fā)數(shù)減少,基本能夠滿足校內(nèi)宿舍和教室訪問的需求,如果采用高緩存或者是SSD 的服務器部署能一定程度提高性能。
本文研究公共計算機課實訓中工程文件網(wǎng)絡存儲的需求特點,設計并實現(xiàn)了基于Samba 的共享網(wǎng)盤系統(tǒng),實現(xiàn)了實訓工程文件在不同環(huán)境的方便無縫使用。
實驗系統(tǒng)測試表明,該方案可以實現(xiàn)學生對實訓文件的存儲需求,速度能夠滿足日常需要,簡單易用,達到了預期設計目標。 下一步還將繼續(xù)優(yōu)化設計,通過“云”、分布式等方式探索高并發(fā)能力的方案。