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会将其卸载。