zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    自建 IPA 分发平台
    一个优雅的占位图解决方案。适用于 UITableView 和 UICollectionView。
    Vuejs2.0购物车和地址选配学习笔记
    UIWebView 加 MJRefresh 同时解决底部黑影问题
    UIWebView 不自动全屏播放视频
    左右分页按钮的集合视图控件。用于快速编写出集合视图上分页多按钮点击事件!
    课程总结
    IO流实训
    事件处理
    变色
  • 原文地址:https://www.cnblogs.com/yuqinghao/p/14535428.html
Copyright © 2011-2022 走看看