- NFS用戶映射4種squash在架構中的選擇
- 存儲服務配置參數
- nfs掛載常見問題
- NFS服務相關重要文件命令總結
- 掛載參數說明
第一部分 NFS4種squash
image
1.1NFS存儲服務用戶映射原理圖
客戶端映射原理圖
1.2 NFS用戶映射的練習
服務端:
/data/w 可讀可寫權限,所有用戶都做映射, 采用同步傳輸數據
/data/r 只能讀取數據,只有root用戶組映射,采用異步傳輸數據
客戶端:
backup /data/w --掛載點 /data/w 可以存儲數據
web01 /data/r --掛載點 /data/r 不能存儲數據
解題步驟
服務端:
第一個歷程:編寫配置文件
vi /etc/exports
/data/w 172.16.1.0/24(rw,sync,all_squash)
/data/r 172.16.1.0/24(ro,async,root_squash)
第二個歷程:創建共享存儲目錄
mkdir /data/{r,w}
chown nfsnobody. /data/{r,w}
第三個歷程:重啟存儲服務
systemctl reload nfs
###########################
客戶端:
第一個歷程:創建掛載點目錄
mkdir /data/{r,w}
第二個歷程:進行掛載
backup
mount -t nfs 172.16.1.31:/data/w /data/w
web01
mount -t nfs 172.16.1.31:/data/r /data/r
1.3 NFS服務影響存儲權限原因
1. 服務端配置文件參數 ro/rw
2. 服務端本身目錄權限(如果是多級目錄,要看上一級目錄的權限)
3. 服務端共享目錄權限存在繼承關系
PS:建議設置共享目錄時,不要存在父級與子級關系
4. 客戶端掛載參數是否為 ro
5.千萬不要將配置文件格式進行對齊。注意格式問題。
exportes配置文件的父級與子集
image
第二部分 nfs掛載常見問題
異常問題一:
ls: cannot open directory .: Stale file handle (文件句柄錯誤)
出現原因: 當父級和子級目錄同時進行掛載時,一旦父級目錄取消共享,但是客戶端還是處于掛載狀態 掛載也會顯示異常 看不到
問題解決: 將和父級目錄有關的所有掛載點全部卸載,重新掛載
異常問題二:
Cannot register service: RPC: Unable to receive;
出現原因: 服務啟動順序不正確 先啟動rpcbind
問題解決: 關閉所有服務,按順序進行啟動
centos 6 會出現這樣問題
異常問題三:
出現掛載卡死情況
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
出現原因: 服務端開啟防火墻,阻止客戶端訪問
問題解決: 關閉防火墻
異常問題四:
服務端采用restart情況,會有一個90s延遲;造成客戶端掛載好共享目錄,90s內無法存儲數據
出現原因:
cat /etc/sysconfig/nfs|grep 90
#NFSD_V4_GRACE=90
#NFSD_V4_LEASE=90
異常問題五:
客戶端未安裝nfs-utils
第三部分 nfs存儲排錯原理
01. 檢查服務端服務是否啟動
02. 檢查nfs服務是否向rpc服務注冊
[root@nfs01 ~]# rpcinfo -p localhost nfs并未向rpcbind注冊情況
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 已經進行注冊
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
03. 檢查nfs服務是否存在可以共享目錄
showmount -e 172.16.1.31
[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31: 沒有共享目錄
/data 172.16.1.0/24 有共享目錄
第四部分 NFS服務相關重要文件命令總結
/etc/exports
/var/lib/nfs/etab --- 記錄nfs服務默認配置參數信息(不能修改)
rpcinfo -p 172.16.1.31
showmount -e 172.16.1.31
/usr/sbin/exportfs --- 可以平滑重啟nfs服務,可以臨時設置共享存儲目錄
平滑重啟服務:exportfs -rv
臨時創建目錄:exportfs -o rw,sync 192.168.232.0/24:/data01
第五部分 NFS服務客戶端操作介紹
NFS服務客戶端操作介紹
如何進行掛載:
mount -t nfs 172.16.1.31:/data /mnt
實現開機自動掛載:
方法一:編寫/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
啟動系統 -- 加載fstab(本地) -- 啟動network網絡服務 -- netfs (在系統啟動完畢之后,再次加載fstab)
centos7
啟動系統 -- 加載fstab(本地) -- 啟動network網絡服務 -- remote-fs.target(在系統啟動完畢之后,再次加載fstab)
啟動nfs服務客戶端很慢:
出現原因:在客戶端上配置自動nfs服務掛載,有時候服務端的存儲目錄會出現問題,所以客戶端會一直掛載。
--- 耦合度太高(服務器和服務器的關系太過于緊密了)
解決問題:取消自動掛載
啟動順序 先開啟后端服務 nfs mysql backup 緩存服務 在開啟前端服務 web服務 負載均衡服務
掛載參數說明
defaults:
rw, suid(setuid), dev, exec, auto(mount -a), nouser, and async(異步存儲)
noatime
訪問文件時不更新文件的inode時間戳,高并發環境下,推薦顯示應用該選項,可以提高系統I/O性能。性能優化
? nodiratime
不更新文件系統上的directory inode時間戳,高并發環境,推薦顯式應用該選項,可以提高系統I/O性能。性能優化
remount
在不進行卸載掛載點時,直接重新掛載修改掛載參數
文件系統只讀,mount -o remount,rw /
rsize=262144 用戶 (讀取) --- web01 /data 2M --- nfs /data 10M 壓力大
web設置一個緩存區 262144字節 設置大小和內存有關 把用戶上次讀過的數據存在緩存區
wsize=262144 用戶(存儲) --- web01 /data 10M --- nfs存儲服務器壓力大 /data 10M
在客戶端設置一個緩沖區 262144字節
hard(了解) --- 當服務端處于關閉狀態,客戶端會處于一直掛載 不是好的狀態,會造成網站的耦合度過高。
soft(了解) --- 當服務端處于關閉狀態,不會一直掛載
proto=tcp(了解 ) --- 掛載協議
客戶端重要文件:/proc/mounts --- 查看到mount掛載命令默認參數信息
進行卸載:umount -lf
第六部分 NFS存儲服務的優缺點
優點:配置 安裝簡單
缺點:沒有認證功能 分布式存儲/ftp/samba
無法支持高并發存儲 日PV 2000萬
無法實現高可用 分布式存儲/keepalived