autofs

最後更新: 23/1/12

介紹:

autofs 並不是一個真真正正的 File System 來,

它本身是一個背景程式來, 並且監察系統進出某一些目錄

當有"需要"時, 才會自動掛載它們, 一定時間 timeout 後, 它就會自己卸載

好處是減少資源浪費, 比如 sshfs

 

安裝:

apt-get install autofs

 

主程式:

automount [options] [master_map]

 

主要設定文件:

/etc/auto.master <--------- Default 的 master_map
/etc/auto.net <----------755 (NFS 的特別掛載)
/etc/auto.misc
/etc/auto.smb <----------755 (CIFS 的特別掛載)
/etc/default/autofs <---------- option

 

 

auto.master

 

在 /etc/auto.master  內一行定義一個掛載點

格式如下

mount-point    [map-type:]map    [options]

Example:

/mnt/share      /etc/auto.nfs

 

mount-point: 共有兩種 indirect mapsdirect maps

 

indirect maps

用 indirect maps 時, 系統會自動建立及刪除相應的 mount-point

資源最終會掛載在  /mount-point/folder  上 ( folder 是在 map 上定義的)

 

direct maps

而 direct maps 格式為 /-

folder 則是 mount-point  的 full path

 

map-type: 其大一種 file / program / ldap / hesiod

options: 放入去 mount -o options 裡的

 

最後, 有一行

+auto.master

意思是指自己都可以是 map file

 


 

Map file 格式:

map file 一般以 auto.X 的名稱存在

比如 auto.nfs, 格式為

Key     -Options      Source

 

Example1:

nfs -fstype=nfs4,rw,soft,intr Server_IP:/home/share

 

當要 mout 的 FS 不是 NFS 時, 就要加上 -fstype= FS

比如: -fsytpe=smbfs, -fstype=ext4, -fstype=fuse 及 -fstype=iso9660,ro

 

Example2:

auto.master

/-      /etc/auto.conf

auto.conf

/mnt/backup     -fstype=ext4        :/dev/hda1
/mnt/cd         -fstype=iso9660,ro      :/dev/sr0
 

Example3:

auto.master

/mnt/automnt      /etc/auto.conf

auto.conf

backup     -fstype=ext4        :/dev/hda1
cd         -fstype=iso9660,ro      :/dev/sr0

Remark:

在 auto.master 內不可以

/mnt/share      /etc/auto.cd
/mnt/share      /etc/auto.backup

ignoring duplicate indirect mount /mnt/share

 

 

修改設定後, 記得 reload 它

/etc/init.d/autofs reload

 


 

Testing

 

只有正確 access 相應的目錄, 那 auto-mount 才會生效

Example:

auto.master

/mnt/automnt    auto.nfs

auto.nfs

nfs        Server:/DIR

只有當 Client   :cd /mnt/automnt/nfs: 或 "ls /mnt/automnt/nfs"

才會 tigger 到 automount

attempting to mount entry /mnt/share/nfs
mount(nfs): mounted 192.168.123.111:/home/share on /mnt/share/nfs
mounted /mnt/share/nfs

ls /mnt/automnt 是不會 tigger 的 !!

 


 

/etc/default/autofs 內的 Option

 

# 過多久才 un-mount 沒有 access 的 mount-point

TIMEOUT=300

 

1 remaining in /mnt/share
1 remaining in /mnt/share
1 remaining in /mnt/share
1 remaining in /mnt/share
expiring path /mnt/share/nfs
unmounting dir = /mnt/share/nfs
expired /mnt/share/nfs

 

# 當 mount-point 無效時, 多久才 re-mount 一次

NEGATIVE_TIMEOUT=60

 


 

* 與 &

user1   server:/home/user1
user2   server:/home/user2

相當於

*   server:/home/&

 


 

/net 與 /smb

net <----- 自動掛載 nfs 資源

smb <----- 自動掛載 samba 資源

 

比如:

cd /net/fileserver/export
 

 


 

FUSE 與 autofs

 

由於 automount 是以 root 身份來執行, 所以如果要其他人都用到 mount 回來的資源,

那就要加上 "allow_other" 此 option !!

格式:

mntpoint -fstype=fuse,allow_other  :sshfs\#user@example.com\:/path/to/mount

 


 

autofs - samba

 

autofs, samba-client, samba-common

# file: /etc/auto.master
/mnt/cifs_share    /etc/auto.cifs    --timeout=600 --ghost

# /etc/auto.cifs:
share_data            -fstype=cifs,rw,noperm,credentials=/etc/credentials.txt        ://192.168.1.11/share_data

# mount -t cifs -o username=YOUR_NAME,password=YOUR_PW //192.168.44.100/share1 /mnt/buffalo/share1

# /etc/credentials.txt
username=user
password=mypw

 


 

Debugging

automount -f -v

-f, --foreground
-v, --verbose

Starting automounter version 5.0.4, master map /etc/auto.master
using kernel protocol version 5.01
syntax error in nsswitch config near [ syntax error ]

lookup(file): failed to read included master map auto.master
mounted indirect on /mnt/share with timeout 300, freq 75 seconds