剛在CentOS上試用了下NFS,具體的步驟如下:
Server端:
①、先確認是否已經安裝了相應的服務
- [root@localhost /]# rpm -qa |egrep -i "nfs|portmap"
- portmap-4.0-65.2.2.1
- nfs-utils-lib-1.0.8-7.6.el5
- nfs-utils-1.0.9-50.el5
②、添加共享目錄:vi /etc/exports
- [root@localhost /]# cat /etc/exports
- /home/kavin *(ro)
註解:
exports文件內容格式:
<輸出目錄> [客戶端1 選項(訪問權限,用戶映射,其他)] [客戶端2 選項(訪問權限,用戶映射,其他)]
1.輸出目錄:
輸出目錄是指NFS系統中需要共享給客戶機使用的目錄;
2.客戶端:
客戶端是指網絡中可以訪問這個NFS輸出目錄的計算機
客戶端常用的指定方式
- 指定ip地址的主機 192.168.0.200
- 指定子網中的所有主機 192.168.0.0/24
- 指定域名的主機 a.liusuping.com
- 指定域中的所有主機 *.liusuping.com
- 所有主機 *
3.選項:
選項用來設置輸出目錄的訪問權限、用戶映射等。NFS主要有3類選項:
訪問權限選項
- 設置輸出目錄只讀 ro
- 設置輸出目錄讀寫 rw
用戶映射選項
- all_squash 將遠程訪問的所有普通用戶及所屬組都映射爲匿名用戶或用戶組(nfsnobody);
- no_all_squash 與all_squash取反(默認設置);
- root_squash 將root用戶及所屬組都映射爲匿名用戶或用戶組(默認設置);
- no_root_squash 與rootsquash取反;
- anonuid=xxx 將遠程訪問的所有用戶都映射爲匿名用戶,並指定該用戶爲本地用戶(UID=xxx);
- anongid=xxx 將遠程訪問的所有用戶組都映射爲匿名用 戶組賬戶,並指定該匿名用戶組賬戶爲本地用戶組賬戶(GID=xxx);
其它選項
- secure 限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置);
- insecure 允許客戶端從大於1024的tcp/ip端口連接服務器;
- sync 將數據同步寫入內存緩衝區與磁盤中,效率低,但可以保證數據的一致性;
- async 將數據先保存在內存緩衝區中,必要時才寫入磁盤;
- wdelay 檢查是否有相關的寫操作,如果有則將這些寫操作 一起執行,這樣可以提高效率(默認設置);
- no_wdelay 若有寫操作則立即執行,應與sync配合使用;
- subtree 若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);
- no_subtree 即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;
具體可參考:http://www.liusuping.com/ubuntu-linux/Redhat-Linux-NFS-setting.html
③、查看共享目錄
- [root@localhost /]# exportfs
- /home/kavin <world> -- 允許所有的話這裏是顯示<word>,如果有指定域名或IP 時'將顯示指定的域名或IP.
client端:
- [root@localhost /]# mount -t nfs 192.168.1.57:/home/kavin /kavin/
- [root@localhost /]# cd /kavin/
- -bash: cd: /kavin/: Permission denied
從上面看NFS的mount是成功的,但是卻無法進入mount,後來通過google一直沒找到解決的方法。然後突然發現加載過來的目錄的權限不對,具體如下:
- [root@localhost /]# ll ---client機器
- total 152
- drwxr-xr-x 2 root root 4096 Sep 15 02:34 bin
- drwx------ 4 500 500 4096 Sep 13 15:20 kavin
- drwxr-xr-x 13 root root 4096 Sep 15 02:34 lib
然後通過在client更改/kavin權限,發現無法更改;
- [root@localhost /]# chmod 777 /kavin/
- chmod: changing permissions of `/kavin/': Read-only file system
後來想想這個應該是需要更改server端的權限,
- [root@localhost home]# ll ---server端
- total 32
- drwx------ 4 kavin kavin 4096 Sep 13 15:20 kavin
- [root@localhost home]# chmod 777 kavin/
然後client嘗試進入目錄,還是不行;重新mount之後就ok了。
- [root@localhost /]# cd /kavin/ --- client端
- -bash: cd: /kavin/: Permission denied
- [root@localhost /]# umount /kavin/
- [root@localhost /]# mount -t nfs 192.168.1.57:/home/kavin /kavin/
- [root@localhost /]# cd /kavin/
從上面可以看出,在使用NFS時,server端的目錄共享也得注意權限的設置問題。