萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Autofs 自動掛載檔案系統設定指南:按需掛載與卸載

v0.3(1998/10/22)

1. 簡介

1.1 什麼是自動掛載?

自動掛載程式(automounter)為 daemon,針對特定檔案系統自動掛載/卸載。當檔案系統已卸載而使用者嘗試存取時,自動重新掛載。適用於大型網路環境(機器間互掛、非持續開機)、可移式裝置、強制 ASCII 轉換等場景。

1.2 兩種自動掛載實作

  • AMD:User-space daemon,類似 SunOS amd,核心無需知曉自動掛載,透過 NFS 掛載本機檔案系統也能處理網路交換。
  • Autofs:Kernel-assisted 新機制,核心檔案系統程式碼知曉自動掛載點與底層檔案系統類型,自動執行掛載/卸載。本文僅討論 autofs。

2. 安裝

核心需啟用 autofs 支援:2.0.x 為實驗選項(已穩定),2.1.x/2.2.x 正式納入。通常以 RPM 安裝(Red Hat 安裝過程含之),由 /etc/rc.d/init.d 啟動腳本啟動。確認服務已啟動(用 control-panel 或對應管理工具)。非 RPM 發行版有各自安裝方式。

3. 設定

RPM 安裝會引導設定,兩個關鍵檔案位於 /etc:

3.1 auto.master 主映射檔

/auto /etc/auto.misc --timeout 60
  • 第 1 欄:掛載點基底目錄(此例 /auto)。
  • 第 2 欄:對應映射檔(auto.misc)。
  • 第 3 欄:選項,--timeout 60 表示閒置 60 秒嘗試卸載(使用中不卸載)。

3.2 auto.misc 映射檔範例

kernel -ro,soft,intr ftp.kernel.org:/pub/linux
cd -fstype=iso9660,ro :/dev/cdrom
zip -fstype=auto :/dev/hdd4
floppy -fstype=vfat :/dev/fd0
  • 第 1 欄:掛載點名稱(實際路徑如 /auto/kernel、/auto/floppy)。
  • 第 2 欄:掛載選項(參考 mount(8)),-fstype= 指定檔案系統類型。
  • 第 3 欄:來源。冒號開頭表示本機裝置(:/dev/cdrom);無冒號為 NFS(ftp.kernel.org:/pub/linux)。

可在 auto.master 定義多個映射檔對應不同基底目錄。

4. 縮短卸載等待:SIGUSR1 信號觸發即時卸載

預設 60 秒 timeout 讓使用者等待退出磁片過久。替代方案:向 autofs 進程發送 SIGUSR1 立即卸載所有可卸載檔案系統:

kill -USR1 

問題:autofs 以 root 執行,僅接受 root 信號,但使用者通常非 root。解決方案:

  • 寫 setuid C 程式發送信號(不推薦)。
  • 用 sudo 授權使用者執行 killall -USR1 automount:
# /etc/sudoers
ALL ALL=NOPASSWD:/usr/bin/killall -USR1 automount

注意:sudo 不允許反引號子命令,需用 killall 直接匹配進程名。避免對其他進程發送 SIGUSR1 造成副作用(如重啟視窗管理器、終止 xemacs)。

5. 常見問題

5.1 看不到掛載點(如 /auto/floppy)

autofs 特性:未使用時掛載點隱藏,存取時自動出現。圖形檔案管理器可能需手動輸入路徑,無法從隱藏點選取,此為主要缺點。若介意可修改原始碼(.c 檔)。

5.2 如何查看已掛載檔案系統?

用 df 或無參數 mount(顯示掛載選項)。

5.3 VFAT 磁片被誤判為 FAT

非 autofs 問題。當時 mount 的 auto 類型嘗試順序先 msdos 後 vfat,導致長檔名失效。解法:明確指定 -fstype=vfat 放棄自動偵測,或建立多個掛載點對應不同檔案系統類型。期待 mount 未來改進啟發式順序。

5.4 kill -SIGUSR1 無法卸載

表示檔案系統正在使用中。檢查是否有 shell 仍在該目錄、或目錄瀏覽器殘留隱藏引用。用 fuser 找出占用進程。

5.5 致謝

autofs 實作者值得感謝,文件清晰易用,優於 AMD。版權聲明見原始碼。

5.6 進階資源

copyright © 萬盛學電腦網 all rights reserved