NFS網絡文件共享


NFS(Network File System)

NFS在企業中的應用場景

企業集群架構中,NFS網絡文件系統一般用來存儲共享的視頻、圖片、附件等靜態資源,一般把網站用戶上傳的文件都放到NFS共享里,例如圖片、附j件、頭像,然后前端所有的節點訪問這些靜態資源時都會讀取NFS存儲上的資源。NFS是當前互聯網系統架構中最常用的數據存儲服務之一,特別是中小型網站公司應用頻率更高。大公司除了使用NFS外,還可能使用更為復雜的分布式文件系統Moosefs,glusterfs,FastDFS等

非常low的企業架構:

1模仿在餐廳吃飯

2

RPC工作原理:

 

從NFS客戶端訪問NFS服務端的整體過程:

 NFS配置

一、NFS服務端部署環境准備

  • NFS服務器端:10.69.112.78
  • NFS客戶端:10.69.112.133
  • NFS客戶端:10.69.112.134

二、NFS server端設置(先安裝rpcbind再安裝nfs-utils,啟動過程也是

  • rpm -qa nfs-utils rpcbind 
  • yum install nfs-utils rpcbind -y
  • /etc/init.d/rpcbind start
  • netstat -tunlp | grep rpcbind
  • chkconfig --list rpcbind
  • rpcinfo -p localhost
  • /etc/init.d/nfs start
  • chkconfig --list nfs
  • chkconfig nfs on

rpcbind和nfs-utils都是開機自啟動,如何保證rpcbind先啟動?

對比/less/etc/init.d/rpcbind和/less/etc/init.d/nfs中# chkconfig: 2345 13 87這項,也可以不用chkconfig,啟動命令寫入/etc/rc.local中。

三、NFS服務端配置

  • vim /etc/exports

  /data  10.69.112.*(rw,sync,all_squash)

  • /etc/init.d/nfs restart
  • showmount -e 127.0.0.1
  • mount -t nfs 10.69.112.78:/data /mnt#掛載測試
  • cat /var/lib/nfs/etab #服務器端nfs所有參數信息

四、NFS客戶端配置

  • /etc/init.d/rpc start
  • mount -t nfs 10.69.112.78:/data /mnt
  • 此時能在10.69.112.133上直接訪問10.69.112.78上的/data下的內容,但是不能創建
  • 需要在78上chown -R nfsnobody /data
  • 此時,在133上的/mnt目錄下就能直接touch文件了
  • 掛載命令放到rc.local中,開機掛載,不要放在fstab中,文件系統比網卡先掛載

NFS配置文件權限參數

  • rw:讀寫
  • ro:只讀
  • sync:寫入硬盤,不會丟數據
  • async:寫入內存,異步,可能會丟數據
  • all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody);
  • no_all_squash:與all_squash取反(默認設置);
  • root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置);
  • no_root_squash:與rootsquash取反;
  • anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx);
  • anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,並指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);

 

使得NFS Client端可寫的服務端配置條件

當多個NFS客戶端以NFS方式寫入修改服務器端的文件系統時,需要具有以下權限:

a)NFS服務器/etc/exports設置需要開放可寫入的權限,即服務端的共享權限

b)NFS服務器實際要分享的NFS目錄權限具有可寫入w的權限,即服務端本地目錄的安全權限

c)每台機器都對應存在和nfs默認配置UID的相同UID65534的nfsnobody用戶

NFS服務重要文件說明

/etc/exports NFS服務主配置文件

/usr/sbin/exportfs NFS服務管理命令 exportfs -rv 加載配置生效,等價重啟/etc/init.d/nfs restart

showmount 在服務端和客戶端查看掛載情況

/var/lib/nfs/etab NFS配置文件的完整參數設定的文件

企業生產環境nfs性能優化掛載

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

NFS服務內核優化

1)/proc/sys/net/core/rmem_default

改文件指定接收套接字緩沖區大小的缺省值,缺省設置:124928

2)/proc/sys/net/core/rmem_max

該文件指定了接收套接字緩沖區大小的最大值,缺省設置124928

3)/proc/sys/net/core/wmem_default

改文件指定了發送套接字緩沖區大小的缺省值,缺省設置:124928

4)/proc/sys/net/core/wmem_max

改文件指定了發送套接字緩沖區大小的最大值,缺省設置:124928

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

sysctl -p

生產場景NFS共享存儲優化小結

1、硬盤:ssa/ssd硬盤,raid0/raid10,網卡吞吐量大,千兆

2、NFS服務器端配置:/data

10.69.112.78/24(rw,sync,all_squash)

3、NFS客戶端掛載

4、內核參數

5、關閉服務器時一定要記得關閉nfs,否則卸載時提示:umount:/mnt:device is busy

需要退出掛載目錄再進行卸載,或者是NFS Server宕機了,需要強制卸載: umount -lf /mnt

 

練習:三台服務器(server:10.69.112.78   agent:10.69.112.133 10.69.112.134)

(1)在NFS服務器A上共享/data/w_shared及/data/r_shared兩個文件目錄,允許從NFS客戶端B,C上分別掛載共享目錄后可實現從B,C上只讀/data/r_shared,可寫/data/w_shared。

(2)NFS客戶端B上得掛載點為/data/b_w(寫),/data/b_r(讀)

(3)從NFS客戶端B上的NFS可寫掛載點目錄創建任意文件,從C上可以刪除這個創建的文件

服務端

  • yum install nfs-utils rpcbind -y
  • /etc/init.d/rpcbind start
  • /etc/init.d/ntp start
  • mkdir -p /data/w_shared /data/r_shared
  • chown -R nfsnobody:nfsnobody /data/(若不修改,客戶端不能創建刪除文件)
  • vim /etc/exports

客戶端

  • yum install nfs-utils rpcbind
  • /etc/init.d/rpcbind start
  • /etc/init.d/ntp start
  • mount -t nfs 10.69.112.78:/data/r_shared /data/b_r
  • mount -t nfs 10.69.112.78:/data/w_shared /data/b_w

使用linux rescue(救援模式)修復/etc/fstab(改錯配置,然后重啟系統)

root密碼忘記,重新獲取root密碼

 /export    172.28.149.99(rw,sync,all_squash,anonuid=600,anongid=600)


免責聲明!

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



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