为什么 make 作业无法找到自动挂载文件系统的依赖项?

为什么 make 作业无法找到自动挂载文件系统的依赖项?

......这个标题可能有点误导。

情况就是这样。我有一组 CentOS 4.x x86_64 系统,用作计算场。用户、工具和代码的目录是自动挂载的。作业被提交到农场 vi LSF。大多数时候,这一切都按预期工作,但是作业会定期失败,因为自动挂载器没有挂载请求的文件系统(或者挂载速度太慢,我不知道)。

这些工作基本上都是大make工作,定期会提交一个并失败,例如:

make: *** /home/qualifier/thing/otherthing/tim:
No such file or directory.  Stop.

然而如果你去的话ls /home/qualifier/thing/otherthing/tim,你会看到它就在那里。

如果在执行该操作后立即运行该作业(或执行其他操作来强制挂载 /home/qualifier(或自动挂载所要求的任何内容)),一切都会按预期工作。

该问题不仅限于 make 操作;尝试在自动挂载的文件系统上写入文件有时会失败,因为无法打开该文件(因为它“尚未存在”)。

nfs 文件服务器可以是 NetApp 设备,也可以是两个 CentOS 4.x nfs 文件服务器之一,具体取决于要求的内容,所以我认为这是客户端而不是服务器端。

我如何调整自动挂载程序以便在需要时可以挂载?

更新:更多详细信息

我可能应该强调一下,这个问题在我使用 Linux 的过程中一直是暂时的,从 RedHat 7.3 到 CentOS 4.x 流。我还没有在任何地方大量使用 5.x。

这个特定示例节点是 CentOS 4.8,运行 2.6.9-89.0.25.ELsmp,带有 autofs-4.1.3-238。软件方面,所有节点都是使用自动 Kickstart 环境构建的,并从同一个本地 yum 存储库提取更新,因此它们不应该有任何可测量的差异。硬件方面,它们大多是 Sun X2200-M2 系统,每个系统有 16GB 到 48GB 的​​ RAM;还有几台 HP DL585-G2 系统,有 32GB 的 RAM。

/etc/sysconfig/autofs 的内容(注释行除外)。请注意,唯一的自定义是--ghost添加DAEMONOPTIONS

LOCALOPTIONS=""
LDAPAUTOMASTER=""
UNDERSCORETODOT=1
DISABLE_DIRECT=1
ONE_AUTO_MASTER=0
GHOSTDIRS=""
BASEDN=
DAEMONOPTIONS="--ghost"

auto.master 和所有 auto.* 文件均通过 NIS 传送。

auto.master 中的示例条目:

/home auto.home

auto.home 中的示例条目:

jsmith fas2020-01:/vol/vol1/home/jsmith

唯一带有自动挂载选项的条目是临时数据挂载。这些挂载通常不会出现问题,因为几乎总是有运行需要它们的东西,但是为了完整性,我在这里包括它们:

tempdataS -tcp fas940-01:/vol/vol1/tempdata_H
tempdataH -tcp fas940-01:/vol/vol1/tempdata_H
tempdata -tcp pos-01:/mnt/array/tempdata
tempdata2 -tcp,noatime,rsize=32768,wsize=32768 pos-02:/mnt/array/tempdata

答案1

您应该挂载 NFS硬,fg,intr。据我所知,“bg”是默认值(请mount在访问自动挂载程序目录后检查)。

在这种情况下,对你来说最重要的选择可能是“韋克“(前台) - 挂载只有成功才算完成。由于您的进程依赖于该挂载,因此您应该设置该选项。在正常的服务器操作中,您不应该依赖 nfs,因此通常使用“bg”。

相关内容