NFS(NetworkFileSystem),網絡文件系統,基於RPC實如今遠程主機上完成讀寫功能,NFS服務端功能由Kernel中提供,因此只能在Linux、UNIX中使用,另外只能根據IP地址限制用戶訪問。服務器
RPC (Remote Procedure Call),實現兩個遠程主機之間功能函數的調用、參數傳遞功能。在Linux中一些通用功能都被作成庫,本地的應用程序須要使用這些功能時,直接調用便可,這就叫本地調用;本地所須要的庫(功能函數)在遠程主機上,這時候就可使用RPC協議將調用請求、參數封裝成報文在網絡上傳輸,而且服務端能理解以後將調用請求在本地執行返回結果,這稱爲遠程過程調用。不少服務都會基於RPC完成某些功能, 例如NFS服務就基於RPC調用遠程 主機上的open() ,read(),write(),close()…等函數將執行結果返回本地,完成文件共享功能。網絡
工做原理:多線程
1.服務端啓動時將NFS功能(NFS daemons)像RPC進行註冊端口。併發
2.客戶端經過RPC鏈接服務器獲取NFS Daemon註冊的端口。app
3.客戶端連與NFS daemon進行聯機,mountd對用戶進行認證,nfs提供文件共享服務功能。異步
注意:RPC(tcp/111,udp/111),NFS(tcp/2049,udp/2049) 使用的都是知名端口,但mountd並非知名服務,客戶端不知道mountd在哪,不知道如何去認證,而NFS必需要mountd認證經過返回令牌才能提供服務,因此NFS在啓動時須要向RPC註冊使用隨機端口,這樣客戶端直接找RPC便可.async [root@el6 ~]# rpcinfo -p 127.0.0.1tcp program vers proto port serviceide 100000 4 tcp 111 portmapper函數 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 57168 status 100024 1 tcp 57017 status 100011 1 udp 875 rquotad 100011 2 udp 875 rquotad 100011 1 tcp 875 rquotad 100011 2 tcp 875 rquotad 100005 1 udp 40548 mountd 100005 1 tcp 60166 mountd 100005 2 udp 46629 mountd 100005 2 tcp 39141 mountd 100005 3 udp 48524 mountd 100005 3 tcp 50953 mountd 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 2 tcp 2049 nfs_acl 100227 3 tcp 2049 nfs_acl 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 2 udp 2049 nfs_acl 100227 3 udp 2049 nfs_acl 100021 1 udp 48054 nlockmgr 100021 3 udp 48054 nlockmgr 100021 4 udp 48054 nlockmgr 100021 1 tcp 43004 nlockmgr 100021 3 tcp 43004 nlockmgr 100021 4 tcp 43004 nlockmgr (daemon進程有多個是由於NFS支持併發訪問) |
NFS daemon:
rpc.nfsd 提供NFS服務
rpc.mountd 用於驗證用戶是否有權限使用NFS
rpc.lockd與rpc.statd 用於鎖定文件防止多個用戶同時修改,致使文件混亂。
rpc.quota 用於設置NFS的磁盤配額。
rpc.bind 用於將服務與端口綁定
rpc.statd 通知NFS客戶端何時一個NFS服務器非正常重啓動.這個進程被nfslock服務自動啓動,不須要用戶的配置.
rpc.idmapd 用於將全部用戶的ID映射爲nobody用戶
安裝NFS:
[root@7-1 ~]# yum install -y nfs-utils 通常OS自帶無需安裝 |
NFS配置文件
Usage: Directory(or filesystem) Client1(option1,option2…) Client2(option1,option2…) |
Directory 共享目錄
Client 容許訪問的客戶端IP
172.16.1.1 單個IP
172.16.1.0/24 網段
hostname/FQDN 主機名或者FQDN名
Options 可以使用權限選項
rw 讀寫權限,默認ro
async 異步讀寫,不啓用多線程,也能進行多個I/O操做
secure 缺省選項,表示客戶端掛載創建鏈接時採用小於1024的端口號
insecure 關閉上述功能
root_squash 缺省選項,將root用戶映射成nfsnobody
no_root_squash 關閉上述功能,很是危險,這表示以root的身份進行讀寫
all_squash 將全部用戶映射成nfsnobody