1.什么是nfs,具體能干什么及使用環(huán)境殿漠?
nfs network file system網(wǎng)絡(luò)文件系統(tǒng)绕沈,能為不同主機(jī)之間,實(shí)現(xiàn)文件共享灶伊,在集群架構(gòu)中使用弥鹦。
2.nfs能解決什么問題及注意事項(xiàng)肚逸?
功能:1.解決多臺(tái)機(jī)器靜態(tài)資源一致性問題
2.解決多臺(tái)機(jī)器資源共享
3.解決磁盤空間浪費(fèi)
注意事項(xiàng):1.添加共享存儲(chǔ),只會(huì)帶來網(wǎng)站的訪問延時(shí)和消耗彬坏,并不會(huì)增加網(wǎng)站訪問速度朦促。
2.CDN
3.nfs實(shí)現(xiàn)原理解析
本地文件操作1.當(dāng)用戶執(zhí)行mkdir命令,bashshell無法完成該命令操作栓始,會(huì)將其翻譯給內(nèi)核
2.kernel內(nèi)核解析完成后會(huì)驅(qū)動(dòng)對(duì)應(yīng)的磁盤設(shè)備务冕,完成文件目錄的創(chuàng)建
NFS實(shí)現(xiàn)原理
1.NFS客戶端執(zhí)行增、刪等操作幻赚,客戶端會(huì)使用不同的函數(shù)對(duì)該操作進(jìn)行封裝禀忆。(windows linux mac)
2.NFS客戶端會(huì)通過TCP/IP的方式傳遞給NFS服務(wù)端。(可靠)
3.NFS服務(wù)端接收到請(qǐng)求后落恼,會(huì)先調(diào)用portmap進(jìn)程進(jìn)行端口映射箩退。
4.nfsd進(jìn)程用于判斷NFS客戶端是否擁有權(quán)限連接NFS服務(wù)端。
5.Rpc.mount進(jìn)程判斷客戶端是否有對(duì)應(yīng)的權(quán)限進(jìn)行驗(yàn)證领跛。讀 寫
6.idmap進(jìn)程實(shí)現(xiàn)用戶映射和壓縮乏德。
7.最后NFS服務(wù)端會(huì)將客戶端的函數(shù)轉(zhuǎn)換為本地能執(zhí)行的命令撤奸,然后將命令傳遞至內(nèi)核吠昭,由內(nèi)核驅(qū)動(dòng)硬件
注意:rpc是一個(gè)遠(yuǎn)程過程調(diào)用,那么使用nfs必須有rpcbind服務(wù)
7.安裝配置nfs服務(wù)
1.安裝
[root@nfs ~]# yum install nfs-utils -y
2.配置
[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,all_squash,anonuid=666,anongid=666)
3.根據(jù)配置初始化環(huán)境
[root@nfs data]# groupadd -g 666 www
[root@nfs data]# useradd -u666 -g666 www
[root@nfs data]# id www
uid=666(www) gid=666(www) groups=666(www)
[root@nfs data]# chown -R www.www /data/
4.啟動(dòng)
[root@nfs ~]# systemctl enable nfs #加入開機(jī)自啟動(dòng)
[root@nfs ~]# systemctl start nfs #啟動(dòng)服務(wù)
5.客戶端
[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
[root@backup ~]# showmount -e 172.16.1.31 #查看
list for 172.16.1.31:
/data 172.16.1.0/24
客戶端使用(一定要與服務(wù)端使用的匿名用戶一致
[root@web01 ~]# groupadd -g 666 www
[root@web01 ~]# useradd -u666 -g666 www
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /media/ #掛載胧瓜,服務(wù)端ip地址為172.16.1.31
6.nfs相關(guān)的配置參數(shù)
nfs共享參數(shù) 參數(shù)作用
rw* 讀寫權(quán)限 (最多)
ro 只讀權(quán)限 (只希望看,不希望寫)
root_squash 當(dāng)NFS客戶端以root管理員訪問時(shí)矢棚,映射為NFS服務(wù)器的匿名用戶nfsnobody(不常用)
no_root_squash 當(dāng)NFS客戶端以root管理員訪問時(shí),映射為NFS服務(wù)器的root管理員(不常用)
no_all_squash 無論NFS客戶端使用什么賬戶訪問府喳,都不進(jìn)行用戶壓縮 ( 后面講云計(jì)算課程會(huì)用上 )
all_squash 無論NFS客戶端使用什么賬戶訪問蒲肋,均映射為NFS服務(wù)器的匿名用戶(常用)
sync* 同時(shí)將數(shù)據(jù)寫入到內(nèi)存與硬盤中,保證不丟失數(shù)據(jù)
async 優(yōu)先將數(shù)據(jù)保存到內(nèi)存钝满,然后再寫入硬盤兜粘;這樣效率更高,但可能會(huì)丟失數(shù)據(jù)
anonuid* 配置all_squash使用,指定NFS的用戶UID,必須存在系統(tǒng)
anongid* 配置all_squash使用,指定NFS的用戶UID,必須存在系統(tǒng)
7.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)
ps:客戶端分別掛載在不同目錄下
8.NFS優(yōu)缺點(diǎn)弯蚜,局限性及應(yīng)用建議
優(yōu)點(diǎn):1.NFS簡單易用孔轴,方便部署,數(shù)據(jù)可靠碎捺,服務(wù)穩(wěn)定路鹰,滿足中小企業(yè)的需求
2.NFS的數(shù)據(jù)都在文件系統(tǒng)之上贷洲,所有的數(shù)據(jù)都是能看的見的
局限性:1.存在單點(diǎn)故障,本身NFS不支持高可用晋柱,也不支持集群
2.NFS數(shù)據(jù)都是明文优构,并不對(duì)數(shù)據(jù)做任何校驗(yàn),也沒有密碼驗(yàn)證(建議內(nèi)網(wǎng)使用)
應(yīng)用建議:1.生產(chǎn)場景應(yīng)將靜態(tài)數(shù)據(jù)(jpg\png\mp4\avi\css\js)盡可能放置CDN場景進(jìn)行環(huán)境雁竞,以此來減少后端存儲(chǔ)壓力
2.如果沒有緩存或架構(gòu)钦椭,代碼等,本身歷史遺留的問題太大碑诉,再多存儲(chǔ)也沒意義
9.實(shí)現(xiàn)開機(jī)自動(dòng)掛載(因?yàn)榉?wù)器不重啟)
[root@web01 ~]# cat /etc/fstab
172.16.1.31:/data /media nfs defaults 0 0
常見錯(cuò)誤:
PS: 如果nfs服務(wù)端出現(xiàn)問題: 客戶端重啟則會(huì)無法啟動(dòng)成功
1.等待1分38s 自動(dòng)進(jìn)入系統(tǒng)
2.進(jìn)入單用戶模式,注釋開機(jī)自啟動(dòng)nfs
3.將nfs恢復(fù)正常
錯(cuò)誤的示范
#訪問被拒絕 (沒有允許該網(wǎng)段訪問)
[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
PS:ls /var/lib/nfs/etab 查看nfs權(quán)限路徑