Debian 7 中AutoFS 設定

Debian 7 中AutoFS 設定

前言

由於我的資料都放在File Server 中, 工作用的Debian 是使用NFS 連上File Server, 但是聽說使用fstab 指定mount NFS 目錄, 這樣的話, 系統會一直保持NFS 連線, 即使是沒有使用File Server 的資料, NFS 連線也不會斷掉. 對於File Server 來說, 必須一直keep 一些資源來維持連線. 若改用AutoFS 來管理mount 資訊, 這樣就能夠在使用File Server 資料時, 自動mount NFS, 一旦IDLE 一小段時間沒用到File Server資料, 就會自動umount. 對於File Server 而言可以降低一些loading.

操作流程

收先安裝AutoFS

# apt-get install autofs nfs-common

首先修改/etc/auto.master 這個設定檔, 他是autofs 的主要設定檔.
在檔案後面新增一行如下

/mountdir /etc/auto.myfs

其中第一個參數 /mountdir 表示要mount的目錄, autofs 會一直監控這個目錄, 若這個目錄(含子目錄)有被存取, 則會讀取/etc/auto.myfs 這個檔案來決定如何處理. 第二個參數的這個檔名可以請自取.

所以我們還得新增一個設定檔叫/etc/auto.myfs. 這個設定檔是描述我的NFS server 的資訊.
內容如下:

# cat /etc/auto.myfs

*          -rw,soft,intr           192.168.1.99:/export/myfs/users/&

現在解釋這三個參數的意思, 第一個參數 , 是指任意名字, 也就是說autofs 會掛載/mountdir/ 任意的名子. 第二個參數是要mount NFS 的參數, 第三個參數是NFS server 的位址. 請注意最後那個& 符號表示跟第一個參數相同的名字.

例如我使用指令切換目錄

# cd /mountdir/hao 

這時auto.myfs 的第一參數 * 就會替換成hao, 而第三個參數的 & 也會替換成hao, 如此完整的設定就會變成

hao     -rw,soft,intr    192.168.1.99:/export/myfs/users/hao

這樣子, 我們就可以省下很多行設定了. 當然, 若你不嫌累的話, 也可以一行一行的設定, 例如

dir_a        -rw,soft,intr    192.168.1.99:/export/myfs/users/dir_a
dir_b        -rw,soft,intr    192.168.1.99:/export/myfs/users/dir_b
comm_dir     -rw,soft,intr    192.168.1.99:/export/myfs/public_dir

諸如此類設定.

當設定好了之後, 就是啟用autofs 啦.

# /etc/init.d/autofs restart

也可以使用如下指令, 讓開機就啟動autofs

# update-rc.d autofs enable

然後就開心使用啦!

NFS over TCP

前一陣子發現拷貝大的壓縮檔案時(超過1G), 經常發生解壓縮失敗的情況. 後來發現是透過NFS 傳遞檔案時, 有時會有錯誤的bits發生. 因為NFS default 是走UDP, 在網路不是穩定時, 是有可能會掉資料的.

因此NFS over TCP 是比較可以保障資料的傳遞. 若以上面的例子來改成NFS over TCP 的話, 只需要在/etc/auto.myfs 修改如下:

# cat /etc/auto.myfs

*          -rw,soft,intr,rsize=8192,wsize=8192,tcp           192.168.1.99:/export/myfs/users/&

上面rsize=8192,wsize=8192 是為了得到較佳的效能.


參考資料

  1. NIS、NFS 與 Autofs 整合應用
  2. 鳥哥的 Linux 私房菜
  3. Debian WiKi: AutoFs
  4. Ubuntu AutoFS
  5. Mounting NFS File Systems
This entry was posted in Linux and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *