通過服務+服務自動掛載不會自動掛載文件夾
我們在 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 頁面。)我從您的掛載選項中刪除了
noauto
和user
,因為那些只有在/etc/fstab
. 我還認為你真的不想user
在那裡,只是讓它自動掛載而不是允許非特權使用者呼叫mount
util 來掛載它,自動掛載更好。在哪個單元上採用的指令是不同的(除了
Where=
兩者都採用的指令),所以我只保留了有效的指令。我刪除了
[Install]
該單元的部分.mount
,因為您不需要啟用它。您只需要啟用該.automount
單元,使其在啟動時啟動,然後該單元將負責在需要時啟動(和關閉)安裝單元(取決於正在訪問的目標目錄。)請注意,您還可以在
/etc/fstab
. 事實上,systemd 通常建議使用/etc/fstab
for 配置而不是創建掛載單元。對於自動掛載,您需要做的就是在此文件系統條目
x-systemd.automount
的掛載選項列表中添加一個偽選項。/etc/fstab
(在這種情況下,您通常也希望包括在內noauto
。)有關更多詳細資訊,請參閱Arch Linux wiki 的這一部分。(這些都不是 Arch Linux 特有的,它應該在 RHEL 7 上完全一樣。)