NFS是網(wǎng)絡(luò)文件系統(tǒng)(Network File System)的簡稱,是分布式計算系統(tǒng)的一個組成部分,可實現(xiàn)在異種網(wǎng)絡(luò)上共享和裝配遠程文件系統(tǒng)。NFS由Sun公司開發(fā),目前已經(jīng)成為文件服務(wù)的一種標準(RFC1904,RFC1813)。其最大的功能就是可以通過網(wǎng)絡(luò),讓不同操作系統(tǒng)的計算機可以共享數(shù)據(jù),所以也可以將它看做是一個文件服務(wù)器(見圖1所示)。NFS提供了除Samba之外,Windows與Linux及Unix與Linux之間通信的方法。 ![]() Client端PC可以掛載NFS Server所提供的目錄,并且掛載之后這個目錄看起來就像本地的磁盤分區(qū)一樣,可以使用cp、cd、mv、rm、df等磁盤相關(guān)的指令。NFS有屬于自己的協(xié)議與使用的端口號碼,但是在資料傳送或者其它相關(guān)訊息傳遞的時候,NFS Server使用的則是一個稱為遠程過程調(diào)用(Remote Procedure Call, RPC)的協(xié)議來協(xié)助NFS Server本身的運作。 NFS本身的服務(wù)并沒有提供資料傳遞的協(xié)議,但是它卻能進行文件的共享。原因就是NFS使用到一些其它相關(guān)的傳輸協(xié)議,而這些傳輸?shù)膮f(xié)議就是遠程過程調(diào)用(Remote Procedure Call, RPC)。NFS也可以視為一個RPC Server。需要說明的是,要掛載NFS Server的Client PC主機,也需要同步啟動遠程過程調(diào)用。這樣Server端和Client端才能根據(jù)遠程過程調(diào)用協(xié)議進行數(shù)據(jù)共享。 使用NFS Server需要啟動至少兩個daemons(系統(tǒng)守護進程),一個用來管理Client PC是否可以登入的問題,另一個管理登入主機后的Client PC能夠使用的文件權(quán)限。說明如下: ◆ rpc.nfsd 它的主要的功能就是管理Client端PC登入主機的權(quán)限,其中包含這個登入者的ID的判別。 ◆ rpc.mountd 它的主要功能是管理NFS的文件系統(tǒng)。當Client PC順利地通過rpc.nfsd而登入主機之后,在使用NFS Server提供的文件前,還必須取得使用權(quán)限的認證。程序會讀NFS的/etc/exports來比對Client端PC的權(quán)限。 要激活NFS必須要有兩個系統(tǒng)服務(wù)才行,它們分別是portmap和nfs-utils。NFS其實可以被視為一個RPC Server,要激活任何一個RPC Server之前,需要做好端口的對應(yīng) (Mapping)工作才行。這個工作就是portmap這個服務(wù)所負責的。nfs-utils就是提供rpc.nfsd及rpc.mountd這兩個NFS daemons與其它相關(guān)說明文件等的系統(tǒng)服務(wù)。 NFS Server端的設(shè)定,首先需要確認Linux主機是否可以支持NFS這項服務(wù),然后再設(shè)定使用者的來源IP或主機名稱以及共享出去的目錄權(quán)限。 那么,在Client PC怎么使用這個共享出來的目錄呢?首先以showmount檢查Linux Server是否有可以使用的 NFS目錄。如果有就將它mount在本機上面,這樣就可以使用NFS Server主機提供的資源了。 1.系統(tǒng)要求 除了前面已經(jīng)提到的兩個系統(tǒng)守護進程portmap與nfs-utils之外,內(nèi)核(Kernel)版本最好高于2.2.18。此外,如果重新編譯過內(nèi)核,一定要選擇支持NFS。 2.etc/exports 編輯 /etc/exports文件:
從上面這個例子中可以看出exports文件的格式,首先是定義要共享的文件目錄,必須使用絕對路徑,而不能使用符號連接。后面就是對這個目錄進行訪問限制的參數(shù),用于保證安全性。第一行設(shè)置中,將/usr/sys/src目錄共享出去,但限制客戶機上的root用戶等價于本機上的daemon用戶,以避免客戶機上的root用戶擁有這個服務(wù)器上的root權(quán)力進行非法操作;此后的host2參數(shù)是主機名,這就限制只有host2才能共享這個/usr/sys/src目錄;第三行設(shè)置共享了/usr/ports目錄,但限制為只允許讀取,并且也只有192.168.1.0網(wǎng)絡(luò)上的計算機才能訪問這個共享目錄。 ◆ maproot=登陸時映射為哪個用戶 (0是root) ◆ rw 可擦寫的權(quán)限。 ◆ ro 只讀的權(quán)限。 ◆ no_root_squash 當?shù)侨隢FS主機使用共享之目錄的使用者如果是root時,那么這個使用者的權(quán)限將被轉(zhuǎn)換成為匿名使用者,通常它的UID與GID都會變成nobody身份。 ◆ root_squash 登入NFS主機使用共享目錄的使用者,如果是root,那么對于這個共享的目錄來說,它就具有 root的權(quán)限。 ◆ all_squash 不論登入NFS使用者的身份為何,它的身份都會被轉(zhuǎn)換成為匿名使用者,通常也就是nobody。 ◆ anonuid 通常為nobody,當然也可以自行設(shè)定這個UID的值,UID必須存在于/etc/passwd當中。 ◆ anongid 同anonuid,但是變成group ID就是了。 ◆ sync 資料同步寫入到內(nèi)存與硬盤當中。 ◆ async 資料會先暫存于內(nèi)存當中,而非直接寫入硬盤。 3.激活服務(wù)portmap和nfsd
portmap激活之后,就會出現(xiàn)一個端口號為111的sunrpc的服務(wù)。至于nfs則會激活至少兩個以上的系統(tǒng)守護進程,然后就開始監(jiān)聽Client PC的需求,用cat/var/log/messages可以看到操作是否成功:
參數(shù)說明: -a 全部掛載(或卸載) /etc/exports 文件內(nèi)的設(shè)定 。 -r 重新掛載/etc/exports里的設(shè)定,此外,亦同步更新/etc/exports及/var/lib/nfs/xtab的內(nèi)容。 -u 卸載某一目錄。 -v 在export的時候,將共享的目錄顯示到屏幕上。 5.檢驗?zāi)夸?var/lib/nfs/xtab 檢驗所共享的目錄內(nèi)容,查看/var/lib/nfs/xtab這個文件:
這就是/home/cao這個共享出去的目錄預(yù)設(shè)NFS里面的屬性。 6.showmount
參數(shù)說明: -a 在屏幕上顯示目前主機與Client所連上來的使用目錄狀態(tài) 。 -e 顯示hostname這部機器的/etc/exports里面的共享目錄。 當要掃瞄某一主機所提供的NFS共享的目錄時,就使用showmount -e IP(或主機名稱hostname)即可。 7.觀察激活的端口號
nfs所開啟的端口是2049,其它的端口是RPC Server其它程序(例如rpc.mountd、rpc.rquotad、rpc.nfsd... )隨機產(chǎn)生的,也就是端口號不會是固定的,每次restart nfs都會得到不一樣的端口號。
2.掛載/home/public目錄 首先建立這個目錄,然后再利用mount指令來掛載/home/public目錄:
掛載的格式:
將資料掛載進來后,只要進入/home/nfs/public目錄,就等于到了www.cao.net那部NFS Server的/home/public 目錄中。 3.卸載使用umount
關(guān)機時如果NFS Server上面還有Client聯(lián)機,建議NFS Server關(guān)機之前,要先關(guān)掉portmap與nfs這兩個系統(tǒng)服務(wù)。如果無法正確地將這兩個系統(tǒng)服務(wù)關(guān)掉,那么先以netstat -utlp找出PID,然后使用kill殺掉進程,這樣才能正常關(guān)機。
|
|