楊云
摘要:該文對(duì)NFS工作原理進(jìn)行了詳細(xì)介紹,提出了一種基于NFS文件系統(tǒng)來解決Linux系統(tǒng)間共享資源的解決方案,搭建了一個(gè)實(shí)用的企業(yè)NFS服務(wù)器。實(shí)驗(yàn)結(jié)果證明,該服務(wù)器具有良好的安全性能和可用性。
關(guān)鍵詞:NFS;服務(wù)器;RPC服務(wù)器;守護(hù)進(jìn)程
1NFS服務(wù)器概述
NFS從字面上講是網(wǎng)絡(luò)文件系統(tǒng),英文是Network File System,先是應(yīng)用在UNIX操作系統(tǒng)中的共享資源上,后來被Linux操作系統(tǒng)繼承了下來,并發(fā)揚(yáng)光大。NFS與Windows下的“網(wǎng)上鄰居”十分相似,它允許用戶連接到一個(gè)共享位置,然后像對(duì)待本地硬盤一樣操作。
NFS最早是由Sun公司于1984年開發(fā)出來的,其目的就是讓不同計(jì)算機(jī)、不同操作系統(tǒng)之間可以彼此共享文件。由于NFS使用起來非常方便,因此很快得到了大多數(shù)UNIX/Hnux系統(tǒng)的廣泛支持,而且還被IETE(國際互聯(lián)網(wǎng)工程組)制定為RFCl904、RFCl813和RFC3010標(biāo)準(zhǔn).
如圖1所示為NFS服務(wù)器的工作過程示意圖。我們知道,絕大部分的網(wǎng)絡(luò)服務(wù)都有固定的端口,比如Web服務(wù)器的80端口、FTP服務(wù)器的2l端口、Windows下NetBIOS服務(wù)器的137-139端口、DHCP服務(wù)器的67端口……客戶端訪問服務(wù)器上相應(yīng)的端口,服務(wù)器通過該端口提供服務(wù)。那么NFS服務(wù)是這樣嗎?它的工作端口是多少?我們只能很遺憾地說:NFS服務(wù)的工作端口不確定。
這是因?yàn)镹FS是一個(gè)很復(fù)雜的組件,它涉及身份驗(yàn)證和文件傳輸?shù)确椒矫婷娴男枨螅⑶颐恳粋€(gè)功能都會(huì)占用一個(gè)單獨(dú)的端口。于是為了避免NFS服務(wù)過多的固定端口被占用,NFS服務(wù)器采取了使用動(dòng)態(tài)端口的方式來完成各項(xiàng)工作,每一個(gè)功能都使用隨機(jī)的小于1024的端口。不過問題又來了,NFS客戶端如何知道它要訪問哪個(gè)端口才可以獲得NFS服務(wù)呢?
答案是必須使用RPC服務(wù),RPC的英文全稱是Remote Procedure Call,意為遠(yuǎn)程進(jìn)程調(diào)用。RPC最主要的功能就是記錄每個(gè)NFS功能所對(duì)應(yīng)的端口,它有固定端口號(hào)111。當(dāng)NFS客戶端向服務(wù)器提出NFS服務(wù)時(shí),必須要訪問NFS服務(wù)器的111端口(提供RPC服務(wù)的固定端口),遠(yuǎn)程進(jìn)程調(diào)作(RPC)將會(huì)把NFS工作的端口號(hào)返回給NFS客戶端,如圖2所示。那么RPC是怎么知道NFS每個(gè)功能的運(yùn)行端口的呢?這是因?yàn)楫?dāng)NFS服務(wù)啟動(dòng)時(shí),它會(huì)自動(dòng)向教程進(jìn)程調(diào)用服務(wù)器(RPC服務(wù)器)進(jìn)行注冊(cè),明確告知它NFS各個(gè)功能所使用的不同端口。
如圖2所示,常規(guī)的NFS服務(wù)是按照如下流程進(jìn)行的。
1)NFS啟動(dòng)時(shí),自動(dòng)選擇工作端口小于1024的1011端口,并向RPC(工作于111端口)匯報(bào),RPC記錄在案。
2)客戶端需要NFS提供服務(wù)時(shí),首先向111端口的RPC查詢NFS工作在哪個(gè)端口?
3)RPC回答客戶端,它工作在1011端口。
4)于是,客戶端直接訪問NFS服務(wù)器的1011端口,請(qǐng)求服務(wù)。
5)NFS服務(wù)經(jīng)過權(quán)限認(rèn)證,允許客戶端訪問自己的數(shù)據(jù)。