centos7之NFS使用


NFS是Network File System的縮寫,即網絡文件系統。客戶端通過掛載的方式將NFS服務器端共享的數據目錄掛載到本地目錄下。

一、nfs為什么需要RPC?

因為NFS支持的功能很多,不同功能會使用不同程序來啟動,因此,NFS對應的功能所對應的端口無法固定。

端口不固定造成客戶端與服務端之間的通信障礙,所以需要RPC來從中幫忙。

NFS啟動時會隨機取用若干端口,然后主動向RPC服務注冊取用相關端口和功能信息,RPC使用固定端口111來監聽來自NFS客戶端的請求,

並將正確的NFS服務端口信息返回給客戶端,這樣客戶端與服務端就可以進行數據傳輸了。

二、NFS的工作流程

1、由程序在NFS客戶端發起存取文件的請求,客戶端本地的RPC(rpcbind)服務會通過網絡向NFS服務端的RPC的111端口發出文件存取功能的請求。

2、NFS服務端的RPC找到對應已注冊的NFS端口,通知客戶端RPC服務。

3、客戶端獲取正確的端口,並與NFS daemon聯機存取數據。

4、存取數據成功后,返回前端訪問程序,完成一次存取操作。

所以無論客戶端,服務端,需要使用NFS,必須安裝RPC服務。

NFS的RPC服務,在Centos5下名為portmap,Centos6下名稱為rpcbind。

三、安裝配置

1、首先關閉centos7上的firewalld防火牆和iptables防火牆,讓其開機不能自啟,等安裝完畢后可以打開相應的防火牆。

2、安裝。

yum install -y  nfs-utils rpcbind 

3、安裝完成后后首先啟動,首先啟動,首先啟動rpcbind服務。

systemctl restart rpcbind.service

4、配置nfs配置文件(默認是空的)

首先我們應該建立一個數據文件夾,例如data文件夾也可以是單獨的一個塊硬盤風趣,都可以。

#mkdir data

 #vim /etc/exports

/data   192.168.1.0/24(rw,no_root_squash,sync,fsid=0)

  

參數:
•ro:目錄只讀
•rw:目錄讀寫
•sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性
•async:將數據先保存在內存緩沖區中,必要時才寫入磁盤
•all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody)
•no_all_squash:與all_squash取反(默認設置)
•root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置)
•no_root_squash:與rootsquash取反
•anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx)
•anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶

注:添加no_root_squash參數,表明此時客戶端root用戶的身份等同於NFS server上面的root用戶,否則客戶端只能同步到服務器的數據,無建立文件或文件夾等權限。

啟動nfs

systemctl start nfs.service

  

客戶端操作:

同樣為了搭建順利,可先關閉iptables和selinux、firewall。客戶端只需要安裝rpcbind服務即可,無需安裝nfs或開啟nfs服務。

#yum install -y rpcbind

#systemctl start rpcbind.service

在客戶端建立文件夾,准備掛在nfs。

#cd /root 

#mkdir nfstest

掛載

#mount -t nfs 192.168.1.238:/data nfstest

如果需要卸載的話,mount變成umount就行。

如下正常操作沒有問題。

如上所示,這樣的話在服務器或者在客戶端寫入對方都會發生變化。

注意:

服務器端:

1、先啟動rpcbind,再啟動nfs服務

2、如果配置文件發生變化可以使用exportfs -rv重新加載配置無需重啟服務。

3、查看rpc服務器是否啟動成功rpcinfo -p

4、查看共享目錄是否存在showmount -e 192.168.1.238

5、如果開iptables防火牆的話可以使用rpcinfo -p命令查看都需要允許哪些端口。

客戶端:

錯誤1,:Stale NFS file handle的解決方法

 1、首先用umount卸載當前目錄,如果卸載不了使用umount -f /root/nfstest強制卸載,然后再重新掛載即可。

 錯誤2:touch: cannot touch ‘test2’: Permission denied nfs

 1、這個是提醒你客戶端掛載的nfs服務器的目錄沒有權限,你在nfs客戶端給權限沒用,要不就給nfs服務器目錄777權限,這樣顯得啥,要不就配置文件里面如上加上no_root_squash參數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM