跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.6

23 按需挂载与 autofs 编辑源文件

摘要

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

23.1 安装 编辑源文件

autofs 默认情况下未安装在 openSUSE Leap 上。要使用其自动挂载功能,请首先使用以下命令安装它:

> sudo zypper install autofs

23.2 配置 编辑源文件

您需要通过使用文本编辑器(例如 vim)编辑其配置文件来手动配置 autofs。配置 autofs 有两个基本步骤:主映射文件和特定的映射文件。

23.2.1 主映射文件 编辑源文件

autofs 的默认主配置文件是 /etc/auto.master。可以通过更改 /etc/sysconfig/autofs 中的 DEFAULT_MASTER_MAP_NAME 选项的值来更改其位置。以下是 openSUSE Leap 的默认内容:

#
# 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

如果您需要将主映射拆分为多个文件,请取消注释该行,并将映射(后缀为 .autofs)放在 /etc/auto.master.d/ 目录中。

4

+auto.master 确保使用 NIS 的用户 (请参阅 “安全和加固指南”一书,第 3 章“使用 NIS”,第 3.1 节“配置 NIS 服务器” 以获取有关 NIS 的更多信息) 仍然可以找到他们的主映射。

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

mount point      map name      options
挂载点

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

映射名称

用于挂载的映射源的名称。有关映射文件的语法,请参阅 第 23.2.2 节,“映射文件”

options

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

Tip
提示:更多信息

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

auto.master 中的以下条目告诉 autofs/etc/auto.smb 中查找,并在 /smb 目录中创建挂载点:

/smb   /etc/auto.smb

23.2.1.1 直接挂载 编辑源文件

直接挂载在相关映射文件中指定的路径处创建挂载点。不要在 auto.master 中指定挂载点,而是将挂载点字段替换为 /-。例如,以下行告诉 autofsauto.smb 中指定的位置创建挂载点:

/-        /etc/auto.smb
Tip
提示:没有完整路径的映射

如果未指定映射文件的完整本地或网络路径,则使用名称服务切换 (NSS) 配置找到它:

/-        auto.smb

23.2.2 映射文件 编辑源文件

Important
重要提示:其他类型的映射

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

映射文件指定(本地或网络)源位置以及在本地挂载源的位置。映射的一般格式与主映射类似。不同之处在于,选项 出现在挂载点和位置之间,而不是条目末尾:

mount point      options      location

确保映射文件未标记为可执行。您可以执行 chmod -x MAP_FILE 来删除可执行位。

挂载点

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

options

指定相关条目的可选逗号分隔的挂载选项列表。如果 auto.master 也包含此映射文件的选项,则这些选项将被附加。

位置

指定要挂载文件系统的位置。通常是采用通常表示法 host_name:path_name 的 NFS 或 SMB 卷。如果要挂载的文件系统以 '/' 开头(例如本地 /dev 条目或 smbfs 共享),则需要添加冒号符号 ':',例如 :/dev/sda1

23.3 操作和调试 编辑源文件

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

23.3.1 控制 autofs 服务 编辑源文件

autofs 服务的操作由 systemd 控制。 systemctl 命令的 autofs 一般语法是:

> sudo systemctl SUB_COMMAND autofs

其中 SUB_COMMAND 是以下之一:

enable

在启动时启动自动挂载器守护进程。

start

启动自动挂载器守护进程。

stop

停止自动挂载器守护进程。自动挂载点不可访问。

status

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

重新启动

停止并启动自动挂载器,终止所有正在运行的守护进程并启动新的守护进程。

重新加载

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

23.3.2 调试自动挂载器问题 编辑源文件

如果您在使用 autofs 挂载目录时遇到问题,运行 automount 守护进程并观察其输出消息会很有帮助:

  1. 停止 autofs

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

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

  4. 检查第一个终端中 automount 的输出,以获取有关挂载失败或未尝试挂载原因的更多信息。

23.4 自动挂载 NFS 共享 编辑源文件

以下过程说明了如何配置 autofs 以自动挂载网络上可用的 NFS 共享。它使用了上述信息,并假定您熟悉 NFS 导出。有关 NFS 的更多信息,请参阅 第 22 章,使用 NFS 共享文件系统

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

    > sudo vim /etc/auto.master

    /etc/auto.master 的末尾添加一个新的条目:

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

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

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

    > sudo vim /etc/auto.nfs

    /etc/auto.nfs 通常为每个 NFS 共享包含一行。其格式在 第 23.2.2 节,“映射文件” 中描述。添加描述挂载点和 NFS 共享网络地址的行:

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

    以上行表示 /home/geeko/doc/export 目录在 jupiter.com 主机上将在请求时自动挂载到本地主机上的 /nfs/export 目录(/nfs 来自 auto.master 映射)。autofs 会自动创建 /nfs/export 目录。

  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 正在正常工作。

23.5 高级主题 编辑源文件

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

23.5.1 /net 挂载点 编辑源文件

如果使用大量的 NFS 共享,此辅助挂载点很有用。/net 会按需自动挂载本地网络上的所有 NFS 共享。该条目已存在于 auto.master 文件中,因此您只需取消注释它并重新启动 autofs 即可:

/net      -hosts
> sudo systemctl restart autofs

例如,如果您有一个名为 jupiter 的服务器,其中包含名为 /export 的 NFS 共享,则可以通过键入以下命令来挂载它:

> sudo cd /net/jupiter/export

在命令行中。

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

23.5.3 自动挂载 CIFS 文件系统 编辑源文件

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

mount point      -fstype=cifs      ://jupiter.com/export
打印此页面