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