姚莉娟,陳 瑋
(成都紡織高等專科學(xué)校信息中心,四川 成都 611731)
隨著計(jì)算機(jī)技術(shù)的發(fā)展,高校采用計(jì)算機(jī)進(jìn)行實(shí)訓(xùn)的課程越來(lái)越多,對(duì)計(jì)算機(jī)練習(xí)的要求越來(lái)越平常,課程工程文件越來(lái)越復(fù)雜。 最近幾年,計(jì)算機(jī)實(shí)訓(xùn)課程的機(jī)房多采用桌面云技術(shù)[1],云技術(shù)的使用極大降低了計(jì)算機(jī)實(shí)訓(xùn)室硬件維護(hù)、應(yīng)用軟件沖突配置方面的繁重工作,極大程度提升了實(shí)訓(xùn)課程的效率,優(yōu)化了學(xué)生體驗(yàn)。 但現(xiàn)在的云計(jì)算系統(tǒng)中的存儲(chǔ)系統(tǒng)并未設(shè)計(jì)獨(dú)立云盤化[2],各個(gè)同學(xué)的項(xiàng)目文件保存于共享存儲(chǔ)結(jié)構(gòu)中。 因此,在同學(xué)交叉使用電腦的情況下,個(gè)人項(xiàng)目文件易被覆蓋、誤刪、甚至丟失。 加之在實(shí)訓(xùn)室和個(gè)人電腦間進(jìn)行拷貝操作也極不方便,為同學(xué)們課前、課后練習(xí)帶來(lái)了諸多不便。
為解決以上學(xué)生課前課后計(jì)算機(jī)實(shí)訓(xùn)中工程文件保存、移動(dòng)不便的問(wèn)題,結(jié)合公共計(jì)算機(jī)課實(shí)訓(xùn)中網(wǎng)絡(luò)存儲(chǔ)的需求特點(diǎn),本文設(shè)計(jì)并實(shí)現(xiàn)了基于 Samba[3]和Web Service[4-5]的共享網(wǎng)盤,實(shí)現(xiàn)了工程文件在不同環(huán)境的無(wú)縫使用。
計(jì)算機(jī)實(shí)訓(xùn)課程存儲(chǔ)平臺(tái),主要用于學(xué)生云桌面系統(tǒng)在進(jìn)行實(shí)訓(xùn)課時(shí),實(shí)訓(xùn)工程文件的存放,服務(wù)器共享存儲(chǔ)空間。
(1)用戶獨(dú)立管理自身存儲(chǔ),不互相干擾。 (2)工程文件一般對(duì)存儲(chǔ)空間要求不大,但由于人數(shù)眾多,需要存儲(chǔ)空間能夠進(jìn)行動(dòng)態(tài)拓展。 (3)由于學(xué)生上機(jī)位置、時(shí)間不限,同時(shí)要求課前、課后進(jìn)行實(shí)訓(xùn),因此需要能夠在校內(nèi)進(jìn)行網(wǎng)絡(luò)訪問(wèn),校外則通過(guò)WEB 服務(wù)進(jìn)行訪問(wèn)。 (4)另外,由于使用同學(xué)大多是一年級(jí)的新生,對(duì)電腦的操作使用還不夠熟練,系統(tǒng)需要支撐在Windows 操作系統(tǒng)下的簡(jiǎn)單快速的掛載。
Samba 是基于 NetBIOS 的 Linux 和 Windows 系統(tǒng)在網(wǎng)絡(luò)中進(jìn)行文件共享的協(xié)議,Linux 中運(yùn)行Samba 服務(wù)器,Windows 作為客戶端對(duì)網(wǎng)絡(luò)上的文件進(jìn)行訪問(wèn)。
該協(xié)議用于客戶服務(wù)器模式的開發(fā)。 Windows 用戶通過(guò)類似于IP 地址或主機(jī)名、共享目錄名的方式將共享目錄映射到本地,這樣就可以像訪問(wèn)本地目錄一樣操作網(wǎng)絡(luò)上共享的目錄和文件,對(duì)初學(xué)者來(lái)說(shuō)尤為方便。
在Web2.0 時(shí)代,Web 已經(jīng)成為因特網(wǎng)上的主要內(nèi)容。 而Web Service 是一種分布式的計(jì)算模式,是指在因特網(wǎng)上通過(guò)定義好的,能被其他軟件或者服務(wù)調(diào)用的功能組件。 Web 服務(wù)能夠?qū)崿F(xiàn)跨平臺(tái)應(yīng)用,利用HTTP,SOAP,RESTful,XML 等規(guī)范協(xié)議,提供高效、重復(fù)利用率高以及技術(shù)耦合度低等特點(diǎn)的服務(wù),因此在網(wǎng)絡(luò)上應(yīng)用非常廣泛。
Windows 系統(tǒng)一直以來(lái)依靠 NetBIOS 來(lái)發(fā)現(xiàn)其他機(jī)器。 由于SMBv1 出現(xiàn)了安全問(wèn)題,因而Windows 系統(tǒng)中默認(rèn)禁用了SMBv1,但是可以采用Web Service Discovery 來(lái)發(fā)現(xiàn) Samba 服務(wù)。
本項(xiàng)目一方面用Web Service 來(lái)對(duì)用戶管理界面進(jìn)行設(shè)計(jì),一方面利用其來(lái)發(fā)現(xiàn)Samba 服務(wù)。
基于SAMBA 和Web 服務(wù)的共享網(wǎng)盤系統(tǒng)構(gòu)架,如圖1 所示。
圖1 中可見(jiàn)實(shí)訓(xùn)課存儲(chǔ)平臺(tái)由以下2 個(gè)模塊構(gòu)成:Samba 后臺(tái)服務(wù)和云服務(wù)器端。 云服務(wù)器端包括中間件、Samba 接口、提供給用戶的Web 服務(wù)。

