您好,登錄后才能下訂單哦!
9.1 nfs介紹
9.1.1 nfs特點(diǎn)
NFS(Network File System)即網(wǎng)絡(luò)文件系統(tǒng),是FreeBSD支持的文件系統(tǒng)中的一種,它允許網(wǎng)絡(luò)中的計(jì)算機(jī)之間通過(guò)TCP/IP網(wǎng)絡(luò)共享資源。
在NFS的應(yīng)用中,本地NFS的客戶(hù)端應(yīng)用可以透明地讀寫(xiě)位于遠(yuǎn)端NFS服務(wù)器上的文件,就像訪(fǎng)問(wèn)本地文件一樣
nfs適用于Linux與Unix之間實(shí)現(xiàn)文件共享,不能實(shí)現(xiàn)Linux與Windows間的文件共享功能
nfs是運(yùn)行在應(yīng)用層的協(xié)議,其監(jiān)聽(tīng)于2049/tcp和2049/udp套接字上
nfs服務(wù)只能基于IP進(jìn)行認(rèn)證,這也是它的缺點(diǎn)之一
9.1.2 使用nfs的好處
a) 節(jié)省本地存儲(chǔ)空間,將常用的數(shù)據(jù)存放在一臺(tái)NFS服務(wù)器上且可以通過(guò)網(wǎng)絡(luò)訪(fǎng)問(wèn),那么本地終端將可以減少自身存儲(chǔ)空間的使用
b) 用戶(hù)不需要在網(wǎng)絡(luò)中的每個(gè)機(jī)器上都建有Home目錄,Home目錄可以放在NFS服務(wù)器上且可以在網(wǎng)絡(luò)上被訪(fǎng)問(wèn)使用
c) 一些存儲(chǔ)設(shè)備如軟驅(qū)、CDROM和Zip(一種高儲(chǔ)存密度的磁盤(pán)驅(qū)動(dòng)器與磁盤(pán))等都可以在網(wǎng)絡(luò)上被別的機(jī)器使用。這可以減少整個(gè)網(wǎng)絡(luò)上可移動(dòng)介質(zhì)設(shè)備的數(shù)量
9.1.3 nfs的體系組成
nfs體系至少有兩個(gè)主要部分:
一臺(tái)NFS服務(wù)器
若干臺(tái)客戶(hù)機(jī)
nfs體系的架構(gòu)圖如下:
客戶(hù)機(jī)通過(guò)TCP/IP網(wǎng)絡(luò)遠(yuǎn)程訪(fǎng)問(wèn)存放在NFS服務(wù)器上的數(shù)據(jù)
在NFS服務(wù)器正式啟用前,需要根據(jù)實(shí)際環(huán)境和需求,配置一些NFS參數(shù)
9.1.4 nfs的應(yīng)用場(chǎng)景
nfs有很多實(shí)際應(yīng)用場(chǎng)景,以下是一些常用的場(chǎng)景:
a) 多個(gè)機(jī)器共享一臺(tái)CDROM或其他設(shè)備。這對(duì)于在多臺(tái)機(jī)器中安裝軟件來(lái)說(shuō)更加便宜與方便
b) 在大型網(wǎng)絡(luò)中,配置一臺(tái)中心NFS服務(wù)器用來(lái)放置所有用戶(hù)的home目錄可能會(huì)帶來(lái)便利。這些目錄能被輸出到網(wǎng)絡(luò)以便用戶(hù)不管在哪臺(tái)工作站上登錄,總能得到相同的home目錄
c) 不同客戶(hù)端可在NFS上觀(guān)看影視文件,節(jié)省本地空間
d) 在客戶(hù)端完成的工作數(shù)據(jù),可以備份保存到NFS服務(wù)器上用戶(hù)自己的路徑下
9.2 nfs工作機(jī)制
nfs是基于rpc來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)文件系統(tǒng)共享的。所以我們先來(lái)說(shuō)說(shuō)rpc
9.2.1 RPC
RPC(Remote Procedure Call Protocol),遠(yuǎn)程過(guò)程調(diào)用協(xié)議,它是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。
RPC協(xié)議假定某些傳輸協(xié)議的存在,如TCP或UDP,為通信程序之間攜帶信息數(shù)據(jù)。在OSI網(wǎng)絡(luò)通信模型中,RPC跨越了傳輸層和應(yīng)用層。
RPC采用客戶(hù)機(jī)/服務(wù)器模式。請(qǐng)求程序就是一個(gè)客戶(hù)機(jī),而服務(wù)提供程序就是一個(gè)服務(wù)器。
rpc工作機(jī)制如上圖所示,下面來(lái)描述一下它:
a) 客戶(hù)端程序發(fā)起一個(gè)RPC系統(tǒng)調(diào)用基于TCP協(xié)議發(fā)送給另一臺(tái)主機(jī)(服務(wù)端)
b) 服務(wù)端監(jiān)聽(tīng)在某個(gè)套接字上,當(dāng)收到客戶(hù)端的系統(tǒng)調(diào)用請(qǐng)求以后,將收到的請(qǐng)求和其所傳遞的參數(shù)通過(guò)本地的系統(tǒng)調(diào)用執(zhí)行一遍,并將結(jié)果返回給本地的服務(wù)進(jìn)程
c) 服務(wù)端的服務(wù)進(jìn)程收到返回的執(zhí)行結(jié)果后將其封裝成響應(yīng)報(bào)文,再通過(guò)rpc協(xié)議返回給客戶(hù)端
d) 客戶(hù)端調(diào)用進(jìn)程接收答復(fù)信息,獲得進(jìn)程結(jié)果,然后調(diào)用執(zhí)行繼續(xù)進(jìn)行
CentOS6中RPC服務(wù)的進(jìn)程名是portmapper,可以通過(guò)rpcinfo -p查看當(dāng)前系統(tǒng)使用的RPC服務(wù)名
9.2.2 NIS
NIS:Network Information System,網(wǎng)絡(luò)信息系統(tǒng),是對(duì)主機(jī)帳號(hào)等系統(tǒng)提供集中管理的網(wǎng)絡(luò)服務(wù)。
用戶(hù)登錄任何一臺(tái)NIS客戶(hù)機(jī)都會(huì)從NIS服務(wù)器進(jìn)行登錄認(rèn)證,可實(shí)現(xiàn)用戶(hù)帳號(hào)的集中管理
NIS協(xié)議是明文的,所以NIS一般不建議在公網(wǎng)中使用而通常在局域網(wǎng)中使用。
此章主要是講NFS,所以NIS的配置這里就不詳說(shuō)了,有興趣的朋友可以去網(wǎng)上搜索
9.2.3 nfs工作機(jī)制
NFS服務(wù)器端運(yùn)行著四個(gè)進(jìn)程:nfsd,mountd,idmapd,portmapper
idmapd:實(shí)現(xiàn)用戶(hù)帳號(hào)的集中映射,把所有的帳號(hào)都映射為NFSNOBODY,但是在訪(fǎng)問(wèn)時(shí)卻能以本地用戶(hù)的身份去訪(fǎng)問(wèn)
mountd:用于驗(yàn)證客戶(hù)端是否在允許訪(fǎng)問(wèn)此NFS文件系統(tǒng)的客戶(hù)端列表中,在則允許訪(fǎng)問(wèn)(發(fā)放一個(gè)令牌,持令牌去找nfsd),否則拒絕訪(fǎng)問(wèn)
mountd的服務(wù)端口是隨機(jī)的,由rpc服務(wù)(portmapper)提供隨機(jī)端口號(hào)
nfsd:nfs的守護(hù)進(jìn)程,監(jiān)聽(tīng)在2049/tcp和2049/udp端口上
不負(fù)責(zé)文件存儲(chǔ)(由NFS服務(wù)器本地內(nèi)核負(fù)責(zé)調(diào)度存儲(chǔ)),用于理解客戶(hù)端發(fā)起的rpc請(qǐng)求,并將其轉(zhuǎn)交給本地內(nèi)核,而后存儲(chǔ)在指定的文件系統(tǒng)上
portmapper:NFS服務(wù)器的rpc服務(wù),其監(jiān)聽(tīng)于111/TCP和111/UDP套接字上,用于管理遠(yuǎn)程過(guò)程調(diào)用(RPC)
下面通過(guò)一個(gè)例子來(lái)說(shuō)明NFS的簡(jiǎn)單工作流程:
需求:查看file文件的信息,此file存儲(chǔ)在遠(yuǎn)程N(yùn)FS服務(wù)端主機(jī)上(掛載在本地目錄/shared/nfs中)
(1)客戶(hù)端發(fā)起查看file信息的指令(ls file)給內(nèi)核,內(nèi)核通過(guò)NFS模塊得知此文件并不是本地文件系統(tǒng)中的文件,而是在遠(yuǎn)程N(yùn)FS主機(jī)上的一個(gè)文件
(2)客戶(hù)端主機(jī)的內(nèi)核通過(guò)RPC協(xié)議把查看file信息的指令(系統(tǒng)調(diào)用)封裝成rpc請(qǐng)求通過(guò)TCP的111端口發(fā)送給NFS服務(wù)端主機(jī)的portmapper
(3)NFS服務(wù)端主機(jī)的portmapper(RPC服務(wù)進(jìn)程)告訴客戶(hù)端說(shuō)NFS服務(wù)端的mountd服務(wù)在某某端口上,你去找它驗(yàn)證
因?yàn)閙ountd在提供服務(wù)時(shí)必須要向portmapper注冊(cè)一個(gè)端口號(hào),所以portmapper是知道其工作于哪個(gè)端口的
(4)客戶(hù)端得知服務(wù)端的mountd進(jìn)程端口號(hào)后,通過(guò)已知的服務(wù)端mountd端口號(hào)請(qǐng)求驗(yàn)證
(5)mountd收到驗(yàn)證請(qǐng)求后驗(yàn)證發(fā)起請(qǐng)求的客戶(hù)端是否在允許訪(fǎng)問(wèn)此NFS文件系統(tǒng)的客戶(hù)端列表中,在則允許訪(fǎng)問(wèn)(發(fā)放一個(gè)令牌,持令牌去找nfsd),否則拒絕訪(fǎng)問(wèn)
(6)驗(yàn)證通過(guò)后客戶(hù)端持mountd發(fā)放的令牌去×××端的nfsd進(jìn)程,請(qǐng)求查看某文件
(7)服務(wù)端的nfsd進(jìn)程發(fā)起本地系統(tǒng)調(diào)用,向內(nèi)核請(qǐng)求查看客戶(hù)端要查看的文件的信息
(8)服務(wù)端的內(nèi)核執(zhí)行nfsd請(qǐng)求的系統(tǒng)調(diào)用,并將結(jié)果返回給nfsd服務(wù)
(9)nfsd進(jìn)程收到內(nèi)核返回的結(jié)果后將其封裝成rpc請(qǐng)求報(bào)文并通過(guò)tcp/ip協(xié)議返回給客戶(hù)端
9.3 nfs的配置
主配置文件:/etc/exports,文件中的項(xiàng)的格式相當(dāng)簡(jiǎn)單,要共享一個(gè)文件系統(tǒng),只要在文件中添加如下條目即可
directory(or file system) client1(option1,option2) client2(option1,option2)
nfs主配置文件中的常用選項(xiàng)(option):
secure:這個(gè)選項(xiàng)是缺省項(xiàng),它使用了1024以下的TCP/IP端口實(shí)現(xiàn)NFS的連接。指定insecure可以禁用這個(gè)選項(xiàng)
rw:允許NFS客戶(hù)機(jī)進(jìn)行讀/寫(xiě)訪(fǎng)問(wèn)。缺省選項(xiàng)是只讀的
async:此選項(xiàng)可以改進(jìn)性能,但如果沒(méi)有完全關(guān)閉NFS守護(hù)進(jìn)程就重啟了NFS服務(wù)器,這也可能會(huì)造成數(shù)據(jù)丟失。
no_wdelay:此選項(xiàng)關(guān)閉寫(xiě)延時(shí)。如果設(shè)置了async,那么NFS就會(huì)忽略此選項(xiàng)
nohide:若將一個(gè)目錄掛載到另一個(gè)目錄之上,則原來(lái)的目錄通常就被隱藏起來(lái)或看起來(lái)像空的一樣。要禁用這種行為,需啟用hide選項(xiàng)
no_subtree_check:此選項(xiàng)關(guān)閉子樹(shù)檢查,子樹(shù)檢查會(huì)執(zhí)行一些不想忽略的安全性檢查。缺省選項(xiàng)是啟用子樹(shù)檢查
no_auth_nlm:此選項(xiàng)可作為insecure_locks指定,它告訴NFS守護(hù)進(jìn)程不要對(duì)加鎖請(qǐng)求進(jìn)行認(rèn)證。若關(guān)心安全性問(wèn)題,就要避免使用此選項(xiàng)。缺省選項(xiàng)是auth_nlm或secure_locks
mp(mountpoint=path):通過(guò)顯式的聲明此選項(xiàng),NFS要求掛載所導(dǎo)出的目錄
fsid=num:此選項(xiàng)通常在NFS故障恢復(fù)時(shí)使用。
用戶(hù)映射:
通過(guò)NFS中的用戶(hù)映射,可以將偽或?qū)嶋H用戶(hù)和組的標(biāo)識(shí)賦給一個(gè)正在對(duì)NFS卷進(jìn)行操作的用戶(hù)。這個(gè)NFS用戶(hù)具有映射所允許的用戶(hù)和組的許可權(quán)限。
對(duì)NFS卷使用一個(gè)通用的用戶(hù)/組可以提供一定的安全性和靈活性,而不會(huì)帶來(lái)很多管理負(fù)荷。
在使用NFS掛載的文件系統(tǒng)上的文件時(shí),用戶(hù)的訪(fǎng)問(wèn)通常都會(huì)受到限制,這就是說(shuō)用戶(hù)都是以匿名用戶(hù)的身份來(lái)對(duì)文件進(jìn)行訪(fǎng)問(wèn)的,這些用戶(hù)缺省情況下對(duì)這些文件只有只讀權(quán)限。
這種行為對(duì)于root用戶(hù)來(lái)說(shuō)尤其重要。然而,實(shí)際上的確存在這種情況:希望用戶(hù)以root用戶(hù)或所定義的其他用戶(hù)的身份訪(fǎng)問(wèn)遠(yuǎn)程文件系統(tǒng)上的文件。
NFS允許指定訪(fǎng)問(wèn)遠(yuǎn)程文件的用戶(hù)--通過(guò)用戶(hù)標(biāo)識(shí)號(hào)(UID)和組標(biāo)識(shí)號(hào)(GID),可以禁用正常的squash行為。
用戶(hù)映射的選項(xiàng):
root_squash:此選項(xiàng)不允許root用戶(hù)訪(fǎng)問(wèn)掛載上來(lái)的NFS卷
no_root_squash:此選項(xiàng)允許root用戶(hù)訪(fǎng)問(wèn)掛載上來(lái)的NFS卷
all_squash:此選項(xiàng)對(duì)于公共訪(fǎng)問(wèn)的NFS卷來(lái)說(shuō)非常有用,它會(huì)限制所有的UID和GID,只使用匿名用戶(hù)。缺省設(shè)置是no_all_squash
anonuid和anongid:這兩個(gè)選項(xiàng)將匿名UID和GID修改成特定用戶(hù)和組帳號(hào)
查看NFS服務(wù)器端共享的文件系統(tǒng):
showmount -e NFSSERVER_IP
掛載NFS文件系統(tǒng):
mount -t nfs SERVER:/path/to/sharedfs /path/to/mount_point
開(kāi)機(jī)自動(dòng)掛載nfs:編輯/etc/fstab文件,添加如下格式的內(nèi)容
SERVER:/PATH/TO/EXPORTED_FS/mnt_pointnfsdefaults,_netdev0 0
客戶(hù)端掛載時(shí)可以使用的特殊選項(xiàng):
Client
Mounting remote directories
Before mounting remote directories 2 daemons should be started first:
rpcbind
rpc.statd
rsize:其值是從服務(wù)器讀取的字節(jié)數(shù)(緩沖)。默認(rèn)為1024。若使用比較高的值,如8192,可以提高傳輸速度
wsize:其值是寫(xiě)入到服務(wù)器的字節(jié)數(shù)(緩沖)。默認(rèn)為1024。若使用比較高的值,如8192,可以提高傳輸速度
The timeo value is the amount of time, in tenths of a second, to wait before resending a transmission after an RPC timout.
After the first timeout, the timeout value is doubled for each retry for a maximum of 60 seconds or until a major timeout occurs.
If connecting to a slow server or over a busy network, better performance can be achiveved by increasing this timeout value.
The intr option allows signals to interrupt the file operation if a major timeout occurs for a hard-mounted share.
exportfs:維護(hù)exports文件導(dǎo)出的文件系統(tǒng)表的專(zhuān)用工具
export -ar:重新導(dǎo)出所有的文件系統(tǒng)
export -au:關(guān)閉導(dǎo)出的所有文件系統(tǒng)
export -u FS:關(guān)閉指定的導(dǎo)出的文件系統(tǒng)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。