Autofs

Autofs


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


Autofs的简介

Autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。将信息填入/etc/fstab文件后,系统在每次开机时都自动将其挂载,而Autofs服务程序则是在用户需要使用该文件系统时才会动态挂载,从而节约了网络资源和服务器硬件资源的开销。


Autofs的工作原理

Autofs 是一项可自动挂载相应文件系统的客户端服务,以下是协同工作以完成自动挂载的组件:

  • automount 命令
  • autofs 文件系统
  • automountd 守护进程

自动挂载服务 svc:/system/filesystem/autofs 是在系统启动时调用的,它可读取主映射文件 auto_master 以创建最初的一组 autofs 挂载。这些 autofs 挂载在启动时不会自动挂载。这些挂载是一些点,以后将会在这些点之下挂载文件系统。这些点也称为触发节点。

设置 autofs 挂载后,这些挂载可以触发在其下挂载文件系统。例如,当 autofs 收到对当前尚未挂载的文件系统的访问请求时,autofs 会调用 automountd,实际上由该命令挂载请求的文件系统。

初始挂载 autofs 挂载后,必要时会使用 automount 命令更新 autofs 挂载。该命令将比较 auto_master 映射中的挂载列表和挂载表文件 /etc/mnttab中的已挂载文件系统的列表。然后,automount 会做出相应更改。该进程允许系统管理员更改 auto_master 中的挂载信息,并使 autofs 进程可以使用这些更改,而无需停止并重新启动 autofs 守护进程。挂载文件系统后,在自动取消挂载文件系统之前,进一步进行访问不需要 automountd 执行任何操作。与 mount 不同,automount 并不会从 /etc/fstab 文件(该文件特定于每台计算机)中读取要挂载的文件系统列表(在NFS这类网络文件系统中,配置在/etc/fstab 里无法达到开机自启的目的,因为电脑开机会去读/etc/fstab ,但此时网络并未启动,所以无法达到开机挂载的目的)。在域中或在计算机上,automount 命令是通过名称空间或本地文件进行控制的。

Autofs的工作方式

自动挂载守护进程 automountd 是在引导时由服务 svc:/system/filesystem/autofs 启动的。此服务还运行 automount 命令,该命令读取主映射并安装 autofs 挂载点。

img

Autofs 是支持自动挂载和取消挂载的内核文件系统。

请求访问 autofs 挂载点处的文件系统时,将发生下列情况:

  • Autofs 拦截请求。
  • Autofs 将消息发送到 automountd,以便挂载请求的文件系统。
  • automountd 在映射中查找文件系统信息,创建触发节点并执行挂载。
  • Autofs 允许继续处理被拦截的请求。
  • 当文件系统在一段时间内没有活动后,Autofs 将取消挂载该文件系统。

注:不应手动挂载或取消挂载通过 autofs 服务管理的挂载。即使手动操作成功,autofs 服务也不会检查是否已取消挂载该对象,从而可能导致不一致。重新引导时将清除所有 autofs 挂载点。

Autofs如何启动导航进程(主映射)

automount 命令在系统启动时读取主映射,主映射中的项包括直接映射名或间接映射名、映射路径和映射的挂载选项。项的具体顺序并不重要,automount 会将主映射中的项与挂载表中的项进行比较,以生成最新列表。

img

Autofs的挂载过程

触发挂载请求时,autofs 服务执行的具体操作取决于自动挂载程序映射的配置方式。一般情况下,挂载过程对于所有挂载都是相同的。但是,最终结果会因指定的挂载点和映射的复杂性而异。从 Solaris 2.6 发行版开始,也对挂载过程进行了更改,使其包括触发节点的创建。


Autofs的优点

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

综上所诉,总结了以下两个优点:

  • 设置开机不一定要挂载的目录,当用的时候才实现自动挂载。

  • 用户不使用自动挂载的目录一段的时间,会自动卸载。(默认时间为5分钟)


Autofs的安装

准备工作:配置yum源,详情可见 yum的配置使用

[root@yqh ~]# yum -y install autofs

[root@yqh ~]# rpm -qa | grep autofs
libsss_autofs-2.2.3-20.el8.x86_64
autofs-5.1.4-43.el8.x86_64

Autofs的启动

[root@yqh ~]# systemctl start autofs

//使用enable --now可以设置为开机自动启动,并且立刻启动
[root@yqh ~]# systemctl enable --now autofs
Created symlink /etc/systemd/system/multi-user.target.wants/autofs.service → /usr/lib/systemd/system/autofs.service.

Autofs的配置

如果把挂载信息都写入到autofs服务的主配置文件中,会使主配置文件臃肿不堪,不利于管理和维护。因此在autofs的主配置文件中按照"挂载目录的上层目录子配置文件"的格式填写,具体的挂载信息写入到子配置文件中,方便日后管理和维护。

主配置文件auto.master

autofs需要从/etc/auto.master文件读取配置信息,主要用于指定文件系统的挂接点

挂载目录的上层目录      子配置文件
/media             /etc/auto.misc

子配置文件auto.misc

主要用于为auto.master提供挂接参数

注:可以任意命名,以.misc结尾即可,需在主配置文件中指定该文件。

挂载目录           挂载文件类型及权限               设备名称
cdrom     -fstype=iso9660,ro,nosuid,nodev     :/dev/sr0

#注:光盘设备的挂载目录为/media/cdrom,-fstype=ios9660表示以光盘格式挂载,ro、nosuid及nodev是挂载使用的权限,/dev/cdrom是挂载的设备名称。

Autofs的使用

实现光盘自动挂载

//查看光盘是否挂载
[root@yqh cdrom]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               883M     0  883M   0% /dev
tmpfs                  901M     0  901M   0% /dev/shm
tmpfs                  901M  8.6M  892M   1% /run
tmpfs                  901M     0  901M   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  1.5G   16G   9% /
/dev/sda1             1014M  179M  836M  18% /boot
tmpfs                  181M     0  181M   0% /run/user/0

//配置主配置文件
[root@yqh ~]# vim /etc/auto.master
/media  /etc/auto.misc

//配置子配置文件
[root@yqh ~]# vim /etc/auto.misc
cdrom           -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom

//重启服务
[root@yqh ~]# systemctl restart autofs

//进入/media查看是否有cdrom文件
[root@yqh ~]# cd /media/
[root@yqh media]# ls

//虽然没有cdrom文件夹,但是仍然可以进入
[root@yqh media]# cd cdrom
[root@yqh cdrom]# ls
AppStream  EULA              images      RPM-GPG-KEY-redhat-beta
BaseOS     extra_files.json  isolinux    RPM-GPG-KEY-redhat-release
EFI        GPL               media.repo  TRANS.TBL

//进入cdrom后发现光盘自动挂载上了
[root@yqh cdrom]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               883M     0  883M   0% /dev
tmpfs                  901M     0  901M   0% /dev/shm
tmpfs                  901M  8.6M  892M   1% /run
tmpfs                  901M     0  901M   0% /sys/fs/cgroup
/dev/mapper/rhel-root   17G  1.5G   16G   9% /
/dev/sda1             1014M  179M  836M  18% /boot
tmpfs                  181M     0  181M   0% /run/user/0
/dev/sr0               7.9G  7.9G     0 100% /media/cdrom
原文地址:https://www.cnblogs.com/yuqinghao/p/14535428.html