1. 程式人生 > >nfs服務

nfs服務

修改 ont 高效率 bin work 文件的 協定 存在 unix

===============服務端

介紹:

  NFS 是Network File System的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公布。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網絡訪問位於服務器磁盤中的數據,是在類Unix系統間實現磁盤文件共享的一種方法。

  NFS 的基本原則是“容許不同的客戶端及服務端通過一組RPC分享相同的文件系統”,它是獨立於操作系統,容許不同硬件及操作系統的系統共同進行文件的分享。

  NFS在文件傳送或信息傳送過程中依賴於RPC協議。RPC,遠程過程調用 (Remote Procedure Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網絡進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER。所以只要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這麽理解RPC和NFS的關系:NFS是一個文件系統,而RPC是負責負責信息的傳輸。

安裝:

yum install rpcbind nfs-utils -y

配置:

NFS服務的配置文件為 /etc/exports,這個文件是NFS的主要配置文件,不過系統並沒有默認值,所以這個文件不一定會存在,可能要使用vim手動建立,然後在文件裏面寫入配置內容。

/etc/exports文件內容格式:

<輸出目錄> [客戶端1 選項(訪問權限,用戶映射,其他)] [客戶端2 選項(訪問權限,用戶映射,其他)]

a. 輸出目錄:

輸出目錄是指NFS系統中需要共享給客戶機使用的目錄;

b. 客戶端:

客戶端是指網絡中可以訪問這個NFS輸出目錄的計算機

客戶端常用的指定方式

  • 指定ip地址的主機:192.168.0.200
  • 指定子網中的所有主機:192.168.0.0/24 192.168.0.0/255.255.255.0
  • 指定域名的主機:david.bsmart.cn
  • 指定域中的所有主機:*.bsmart.cn
  • 所有主機:*

c. 選項:

選項用來設置輸出目錄的訪問權限、用戶映射等。

NFS主要有3類選項:

訪問權限選項

  • 設置輸出目錄只讀:ro
  • 設置輸出目錄讀寫:rw

用戶映射選項

  • all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody);
  • no_all_squash:與all_squash取反(默認設置);
  • root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置);
  • no_root_squash:與rootsquash取反;
  • anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx);
  • anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,並指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);

其它選項

  • secure:限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置);
  • insecure:允許客戶端從大於1024的tcp/ip端口連接服務器;
  • sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性;
  • async:將數據先保存在內存緩沖區中,必要時才寫入磁盤;
  • wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);
  • no_wdelay:若有寫操作則立即執行,應與sync配合使用;
  • subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);
  • no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;

修改配置

[[email protected] nginx]# cat /etc/exports
/share 192.168.31.0/24(rw,sync,fsid=0)

開權限(nfs開啟了w權限還不行,others還需要對/share目錄有w權限)

chmod -R o+w /share

先為rpcbind和nfs做開機啟動:

[[email protected] nginx]# systemctl enable nfs-server.service
[[email protected] nginx]# systemctl enable rpcbind.service

啟動(必須先啟動rpcbind服務)

[[email protected] nginx]# systemctl start rpcbind.service
[[email protected] nginx]# systemctl start nfs-server.service

確認nfs服務器啟動成功

[[email protected] nginx]# rpcinfo
[[email protected] nginx]# exportfs
/share 192.168.31.0/24

[[email protected] nginx]# showmount -e #默認查看自己共享的服務,前提是要DNS能解析自己,不然容易報錯
Export list for MiWiFi-R3-srv:
/share 192.168.31.0/24

[[email protected] nginx]# showmount -a #顯示已經與客戶端連接上的目錄信息
All mount points on MiWiFi-R3-srv:

=====================客戶端

yum install rpcbind nfs-utils -y

systemctl enable rpcbind.service && systemctl start rpcbind.service

showmount -e NFS服務器IP #檢查 NFS 服務器端是否有目錄共享
mount -t nfs 192.168.31.106:/share /var/www/html/

=====================測試
基於nginx的負載均衡配置,打開後端被代理服務的access.log日誌,tail -f access.log來觀察訪問,訪問LB刷新頁面發現內容保持一致,但是每臺被代理的機器的access.log日誌都有新的內容進來

nfs服務