前言
在Linux中,若要访问硬件资源,则需使用mount命令对其进行挂载(或者写入/etc/fstab文件开机自动挂载),将硬件资源与本地目录相关联,然后才能使用该存储介质。除此之外,使用Samba或NFS之类的服务,也需要对远程存储设备进行挂载。
但若挂载的资源过多,则会给网络资源和服务器资源造成一定的负载,从而降低了服务器性能。
一、简介
为了解决这个问题,可以使用autofs服务。
autofs服务是一种系统守护进程,我们可以把挂载信息写入其配置文件中。若用户不访问对应的存储介质,则系统不会进行挂载;而当用户去尝试访问该存储介质时,autofs则会自动对其进行挂载操作(即动态挂载)。整个过程对用户而言是透明的。
二、autofs安装与配置
这边先对autofs进行安装。配置本地镜像库(此处不做介绍),手动挂载镜像文件,以YUM方式安装autofs:
[root@service ~]# mount /dev/sr0 /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@service ~]# yum install -y autofs
服务安装完成后,会得到这些文件或目录:
[root@service ~]# ls /etc/auto*
/etc/autofs.conf /etc/auto.master /etc/auto.net
/etc/autofs_ldap_auth.conf /etc/auto.misc /etc/auto.smb
/etc/auto.master.d:
autofs服务的主配置文件是/etc/auto.master
,内容如下:
[root@service ~]# cat /etc/auto.master
#
# Sample auto.master file
# This is a 'master' automounter map and it has the following format:
# mount-point [map-type[,format]:]map [options]
# For details of the format look at auto.master(5).
#
/misc /etc/auto.misc
#
# NOTE: mounts done from a hosts map will be mounted with the
# "nosuid" and "nodev" options unless the "suid" and "dev"
# options are explicitly given.
#
/net -hosts
#
# Include /etc/auto.master.d/*.autofs
# The included files must conform to the format of this file.
#
+dir:/etc/auto.master.d
#
# Include central master map if it can be found using
# nsswitch sources.
#
# Note that if there are entries for /net or /misc (as
# above) in the included master map any keys that are the
# same will not be seen as the first read key seen takes
# precedence.
#
+auto.master
我们在auto.master
文件中添加自定义挂载的信息
[root@service ~]# vi /etc/auto.master
...
/media /etc/iso.misc # 添加镜像挂载,指向自定义的子文件
/misc /etc/auto.misc
...
...
之后,我们创建/etc/iso.misc
文件,并在其写入挂载点、挂载格式,设置位置等信息
[root@service ~]# vi /etc/iso.misc
# 挂载名称 磁盘类型 指定挂资源文件位置
iso -fstype=iso9660,defaults :/dev/sr0
配置完成后,就需要将服务拉起(或服务重启):
[root@service ~]# systemctl start autofs
[root@service ~]# systemctl enable autofs
Created symlink from /etc/systemd/system/multi-user.target.wants/autofs.service to /usr/lib/systemd/system/autofs.service.
[root@service ~]# systemctl status autofs
● autofs.service - Automounts filesystems on demand
Loaded: loaded (/usr/lib/systemd/system/autofs.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2023-03-22 22:53:49 CST; 4s ago
三、挂载效果验证
接下来,对autofs服务的挂载验证。
先来看下磁盘空间,此时并未有镜像文件挂载上去:
[root@service ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 282M 0 282M 0% /dev
tmpfs 294M 0 294M 0% /dev/shm
tmpfs 294M 5.6M 288M 2% /run
tmpfs 294M 0 294M 0% /sys/fs/cgroup
/dev/mapper/centos_asdfv-root 17G 2.9G 15G 17% /
/dev/sda1 1014M 137M 878M 14% /boot
tmpfs 59M 0 59M 0% /run/user/0
当我们使用cd命令进入到自定义的挂载目录后,此时再看磁盘空间,发现已自动将/dev/sr0
挂载到/media/iso
目录上:
[root@service ~]# cd /media/iso
[root@service iso]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 282M 0 282M 0% /dev
tmpfs 294M 0 294M 0% /dev/shm
tmpfs 294M 5.6M 288M 2% /run
tmpfs 294M 0 294M 0% /sys/fs/cgroup
/dev/mapper/centos_asdfv-root 17G 2.9G 15G 17% /
/dev/sda1 1014M 137M 878M 14% /boot
tmpfs 59M 0 59M 0% /run/user/0
/dev/sr0 4.4G 4.4G 0 100% /media/iso
[root@service iso]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
autofs的默认挂载超时时间为300秒,可在配置文件/etc/autofs.conf
中看到:
# timeout - set the default mount timeout in secons. The internal
# program default is 10 minutes, but the default installed
# configuration overrides this and sets the timeout to 5
# minutes to be consistent with earlier autofs releases.
#
timeout = 300
此外,我们也可以在auto.master
设置自定义挂载点时同时指定超时时间(10秒):
[root@service ~]# vi /etc/auto.master
/media /etc/iso.misc --timeout=10
[root@service ~]# systemctl restart autofs
四、总结
对于经常需要挂载的介质资源,我们就可以使用autofs
服务来进行自动挂载,既节省挂载操作时间又能节省相关网络或服务器性能资源。服务的配置较为简单,简单几行就能立马实现自动挂载,方便我们日常的运维操作。