RHCE(五)NFS服務——Linux上文件共享

NFS服務器

NFS(Network File System)功能是可以通過網絡,讓不同的機器、不同的操作系統可以共享彼此的文件。NFS服務器可以讓PC將網絡中的NFS服務器共享的目錄掛載到本地端的文件系統中,而在本地端的系統中來看,那個遠程主機的目錄就好像是自己的一個磁盤分區一樣,在使用上相當便利;

對於掛載,

  • 同一掛載點可以連接多個設備(NFS不行,掛載多個只能最後一個生效,所以NFS服務做了設置,同一個掛載點不能掛載多個NFS系統類型)
  • 一個設備可以連接多個掛載點(NFS可以)

rpc服務

既然NFS是通過網絡來進行服務器端和客戶端之間的數據傳輸,那麼兩者之間要傳輸數據就要有想對應的網絡端口,NFS服務器到底使用哪個端口來進行數據傳輸呢?
基本上NFS這個服務器的端口開在2049,但由於文件系統非常複雜。因此NFS還有其他的程序去啓動額外的端口,這些額外的用來傳輸數據的端口是隨機選擇的,是小於1024的端口;既然是隨機的那麼客戶端又是如何知道NFS服務器端到底使用的是哪個端口呢?這時就需要通過遠程過程調用(Remote Procedure Call,RPC)協議來實現了.RPC服務(portmap 或rpcbind)

RPC(Remote Procedure Call)即遠程過程調用。RPC 最主要的功能就是在指定每個 NFS 功能所對應的 port number ,並且回報給客戶端,讓客戶端可以連結到正確的port上去(就是一個媒婆的作用)

RPC與NFS通訊

首先當NFS啓動後,就會隨機的使用一些端口,然後NFS就會向RPC去註冊這些端口,RPC就會記錄下這些端口,並且RPC會開啓111端口,等待客戶端RPC的請求,如果客戶端有請求,那麼服務器端的RPC就會將之前記錄的NFS端口信息告知客戶端。如此客戶端就會獲取NFS服務器端的端口信息,就會以實際端口進行數據的傳輸了。
提示:在啓動NFS SERVER之前,首先要啓動RPC服務(即portmap服務,下同)否則NFS SERVER就無法向RPC服務區註冊,另外,如果RPC服務重新啓動,原來已經註冊好的NFS端口數據就會全部丟失。因此此時RPC服務管理的NFS程序也要重新啓動以重新向RPC註冊。特別注意:一般修改NFS配置文檔後,是不需要重啓NFS的,直接在命令執行/etc/init.d/nfs reload或exportfs –rv即可使修改的/etc/exports生效。

NFS客戶端和NFS服務端通訊過程

在這裏插入圖片描述
1)首先服務器端啓動RPC服務,並開啓111端口
2)服務器端啓動NFS服務,並向RPC註冊端口信息
3)客戶端啓動RPC(portmap服務),向服務端的RPC(portmap)服務請求服務端的NFS端口
4)服務端的RPC(portmap)服務反饋NFS端口信息給客戶端。
5)客戶端通過獲取的NFS端口來建立和服務端的NFS連接並進行數據的傳輸。
執行順序:1(註冊端口)——2(達成協議)——3(直接建立聯繫)——4(達成協議)——5(建立連接)

Linux上部署NFS服務

1、兩個軟件包:nfs-utils:NFS主程序,rpcbind:PRC,默認是安裝了的,查看一即可

#rpm -qa | egrep “nfs|rpcbind”
libnfsidmap-0.25-12.el7.x86_64
rpcbind-0.2.0-32.el7.x86_64
nfs-utils-1.3.0-0.21.el7.x86_64

rpc有兩個進程:

  • rpc.nfsd NFS守護進程,監聽nfs服務,要是nfs重啓了就重新註冊
  • rpc.mountd 管理文件系統和權限

rpcinfo實用工具顯示那些使用portmap註冊的程序的信息,並向程序進行RPC調用,檢查它們是否正常運行

#rpcinfo -p localhost

2、判斷服務是否啓動三種方式:

  • #lsof -i:111 查看端口
  • #netstat -tulnp | grep -E ‘(rpc|nfs)’ 查看網絡信息
  • #ps -ef | grep -E ‘rpc|nfs’ 查看進程

rpcbind安裝成功後默認已經開啓,並且爲開機自動啓動。如果沒有啓動的話,重新啓動rcpbind服務

#systemctl restart nfs

測試時訪問服務的前提:關閉防火牆和Selinux

#systemctl stop firewalld
#setenforce 0

3、配置文件
/etc/exports 格式:

  • 輸出目錄 客戶端 選項 [訪問權限,用戶映射,其他]
  • 輸出目錄: 需要共享的目錄路徑
  • 客戶端: 服務的用戶對象
  • 選項: 共享的權限,緊跟客戶端列

例:
cat /etc/exports
/test *(ro)
Ro
rw
#共享/test目錄,*所有用戶(ro)權限爲只讀權限

訪問控制選項:
在這裏插入圖片描述

搭建服務——Linux上文件共享

服務端:
#mkdir public 創建共享的目錄,默認權限(755)
#vim /etc/export 修改主配置文件
/public *(rw,root_squash,anonuid=1001,anongid=1001)

#systemctl restart nfs
#exportfs -f 更新配置文件
#showmount -e 查看服務端的共享是否生效
#systemctl stop firewalld 關閉防火牆
#setenforce 0 關閉selinux

客戶端有三種掛載方式
1、手動掛載
#showmount -e 192.168.163.128
#mkdir /pub 創建掛載點目錄
#mount 192.168.163.128:/public /pub 掛載
#cd /pub
#touch 1 創建文件(權限爲只讀時,沒有上傳權限)
#chmod o+w /public 添加w權限

2、開機自動掛載
mkdir /pub 創建掛載目錄
vim /etc/fstab
182.168.163.129:/public /pub nfs defaults,ro 0 0
開機是否檢查關閉
開機是否備份關閉
#mount -a 使配合文件生效

3、autofs自動掛載 (需要的時候自動掛載,不需要時自動取消掛載)

#yum install autofs -y 安裝軟件包
#systemctl status autofs 查看服務狀態
#vim /etc/autofs.master 編輯autofs主配置文件

/auto /etc/auto.pub

#vim /etc/auto.pub 編輯子配置文件

格式:掛載點目錄 參數 文件系統
pub -rw 192.168.163.129:/public

子配置文件不需要創建,觸發時自動創建
#systemctl restart autofs 重啓服務
#ls pub 觸發
#mount 可以文件系統看到掛載到對應目錄

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