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选项。