服務端:10.6.191.183 客戶端:10.6.191.182
NFS 是Network File System的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公布。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網絡訪問位於服務器磁盤中的數據,是在類Unix系統間實現磁盤文件共享的一種方法。
NFS在文件傳送或信息傳送過程中依賴於RPC協議,RPC遠程過程調用 (Remote Procedure Call) 是能使客戶端執行其他系統中程序的一種機制,NFS本身是沒有提供信息傳輸的協議和功能的。
NFS應用場景,常用於高可用文件共享,多台服務器共享同樣的數據,可擴展性比較差,本身高可用方案不完善,取而代之的數據量比較大的可以采用MFS、TFS、HDFS、GFS等等分布式文件系統。
NFS(網絡文件系統):讓網絡上的不同linux/unix系統機器實現文件共享 nfs本身只是一種文件系統,沒有提供文件傳遞的功能,但卻能讓我們進行文件的共享,原因在於 NFS 使用RPC服務,用到NFS的地方都需要啟動RPC服務,無論是NFS客戶端還是服務端 nfs和rpc的關系:nfs是一個文件系統,負責管理分享的目錄;rpc負責文件的傳遞 nfs啟動時至少有rpc.nfsd和rpc.mountd2個daemon rpc.nfsd主要是管理客戶機登陸nfs服務器時,判斷改客戶機是否能登陸,和客戶機ID信息。 Rpc.mountd主要是管理nfs的文件系統。當客戶機順利登陸nfs服務器時,會去讀/etc/exports文件中的配置,然后去對比客戶機的權限。 協議使用端口: RPC:111 tcp/udp nfsd: 2049 tcp/udp mountd:RPC服務在 nfs服務啟動時默認會為 mountd動態選取一個隨機端口(32768--65535)來進行通訊 ,可以在/etc/nfsmount.conf文件中指定mountd的端口
一、服務端安裝配置
1、NFS文件系統安裝配置
yum install nfs-utils rpcbind -y
NFS安裝完畢,需要創建共享目錄,共享目錄在vi /etc/exports文件里面配置,可配置參數如下,在配置文件中添加如上一行,然后重啟Portmap:
/data/ *(rw,no_root_squash,no_all_squash,sync)
配置文件詳解:
/data/ 表示需要共享的目錄。
IP 表示允許哪個客戶端訪問。
IP后括號里的設置表示對該共享文件的權限。
ro 只讀訪問
rw 讀寫訪問
sync 所有數據在請求時寫入共享
all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。
no_all_squash 保留共享文件的UID和GID(默認)
root_squash root用戶的所有請求映射成如anonymous用戶一樣的權限(默認)
no_root_squash root用戶具有根目錄的完全管理訪問權限
配置生效
exportfs -r
重啟NFS服務即可
service rpcbind restart ;service nfs restart
查看 RPC 服務的注冊狀況
rpcinfo -p localhost
選項與參數: -p :針對某 IP (未寫則預設為本機) 顯示出所有的 port 與 porgram 的信息; -t :針對某主機的某支程序檢查其 TCP 封包所在的軟件版本; -u :針對某主機的某支程序檢查其 UDP 封包所在的軟件版本;
二、客戶端安裝配置
1、安裝nfs-utils客戶端
[root@bogon ~]# yum -y install nfs-utils
查看服務器拋出的共享目錄信息
showmount -e 10.6.191.208
Linux客戶端,如何想使用這個NFS文件系統,需要在客戶端掛載,掛載命令為(為了提高NFS的穩定性,使用TCP協議掛載,NFS默認用UDP協議):
mount –t nfs 10.6.191.208:/data/ /mnt -o proto=tcp -o nolock
開啟自動掛載,在/etc/fstab下加上如下配置(可能失敗):
10.6.191.208:/data /mnt nfs defaults 0 0
如果有報錯根據錯誤信息排查。常見問題有rpc服務沒有啟動、防火牆沒關閉、selinux未關閉等問題。(拓展* 有興趣的童鞋可以研究MFS(分布式文件系統)
查看掛載結果
三、報錯信息
PS報錯信息:
1、
解決方法:
rpcinfo -p rpm -qa |grep nfs-utils yum -y install nfs-utils systemctl start nfs-utils systemctl enable nfs-utils rpcinfo -p mount -t nfs 10.6.191.183:/nfs /home/ddsc/data/