slurmctld:致命:群众名称MISMATCH

时间:2017-06-09 11:36:36

标签: slurm

我开始闷闷不乐的方式:

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会出现以下错误。群集名称返回一些我不知道的无效字符串。我怎么能解决它?

> 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来修复它。

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

1 个答案:

答案 0 :(得分:2)

我是一个完整的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开始,任何事情都可能发生(它可能会读取垃圾,或者失败......)。如果您可以指定正在使用的操作系统,那将会很有趣。

建议:

  • rmdir /tmp/slurmstate/clustername

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

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

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