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註冊的端口。

3.客戶端連與NFS daemon進行聯機,mountd對用戶進行認證,nfs提供文件共享服務功能。

注意RPC(tcp/111,udp/111),NFS(tcp/2049,udp/2049) 使用的都是知名端口,但mountd並不是知名服務,客戶端不知道mountd在哪,不知道如何去認證,而NFS必須要mountd認證通過返回令牌才能提供服務,所以NFS在啓動時需要向RPC註冊使用隨機端口,這樣客戶端直接找RPC即可.

[root@el6 ~]# rpcinfo  -p  127.0.0.1

     program vers proto   port  service

      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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章