1、autofs简介

    mount是用来挂载文件系统的,可以在系统启动的时候挂载也可以在系统启动后挂载。对于本地固定设备,如硬盘可以使用mount挂载;而光盘、软盘、NFS、SMB等文件系统具有动态性,即有需要的时候才有必要挂载。光驱和软盘我们一般知道什么时候需要挂载,但NFS和SMB共享等就不一定知道了,即我们一般不能及时知道NFS共享和SMB什么时候可以挂载。而autofs服务就提供这种功能,好像windows中的光驱自动打开功能,能够及时挂载动态加载的文件系统。免去我们手动挂载的麻烦。要实现光驱,软盘等的动态自动挂载,需要进行相关的配置。

    特点:

    Autofs与Mount/Umount的不同之处在于,它是一种看守程序。如果它检测到用户正试图访问一个尚未挂接的文件系统,它就会自动检测该文件系统,如果存在,那么Autofs会自动将其挂接。另一方面,如果它检测到某个已挂接的文件系统在一段时间内没有被使用,那么Autofs会自动将其卸载。因此一旦运行了Autofs后,用户就不再需要手动完成文件系统的挂接和卸载。

2、autofs安装及配置

        系统环境:

[root@vms001 /]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.1 (Maipo)
[root@vms001 /]# uname -r
3.10.0-229.el7.x86_64

     1)安装及启动autofs服务

[root@vms001 /]# yum -y install autofs    #安装autofs服务
[root@vms001 /]# systemctl start autofs    #启动autofs服务
[root@vms001 /]# systemctl enable autofs    #设置开机自启动autofs服务

    2)autofs的配置文件

/etc/auto.master   #主配置文件,(指定要挂载的父目录以及指定子配置文件)
/etc/auto.misc    #子配置文件(文件名可以自定义,子配置文件由主配置文件决定)

    3)autofs自动挂载的两种格式配置

    ① 相对路径挂载(会把父目录的源文件覆盖掉)

         本测试是挂载本地设备cdrom

##############创建父目录及文件############

[root@vms001 /]# mkdir /autofs        #创建父目录
[root@vms001 /]# touch /autofs/aa-{0..5}   #创建文件,测试当设置了自动挂载后 文件是否被覆盖
[root@vms001 /]# ls /autofs/
aa-0  aa-1  aa-2  aa-3  aa-4  aa-5

###############编辑主配置文件############

[root@vms001 /]# vim /etc/auto.master
#添加以下内容
/autofs    /etc/auto.aa    #/autofs是指定挂载点的父目录;/etc/auto.aa是指定的子配置文件路径

###############编辑子配置文件############

[root@vms001 /]# cp /etc/auto.misc /etc/auto.aa   

[root@vms001 /]# vim /etc/auto.aa
# 添加以下内容
#xx是挂载点,当访问这个目录的时候会自动挂载;-fstype是文件系统类型;:/dev/cdrom 是所要挂载的设备
xx   -fstype=iso9660,ro  :/dev/cdrom  

###############测试############

[root@vms001 /]# systemctl restart autofs    #重启autofs服务
[root@vms001 /]# 
[root@vms001 /]# mount | grep xx   #发现xx没有被挂载
[root@vms001 /]# 
[root@vms001 /]# ls /autofs/     #查看父目录为空,说明父目录的源文件被覆盖了
[root@vms001 /]# 
[root@vms001 /]# ls /autofs/xx    #查看xx挂载点,发现它自动挂载
addons  GPL       LiveOS      release-notes            RPM-GPG-KEY-redhat-release
EFI     images    media.repo  repodata                 TRANS.TBL
EULA    isolinux  Packages    RPM-GPG-KEY-redhat-beta
[root@vms001 /]# 
[root@vms001 /]# mount | grep xx   #当访问xx挂载点后,xx已挂载
/dev/sr0 on /autofs/xx type iso9660 (ro,relatime)

    总结:相对路径挂载会把父目录的源文件覆盖掉。/etc/auto.master主配置文件指定挂载点的父目录以及子配置文件的路径(子配置文件可以自定义,但格式必须是auto.xxx);/etc/auto.aa子配置文件指定 挂载点、文件系统类型、所要挂载的设备;


    ② 绝对路径挂载(父目录的源文件不会改变,会在父目录中创建挂载点目录)

        本测试是挂载远程nfs设备

###############创建父目录及文件#############

[root@vms001 /]# mkdir data
[root@vms001 /]# touch /data/data-{0..5}
[root@vms001 /]# ls /data/
data-0  data-1  data-2  data-3  data-4  data-5

###############编辑主配置文件############

[root@vms001 /]# vim /etc/auto.master
#添加以下内容
/-         /etc/auto.bb   #/-固定格式;/etc/auto.bb指定子配置文件的路径

###############编辑子配置文件############

[root@vms001 /]# cp /etc/auto.misc /etc/auto.bb
[root@vms001 /]# 
[root@vms001 /]# vim /etc/auto.bb
#添加以下内容
/data/zz  -fstype=nfs,vers=3,rw  vms002:/data   #挂载点是绝对路径;文件系统类型是nfs;挂载设备是nfs

###############测试############

[root@vms001 /]# systemctl restart autofs    #重启autofs服务
[root@vms001 /]# 
[root@vms001 /]# mount | grep nfs    #vms002(nfs)没有被挂载
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
[root@vms001 /]# 
[root@vms001 /]# ls /data/                 #查看父目录,发现源文件还在。
data-0  data-1  data-2  data-3  data-4  data-5  zz  
[root@vms001 /]#   
[root@vms001 /]# ls /data/zz     #查看挂载点
oldboy-0  oldboy-1  oldboy-2  oldboy-3  oldboy-4  oldboy-5
[root@vms001 /]# 
[root@vms001 /]# mount | grep nfs   #vms002(nfs)已被挂载
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
vms002:/data on /data/zz type nfs (rw,relatime,vers=3,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.26.102,mountvers=3,mountport=20048,mountproto=udp,local_lock=none,addr=192.168.26.102)

    总结:绝对路径挂载不会改变父目录的源文件。/etc/auto.master主配置文件:/-为固定格式,子配置文件的路径(子配置文件可以自定义,但格式必须是auto.xxx);/etc/auto.bb子配置文件指定 挂载点(必须是绝对路径)、文件系统类型、所要挂载的设备;

3、总结

    1)自动挂载的服务为:autofs;

    2)autofs配置文件:主配置文件(/etc/autofs.master);子配置文件(/etc/auto.misc);

    3)相对路径挂载:会覆盖父目录的源文件;

    4)绝对路径挂载:父目录的源文件不会改变;

    5)autofs服务是一个守护进程。当我们访问挂载点的时候,它会自动检测该文件系统,如果存在,autofs会将其自动挂载;autofs还会检测已挂载的文件系统,如果长时间未被访问,则autofs会将其卸载。