nfs-存儲服務(wù)

什么是NFS?


image.png

1.存儲服務(wù)流程圖

image.png

2.存儲服務(wù)概念介紹

存儲服務(wù)概念價值:
1.可以實現(xiàn)數(shù)據(jù)統(tǒng)一共享存儲
2.節(jié)省架構(gòu)服務(wù)運(yùn)營成本
如何數(shù)據(jù)存儲:

NFS(network file system --- 網(wǎng)絡(luò)共享文件系統(tǒng) 不支持windows)
FTP(文件共享存儲 --- windows比較方便簡單 linux如何部署FTP--數(shù)據(jù)權(quán)限設(shè)置)
samba (linux部署服務(wù)端 可以讓 windows 與 linux同時可以訪問)
分布式存儲:
Moosefs(mfs)、GlusterFS、FastDFS(推薦)

3.存儲服務(wù)部署過程

服務(wù)端
第一步:安裝軟件

yum install -y nfs-utils rpcbind

檢查軟件是否安裝

[root@nfs01 ~]# rpm -qa nfs-utils
nfs-utils-1.3.0-0.61.el7.x86_64
[root@nfs01 ~]# rpm -qa rpcbind
rpcbind-0.2.0-47.el7.x86_64

第二步:編輯配置文件

nfs配置文件所在位置 /etc/exports
可以進(jìn)行共享存儲目錄     允許存儲數(shù)據(jù)網(wǎng)段信息(存儲目錄權(quán)限配置 存儲數(shù)據(jù)方式配置)
/data                                   172.16.1.0/24            (rw,sync)

sync-同步方式存儲數(shù)據(jù)

同步存儲數(shù)據(jù)與異步存儲區(qū)別:
同步方式存儲數(shù)據(jù):用戶有數(shù)據(jù)存儲 ---- 存儲服務(wù)器(磁盤中) 存儲安全性高
異步方式存儲數(shù)據(jù):用戶有數(shù)據(jù)存儲 ---- 內(nèi)存 --- 存儲服務(wù)器(磁盤中) 存儲效率高

第三步:創(chuàng)建備份目錄并授權(quán)

[root@nfs01 ~]# mkdir -p /data
[root@nfs01 ~]# chown nfsnobody.nfsnobody /data
[root@nfs01 ~]# ll -d /data
drwxr-xr-x 4 nfsnobody nfsnobody 24 Jul 17 10:21 /data

第四步:啟動服務(wù)程序
存儲服務(wù)啟動服務(wù)一定先啟動rpc服務(wù)在啟動nfs服務(wù)

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

客戶端
第一步:安裝軟件

yum install -y nfs-utils

第二步:進(jìn)行存儲目錄掛載

