我使用slurm,我希望我的deamon在systemd中等待我的nfs mount。
这是我的slurmd.service:
[Unit]
Description=Slurm node daemon
After=network.target nfs-client.target nfs-client.service
ConditionPathExists=/etc/slurm/slurm.conf
[Service]
Type=forking
EnvironmentFile=-/etc/sysconfig/slurmd
ExecStart=/usr/sbin/slurmd $SLURMD_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
PIDFile=/var/run/slurmd.pid
KillMode=process
LimitNOFILE=51200
LimitMEMLOCK=infinity
LimitSTACK=infinity
[Install]
WantedBy=multi-user.target
我希望我的服务在我的nfs完全组装时运行。我的nfs位于/ nfs中 因为我的网络很慢而且我的nfs很大,我需要等待1分钟,因为我的nfs完全组装好了。
因为我需要在/ nfs / slurm文件夹中写入文件 实际上当centos开始和slurmd deamon开始我有这个错误" / nfs / slurm没有这样的文件或文件夹"
我尝试使用PathExist参数,但没有工作和TimeoutStartSec,但没有工作,我的deamon运行,我有这个错误。
感谢你的帮助。
答案 0 :(得分:0)
编写一个脚本,检查nfs
挂载是否可用,否则sleep
X
秒。然后在ExecStartPre=
systemd
服务文件中使用此脚本。
$ cat /usr/local/bin/checkNFSMount
#!/bin/bash
if [ -d /nfs/slurm ]; then
exit 0;
else
sleep 20;
exit 0;
fi
在systemd
服务文件中:
ExecStartPre=/usr/local/bin/checkNFSMount
ExecStart=/usr/sbin/slurmd $SLURMD_OPTIONS
了解ExecStartPre
:here。
答案 1 :(得分:0)
Systemd有RequiresMountsFor。
您可以将以下行添加到slurmd.service的[Unit]部分。
RequiresMountsFor=/nfs
请记住,如果您使用简历并暂停功能,则ResumeTimeout必须大于恢复时间+ nfs挂载时间。