跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 管理指南 / 服務 / 使用 Autofs 按需掛接
適用範圍 SUSE Linux Enterprise Server 12 SP5

30 使用 Autofs 按需掛接

autofs 是一個程式,可以根據需要掛接指定的目錄。它以核心模組為基礎,效率很高,並且可以管理本地目錄和網路共用。這些自動掛接點僅在存取時掛接,一段時間不使用後即會卸載。這種按需行為可節省頻寬,在效能上優於 /etc/fstab 管理的靜態掛接。雖然 autofs 是一個控制程序檔,但是 automount 才是執行實際自動掛接的指令 (精靈)。

30.1 安裝

SUSE Linux Enterprise Server 上預設未安裝 autofs。若要使用它的自動掛接功能,請先使用以下指令進行安裝

sudo zypper install autofs

30.2 組態

您需要使用 vim 之類的文字編輯器編輯 autofs 的組態檔案,來手動設定該工具。設定 autofs 有兩個基本步驟 — master 映射檔案與特定映射檔案。

30.2.1 Master 映射檔案

autofs 的預設 master 映射檔案是 /etc/auto.master。若要變更其位置,可以在 /etc/sysconfig/autofs 檔案中變更 DEFAULT_MASTER_MAP_NAME 選項的值。以下是 SUSE Linux Enterprise Server 中預設 master 映射檔案的內容︰

#
# Sample auto.master file
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).1
#
#/misc  /etc/auto.misc2
#/net -hosts
#
# Include /etc/auto.master.d/*.autofs3
#
#+dir:/etc/auto.master.d
#
# Include central master map if it can be found using
# nsswitch sources.
#
# Note that if there are entries for /net or /misc (as
# above) in the included master map any keys that are the
# same will not be seen as the first read key seen takes
# precedence.
#
+auto.master4

1

autofs 手冊頁 (man 5 autofs) 提供了許多有關自動掛載器映射的重要資訊。

2

雖然依預設透過 # 列為注釋,但是這是簡單的自動掛載器映射語法的範例。

3

如果您需要將 master 映射拆分為幾個檔案,請將該行取消注釋標記,並將映射 (字尾為 .autofs) 置於 /etc/auto.master.d/ 目錄中。

4

+auto.master 可確保 NIS (請參閱Section 3.1, “Configuring NIS Servers”瞭解 NIS 詳細資訊) 的使用者仍可找到其 master 映射。

auto.master 中的項目有三個欄位,語法如下︰

mount point      map name      options
掛接點

用於掛接 autofs 檔案系統的基本位置,例如 /home

映射名稱

要用於掛接之映射來源的名稱。如需映射檔案的語法,請參閱第 30.2.2 節 「映射檔案」

選項

這些選項 (若指定) 依預設將套用至給定映射中的所有項目。

提示
提示:更多資訊

如需選用映射類型格式選項之特定值的詳細資訊,請參閱 auto.master 手冊頁 (man 5 auto.master)。

auto.master 中的下列項目可指示 autofs/etc/auto.smb 中搜尋,並在 /smb 目錄中建立掛接點。

/smb   /etc/auto.smb

30.2.1.1 直接掛接

直接掛接可在相關映射檔案內指定的路徑中建立掛接點。它並不在 auto.master 中指定掛接點,而是以 /- 取代掛接點欄位。例如,下面一行指示 autofsauto.smb 中所指定的位置上建立掛接點︰

/-        /etc/auto.smb
提示
提示:不含完整路徑的映射

如果未以映射檔案的完整本地或網路路徑指定映射檔案,則會使用名稱服務開關 (NSS) 組態尋找映射檔案。

/-        auto.smb

30.2.2 映射檔案

重要
重要:其他映射類型

雖然檔案是使用 autofs 自動掛接之映射的最常見類型,但是還有其他一些類型。映射指定可以是指令的輸出,也可以是 LDAP 或資料庫中查詢的結果。如需映射類型的詳細資訊,請參閱手冊頁 man 5 auto.master

映射檔案指定 (本地或網路) 來源位置,掛接點則指出在本地將來源掛接在何處。映射的一般格式與 master 映射相似。區別在於選項出現在掛接點與位置之間,而不是項目的末尾︰

mount point      options      location

確定對應檔案未標示為可執行檔。可透過執行 chmod -x MAP_FILE 移除可執行檔位元。

mount point

指定將來源掛接在何處。這可以是要新增至 auto.master 中所指定基礎掛接點的單個目錄名稱 (亦稱為間接掛接),也可以是掛接點的完整路徑 (直接掛接,請參閱第 30.2.1.1 節 「直接掛接」)。

options

為相關項目指定選用的掛接點清單,內容以逗號分隔。如果 auto.master 還包含此映射檔案的選項,則會附加這些選項。

location

指定要掛接的檔案系統的來源,通常是 NFS 或 SMB 磁區,一般表示為主機名稱:路徑名稱。如果要掛接的檔案系統以「/」開頭 (例如本地 /dev 項目或 smbfs 共用),需要前置冒號符號「:」,例如 :/dev/sda1

30.3 操作與除錯

本節介紹如何控制 autofs 服務操作,以及如何在調整自動掛載器操作時檢視更多除錯資訊。

30.3.1 控制 autofs 服務

autofs 服務的操作由 systemd 控制。對 autofs 而言,systemctl 指令的一般語法是

sudo systemctl SUB_COMMAND autofs

其中,SUB_COMMAND 是下列項目之一︰

enable

在開機時啟動自動掛載器精靈。

start

