一、定義
NFS:network file system,網絡文件系統,一般在內核中運行
NFS在文件傳送依賴於RPC協議,RPC(remote procedure call)遠程過程調用是使客戶端執行
其它系統中程序的一種機制。NFS本身沒有提供傳輸協議和功能,但NFS使用了一些傳輸協議,而這些協議要用RPC功能。
二、安裝
NFS的安裝:
nfs-utils:包括基本的NFS命令與監控程序
rpcbind:支持安全NFS RPC服務的連接
NFS系統守護進程:
nfsd:管理客戶端能否登錄服務器
mountd:管理NFS的文件系統
rpcbind:進行端口映射工作。當客戶端嘗試連接並使用RPC提供的服務(NFS)時,rpcbind會將管理的服務端口提供給客戶端,從而客戶端可以通過端口向服務器請求服務
NFS常用目錄:
/etc/exports NFS服務的主要配置文件
/usr/sbin/exportfs NFS服務的管理命令
/usr/sbin/showmount 客戶端的查看命令
/var/lib/nfs/etab 記錄曾經登錄過的客戶端信息
/etc/exports不一定存在,需要手動創建。
三、內容格式:
<輸出目錄>[客戶端1 選項 (訪問權限,用戶映射,其它)][客戶端2 選項 (訪問權限,用戶映射,其它]
1、輸出目錄:共享使用的目錄
2、 客戶端:可以訪問共享目錄的計算機
常用的指定方式
指定IP:192.168.0.100
指定IP段:192.168.0.0/24
所有主機:*
3、選項:
訪問權限
只讀:ro
讀寫:rw
4、用戶映射選項
all_squash:將遠程訪問的所有普通用戶及所屬組都映射爲匿名用戶或用戶組(nfsnobody);
no_all_squash:與all_squash取反(默認設置);
root_squash:將root用戶及所屬組都映射爲匿名用戶或用戶組(默認設置);
no_root_squash:與rootsquash取反;
anonuid=xxx:將遠程訪問的所有用戶都映射爲匿名用戶,並指定該用戶爲本地用戶(UID=xxx);
anongid=xxx:將遠程訪問的所有用戶組都映射爲匿名用戶組賬戶,並指定該匿名用戶組賬戶爲本地用戶組賬戶(GID=xxx);
5、其它選項
secure:限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置);
insecure:允許客戶端從大於1024的tcp/ip端口連接服務器;
sync:將數據同步寫入內存緩衝區與磁盤中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩衝區中,必要時才寫入磁盤;
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);
no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;
四、NFS服務器的啓動與停止
1、啓動NFS服務器
#service rpcbind start #service nfs start
2、查詢NFS服務器狀態
#service rpcbind status #service nfs status
3、停止NFS服務器狀態
#service rpcbind stop #service nfs stop
五、實例:
#vim /etc/exports /home/test 172.16.0.0/16(rw) #service rpcbind start #service nfs start #exportfs #chmod 777 /home/test #showmount -e #查看自己共享的服務
客戶端掛載NFS服務器中的共享目錄
#mount NFS服務器IP:共享目錄 本地掛載點目錄 #mount 172.16.21.68:/home/test /tmp/test
客戶端以root用戶創建文件時,屬主和屬組都是nobody
#cat /var/lib/nfs/etab 查看完整共享文件權限
root_squash是把root映射成nobody
exportfs
-a 全部掛載或卸載/etc/exports中的內容
-r:重新讀取/etc/exports中的信息,並同步更新/etc/exports、/var/lib/nfs/xtab
-u:卸載單一目錄
-v:使用export的時候,將詳細信息輸出到屏幕上