SLURM通过srun/sbatch无法访问其他节点挂载磁盘问题求助
SLURM作业无法访问NFS挂载目录的问题排查与解决
问题原因
- 作业调度节点不匹配:srun/sbatch默认会根据集群负载调度作业到任意计算节点,如果目标节点没有挂载
/mnt/node1这个NFS目录,就会出现"No such file or directory"错误。而salloc交互式作业可能手动指定了node1节点,或恰好分配到了已挂载该目录的节点,因此能正常访问。 - NFS挂载范围有限:
/mnt/node1仅在主节点和node1本地完成挂载,未在集群所有计算节点上配置自动挂载,导致调度到其他节点的作业无法找到该目录。
解决方法
方法一:指定作业运行节点
强制让srun/sbatch作业在node1节点执行,避免调度到未挂载目录的节点:
- 用srun执行时添加节点约束:
srun --nodelist=node1 entry.sh - 编写sbatch脚本时,在开头添加节点指定配置:
#SBATCH --nodelist=node1
方法二:全集群配置NFS自动挂载
在所有计算节点上配置/mnt/node1的自动挂载,确保任何节点都能访问该目录:
- 编辑每个计算节点的
/etc/fstab文件,添加NFS共享条目(替换成实际的NFS服务器导出路径):main-node:/exported/node1/path /mnt/node1 nfs defaults 0 0 - 在每个计算节点执行命令完成挂载:
mount /mnt/node1
方法三:检查SLURM挂载配置
确认SLURM允许作业继承NFS挂载:
- 查看集群
slurm.conf配置文件中的MountFlags参数,确保没有设置禁止NFS挂载的选项(如slave或private),若有则调整为shared以允许挂载传递。
内容的提问来源于stack exchange,提问作者Emma Athan
相关产品推荐
相关产品推荐

