跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 管理指南 / 服务 / 使用 Autofs 按需装入
适用范围 SUSE Linux Enterprise Server 12 SP5

30 使用 Autofs 按需装入

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

30.1 安装

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

sudo zypper install autofs

30.2 配置

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

30.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(请参见Section 3.1, “Configuring NIS Servers”了解 NIS 的更多信息)的用户仍可找到其 master 映射。

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

mount point      map name      options
mount point

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

map name

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

options

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

提示
提示:更多信息

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

auto.master 中下面的项指示 autofs 查看 /etc/auto.smb,并在 /smb 目录中创建安装点。

/smb   /etc/auto.smb

30.2.1.1 直接装入

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

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

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

/-        auto.smb

30.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 中所指定基础安装点的单个目录名称(所谓的间接装入),也可以是安装点的完整路径(直接装入,请参见第 30.2.1.1 节 “直接装入”)。

options

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

location

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

30.3 操作和调试

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

30.3.1 控制 autofs 服务

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

sudo systemctl SUB_COMMAND autofs

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

enable

在引导时启动该自动装入器守护程序。

start

启动该自动装入器守护程序。

stop

停止该自动装入器守护程序。自动安装点将不再可访问。

status

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

restart

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

reload

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

30.3.2 调试自动装入器问题

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

  1. 停止 autofs

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

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

  4. 从第一个终端上检查 automount 的输出以了解更多信息,例如装入为何失败,或者为何甚至未尝试执行装入。

30.4 自动装入 NFS 共享

下面的过程说明了如何配置 autofs 以自动装入网络上可用的 NFS 共享。该过程要用到前面提到的信息,并假设您熟悉 NFS 导出步骤。有关 NFS 的更多信息,请参见第 28 章 “通过 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 通常都会包含单独的一行。有关其格式,请参见第 30.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  6 1001 users 4096 Oct 25 08:56 ./
    drwxr-xr-x  3 root root     0 Apr  1 09:47 ../
    drwxr-xr-x  5 1001 users 4096 Jan 14  2013 .images/
    drwxr-xr-x 10 1001 users 4096 Aug 16  2013 .profiled/
    drwxr-xr-x  3 1001 users 4096 Aug 30  2013 .tmp/
    drwxr-xr-x  4 1001 users 4096 Oct 25 08:56 SLE-12-manual/

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

30.5 高级主题

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

30.5.1 /net 安装点

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

/net      -hosts
systemctl restart autofs

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

# cd /net/jupiter/export

来装入它。

30.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/&

30.5.3 自动装入 CIFS 文件系统

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

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