详解自动挂载文件系统autofs

http://hi.baidu.com/telpublic/blog/item/cd5fb151eaeb292143a75b50.html

autofs服务

=================================================
autofs检测到用户正试图访问一个尚未挂接的文件系统,则自动挂载该文件系统
如果它检测到某个已挂接的文件系统在一段时间内没有被使用,那么Autofs会自动将其卸载
帮助:man 5 autofs man auto.master


主配置文件:/etc/auto.master

-------------------------------------------------
格式:map-point [type:]map [options]
举例:/misc /etc/auto.misc --timeout 60
说明:将auto.misc指定的文件系统挂载到/misc目录下,最大空闲时间60秒
//map-point指定挂载点,但完整的挂载点由map-point字段和map文件共同决定。也可以指定为/- 表示挂载点完全由map文件决定。
//type指定map的类型,参数比较多。如果map是一个文本文件,则type为file;如果map为一个程序,则type为program;还有其他类型。
//map 指定挂载点路径的部分组成、挂载选项、被挂载的文件系统。特殊的map是-hosts 实际上指定map文件为auto.nfs
//options 常用的是--timeout ,指定文件系统在多长时间不被访问则自动卸载。
//修改了主配置文件后,需要重新启动服务。修改其他配置文件不用重启服务。


map文件:auto.smb auto.misc auto.nfs
-------------------------------------------------
//这里只讨论file和program类型的map。
file类型的map:
格式:key [-options] location
举例:cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
说明:将/dev/cdrom文件系统(光盘)挂载到/misc/cd目录。这里的cd与auto.master文件的/misc构成了完整的挂载点。
//key key与auto.master中对应行的map-point构成完整的挂载点。注意:key前面没有斜线/
//options 选项。fstype指定文件系统类型,由autofs处理。其他选项提交给mount处理。
//location 文件系统。如果文件系统以/开头,必须加冒号,否则无需加冒号。如nfs类型的文件系统,192.168.0.106:/tmp <=前面无需加冒号
//如果你的key下有多个子目录,且每个文件系统都是挂载在子目录上,如下。则需要在location前面增加一个字段,指定子目录的名称,名称必须以斜线开头。
//下面第一行结尾的反斜线是用来连接下一行的(shell格式)。如果写成一行,不需要这个反斜线。
192.168.0.106 -fstype=cifs /software ://192.168.0.106/software \
                /swap   ://192.168.0.106/swap

program类型的map:
格式:[-options] location //这是其执行后的标准输出的格式。和file类型的一样,只是无需指定key
说明:map为一个可执行的文件(一般是脚本)。这个脚本在运行时获取了一个参数$key。


key <=无论是map中的key还是输入参数$key,其内容为挂载点路径去掉auto.master的map-point字段后剩余的第一个目录。
举例:auto.master内容: /smb /etc/auto.smb       auto.smb内容: 192.168.0.106 -fstype=cifs /software ://192.168.0.106/software
完整的目录因该是/smb/192.168.0.106/software   key内容为192.168.0.106



深入内容:

-------------------------------------------------
环境变量:man 5 autofs
可以在配置文件中使用变量,这些变量被自动替换成变量值。如:/etc/auto.misc
cd -fstype=iso9660,ro,nosuid,nodev ${USER} :/dev/cdrom
//${USER}是一个变量,内容为当前用户名。 挂载目录为:/misc/cd/root   <=如果你以root登陆

特殊的符号:man 5 autofs
配置文件中,符号&用来表示key值,符号*表示key为任意值
* -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom   /misc/任意字符串 《=访问光盘
cd -fstype=iso9660,ro,nosuid,nodev /& :/dev/cdrom /misc/cd/cd 《=访问光盘

输入特殊符号:
基本上,在配置文件中如果存在符号,都可能会出错,解决的办法就是给每个符号加反斜线\
cd -fstype=iso9660,ro,nosuid,nodev,fscontext=\"system_u\:object_r\:httpd_sys_content_t\" :/dev/cdrom


autofs 解析器对于包含如冒号、逗号和空格等的名称非常敏感。应该用双引号括住这些名称(注:经测试,逗号用双引号括住也不行)。

一个挂载问题:

请教一个问题
A: 192.168.1.100 运行 nfs服务
B: 192.168.1.200 是客户端   mount -t nfs 192.168.1.100:/src /mnt
现在碰到一个问题 服务端A的nfs服务一旦跑死或者停掉之后

在B上面df  -h 直接卡住  , ll / 访问根目录也是卡住, fuser ,lsof 等似乎涉及到访问/mnt 的动作 终端都会卡住,  按ctrl +c 也无法强制退出。

在B上面用netstat -an 查看建立的连接  已经没有跟A建立的连接了。

挂在进程automount卡死,ps -aux | grep automount进程状态为D。

解释:

这个现象是正常的,NFS服务器挂了,客户端不管执行 df 还是 cd /mnt 都会hang住,并且不能 ctrl+c强制退出。
只能等nfs服务器启动之后,或者重启客户端,就恢复了。

为了避免这个问题,挂载的时候要加和上soft选项。

参考:http://linux.die.net/man/8/mount.cifs


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值