Linux

RHEL 8.3 autofs 未掛載 NFS 目錄

  • October 2, 2021

RHEL 8.3 64 位

autofs.x86_64 1:5.1.4-43.el8

我正在嘗試autofs為我的系統啟用。我已經按照教程進行了操作,雖然它們很有意義,但網路驅動器沒有安裝,並且在某些情況下會出現一些奇怪的行為。一、配置文件

/etc/auto.master.d/mount.nfs:

/home/me/  /etc/auto.me.nfs

/etc/auto.me.nfs:

nas -fstype=nfs4 nas:/data/directory

現在當我執行時:

service autofs start

它應該掛載nas:/data/directory-> /home/me/nas,對嗎?將發生以下兩種情況之一:

  1. 沒有什麼。該目錄/home/me/nas包含所有本地內容,並且df -h沒有顯示任何安裝到該位置的內容。
  2. 我的主目錄將只包含nas. 它顯示在 df -h 中,並且可以訪問遠端文件。然而,其他一切都消失了。一個ls -lon/home/顯示我的主目錄由root.root

命令:

mount nas:/data/directory /home/me/nas

工作得很好,從 NFS 目錄繼承所有權和權限。我錯過了什麼?是否有日誌可以查看 autofs 正在嘗試做什麼?

經典的 autofs

情況1)可能是由於您/etc/auto.master.d/mount.nfs沒有被命名/etc/auto.master.d/mount.autofs:根據auto.master(5)手冊頁和配置文件中的註釋,其中的/etc/auto.master任何文件都auto.master.d必須具有*.autofs後綴才能工作。

您的情況 2) 基本上autofs與您目前配置的經典樣式完全一樣。

使用您目前的配置,該/home/me/目錄將成為一個autofs 映射掛載點:一個特殊的虛擬目錄,當有人試圖訪問它時它會感應到。如果您嘗試列出 autofs 掛載點的內容,它會將映射的內容列為子目錄(在您的情況下,只是nas子目錄),並且當您實際嘗試訪問這些子目錄時,autofs將自動在允許訪問發生之前將它們安裝為所需的 NFS 共享,並且可以在不再使用每個共享時自動解除安裝它。

間接映射(如您目前的配置)實際上是為像/home/autofs 映射安裝點這樣的情況設計的:使用者主目錄將是間接映射中的單個 NFS 共享,可以在使用者登錄和註銷時安裝和解除安裝。由於對間接映射的更新會立即生效,因此無需重新啟動服務即可創建新使用者並刪除舊使用者autofs

如果要掛載 NFS 共享而沒有中間目錄,可以通過在以下位置定義直接映射來實現auto.master.d/

rm /etc/auto.master.d/mount.nfs
echo "/-  /etc/auto.me.nfs" >/etc/auto.master.d/mount.autofs

然後將內容更改/etc/auto.me.nfs為:

/home/me/nas    -fstype=nfs4 nas:/data/directory

最後重新啟動 autofs 服務:

systemctl restart autofs

mount nas:/data/directory /home/me/nas這應該在您訪問時準確複製命令的效果/home/me/nas,並允許在沒有程序訪問它時解除安裝它。但是,與間接映射不同,對直接映射配置的任何更改都需要重新啟動 autofs 服務。


systemd 的替代解決方案

但是,使用systemd,有另一種方法可以設置單個自動掛載目錄,甚至不需要單獨的autofs服務。只需像這樣寫一個條目/etc/fstab

nas:/data/directory   /home/me/nas  nfs nfsvers=4,nofail,x-systemd.automount 0 0

要立即啟動此條目,您需要兩個命令:

systemctl daemon-reload                #triggers systemd-fstab-generator to re-make *.mount and *.automount units
systemctl start home-me-nas.automount   #starts the newly created automount unit

否則,它將在下次重新啟動時自動啟動。

有關更多詳細資訊和配置選項,請閱讀man systemd.mount

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