如何修复Slurm中的“ slurmd.service:无法打开PID文件”错误

时间:2019-06-12 01:51:18

标签: pid status slurm systemctl

尽管SLURM可以很好地完成作业提交,运行和排队,但下面却出现了一个小错误。

sudo systemctl status slurmd

Jun 12 10:20:40 noki-System-Product-Name systemd[1]: slurmd.service: Can't open PID file /var/run/slurm-llnl/slurmd.pid (yet?) after start: No such file or directory

sudo systemctl status slurmctld

Jun 12 10:20:40 noki-System-Product-Name systemd[1]: slurmd.service: Can't open PID file /var/run/slurm-llnl/slurmd.pid (yet?) after start: No such file or directory

我按照以下步骤安装了指南

file:///home/noki/Downloads/Webinar_2_Slurm_II--Ubuntu16.04_and_18.04.pdf

此问题可能来自slurm.conf文件的所有权吗?

这是我的slurm.conf和slur * .pid的所有权

# slurm.conf file generated by configurator easy.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ControlMachine=noki-System-Product-Name
#ControlAddr=
# 
#MailProg=/bin/mail 
MpiDefault=none
#MpiParams=ports=#-# 
ProctrackType=proctrack/pgid
ReturnToService=1
SlurmctldPidFile=/var/run/slurm-llnl/slurmctld.pid
#SlurmctldPort=6817 
SlurmdPidFile=/var/run/slurm-llnl/slurmd.pid
#SlurmdPort=6818 
SlurmdSpoolDir=/var/spool/slurmd
SlurmUser=noki
#SlurmdUser=root
StateSaveLocation=/var/spool/slurm-llnl
SwitchType=switch/none
TaskPlugin=task/none
# 
# 
# TIMERS 
#KillWait=30 
#MinJobAge=300 
#SlurmctldTimeout=120 
#SlurmdTimeout=300 
# 
# 
# SCHEDULING 
FastSchedule=1
SchedulerType=sched/backfill
SelectType=select/linear
#SelectTypeParameters=
# 
# 
# LOGGING AND ACCOUNTING 
AccountingStorageType=accounting_storage/none
ClusterName=linux
#JobAcctGatherFrequency=30 
JobAcctGatherType=jobacct_gather/none
#SlurmctldDebug=3 
SlurmctldLogFile=/var/log/slurm-llnl/SlurmctldLogFile
#SlurmdDebug=3 
SlurmdLogFile=/var/log/slurm-llnl/SlurmdLogFile
# 
# 
# COMPUTE NODES 
NodeName=noki-System-Product-Name CPUs=4 RealMemory=6963 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN 
PartitionName=debug Nodes=noki-System-Product-Name Default=YES MaxTime=INFINITE State=UP
total 8
-rw-r--r-- 1 noki root 6 Jun 12 10:20 slurmctld.pid
-rw-r--r-- 1 root root 6 Jun 12 10:20 slurmd.pid

2 个答案:

答案 0 :(得分:0)

  1. 我记得那些文件必须由slurm拥有,而不是其他任何用户
  2. 如果(1)无效,您是否正在运行与所引用示例相同的Ubuntu? 如果不是,请重新检查slurmd.pid文件中的slurm.conf位置是否与slurmd.service中的位置相同。这些要求取决于发行版。 尝试运行:
# looking for slurmd.service file
find / -name "slurmd.service"
# assuming you found it somewhere. Check the content:
cat /full_path_to/slurmd.service 

找到查找PID文件的确切位置。

如果需要:对slurmctld.service文件和SlurmctldPidFile值重复相同的操作。

检查并编辑slurm.conf后,将其复制到每个节点并重新启动服务。

答案 1 :(得分:0)

实际上,这可能比开始时会出现更大的问题。就您而言,我认为您已经在下面实施了我的建议中的至少一部分,但是无论如何我都会回答这个问题,以使其他人(例如我)可以通过Google找到该问题。

第一步是检查PID文件是否确实存在于slurm.conf中配置的位置。如果是,请执行以下操作:验证systemd的服务定义单元文件也引用了相同的PID文件。如果是这样,并且您的服务正常启动,则可以忽略该消息-这仅仅是一个时间问题; systemd可能会在创建PID文件之前检查它。

如果PID文件不存在,或者单元文件指向其他位置,则systemd将无法正确识别该守护程序已启动,并且可能会超时并报告该守护程序已失败,即使它实际上正在运行

原因通常是权限问题。示例配置中PID文件的位置通常在/ var / run中。该目录只能是root用户可写的,但该守护程序将以用户slurm的身份运行。

要解决此问题,您需要在/ var / run下创建一个具有正确所有权的子目录(最好是在/ run下,因为/ var / run已过时)。此时,您将遇到下一个问题:/ run是一个tmpfs目录,因此在每次重新启动时都会被删除。这意味着您不能简单地使用mkdir,chown和chmod来创建目录。

解决方案(答案是https://askubuntu.com/questions/303120/how-folders-created-in-var-run-on-each-reboot的提示):

使用以下内容创建文件/etc/tmpfiles.d/slurm.conf:

d /run/slurm 0770 root slurm -

最后,您需要向Slurm和systemd告知新位置。

在slurm.conf中,只需更新PID文件条目即可。

要向systemd告知新位置,您需要修改服务定义以更改systemd将在何处查找PID文件。您可以直接修改文件/usr/lib/systemd/system/slurm*.service,但是更好的方法是覆盖/etc/systemd/system/slurm*.service.d

中的设置。