今日內(nèi)容: NFS
1.什么是nfs?
network file system 網(wǎng)絡(luò)文件系統(tǒng) nfs共享存儲(chǔ)
2.nfs能干什么?
nfs 能為 不同主機(jī)系統(tǒng)之間 實(shí)現(xiàn) 文件的共享
3.為什么要使用nfs?
在集群架構(gòu)中使用
4.nfs能解決什么問(wèn)題?
1.解決多臺(tái)機(jī)器靜態(tài)資源一致性問(wèn)題
2.解決多態(tài)機(jī)器資源共享
3.解決磁盤(pán)空間浪費(fèi)的問(wèn)題
5.使用nfs的注意事項(xiàng)?
1.添加共享存儲(chǔ),只會(huì)帶來(lái)網(wǎng)站的訪問(wèn)延時(shí)和消耗,并不會(huì)增加網(wǎng)站訪問(wèn)的速度.
2.CDN---->聽(tīng)聽(tīng)就行( )
1.購(gòu)買(mǎi)廠商CDN ---> 用戶(hù)請(qǐng)求img--->CDN--->負(fù)載均衡-->Web-->存儲(chǔ)-->CDN緩存該圖片
2.所有的web都是用共享存儲(chǔ),圖片此時(shí)一致, 只需要將圖片定期的推送至CDN
1.nfs實(shí)現(xiàn)的原理解析?
本地文件操作方式
1.當(dāng)用戶(hù)執(zhí)行mkdir命令,BashShell無(wú)法完成該命令操作,會(huì)將其翻譯給內(nèi)核。
2.Kernel內(nèi)核解析完成后會(huì)驅(qū)動(dòng)對(duì)應(yīng)的磁盤(pán)設(shè)備,完成創(chuàng)建目錄的操作。
NFS實(shí)現(xiàn)原理
1.NFS客戶(hù)端執(zhí)行增、刪等操作,客戶(hù)端會(huì)使用不同的函數(shù)對(duì)該操作進(jìn)行封裝。(windows linux mac)
2.NFS客戶(hù)端會(huì)通過(guò)TCP/IP的方式傳遞給NFS服務(wù)端。(可靠)
3.NFS服務(wù)端接收到請(qǐng)求后,會(huì)先調(diào)用portmap進(jìn)程進(jìn)行端口映射。
4.nfsd進(jìn)程用于判斷NFS客戶(hù)端是否擁有權(quán)限連接NFS服務(wù)端。
5.Rpc.mount進(jìn)程判斷客戶(hù)端是否有對(duì)應(yīng)的權(quán)限進(jìn)行驗(yàn)證。讀 寫(xiě)
6.idmap進(jìn)程實(shí)現(xiàn)用戶(hù)映射和壓縮。
7.最后NFS服務(wù)端會(huì)將客戶(hù)端的函數(shù)轉(zhuǎn)換為本地能執(zhí)行的命令,然后將命令傳遞至內(nèi)核,由內(nèi)核驅(qū)動(dòng)硬件。
注意: rpc是一個(gè)遠(yuǎn)程過(guò)程調(diào)用,那么使用nfs必須有rpcbind服務(wù)
2.安裝、配置、nfs服務(wù)
1.安裝
[root@nfs ~]# yum install nfs-utils -y
2.配置
1.共享什么目錄?
2.共享給誰(shuí)使用?
3.共享后目錄,客戶(hù)端擁有什么權(quán)限?
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw)
3.根據(jù)配置進(jìn)行初始化環(huán)境
[root@nfs ~]# mkdir /data
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/
4.啟動(dòng)
[root@nfs ~]# systemctl enable nfs
[root@nfs ~]# systemctl start nfs
5.客戶(hù)端測(cè)試
[root@backup ~]# yum install nfs-utils -y
[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
掛載遠(yuǎn)程172.16.1.31的/data至本地的/mnt目錄
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
6.錯(cuò)誤的示范
#訪問(wèn)被拒絕 (沒(méi)有允許該網(wǎng)段訪問(wèn))
[root@backup ~]# mount -t nfs 10.0.0.31:/data /media/
mount.nfs: access denied by server while mounting 10.0.0.31:/data
#能夠連接,但是權(quán)限被拒絕
[root@backup mnt]# touch file
touch: cannot touch ‘file’: Permission denied
7.多個(gè)客戶(hù)端共享一個(gè)存儲(chǔ)服務(wù)器 (NFS)
8.實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)掛載(因?yàn)榉?wù)器不重啟) 擴(kuò)展了解即可
[root@web01 ~]# cat /etc/fstab
172.16.1.31:/data /media nfs defaults 0 0
PS: 如果nfs服務(wù)端出現(xiàn)問(wèn)題: 客戶(hù)端重啟則會(huì)無(wú)法啟動(dòng)成功
1.等待1分38s 自動(dòng)進(jìn)入系統(tǒng)
2.進(jìn)入單用戶(hù)模式,注釋開(kāi)機(jī)自啟動(dòng)nfs
3.將nfs恢復(fù)正常
3.nfs相關(guān)的配置參數(shù)
nfs共享參數(shù) 參數(shù)作用
rw* 讀寫(xiě)權(quán)限 (最多)
ro 只讀權(quán)限 (只希望看,不希望寫(xiě))
root_squash 當(dāng)NFS客戶(hù)端以root管理員訪問(wèn)時(shí),映射為NFS服務(wù)器的匿名用戶(hù)nfsnobody(不常用)
no_root_squash 當(dāng)NFS客戶(hù)端以root管理員訪問(wèn)時(shí),映射為NFS服務(wù)器的root管理員(不常用)
no_all_squash 無(wú)論NFS客戶(hù)端使用什么賬戶(hù)訪問(wèn),都不進(jìn)行用戶(hù)壓縮 ( 后面講云計(jì)算課程會(huì)用上 )
all_squash 無(wú)論NFS客戶(hù)端使用什么賬戶(hù)訪問(wèn),均映射為NFS服務(wù)器的匿名用戶(hù)(常用)
sync* 同時(shí)將數(shù)據(jù)寫(xiě)入到內(nèi)存與硬盤(pán)中,保證不丟失數(shù)據(jù)
async 優(yōu)先將數(shù)據(jù)保存到內(nèi)存,然后再寫(xiě)入硬盤(pán);這樣效率更高,但可能會(huì)丟失數(shù)據(jù)
anonuid* 配置all_squash使用,指定NFS的用戶(hù)UID,必須存在系統(tǒng)
anongid* 配置all_squash使用,指定NFS的用戶(hù)UID,必須存在系統(tǒng)
4.rw 和 ro
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(ro)
[root@nfs ~]# systemctl restart nfs
#提示,該目錄是一個(gè)只讀文件
[root@web01 media]# touch file
touch: cannot touch ‘file’: Read-only file system
2.驗(yàn)證all_squash anonuid anongid
[root@nfs ~]# cat /etc/exports
? /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
1.創(chuàng)建系統(tǒng)真實(shí)用戶(hù),指定uid和gid為666
[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u666 -g666 www
[root@nfs ~]# id www
uid=666(www) gid=666(www) groups=666(www)
2.變更屬主和屬組
[root@nfs ~]# chown -R www.www /data/
3.重啟nfs
[root@nfs ~]# systemctl restart nfs
4.客戶(hù)端使用(一定要與服務(wù)端使用的匿名用戶(hù)一致)
[root@web01 ~]# groupadd -g 666 www
[root@web01 ~]# useradd -u666 -g666 www
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /media/
10.nfs如何共享多個(gè)目錄?
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data_2 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
1.NFS存儲(chǔ)優(yōu)點(diǎn)
1.NFS簡(jiǎn)單易用、方便部署、數(shù)據(jù)可靠、服務(wù)穩(wěn)定、滿(mǎn)足中小企業(yè)需求。
2.NFS的數(shù)據(jù)都在文件系統(tǒng)之上,所有數(shù)據(jù)都是能看得見(jiàn)。
除了NFS: ( Glusterfs分布式 贈(zèng)送 ) MooseFS FastDFS
11.NFS存儲(chǔ)局限
1.存在單點(diǎn)故障, 本身NFS不支持高可用,也不支持集群.
2.NFS數(shù)據(jù)都是明文,并不對(duì)數(shù)據(jù)做任何校驗(yàn),也沒(méi)有密碼驗(yàn)證(強(qiáng)烈建議內(nèi)網(wǎng)使用)。
3.NFS應(yīng)用建議
1.生產(chǎn)場(chǎng)景應(yīng)將靜態(tài)數(shù)據(jù)(jpg\png\mp4\avi\css\js)盡可能放置CDN場(chǎng)景進(jìn)行環(huán)境, 以此來(lái)減少后端存儲(chǔ)壓力
2.如果沒(méi)有緩存或架構(gòu)、代碼等,本身歷史遺留問(wèn)題太大,在多存儲(chǔ)也沒(méi)意義
```
NFS就是用來(lái)共享 其他什么都沒(méi)有. 所有的靜態(tài)都是CDN提供訪問(wèn)的
```
NFS練習(xí):K
準(zhǔn)備3臺(tái)虛擬機(jī)服務(wù)器,并且請(qǐng)按照要求搭建配置NFS服務(wù)。
NFS服務(wù)端(A)
NFS客戶(hù)端(B)
NFS客戶(hù)端(C)
1.在NFS服務(wù)端(A)上共享/data/w(可寫(xiě)) 及/data/r(只讀)
2.在NFS客戶(hù)端(B/C)上進(jìn)行掛載
服務(wù)端A:
[root@nfs ~]# yum install nfs-utils -y
[root@nfs ~]# cat /etc/exports
/data/r 172.16.1.0/24(ro,sync,all_squash,anonuid=666,anongid=666)
/data/w 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
?
根據(jù)配置進(jìn)行初始化環(huán)境
[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u666 -g666 www
[root@nfs ~]# mkdir /data/{r,w} -p
[root@nfs ~]# chown -R www.www /data/
[root@nfs ~]# systemctl restart nfs
?
客戶(hù)端B:
卸載之前遺留的掛載信息
[root@web01 ~]# umount -lf 172.16.1.31:/data
[root@web01 ~]# umount -lf 172.16.1.31:/data_2
掛載
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/r /mnt
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/w /media/
?
總結(jié):
1.什么是NFS?
網(wǎng)絡(luò)文件系統(tǒng)
2.NFS主要實(shí)現(xiàn)的功能?
讓不同主機(jī)之間能共享目錄
https://blog.csdn.net/wykkunkun/article/details/79638288
3.NFS到底有什么用?
日常 沒(méi)用
網(wǎng)站架構(gòu) 有用?
沒(méi)有共享前有什么問(wèn)題?
共享后解決了什么問(wèn)題?
1.一致性
2.減少磁盤(pán)空間
4.NFS實(shí)現(xiàn)共享原理?
5.NFS 安裝 配置 使用?
6.客戶(hù)端掛載?
showmount
mount
df -h
/etc/fstab
6.多個(gè)客戶(hù)端如何進(jìn)行NFS的掛載?
測(cè)試多個(gè)客戶(hù)端數(shù)據(jù)是否一致
7.NFS相關(guān)參數(shù)?
rw
all_squash
anonuid
anongid
sync
8.NFS服務(wù)端如何共享多個(gè)目錄
9.NFS使用建議 CDN -->CNAME

?
|