autofs可以用于计算集群吗?

autofs可以用于计算集群吗?

我计划在家里建立一个小型计算集群。我需要将服务器计算机上的 /usr/local 和 /opt 目录共享到多个计算节点。这些目录下有编译好的计算程序和库文件。我希望通过共享(计算节点挂载),所有节点都可以运行这些程序。

我的问题是,autofs 可以用于此目的吗?有人告诉我,使用 autofs 共享目录仅在请求时才可用。那么如果一个程序运行时需要一个共享库文件,这会是一个问题吗?

更新:

我已经安装了 NFS。尝试过 fstab 但没有运气。

1) ip:/usr/local /usr/local nfs rw,defaults 0 0 结果:机器启动时未挂载。但是,如果我在客户端计算机启动后使用 root 帐户运行“mount -a”,则可以正确安装它。

2)添加“_netdev”选项没有什么区别;

3)添加“x-systemd.automount”选项会产生不好的结果:机器无法从重新启动进入操作系统(debian 9):ip:/usr/local /usr/local nfs rw,auto,x-systemd。自动挂载 0 0

读完你的建议后,我尝试了“noauto”,但机器仍然无法启动进入操作系统并没有什么区别: ip:/usr/local /usr/local nfs rw,noauto,x-systemd.automount 0 0

我使用的是 Debian 9,它有 systemd 232。

任何想法?谢谢。

答案1

是的,autofs(也称为“automount”)适合您希望在多个计算节点之间共享 /usr/local 和 /opt 等目录的场景。

您还需要一个用于从服务器或分布式系统访问远程文件系统的协议,其中 NFS 可能是更简单的选择,但还有许多其他选择。 Autofs 可以帮助您在节点上安装这些共享。

如果您使用的是使用 systemd 的 Linux 发行版(我认为很可能是这种情况),您可以使用systemd 自动挂载单元为 /usr/local 和 /opt 的挂载配置 automount (= autofs),您实际上可以直接从 /etc/fstab 进行配置。

例如,如果您有一个 NFS 服务器“fserv1”并且正在使用其中的这两个只读挂载:

# /etc/fstab 中共享目录的条目:
fserv1:/export/usr_local /usr/local nfs ro 0 0
fserv1:/export/opt /opt nfs ro 0 0

然后,您可以通过添加noauto,x-systemd.automount挂载选项来配置 systemd 以自动挂载它们,如下所示:

# /etc/fstab 中共享目录的条目:
fserv1:/export/usr_local /usr/local nfs ro,noauto,x-systemd.automount  0 0
fserv1:/export/opt /opt nfs ro,noauto,x-systemd.automount  0 0

Arch Linux wiki 中的这篇文章有关配置 systemd 以自动挂载目录的更多详细信息。 (这些内容都不是特定于 Arch Linux 的,他们的 wiki 一般而言只是 Linux 文档的一个非常好的来源。)

关于您关于使用共享库计为触发自动挂载的访问的问题,是的,这将按预期工作。 autofs系统是在Linux内核内部实现的,因此对该目录下任何文件的任何访问都会触发挂载,并且只有在挂载完成后才继续进行文件访问。运行二进制文件或加载共享库都是正常的文件访问,都会按预期触发自动挂载。

如前所述,您仍然需要使用远程文件系统协议(例如 NFS),因此直接在启动时安装这些协议(完全跳过 autofs)绝对是一个选择...使用 autofs/automount 的主要优点是启动机器不会阻塞直到挂载准备好,或者如果挂载不可用(例如,如果服务器关闭或网络中断)则失败,并且 autofs/automount 可能会重试挂载以前不可用的文件系统,从而可能提高可靠性系统的。

相关内容