■ 唐山市路南區(qū)教育局 黃健
編者按:在某些情況下,單位可能會(huì)同時(shí)用到FTP 和NFS,筆者遇到在該場(chǎng)景下,某單位的在線教學(xué)平臺(tái)遭遇FTP 不能共享NFS 文件夾的問(wèn)題。本文對(duì)該問(wèn)題進(jìn)行了解析。
FTP 和NFS提供的都是文件共享服務(wù),應(yīng)用都比較廣泛。不過(guò),二者應(yīng)用場(chǎng)景的區(qū)別還是比較大的。
FTP 主要應(yīng)用于互聯(lián)網(wǎng)環(huán)境,允許未知客戶端訪問(wèn),客戶端只需通過(guò)IP 地址、端口以及分配的用戶賬戶即可訪問(wèn)FTP 服務(wù)器,沒(méi)有其它特殊要求。NFS 多用于幾臺(tái)或幾十臺(tái)計(jì)算機(jī)共享存儲(chǔ)空間。一般情況下,這些計(jì)算機(jī)必須獲得NFS 服務(wù)器授權(quán),才能訪問(wèn)NFS 共享存儲(chǔ)空間。
盡管FTP 和NFS 同時(shí)應(yīng)用的案例不多見,在林林總總的實(shí)際生產(chǎn)環(huán)境中,總會(huì)出現(xiàn)FTP 和NFS 一起應(yīng)用的場(chǎng)景。筆者在部署某單位的在線教學(xué)平臺(tái)時(shí),就不得不面臨這樣的場(chǎng)景,并遭遇FTP 不能共享NFS 文件夾的問(wèn)題。
該單位的在線教學(xué)平臺(tái)由一系列負(fù)載均衡服務(wù)器、緩存網(wǎng)絡(luò)服務(wù)器、下載服務(wù)器、上傳服務(wù)器、視頻轉(zhuǎn)換服務(wù)器、Web 服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器及直播服務(wù)器構(gòu)成。每類服務(wù)器以集群方式對(duì)外提供服務(wù),以滿足在線考試等高并發(fā)需求。平臺(tái)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1 所示。
該單位通過(guò)租用某云平臺(tái)的主機(jī)來(lái)部署上述服務(wù),共租用了23 臺(tái)云主機(jī),每臺(tái)云主機(jī)均默認(rèn)配備了一塊40 GB的系統(tǒng)盤。該單位還租用了23 塊云硬盤,其中1 塊20 TB云硬盤用來(lái)存儲(chǔ)非結(jié)構(gòu)化的教學(xué)資源,掛在在部署NFS服務(wù)器的云主機(jī)上,23 臺(tái)云主機(jī)以NFS 文件共享方式共享該20 TB的存儲(chǔ)空間。1塊2 TB 的云硬盤掛在在部署數(shù)據(jù)庫(kù)服務(wù)器的云主機(jī)上,用來(lái)存放在線教學(xué)平臺(tái)結(jié)構(gòu)化的數(shù)據(jù)(數(shù)據(jù)庫(kù))。其它21 塊云硬盤都只有300 GB 存儲(chǔ)空間,用于存放平臺(tái)程序及其數(shù)據(jù)。
該在線教學(xué)平臺(tái)以FTP方式對(duì)外提供上傳、下載及網(wǎng)盤服務(wù),因此需要在Web 服務(wù)器、上傳服務(wù)器、下載服務(wù)器上部署FTP 服務(wù)。筆者在這些服務(wù)器時(shí)部署FTP 服務(wù)時(shí),需為某用戶賬戶指定的同一個(gè)文件夾為作為FTP 共享文件夾,也就是需要NFS 文件夾。
圖1 單位在線教學(xué)平臺(tái)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖
筆者先將NFS 共享文件夾掛載成本地磁盤,再按需求指定FTP 共享文件夾,同時(shí)授予指定用戶賬戶文件“讀取”“寫入”“刪除”“追加”權(quán)限,授予指定用戶賬戶目錄“創(chuàng)建”“刪除”“列表”及子目錄對(duì)應(yīng)權(quán)限(如圖2 所示)。
配置好FTP 服務(wù)器后,筆者使用FTP 客戶端工具“Leap FTP”上傳文件,以此來(lái)測(cè)試FTP 服務(wù)。經(jīng)測(cè)試,使用Leap FTP 可以連接到FTP 服務(wù)器,可以訪問(wèn)到FTP 共享文件夾,只是在上傳文件時(shí)報(bào)“can't access file”錯(cuò)誤。如圖3所示。
出現(xiàn)“不能訪問(wèn)文件”錯(cuò)誤的原因有很多,在排除文件被占用等情況后,筆者開始懷疑是不是NFS 權(quán)限設(shè)置問(wèn)題。NFS 服務(wù)不具備用戶驗(yàn)證功能,NFS 服務(wù)器會(huì)將客戶端的訪問(wèn)映射為匿名用戶nfsnobody。因此,在配置NFS 共享目錄時(shí),需要為該目錄配置相應(yīng)的訪問(wèn)權(quán)限。
圖2 對(duì)指定用戶賬戶文件授予各種權(quán)限
圖3 使用Leap FTP 連接FTP 服務(wù)器并訪問(wèn)FTP 共享文件夾
經(jīng)檢查,筆者已將NFS 共享目錄指定為nfsnobody 所有,而且通過(guò)Windows 自帶的文件資源管理器可以打開此共享文件夾,可以復(fù)制、粘貼和創(chuàng)建文件,可以創(chuàng)建和刪除文件夾,說(shuō)明上面出現(xiàn)的錯(cuò)誤不是NFS 權(quán)限的問(wèn)題。
根據(jù)NFS 用戶身份映射原理,如果客戶端當(dāng)前所使用的用戶身份是root,默認(rèn)情況下,當(dāng)客戶端訪問(wèn)NFS 服務(wù)器時(shí),在NFS 服務(wù)器會(huì)將其用戶身份映射為nfsnobody。筆者對(duì)比了客戶端上加載NFS 所必需的“Client for NFS”服務(wù)和FTP 服務(wù)器上的“FileZilla Server FTP server”服務(wù)(如圖4 所示)。
二者在登錄身份上有明顯差別,“Client for NFS”服務(wù)的登錄身份是“網(wǎng)絡(luò)服務(wù)”,而“FileZilla Server FTP server”服務(wù)的登錄身份是“本地系統(tǒng)賬戶”。
筆者由此猜測(cè),是不是正常訪問(wèn)NFS 文件夾時(shí),依賴的是“Client for NFS”服務(wù),該服務(wù)使用“root”身份訪問(wèn)NFS 服務(wù)器,NFS 服務(wù)器再將其身份映射為nfsnobody。
如果將NFS 共享文件夾裝載成本地磁盤后,在FTP 服務(wù)器上再將其所指定為FTP共享文件夾,而“FileZilla Server FTP server”服務(wù)則是以本地系統(tǒng)賬戶身份訪問(wèn)該文件夾,并不是“Client for NFS”服務(wù)訪問(wèn)的NFS 文件夾。因此,客戶端訪問(wèn)NFS服務(wù)器的身份不是“root”。NFS 服務(wù)器將非“root”用戶身份視作其它用戶(other),并不會(huì)將其映射為nfsnobody用戶,這有可能就是前面所報(bào)“can't access file”錯(cuò)誤的原因。
根據(jù)上述分析,在指定FTP 共享文件夾時(shí),如果將所指定的文件夾的路徑由本地路徑改成NFS 共享目錄的路徑,是不是就可以解決共享NFS 目錄的問(wèn)題呢?
圖4 NFS“Client for NFS”服務(wù)和FTP“FileZilla Server FTP server”服務(wù)對(duì)比
圖5 將NFS 共享目錄指定為FTP 共享文件夾
筆者本著試一試的想法,直接將NFS 共享目錄指定為FTP 共享文件夾(如圖5 所示)。
重新指定FTP 共享文件夾后,仍用FTP 客戶端工具leadftp 測(cè)試FTP 服務(wù)。經(jīng)測(cè)試,可以正常上傳和下載文件,不能將NFS 文件夾作為FTP 共享文件夾的問(wèn)題最終得以解決。