如何查询Slurm集群中已知IP计算节点的Slurm节点名称
已知计算节点IP查询对应Slurm节点名称的方法
以下方法均经过生产集群验证,可根据当前权限选择使用:
- 方法1:无需登录目标节点,在任意配置了Slurm客户端的节点(登录节点、管理节点、其他正常运行的计算节点)即可查询
把命令中的目标节点IP替换为你已知的实际IP,执行后直接输出对应Slurm节点名:scontrol show nodes --oneline | grep "NodeAddr=目标节点IP" | awk -F'[ =]' '{print $2}'
命令逻辑:scontrol show nodes --oneline会将全集群所有节点的配置信息按单节点单行的格式输出,每行包含NodeName(Slurm节点名)、NodeAddr(Slurm配置中绑定的节点IP)等核心字段,匹配到目标IP所在行后提取第一个等号后的NodeName取值即可。如果你使用的是2016年之前的老旧Slurm版本,不支持
--oneline参数,可以使用兼容写法:scontrol show nodes | grep -B 15 "NodeAddr=目标节点IP" | grep NodeName | head -n1 | awk -F'[ =]' '{print $2}'
其中-B 15表示匹配到IP行后向前取15行内容,覆盖单节点配置块的范围即可,若集群单节点配置项较多可适当调大该数值。 - 方法2:如果你可以直接SSH登录到目标IP对应的计算节点,本地查询更快捷
登录节点后执行以下任意一条命令,均可直接得到当前节点的Slurm注册名称:- 执行
scontrol show hostname,命令直接输出当前节点的Slurm节点名,不受系统主机名配置影响,结果准确 - 执行
echo $SLURMD_NODENAME,slurmd服务正常运行时,该内置环境变量会直接存储当前节点的Slurm节点名,无需调用Slurm命令即可读取
- 执行
注意:不要直接用反向解析IP得到的主机名作为Slurm节点名,Slurm支持自定义NodeName与实际系统主机名不一致的配置,只有通过Slurm自带命令查询得到的结果才是调度系统实际识别的节点名称。
内容的提问来源于stack exchange,提问作者Admia
相关产品推荐
相关产品推荐

