天天看點

NFS

nfs(networkfilesystem),網絡檔案系統,基于rpc實作在遠端主機上完成讀寫功能,nfs服務端功能由kernel中提供,是以隻能在linux、unix中使用,另外隻能根據ip位址限制使用者通路。

rpc (remote procedure call),實作兩個遠端主機之間功能函數的調用、參數傳遞功能。在linux中一些通用功能都被做成庫,本地的應用程式需要使用這些功能時,直接調用即可,這就叫本地調用;本地所需要的庫(功能函數)在遠端主機上,這時候就可以使用rpc協定将調用請求、參數封裝成封包在網絡上傳輸,并且服務端能了解之後将調用請求在本地執行傳回結果,這稱為遠端過程調用。很多服務都會基于rpc完成某些功能, 例如nfs服務就基于rpc調用遠端 主機上的open() ,read(),write(),close()…等函數将執行結果傳回本地,完成檔案共享功能。

工作原理:

NFS

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

繼續閱讀