尽管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
答案 0 :(得分:0)
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
中的设置。