一、NFS概述
二、NFS服務的搭建步驟
1、NFS概述
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的端口
二、NFS服務端搭建步驟
1、安裝nfs軟件
yum install -y nfs-utils rpcbind
2、編輯配置文加件添配置需要共享的目錄
vim /etc/exports
/data/mysqlDIR *(rw,no_root_squash,no_all_squash,sync)
3、創建要共享的目錄
mkdir /data/mysqlDIR
4、使配置文件生效,如果目錄不存在就會報錯,創建目錄后再執行一下就好
[root@images1-linux ~]# exportfs -r
exportfs: Failed to stat /data/mysqlDIR: No such file or directory
5、啟動nfs和rpcbind服務並查看端口情況
systemctl start nfs && systemctl start rpcbind
ss -ntl
NFS server啟動時會隨機啟動多個端口並向RPC注冊,這樣如果使用iptables對NFS sever 端口進行限制就會有點麻煩,可以更改配置文件固定NFS服務相關端口
先看一下目前所使用的的端口情況
rpcinfo -p localhost
6、把這些端口修改成指定的端口,編輯配置文件:
# 在配置文件中添加以下5行內容,其他的保持不動
# vim /etc/sysconfig/nfs
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
7、重啟nfs和rpcbind服務
systemctl restart nfs && systemctl restart rpcbind
再次查看端口情況就會發現有的隨機端口已經變成我們指定的端口了
查看共享目錄信息
[root@NFS-Server ~]# exportfs -rv
exporting *:/data/mysqlDIR
[root@NFS-Server ~]# exportfs -v
/data/mysqlDIR <world>(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
8、如果是雲主機或開了防火牆等,需要開啟指定端口,111,2049,…等,我這里是把防火牆禁用了
9、linux客戶端查看共享目錄信息並掛載到本地
# 客戶端也要安裝nfs工具:
yum install -y nfs-utils
# 查看服務端共享的文件目錄等
showmount -e + nfs服務端IP
# 掛載方法:mount -t 指定協議 IP:/共享目錄位置 + 掛載點
mount -t nfs X.X.X.X:/data/mysqlDIR /mnt
# 卸載共享目錄
umount + 掛載點
10、在windows客戶端掛載
① 打開-控制面板-程序-打開或關閉windows功能-勾選NFS客戶端
② 打開dos命令行進行掛載
掛載方法: mount IP:/共享目錄位置 + 掛載點
卸載方法: umount + 掛載點
卸載掛載點
出錯故障排除思路:
① 檢查共享目錄的配置文件,權限、目錄等
② 是否開啟了防火牆,如開啟了請添加規則放行相應的端口號
③ 如果是雲主機,要檢查安全組里的規則是否放行端口等
④ 盡量在配置文件中定義使用固定的端口號,便於添加規則
⑤ 錯誤如下圖(原因是windows端經常會使用大的端口號導致的)
錯誤截圖:
linux客戶端端和windows客戶端掛載目錄時可能遇到的錯誤:
① linux客戶端掛載不上,提示訪問拒絕錯誤
② windows端常出現的問題:提示網絡錯誤-53
解決方法:
NFS服務器有一個”在非安全模式工作(允許更高的端口號)“的選項。Windows NFS客戶端經常使用的是大的端口號。你可以在你的共享項設置中添加insecure選項
例如:/data/xxx *(insecure,rw)
重啟服務再次掛載就可以了