啟動自動掛載器精靈。

stop

停止自動掛載器精靈。自動掛接點不可存取。

status

列印 autofs 服務的目前狀態以及部分相關記錄檔。

restart

停止然後啟動自動掛載器,以便終止所有執行中的精靈,然後再啟動新的精靈。

reload

檢查目前的 auto.master 映射,重新啟動項目已變更的精靈,然後啟動新項目的新精靈。

30.3.2 自動掛載器問題除錯

如果您在使用 autofs 掛接目錄時遇到問題,實用的方法是手動執行 automount 精靈並觀看其輸出訊息︰

  1. 停止 autofs

    sudo systemctl stop autofs
  2. 從一個終端機在前景手動執行 automount,以產生詳細輸出。

    sudo automount -f -v
  3. 從另一個終端機嘗試透過存取掛接點 (例如,透過 cdls) 掛接自動掛接的檔案系統。

  4. 從第一個終端機檢查 automount 的輸出,以瞭解有關掛接為何失敗或者甚至為何未嘗試掛接的更多資訊。

30.4 自動掛接 NFS 共用

下面的程序說明如何設定 autofs 以自動掛接網路上可用的 NFS 共用。該程序要用到上文中的資訊,並假設您熟悉 NFS 輸出。如需 NFS 詳細資訊,請參閱第 28 章 「使用 NFS 共享檔案系統

  1. 編輯映射檔案 /etc/auto.master

    sudo vim /etc/auto.master

    /etc/auto.master 末尾為新的 NFS 掛接新增項目︰

    /nfs      /etc/auto.nfs      --timeout=10

    此指令指示 autofs 基本掛接點是 /nfs,NFS 共用在 /etc/auto.nfs 映射中指定,並且此映射中的所有共用如果在 10 秒鐘內未曾使用,則自動卸載。

  2. 為 NFS 共用建立新的映射檔案︰

    sudo vim /etc/auto.nfs

    /etc/auto.nfs 中,通常每個 NFS 共用對應單獨一行內容,第 30.2.2 節 「映射檔案」中包含其格式的詳細描述。新增一行,說明掛接點及 NFS 共用網路位址︰

    export      jupiter.com:/home/geeko/doc/export

    上面一行表示系統會應要求將 jupiter.com 主機上的 /home/geeko/doc/export 目錄自動掛接到本地主機上的 /nfs/export 目錄 (/nfs 取自 auto.master 映射)。/nfs/export 目錄將由 autofs 自動建立。

  3. 如果您先前靜態掛接了相同的 NFS 共用,則可以選擇性地將 /etc/fstab 中相關的行列為注釋。該行應類似於︰

    #jupiter.com:/home/geeko/doc/export /nfs/export nfs defaults 0 0
  4. 重新載入 autofs 並檢查它是否正常運作︰

    sudo systemctl restart autofs
    # ls -l /nfs/export
    total 20
    drwxr-xr-x  6 1001 users 4096 Oct 25 08:56 ./
    drwxr-xr-x  3 root root     0 Apr  1 09:47 ../
    drwxr-xr-x  5 1001 users 4096 Jan 14  2013 .images/
    drwxr-xr-x 10 1001 users 4096 Aug 16  2013 .profiled/
    drwxr-xr-x  3 1001 users 4096 Aug 30  2013 .tmp/
    drwxr-xr-x  4 1001 users 4096 Oct 25 08:56 SLE-12-manual/

    如果您能看到遠端共用上的檔案清單,則表示 autofs 正常工作。

30.5 進階主題

本節描述了 autofs 基本介紹以外的主題 — 自動掛接網路上可用的 NFS 共用,在映射檔案中使用萬用字元以及有關 CIFS 檔案系統特定的資訊。

30.5.1 /net 掛接點

如果您使用許多 NFS 共用,則這個掛接點非常有用。/net 會根據需要自動掛接本地網路上的所有 NFS 共用。該項目已存在於 auto.master 檔案中,因此,您只需取消其注釋標記並重新啟動 autofs 即可︰

/net      -hosts
systemctl restart autofs

例如,如果您有個名為 jupiter 的伺服器以及名為 /export 的 NFS 共用,您可以在指令行上鍵入下列指令進行掛接︰

# cd /net/jupiter/export

30.5.2 使用萬用字元自動掛接子目錄

如果您的某個目錄含有多個子目錄,並且您需要將這些子目錄個別自動掛接 (一般情況下,該目錄是包含各個使用者主目錄的 /home 目錄),autofs 提供了便捷的解決方案。

對於主目錄,請在 auto.master 中新增下面一行︰

/home      /etc/auto.home

現在,您需要將正確的映射新增至 /etc/auto.home 檔案,以便自動掛接使用者的主目錄。有個解決方案是為每個目錄建立獨立的項目︰

wilber      jupiter.com:/home/wilber
penguin      jupiter.com:/home/penguin
tux      jupiter.com:/home/tux
[...]

這種方法非常麻煩,因為您需要在 auto.home 中管理使用者清單。您可以使用星號「*」而不是掛接點,使用和號「&」而不是要掛接的目錄。

*      jupiter:/home/&

30.5.3 自動掛接 CIFS 檔案系統

如果您要自動掛接 SMB/CIFS 共用 (有關 SMB/CIFS 協定的詳細資訊,請參閱第 29 章 「Samba),則需要修改映射檔案的語法。在選項欄位中新增 -fstype=cifs,並在共用位置前面加上冒號「:」。

mount point      -fstype=cifs      ://jupiter.com/export