我开始闷闷不乐的方式:
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来修复它。
感谢您宝贵的时间和帮助。
答案 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
中的值进行比较,然后继续启动。