1. 程式人生 > >NFS網絡文件系統原理與搭建

NFS網絡文件系統原理與搭建

NFS

NFS工作流程圖

步驟1:先啟動RPC服務
步驟2:啟動NFS服務(向RPC服務註冊啟動的端口)
步驟3:客戶向RPC請求NFS
步驟4:RPC返回端口到客戶
步驟5:拿著地址端口請求傳輸數據
技術分享圖片

服務搭建:將服務端/data掛載到/mnt目錄下

1:檢查操作系統內核版本,確認是否支持

2:檢查並安裝NFS服務(服務端必須安裝,客戶端最好安裝)

2.1:檢查NFS服務是否安裝

rpm -aq nfs-utils rpcbind

2.2:如果未安裝,需進行安裝

LANG=en

yum install nfs-utils rpcbind -y

2.3:安裝完成,再次進行確認

rpm -aq nfs-utils rpcbind

3:啟動RPC及NFS服務並檢查

/etc/init.d/rpcbind start

ps -ef | grep rpc

/etc/init.d/rpcbind status

rpcinfo -p localhost

/etc/init.d/nfs start

rpcinfo -p localhost

檢查進程情況

ps -ef|egrep "rpc|nfs"
root 367 2 0 May04 ? 00:00:00 [rpciod]
rpc 1944 1 0 05:52 ? 00:00:00 /sbin/rpcbind -w
root 1977 1 0 05:58 ? 00:00:00 /usr/sbin/rpc.idmapd name mapping daemon名稱映射

rpcuser 1978 1 0 05:58 ? 00:00:00 /usr/sbin/rpc.statd 檢查文件一致性
root 1979 1 0 05:58 ? 00:00:00 /usr/sbin/rpc.mountd 權限管理驗證等(NFS mount daemon)
root 1989 2 0 05:58 ? 00:00:00 [nfsd4_callbacks]
root 1993 2 0 05:58 ? 00:00:00 [nfsd]
root 1994 2 0 05:58 ? 00:00:00 [nfsd] 主進程,管理登入,ID身份判別等
root 1995 2 0 05:58 ? 00:00:00 [nfsd]
root 1996 2 0 05:58 ? 00:00:00 [nfsd]
root 1997 2 0 05:58 ? 00:00:00 [nfsd]
root 1998 2 0 05:58 ? 00:00:00 [nfsd]
root 1999 2 0 05:58 ? 00:00:00 [nfsd]
root 2000 2 0 05:58 ? 00:00:00 [nfsd]
root 2007 1726 0 05:59 pts/1 00:00:00 grep -E --color=auto rpc|nfs

4:配置服務端/etc/exports(默認為空)文件

vim /etc/exports

/data 172.31.175.0/24(rw,sync) sync指同步寫入磁盤

該配置文件省略了很多配置,詳細配置在/var/lib/nfs/etab

5:平滑重啟NFS服務

systemctl reload nfs

6:配置客戶端

6.1:啟動客戶端rpcbind服務

通過 showmount -e 服務端IP地址 檢測能否正常掛載

6.2:將/data目錄掛載到客戶端目錄下

mount -t nfs 172.31.175.30:/data /mnt

df -h 檢測是否掛載成功

註意:該配置采用系統默認的nfsnobody用戶,請確保客戶端和服務端nfsnobody用戶的id相同(安裝時系統默認會創建,uid和gid都是65535)

如果配置NFS不使用系統默認的nfsnobody用戶,需註意以下幾點

創建用戶組

groupadd -g 889 zuma1

創建用戶

useradd -u 889 -g 889 zuma1 -s /sbin/nologin -M

修改客戶端掛載用戶目錄屬性

chown zuma1.zuma1 -R data

修改服務端/etc/exports文件

/data1 172.16.1.0/24(rw,sync,all_squash,anonuid=889,anongid=889)

掛載,檢查


NFS參數調優與安全

客戶端優化

mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 10.0.0.7:/data /mnt

nosuid 不允許suid noexec掛載點不允許執行二進制文件 noatime每一次數據訪問,不更新inode裏面的時間戳 nodiratime每一次訪問目錄,不更新目錄時間戳

rsize 數據傳輸一次可讀多少數據 wsize 數據傳輸一次可寫多少數據

async:涉及文件系統I/O的操作都是異步處理,即不會同步到磁盤,此參數會提高性能,但會降低數據安全,一般情況下,生產環境不推薦使用,除非對性能要求很高,對數據可靠性不要求的場合
sync:同步處理I/O

服務端優化(內核參數調整)

/proc/sys/net/core/rmem_default:該文件指定接收套接字緩沖區大小的默認值(以字節為單位),默認設置:124928
/proc/sys/net/core/rmem_max:該文件指定接收套接字緩沖區大小的最大值(以字節為單位),默認設置:124928
/proc/sys/net/core/wmem_default:該文件指定發送套接字緩沖區大小的默認值(以字節為單位),默認設置:124928
/proc/sys/net/core/wmem_max:該文件指定發送套接字緩沖區大小的最大值(以字節為單位),默認設置:124928

cat>>/etc/sysctl.conf<<EOF
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
EOF
sysctl -p

NFS優缺點
局限
存在單點故障,如果NFS server宕機了,所有客戶端都不能訪問共享目錄。
在大數據高並發的場合,NFS效率、性能有限。
客戶端認證是基於IP和主機名的,權限要根據ID識別,安全性一般。
NFS數據是明文的,NFS本身不對數據完整性作驗證。
多臺客戶機器掛載一個NFS服務器。當服務端出問題後,所有的NFS客戶端都處於掛掉狀態。


tips:

umount -lf 掛載點 強制卸載

NFS網絡文件系統原理與搭建