slurmctld:致命:集群名称不匹配

slurmctld: fatal: CLUSTER NAME MISMATCH

我开始吐口水的方式:

mkdir -p /tmp/slurmstate/clustername
sudo slurmd
sudo munged -f
/etc/init.d/munge start 
sudo slurmdbd
sudo slurmctld -c

-

sacctmgr list cluster
   Cluster     ControlHost  ControlPort   RPC     Share GrpJobs       GrpTRES GrpSubmit MaxJobs       MaxTRES MaxSubmit     MaxWall                  QOS   Def QOS
---------- --------------- ------------ ----- --------- ------- ------------- --------- ------- ------------- --------- ----------- -------------------- ---------
   cluster                            0  7936         1                                                                                           normal

运行 slurmctld -cD 给我以下错误。集群名称 returns 一些我不知道的无效字符串。我该如何解决?

> slurmctld -cD
slurmctld: fatal: CLUSTER NAME MISMATCH.
slurmctld has been started with "ClusterName=�����", but read "cluster" from the state files in StateSaveLocation.
Running multiple clusters from a shared StateSaveLocation WILL CAUSE CORRUPTION.
Remove /tmp/slurmstate/clustername to override this safety check if this is intentional (e.g., the ClusterName has changed).

注意:当我尝试 运行 以 root 用户身份运行 slurm 并切换回来时,这个问题开始出现。我必须重新安装 mysql 才能修复它。

感谢您的宝贵时间和帮助。

我是一个完全的 SLURM 菜鸟(刚开始对它感兴趣是为了工作),如果我提出了错误的建议,我深表歉意,但我想我可以指出一些错误的地方。

启动序列中的第一行:

mkdir -p /tmp/slurmstate/clustername

所以你在这里创建一个目录,我的意思是clustername是一个目录

守护程序启动时,它会尝试将此作为文件读取 (using fopen and fgets, see source code of latest version)。

然后,自 the behavior of fopen-ing a directory is system-dependent 以来,任何事情都可能发生(它可能读取垃圾,或失败...)。如果您能指定您正在使用的 OS 会很有趣。

建议:

  • rmdir /tmp/slurmstate/clustername

  • 将第一行替换为mkdir -p /tmp/slurmstate,如果不存在则创建slurmstate目录,但不要创建clustername文件(或目录) !) 你自己在里面。

第一次它将创建 clustername 文件,并在其中写入从 slurm.conf 文件中获取的名称。后续启动将从文件中读取值并将其与 slurm.conf 中的值进行比较,然后继续启动。

PS : 我刚刚注意到你在上次编辑中添加了那行,所以 你在这样做之前遇到了根本问题 ... 所以我的问题指着可能没什么。也许我应该(再次)删除该答案(但也许您的问题需要再次编辑)。