1、什么是nfs
network file system 網(wǎng)絡(luò)文件系統(tǒng) nfs共享存儲
2队伟、nfs用來做什么
能為不同主機之間 實現(xiàn) 文件的共享
3、為什么使用nfs
在集群架構(gòu)中使用
4幽勒、nfs能解決的問題
1.解決多臺機器靜態(tài)資源一致性的問題
2.解決多臺機器資源共享
3.解決磁盤的空間浪費
5嗜侮、使用nfs的注意事項
1.添加共享存儲,只會帶來網(wǎng)站的訪問延時和消耗啥容,并不會增加網(wǎng)站的訪問速度
6锈颗、NFS實現(xiàn)的原理
1)本地文件的操作方式
1.當(dāng)用戶執(zhí)行mkdir命令時,bashshell無法完成該命令的操作咪惠,會將其翻譯給服務(wù)器內(nèi)核
2.Kernel 內(nèi)核解析完成后會驅(qū)動對應(yīng)的磁盤設(shè)備击吱,完成創(chuàng)建目錄的創(chuàng)建
2)NFS的實現(xiàn)原理
1. NFS客戶端執(zhí)行增、刪硝逢、等操作姨拥,客戶端會使用不同的函數(shù)對使用的命令進行封裝
2.NFS客戶端會通過TCP/IP 的方式傳遞給NFS服務(wù)端
3.NFS服務(wù)端接收到請求后,會先調(diào)用portmap進程進行端口的映射
4.sd進程用于判斷NFS客戶端是否擁有權(quán)限鏈接NFS服務(wù)端
5.c.mount 進程判斷客戶端是否擁有權(quán)限鏈接NFS服務(wù)端
6.map進程實現(xiàn)用戶映射和壓縮
7.NFS服務(wù)端會將客戶端的函數(shù)轉(zhuǎn)換為本地能執(zhí)行的命令
注:pc是一個遠程過程的調(diào)用渠鸽,那么使用nfs必須使用有rpcbind服務(wù)
7叫乌、nfs的安裝----->配置--------> 啟動nfs服務(wù)
1)nfs的安裝
[root@rsync-41~]# yum install nfs-utils -y
2)配置
1.共享什么目錄
2.共享給誰
共享后客戶端擁有什么權(quán)限
[root@nfs-31~]# man exports
nfs的配置語法
1.nfs的文件配置
[root@nfs-31~]# vim /etc/exports
/data 172.16.1.0/24(rw)
2.根據(jù)文件的配置初始化環(huán)境
[root@nfs-31~]# mkdir /data
2.1 查看nfs配置文件是否出錯(寫錯為空白),以及查看寫入/data目錄的身份對應(yīng)的權(quán)限(同歸ID號進一步查看)
[root@nfs-31~]# cat /var/lib/nfs/etab
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,
no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,
secure,root_squash,all_squash)
2.2 通過ID號查看用戶
[root@nfs-31~]# grep "65534" /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
3.服務(wù)端修改創(chuàng)建的共享目錄的屬主和屬組
[root@nfs-31~]# chown -R nfsnobody.nfsnobody /data/ 修給/data的用戶
4.啟動
[root@nfs-31~]# netstat -lntp 查看啟動的相關(guān)端口
[root@nfs-31~]# systemctl start nfs 啟動nfs
[root@nfs-31~]# systemctl enable nfs 加入開機自啟
5.客戶端測試
[root@backup-41 ~]# yum install nfs-utils -y 客戶端下載 nfs-utils
[root@backup-41~]# showmount -e 172.16.1.31 客戶端查看172.16.1.31服務(wù)器共享的目錄
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@backup-41~]# mount -t nfs 172.16.1.31:/data /mnt 掛載遠程172.16.1.31的/data至本地的/mnt目錄
8.錯誤的示范
訪問被拒絕 (沒有允許該網(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
8.多個客戶端共享一個存儲服務(wù)器 (NFS)
9.實現(xiàn)開機自動掛載(因為服務(wù)器不重啟) 擴展了解即可
[root@web01 ~]# cat /etc/fstab
172.16.1.31:/data /media nfs defaults 0 0
PS: 如果nfs服務(wù)端出現(xiàn)問題: 客戶端重啟則會無法啟動成功
1.等待1分38s 自動進入系統(tǒng)
2.進入單用戶模式,注釋開機自啟動nfs
3.將nfs恢復(fù)正常
10.nfs相關(guān)的配置參數(shù)
nfs共享參數(shù) | 參數(shù)作用 |
---|---|
rw | 讀寫權(quán)限 (最多) |
ro | 只讀權(quán)限 (只希望看,不希望寫) |
root_squash | 當(dāng)NFS客戶端以root管理員訪問時,映射為NFS服務(wù)器的匿名用戶nfsnobody(不常用) |
no_root_squash | 當(dāng)NFS客戶端以root管理員訪問時徽缚,映射為NFS服務(wù)器的root管理員(不常用) |
no_all_squash | 無論NFS客戶端使用什么賬戶訪問憨奸,都不進行用戶壓縮 ( 后面講云計算課程會用上 ) |
all_squash | 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務(wù)器的匿名用戶(常用) |
sync | 同時將數(shù)據(jù)寫入到內(nèi)存與硬盤中凿试,保證不丟失數(shù)據(jù) |
async | 優(yōu)先將數(shù)據(jù)保存到內(nèi)存排宰,然后再寫入硬盤似芝;這樣效率更高,但可能會丟失數(shù)據(jù) |
anonuid | 配置all_squash使用,指定NFS的用戶UID,必須存在系統(tǒng) |
anongid | 配置all_squash使用,指定NFS的用戶UID,必須存在系統(tǒng) |
1)rw 和 ro
[root@nfs-31~]# cat /etc/exports
/data 172.16.1.0/24(ro)
[root@nfs-31~]# systemctl restart nfs
提示,該目錄是一個只讀文件
[root@web01-06 /media/]# touch file
touch: cannot touch ‘file’: Read-only file system
2)驗證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)真實用戶,指定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.客戶端使用(一定要與服務(wù)端使用的匿名用戶一致)
[root@web01 ~]# groupadd -g 666 www
[root@web01 ~]# useradd -u666 -g666 www
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /media/
11.nfs如何共享多個目錄
[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)
12.NFS存儲優(yōu)點
1.NFS簡單易用板甘、方便部署党瓮、數(shù)據(jù)可靠、服務(wù)穩(wěn)定盐类、滿足中小企業(yè)需求寞奸。
2.NFS的數(shù)據(jù)都在文件系統(tǒng)之上,所有數(shù)據(jù)都是能看得見.
除了NFS: ( Glusterfs分布式 贈送 ) MooseFS FastDFS
13.NFS存儲局限
1.存在單點故障, 本身NFS不支持高可用,也不支持集群.
2.NFS數(shù)據(jù)都是明文在跳,并不對數(shù)據(jù)做任何校驗枪萄,也沒有密碼驗證(強烈建議內(nèi)網(wǎng)使用)。
14.NFS應(yīng)用建議
1.生產(chǎn)場景應(yīng)將靜態(tài)數(shù)據(jù)(jpg\png\mp4\avi\css\js)盡可能放置CDN場景進行環(huán)境, 以此來減少后端存儲壓力
2.如果沒有緩存或架構(gòu)猫妙、代碼等瓷翻,本身歷史遺留問題太大,在多存儲也沒意義
NFS就是用來共享 其他什么都沒有. 所有的靜態(tài)都是CDN提供訪問的
NFS練習(xí):
環(huán)境準備
服務(wù)器系統(tǒng) 角色 IP
CentOS 7.6 NfsServer(A) 172.16.1.31
CentOS 7.6 NfsClient(B) 172.16.1.41
CentOS 7.6 NfsClient(C) 172.16.1.7
準備3臺虛擬機服務(wù)器割坠,并且請按照要求搭建配置NFS服務(wù)齐帚。
NFS服務(wù)端(A)
NFS客戶端(B)
NFS客戶端(C)
1.在NFS服務(wù)端(A)上共享/data/w(可寫) 及/data/r(只讀)
2.在NFS客戶端(B/C)上進行掛載
服務(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ù)配置進行初始化環(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
客戶端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/