圖1 基于SAMBA 和WEB 服務(wù)的共享網(wǎng)盤系統(tǒng)構(gòu)架
整個(gè)平臺(tái)部署在CentOS 系統(tǒng)中,文件系統(tǒng)整體采用邏輯卷管理(LVM),其構(gòu)架在物理卷之上,通過(guò)物理磁盤的增加任意調(diào)整邏輯卷的存儲(chǔ)空間大小。 通過(guò)部署定期檢測(cè)策略,可以在存儲(chǔ)空間達(dá)到門限時(shí)提前發(fā)出提醒。
系統(tǒng)部署SAMBA 后臺(tái)服務(wù)程序,提供共享存儲(chǔ)服務(wù)。
云服務(wù)器端采用 Node.js 承載,Node.js 采用JavaScript 開發(fā),語(yǔ)法非常簡(jiǎn)單,模塊眾多,是利用快速邏輯的一種簡(jiǎn)單應(yīng)用。 由于采用高效的V8 解釋引擎,能夠很好保證其作為服務(wù)器的運(yùn)行效率。
JavaScript 開發(fā)的中間件幫助對(duì)Samba 訪問(wèn)的集中實(shí)現(xiàn),該中間件面向用戶主要提供用戶目錄管理,包括對(duì)管理員提供主要用戶創(chuàng)建、目錄建立的日常管理功能。
Node.js 部署了Web 服務(wù)對(duì)外向網(wǎng)絡(luò),向用戶提供文件管理、Web 文件查看、刪除等功能服務(wù)。 學(xué)生的計(jì)算機(jī)可以通過(guò)瀏覽器瀏覽文件,下載文件進(jìn)行操作實(shí)訓(xùn)。 更通常的做法是通過(guò)下載自動(dòng)配置腳本,將遠(yuǎn)程目錄映射到本地進(jìn)行操作實(shí)訓(xùn)。
出于安全考慮,Node.js 針對(duì)管理工作提供了本地服務(wù)端口,管理界面只能在本地登錄,工作只能在服務(wù)器本地執(zhí)行。 完成對(duì)用戶數(shù)量的增減進(jìn)行批量操作、目錄的建立等,該功能通過(guò)直接調(diào)用實(shí)現(xiàn)的Samba 接口來(lái)完成管理功能。
由于Samba 的Web 管理工具已經(jīng)與新版差距比較大,因此利用Samba 的管理工具命令集開發(fā)了Samba接口。 該接口是由Shell 腳本實(shí)現(xiàn)的一系列調(diào)用Samba的Shell 管理工具來(lái)完成特定功能的函數(shù)集組成。
Samba 接口功能劃分,如圖2 所示。

