NFS共享存儲

今日內(nèi)容:

1.什么是nfs?

nfs是network file system縮寫。網(wǎng)絡(luò)文件系統(tǒng),NFS共享存儲

2.nfs能干什么?

通過局域網(wǎng)實現(xiàn)不同主機系統(tǒng)之間目錄共享

3.為什么要使用nfs

4.nfs能解決什么問題?

1.解決多臺web靜態(tài)資源的共享(所有客戶端都掛載服務(wù)端,看到的數(shù)據(jù)都一樣)

2.解決多臺web靜態(tài)資源一致性(如果客戶端A刪除NFS服務(wù)上的test文件,客戶端B也會看不見test文件)

3.解決多臺web磁盤空間的浪費

4.快速迭代web服務(wù)器的代碼

5.使用nfs的注意事項

5.1增加nfs會增加資源訪問的延時

5.2建議使用cdn對靜態(tài)資源加速

6.nfs實現(xiàn)的原理解析

本地文件操作方式

1.當(dāng)用戶執(zhí)行mkdir命令,BashShell無法完成該命令操作,會將其翻譯給內(nèi)核

2.Kernel 內(nèi)核解析完成后會驅(qū)動對應(yīng)的磁盤設(shè)備,完成創(chuàng)建目錄的操作

NFS實現(xiàn)原理(需要先了解程序進程線程)

1.NFS客戶端執(zhí)行增刪操作客戶端會使用不同的函數(shù)對該操作進行封裝

2.NFS客戶端會通過TCP/IP的方式傳遞給NFS服務(wù)端

3.NFS服務(wù)端收到請求后,先調(diào)用portmap 進程進行端口映射

4.nfsd進程用于判斷NFS客戶端是否擁有權(quán)限鏈接nfs 服務(wù)端

5.Rpc.mount進程判斷客戶端是否有對應(yīng)的權(quán)限進行驗證

6.idmap進程實現(xiàn)用戶映射和壓縮

7.最后NFS服務(wù)端會將客戶端的函數(shù)轉(zhuǎn)換為本地能執(zhí)行的命令,然后將命令傳遞至內(nèi)核有內(nèi)核驅(qū)動硬件

注意:rpc是一個遠程過程調(diào)用,那么使用nfs必須有rpc服務(wù)

7.安裝 配置 nfs 服務(wù)

0.環(huán)境準備

10.0.0.7 172.16.1.7 web01

10.0.0.31 172.16.1.31 nfs

NFS服務(wù)端

1.安裝

[root@nfs ~]# yum install rpcbind nfs-utils -y

2.配置

將nfs服務(wù)端的/data目錄共享給172.16.1.0/24網(wǎng)段內(nèi)的所有主機

2.1所有客戶端主機都擁有讀寫權(quán)限

2.2在將數(shù)據(jù)寫入到NFS服務(wù)器的硬盤中后才會結(jié)束操作,最大限度保證數(shù)據(jù)不丟失

2.3將所有用戶映射為本地的匿名用戶(nfsnobody)

[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)

3.根據(jù)配置創(chuàng)建對應(yīng)的目錄

[root@nfs ~]# mkdir /data 
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/

4.啟動

[root@nfs ~]# systemctl enable nfs
[root@nfs ~]# systemctl start  nfs

5.客戶端測試

1.先安裝軟件包
[root@web01 ~]#yum install nfs-utils -y
2.檢查172.16.1.31服務(wù)端的共享的目錄詳情
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31
/data 172.16.1.0 /24
3.客戶端執(zhí)行掛載操作
[root@web01 ~]#mount -t nfs 172.16.31:/data /mnt
4.檢查掛載是否OK
[root@web01 ~]df -h

NFS的參數(shù)

nfs共享參數(shù) 參數(shù)作用
rw* 讀寫權(quán)限
ro 只讀權(quán)限
sync* 同時將數(shù)據(jù)寫入到內(nèi)存與硬盤當(dāng)中保證不丟失數(shù)據(jù)
async 優(yōu)先將數(shù)據(jù)保存到內(nèi)存,然后在寫入硬盤,這樣效率更高:但可能會丟失數(shù)據(jù)
root_squash 當(dāng)NFS客戶端以root管理員訪問時,映射為NFS服務(wù)器的匿名用戶(不常用)
no_root_squash 當(dāng)NFS客戶端以root管理員訪問時,映射為NFS服務(wù)器的root管理員(不常用)
no_all_squash 無論NFS客戶端使用什么賬戶訪問,都不進行壓縮( kvm熱遷移 )
all_squash 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務(wù)器的匿名用戶(常用)
anonuid* 配置all_squash使用,指定NFS的用戶UID,必須存在系統(tǒng)
anongid* 配置all_squash使用,指定NFS的組的UID,必須存在系統(tǒng)

