2019-04-18day35NFS案例和深入掛載

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)

更改默認NFS默認

用戶項目實踐2:

NFS共享的匿名用戶用www,使得客戶端上傳的圖片都是www用戶,而不是匿名的nfsnobody。

?web01?backup客戶端實現(xiàn)掛載到nfs。

??NFS下面共享/backup?,允許web01?backup客戶端(/backup)可讀寫。

web01上傳圖片,backup上可以刪除web01上傳的圖片。

?NFS下面共享/data1,允許?web01?backup客戶端10網(wǎng)段只讀(data1)。

實現(xiàn)開機自動掛載。

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)每個客戶端配置

mount?-t?nfs?172.16.1.31:/data?/data

[root@web01?~]#?df?-h

文件系統(tǒng)? ? ? ? ? ? ? ? ? ? ? 容量? ? ? ? ? ? ? ?已用? ? ? ?可用? ? ? ? ? ? 已用%? ? ? ? ? 掛載點
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ù)的重點知識梳理:

當多個NFS客戶端訪問服務(wù)器端讀寫文件時,需要具有以下幾個權(quán)限:

1、NFS服務(wù)器/etc/exports設(shè)置需要開放可寫入的權(quán)限,即服務(wù)器的共享權(quán)限。

2、NFS服務(wù)器實際要共享的NFS目錄權(quán)限具有可寫入w的權(quán)限,即服務(wù)端本地目錄的安全權(quán)限。

3、每臺機器都對應(yīng)存在和NFS默認配置UID的相同UID65534的nfsnobody用戶(確保所有客戶端的訪問權(quán)限統(tǒng)一,否則每個機器需要同時建立相同UID的用戶,并覆蓋NFS的默認用戶配置。)

重點NFS服務(wù)文件或命令的說明:

/etc/export:NFS服務(wù)主配置文件,配置NFS具體共享服務(wù)的地點,默認內(nèi)容為空。。以行為單位。

/usr/sbin/exportfs:NFS服務(wù)的管理命令。

/us/sbin/showmount:用來在客戶端,查看NFS配置及掛載結(jié)構(gòu)的命令。

/var/lib/nfs/etab:NFS配置文件完整參數(shù)文件(有很多沒有配置但是默認就有的NFS參數(shù))。

/proc/mounts:客戶端本地掛載參數(shù)和狀態(tài)信息的文件。

NFS客戶端掛載參數(shù)列表:



mount -o參數(shù)對應(yīng)的選項:



man mount后的-o參數(shù)中英文翻譯對比:

rasync:設(shè)計文件系統(tǒng)I/O的操作都是異步處理,即不會同步寫到磁盤,此參數(shù)會提高性能,單會降低數(shù)據(jù)安全。一般情況下,生產(chǎn)環(huán)境下不推薦使用。除非對性能要求很高,對數(shù)據(jù)可靠性不要求的場合。

sync:該參數(shù)與async相反。有I/O操作時,都會同步處理I/O即把數(shù)據(jù)同步寫入硬盤。此參數(shù)會犧牲一點I/O性能,但是,換來的是掉電后數(shù)據(jù)的安全性。

atime:在每一次數(shù)據(jù)訪問時,會同步更新訪問文件的inode時間戳,是默認選項,在高并發(fā)的情況下,建議通過明確加上moatime,來取消這個默認項,以達到提升I/O性能,優(yōu)化I/O的目的。

ro:以制度的方式掛載一個文件系統(tǒng)。

rw:以可寫的方式掛載一個文件系統(tǒng)。

auto:能夠被自動掛載通過 -a選項。

noaut:不會自動掛載文件系統(tǒng)。

defaults:這是fstab里的默認值,包括rw、suid、dev、exec、auto、nouser、async,默認情況大部分都是默認值。

exec:允許文件系統(tǒng)執(zhí)行二進制文件,取消這個參數(shù),可以提升系統(tǒng)安全性。

noexec:在掛載的文件系統(tǒng)中不允許直接執(zhí)行任何二進制的程序,注意,僅對二進制程序有效,即使設(shè)置了noexec、shell,php程序還是可以執(zhí)行的。

noatime:訪問文件時不更新文件的inode時間戳,高并發(fā)環(huán)境,推薦顯式應(yīng)用該選項,可以提高系統(tǒng)I/O性能。

nosuid:不允許set-user-identifier or set-group-identifier位生效。

suid:允許set-user-identifier or set-group-identifier位生效。

nouser:禁止一個普通用戶掛載該文件系統(tǒng),這是默認掛載時的默認選項。

remount:嘗試重新掛載一個已經(jīng)掛載了的文件系統(tǒng),這通常被用來改變一個文件通的掛載標志,從而使得一個只讀文件系統(tǒng)變得可寫,這個動作不會改變設(shè)備或者掛載點。當系統(tǒng)故障時進入siingle或rescue模式修復系統(tǒng)時,會發(fā)現(xiàn)根文件系統(tǒng)經(jīng)常會變成只讀文件系統(tǒng),不允許修改,此時該命令就派上用場。具體命令為:mount -o remount,rw/,表示將根文件系統(tǒng)重新掛載使得可寫。single或rescue模式修復系統(tǒng)是這個命令十分重要。

dirsync:目錄更新是同步寫入磁盤。


企業(yè)生產(chǎn)案例文件系統(tǒng)只讀故障;和fstab故障

1、救援模式修復

