最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

linux部署NFS和autofs自動掛載實現(xiàn)過程

 更新時間:2025年09月22日 14:37:13   作者:九制橘皮茶  
文章介紹了NFS(網(wǎng)絡(luò)文件系統(tǒng))和Autofs的原理與配置,NFS通過RPC實現(xiàn)跨系統(tǒng)文件共享,需配置/etc/exports和nfs.conf,部署涉及安裝、防火墻設(shè)置及掛載,Autofs按需動態(tài)掛載文件系統(tǒng),節(jié)省資源,通過主子配置文件定義規(guī)則,支持超時卸載和錯誤處理,適用于網(wǎng)絡(luò)存儲場景

(一)NFS

1. 什么是NFS

NFS 是Network File System的縮寫,即網(wǎng)絡(luò)文件系統(tǒng)。英文Network File System(NFS),是基于TCP/IP協(xié)議的應(yīng)用,可以通過網(wǎng)絡(luò),讓不同的機(jī)器、不同的操作系統(tǒng)可以共享彼此的文件。

NFS在文件傳送或信息傳送過程中依賴于RPC服務(wù)。RPC:遠(yuǎn)程過程調(diào)用 (Remote Procedure Call) 是能使客戶端執(zhí)行其他系統(tǒng)中程序的一種機(jī)制。

NFS服務(wù)器可以看作是一個FILE SERVER。它可以讓你的機(jī)器(客戶端)通過網(wǎng)絡(luò)將遠(yuǎn)端的NFS SERVER共享目錄MOUNT到自己的系統(tǒng)中。

2.NFS守護(hù)進(jìn)程

  • nfsd:它是基本的NFS守護(hù)進(jìn)程,主要功能是管理客戶端是否能夠登錄服務(wù)器;
  • mountd:它是RPC安裝守護(hù)進(jìn)程,主要功能是管理NFS的文件系統(tǒng)。當(dāng)客戶端登錄到NFS服務(wù)器后,必須通過文件使用權(quán)限的驗證。它會讀取NFS的配置文件/etc/exports來對比客戶端權(quán)限。
  • portmap:主要功能是進(jìn)行端口映射工作。

3.RPC服務(wù)

RPC(Remote Procedure Call)即遠(yuǎn)程過程調(diào)用,記錄NFS服務(wù)器使用的端口號,在NFS客戶端發(fā)送請求時,將對應(yīng)的端口號信息傳遞給客戶端,確??蛻舳伺c服務(wù)端能連接上。

注意:在啟動NFS服務(wù)之前,必須先啟動PRC服務(wù),在Centos7中叫做 rpcbind 服務(wù),否則 NFS Server 無法向RPC注冊信息,另外,如果RPC服務(wù)重啟,原來注冊的NFS服務(wù)端的信息也就失效了,也必須重啟NFS服務(wù)。特別要注意的是,修改NFS配置?件后不需要重啟NFS,只需要執(zhí)? exportfs -rv 命令即可或是 systemctl reload nfs。

4. 原理

  1. 服務(wù)端啟動RPC服務(wù),并開啟111端口。
  2. 然后服務(wù)器端啟動NFS服務(wù),并向RPC注冊端口信息。
  3. 客戶端啟動RPC(portmap服務(wù)),向服務(wù)端的RPC(portmap)服務(wù)請求服務(wù)端的NFS端口
  4. 服務(wù)端的RPC(portmap)服務(wù)反饋NFS端口信息給客戶端。
  5. 客戶端通過獲取的NFS端口來建立和服務(wù)端的NFS連接并進(jìn)行數(shù)據(jù)的傳輸。
[root@node2 elysia]# rpcinfo -p 192.168.240.151
   program vers proto   port  service
1000004   tcp111  portmapper
1000003   tcp111  portmapper
1000002   tcp111  portmapper
1000004   udp111  portmapper
1000003   udp111  portmapper
1000002   udp111  portmapper

5. 部署

操作系統(tǒng)版本:centos 7

服務(wù)端:192.168.240.151/24(node1)

客戶端:192.168.240.152/24 (node2)

5.1安裝NFS服務(wù)

從原理可以看出,服務(wù)端和客戶端都是需要下載nfs-utils和rpcbind的。

yum -y install nfs-utils rpcbind

5.2配置防火墻

服務(wù)端和客戶端同時配置即可。

#iptables -F #使防火墻的策略恢復(fù)到默認(rèn)狀態(tài),沒有任何過濾規(guī)則
#iptables-save #輸出當(dāng)前的 iptables 配置和規(guī)則
#防火墻放行nfs,mountd,rpc-bind服務(wù)
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
#重載防火墻
firewall-cmd --reload