1.驗證ro權(quán)限實踐

[root@nfs ~]# cat /etc/exports
/data1 172.16.1.0/24(ro,sync,all_squash)

[root@nfs ~]# mkdir /data1
[root@nfs ~]# chown nfsnobody.nfsnobody /data1/
[root@nfs ~]# systemctl restart nfs

[root@web01 ~]# mount -t nfs 172.16.1.31:/data1 /mnt
[root@web01 ~]# echo "123" >> /mnt/test
-bash: /mnt/test: 只讀文件系統(tǒng)

2.驗證all_squash 、anonuid、anongid權(quán)限

[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

[root@nfs ~]# mkdir -p /data
[root@nfs ~]# chown -R www.www /data
[root@nfs ~]# systemctl restart nfs-server
創(chuàng)建系統(tǒng)用戶
[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u666 -g666 www
客戶端掛載
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web01 ~]# echo "123" >> /mnt/test
檢查服務(wù)端:
[root@nfs ~]# ll /data
-rw-r--r-- 1 www www 4 4月  16 11:11 test
查看客戶端:
[root@web01 ~]# ll /mnt/
-rw-r--r-- 1 666 666 4 Apr 16 11:11 test
為了避免程序在操作NFS時。權(quán)限會出現(xiàn)錯誤,我們將進程運行的用戶,與nfs存儲壓縮的用戶保持一致。
[root@web01 ~]# groupadd -g 666 www
[root@web01 ~]# useradd -u 666 www -g www
[root@web01 ~]# ll /mnt/
-rw-r--r-- 1 www www 4 Apr 16 11:11 test

1.NFS存儲優(yōu)點
1.NFS簡單易用、方便部署、數(shù)據(jù)可靠、服務(wù)穩(wěn)定、滿足中小企業(yè)需求。
2.NFS的數(shù)據(jù)都在文件系統(tǒng)之上,所有數(shù)據(jù)都是能看得見。

2.NFS存儲局限
1.存在單點故障,他不支持集群模式。 如果構(gòu)建高可用維護麻煩web->nfs()->backup
2.NFS數(shù)據(jù)都是明文, 并不對數(shù)據(jù)做任何校驗,也沒有密碼驗證(強烈建議內(nèi)網(wǎng)使用)。

3.NFS應(yīng)用建議
1.生產(chǎn)場景應(yīng)將靜態(tài)數(shù)據(jù)(jpg\png\mp4\avi\css\js)盡可能放置CDN場景進行環(huán)境, 以此來減少后端存儲壓力
2.如果沒有緩存或架構(gòu)、代碼等,本身歷史遺留問題太大,在多存儲也沒意義

案例

準備3臺虛擬機服務(wù)器,并且請按照要求搭建配置NFS服務(wù)。
NFS服務(wù)端(A)
NFS客戶端(B)
NFS客戶端(C)
1.在NFS服務(wù)端(A)上共享/data/w(可寫)及/data/r(只讀)
2.在NFS客戶端(B/C)上進行掛載

環(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



172.16.1.31作為服務(wù)端,需要共享  /data/w (rw)  /data/r (ro)
?著作權(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)容

  • 第1章 存儲與nfs存儲概述 1.為什么用共享存儲2.存儲有哪些工具3.共享存儲應(yīng)用場景有哪些4.部署nfs共享存...
    吃可愛長大鴨閱讀 856評論 0 0
  • 一、什么是nfs 是network file system 的縮寫,網(wǎng)絡(luò)文件系統(tǒng),NFS共享存儲 二、nfs的功能...
    Linux運維閱讀 428評論 0 0
  • 什么是nfsnetwork file system 網(wǎng)絡(luò)文件系統(tǒng). nfs能干什么?實現(xiàn)不同主機系統(tǒng)之間的共享 ...
    a幕城閱讀 613評論 0 8
  • NFS是一種基于TCP/IP傳輸?shù)木W(wǎng)絡(luò)文件系統(tǒng)協(xié)議,最初由SUN公司開發(fā)。通過使用NFS協(xié)議客戶機可以向訪問本地目...
    守優(yōu)閱讀 1,899評論 0 6
  • 本文解釋如何在Centos 7中設(shè)置NFS服務(wù)器,并且如何Rancher中使用NFS 作為共享存儲。解決volum...
    大羅馬的太陽閱讀 12,388評論 6 4

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