NFS

  NFS

NFSNetworkFileSystem),網絡文件系統,基於RPC實如今遠程主機上完成讀寫功能,NFS服務端功能由Kernel中提供,因此只能在LinuxUNIX中使用,另外只能根據IP地址限制用戶訪問。服務器

RPC (Remote Procedure Call),實現兩個遠程主機之間功能函數的調用、參數傳遞功能。在Linux中一些通用功能都被作成庫,本地的應用程序須要使用這些功能時,直接調用便可,這就叫本地調用;本地所須要的庫(功能函數)在遠程主機上,這時候就可使用RPC協議將調用請求、參數封裝成報文在網絡上傳輸,而且服務端能理解以後將調用請求在本地執行返回結果,這稱爲遠程過程調用。不少服務都會基於RPC完成某些功能, 例如NFS服務就基於RPC調用遠程 主機上的open() ,read(),write(),close()…等函數將執行結果返回本地,完成文件共享功能。網絡

 

工做原理:多線程

                    image.png                 

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.lockdrpc.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

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息