圖2 基于腳本的Samba 接口功能模塊
基于Shell 腳本的管理函數(shù)集合,被部署在管理工具集中,通過(guò)對(duì)Node.js 的執(zhí)行權(quán)限的提升,以及引入Node.js 的Shell 腳本執(zhí)行模塊完成執(zhí)行操作。
進(jìn)行Samba 客戶端的訪問(wèn)需要用到大量的Windows 管理員命令,才能在控制終端完成操作。 即使是熟練的使用者都難以流暢地使用,更何況該系統(tǒng)面向的主要是一年級(jí)的新生。 為了簡(jiǎn)化初學(xué)者使用,文章設(shè)計(jì)了Windows 端自動(dòng)配置腳本。
Windows 腳本是系統(tǒng)提供了一種腳本環(huán)境,在這個(gè)環(huán)境中,預(yù)定義了一些對(duì)象,包括管理員命令。 通過(guò)這些對(duì)象可以訪問(wèn)其范圍內(nèi)的方法和屬性,通常也通過(guò)使用一種解釋執(zhí)行的語(yǔ)言來(lái)操作。
服務(wù)器端配置有自動(dòng)配置腳本模板,當(dāng)用戶登錄到Web 界面時(shí),在下載配置腳本時(shí),服務(wù)器就會(huì)自動(dòng)生成,訪問(wèn)必須有的目錄等內(nèi)容。 用戶下載該文件后,在本地以管理員運(yùn)行的方式執(zhí)行該腳本,快速進(jìn)行共享目錄的掛載和移除。
在學(xué)校環(huán)境中對(duì)該計(jì)算機(jī)實(shí)訓(xùn)課存儲(chǔ)平臺(tái)進(jìn)行了初步部署和試運(yùn)行,采用的服務(wù)器是Intel 至強(qiáng)E5-1603 ,主頻2.8 GHz,內(nèi)存16 GB,SATA 磁盤空間1T,沒(méi)有采用SSD 緩存,Intel 網(wǎng)卡通過(guò)千兆電口連接到48口千兆交換機(jī)。 系統(tǒng)采用CentOS 8 x86_64。 系統(tǒng)在初始化時(shí),預(yù)置了120 個(gè)用戶。
首先進(jìn)行了遠(yuǎn)程目錄的讀寫性能測(cè)試,通過(guò)將文件拷貝到共享目錄和將拷貝文件到本地進(jìn)行測(cè)試。 為了計(jì)算速度方便記錄,采用了約1G 的大文件,測(cè)試得到平均讀寫速度為20 MB/s 左右,可以看出讀寫主要受限于磁盤緩存等,滿足實(shí)訓(xùn)工程中的一般要求。
另外文章對(duì)并發(fā)情況下的遠(yuǎn)程目錄讀寫進(jìn)行了測(cè)試,同時(shí)啟動(dòng)50 個(gè)用戶進(jìn)行讀寫測(cè)試,采用64 MB 左右的文件進(jìn)行,測(cè)得用戶端平均速度約為1.8 MB/s。滿足一般實(shí)訓(xùn)要求。
由于日常的實(shí)訓(xùn)課程包含的文件都不大,例如計(jì)算機(jī)基礎(chǔ)、C 語(yǔ)言程序設(shè)計(jì)、工程制圖、網(wǎng)頁(yè)制作等,但是這些實(shí)訓(xùn)課程內(nèi)文件數(shù)目非常多。 針對(duì)并發(fā)、文件數(shù)目多的情況下對(duì)遠(yuǎn)程目錄讀寫進(jìn)行了測(cè)試,同樣同時(shí)啟動(dòng)50 個(gè)用戶進(jìn)行讀寫測(cè)試,采用64 MB 左右的文件夾包含100 個(gè)左右的文件。 進(jìn)行測(cè)試,測(cè)得用戶端平均速度約為2.0 MB/s,差別不大,可滿足一般實(shí)訓(xùn)要求。
需要注意的是用戶端平均運(yùn)行速度在校園網(wǎng)環(huán)境下性能有所下降,并發(fā)數(shù)減少,基本能夠滿足校內(nèi)宿舍和教室訪問(wèn)的需求,如果采用高緩存或者是SSD 的服務(wù)器部署能一定程度提高性能。
本文研究公共計(jì)算機(jī)課實(shí)訓(xùn)中工程文件網(wǎng)絡(luò)存儲(chǔ)的需求特點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了基于Samba 的共享網(wǎng)盤系統(tǒng),實(shí)現(xiàn)了實(shí)訓(xùn)工程文件在不同環(huán)境的方便無(wú)縫使用。
實(shí)驗(yàn)系統(tǒng)測(cè)試表明,該方案可以實(shí)現(xiàn)學(xué)生對(duì)實(shí)訓(xùn)文件的存儲(chǔ)需求,速度能夠滿足日常需要,簡(jiǎn)單易用,達(dá)到了預(yù)期設(shè)計(jì)目標(biāo)。 下一步還將繼續(xù)優(yōu)化設(shè)計(jì),通過(guò)“云”、分布式等方式探索高并發(fā)能力的方案。