5.3創(chuàng)建服務(wù)端共享目錄

nfs服務(wù)端上建立用于nfs文件共享的目錄,并設(shè)置足夠的權(quán)限確保其他人也有寫入權(quán)限,我們創(chuàng)建一個測試文件readme.txt。

mkdir -p /mnt/shared
chmod 777 /mnt/shared
echo "hello world" > hello.txt

5.4修改服務(wù)端配置文件

NFS服務(wù)程序的配置文件為/etc/exports,默認(rèn)情況下里面沒有任何內(nèi)容。我們可以按照“共享目錄的路徑允許訪問的NFS客戶端(共享權(quán)限參數(shù))”的格式,定義要共享的目錄與相應(yīng)權(quán)限。

配置 NFS(網(wǎng)絡(luò)文件系統(tǒng))服務(wù)時,主要涉及兩個配置文件:/etc/exportsnfs.conf。以下是這些文件中常用的參數(shù):

(1)./etc/exports

這個文件用于定義哪些目錄可以被共享,以及它們的訪問權(quán)限。常用參數(shù)包括:

  • 共享目錄:指定要共享的目錄路徑。
  • 客戶端:指定可以訪問該目錄的客戶端,可以是 IP 地址、主機(jī)名或網(wǎng)絡(luò)段,可以使用通配符來指定網(wǎng)絡(luò)段。

訪問權(quán)限

  • rw:讀寫權(quán)限。
  • ro:只讀權(quán)限。
  • no_root_squash:允許客戶端以 root 用戶訪問共享。默認(rèn)會將 root 權(quán)限映射為普通用戶。
  • root_squash:當(dāng)NFS客戶端以root管理員訪問時,映射為NFS服務(wù)器的匿名用戶
  • all_squash:將所有客戶端請求映射為匿名用戶。

異步/同步

  • async:允許 NFS 在將數(shù)據(jù)寫入磁盤之前返回響應(yīng),提高性能。
  • sync:確保數(shù)據(jù)在響應(yīng)前寫入磁盤,增加安全性,但性能較低。

示例

/srv/nfs 192.168.1.0/24(rw,sync,no_root_squash)

/srv/nfs/docs *.example.com(ro)

(2).nfs.conf

這個文件通常位于 /etc/nfs.conf,用于配置 NFS 服務(wù)的全局參數(shù)。常用的參數(shù)包括:

[nfs]:NFS 相關(guān)設(shè)置。

  • vers:指定 NFS 版本。
  • mountd_port:指定 mountd 的端口號。
  • rpcbind_port:指定 rpcbind 的端口號。

[rpcd]:RPC 相關(guān)設(shè)置。

我們在/etc/exports文件中加入以下行即可,nfs.conf文件有要求自行更改。

/mnt/shared 192.168.240.*(rw,sync,no_root_squash)
#/mnt/shared:服務(wù)端共享的目錄
#192.168.240.*:允許訪問的NFS客戶端,這里是一個網(wǎng)段內(nèi)的主機(jī),也可以是某一個指定的主機(jī)
#(rw,sync,no_root_squash):共享權(quán)限參數(shù)

5.5啟動nfs并加入自啟

服務(wù)端配置即可。

systemctl start rpcbind # 啟動rpc
systemctl start nfs-server #啟動nfs
systemctl enable rpcbind  #設(shè)置開機(jī)自啟
systemctl enable nfs-server #設(shè)置開機(jī)自啟

5.6客戶端創(chuàng)建掛載目錄并掛載

掛載之前,我們可以使用showmount查看一下NFS服務(wù)端的可共享目錄:

[root@node2 ~]# showmount -e 192.168.240.151
Export list for 192.168.240.151:
/mnt/shared 192.168.240.*

NFS客戶端創(chuàng)建一個掛載目錄,使用mount命令并結(jié)合-t參數(shù),指定要掛載的文件系統(tǒng)類型,并在命令后面寫上服務(wù)器IP地址,服務(wù)器上的共享目錄以及要掛載到客戶端的目錄。

mkdir -p /mnt/nfs
mount -t nfs 192.168.240.151:/mnt/shared /mnt/nfs
#-t nfs:掛載的文件系統(tǒng)類型為nfs
#192.168.240.151:/mnt/shared:NFS服務(wù)端IP地址以及共享目錄
#/mnt/nfs:共享目錄掛載到的客戶端本地目錄

使用df -h查看掛載情況:

