AMD—AutoMount 守护进程
在 Linux 系统之间共享文件的标准协议是网络文件系统 (NFS)。这个起源于 80 年代中期 Sun 公司的协议确实完成了工作,但它有许多缺陷,可能会给系统管理员带来麻烦。虽然有一些替代方案,例如 Andrew 文件系统 (AFS) 要好得多,但我们大多数人目前仍然受限于 NFS——它是标准的,在阳光下的每个平台上都可用,并且是免费的。幸运的是,程序 AMD (AutoMount 守护进程) 的存在使 NFS 的使用变得容易得多。
AMD 是一个自动挂载器——即,它维护一个已挂载文件系统的缓存。至少,在任何使用普通 NFS 挂载的地方都应该使用 AMD,因为 AMD 使您的网络更加可靠。由于 NFS 的无状态设计,如果分区的服务器宕机,任何尝试访问 NFS 分区上数据的进程都将被阻止。AMD 通过跟踪哪些机器宕机和哪些机器无法访问来改善这种情况。由于 AMD 不像 NFS 那样立即挂载每个分区或保持它们挂载,因此您可以节省否则将用于来自未使用分区的内核和网络流量的开销,从而提高机器性能。
使用 AMD,配置和管理变得更加容易。您可以使用单个集中维护的 AMD 映射,而不是在每台主机上都需要不同的 fstab 文件,该映射可以作为文件通过 rdist 或 NIS 映射甚至 Hesiod 分发。例如,我们有 100 多台机器,使用一个集中维护的 AMD 映射。一个映射文件肯定比 100 个更容易编辑。
AMD 的另一个方便功能是动态映射,它可以根据任意数量的标准进行更改。单个映射可以指向多个位置,允许您执行普通 NFS 无法实现的操作。例如,如果您有多个复制的服务器,您可以设置一个映射,以便如果一个服务器宕机,AMD 将自动使用其他服务器之一挂载文件。
AMD 通过模拟 NFS 服务器来运行。当访问文件时,AMD 使用其映射来决定该文件实际位于何处。然后,如有必要,它使用常规 NFS 挂载该分区,并模拟指向实际位置的符号链接。所有 AMD 操作都是透明完成的,因此从用户的角度来看,她只是在访问指向常规用户文件的常规 Unix 符号链接。AMD 将其 NFS 挂载维护在临时目录下,默认情况下称为“a”,这个名称选择可能会导致问题。例如,目录 /home/crosby 的实际物理路径是 /a/home/crosby,但 /a/home/crosby 只有在最近有人访问过 /home/crosby(或同一分区上的其他路径)时才存在。因此,用户永远不应该通过 /a 显式访问文件。
图 1 展示了涉及的三种挂载类型:本机分区、AMD 伪分区和幕后的 NFS 分区。
.................. . NFS Partition . \-+-a---home . | .....^............ +-bin : | : |......... |. AMD . +-home . .........
AMD 在幕后还做了一些其他事情来保持操作健康。首先,它定期向它知道的所有服务器发送 rpc 请求,以查看它们是否处于活动状态。如果一个服务器没有活动,AMD 将不会尝试挂载它。这种检查还允许 AMD 提供对复制文件系统的访问;也就是说,您可以设置多个冗余服务器,如果一个服务器宕机,AMD 将尝试挂载另一个服务器。
要使用 AMD,您必须首先构建一个或多个 AMD 映射。这些映射是配置文件,它告诉 AMD 具体要做什么。许多任务可以通过 AMD 映射完成,记录所有这些任务将需要不止一篇文章。列表 1 提供了一个示例 AMD 映射,其中包含一些常见任务,并在每个条目下都有注释来解释它。一般来说,映射由两个字段组成:名称,它被转换为 AMD 挂载点下的路径名,以及选项,它指定如何处理此路径名。
我在列表 1 中仅仅触及了 AMD 功能的表面。AMD 的用途几乎是无限的——正如手册页所说,“充分利用所有功能,最有用的是奇异的想象力。” 该软件包附带的文档提供了编写映射的完整说明。
要运行 AMD,您只需在提示符下键入 amd,并在命令行上提供挂载点和映射。例如,如果列表 1 中的映射名为 /etc/map.main,并且还存在名为 /etc/map.silly 的映射,要执行 AMD,您将键入
amd /u /etc/map.main /silly /etc/map.silly
最好在您的 rc 文件中包含此语句。
amd 命令有许多可用选项。两个有用的选项是指定 NFS 挂载点和超时时间段的能力。程序 amq 帮助控制 AMD。例如,amq 可以强制 AMD 卸载文件系统并刷新缓存(在调试 NFS 问题时很有用)。amq 的手册页提供了对其所有功能的完整描述。
由于 AMD 只是常规 NFS 的前端,因此您必须担心与单独运行 NFS 时相同的问题——您必须确保导出及其选项是正确的。解释 NFS 超出了本文的范围;但是,如果您不熟悉 NFS 的基础知识,请参阅第 FIXME 页上的 NFS 资源框。
