
autofs 是一個程式,可以根據需要掛接指定的目錄。它以核心模組為基礎,效率很高,並且可以管理本地目錄和網路共用。這些自動掛接點僅在存取時掛接,一段時間不使用後即會卸載。這種按需行為可節省頻寬,在效能上優於 /etc/fstab 管理的靜態掛接。雖然 autofs 是一個控制程序檔,但是 automount 才是執行實際自動掛接的指令 (精靈)。
SUSE Linux Enterprise Desktop 上預設未安裝 autofs。若要使用它的自動掛接功能,請先使用以下指令進行安裝
sudo zypper install autofs
您需要使用 vim 之類的文字編輯器編輯 autofs 的組態檔案,來手動設定該工具。設定 autofs 有兩個基本步驟 — master 映射檔案與特定映射檔案。
autofs 的預設 master 映射檔案是 /etc/auto.master。若要變更其位置,可以在 /etc/sysconfig/autofs 檔案中變更 DEFAULT_MASTER_MAP_NAME 選項的值。以下是 SUSE Linux Enterprise Desktop 中預設 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
| |
雖然依預設透過 # 列為注釋,但是這是簡單的自動掛載器映射語法的範例。 | |
如果您需要將 master 映射拆分為幾個檔案,請將該行取消注釋標記,並將映射 (字尾為 | |
|
auto.master 中的項目有三個欄位,語法如下:
mount point map name options
用於掛接 autofs 檔案系統的基本位置,例如 /home。
要用於掛接之映射來源的名稱。如需映射檔案的語法,請參閱第 26.2.2 節 「映射檔案」。
這些選項 (若指定) 依預設將套用至給定映射中的所有項目。
如需選用映射類型、格式和選項之特定值的詳細資訊,請參閱 手冊頁 (man 5 auto.master)。
auto.master 中的下列項目可指示 autofs 在 /etc/auto.smb 中搜尋,並在 /smb 目錄中建立掛接點。
/smb /etc/auto.smb
直接掛接可在相關映射檔案內指定的路徑中建立掛接點。它並不在 auto.master 中指定掛接點,而是以 /- 取代掛接點欄位。例如,下面一行指示 autofs 在 auto.smb 中所指定的位置上建立掛接點:
/- /etc/auto.smb
如果未以映射檔案的完整本地或網路路徑指定映射檔案,則會使用名稱服務開關 (NSS) 組態尋找映射檔案。
/- auto.smb
雖然檔案是使用 autofs 自動掛接之映射的最常見類型,但是還有其他一些類型。映射指定可以是指令的輸出,也可以是 LDAP 或資料庫中查詢的結果。如需映射類型的詳細資訊,請參閱手冊頁 man 5 auto.master。
映射檔案指定 (本地或網路) 來源位置,掛接點則指出在本地將來源掛接在何處。映射的一般格式與 master 映射相似。區別在於選項出現在掛接點與位置之間,而不是項目的末尾:
mount point options location
指定將來源掛接在何處。這可以是要新增至 auto.master 中所指定基本掛接點的單個目錄名稱 (亦稱為間接掛接),也可以是掛接點的完整路徑 (直接掛接,請參閱第 26.2.1.1 節 「直接掛接」)。
為相關項目指定選用的掛接點清單,內容以逗號分隔。如果 auto.master 還包含此映射檔案的選項,則會附加這些選項。
指定要掛接的檔案系統的來源,通常是 NFS 或 SMB 磁區,一般表示為主機名稱:路徑名稱。如果要掛接的檔案系統以「/」開頭 (例如本地 /dev 項目或 smbfs 共用),需要前置冒號符號「:」,例如 :/dev/sda1。
本節介紹如何控制 autofs 服務操作,以及如何在調整自動掛載器操作時檢視更多除錯資訊。
autofs 服務 #
autofs 服務的操作由 systemd 控制。對 autofs 而言,systemctl 指令的一般語法是
sudo systemctl sub-command autofs
其中子指令是下列其中一項:
在開機時啟動自動掛載器精靈。
啟動自動掛載器精靈。
停止自動掛載器精靈。自動掛接點不可存取。
列印 autofs 服務的目前狀態以及部分相關記錄檔。
停止然後啟動自動掛載器,以便終止所有執行中的精靈,然後再啟動新的精靈。
檢查目前的 auto.master 映射,重新啟動項目已變更的精靈,然後啟動新項目的新精靈。
如果您在使用 autofs 掛接目錄時遇到問題,實用的方法是手動執行 automount 精靈並觀看其輸出訊息:
停止 autofs。
sudo systemctl stop autofs
從一個終端機在前景手動執行 automount,以產生詳細輸出。
sudo automount -f -v
從另一個終端機嘗試透過存取掛接點 (例如,透過 cd 或 ls) 掛接自動掛接的檔案系統。
從第一個終端機檢查 automount 的輸出,以瞭解有關掛接為何失敗或者甚至為何未嘗試掛接的更多資訊。
下面的程序說明如何設定 autofs 以自動掛接網路上可用的 NFS 共用。該程序要用到上文中的資訊,並假設您熟悉 NFS 輸出。如需 NFS 詳細資訊,請參閱第 24 章 「使用 NFS 共享檔案系統」。
編輯映射檔案 /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 秒鐘內未曾使用,則自動卸載。
為 NFS 共用建立新的映射檔案:
sudo vim /etc/auto.nfs
在 /etc/auto.nfs 中,通常每個 NFS 共用對應單獨一行內容,第 26.2.2 節 「映射檔案」中包含其格式的詳細描述。新增一行,說明掛接點及 NFS 共用網路位址:
export jupiter.com:/home/geeko/doc/export
上面一行表示系統會應要求將 jupiter.com 主機上的 /home/geeko/doc/export 目錄自動掛接到本地主機上的 /nfs/export 目錄 (/nfs 取自 auto.master 映射)。/nfs/export 目錄將由 autofs 自動建立。
如果您先前靜態掛接了相同的 NFS 共用,則可以選擇性地將 /etc/fstab 中相關的行列為注釋。該行應類似於:
#jupiter.com:/home/geeko/doc/export /nfs/export nfs defaults 0 0
重新載入 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 正常工作。
本節描述了 autofs 基本介紹以外的主題 — 自動掛接網路上可用的 NFS 共用,在映射檔案中使用萬用字元以及有關 CIFS 檔案系統特定的資訊。
/net 掛接點 #
如果您使用許多 NFS 共用,則這個掛接點非常有用。/net 會根據需要自動掛接本地網路上的所有 NFS 共用。該項目已存在於 auto.master 檔案中,因此,您只需取消其注釋標記並重新啟動 autofs 即可:
/net -hosts
systemctl restart autofs
例如,如果您有個名為 jupiter 的伺服器以及名為 /export 的 NFS 共用,您可以在指令行上鍵入下列指令進行掛接:
# cd /net/jupiter/export
如果您的目錄含有子目錄,而這些子目錄的自動掛接需要個別處理 (典型的情況是包含各個使用者主目錄的 /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/&
如果您要自動掛接 SMB/CIFS 共用 (有關 SMB/CIFS 協定的詳細資訊,請參閱第 25 章 「Samba」),則需要修改映射檔案的語法。在選項欄位中新增 -fstype=cifs,並在共用位置前面加上冒號「:」。
mount point -fstype=cifs ://jupiter.com/export