跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 储存管理指南 / 网络储存 / 使用 Autofs 按需挂载
适用范围 SUSE Linux Enterprise Server 15 SP4

21 使用 Autofs 按需挂载

autofs 是一个可根据需要自动挂载指定目录的程序。它基于一个内核模块运行以实现高效率,并且可以同时管理本地目录和网络共享。这些自动挂载点仅会在被访问时挂载,一定时间内不活动后即会被卸载。这种按需行为可节省带宽,并实现比 /etc/fstab 管理的静态挂载更高的性能。虽然 autofs 是控制脚本,但 automount 才是实际执行自动挂载的命令(守护程序)。

21.1 安装

SUSE Linux Enterprise Server 上默认未安装 autofs。要使用它的自动装载功能,请先使用下面的命令安装该程序

> sudo zypper install autofs

21.2 配置

您需要使用 vim 等文本编辑器编辑 autofs 的配置文件来手动配置它。配置 autofs 有两个基本步骤 — master 映射文件和特定映射文件。

21.2.1 Master 映射文件

autofs 的默认 master 配置文件是 /etc/auto.master。可通过在 /etc/sysconfig/autofs 文件中更改 DEFAULT_MASTER_MAP_NAME 选项的值来更改其位置。以下是 SUSE Linux Enterprise Server 中默认 master 映射文件的内容:

#
# Sample auto.master file
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).1
#
#/misc  /etc/auto.misc2
#/net -hosts
#
# Include /etc/auto.master.d/*.autofs3
#
#+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.master4

1

autofs 手册页 (man 5 autofs) 提供了许多有关该自动挂载器映射格式的重要信息。

2

