NFS案例和深入掛載
all_squash不管客戶端什么用戶,到服務(wù)端都是nfsnobody
anonuid=匿名用戶的UID
anongid=匿名用戶的GID
[root@nfs01 ~]# cat /var/lib/nfs/etab
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)
更改默認(rèn)NFS默認(rèn)
用戶項(xiàng)目實(shí)踐2:
NFS共享的匿名用戶用www绢涡,使得客戶端上傳的圖片都是www用戶并级,而不是匿名的nfsnobody熄攘。
?web01?backup客戶端實(shí)現(xiàn)掛載到nfs。
??NFS下面共享/backup?,允許web01?backup客戶端(/backup)可讀寫(xiě)溪北。
web01上傳圖片智玻,backup上可以刪除web01上傳的圖片遂唧。
?NFS下面共享/data1,允許?web01?backup客戶端10網(wǎng)段只讀(data1)。
實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)掛載吊奢。
1)nfs01服務(wù)端NFS盖彭、以及所有客戶端:
[root@nfs01?~]#?useradd?-u?1111?www
[root@nfs01?~]#?id?www
uid=1111(www)?gid=1111(www)?組=1111(www)
2)服務(wù)端NFS特殊配置:
[root@nfs01?~]#?tail?-2?/etc/exports
/data?172.16.1.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)
/data1?10.0.0.0/24(ro)
[root@nfs01?~]#?chown?-R?www.www?/data
[root@nfs01?~]#?ls?-ld?/data
drwxr-xr-x?2?www?www?70?4月??18?10:05?/data
3)服務(wù)端NFS重啟:
[root@nfs01?~]#?systemctl?reload?nfs
4)每個(gè)客戶端配置
mount?-t?nfs?172.16.1.31:/data?/data
[root@web01?~]#?df?-h
文件系統(tǒng)? ? ? ? ? ? ? ? ? ? ? 容量? ? ? ? ? ? ? ?已用? ? ? ?可用? ? ? ? ? ? 已用%? ? ? ? ? 掛載點(diǎn)
172.16.1.31:/data? ? ? ?19G? ? ? ? ? ? ? ? ? ?1.8G? ? ?18G? ? ? ? ? ? ? ? 10%? ? ? ? ? ? /data
[root@web01?/data]#?touch?new_web01.txt
[root@web01?/data]#?ls?-l
總用量0
-rw-r--r--?1?www?www?0?4月??16?10:24?ddddf
-rw-r--r--?1?www?www?0?4月??16?10:23?dddfff
-rw-r--r--?1?www?www?0?4月??18?11:01?new_web01.txt
-rw-r--r--?1?www?www?0?4月??17?11:59?oldboy.txt
-rw-r--r--?1?www?www?0?4月??17?12:30?oldgirl.txt
NFS服務(wù)的重點(diǎn)知識(shí)梳理:
當(dāng)多個(gè)NFS客戶端訪問(wèn)服務(wù)器端讀寫(xiě)文件時(shí),需要具有以下幾個(gè)權(quán)限:
1页滚、NFS服務(wù)器/etc/exports設(shè)置需要開(kāi)放可寫(xiě)入的權(quán)限召边,即服務(wù)器的共享權(quán)限。
2裹驰、NFS服務(wù)器實(shí)際要共享的NFS目錄權(quán)限具有可寫(xiě)入w的權(quán)限隧熙,即服務(wù)端本地目錄的安全權(quán)限。
3幻林、每臺(tái)機(jī)器都對(duì)應(yīng)存在和NFS默認(rèn)配置UID的相同UID65534的nfsnobody用戶(確保所有客戶端的訪問(wèn)權(quán)限統(tǒng)一贱鼻,否則每個(gè)機(jī)器需要同時(shí)建立相同UID的用戶宴卖,并覆蓋NFS的默認(rèn)用戶配置。)
重點(diǎn)NFS服務(wù)文件或命令的說(shuō)明:
/etc/export:NFS服務(wù)主配置文件邻悬,配置NFS具體共享服務(wù)的地點(diǎn)症昏,默認(rèn)內(nèi)容為空。父丰。以行為單位肝谭。
/usr/sbin/exportfs:NFS服務(wù)的管理命令。
/us/sbin/showmount:用來(lái)在客戶端蛾扇,查看NFS配置及掛載結(jié)構(gòu)的命令攘烛。
/var/lib/nfs/etab:NFS配置文件完整參數(shù)文件(有很多沒(méi)有配置但是默認(rèn)就有的NFS參數(shù))。
/proc/mounts:客戶端本地掛載參數(shù)和狀態(tài)信息的文件镀首。
NFS客戶端掛載參數(shù)列表:
mount -o參數(shù)對(duì)應(yīng)的選項(xiàng):
man mount后的-o參數(shù)中英文翻譯對(duì)比:
rasync:設(shè)計(jì)文件系統(tǒng)I/O的操作都是異步處理坟漱,即不會(huì)同步寫(xiě)到磁盤(pán),此參數(shù)會(huì)提高性能更哄,單會(huì)降低數(shù)據(jù)安全芋齿。一般情況下,生產(chǎn)環(huán)境下不推薦使用成翩。除非對(duì)性能要求很高觅捆,對(duì)數(shù)據(jù)可靠性不要求的場(chǎng)合。
sync:該參數(shù)與async相反麻敌。有I/O操作時(shí)栅炒,都會(huì)同步處理I/O即把數(shù)據(jù)同步寫(xiě)入硬盤(pán)。此參數(shù)會(huì)犧牲一點(diǎn)I/O性能术羔,但是赢赊,換來(lái)的是掉電后數(shù)據(jù)的安全性。
atime:在每一次數(shù)據(jù)訪問(wèn)時(shí)级历,會(huì)同步更新訪問(wèn)文件的inode時(shí)間戳释移,是默認(rèn)選項(xiàng),在高并發(fā)的情況下鱼喉,建議通過(guò)明確加上moatime秀鞭,來(lái)取消這個(gè)默認(rèn)項(xiàng),以達(dá)到提升I/O性能扛禽,優(yōu)化I/O的目的锋边。
ro:以制度的方式掛載一個(gè)文件系統(tǒng)。
rw:以可寫(xiě)的方式掛載一個(gè)文件系統(tǒng)编曼。
auto:能夠被自動(dòng)掛載通過(guò) -a選項(xiàng)豆巨。
noaut:不會(huì)自動(dòng)掛載文件系統(tǒng)。
defaults:這是fstab里的默認(rèn)值掐场,包括rw往扔、suid贩猎、dev、exec萍膛、auto吭服、nouser、async蝗罗,默認(rèn)情況大部分都是默認(rèn)值艇棕。
exec:允許文件系統(tǒng)執(zhí)行二進(jìn)制文件,取消這個(gè)參數(shù)串塑,可以提升系統(tǒng)安全性沼琉。
noexec:在掛載的文件系統(tǒng)中不允許直接執(zhí)行任何二進(jìn)制的程序,注意桩匪,僅對(duì)二進(jìn)制程序有效打瘪,即使設(shè)置了noexec、shell傻昙,php程序還是可以執(zhí)行的闺骚。
noatime:訪問(wèn)文件時(shí)不更新文件的inode時(shí)間戳,高并發(fā)環(huán)境屋匕,推薦顯式應(yīng)用該選項(xiàng)葛碧,可以提高系統(tǒng)I/O性能借杰。
nosuid:不允許set-user-identifier or set-group-identifier位生效过吻。
suid:允許set-user-identifier or set-group-identifier位生效。
nouser:禁止一個(gè)普通用戶掛載該文件系統(tǒng)蔗衡,這是默認(rèn)掛載時(shí)的默認(rèn)選項(xiàng)纤虽。
remount:嘗試重新掛載一個(gè)已經(jīng)掛載了的文件系統(tǒng),這通常被用來(lái)改變一個(gè)文件通的掛載標(biāo)志绞惦,從而使得一個(gè)只讀文件系統(tǒng)變得可寫(xiě)逼纸,這個(gè)動(dòng)作不會(huì)改變?cè)O(shè)備或者掛載點(diǎn)。當(dāng)系統(tǒng)故障時(shí)進(jìn)入siingle或rescue模式修復(fù)系統(tǒng)時(shí)济蝉,會(huì)發(fā)現(xiàn)根文件系統(tǒng)經(jīng)常會(huì)變成只讀文件系統(tǒng)杰刽,不允許修改,此時(shí)該命令就派上用場(chǎng)王滤。具體命令為:mount -o remount贺嫂,rw/,表示將根文件系統(tǒng)重新掛載使得可寫(xiě)雁乡。single或rescue模式修復(fù)系統(tǒng)是這個(gè)命令十分重要第喳。
dirsync:目錄更新是同步寫(xiě)入磁盤(pán)。
企業(yè)生產(chǎn)案例文件系統(tǒng)只讀故障踱稍;和fstab故障
1曲饱、救援模式修復(fù)
2悠抹、當(dāng)用戶,mount -o ????remount,rw ?/
2)安全加優(yōu)化的掛載方式如下:
mount -t nfs -o nosuid,noexec,nodev,notime,nodiratime,intr,rsize=131072,wsize=131072 172.16.1.31:/data /mnt
NFS內(nèi)核優(yōu)化建議
/proc/sys/net/core/rmem_default:該文件制定了接收套接字緩沖區(qū)大小的默認(rèn)值(以字節(jié)為單位)扩淀,默認(rèn)設(shè)置:124928
/proc/sys/net/core/rmem_max:該文件制定了接收套介質(zhì)緩沖區(qū)大小的最大值(以字節(jié)為單位)楔敌,默認(rèn)設(shè)置:12928
/proc/sys/net/core/wmem_default:該文件制定了發(fā)送套接字緩沖區(qū)大小的默認(rèn)值(以字節(jié)為單位),默認(rèn)設(shè)置:12928
/proc/sys/net/core/wmem_max:該文件制定了發(fā)送套接字緩沖區(qū)大小的默認(rèn)值(以字節(jié)為單位)驻谆,默認(rèn)設(shè)置:12928
企業(yè)生產(chǎn)場(chǎng)景NFS共享存儲(chǔ)優(yōu)化小結(jié)
(1)硬盤(pán):SAS/SSD硬盤(pán)梁丘,買(mǎi)多塊,硬件raid旺韭,制作raid5或raid10. 網(wǎng)卡吞吐量要大氛谜,至少千兆(多塊bond)
(2)NFS服務(wù)器配置:/data 10.0.0.0/24 (rw,sync,all_squash,anounid=65534,anongid=65534)
(3)NFS客戶端掛載優(yōu)化配置命令:
mount -t nfs -o nosudi,noexec,noatime,nodiratime,rsize=131072,wsize=131072 10.0.0.7:/data/ /mnt
(4)對(duì)NFS服務(wù)的所有服務(wù)器內(nèi)核進(jìn)行優(yōu)化時(shí),執(zhí)行如下命令:
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
執(zhí)行sysctl -p生效
(5)如果卸載的時(shí)候提示“umount: /mnt: device is busy”区端,需要退出掛載目錄再進(jìn)行卸載值漫,如果是NFS ?server宕機(jī)了,則需要強(qiáng)制卸載织盼,可執(zhí)行umount -lf /mnt杨何。
(6)大型網(wǎng)站NFS網(wǎng)絡(luò)文件系統(tǒng)的替代軟件為分布式文件系統(tǒng)Moosefs(mfs)、GlusterFS沥邻、FastDFS危虱。
阿里云對(duì)應(yīng)的存儲(chǔ)服務(wù)NAS服務(wù),還有OSS對(duì)象存儲(chǔ)唐全。
NFS系統(tǒng)應(yīng)用的優(yōu)缺點(diǎn)說(shuō)明:
NFS服務(wù)可以讓不同的客戶端掛載使用同一個(gè)共享目錄埃跷,也就是將其作為共享存儲(chǔ)使用,這樣可以保證不同節(jié)點(diǎn)客戶端數(shù)據(jù)的一致性邮利,在集群架構(gòu)環(huán)境中經(jīng)常會(huì)用到弥雹。如果是windows和linux混合環(huán)境的集群系統(tǒng),可以用samba來(lái)實(shí)現(xiàn)延届。
優(yōu)點(diǎn):
(1)簡(jiǎn)單剪勿,容易上手,容易掌握方庭。
(2)NFS文件系統(tǒng)內(nèi)數(shù)據(jù)是在文件系統(tǒng)智商的厕吉,即數(shù)據(jù)是能看得見(jiàn)的。
(3)部署快速械念,維護(hù)簡(jiǎn)單方便头朱,且可控,滿足需求的就是最好的订讼。
(4)可靠髓窜,從軟件層面上看,數(shù)據(jù)可靠性高,經(jīng)久耐用寄纵。數(shù)據(jù)是在文件系統(tǒng)上的鳖敷。
(5)服務(wù)非常穩(wěn)定。
局限:
(1)存在單點(diǎn)故障程拭,如果NFS ?Server宕機(jī)了定踱,所有客戶端都不能訪問(wèn)共享目錄。這個(gè)在后期的課程會(huì)通過(guò)負(fù)載均衡及高可用方案彌補(bǔ)恃鞋。
(2)在大數(shù)據(jù)高并發(fā)的場(chǎng)合崖媚,NFS效率、性能有限(2千萬(wàn)/日一下PV的網(wǎng)站不是瓶頸恤浪,除非網(wǎng)站架構(gòu)設(shè)計(jì)太差)畅哑。
(3)客戶端認(rèn)證是基于IP和主機(jī)名的,權(quán)限要根據(jù)ID識(shí)別水由,安全性一般(用戶內(nèi)網(wǎng)則問(wèn)題不大)荠呐。
(4)NFS數(shù)據(jù)是明文的,NFS本身不對(duì)數(shù)據(jù)完整性作驗(yàn)證砂客。
(5)多臺(tái)客戶機(jī)掛載一個(gè)NFS服務(wù)器時(shí)泥张,連接管理維護(hù)麻煩(耦合度高)。尤其N(xiāo)FS服務(wù)端出問(wèn)題后鞠值,所有NFS客戶端都處于掛掉狀態(tài)(測(cè)試環(huán)境可使用autofs自動(dòng)掛載解決媚创,正式環(huán)境可修復(fù)NFS服務(wù)或強(qiáng)制卸載)。
(6)涉及了同步(實(shí)時(shí)等待)和異步(解耦)的概念彤恶,NFS服務(wù)端和客戶端相對(duì)來(lái)說(shuō)就是耦合度有些高钞钙。網(wǎng)站程序也是一樣,盡量不要耦合度太高粤剧,系統(tǒng)及程序架構(gòu)師的重要職責(zé)就是為程序及架構(gòu)解耦歇竟,讓往后在哪的擴(kuò)展性變得更好挥唠。
應(yīng)用建議:
大中小型網(wǎng)站(參考點(diǎn)2千萬(wàn)/日PV以下)線上應(yīng)用抵恋,都有用武之地。門(mén)戶網(wǎng)站也會(huì)有應(yīng)用宝磨,生產(chǎn)場(chǎng)景應(yīng)該多把數(shù)據(jù)的訪問(wèn)往前推弧关,即盡量把靜態(tài)存儲(chǔ)里的資源通過(guò)CDN或緩存服務(wù)器提供服務(wù),如果沒(méi)有緩存服務(wù)或架構(gòu)不好唤锉,存儲(chǔ)服務(wù)器數(shù)量再多也是扛不住壓力的世囊,而且用戶體驗(yàn)很差。
解決NFS性能問(wèn)題:
(1)使用CDN加速以及自己搭建文件緩存服務(wù)(squid,nginx,varnish)窿祥。
(2)把多個(gè)目錄分配到不同的NFS服務(wù)器上株憾。
(3)棄用NFS
(4)使用分布式文件系統(tǒng)
本章重點(diǎn)回顧:
(1)NFS服務(wù)的訪問(wèn)原理流程(會(huì)口述)
(2)NFS作為集群共享存儲(chǔ)角色的搭建、部署。
(3)NFS作為集群存儲(chǔ)角色的排障嗤瞎,高級(jí)優(yōu)化(會(huì)口述)
(4)mount命令的知識(shí)及參數(shù)墙歪,如-o(noatime,nodiratime,noexec,nosuid,rsize,wsize)等。
(5)fstab文件知識(shí)以及fstab故障修復(fù)贝奇。
(6)常用命令showmount\exportfs\umount(-lf)虹菲、rpcinfo。
(7)NFS的優(yōu)點(diǎn)掉瞳、缺點(diǎn)毕源,適合的應(yīng)用場(chǎng)景,替代產(chǎn)品(FastDFS陕习、Moosefs(mfs)霎褐、GlusterFS)。
(8)NFS架構(gòu)上性能解決方案该镣。
(9)了解autofs瘩欺。