一、概述介紹
NFS是Network File System的縮寫,中文意思是網(wǎng)絡(luò)文件系統(tǒng),
主要功能是通過(guò)網(wǎng)絡(luò)(一般是局域網(wǎng))讓不同的主機(jī)系統(tǒng)之間可以共享文件或目錄
互聯(lián)網(wǎng)中小型網(wǎng)站集群機(jī)構(gòu)后端常用NFS進(jìn)行數(shù)據(jù)共享 (新華日?qǐng)?bào))
大型網(wǎng)站,那么有可能還會(huì)用到更復(fù)雜的分布式文件系統(tǒng),例如:Moosefs(mfs)、GlusterFS(*)、FastDFS
二、存在意義:
1)實(shí)現(xiàn)數(shù)據(jù)統(tǒng)一存儲(chǔ)
2)節(jié)省磁盤購(gòu)買成本
三、存儲(chǔ)原理
a 在存儲(chǔ)客戶端創(chuàng)建本地存儲(chǔ)數(shù)據(jù)目錄
b 在存儲(chǔ)服務(wù)端創(chuàng)建共享存儲(chǔ)數(shù)據(jù)目錄
c 實(shí)現(xiàn)客戶端目錄和存儲(chǔ)目錄建立掛載
# 客戶端目錄中操作數(shù)據(jù)等價(jià)于存儲(chǔ)服務(wù)器目錄中操作數(shù)據(jù)
四、部署過(guò)程
rpc (rpcbind) --- 遠(yuǎn)程過(guò)程調(diào)用服務(wù)程序 nfs每次重啟服務(wù)進(jìn)程和端口都會(huì)發(fā)生變化,有了rpc,他會(huì)管理nfs的進(jìn)程及端口,統(tǒng)一到111
(類似于中介)
服務(wù)端
1.安裝軟件程序
yum install -y rpcbind nfs-utils
#檢查軟件版本
rpm -qa rpcbind nfs-utils
2.vim /etc/exports
/data web*(rw)
配置文件樣例:
/projects proj*.local.domain(rw)
/usr *.local.domain(ro) @trusted(rw)
① ② ③
① 設(shè)置定義數(shù)據(jù)存儲(chǔ)目錄
② 定義允許哪些主機(jī)存儲(chǔ)數(shù)據(jù) 定義網(wǎng)段信息 定義地址信息 定義主機(jī)名稱信息
③ 定義存儲(chǔ)數(shù)據(jù)參數(shù)
3.創(chuàng)建存儲(chǔ)目錄
mkdir /data
chown nfsnobody.nfsnobody /data
4.編寫本地解析配置文件
vim /etc/hosts
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
5.啟動(dòng)服務(wù)
systemctl start rpcbind
systemctl start nfs
五、服務(wù)端配置文件詳細(xì)參數(shù)
/etc/exports
rw --- 是否允許向存儲(chǔ)目錄中存儲(chǔ)數(shù)據(jù) 存儲(chǔ)目錄可讀可寫
ro --- 是否允許向存儲(chǔ)目錄中存儲(chǔ)數(shù)據(jù) 存儲(chǔ)目錄只讀狀態(tài)
async --- 異步傳輸數(shù)據(jù) 客戶端(存儲(chǔ)數(shù)據(jù)) ---- 服務(wù)端 (內(nèi)存) ---> 服務(wù)端(磁盤)
sync --- 同步傳輸數(shù)據(jù) 客戶端(存儲(chǔ)數(shù)據(jù)) ---- 服務(wù)端 (磁盤)
root_squash --- 是否將用戶信息做映射轉(zhuǎn)換 將root用戶身份進(jìn)行轉(zhuǎn)換 (默認(rèn)轉(zhuǎn)換用戶nfsnobody)
no_root_squash --- 是否將用戶信息做映射轉(zhuǎn)換 將root用戶身份不做轉(zhuǎn)換
all_squash --- 是否將用戶信息做映射轉(zhuǎn)換 將普通用戶身份進(jìn)行轉(zhuǎn)換 (默認(rèn)轉(zhuǎn)換用戶nfsnobody)
no_all_squash --- 是否將用戶信息做映射轉(zhuǎn)換 將普通用戶身份不做轉(zhuǎn)換
anonuid ----指定uid
anongid -----指定gid
同步傳輸數(shù)據(jù)直接存儲(chǔ)到磁盤
異步傳輸數(shù)據(jù)先存儲(chǔ)到內(nèi)存再存儲(chǔ)磁盤
配置存儲(chǔ)服務(wù)參數(shù)時(shí):root_squash,no_all_squash,anonuid=xxx,anongid=xxx
root_squash,no_all_squash,這兩個(gè)可以不寫,默認(rèn)配置里已經(jīng)有了
六、默認(rèn)配置
cat /var/lib/nfs/etab
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)
客戶端
1.安裝軟件程序
yum install -y nfs-utils
2.掛載應(yīng)用存儲(chǔ)服務(wù)
mount -t nfs 172.16.1.31:/data /mnt
七、客戶端掛載參數(shù)
cat /proc/mounts
172.16.1.31:/data /mnt nfs4 rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.7,local_lock=none,addr=172.16.1.31 0 0
mount -o 掛載參數(shù)
rsize 提示數(shù)據(jù)存儲(chǔ)效率,減緩存儲(chǔ)服務(wù)器壓力 在客戶端內(nèi)存中設(shè)置了緩存
wsize 提升數(shù)據(jù)讀取效率,減緩存儲(chǔ)服務(wù)器壓力 在客戶端內(nèi)存中設(shè)置了緩沖
hard 實(shí)現(xiàn)長(zhǎng)連接掛載操作 (對(duì)于架構(gòu)而言,配置hard容易造成耦合度過(guò)程) 架構(gòu)師
soft 實(shí)現(xiàn)長(zhǎng)連接掛載操作(具有超時(shí)時(shí)間timeo=600) (對(duì)于架構(gòu)而言,配置soft可以實(shí)現(xiàn)解耦) 架構(gòu)師
proto 網(wǎng)絡(luò)掛載時(shí)選擇通訊協(xié)議 (tcp/udp)
atime 訪問存儲(chǔ)數(shù)據(jù)時(shí),會(huì)消耗磁盤IO, 影響磁盤性能
noatime 訪問存儲(chǔ)數(shù)據(jù)時(shí),不要更改atime屬性信息, 不會(huì)消耗磁盤IO, 減少磁盤性能消耗 優(yōu)化
diratime 訪問存儲(chǔ)目錄時(shí),會(huì)消耗磁盤IO, 影響磁盤性能
nodiratime 訪問存儲(chǔ)目錄時(shí),不要更改目錄atime屬性信息, 不會(huì)消耗磁盤IO, 減少磁盤性能消耗 優(yōu)化
客戶端掛載操作
臨時(shí)掛載操作: mount -t nfs 存儲(chǔ)服務(wù)器地址:存儲(chǔ)目錄 本地掛載點(diǎn)目錄
永久掛載操作:
方法一: 利用/etc/rc.local
方法二: 利用/etc/fstab
172.16.1.31:/data /mnt nfs defaults 0 0
PS: 關(guān)注系統(tǒng)啟動(dòng)順序
先加載/etc/fstab ---> 啟動(dòng)網(wǎng)絡(luò)服務(wù) ---> 加載/etc/fstab(systemctl start remote-fs.target)
存儲(chǔ)服務(wù)權(quán)限說(shuō)明:*****
1)存儲(chǔ)服務(wù)端配置文件參數(shù)沒有設(shè)置正確(rw/ro xxx_squash)
2) 存儲(chǔ)服務(wù)端存儲(chǔ)目錄本身權(quán)限配置問題
3)存儲(chǔ)客戶端掛載參數(shù)配置問題 (ro)
4)存儲(chǔ)目錄權(quán)限繼承關(guān)系 (服務(wù)端配置文件中不要有目錄層級(jí)配置)
八、存儲(chǔ)服務(wù)常用命令
rpcinfo --- 查看nfs服務(wù)注冊(cè)信息
rpcinfo -p 172.16.1.31
showmount --- 查看可用掛載目錄信息
showmount -e 172.16.1.31
exportfs --- 管理nfs服務(wù)運(yùn)行狀態(tài)
exportfs -rv 平滑重啟相當(dāng)于systemctl reload nfs
九、存儲(chǔ)服務(wù)企業(yè)應(yīng)用
棄用NFS案例: 如何解決NFS服務(wù)單點(diǎn)故障
讀取數(shù)據(jù)時(shí):棄用NFS服務(wù)(將存儲(chǔ)數(shù)據(jù)和web服務(wù)器數(shù)據(jù)做同步), 讓用戶讀取web服務(wù)器本地?cái)?shù)據(jù)
寫入數(shù)據(jù)時(shí):棄用NFS服務(wù)(寫入數(shù)據(jù)到本地 將數(shù)據(jù)進(jìn)行恢復(fù)同步),讓用戶寫入web服務(wù)器本地?cái)?shù)據(jù)
分布式存儲(chǔ)