The save state location is where slurm stores its current information
about jobs. That location is the live data of the cluster and is what
allows it to survive restarts of the slurmctld. The slurmdbd is almost
live information and is not used by the slurmctld for current job
state. Thus if the data in the save state location is corrupt or old,
slurm will either purge those jobs not in that location or the slurmctld
will fail to start.
Given the critical nature of the save state location, we taken the step
of rsyncing it to a different location periodically. However, be advised
once you restart the slurmctld with a specific save state it will
rectify all the running jobs. So you have one shot to get it right. So
if you suspect that something happened to your save state info, don't
restart the slurmd's or slurmctld until you think you have a good copy,
else the slurmctld will look at the save state you gave it and then look
at the jobs it sees on the slurmd and then rectify the two (namely
dropping jobs it doesn't see in both places).
In general this is one of the reasons we have opted to not do HA with
slurm but rather just rely on a single box with backups of the slurm
save state. Our save state is on a local drive, which also helps with
speed. Our backup is rsynced to our isilon and snapshotted. That said
if I had to go back to one of those snapshots, I know for a fact that I
would be losing jobs. There really isn't much for it at that point.
-Paul Edmon-
On 8/28/19 10:49 AM, David Baker wrote:
Hello,
I apologise that this email is a bit vague, however we are keen to
understand the role of the Slurm "StateSave" location. I can see the
value of the information in this location when, for example, we are
upgrading Slurm and the database is temporarily down, however as I
note above we are keen to gain a much better understanding of this
directory.
We have two Slurm controller nodes (one of them is a backup
controller), and currently we have put the "StateSave" directory on
one of the global GPFS file stores. In other respects Slurm operates
independently of the GPFS file stores -- apart from the fact that if
GPFS fails jobs will subsequently fail. There was a GPFS failure when
I was away from the university. Once GPFS had been restored they
attempted to start Slurm, however the StateSave data was out of date.
They eventually restarted Slurm, however lost all the queued jobs and
the job sequence counter restarted at one.
Am I correct in thinking the the information in the StateSave location
relates to the state of (a) jobs currently running on the cluster and
(b) jobs queued? Am I also correct in thinking that this information
is not stored in the slurm database? In other words if you lose the
statesave data or it gets corrupted then you will lose all
running/queued jobs?
Any advice on the management and location of the statesave directory
in a dual controller system would be appreciated, please.
Best regards,
David