1. NFS介紹
NFS 是 Network File System 的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun 公司開發,於 1984 年向外公佈。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網絡訪問位於服務器磁盤中的數據,是在類 Unix 系統間實現磁盤文件共享的一種方法。
NFS 在文件傳送或信息傳送過程中依賴於 RPC 協議。RPC,遠程過程調用 (Remote Procedure Call)是能使客戶端執行其他系統中程序的一種機制。 NFS 本身是沒有提供信息傳輸的協議和功能的。
NFS 應用場景,常用於高可用文件共享,多臺服務器共享同樣的數據,可擴展性比較差,本身高可用方案不完善,取而代之的數據量比較大的可以採用 MFS、 TFS、 HDFS 等等分佈式文件系統。
2. NFS配置參數
1.NFS常見配置參數:
參數名稱 | 參數用途 |
ro | 只讀權限 |
rw | 可讀可寫權限 |
sync | 同步寫入數據,性能可能會降低 |
async | 異步寫入數據,性能高,數據易丟失 |
all_squash | 無論身份如何壓縮用戶身份爲匿名用戶 |
anonuid | 配置all_squash使用,指定NFS的用戶UID,必須存在系統 |
anongid | 配置all_squash使用,指定NFS的用戶UID,必須存在系統 |
2. NFS重要配置文件:
NFS常用路徑 說明 /etc/exports NFS主配置文件,配置NFS共享目錄 /usr/sbin/exportfs exportfs –rv nfs服務的管理命令,加載配置生效 /usr/sbin/showmount showmount –e remoteip 查看NFS配置及掛載結果的命令 /var/lib/nfs/etab nfs配置文件的完整參數,有很多都是默認參數 /proc/mounts grep mnt /proc/mounts 查看客戶端掛載參數
3. NFS部署
3.1 NFS部署環境準備
OS版本:centos 7.5 64bit
[root@nfs-server ~]# cat /etc/redhat-release #查看系統版本
[root@nfs-server ~]# uname -r #查看內核版本
[root@nfs-server ~]# systemctl stop ebtables firewalld #關閉ebtables firewall防火牆
[root@nfs-server ~]# systemctl disable ebtables firewalld #重啓不啓動ebtables firewall防火牆
[root@nfs-server ~]# vim /etc/sysconfig/selinux #設置selinux 狀態爲disabled
[root@nfs-server ~]# setenforce 0 # 臨時將selinux設置爲disabled
[root@nfs-server ~]# getenforce #檢測selinux是否關閉
[root@nfs-server ~]# ifconfig ens33|awk -F '[ :]+' 'NR==2{print $3}' #查看IP地址
[root@nfs-server ~]# hostname #查看主機名
3.2 部署配置NFS服務
1. 安裝NFS服務
[root@nfs-server ~]# yum -y install nfs-utils rpcbind
2. 啓動服務
[root@nfs-server ~]# systemctl start nfs-server rpcbind
[root@nfs-server ~]# systemctl enable nfs-server rpcbind
3. 查看rpcbind的註冊信息
[root@nfs-server ~]# rpcinfo -p localhost
4. 查看rpc進程
[root@nfs-server ~]# ps -ef |egrep "rpc|nfs"
5. 修改NFS配置文件共享目錄share至192.168.1.0/24網段,可讀,可寫,統一賬戶
[root@nfs-server ~]# vim /etc/exports
/share 192.168.1.0/24(rw,sync,all_squash)
解釋:
/share 192.168.1.0/24 (rw,sync,all_squash)
共享目錄 可訪問放段(讀寫權限,實時同步,壓縮匿名權限)
6. 創建共享目錄
[root@nfs-server ~]# mkdir /share
7. 重啓NFS服務
[root@nfs-server ~]# systemctl restart nfs-server
[root@nfs-server ~]# systemctl status nfs-server
8. 查看NFS共享的文件信息 ,NFS統一給客戶端的65534用戶權限
[root@nfs-server ~]# cat /var/lib/nfs/etab
9. 查看UID爲65534的用戶名
[root@nfs-server ~]# grep "65534" /etc/passwd
10. 修改共享目錄的所有者,所屬組
[root@nfs-server ~]# chown -R nfsnobody:nfsnobody /share
[root@nfs-server ~]# ll / |grep share
12. 查看server是否配置成功
[root@nfs-server ~]# showmount -e 192.168.1.234
3.3 客戶端測試
1. 安裝軟件包
[root@nfs-client ~]# yum -y install nfs-utils rpcbind
2. 啓動服務
[root@nfs-client ~]# systemctl start nfs
[root@nfs-client ~]# systemctl enable nfs
3. 創建掛載點
[root@nfs-client ~]# mkdir -p /nfs/share
4. 臨時掛載訪問
[root@nfs-client ~]# mount -t nfs 192.168.1.234:/share /nfs/share
[root@nfs-client ~]# df –h
5. 切換目錄到掛載點下,創建一個chenjf的文件
[root@NFS-client ~]# cd /nfs/share/
[root@NFS-client share]# touch chenjf
[root@NFS-client share]# ls
6. 永久掛載
[root@nfs-client ~]# vim /etc/fstab
192.168.1.234:/share /nfs/share nfs defaults 0 0
7. 掛載全部
[root@nfs-client ~]# mount -a
[root@nfs-client ~]# df –h
8. 卸載設備時請不要在掛載點下面
[root@nfs-client ~]# umount /nfs/share
9. 當NFS-Server宕機,強制卸載
[root@nfs-client ~]# umount -lf /nfs/share
[root@nfs-client ~]# df -h
3.4 NFS優化
3.4.1 服務器優化
1、 硬件優化
NFS服務器硬件的選擇
SAS/SSD磁盤,多買幾塊硬盤做raid0/raid10。網卡吞吐量要大,至少千兆網卡。
2、 內核優化
cat >>/etc/sysctl.conf<<EOF
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
EOF
1. 加載內核生效
sysctl -p
2. 該文件指定了接收套接字緩衝區大小的缺省值(以字節爲單位),缺省設置爲124928
/proc/sys/net/core/rmem_default
3. 該文件指定了接收套接字緩衝區大小的最大值(以字節爲單位),缺省設置爲124928
/proc/sys/net/core/rmem_max
4. 該文件指定了發送套接字緩衝區大小的缺省值(以字節爲單位),缺省設置爲124928
/proc/sys/net/core/wmem_default
5. 該文件指定了發送套接字緩衝區大小的最大值(以字節爲單位),缺省設置爲124928
/proc/sys/net/core/wmem_max
3.4.2 客戶端優化
企業生產環境NFS性能掛載參數
1. 安全掛載
mount -t nfs -o nosuid,noexec,nodev,rw 192.168.1.234:/share /nfs/share
2. 禁止更新時間戳掛載
mount -t nfs -o noatime,nodiratime 192.168.1.234:/share /nfs/share
3. 追求極致
mount -t nfs -o rsize=131072,wrsize=131072 192.168.1.234:/share /nfs/share
4. 安全加優化的掛載方式(推薦)
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wrsize=131072 192.168.1.234:/share /nfs/share
5. 默認的掛載方式(默認參數滿足企業日常需求)
mount -t nfs 192.168.1.234:/share /nfs/share