SLURM 安装与配置

slurm

SLURM 介绍

SLURM 是一个可用于大型计算节点集群的高度可伸缩的集群管理器和作业调度系统。SLURM 维护着一个待处理工作的队列并管理此工作的整体资源利用。SLURM 将作业分发给一组已分配的节点来执行。
本质上,SLURM 是一个强健的集群管理器,它高度可移植、可伸缩至大型节点集群、容错好,而且更重要的是它是开源的。

关于 SLURM 的架构可以参考 http://slurm.schedmd.com/

SLURM安装

这里安装都是以在CentOS6.5上安装为例。并且因为 SLURM 是在集群中使用,所以我们这里假定有三台相同版本的linux,机器名分别为mycentos6x,mycentos6x1和mycentos6x2,其中 mycentos6x 作为控制节点。

安装 MUNGE

首先 SLURM 需要使用 MUNGE 来认证,所以我们要先来安装 MUNGE。

从 MUNGE(https://github.com/dun/munge) 的官方网站下载安装包,这里使用 munge-0.5.11.tar.bz2 文件。使用 root 用户运行下面命令

  • 编译并安装 munge 包

    # rpmbuild -tb --clean munge-0.5.11.tar.bz2  
    # cd /root/rpmbuild/RPMS/x86_64
    # rpm --install munge*.rpm
    

    在编译rpm包和安装的过程中可能会提示需要一些第三方的软件包,此时可以使用 “yum install -y xxx” 来安装,我在安装的时候就是先安装了下面的软件包

    # yum install -y rpm-build rpmdevtools bzip2-devel openssl-devel zlib-devel  
    
  • 安装完成后,需要修改下面这些文件的权限

    1
    2
    3
    4
    # chmod -Rf 700 /etc/munge
    # chmod -Rf 711 /var/lib/munge
    # chmod -Rf 700 /var/log/munge
    # chmod -Rf 0755 /var/run/munge

    另外需要注意的是检查一下/etc/munge/munge.key文件,文件的 owner 和 group 必须是 munge,否则启动会失败。

    安装完成后,就可以启动 munge 服务了

    # /etc/init.d/munge start

     

    最后,需要把 /etc/munge/munge.key 复制到另外两台机器上,并确保文件权限和属主都相同。

安装 SLURM

  • 首先创建slurm用户

    1
    2
    # useradd slurm
    # passwd slurm

    访问 SLURM(http://slurm.schedmd.com/)下载安装包,这里使用 slurm-14.11.8.tar.bz2 安装包。

  • 编译并安装 slurm 包

    1
    2
    3
    # rpmbuild -ta --clean slurm-14.11.8.tar.bz2
    # cd /root/rpmbuild/RPMS/x86_64
    # rpm --install slurm*.rpm

    在编译rpm包和安装的过程中提示我安装了下面的软件包

    # yum install -y readline-devel pam-devel perl-DBI perl-ExtUtils-MakeMaker
    
  • 安装完成后,修改下面命令的属组

    # sudo chown slurm:slurm /var/spool
    

    到这里,SLURM的安装就完成了,但是还不能启动,我们还需要做一下配置才可以启动slurm服务并提交作业。

配置 SLURM

进入/etc/slurm/目录,复制slurm.conf.example文件成slurm.conf,然后编辑/etc/slurm/slurm.conf文件

下面是我的文件中修改的部分

1
2
3
4
5
6
7
8
9
10
11
12
ControlMachine=mycentos6x
ControlAddr=192.168.145.100
SlurmUser=slurm
SelectType=select/cons_res
SelectTypeParameters=CR_Core
SlurmctldDebug=3
SlurmctldLogFile=/var/log/slurmctld.log
SlurmdDebug=3
SlurmdLogFile=/var/log/slurmd.log
NodeName=mycentos6x,mycentos6x1,mycentos6x2 CPUs=4 RealMemory=500 Sockets=2 CoresPerSocket=2 ThreadsPerCore=1 State=IDLE
PartitionName=control Nodes=mycentos6x Default=YES MaxTime=INFINITE State=UP
PartitionName=compute Nodes=mycentos6x1,mycentos6x2 Default=NO MaxTime=INFINITE State=UP

注:这里需要将此配置文件部署到集群里的每台机器上。

保存文件,然后使用下面命令启动slurm服务

# /etc/init.d/slurm start

测试

在启动了slurm服务之后,我们可以使用下面一些命令来查看集群状态并提交作业

  • 查看系统状态

    1
    2
    3
    4
    # sinfo
    PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
    control*     up   infinite      1   idle mycentos6x
    compute      up   infinite      2   idle mycentos6x1,mycentos6x2
  • 显示slurm报告

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # scontrol show slurm reports
    Active Steps             = NONE
    Actual CPUs              = 2
    Actual Boards            = 1
    Actual sockets           = 1
    Actual cores             = 2
    Actual threads per core  = 1
    Actual real memory       = 1464 MB
    Actual temp disk space   = 29644 MB
    Boot time                = 2015-07-22T09:50:34
    Hostname                 = mycentos6x
    Last slurmctld msg time  = 2015-07-22T09:50:37
    Slurmd PID               = 27755
    Slurmd Debug             = 3
    Slurmd Logfile           = /var/log/slurmd.log
    Version                  = 14.11.8
  • 显示配置、队列、节点、任务

    1
    2
    3
    4
    # scontrol show config
    # scontrol show partition
    # scontrol show node
    # scontrol show jobs
  • 提交作业

    1
    2
    3
    4
    5
    6
    7
    # srun hostname
    Mycentos6x
    # srun -N 3 -l hostname
    0: mycentos6x
    1: mycentos6x1
    2: mycentos6x2
    # srun sleep 60 &
  • 查询作业

    1
    2
    3
    # squeue -a
    JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
    77     debug    sleep   kongxx  R       0:06      1 mycentos6x
  • 取消作业

    1
    scancel <job_id>

参考

SLURM:http://slurm.schedmd.com/

MUNGE: https://github.com/dun/munge

转载请以链接形式标明本文地址

来自 <http://blog.csdn.net/kongxx/article/details/48173829>

坚持原创技术分享,您的支持将鼓励我继续创作!