nfs服務(wù)

NFS簡介

nfs是Network File System的縮寫,中文意思就是網(wǎng)絡(luò)文件系統(tǒng)。主要功能就是通過網(wǎng)絡(luò)(一般是局域網(wǎng))讓不同的主機(jī)系統(tǒng)之間可以共享文件或目錄。NFS客戶端,可以通過掛在的方式將NFS服務(wù)端共享的數(shù)據(jù)目錄掛在到NFS客戶端本地系統(tǒng)中。從客戶端本地看,NFS服務(wù)端共享的目錄就好像是客戶端自己的磁盤分區(qū)一樣,從而卻是遠(yuǎn)端的NFS服務(wù)器的目錄。NFS網(wǎng)絡(luò)文件系統(tǒng)就像windows系統(tǒng)的網(wǎng)絡(luò)共享。

NFS應(yīng)用以及企業(yè)中NFS的作用

在企業(yè)的集群架構(gòu)中,NFS網(wǎng)絡(luò)文件系統(tǒng)一般被用來存儲共享視頻、圖片、附件等靜態(tài)資源文件,通常網(wǎng)站用戶上傳的文件都會放到NFS共享里,然后前端所有的節(jié)點(diǎn)訪問這些靜態(tài)資源時都可以讀取NFS存儲上的組員。

作用如圖:
image.png

用戶A上傳一個圖片無論是放在那臺機(jī)器上,最終都會放到存儲服務(wù)器上。而用戶B無論訪問那臺機(jī)器都會找到。

NFS系統(tǒng)原理介紹

image.png

這張圖說明了NFS在啟動之前會需要先啟動rpc服務(wù),因為nfs是通過網(wǎng)絡(luò)來進(jìn)行傳輸?shù)?,因此,nfs會使用一些端口來傳輸數(shù)據(jù)。但是nfs的端口號不固定,是隨機(jī)的。這樣的話nfs客戶端就無法得知nfs服務(wù)端的端口號了。也就不能建立連接了。所以得需要rpc來實現(xiàn)

rpc介紹

RPC(中文意思就是遠(yuǎn)程過程調(diào)用),NFS的RPC服務(wù)最主要的功能就是記錄每個NFS功能所對應(yīng)的端口號,并且在NFS客戶端請求時將該端口和功能對用的信息傳遞給請求數(shù)據(jù)的NFS服務(wù)端,從而確??蛻舳丝梢赃B接到正確的NFS端口上去。達(dá)到實現(xiàn)數(shù)據(jù)傳輸。

nfs 的工作流程圖

image.png

1)用戶訪問網(wǎng)站程序,由程序在NFS客戶端上發(fā)出存取NFS文件的請求,這時NFS客戶端的RPC服務(wù),會通過網(wǎng)絡(luò)向NFS服務(wù)器端的RPC服務(wù)的111端口發(fā)出NFS文件存取功能的詢問請求。
2)NFS服務(wù)器端的PRC服務(wù)找到對應(yīng)自己的NFS端口后,通知NFS客戶端的PRC服務(wù)
3)此時NFS客戶端獲取到正確的端口,并與NFS daemon聯(lián)機(jī)存取數(shù)據(jù)
4)NFS客戶端把數(shù)據(jù)存取成功后,返回給前端訪問程序,告知用戶存取結(jié)果。

NFS部署

外網(wǎng) 10.0.0.7 內(nèi)網(wǎng) 172.16.1.7 客戶端 web01
外網(wǎng)10.0.0.41 內(nèi)網(wǎng)172.16.1.31 服務(wù)端 nfs
yum install -y nfs-utils rpnbind (客戶端和服務(wù)端都要安裝)
nfs-utils :NFS服務(wù)的主程序,包括rpc.nfsd rpc.mountd rpc.idmapd和相關(guān)文檔說明,以及執(zhí)行命文件等
rpcbind:在啟動RPC 程序之前,需要做好端口和功能的對應(yīng)映射工作,這個映射工作就是由rpcbind服務(wù)來完成的。所以在提供NFS服務(wù)之前需要先啟動rpcbind服務(wù)
啟動nfs(服務(wù)端)
1)systemctl start rpnbind

  1. sustemctl start nfs
    2)客戶端啟動rpcbind
    systemctl start rpcbind

NFS配置文件/etc /exports

[root@nfs ~]# vim /etc/exports
shar upload## 前面有# 號
/upload 172.16.1.0/24(rw) rw帶表允許客戶端只讀寫
可以同通過如下來查看nfs配置參數(shù)以及默認(rèn)的參數(shù)
root@nfs ~]# cat /var/lib/nfs/etab
/upload 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)
參數(shù)說明
rw(Read-write) 表示可讀寫權(quán)限
ro(read-only)表示只讀
sync 請求或?qū)懭霐?shù)據(jù)時,數(shù)據(jù)同步寫入到NFS server的硬盤后才返回。 優(yōu)點(diǎn),數(shù)據(jù)安全不丟失。缺點(diǎn),性能比不啟動該參數(shù)差。
async 寫入時數(shù)據(jù)會先寫到內(nèi)存緩沖區(qū),直到硬盤有了空擋才會寫入磁盤,這樣可以提升寫入效率。風(fēng)險就是服務(wù)器宕機(jī)或者不正常的關(guān)機(jī),會損緩沖區(qū)中未寫入磁盤的數(shù)據(jù)。
no_root_squash 如果該用戶時root用戶,它對共享目錄具有root權(quán)限
root_squash 如果訪問的用戶時root用戶,他對共享目錄是匿名用戶,并且他的UID和GID都為nfsnobody
all_squash 不管是誰訪問,他的權(quán)限都是匿名用戶并且UID和GID都為nfsnobody。
anonuid 他可以使得不同的NFS Clients時,如多臺Web Server共享一個NFS目錄,通過這個參數(shù)可以使得不同的NFS Clients寫入數(shù)據(jù)對所有NFS cliemts保持用同樣的用戶權(quán)限,即為配置的匿名UID對用戶權(quán)限,這。
anongid 跟anonuid一樣就是把uid換成gid
流程圖:


image.png

實戰(zhàn)

服務(wù)端客戶端都啟動 好了以后
在客戶端檢查


image.png

然后再服務(wù)端創(chuàng)建共享的的目錄,并把這個目錄授權(quán)用戶主和用戶組該成nfsnobody 客戶端不用管
在客戶端mount -t nfs 172.16.1.31:/upload /video
可以通過/proc/mounts查看客戶端的掛在參數(shù)

NFS客戶端優(yōu)化

mount -o 指定掛在參數(shù)說明
nosuid 取消特殊權(quán)限如果有特殊權(quán)限文件里不讓用
rw /ro 只能讀寫和只讀
nodev 不能保留裝置文件的特殊功能
noexec 不讓具有執(zhí)行文件的權(quán)限有x也不行
nouser 不允許用戶擁有文件的掛在與卸載功能
noauto 這個auto 指的是“mount -a” 時會不會被掛在的項目,如果不需要這個分區(qū)隨時被掛載,可以設(shè)置為noauto。
noatime 訪問文件時不更新文件的inode時間戳,高并發(fā)環(huán)境,能提高I/O性能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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