NFS服務部署

Dusk_Yun發表於2024-08-19

一、基礎概念

  1. NFS是一種網路檔案系統,實現資料一致性,檔案共享
  2. NFS將硬碟進行共享,共享的目錄;兩臺伺服器的前提下不同使用者如何實現上傳訪問到靜態圖片/影片都能看到相同的資料則使用NFS
  3. 其實現在很多企業都會有一個CDN分散式檔案快取,這個快取可以實現將靜態圖片/影片上傳到CDN分散式檔案快取(要錢),好處是:客戶端反應賊快(看)但是如果NFS掛了就只能看,不能上傳
  4. 本地掛載:mount /dev/sdb/ /mnt
  5. NFS掛載:mount -t nfs 10.0.0.31:/data /mnt # data是掛載點目錄 /mnt是掛載點
  6. 我們的底層邏輯是:IP+埠 #這樣的方式實現通訊的

二、微型架構圖:

image

1、架構詳解

1.1、無CDN分散式檔案快取

  1. 使用者訪問域名透過LB的DR模式(負載均衡)訪問到後臺真實伺服器
  2. 如果我們第一次透過web01將影片圖片上傳之後,因為DR模式的緣故第二次會訪問的是web02,那麼這個時候會發現圖片消失
  3. 這時候我們可以採用將web01和web02的影片和圖片資料夾同步到NFS共享儲存伺服器中
  4. 那麼無論當我們第幾次訪問web01/web02訪問到的靜態資源圖片都在NFS共享儲存伺服器中

1.2、有CDN分散式檔案快取

  1. 購買CDN分散式快取之後,我們可以將NFS共享儲存檔案中內容推到CDN分散式檔案快取中並設定圖片的快取時間
  2. 這樣的優勢就是,使用者在訪問的時候先去訪問CDN分散式檔案快取再透過LB負載均衡的模型去訪問真實伺服器
  3. 也就是說你先拿到圖片後拿到真實伺服器中的內容

三、NFS配置詳解:

[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
nfs共享引數 引數作用
rw 讀寫許可權
ro 只讀許可權
all_squash 無論NFS客戶端使用什麼賬號訪問,均對映為NFS服務端的匿名使用者
no_all_squash 無論NFS客戶端使用什麼賬號訪問,都不進行壓縮
sync 同時將資料寫入到記憶體與硬碟中,保證不丟失資料
async 優先將資料儲存到記憶體,然後再寫入磁碟;這樣更高效,但可能會丟失資料
anonuid 配置all_squash使用,指定NFS的使用者UID,必須存在系統
anongid 配置all_squash使用,指定NFS的使用者UID,必須存在系統

四、NFS服務部署:

1.安裝服務
[root@nfs ~]# yum -y install nfs-utils
2.配置服務
[root@nfs ~]# vim /etc/exports
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)
3.啟動服務
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl enable nfs
檢查埠 111
[root@nfs ~]# netstat -tnulp
4.檢查配置檔案是否正確
 /var/lib/nfs/etab  如果有內容說明配置正確,如果為空說明配置錯誤
[root@nfs ~]# 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)


5.根據配置檔案建立必要資料
[root@nfs ~]# mkdir /data
[root@nfs ~]# ll /data
total 0

修改目錄屬主屬組
[root@nfs ~]# grep 65534 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@nfs ~]# ll -d /data/
drwxr-xr-x. 2 root root 6 Nov  6 12:06 /data/
[root@nfs ~]# chown nfsnobody.nfsnobody /data
[root@nfs ~]# ll -d /data
drwxr-xr-x. 2 nfsnobody nfsnobody 6 Nov  6 12:06 /data



客戶端使用:
1.安裝nfs-utils(只安裝不執行)
[root@web01 ~]# yum -y install nfs-utils

2.檢視服務端共享的目錄
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

3.掛載遠端檔案系統nfs
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web01 ~]# df -h
Filesystem         Size  Used Avail Use% Mounted on
devtmpfs           476M     0  476M   0% /dev
tmpfs              487M     0  487M   0% /dev/shm
tmpfs              487M   14M  473M   3% /run
tmpfs              487M     0  487M   0% /sys/fs/cgroup
/dev/sda3           18G  2.3G   16G  13% /
/dev/sda1          197M  110M   88M  56% /boot
tmpfs               98M     0   98M   0% /run/user/0
172.16.1.31:/data   18G  2.3G   16G  13% /mnt

進入/mnt測試寫入
[root@web01 ~]# cd /mnt/
total 0
[root@web01 mnt]# touch 1.txt
[root@web01 mnt]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec  5 10:48 1.txt



NFS引數: 指定匿名壓縮使用者為uid和gid為666
[root@nfs ~]# groupadd -g666 www
[root@nfs ~]# useradd -u666 -g666 -M -s /sbin/nologin www
修改nfs配置
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
修改目錄屬主屬組
[root@nfs ~]# chown www.www /data
[root@nfs ~]# ll -d /data
drwxr-xr-x. 2 www www 6 Dec  5 10:54 /data


檢視記憶體的對映
[root@web01 ~]# cat /proc/mounts
如果掛載夯住使用-f
[root@web01 ~]# umount -f /mnt

五、小結:

1、NFS儲存優點:

  1. NFS檔案簡單易用、方便部署、資料可靠、服務穩定、滿足中小企業需求
  2. NFS檔案系統記憶體放資料都在檔案系統之上,所有資料都是能看到的

2、NFS儲存侷限

  1. 存在單點故障,如果構建高可用維護麻煩 web->nfs0->backup
  2. NFS資料明文,並不多資料做任何校驗
  3. 客戶端掛載NFS伺服器沒有密碼驗證,安全性一般(內網使用)

3、NFS應用建議

  1. 生產場景將靜態資料儘可能往前端推,減少後端儲存壓力
  2. 必須將儲存裡的靜態資源透過CDN快取 jpg\png\mp4\avi\cdd\js
  3. 如果沒有快取或架構本身歷史遺留問題太大,在多儲存也無用

相關文章