[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt

第三步:進(jìn)行測試

[root@backup /mnt]# echo oldboy123 >oldboy.txt
[root@backup /mnt]# ll
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 10 Jul 22 12:30 oldboy.txt
[root@nfs01 ~]# ll /data
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 10 Jul 22 12:30 oldboy.txt

4.存儲服務(wù)配置文件編寫格式

man exports

ro 只讀配置 使存儲目錄權(quán)限位只讀 使開發(fā)人員(線下)可以查看線上服務(wù)器數(shù)據(jù)(運(yùn)維)
rw 讀寫權(quán)限
sync 同步存儲數(shù)據(jù)
async 異步存儲數(shù)據(jù)
all_squash 將所有普通用戶映射為指定nfsnobody用戶
no_all_squash 將所有普通用戶都不做映射
root_squash 將root用戶映射為指定nfsnobody用戶
no_root_squash 將root用戶不做映射

all_squash映射實踐
第一步: 服務(wù)端(修改配置文件)

/data 172.16.1.0/24(ro,sync,all_squash)

systemctl reload nfs

restart:將所有連接會話都會直接斷開
reload: 只會將沒有數(shù)據(jù)傳輸鏈接斷開, 重新建立連接 讓用戶訪問感受更好

第二步:上傳數(shù)據(jù)測試

[oldboy@web01 mnt]$ touch oldboy.txt
[oldboy@web01 mnt]$ ll
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 19 Jul 16 12:03
oldboy.txt   --- 所有普通用戶都會做映射

no_all_squash映射實踐
第一步: 服務(wù)端(修改配置文件)

/data 172.16.1.0/24(ro,sync,no_all_squash)
systemctl reload nfs 

第二步:上傳數(shù)據(jù)測試 服務(wù)端查看

[root@nfs01 data]# ll
total 4
-rw-rw-r-- 1      1017    1017  0 Jul 16 12:08 oldboy02.txt
-rw-rw-r-- 1      1017    1017  0 Jul 16 12:10 oldboy_1017.txt   --- 用戶傳輸數(shù)據(jù)身份沒有變化,看用戶uid信息

root_squash映射實踐
第一步:服務(wù)端編寫配置文件

/data 172.16.1.0/24(rw,sync,root_squash)

第二步:客戶端檢查存儲信息

[root@web01 mnt]# touch root_01.txt
[root@web01 mnt]# ll
-rw-r--r-- 1 nfsnobody nfsnobody  0 Jul 16 12:19 root_01.txt     --- root用戶會映射為指定的nfsnobody用戶

no_root_squash映射實踐
第一步:服務(wù)端配置文件修改

/data 172.16.1.0/24(rw,sync,no_root_squash)

第二步:客戶端檢查存儲信息

[root@web01 mnt]# touch root_02.txt
[root@web01 mnt]# ll
-rw-r--r-- 1 root      root       0 Jul 16 12:22 root_02.txt
image.png

image.png

5.4種squash,如何選擇使用

root_squash no_root_squash
all_squash no_all_squash
建議選擇 :no_all_squash root_squash
指定nfs映射用戶:
anonuid anongid --指定映射成什么用戶

練習(xí):
/data/w 可讀可寫權(quán)限,所有用戶都做映射, 采用同步傳輸數(shù)據(jù)
/data/r 只能讀取數(shù)據(jù),只有root用戶組映射,采用異步傳輸數(shù)據(jù)
客戶端:
backup /data/w --掛載點 /data/w 可以存儲數(shù)據(jù)
web01 /data/r --掛載點 /data/r 不能存儲數(shù)據(jù)

服務(wù)端
第一步:編寫配置文件

[root@nfs01 ~]# vim /etc/exports
/data/w 172.16.1.0/24(rw,sync,all_squash)
/data/r 172.16.1.0/24(ro,async,root_squash)
[root@nfs01 ~]# systemctl reload nfs

第二步:創(chuàng)建共享目錄

[root@nfs01 ~]# mkdir /data{r,w}
[root@nfs01 ~]# chown nfsnobody. /data{r,w}

第三步:重啟存儲服務(wù)
systemctl reload nfs

客戶端
第一步:創(chuàng)建掛載點目錄
第二步:進(jìn)行掛載

web01
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/r /data/r
[root@web01 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             19G  1.7G   18G   9% /
devtmpfs             224M     0  224M   0% /dev
tmpfs                235M     0  235M   0% /dev/shm
tmpfs                235M  5.6M  229M   3% /run
tmpfs                235M     0  235M   0% /sys/fs/cgroup
/dev/sda1            197M  116M   82M  59% /boot
tmpfs                 47M     0   47M   0% /run/user/0
172.16.1.31:/data/r   19G  1.7G   18G   9% /data/r
backup
[root@backup ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             19G  1.7G   18G   9% /
devtmpfs             224M     0  224M   0% /dev
tmpfs                235M     0  235M   0% /dev/shm
tmpfs                235M  5.6M  229M   3% /run
tmpfs                235M     0  235M   0% /sys/fs/cgroup
/dev/sda1            197M  116M   82M  59% /boot
172.16.1.31:/data     19G  1.7G   18G   9% /mnt
tmpfs                 47M     0   47M   0% /run/user/0
172.16.1.31:/data/w   19G  1.7G   18G   9% /data/w

6.存儲服務(wù)重點說明:

  1. 存儲服務(wù)概念說明 實現(xiàn)數(shù)據(jù)統(tǒng)一共享存儲 節(jié)省服務(wù)硬盤開銷
  2. 存儲服務(wù)部署過程 部署過程 RPC 配置文件如何編寫
    異常:軟件無法安裝
    原因:文件上鎖了
    解決:檢查相關(guān)目錄或文件是否解鎖
  3. 存儲服務(wù)配置參數(shù) ******
    4個squash anonuid anongid (修改映射用戶)

7.NFS影響存儲權(quán)限原因:

1.服務(wù)端配置文件 ro/rw
2.服務(wù)端本身的目錄權(quán)限
3.服務(wù)端共享目錄權(quán)限存在繼承關(guān)系
建議:建議設(shè)置共享目錄時,不要存在父級與子集關(guān)系
4.客戶端掛載參數(shù)是否為ro

8.nfs掛載常見問題

異常問題一:

ls: cannot open directory .: Stale file handle  (文件句柄錯誤)

出現(xiàn)原因: 當(dāng)父級和子級目錄同時進(jìn)行掛載時,一旦父級目錄取消共享,但是客戶端還是處于掛載狀態(tài)
問題解決: 將和父級目錄有關(guān)的所有掛載點全部卸載,重新掛載
異常問題二:

Cannot register service: RPC: Unable to receive;
出現(xiàn)原因: 服務(wù)啟動順序不正確

問題解決: 關(guān)閉所有服務(wù),按順序進(jìn)行啟動
異常問題三:

出現(xiàn)掛載卡死情況
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

出現(xiàn)原因: 服務(wù)端開啟防火墻,阻止客戶端訪問
問題解決: 關(guān)閉防火墻
異常問題四:
服務(wù)端采用restart情況,會有一個90s延遲;造成客戶端掛載好共享目錄,90s內(nèi)無法存儲數(shù)據(jù)
出現(xiàn)原因:
cat /etc/sysconfig/nfs|grep 90

NFSD_V4_GRACE=90

NFSD_V4_LEASE=90

9.nfs排錯原理

1.檢查服務(wù)端服務(wù)是否啟動
2.檢查nfs服務(wù)是否向rpc服務(wù)注冊

 [root@nfs01 ~]# rpcinfo -p localhost   未注冊情況
 program vers proto   port  service
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
[root@nfs01 ~]# rpcinfo -p localhost
program vers proto   port  service     已經(jīng)進(jìn)行注冊
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
100005    1   udp  20048  mountd
100005    1   tcp  20048  mountd
100005    2   udp  20048  mountd
100005    2   tcp  20048  mountd
100005    3   udp  20048  mountd
100005    3   tcp  20048  mountd
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100227    3   tcp   2049  nfs_acl
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100227    3   udp   2049  nfs_acl
100021    1   udp  60318  nlockmgr
100021    3   udp  60318  nlockmgr
100021    4   udp  60318  nlockmgr
100021    1   tcp  32828  nlockmgr
100021    3   tcp  32828  nlockmgr
100021    4   tcp  32828  nlockmgr

3.檢查nfs是否存在可以共享的目錄

[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/r 172.16.1.0/24
/data/w 172.16.1.0/24

10.nfs服務(wù)相關(guān)的文件命令總結(jié):

/etc/exports
/var/lib/nfs/etab --- 記錄nfs服務(wù)默認(rèn)配置參數(shù)信息
rpcinfo -p 172.16.1.31
showmount -e 172.16.1.31
/usr/sbin/exportfs --- 可以平滑重啟nfs服務(wù),可以臨時設(shè)置共享存儲目錄
平滑重啟服務(wù):exportfs -rv
臨時創(chuàng)建目錄:exportfs -o rw,sync 192.168.232.0/24:/data01

11.如何進(jìn)行掛載:

mount -t nfs 172.16.1.31:/data /mnt
實現(xiàn)開機(jī)自動掛載:
方法一:編寫/etc/rc.local
mount -t nfs 172.16.1.31:/data /mnt
方法二:編寫/etc/fstab文件
172.16.1.31:/data /mnt nfs defaults 0 0
centos6
啟動系統(tǒng) -- 加載fstab -- 啟動network網(wǎng)絡(luò)服務(wù) -- netfs (在系統(tǒng)啟動完畢之后,再次加載fstab)
centos7
啟動系統(tǒng) -- 加載fstab -- 啟動network網(wǎng)絡(luò)服務(wù) -- remote-fs.target(在系統(tǒng)啟動完畢之后,再次加載fstab)
啟動nfs服務(wù)客戶端很慢:
出現(xiàn)原因:在客戶端上配置自動nfs服務(wù)掛載 --- 耦合度太高
解決問題:取消自動掛載
啟動順序 先開啟后端服務(wù) nfs mysql backup 緩存服務(wù) 在開啟前端服務(wù) web服務(wù) 負(fù)載均衡服務(wù)
掛載參數(shù)說明:
defaults:
rw, suid(setuid), dev, exec, auto(mount -a), nouser, and async(異步存儲)
noatime
訪問文件時不更新文件的inode時間戳,高并發(fā)環(huán)境下,推薦顯示應(yīng)用該選項,可以提高系統(tǒng)I/O性能。性能優(yōu)化
nodiratime
不更新文件系統(tǒng)上的directory inode時間戳,高并發(fā)環(huán)境,推薦顯式應(yīng)用該選項,可以提高系統(tǒng)I/O性能。性能優(yōu)化
remount
在不進(jìn)行卸載掛載點時,直接重新掛載修改掛載參數(shù)
文件系統(tǒng)只讀,mount -o remount,rw /
rsize=262144 用戶 (讀取) --- web01 /data 2M --- nfs /data 10M 壓力大
設(shè)置一個緩存區(qū) 262144字節(jié) 設(shè)置大小和內(nèi)存有關(guān)
wsize=262144 用戶(存儲) --- web01 /data 10M --- nfs /data 10M 壓力大
設(shè)置一個緩沖區(qū) 262144字節(jié)
hard --- 當(dāng)服務(wù)端處于關(guān)閉狀態(tài),客戶端會處于一直掛載
soft --- 當(dāng)服務(wù)端處于關(guān)閉狀態(tài),不會一直掛載
proto=tcp --- 掛載協(xié)議
客戶端重要文件:/proc/mounts --- 查看到mount掛載命令默認(rèn)參數(shù)信息
進(jìn)行卸載:umount -lf

最后編輯于
?著作權(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)容

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