NFS配置详解
1、NFS服務(wù)介紹
????????? 1.1 什么是NFS?
???????? NFS是Network File System的縮寫(xiě)。中文意思是網(wǎng)絡(luò)文件系統(tǒng)。它的主要功能是通過(guò)網(wǎng)絡(luò)(一般是局域網(wǎng))讓不同的主機(jī)系統(tǒng)之間可以共享文件或者目錄。NFS客戶端(一般為應(yīng)用服務(wù)器,例如web)可以通過(guò)掛載(mount)的方式將NFS服務(wù)器端共享的數(shù)據(jù)目錄掛載到NFS客戶端本地系統(tǒng)中(就是某一個(gè)掛載點(diǎn))。從NFS客戶端的機(jī)器本地看,NFS服務(wù)器共享的目錄就好像是客戶端自己的磁盤(pán)分區(qū)或者目錄一樣,而實(shí)際上卻是遠(yuǎn)端的NFS服務(wù)器的目錄。
??????? NFS網(wǎng)絡(luò)文件系統(tǒng)很想windows系統(tǒng)的網(wǎng)絡(luò)共享、安全功能、網(wǎng)絡(luò)驅(qū)動(dòng)器映射,這也和linux系統(tǒng)里的samba服務(wù)類(lèi)似。只不過(guò)一般情況,windows網(wǎng)絡(luò)共享服務(wù)或者samaba服務(wù)于辦公局域網(wǎng)共享。互聯(lián)網(wǎng)中小網(wǎng)站架構(gòu)后端常用NFS作為數(shù)據(jù)共享,如果是大型網(wǎng)站,那么可能還會(huì)用到更復(fù)雜的分布式文件系統(tǒng),例如:Moosefs(mfs)、glusterfs,FastDFS。
1.2NFS應(yīng)用場(chǎng)景
???????? 在企業(yè)集群架構(gòu)的工作場(chǎng)景,NFS網(wǎng)絡(luò)文件系統(tǒng)一般用來(lái)存儲(chǔ)共享視頻、圖片、附件等靜態(tài)資源文件,一般是把網(wǎng)絡(luò)用戶上傳的文件都放在NFS共享里,例如:BBS產(chǎn)品的圖片、附件、頭像,注意網(wǎng)站BBS程序不要放在NFS共享里,然后前端所有的節(jié)點(diǎn)訪問(wèn)這些靜態(tài)資源時(shí)都會(huì)讀取NFS存儲(chǔ)上的資源。NFS是當(dāng)前互聯(lián)網(wǎng)架構(gòu)中最常見(jiàn)的數(shù)據(jù)存儲(chǔ)服務(wù)之一,特別是中小網(wǎng)站公司應(yīng)用頻率最高。大公司或者門(mén)戶除了使用NFS外,還可能會(huì)使用更復(fù)雜的分布文件系統(tǒng)Moosefs(mfs),glusterfs,FastDFS等。
1.3架構(gòu)圖
?????????????
1.4 企業(yè)生產(chǎn)集群為什么需要共享存儲(chǔ)角色
??????? 這里通過(guò)圖解給大家集群架構(gòu)需要共享存儲(chǔ)服務(wù)的理由:例如:A用戶傳圖片到Web1服務(wù)器,然后讓B用戶訪問(wèn)這張圖片,結(jié)果B用戶訪問(wèn)的請(qǐng)求分發(fā)到了Web2,因?yàn)閃eb2上沒(méi)有這張圖片,結(jié)果無(wú)法看到A用戶上傳的圖片,如果此時(shí)有一個(gè)共享存儲(chǔ),A用戶上傳圖片無(wú)論發(fā)到Web1還是Web2上,最終都存儲(chǔ)到共享存儲(chǔ)上,此時(shí)B用戶訪問(wèn)圖片時(shí),無(wú)論分發(fā)到Web1,還時(shí)Web2上,最終也都會(huì)去貢獻(xiàn)存儲(chǔ)上去訪問(wèn),這樣就可以訪問(wèn)到資源了。這個(gè)共享存儲(chǔ)的位置可以通過(guò)開(kāi)源軟件和商業(yè)硬件實(shí)現(xiàn),互聯(lián)網(wǎng)中小型集群架構(gòu)會(huì)用普通PC服務(wù)器和NFS文件系統(tǒng)實(shí)現(xiàn)。
當(dāng)沒(méi)有NFS共享存儲(chǔ),用戶訪問(wèn)圖片的情況:
???????????
??????????? 有NFS共享存儲(chǔ),用戶訪圖片的情況
??????????
2、 NFS系統(tǒng)原理介紹:
2.1 NFS原理圖
????????????
2.2 RPC服務(wù)
???????? NFS本身的服務(wù)沒(méi)有提供文件傳輸?shù)膮f(xié)議,但是NFS卻能讓我們進(jìn)行文件的共享,其中的原因是NFS使用RPC協(xié)議。所以用到NFS的地方都需要啟動(dòng)RPC服務(wù),不論是服務(wù)器端還是客戶端,NFS和RPC的關(guān)系我們可以用下邊這張圖來(lái)理解。
?????????
3 、NFS部署環(huán)境準(zhǔn)備
3.1 NFS服務(wù)部署服務(wù)器準(zhǔn)備
???????????
3.2 檢查模擬環(huán)境
[root@nfs-server ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
[root@nfs-server nfs]# uname -r
2.6.32-504.el6.x86_64
[root@nfs-server nfs]# uname -i
x86_64
3.3 修改服務(wù)器端客戶端名字等信息
??? 3.3.1 nfs服務(wù)器端
?????????? [root@root ~]# hostname nfs-server
?????????? [root@root ~]# cat /etc/sysconfig/network
?????????? NETWORKING=yes????????????????????????????????????????
?????????? HOSTNAME=nfs-server????
?????????? [root@root ~]# cat /etc/hosts
?????????? 192.168.196.130 nfs-server
??? 3.3.2 nfs客戶端
????????? [root@lroot ~]# hostname lamp01
????????? [root@root ~]# cat /etc/sysconfig/network
????????? NETWORKING=yes
????????? HOSTNAME=lamp01
????????? [root@root ~]# cat /etc/hosts
???????? 192.168.196.131 lamp01
????????? [root@lroot ~]# hostname lamp02
????????? [root@root ~]# cat /etc/sysconfig/network
????????? NETWORKING=yes
????????? HOSTNAME=lamp02
????????? [root@root ~]# cat /etc/hosts
????????? 192.168.196.128 lamp02
4、 NFS SERVER端配置
4.1 NFS軟件列表
要部署NFS服務(wù),需要安裝下面的軟件包:
nfs-utils:NFS服務(wù)的主程序
nfs-utils-lib :NFS以來(lái)的庫(kù)
rpcbind:Centos6.X下面RPC的主程序(CentOs5.X下面為portmap)
4.2 檢查軟件是否安裝
??????? [root@nfs-server ~]# rpm -qa nfs-utils rpcbind
4.3 安裝軟件:
?????? [root@nfs-server ~]# yum install nfs-utils rpcbind
4.4 配置rpcbind
????? 我們配置NFS服務(wù)器的時(shí)候需要先配置好rpcbind,并且啟動(dòng)時(shí)候也要先啟動(dòng)rpcbind
?????? 4.4.1 查看nfs-ser的運(yùn)行狀態(tài)(rpcbind)
???????????? [root@nfs-server ~]# /etc/init.d/rpcbind status
?????? 4.4.2 啟動(dòng)rpcbind程序
??????????? [root@nfs-server ~]# /etc/init.d/rpcbind restart
????? 4.4.3 將啟動(dòng)命令放置到/etc/rc.local開(kāi)機(jī)啟動(dòng)腳本中
????? 4.4.4 檢查開(kāi)機(jī)自啟動(dòng)(rpcbind)
?????????? [root@nfs-server ~]# chkconfig --list rpcbind
?????????? rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
????? 4.4.5 設(shè)置開(kāi)機(jī)自啟動(dòng)
????????? [root@nfs-server ~]# chkconfig rpcbind on
???? 4.4.6 檢查rpcbind是否運(yùn)行
????????? [root@nfs-server ~]# /etc/init.d/rpcbind status
4.5 配置nfs主程序
????? 4.5.1 查看nfs運(yùn)行狀態(tài)
?????????? [root@nfs-server ~]# /etc/init.d/nfs status
????? 4.5.2 啟動(dòng)nfs主程序
????????? [root@nfs-server ~]# /etc/init.d/rpcbind restart
注意:要保證rpcbind比nfs先啟動(dòng),這里我們需要知道通過(guò)
[root@nfs-server ~]# less /etc/init.d/nfs和[root@nfs-server ~]# less /etc/init.d/rpcbind可以發(fā)現(xiàn),就可以確定開(kāi)機(jī)啟動(dòng)過(guò)程中他們啟動(dòng)的順序。
???? 4.5.3 將啟動(dòng)命令放置到/etc/rc.local開(kāi)機(jī)啟動(dòng)腳本中
???? 4.5.4 檢查開(kāi)機(jī)自啟動(dòng)(nfs)
?????????? [root@nfs-server ~]# chkconfig --list nfs
?????????? nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:of
???? 4.5.5 設(shè)置開(kāi)機(jī)自啟動(dòng)
????????? [root@nfs-server ~]# chkconfig nfs on
???? 4.5.6 檢查nfs是否運(yùn)行
????????? [root@nfs-server ~]# /etc/init.d/nfs status
4.6 檢查輸出rpc信息
????????? [root@nfs-server ~]# rpcinfo -p
4.7 配置NFS配置文件
????? 4.7.1 NFS服務(wù)配置文件
????????? NFS服務(wù)的默認(rèn)配置文件路徑為:/etc/exports,并且默認(rèn)是空的。
?????????? [root@nfs-server ~]# ll /etc/exports
?????????? -rw-r--r--. 1 root root 0 Jan 12 2010 /etc/exports
4.8 配置文件格式
???? 4.8.1 書(shū)寫(xiě)格式有兩種
NFS共享的目錄 NFS客戶端地址1(參數(shù)1,參數(shù)2……) 客戶端地址2(參數(shù)1,參數(shù)2……)
NFS共享的目錄 ?NFS客戶端地址(參數(shù)1,參數(shù)2……)
??? 4.8.2 我們可以通過(guò)man exports查看幫助,man手冊(cè)中有舉例
???????????? [root@nfs-server ~]# man exports
?????
???? 這里給出一種配置文件舉例
?????
4.9 格式參數(shù)說(shuō)明:
????? 4.9.1 NFS共享的目錄即就是NFS——SERVER端要共享的目錄,這里是用data舉例(首先準(zhǔn)備共享的目錄必須存在),
????? 4.9.2 客戶端地址我們可以用指定Ip的主機(jī),指定子網(wǎng)中的所有主機(jī)、指定域名的主機(jī)、指定域名的所有主機(jī)、所有主機(jī)。具體我們來(lái)看下邊表格? 。
?????????? ? ?? ?
????? 4.9.3 參數(shù)用于指定訪問(wèn)權(quán)限等主要有三類(lèi),參數(shù)是可選的,具體看下邊表格。
??????????? 指定用戶訪問(wèn)權(quán)限:
????????????
?????? ? ? ? ? ??
補(bǔ)充:只有這兩種讀寫(xiě)控制權(quán)限權(quán)限。
??????????? 用戶映射選項(xiàng)
?????????????????
??????? 其他選項(xiàng):
????????????????
補(bǔ)充:以上就是選項(xiàng),其中標(biāo)紅的是常用的。配置過(guò)程中可以組合使用,生產(chǎn)中常見(jiàn)使用如下配置:
?
4.10 檢查配置文件語(yǔ)法是否正確
??????? [root@nfs-server ~]# exportfs -rv
?????? exporting 192.168.196.0/24:/data
4.11 配置文件權(quán)限信息:
????? 配置完成后我們可以在下邊文件中查看共享目錄的信息
??????? [root@nfs-server ~]# cat /var/lib/nfs/etab
到這里NFS服務(wù)器端就配置成功了,我們這里就可以測(cè)試一下是否配置成功。
5 NFS CLIENT端配置
5.1 NFS軟件列表
????? 要部署NFS服務(wù),客戶端也需要需要安裝下面的軟件包:
nfs-utils:NFS服務(wù)的主程序
nfs-utils-lib :NFS以來(lái)的庫(kù)
????? rpcbind:Centos6.X下面RPC的主程序(CentOs5.X下面為portmap)
5.2 NFS客戶端的nfs和rpcbind服務(wù)配置過(guò)程和SERVER端過(guò)程一樣。
???? 這里不做具體闡述,到這里我們的客戶端已經(jīng)啟動(dòng)了rpcbind服務(wù)(客戶端不需要啟動(dòng)nfs服務(wù),但是需要安裝)。
5.3 檢查rpcbind是否啟動(dòng)
?????? [root@lamp01 ~]# /etc/init.d/rpcbind status
?????? rpcbind (pid 1204) is running...
5.4 顯示NFS服務(wù)器的安裝信息
?????? [root@lamp01 ~]# showmount -e 192.168.196.130
?????? Export list for 192.168.196.130:
????? /data 192.168.196.0/24
5.5 NFS客戶端掛載
????? 5.5.1 掛載的格式
?????
???? 5.5.2 建立掛載目錄
????????????? [root@lamp01 ~]# mkdir -p /mnt/nfs
????? 5.5.3 掛載
???????????? [root@lamp01 ~]# mount -t nfs 192.168.196.130:/data /mnt/nfs/
???? 5.5.4 檢查是否掛載成功
??????????? [root@lamp01 ~]# df -h
??????
???????????? [root@lamp01 ~]# mount
???????
????? 5.5.5 將掛載信息寫(xiě)入/etc/rc.local腳本
?????????????? [root@lamp01 ~]# cat /etc/rc.local
???????
到這里我們的NFS服務(wù)就配置完畢。
6 測(cè)試配置結(jié)果
6.1 檢查客戶端向nfs目錄下寫(xiě)入文件是否可以。、
到這里我們的配置還沒(méi)有完成。我們?cè)跍y(cè)試過(guò)程中會(huì)發(fā)現(xiàn)按照上邊的權(quán)限,客戶端不能向文件中寫(xiě)入內(nèi)容。這里我們還需要配置一些文件。
7 補(bǔ)充配置(在NFS服務(wù)器SERVER端)
7.1 配置說(shuō)明
按照上邊寫(xiě)的的NFS服務(wù)器端給的配置文件,我們只指定了讀寫(xiě)權(quán)限、同步權(quán)限、和用戶匿名映射權(quán)限。我們來(lái)看配置文件:
? ????? 查看配置參數(shù)的用戶映射信息參數(shù)作用,我們就會(huì)知道,我們不管客戶端使用什么身份訪問(wèn)就會(huì)將權(quán)限壓縮為匿名用戶勸降訪問(wèn),也就是配置文件uid為65534的用戶和gid為65534的用戶組權(quán)限訪問(wèn)。所以就需要把該共享目錄的屬組改為65534的用戶,甚至屬組也改為65534。
7.2 配置
????? 7.2.1 查看data的信息
????????????? [root@nfs-server nfs]# ls -ld /data
???????
???? 7.2.2 查看這個(gè)用戶是誰(shuí)?
???????????? [root@nfs-server nfs]# grep 65534 /etc/passwd
??????
????? 7.2.3 更改共享目錄的屬組
????????????? [root@nfs-server nfs]# chown -R nfsnobody /data
????? 7.2.4 檢查配置結(jié)果
????????????? [root@nfs-server nfs]# ls -ld /data
???????
到這里,就可以使用了。
8 常見(jiàn)配置錯(cuò)誤
8.1 客戶端沒(méi)有裝nfs/rpcbind程序
8.2 服務(wù)器端沒(méi)有啟動(dòng)服務(wù)
8.3 客戶端/服務(wù)器端防火墻沒(méi)有關(guān)閉。
???? NFS服務(wù)一般用于內(nèi)網(wǎng),所以關(guān)閉掉防火墻沒(méi)有多大影響,性能有很大提升。
8.4 服務(wù)器端啟動(dòng)順序不正確(rpcbind必須比nfs啟動(dòng)早)。
8.5 排錯(cuò)思路:
???? 8.5.1 ping 服務(wù)器ip是否通,不通檢查是否與服務(wù)器在同一個(gè)局域網(wǎng),自己網(wǎng)絡(luò)是否配置好。
???? 8.5.2 ping通的,telnet 服務(wù)器ip 端口號(hào)(111)檢查端口是否開(kāi)。
??????
?????????????? ?? 出現(xiàn)上邊信息說(shuō)明正確。否則檢查端口號(hào)。
????????????????? 如果信息正確,還是掛載失敗,檢查防火墻患有selinux是否關(guān)閉。
9 NFS優(yōu)化
9.1 硬件優(yōu)化
???? 配置NFS配置服務(wù)器時(shí)盡可能的選擇:
???? sas/ssd硬盤(pán),買(mǎi)多塊,raid0/raid10。網(wǎng)絡(luò)吞吐量要大,至少千兆(多塊bond)
9.2 NFS服務(wù)器端配置
???? [root@nfs-server ~]# cat /etc/exports
???? /data 192.168.196.0/24(rw,sync,all_squash)
9.3 NFS客戶端掛載:risise、wsize、noatime、nodirtime、nosuid、noxexc、soft(hard,intr)
????? [root@lamp01~]#mount -t nfs -o nosuid,noexec,noatime,nodiratime,rsize=131072,wsize=131072 192.168.196.130:/data /mnt/nfs
????? [root@lamp01 ~]# mount -t nfs -o noatime,nodiratime,rsize=131072,wsize=131072 192.168.196.130:/data /mnt/nfs
????? [root@lamp01 ~]# mount -t nfs -o noatime,nodiratime 192.168.196.130:/data /mnt/nfs
9.4 有關(guān)NFS服務(wù)的所有服務(wù)器內(nèi)核優(yōu)化
?????
10 補(bǔ)充
10.1 NFS客戶端可寫(xiě)的服務(wù)端配置條件
?????? 當(dāng)多個(gè)NFS客戶端以NFS方式寫(xiě)入修改服務(wù)器端的文件系統(tǒng)時(shí),需要具有以下個(gè)權(quán)限:
???????? ????? a) NFS服務(wù)器/etc/exports設(shè)置需要開(kāi)放可寫(xiě)入的權(quán)限,即服務(wù)端的共享權(quán)限
???????????? b)?? NFS服務(wù)器實(shí)際要共享的NFS目錄權(quán)限具有可寫(xiě)入w的權(quán)限,即服務(wù)端本地目錄的安全權(quán)限,
???????????? c) 每臺(tái)機(jī)器都對(duì)應(yīng)存在和nfs默認(rèn)配置UID的相同UID 65534的nfsnobody用戶(確保所有客戶端的訪問(wèn)權(quán)限統(tǒng)一,否則每個(gè)機(jī)器需要同時(shí)建立相同用UID的用戶,并覆蓋NFS的默認(rèn)配置)。
????????? 當(dāng)滿足上述三個(gè)條件,多個(gè)NFS客戶端才能具有互相寫(xiě)入,互相修改其他主機(jī)寫(xiě)入文件的權(quán)限,這在開(kāi)篇講解過(guò)的大規(guī)模集群環(huán)境,作為集群共享存儲(chǔ)時(shí)尤為注意。
到這步為止,NFS服務(wù)端一個(gè)NFS共享目錄/data共享給10.0.0.0/24 內(nèi)主機(jī)可讀寫(xiě)就配置完了。下面還需要在客戶端主機(jī)掛載服務(wù)端共享的/data,才可以在客戶端真正讀寫(xiě)到該共享目錄。
10.2 NFS與掛載優(yōu)化
????? 10.2.1 掛載的格式
????? ? ? ? ? ??
???? 10.2.2 mount優(yōu)化
?????????????????????下邊是mount -o參數(shù)對(duì)照表
?????????????????
????? 10.2.3 NFS客戶端mount掛載優(yōu)化
?????????? 某網(wǎng)友問(wèn):在企業(yè)生產(chǎn)環(huán)境中,NFS客戶端掛載有沒(méi)有必要加參數(shù),比如加noexec、nosuid、nodev. bg、soft. rsize、 wsize 等參數(shù), 我看書(shū)上說(shuō)建議掛,rsize,wsize 這兩個(gè)是緩存參數(shù),是否也建議加呢?老師你在生產(chǎn)環(huán)境中是怎么做的?
??????? 解答:這個(gè)問(wèn)題屬于mount掛載優(yōu)化內(nèi)容(有些參數(shù)也適合其它文件系統(tǒng)),一般來(lái).說(shuō)要適當(dāng)加掛載參效,但是,最好是做好測(cè)試,用數(shù)據(jù)來(lái)說(shuō)話,到底是掛我還是不掛載。
????? 10.2.3.1 有關(guān)系統(tǒng)安全掛載參數(shù)選項(xiàng)
??????? 在企業(yè)工作場(chǎng)景,一般來(lái)說(shuō),NFS服務(wù)器共享的只是普通靜態(tài)數(shù)據(jù)(圖片、附件、視頻), 不需要執(zhí)行suid、exec 等權(quán)限,掛載的這個(gè)文件系統(tǒng)只能作為數(shù)據(jù)存取之用,無(wú)法執(zhí)行程序,對(duì)于客戶端來(lái)講增加了安全性,例如:很多×××篡改站點(diǎn)文件都是由上傳入口上傳的程序到存儲(chǔ)目錄,然后執(zhí)行的。 因此在掛載的時(shí)候,用下面的命令很有必要:
安全掛載參數(shù):
???????????????? [root@lamp01 ~]# mount -t nfs -o nosuid,noexec,noatime,rw 192.168.196.130:/data /mnt/nfs
???????? 通過(guò)mount -o指定掛載參數(shù)和在/etc/fstab里指定掛載參數(shù)效果時(shí)一樣的。網(wǎng)絡(luò)文件系統(tǒng)和本地文件系統(tǒng)效果是一樣的。
???? 10.2.3.2 mount 掛載性能優(yōu)化參數(shù)選項(xiàng)
????????????????? 禁止更新目錄及文件時(shí)間挫掛載
??????????????????? [root@lamp01 ~]# mount -t nfs -o noatime,nodiratime 192.168.196.130:/data /mnt/nfs
???????????????? 安全加優(yōu)化的掛載方式
?????????????????? [root@lamp01~]#mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 192.168.196.130:/data /mnt/nfs
???????????????? 默認(rèn)掛載方式
????????????????? [root@lamp01~]#mount -t nfs 192.168.196.130:/data /mnt/nfs
注意:以具體業(yè)務(wù)需要實(shí)際測(cè)試選擇掛載參數(shù)
????? 10.2.4 NFS內(nèi)核優(yōu)化相關(guān)建議
???????????????? NFS內(nèi)核優(yōu)化相關(guān)建議
?????? 優(yōu)化說(shuō)明:
???????????
???????? 上述文件對(duì)應(yīng)的具體的優(yōu)化命令:
??????????? cat >>/etc/sysctl.conf<<EOF
??????????? net.core.wmem_default = 8388608
???????????? net.core.remem_default = 8388608
???????????? net.core.rmem_max = 16777216
???????????? net.core.wmem_max = 16777216
???????????? EOF
執(zhí)行sysctl -p生效
???? 10.2.5 如果卸載的時(shí)候提示:umount:/mnt/nfs:device is busy
???????????????? 需要退出掛載目錄再進(jìn)行卸載,或者是NFS Server宕機(jī)了,需要強(qiáng)行卸載,則是使用下邊命令解決:
???????????????? [root@lamp01~]#umount -lf /mnt/nfs
????? 10.2.6 大型網(wǎng)站NFS網(wǎng)絡(luò)文件系統(tǒng)替代軟件:
???????????? 分布式文件系統(tǒng)Moosefs(mfs)、glusterfs,FastDFS。
轉(zhuǎn)載于:https://blog.51cto.com/967243153/2153569
總結(jié)
- 上一篇: 支持解析网站
- 下一篇: java+构造函数+native_jav