虽然这些内容默认会被注释掉 (#),但它依然是简单的自动挂载器映射语法示例。

3

如果您需要将 master 映射分割成几个文件,请将该行取消注释,并将映射(后缀为 .autofs)置于 /etc/auto.master.d/ 目录中。

4

+auto.master 可确保使用 NIS(请参见第 4.1 节 “配置 NIS 服务器”了解 NIS 的更多信息)的用户仍可找到其 master 映射。

auto.master 中的项有三个字段,语法如下:

mount point      map name      options
mount point

要在其中挂载 autofs 文件系统的基本位置,例如 /home

map name

挂载时所用映射源的名称。有关映射文件的语法,请参见第 21.2.2 节 “映射文件”

options

这些选项(如指定)将作为默认值应用于给定映射中的所有项。

提示
提示:更多信息

有关选用 map-typeformatoptions 的特定值的更多详细信息,请参见 auto.master 手册页 (man 5 auto.master)。

auto.master 中的下面一项指示 autofs 查看 /etc/auto.smb,并在 /smb 目录中创建挂载点:

/smb   /etc/auto.smb

21.2.1.1 直接挂载

直接挂载会在相关映射文件内的指定路径创建挂载点。这种方式不是在 auto.master 中指定挂载点,而是用 /- 替换挂载点字段。例如,下行指示 autofsauto.smb 中指定的位置创建挂载点:

/-        /etc/auto.smb
提示
提示:不含完整路径的映射

如果指定映射文件时未包含其完整本地或网络路径,系统会使用名称服务转换 (NSS) 配置寻找该映射文件。

/-        auto.smb

21.2.2 映射文件

重要
重要:其他映射类型

虽然文件是使用 autofs 自动挂载的最常见的映射类型,但是还有其他一些类型。映射规范可以是命令的输出,也可以是 LDAP 或数据库中查询的结果。有关映射类型的更多详细信息,请参见 man 5 auto.master 手册页。

映射文件指定(本地或网络)来源位置,以及在本地挂载来源的挂载点。映射的一般格式与 master 映射相似。区别在于 options 位于 mount point 与 location 之间,而不是该项的末尾:

mount point      options      location

确保映射文件未标记为可执行文件。可通过执行 chmod -x MAP_FILE 去除可执行文件位。

mount point

指定将来源位置挂载到何处。这可以是要添加到 auto.master 中所指定基础挂载点的单个目录名称(所谓的间接挂载),也可以是挂载点的完整路径(直接挂载,请参见第 21.2.1.1 节 “直接挂载”)。

options

为相关项指定可选的挂载选项列表,挂载选项以逗号分隔。如果 auto.master 还包含此映射文件的选项,这些选项会附加在后面。

location

指定要挂载的文件系统来自何处。通常是 NFS 或 SMB 卷,常用表示法是主机名:路径名称。如果要挂载的文件系统以“/”开头(例如本地 /dev 项或 smbfs 共享),需要在前面加一个冒号“:”,例如 :/dev/sda1

21.3 操作和调试

本节介绍如何控制 autofs 服务操作,以及如何在调整该自动挂载器操作时查看更多调试信息。

21.3.1 控制 autofs 服务

autofs 服务的操作由 systemd 控制。autofssystemctl 命令的一般语法为

> sudo systemctl SUB_COMMAND autofs

其中,SUB_COMMAND 是下列项目之一:

enable

在引导时启动该自动挂载器守护程序。

start

启动该自动挂载器守护程序。

stop

停止该自动挂载器守护程序。自动挂载点将不再可访问。

status

打印 autofs 服务的当前状态以及相关日志文件的部分内容。

restart

停止然后启动该自动挂载器,以便终止所有正在运行的守护程序,然后再启动新的守护程序。

reload

检查当前的 auto.master 映射,重启动项已更改的守护程序,并为新项启动新守护程序。

21.3.2 调试自动挂载器问题

如果您在使用 autofs 挂载目录时遇到问题,手动运行 automount 守护程序并查看其输出消息将非常有用:

  1. 停止 autofs

    > sudo systemctl stop autofs
  2. 从一个终端的前台手动运行 automount,生成详细输出。

    > sudo automount -f -v
  3. 从另一个终端上尝试通过访问挂载点(例如,通过 cdls)挂载自动挂载文件系统。

  4. 从第一个终端检查 automount 的输出,以了解有关挂载为何失败或者甚至为何未尝试挂载的更多信息。

21.4 自动挂载 NFS 共享

下面的过程说明了如何配置 autofs 以自动挂载网络上可用的 NFS 共享。该过程要用到前面提到的信息,并假设您熟悉 NFS 导出。有关 NFS 的更多信息,请参见第 19 章 “通过 NFS 共享文件系统

  1. 编辑 master 映射文件 /etc/auto.master

    > sudo vim /etc/auto.master

    /etc/auto.master 末尾为新的 NFS 挂载添加一条新项:

    /nfs      /etc/auto.nfs      --timeout=10

    此指令指示 autofs 基本挂载点是 /nfs,NFS 共享在 /etc/auto.nfs 映射中指定,并且此映射中的所有共享在 10 秒不活动后将自动卸载。

  2. 为 NFS 共享创建新的映射文件:

    > sudo vim /etc/auto.nfs

    对每个 NFS 共享,/etc/auto.nfs 通常都会包含单独的一行。有关其格式,请参见第 21.2.2 节 “映射文件”。添加下行,指出挂载点及 NFS 共享网络地址:

    export      jupiter.com:/home/geeko/doc/export

    上面的行表示当收到请求时,系统会将 jupiter.com 主机上的 /home/geeko/doc/export 目录自动挂载到本地主机上的 /nfs/export 目录(/nfs 取自 auto.master 映射)。/nfs/export 目录将由 autofs 自动创建。

  3. (选择性)如果您先前以静态方式挂载了该 NFS 共享,请将 /etc/fstab 中的相关行注释掉。该行应类似于:

    #jupiter.com:/home/geeko/doc/export /nfs/export nfs defaults 0 0
  4. 重新装载 autofs 并检查它是否正常工作:

    > sudo systemctl restart autofs
    # ls -l /nfs/export
    total 20
    drwxr-xr-x  5 1001 users 4096 Jan 14  2017 .images/
    drwxr-xr-x 10 1001 users 4096 Aug 16  2017 .profiled/
    drwxr-xr-x  3 1001 users 4096 Aug 30  2017 .tmp/
    drwxr-xr-x  4 1001 users 4096 Apr 25 08:56 manual/

    如果您能看到远程共享上的文件列表,则表示 autofs 工作正常。

21.5 高级主题

本节讨论的主题超出了 autofs 基本介绍的范畴 — 自动挂载网络上可用的 NFS 共享、在映射文件中使用通配符,以及特定于 CIFS 文件系统的信息。

21.5.1 /net 挂载点

如果您使用了许多 NFS 共享,这个助手挂载点将非常有用。/net 会根据需要自动挂载本地网络上的所有 NFS 共享。该项在 auto.master 文件中已经存在,因此,您只需将其取消注释,然后重启动 autofs 即可:

/net      -hosts
> sudo systemctl restart autofs

例如,如果您有名为 jupiter 的服务器以及名为 /export 的 NFS 共享,您可以在命令行上键入

> sudo cd /net/jupiter/export

来挂载它。

21.5.2 使用通配符自动挂载子目录

如果您的某个目录含有多个子目录,并且您需要单个自动挂载这些子目录(一般情况下,该目录是包含各个用户主目录的 /home 目录),autofs 提供了便捷的解决方案。

如果这些子目录是主目录,则在 auto.master 中添加下行:

/home      /etc/auto.home

现在,您需要在 /etc/auto.home 文件中添加正确的映射,以便自动挂载用户的主目录。一种方法是为每个目录创建单独的项:

wilber      jupiter.com:/home/wilber
penguin      jupiter.com:/home/penguin
tux      jupiter.com:/home/tux
[...]

这种方法非常麻烦,因为您需要在 auto.home 中管理用户列表。您可以使用星号“*”取代挂载点,使用符号“&”取代要挂载的目录。

*      jupiter:/home/&

21.5.3 自动挂载 CIFS 文件系统

如果想自动挂载 SMB/CIFS 共享(有关 SMB/CIFS 协议的更多信息,请参见第 20 章 “Samba),需要修改映射文件的语法。在 option 字段中添加 -fstype=cifs,并在共享位置前面加上一个冒号“:”。

mount point      -fstype=cifs      ://jupiter.com/export