Slurm控制器服务启动失败:单机部署Slurm 14.11.8遇报错求助
我之前在部署老版本Slurm时也碰到过类似的启动失败问题,针对你在Linux Mint 18.3上启动Slurm 14.11.8的slurmctld服务出现的exit-code报错,咱们可以按以下步骤逐步排查:
1. 查看详细错误日志
systemctl给出的报错信息太简略了,必须看具体的日志内容才能定位问题:
- 用systemd日志工具查看完整报错链:
journalctl -xeu slurmctld.service - 或者直接查看Slurm专属日志文件(路径可能因配置略有差异):
cat /var/log/slurm/slurmctld.log # 若路径不同,可尝试:cat /var/log/slurmctld.log
日志里通常会明确指出错误根源,比如配置文件语法错误、权限不足、端口冲突等。
2. 验证Slurm配置文件语法
slurm.conf的语法错误是最常见的启动失败原因,用官方提供的命令一键检查:
slurmctld -t
如果配置有问题,这个命令会直接输出错误行号和具体原因,比如节点名不匹配、参数值格式错误等。
3. 检查目录与文件权限
Slurm的运行用户(默认是slurm用户)需要对核心目录有读写权限:
- 控制节点状态目录:
/var/spool/slurmctld - 日志存储目录:
/var/log/slurm(或对应配置的日志路径)
执行以下命令检查并修复权限:
# 先查看当前权限 ls -ld /var/spool/slurmctld /var/log/slurm # 若属主不是slurm,修复权限 chown -R slurm:slurm /var/spool/slurmctld /var/log/slurm # 状态目录需设为仅slurm用户可访问 chmod 700 /var/spool/slurmctld
4. 检查端口占用情况
Slurmctld默认使用6817端口,如果这个端口被其他进程占用,服务会启动失败。用以下命令排查:
ss -tulpn | grep 6817
如果输出有结果,说明端口被占用,可以杀掉对应进程,或者在slurm.conf中修改SlurmctldPort参数更换端口。
5. 确认Munge服务正常运行
Slurm依赖Munge进行节点间认证,单节点部署也必须确保Munge正常:
- 启动并启用Munge服务:
systemctl start munge systemctl enable munge - 检查Munge密钥文件权限(必须是600,属主为munge):
ls -l /etc/munge/munge.key
如果密钥文件不存在或权限错误,需要重新生成密钥并确保权限正确。
6. 检查依赖库完整性
Slurm 14.11.8是比较老的版本,可能依赖Ubuntu 16.04(Linux Mint 18.3基于此)的特定库,用以下命令检查是否有缺失:
ldd /usr/sbin/slurmctld | grep "not found"
如果有缺失的库,安装对应的系统包即可。
我之前碰到过的典型问题:一是slurm.conf里的SlurmctldHost参数写错成了主机FQDN而非短hostname,二是/var/spool/slurmctld的属主被误改成了root,修复后服务就正常启动了。
内容的提问来源于stack exchange,提问作者andres perez

