線上書籍

Home

網管技術

13.3.4 自動掛載 autofs 的使用 原文連結

在一般 NFS 檔案系統的使用情況中,如果用戶端要使用伺服器端所提供的 NFS 檔案系統時,要嘛就是得在 /etc/rc.d/rc.local 當中設定開機時掛載,要嘛就得要登入系統後手動利用 mount 來掛載。 此外,用戶端得要預先手動的建立好掛載點目錄,然後掛載上來。但是這樣的使用情況恐怕有點小問題。
 

  • NFS 檔案系統與網路連線的困擾:

我們知道 NFS 伺服器與用戶端的連線或許不會永遠存在,而 RPC 這個服務又挺討厭的,如果掛載了 NFS 伺服器後,任何一方離線都可能造成另外一方老是在等待逾時~而且,掛載的 NFS 檔案系統可能又不是常常被使用,但若不掛載的話,有時候緊急要使用時又得通知系統管理員, 這又很不方便...啊!好討厭的感覺啊~@_@

所以,讓我們換個思考的角度來討論一下使用 NFS 的情境:

  • 可不可以讓用戶端在有使用到 NFS 檔案系統的需求時才讓系統自動掛載?
  • 當 NFS 檔案系統使用完畢後,可不可以讓 NFS 自動卸載,以避免可能的 RPC 錯誤?

如果能達到上述的功能,那就太完美啦!有沒有這東西呢?有的,在現在的 Linux 環境下這是可以達成的理想!用的就是 autofs 這個服務啦!
 

  • autofs 的設定概念:

autofs 這個服務在用戶端電腦上面,會持續的偵測某個指定的目錄, 並預先設定當使用到該目錄下的某個次目錄時,將會取得來自伺服器端的 NFS 檔案系統資源,並進行自動掛載的動作。 講這樣或許你有點模糊,讓我們拿底下這個圖示來看看:

autofs 自動掛載的設定檔內容示意圖
圖 13.3-1、autofs 自動掛載的設定檔內容示意圖

如上圖所示,我們的 autofs 主要設定檔為 /etc/auto.master,這個檔案的內容很簡單, 如上所示,我只要定義出最上層目錄 (/home/nfsfile) 即可,這個目錄就是 autofs 會一直持續偵測的目錄啦。 至於後續的檔案則是該目錄底下各次目錄的對應。在 /etc/auto.nfs (這個檔案的檔名可自訂) 裡面則可以定義出每個次目錄所欲掛載的遠端伺服器的 NFS 目錄資源!

舉例來說:『當我們在用戶端要使用 /home/nfsfile/public 的資料時,此時 autofs 才會去 192.168.100.254 伺服器上掛載 /home/public !』且『當隔了 5 分鐘沒有使用該目錄下的資料後,則用戶端系統將會主動的卸載 /home/nfsfile/public 』。

很不錯用的一個工具吧!因為有用到伺服器的資料時才自動掛載,沒有使用了就會自動卸載! 而不是傳統的情況一直是掛載的!既然這麼好用,那就讓我們實際來操演一下:
 

  • 建立主設定檔 /etc/auto.master ,並指定偵測的特定目錄

這個主要設定檔的內容很簡單,只要有要被持續偵測的目錄及『資料對應檔』即可。 那個資料對應檔的檔名是可以自行設定的,在鳥哥這個例子當中我使用 /etc/auto.nfs 來命名。

[root@clientlinux ~]# vim /etc/auto.master /home/nfsfile /etc/auto.nfs

上述資料中比較需要注意的是,那個 /home/nfsfile 目錄不需要存在,因為 autofs 會主動的建立該目錄! 如果你建立了,可能反而會出問題~因此,先確定一下沒有該目錄吧!
 

  • 建立資料對應檔內 (/etc/auto.nfs) 的掛載資訊與伺服器對應資源

剛剛我們所指定的 /etc/auto.nfs 是自行設定的,所以這個檔案是不存在的。那麼這個檔案的格式是如何呢?你可以這樣看:

[本地端次目錄] [-掛載參數] [伺服器所提供的目錄] 選項與參數: [本地端次目錄] :指的就是在 /etc/auto.master 內指定的目錄之次目錄 [-掛載參數] :就是前一小節提到的 rw,bg,soft 等等的參數啦!可有可無; [伺服器所提供的目錄] :例如 192.168.100.254:/home/public 等 [root@clientlinux ~]# vim /etc/auto.nfs public -rw,bg,soft,rsize=32768,wsize=32768 192.168.100.254:/home/public testing -rw,bg,soft,rsize=32768,wsize=32768 192.168.100.254:/home/test temp -rw,bg,soft,rsize=32768,wsize=32768 192.168.100.254:/tmp # 參數部分,只要最前面加個 - 符號即可!

這樣就可以建立對應了!要注意的是,那些 /home/nfsfile/public 是不需要事先建立的! 咱們的 autofs 會事情況來處理喔!好了,接下來讓我們看看如何實際運作吧!
 

  • 實際運作與觀察

設定檔設定妥當後,當然就是要啟動 autofs 啦!

[root@clientlinux ~]# /etc/init.d/autofs stop [root@clientlinux ~]# /etc/init.d/autofs start # 很奇怪!非常怪!CentOS 6.x 的 autofs 使用 restart 會失效!所以鳥哥才進行兩次

假設你目前並沒有掛載任何來自 192.168.100.254 這部 NFS 伺服器的資源目錄。好了, 那讓我們實際來觀察看看幾個重要的資料吧!先看看 /home/nfsfile 會不會主動的被建立? 然後,如果我要進入 /home/nfsfile/public 時,檔案系統會如何變化呢?

[root@clientlinux ~]# ll -d /home/nfsfile drwxr-xr-x. 2 root root 0 2011-07-28 00:07 /home/nfsfile # 仔細看,妳會發現 /home/nfsfile 容量是 0 喔!那是正常的!因為是 autofs 建立的 [root@clientlinux ~]# cd /home/nfsfile/public [root@clientlinux public]# mount | grep nfsfile 192.168.100.254:/home/public on /home/nfsfile/public type nfs (rw,soft,rsize=32768, wsize=32768,sloppy,vers=4,addr=192.168.100.254,clientaddr=192.168.100.10) # 上面的輸出是同一行!瞧!突然出現這個玩意兒!因為是自動掛載的嘛! [root@clientlinux public]# df /home/nfsfile/public 檔案系統 1K-區段 已用 可用 已用% 掛載點 192.168.100.254:/home/public 7104640 143104 6607040 3% /home/nfsfile/public # 檔案的掛載也出現沒錯!

呵呵!真是好啊!如此一來,如果真的有需要用到該目錄時,系統才會去相對的伺服器上面掛載! 若是一陣子沒有使用,那麼該目錄就會被卸載呢!這樣就減少了很多不必要的使用時機啦!還不錯用吧! ^_^