Linux

通過服務+服務自動掛載不會自動掛載文件夾

  • May 12, 2019

我們在 redhat 7.2 版上創建以下服務

more nfsshare.mount
[Unit]
 Description=nfs mount script
 Requires=network-online.target
 After=network-online.service

[Mount]

 What=master1:/nfs
 Where=/nfsshare
 Options=noauto,user,rw,group
 Type=nfs
 TimeoutIdleSec=10

[Install]
 WantedBy=multi-user.target

重新啟動服務後,掛載點按原樣掛載

master1:/nfs             41932800 6559744  35373056  16% /nfsshare

現在我們解除安裝 /nfsshare 文件夾

umount /nfsshare

現在我們期望 /nfsshare 文件夾將再次掛載,服務將自動 mout 文件夾

但什麼也沒發生,文件夾沒有掛載

我在哪裡錯了?

我也試試

more nfsshare.automount
[Unit]
 Description=nfs mount script
 Requires=network-online.target
 After=network-online.service

[Automount]
 What=master1:/nfs
 Where=/nfsshare
 Options=noauto,user,rw,group
 Type=nfs
 TimeoutIdleSec=10

[Install]
 WantedBy=multi-user.target

但是這個服務在重啟後甚至沒有掛載文件夾

正確的設置是單元nfsshare.mount包含:

[Unit]
Description=Mount nfsshare
Wants=network-online.target
After=network-online.target

[Mount]
What=master1:/nfs
Where=/nfsshare
Options=rw,group
Type=nfs

並且單元nfsshare.automount包含:

[Unit]
Description=Automount nfsshare
Wants=network-online.target
After=network-online.target

[Automount]
Where=/nfsshare
TimeoutIdleSec=10

[Install]
WantedBy=multi-user.target

而且您通常只想啟用該.automount單元:

$ sudo systemctl enable nfsshare.automount

使用此設置,在您啟動後(假設沒有正在執行的守護程序訪問 NFS 共享),則不會掛載該共享。但是一旦它被訪問(例如ls /nfsshare),它就會按需安裝。它將保持掛載 10 秒,然後解除安裝,但在再次訪問後再次掛載。

兩個單元.mount一起.automount工作來觸發這種行為。該.automount單元只需要知道設置自動掛載的掛載點目錄。訪問該目錄後,它將觸發對.mount具有相同名稱(相同路徑)的單元的請求,並等待該單元啟動後再繼續。

有關更多詳細資訊,請參見自動掛載單元的手冊頁


我對你的設置還有什麼改變?

對於網路依賴項,您應該使用network-online.target,而不是.service不存在的。我也在使用Wants=,這是針對這種情況的推薦指令(有關網路目標的更深入討論,請參閱此 wiki 頁面。)

我從您的掛載選項中刪除了noautouser,因為那些只有在/etc/fstab. 我還認為你真的不想user在那裡,只是讓它自動掛載而不是允許非特權使用者呼叫mountutil 來掛載它,自動掛載更好。

在哪個單元上採用的指令是不同的(除了Where=兩者都採用的指令),所以我只保留了有效的指令。

我刪除了[Install]該單元的部分.mount,因為您不需要啟用它。您只需要啟用該.automount單元,使其在啟動時啟動,然後該單元將負責在需要時啟動(和關閉)安裝單元(取決於正在訪問的目標目錄。)


請注意,您還可以在/etc/fstab. 事實上,systemd 通常建議使用/etc/fstabfor 配置而不是創建掛載單元。

對於自動掛載,您需要做的就是在此文件系統條目x-systemd.automount的掛載選項列表中添加一個偽選項。/etc/fstab(在這種情況下,您通常也希望包括在內noauto。)

有關更多詳細資訊,請參閱Arch Linux wiki 的這一部分。(這些都不是 Arch Linux 特有的,它應該在 RHEL 7 上完全一樣。)

引用自:https://unix.stackexchange.com/questions/518492