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

NFS工做流程圖node

步驟1:先啓動RPC服務
步驟2:啓動NFS服務(向RPC服務註冊啓動的端口)
步驟3:客戶向RPC請求NFS
步驟4:RPC返回端口到客戶
步驟5:拿着地址端口請求傳輸數據
NFS原理圖.JPGvim

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

1:檢查操做系統內核版本,確認是否支持服務器

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

  2.1:檢查NFS服務是否安裝
app

   rpm -aq nfs-utils rpcbind
異步

  2.2:若是未安裝,需進行安裝async

  LANG=enide

  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  掛載點        強制卸載

相關文章
相關標籤/搜索