2、當用戶,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ū)大小的默認值(以字節(jié)為單位),默認設(shè)置:124928

/proc/sys/net/core/rmem_max:該文件制定了接收套介質(zhì)緩沖區(qū)大小的最大值(以字節(jié)為單位),默認設(shè)置:12928

/proc/sys/net/core/wmem_default:該文件制定了發(fā)送套接字緩沖區(qū)大小的默認值(以字節(jié)為單位),默認設(shè)置:12928

/proc/sys/net/core/wmem_max:該文件制定了發(fā)送套接字緩沖區(qū)大小的默認值(以字節(jié)為單位),默認設(shè)置:12928


企業(yè)生產(chǎn)場景NFS共享存儲優(yōu)化小結(jié)

(1)硬盤:SAS/SSD硬盤,買多塊,硬件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)對NFS服務(wù)的所有服務(wù)器內(nèi)核進行優(yōu)化時,執(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)如果卸載的時候提示“umount: /mnt: device is busy”,需要退出掛載目錄再進行卸載,如果是NFS ?server宕機了,則需要強制卸載,可執(zhí)行umount -lf /mnt。

(6)大型網(wǎng)站NFS網(wǎng)絡(luò)文件系統(tǒng)的替代軟件為分布式文件系統(tǒng)Moosefs(mfs)、GlusterFS、FastDFS。

阿里云對應(yīng)的存儲服務(wù)NAS服務(wù),還有OSS對象存儲。

NFS系統(tǒng)應(yīng)用的優(yōu)缺點說明:

NFS服務(wù)可以讓不同的客戶端掛載使用同一個共享目錄,也就是將其作為共享存儲使用,這樣可以保證不同節(jié)點客戶端數(shù)據(jù)的一致性,在集群架構(gòu)環(huán)境中經(jīng)常會用到。如果是windows和linux混合環(huán)境的集群系統(tǒng),可以用samba來實現(xiàn)。

優(yōu)點:

(1)簡單,容易上手,容易掌握。

(2)NFS文件系統(tǒng)內(nèi)數(shù)據(jù)是在文件系統(tǒng)智商的,即數(shù)據(jù)是能看得見的。

(3)部署快速,維護簡單方便,且可控,滿足需求的就是最好的。

(4)可靠,從軟件層面上看,數(shù)據(jù)可靠性高,經(jīng)久耐用。數(shù)據(jù)是在文件系統(tǒng)上的。

(5)服務(wù)非常穩(wěn)定。

局限:

(1)存在單點故障,如果NFS ?Server宕機了,所有客戶端都不能訪問共享目錄。這個在后期的課程會通過負載均衡及高可用方案彌補。

(2)在大數(shù)據(jù)高并發(fā)的場合,NFS效率、性能有限(2千萬/日一下PV的網(wǎng)站不是瓶頸,除非網(wǎng)站架構(gòu)設(shè)計太差)。

(3)客戶端認證是基于IP和主機名的,權(quán)限要根據(jù)ID識別,安全性一般(用戶內(nèi)網(wǎng)則問題不大)。

(4)NFS數(shù)據(jù)是明文的,NFS本身不對數(shù)據(jù)完整性作驗證。

(5)多臺客戶機掛載一個NFS服務(wù)器時,連接管理維護麻煩(耦合度高)。尤其NFS服務(wù)端出問題后,所有NFS客戶端都處于掛掉狀態(tài)(測試環(huán)境可使用autofs自動掛載解決,正式環(huán)境可修復NFS服務(wù)或強制卸載)。

(6)涉及了同步(實時等待)和異步(解耦)的概念,NFS服務(wù)端和客戶端相對來說就是耦合度有些高。網(wǎng)站程序也是一樣,盡量不要耦合度太高,系統(tǒng)及程序架構(gòu)師的重要職責就是為程序及架構(gòu)解耦,讓往后在哪的擴展性變得更好。

應(yīng)用建議:

大中小型網(wǎng)站(參考點2千萬/日PV以下)線上應(yīng)用,都有用武之地。門戶網(wǎng)站也會有應(yīng)用,生產(chǎn)場景應(yīng)該多把數(shù)據(jù)的訪問往前推,即盡量把靜態(tài)存儲里的資源通過CDN或緩存服務(wù)器提供服務(wù),如果沒有緩存服務(wù)或架構(gòu)不好,存儲服務(wù)器數(shù)量再多也是扛不住壓力的,而且用戶體驗很差。

解決NFS性能問題:

(1)使用CDN加速以及自己搭建文件緩存服務(wù)(squid,nginx,varnish)。

(2)把多個目錄分配到不同的NFS服務(wù)器上。

(3)棄用NFS

(4)使用分布式文件系統(tǒng)


本章重點回顧:

(1)NFS服務(wù)的訪問原理流程(會口述)

(2)NFS作為集群共享存儲角色的搭建、部署。

(3)NFS作為集群存儲角色的排障,高級優(yōu)化(會口述)

(4)mount命令的知識及參數(shù),如-o(noatime,nodiratime,noexec,nosuid,rsize,wsize)等。

(5)fstab文件知識以及fstab故障修復。

(6)常用命令showmount\exportfs\umount(-lf)、rpcinfo。

(7)NFS的優(yōu)點、缺點,適合的應(yīng)用場景,替代產(chǎn)品(FastDFS、Moosefs(mfs)、GlusterFS)。

(8)NFS架構(gòu)上性能解決方案。

(9)了解autofs。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容