[root@node2 ~]# df -h | tail -n 1
192.168.240.151:/mnt/shared   18G  5.1G   13G  29% /mnt/nfs

5.7設(shè)置開機(jī)自動掛載

上面我們雖然掛載好了,但是每次開機(jī)都需要重新掛載,非常麻煩,我們只需要在/etc/fstab文件中加入以下配置即可,之后每次開機(jī)系統(tǒng)就會幫我們自動掛載了。

echo "192.168.240.151:/mnt/shared /mnt/nfs nfs defaults 0 0" >> /etc/fstab

5.8測試

客戶端進(jìn)入掛載目錄,查看是否存在hello.txt文件

cd /mnt/nfs
cat hello.txt
[root@node2 ~]# cd /mnt/nfs
[root@node2 nfs]# ls
hello.txt
[root@node2 nfs]# cat hello.txt
hello world

出現(xiàn)hello.txt測試文件,配置完成。

5.9補充

卸載目錄:

umount 是一個用于卸載文件系統(tǒng)的命令。

在 Linux 和 Unix 系統(tǒng)中,使用 umount 可以安全地斷開掛載的設(shè)備或目錄。以下是 umount 的基本用法:

基本語法:

umount [選項] <掛載點或設(shè)備>

示例:

1.卸載掛載點:

umount /mnt/mydrive

這將卸載 /mnt/mydrive 目錄下的文件系統(tǒng)。

2.卸載特定設(shè)備:

umount /dev/sdb1

這將卸載 /dev/sdb1 設(shè)備。

常用選項:

  • -l:懶惰卸載,立即卸載但在文件系統(tǒng)不再被使用時才真正完成。
  • -f:強(qiáng)制卸載,即使設(shè)備忙也嘗試卸載。
  • --timeout:超時時間。

注意事項:

  • 在卸載之前,確保沒有進(jìn)程正在使用該文件系統(tǒng)。
  • 如果有數(shù)據(jù)未寫入,則可能會導(dǎo)致數(shù)據(jù)丟失。

修改超時卸載時間:

在 NFS(網(wǎng)絡(luò)文件系統(tǒng))中,修改默認(rèn)的超時卸載時間可以通過調(diào)整掛載選項來實現(xiàn)。NFS 的掛載通常是在 /etc/fstab 文件中配置,也可以在命令行中使用 mount 命令進(jìn)行掛載。以下是如何修改默認(rèn)超時卸載時間的方法:

(1).mount命令:

在掛載 NFS 文件系統(tǒng)時,可以使用 timeoretrans 選項來控制超時行為。

  • timeo:設(shè)置 NFS 客戶端的請求超時時間(以 1/10 秒為單位)。
  • retrans:設(shè)置請求失敗后重試的次數(shù)。

例如,假設(shè)你想設(shè)置超時時間為 30 秒(即 300 個 1/10 秒),并指定重試次數(shù)為 5,可以使用如下命令:

mount -o timeo=300,retrans=5 nfs_server:/path/to/share /mnt/mountpoint

(2). 修改/etc/fstab

如果希望在系統(tǒng)啟動時自動掛載 NFS,并應(yīng)用相同的超時設(shè)置,可以將掛載選項添加到 /etc/fstab 文件中。

示例如下:

nfs_server:/path/to/share /mnt/mountpoint nfs defaults,timeo=300,retrans=5 0 0

注意事項

  • timeo的單位是 1/10 秒,因此在設(shè)置時需要將秒數(shù)乘以 10。
  • 調(diào)整這些參數(shù)時,請根據(jù)網(wǎng)絡(luò)條件和應(yīng)用需求進(jìn)行合理配置,以避免過于頻繁的重試或過長的等待時間。

(二)Autofs

與mount命令不同,autofs服務(wù)程序是一種Linux系統(tǒng)守護(hù)進(jìn)程,當(dāng)檢測到用戶試圖訪問一個尚未掛載的文件系統(tǒng)時,將自動掛載該文件系統(tǒng)。換句話說,將掛載信息填入/etc/fstab文件后,系統(tǒng)在每次開機(jī)時都自動將其掛載,而autofs服務(wù)程序則是在用戶需要使用該文件系統(tǒng)時才去動態(tài)掛載,從而節(jié)約了網(wǎng)絡(luò)資源和服務(wù)器的硬件資源。

autofs的缺點:autofs特點是只有?戶請求時才執(zhí)?掛載,所以當(dāng)?并發(fā)訪問時,開始請求的瞬間需要執(zhí)?掛載,性能較差,因此在?并發(fā)業(yè)務(wù)場景下,寧愿保持掛載也不使?autofs?動掛載。

