nfs文件共享服務(wù)器應(yīng)用實(shí)戰(zhàn)(一)

一、NFS文件共享服務(wù)器概念:

NFS是network file sytem的縮寫(xiě),它允許網(wǎng)絡(luò)中的計(jì)算機(jī)之間共享資源。在NFS的應(yīng)用中,本地NFS的客戶(hù)端應(yīng)用可以透明地讀寫(xiě)位于遠(yuǎn)端NFS服務(wù)器上的文件,就像訪問(wèn)本地文件一樣。

二、NFS工作原理:

image
  1. 首先NFS服務(wù)器端開(kāi)啟rpcbind;
  2. 然后服務(wù)端開(kāi)啟NFS服務(wù),這時(shí)NFS的各項(xiàng)功能都需要向RPC服務(wù)注冊(cè),這時(shí)rpc會(huì)通知portmap模塊將可用的端口分配給statd,rquotad進(jìn)程等;
  3. 然后NFS客戶(hù)端RPC服務(wù)就會(huì)通過(guò)網(wǎng)絡(luò)向NFS服務(wù)端的RPC服務(wù)的111端口發(fā)出NFS文件存取功能的詢(xún)問(wèn)請(qǐng)求。
  4. NFS服務(wù)端的RPC服務(wù)找到對(duì)應(yīng)的已注冊(cè)的NFS daemon端口后,通知NFS客戶(hù)端的RPC服務(wù)。
  5. 此時(shí)NFS客戶(hù)端就可獲取到nfs服務(wù)端各個(gè)進(jìn)程的正確端口,然后通過(guò)客戶(hù)端rpc就直接與NFS服務(wù)器的rpc進(jìn)行存取數(shù)據(jù)了(rpc知道了nfs的具體端口,就可以實(shí)現(xiàn)遠(yuǎn)程調(diào)用,即傳輸)。
ps:有一點(diǎn)需要注意的是nfs并不是單獨(dú)存在的,而是由NFS-server,RPC,PORTMAP這三個(gè)模塊組成。

NFS-server只負(fù)責(zé)將數(shù)據(jù)通過(guò)以文件系統(tǒng)的方式共享出去,
并進(jìn)行登錄管理和權(quán)限管理,并不負(fù)責(zé)數(shù)據(jù)的傳輸,而數(shù)據(jù)的傳輸則有RPC來(lái)完成。

PORTMAP主要是來(lái)分配端口給statd,rquotad等進(jìn)程,NFS服務(wù)除了啟動(dòng)nfsd本身監(jiān)聽(tīng)的端口2049/tcp和2049/udp,
還會(huì)啟動(dòng)以上進(jìn)程來(lái)完成文件共享。

三、NFS安裝部署:

服務(wù)器客戶(hù)端都裝好nfs服務(wù)組件:

yum -y install nfs-utils

配置服務(wù)端:

1、編輯/etc/exports文件

/data/lutixia  192.168.0.0/24(rw,sync)

/data/lutixia   是服務(wù)端想要共享出去的目錄,提前創(chuàng)建好。
192.168.0.0/24  表示這個(gè)網(wǎng)段都可以來(lái)掛載,也可以設(shè)置具體某個(gè)ip。
(rw,sync)  表示客戶(hù)端掛載服務(wù)端目錄后的權(quán)限,這里表示可讀可寫(xiě),
以及實(shí)時(shí)同步,還有其他選項(xiàng),后面介紹。

2、導(dǎo)出(廣播)編輯的文件,并啟動(dòng)rpc和nfs服務(wù)

exportfs -r
systemctl start rpcbind
systemctl start nfs

配置客戶(hù)端:

1、可用showmount搜索網(wǎng)絡(luò)中可用的共享文件

[root@localhost nfs]# showmount -e 192.168.0.187
Export list for 192.168.0.187:
/data/lutixia 192.168.0.0/24

# 192.168.0.187  服務(wù)端的IP

2、創(chuàng)建目錄,用于掛載

mkdir /mnt/nfs

3、掛載

mount -t nfs  192.168.0.187:/data/lutixia /mnt/nfs
[root@localhost ~]# df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/sda3                     20G  1.6G   18G   9% /
...
/dev/sda1                    297M  108M  190M  37% /boot
192.168.0.187:/data/lutixia   20G  5.0G   15G  26% /mnt/nfs

#可以看到已經(jīng)掛載上了。

4、掛載完成之后,進(jìn)入目錄,可能會(huì)發(fā)現(xiàn)無(wú)法創(chuàng)建和修改文件。

[root@localhost nfs]# mkdir abc
mkdir: cannot create directory ‘a(chǎn)bc’: Permission denied

這主要是因?yàn)榭蛻?hù)端訪問(wèn)服務(wù)器時(shí),身份被壓縮成nobody,相對(duì)服務(wù)器文件系統(tǒng)來(lái)說(shuō),就是其他用戶(hù)。所以要想編輯,需要在服務(wù)端對(duì)文件授權(quán)或者更改exports文件,設(shè)置no_root_squash(不壓縮客戶(hù)端root身份)。

nfs服務(wù)端修改exports文件,加上no_root_squash參數(shù):

/data/lutixia 192.168.0.0/24(rw,sync,no_root_squash)
然后重新導(dǎo)出:
exportfs -r

nfs客戶(hù)端再次創(chuàng)建文件:
[root@localhost nfs]# mkdir abc
[root@localhost nfs]# ls
abc

服務(wù)端的/etc/exports文件詳解:

[root@localhost ~]# exportfs -v
/data/lutixia   192.168.0.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

其中:
rw:可讀可寫(xiě)
ro:僅可讀
sync:是指數(shù)據(jù)同步寫(xiě)入內(nèi)存和磁盤(pán)
root_squash:如果客戶(hù)端用root身份訪問(wèn),則被壓縮成nobody,權(quán)限也將受到限制。
no_root_squash:也就是不壓縮,客戶(hù)端使用root身份登錄,全有所有權(quán)限,很危險(xiǎn)。
all_squash:不管訪問(wèn)者是什么身份,包括root,全部壓縮至匿名用戶(hù)。
no_all_squash:保留訪問(wèn)用戶(hù)的身份uid以及gid,一般只能查看,不能修改,權(quán)限問(wèn)題,但是可以強(qiáng)制保存。
secure:nfs通過(guò)1024以下的安全TCP/IP端口發(fā)送

異常報(bào)錯(cuò):

卸載時(shí)報(bào)錯(cuò):

umount.nfs4: /mnt/nfs: device is busy
#使用以下命令強(qiáng)行解除掛載
umount -l /mnt/nfs   

或者使用
#將會(huì)顯示使用這個(gè)模塊的pid
fuser -m /mnt/nfs 
#將會(huì)直接kill那個(gè)pid
fuser -mk /mnt/nfs

以上簡(jiǎn)單幾個(gè)步驟即可實(shí)現(xiàn)nfs文件共享服務(wù)器的搭建部署,下一章節(jié)繼續(xù)聊聊nfs的自動(dòng)掛載技術(shù)。

獲取文章更新,以及常用軟件,可以關(guān)注公眾號(hào): 笨辦法學(xué)linux

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

相關(guān)閱讀更多精彩內(nèi)容

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