看到鳥哥私房菜對NFS的介紹,就想試試玩一下。看起來步驟也很簡單。
1.背景名詞。
NFS(Network File System)
作用:讓所有的Unix-like 機器通過網路共享彼此的檔案
侷限:檔案許可權問題。客戶端和伺服器端必須具備相同的賬號才能夠訪問某些目錄或檔案。
RPC(Remote Procedure Call)
作用:指定每個NFS功能所對應的port number,並且通知客戶端,讓客戶端可以連線到正確的埠上去。
當伺服器在啟動NFS時會隨機選取數個埠,並主動向RPC註冊,因此RPC可以知道每個埠對應的NFS功能。
所以啟動NFS之前,要啟動RPC,否則NFS無法向RPC註冊。
2.伺服器端配置
1)下載軟體
#sudo apt-get install rpcbind nfs-kernel-server
2)建立共享目錄
#sudo mkdir /home/user/nfstest
#sudo chmod 777 /home/user/nfstest
3)修改配置檔案
#sudo vim /etc/exports
/home/user/nfstest localhost(rw,sync,no_root_squash)
localhost表面只允許本機訪問,這個欄位可以為IP地址。也可以用正規表示式來表示。
rw代表具有可讀寫許可權。ro代表只具有可讀許可權。
sync是資料同步寫入記憶體和硬碟。async代表資料會先暫存於記憶體當中,而非直接寫入硬碟。
no_root_squash和root_squash的不同在於客戶端使用者為root時,訪問系統的許可權不同。客戶端使用NFS系統的賬號為root時,root_squash會壓縮使用者為nfsnobody,而no_root_squash會繼續保持其root身份。
all_root_squash會壓縮所有的使用者為nfsnobody。
4)重啟服務
#sudo /etc/init.d/rpcbind restart
#sudo /etc/init.d/nfs-kernel-server restart
* Stopping NFS kernel daemon ...done. * Unexporting directories for NFS kernel daemon... ...done. * Exporting directories for NFS kernel daemon... exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "localhost:/home/user/nfstest". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x ...done. * Starting NFS kernel daemon ...done.
可以看到 NFS kernel daemon啟動成功。如果不成功會顯示fail。
5)測試伺服器
#showmount -e
Export list for hostname:
/home/user/nfstest localhost
說明伺服器端搭建OK。
3.客戶端配置
1)下載軟體
#sudo apt-get install rpcbind nfs-common
2)掛載檔案
#mkdir /home/user/mnt
#chmod 777 /home/user/mnt
#mount -t nfs localhost:/home/user/nfstest /home/user/mnt
mount -t nfs 伺服器名/IP地址:伺服器共享目錄 本地掛載目錄
3)客戶端測試
#cd /home/user/mnt
#touch testfile
就會看到 /home/user/nfstest和/home/user/mnt下面都有testfile檔案,說明測試成功。
4.取消掛載
#sudo umount /home/user/mnt