autofs工作原理主要基于以下幾個關(guān)鍵概念和步驟:

1. 掛載點和配置

autofs 通過配置文件來定義掛載點以及每個掛載點所對應(yīng)的具體文件系統(tǒng)。

最常用的配置文件是 /etc/auto.master 和相應(yīng)的子配置文件(如 /etc/auto.mnt)。

在這些文件中,你可以指定需要自動掛載的目錄及其掛載選項。

2. 事件驅(qū)動

autofs 的核心原理是事件驅(qū)動。當(dāng)用戶嘗試訪問一個未掛載的目錄時,autofs 會檢測到這個訪問請求并觸發(fā)掛載操作。

這種機(jī)制使得只有在需要時才會掛載文件系統(tǒng),從而節(jié)省了系統(tǒng)資源。

3. 后臺守護(hù)進(jìn)程

autofs 由一個后臺守護(hù)進(jìn)程運行,通常為 automountd。該守護(hù)進(jìn)程負(fù)責(zé)監(jiān)視掛載請求,并根據(jù)配置文件中的設(shè)定自動執(zhí)行掛載和卸載操作。

4. 超時機(jī)制

一旦文件系統(tǒng)被掛載,autofs 會啟動一個超時計時器。

如果在預(yù)設(shè)的時間內(nèi)沒有任何對該掛載點的訪問,autofs 將自動卸載該文件系統(tǒng)。

這一特性可以減少不必要的資源占用,同時提高系統(tǒng)性能。

5. 掛載方式

在掛載時,autofs 會調(diào)用相應(yīng)的掛載命令(如 mount),并使用配置文件中指定的選項進(jìn)行掛載。例如,對于 NFS,可以指定遠(yuǎn)程服務(wù)器和共享路徑。

6. 錯誤處理

當(dāng)發(fā)生錯誤(如網(wǎng)絡(luò)問題)導(dǎo)致掛載失敗時,autofs 能夠處理這些錯誤,并根據(jù)配置中的選項決定如何響應(yīng),例如是否重試或返回錯誤信息。

autofs 的設(shè)計理念是將掛載操作與用戶的實際需求緊密結(jié)合,通過事件驅(qū)動和超時機(jī)制實現(xiàn)高效的資源管理。其主要優(yōu)點包括:

  • 節(jié)省資源:僅在需要時掛載文件系統(tǒng)。
  • 簡化用戶操作:用戶無需手動掛載或卸載文件系統(tǒng)。
  • 自動管理:能夠自動卸載不再使用的文件系統(tǒng)。

這種機(jī)制特別適合于需要頻繁訪問網(wǎng)絡(luò)文件系統(tǒng)(如 NFS)的環(huán)境,提高了訪問效率和用戶體驗。

7. 配置autofs

autofs 是一種用于自動掛載文件系統(tǒng)的工具,通常用于在 Linux 系統(tǒng)上動態(tài)掛載 NFS 或其他類型的文件系統(tǒng)。

它使用主配置文件和子配置文件來定義掛載規(guī)則和行為。

主配置文件格式

主配置文件通常位于 /etc/auto.master,其格式如下:

/path/to/mountpoint /etc/auto.subfile --timeout=60

解釋:

  • /path/to/mountpoint:指定要掛載的目錄(掛載點)。
  • /etc/auto.subfile:指向包含子配置的文件。
  • --timeout=60:可選參數(shù),設(shè)置超時時間,表示在閑置 60 秒后卸載掛載點。

子配置文件格式

子配置文件的格式通常是在指定的文件中定義,假設(shè)為 /etc/auto.subfile,其格式如下:

key -options nfs_server:/path/to/share

解釋:

  • key:掛載點的關(guān)鍵字,通常是該掛載點的名稱,它將成為/path/to/mountpoint/key的實際掛載點。
  • -options:掛載選項,如rw(讀寫)、ro(只讀)等。
  • nfs_server:/path/to/share:指定要掛載的 NFS 服務(wù)器及共享路徑。

示例

  • 主配置文件 (/etc/auto.master)
/mnt/nfs /etc/auto.nfs --timeout=60
  • 子配置文件 (/etc/auto.nfs)
data1 -fstype=nfs,rw nfs_server:/export/data1 data2 -fstype=nfs,ro nfs_server:/export/data2

在這個示例中,當(dāng)訪問 /mnt/nfs/data1 時,autofs 會自動掛載 nfs_server:/export/data1,并且允許讀寫;

