介紹:
NFS 是Network File System的縮寫,即網(wǎng)絡(luò)文件系統(tǒng)。一種使用于分散式文件系統(tǒng)的協(xié)定,由Sun公司開發(fā),于1984年向外公布。功能是通過網(wǎng)絡(luò)讓不同的機(jī)器、不同的操作系統(tǒng)能夠彼此分享個(gè)別的數(shù)據(jù),讓應(yīng)用程序在客戶端通過網(wǎng)絡(luò)訪問位于服務(wù)器磁盤中的數(shù)據(jù),是在類Unix系統(tǒng)間實(shí)現(xiàn)磁盤文件共享的一種方法。
NFS 的基本原則是“容許不同的客戶端及服務(wù)端通過一組RPC分享相同的文件系統(tǒng)”,它是獨(dú)立于操作系統(tǒng),容許不同硬件及操作系統(tǒng)的系統(tǒng)共同進(jìn)行文件的分享。
NFS在文件傳送或信息傳送過程中依賴于RPC協(xié)議。RPC,遠(yuǎn)程過程調(diào)用 (Remote Procedure Call) 是能使客戶端執(zhí)行其他系統(tǒng)中程序的一種機(jī)制。NFS本身是沒有提供信息傳輸?shù)膮f(xié)議和功能的,但NFS卻能讓我們通過網(wǎng)絡(luò)進(jìn)行資料的分享,這是因?yàn)镹FS使用了一些其它的傳輸協(xié)議。而這些傳輸協(xié)議用到這個(gè)RPC功能的。可以說NFS本身就是使用RPC的一個(gè)程序。或者說NFS也是一個(gè)RPC SERVER。所以只要用到NFS的地方都要啟動(dòng)RPC服務(wù),不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實(shí)現(xiàn)PROGRAM PORT的對(duì)應(yīng)。可以這么理解RPC和NFS的關(guān)系:NFS是一個(gè)文件系統(tǒng),而RPC是負(fù)責(zé)負(fù)責(zé)信息的傳輸。
安裝:
yum install rpcbind nfs-utils -y
配置:
NFS服務(wù)的配置文件為 /etc/exports,這個(gè)文件是NFS的主要配置文件,不過系統(tǒng)并沒有默認(rèn)值,所以這個(gè)文件不一定會(huì)存在,可能要使用vim手動(dòng)建立,然后在文件里面寫入配置內(nèi)容。
/etc/exports文件內(nèi)容格式:
<輸出目錄> [客戶端1 選項(xiàng)(訪問權(quán)限,用戶映射,其他)] [客戶端2 選項(xiàng)(訪問權(quán)限,用戶映射,其他)]
a. 輸出目錄:
輸出目錄是指NFS系統(tǒng)中需要共享給客戶機(jī)使用的目錄;
b. 客戶端:
客戶端是指網(wǎng)絡(luò)中可以訪問這個(gè)NFS輸出目錄的計(jì)算機(jī)
客戶端常用的指定方式
- 指定ip地址的主機(jī):192.168.0.200
- 指定子網(wǎng)中的所有主機(jī):192.168.0.0/24 192.168.0.0/255.255.255.0
- 指定域名的主機(jī):david.bsmart.cn
- 指定域中的所有主機(jī):*.bsmart.cn
- 所有主機(jī):*
c. 選項(xiàng):
選項(xiàng)用來設(shè)置輸出目錄的訪問權(quán)限、用戶映射等。
NFS主要有3類選項(xiàng):
訪問權(quán)限選項(xiàng)
- 設(shè)置輸出目錄只讀:ro
- 設(shè)置輸出目錄讀寫:rw
用戶映射選項(xiàng)
- all_squash:將遠(yuǎn)程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody);
- no_all_squash:與all_squash取反(默認(rèn)設(shè)置);
- root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認(rèn)設(shè)置);
- no_root_squash:與rootsquash取反;
- anonuid=xxx:將遠(yuǎn)程訪問的所有用戶都映射為匿名用戶,并指定該用戶為本地用戶(UID=xxx);
- anongid=xxx:將遠(yuǎn)程訪問的所有用戶組都映射為匿名用戶組賬戶,并指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);
其它選項(xiàng)
- secure:限制客戶端只能從小于1024的tcp/ip端口連接nfs服務(wù)器(默認(rèn)設(shè)置);
- insecure:允許客戶端從大于1024的tcp/ip端口連接服務(wù)器;
- sync:將數(shù)據(jù)同步寫入內(nèi)存緩沖區(qū)與磁盤中,效率低,但可以保證數(shù)據(jù)的一致性;
- async:將數(shù)據(jù)先保存在內(nèi)存緩沖區(qū)中,必要時(shí)才寫入磁盤;
- wdelay:檢查是否有相關(guān)的寫操作,如果有則將這些寫操作一起執(zhí)行,這樣可以提高效率(默認(rèn)設(shè)置);
- no_wdelay:若有寫操作則立即執(zhí)行,應(yīng)與sync配合使用;
- subtree:若輸出目錄是一個(gè)子目錄,則nfs服務(wù)器將檢查其父目錄的權(quán)限(默認(rèn)設(shè)置);
- no_subtree:即使輸出目錄是一個(gè)子目錄,nfs服務(wù)器也不檢查其父目錄的權(quán)限,這樣可以提高效率;
修改配置
[root@MiWiFi-R3-srv Nginx]# cat /etc/exports
/share 192.168.31.0/24(rw,sync,fsid=0)
開權(quán)限(nfs開啟了w權(quán)限還不行,others還需要對(duì)/share目錄有w權(quán)限)
chmod -R o+w /share
先為rpcbind和nfs做開機(jī)啟動(dòng):
[root@MiWiFi-R3-srv nginx]# systemctl enable nfs-server.service
[root@MiWiFi-R3-srv nginx]# systemctl enable rpcbind.service
啟動(dòng)(必須先啟動(dòng)rpcbind服務(wù))
[root@MiWiFi-R3-srv nginx]# systemctl start rpcbind.service
[root@MiWiFi-R3-srv nginx]# systemctl start nfs-server.service
確認(rèn)nfs服務(wù)器啟動(dòng)成功
[root@MiWiFi-R3-srv nginx]# rpcinfo
[root@MiWiFi-R3-srv nginx]# exportfs
/share 192.168.31.0/24
[root@MiWiFi-R3-srv nginx]# showmount -e #默認(rèn)查看自己共享的服務(wù),前提是要DNS能解析自己,不然容易報(bào)錯(cuò)
Export list for MiWiFi-R3-srv:
/share 192.168.31.0/24
[root@MiWiFi-R3-srv nginx]# showmount -a #顯示已經(jīng)與客戶端連接上的目錄信息
All mount points on MiWiFi-R3-srv:
=====================客戶端
yum install rpcbind nfs-utils -y
systemctl enable rpcbind.service && systemctl start rpcbind.service
showmount -e NFS服務(wù)器IP #檢查 NFS 服務(wù)器端是否有目錄共享
mount -t nfs 192.168.31.106:/share /var/www/html/
=====================測(cè)試
基于nginx的負(fù)載均衡配置,打開后端被代理服務(wù)的access.log日志,tail -f access.log來觀察訪問,訪問LB刷新頁面發(fā)現(xiàn)內(nèi)容保持一致,但是每臺(tái)被代理的機(jī)器的access.log日志都有新的內(nèi)容進(jìn)來