訪問 /mnt/nfs/data2 時,則會自動掛載 nfs_server:/export/data2,但為只讀模式。

總結(jié):

  • 主配置文件:定義了掛載點和關(guān)聯(lián)的子配置文件,以及一些全局選項。
  • 子配置文件:定義具體的掛載規(guī)則,包括掛載的關(guān)鍵字、選項和目標(biāo)資源。

7.1安裝autofs

客戶端安裝即可

yum -y install autofs

注意,剛才做NFS實驗時,服務(wù)端和客戶端都下載rpcbindnfs-utils,如果沒下再次下載即可

yum -y install nfs-utils rpcbind

本次autofs實驗是基于上面NFS的,所以我們的autofs結(jié)合NFS一同實現(xiàn)自動掛載,服務(wù)端基本不變,我們主要修改客戶端配置。先配置服務(wù)端,這里就不多講了,和前面類似。

記得做好防火墻和selinux的相關(guān)配置,并且確保相關(guān)服務(wù)都開啟了。

7.2 服務(wù)端配置

mkdir -p /usr/elysia
chmod 777 /usr/elysia
echo "/usr/elysia 192.168.240.*(rw,sync,no_root_squash)" >> /etc/exports
exportfs -rv
[root@node1 elysia]# exportfs -rv
exporting 192.168.240.*:/mnt/shared
exporting 192.168.240.*:/usr/elysia

7.3 客戶端配置

(1). 使用showmount命令查看服務(wù)端的可共享目錄。

showmount -e 192.168.240.151
[root@node2 ~]# showmount -e 192.168.240.151
Export list for 192.168.240.151:
/mnt/shared 192.168.240.*
/usr/seele  192.168.240.*
/usr/elysia 192.168.240.* #目標(biāo)目錄

包含了我們服務(wù)端創(chuàng)建的/usr/elysia目錄。

(2). 修改主配置文件

vim /etc/auto.master
加入以下行
/data   /etc/auto.misc #/data是我們想要掛載的目錄的父目錄

(3).修改子配置文件

vim /etc/auto.misc
加入以下行
elysia  -rw 192.168.240.151:/usr/elysia

注意,子配置文件的命名不一定要以".misc"為后綴。成功掛載并且cd后會自動生成/data/elysia目錄

(4).重啟autofs服務(wù)

systemctl restart autofs

(5).測試

客戶端切換到/data目錄,查看是否存在/data/elysia

[root@node2 ~]# df -h | grep elysia
[root@node2 ~]##不存在

cd到/data/elysia。

[root@node2 ~]# df -h | grep elysia
[root@node2 ~]# cd /data/elysia
[root@node2 elysia]# df -h | grep elysia
192.168.240.151:/usr/elysia   18G  5.1G   13G  29% /data/elysia
#出現(xiàn)掛載目錄,auto配置完成

7.4補充

/etc/auto.master配置可選參數(shù)
參數(shù)實現(xiàn)功能
fg/bgfg表示掛載行為在前臺執(zhí)行,bg表示掛載行為在后臺執(zhí)行。前臺執(zhí)行,則mount會持續(xù)嘗試掛載,直到成功或超時為止。后臺執(zhí)行,mount會在后臺持續(xù)多次進(jìn)行mount,不會影響到前臺的程序運行。
soft/hardhard表示當(dāng)兩者之間的任何一臺主機(jī)脫機(jī),則RPC會持續(xù)地呼叫,直到對方恢復(fù)連接為止。如果是soft的話,那RPC會在超時后重復(fù)呼叫,非持續(xù)呼叫
intr當(dāng)使用hard方式掛載時,若加上intr這個參數(shù),則當(dāng)RPC持續(xù)呼叫時,該次的呼叫是可以被中斷的
rsize/wsize讀出(rsize)與寫入(wsize)的區(qū)塊大小,設(shè)置值可以影響客戶端與服務(wù)器端傳輸數(shù)據(jù)的緩沖記憶容量

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

青浦区| 淮北市| 德令哈市| 东阳市| 九龙坡区| 辽源市| 奉新县| 清水县| 安福县| 新丰县| 德兴市| 浦北县| 济宁市| 年辖:市辖区| 辽宁省| 泰来县| 彰化市| 天津市| 建水县| 泽库县| 汾西县| 沧源| 扎鲁特旗| 罗城| 逊克县| 大港区| 炎陵县| 阿合奇县| 沁源县| 广丰县| 工布江达县| 夹江县| 瓦房店市| 莱芜市| 陵川县| 邹平县| 南乐县| 彭山县| 玉林市| 玛纳斯县| 双鸭山市|