前面的几个步骤执行完之后,集群就已经创建好了初步的分区,如下所示:
STATE为idle证明所有节点上的slurmd服务状态是正常,但此时用户还无法利用slurm提交作业,还需要对集群进行初始化配置以及创建用户,并把用户同步到所有的计算节点。
1、集群添加account
account属性是slurm用户在提交作业时需要配置的属性之一,用于作业记账使用。集群在初始化时,需添加系统的account,用户提交作业时的可不指定account属性,因为系统中有默认的account。
创建集群名字,如果在slurmdbd.conf文件中已经指定了cluster,那么这一步不需要执行,系统会自动创建。
sacctmgr add cluster hgy
在集群中添加account属性:
sacctmgr add account normal Description="Default account"
此时normal会作为系统中存在的account属性之一存在,如果创建用户时指定了默认的account为normal,那么用户在提交作业时无需指定account属性,将会自动以normal的account进行提交。当然也可以为集群添加多个account。
2、用户同步
由于集群中存在多个计算节点,那么提交作业时,所有的计算节点都必须存在此用户账户,并且UID需保持一致。因此在创建用户时需指定用户的UID,并且把用户信息同步到所有的计算节点。此处推荐有条件的用户采用ldap作为用户认证管理工具,适合集群上的用户认证机制,此次由于集群较小,没有使用ldap。
UIDNOW=1300
useradd test -p test -d /public/home/$1 -u ${UIDNOW} -s /bin/bash
scp /etc/passwd /etc/shadow /etc/group cn02:/etc/
scp /etc/passwd /etc/shadow /etc/group cn03:/etc/
scp /etc/passwd /etc/shadow /etc/group cn04:/etc/
scp /etc/passwd /etc/shadow /etc/group cn05:/etc/
/etc/passwd: 存储用户UID等相关信息的文件。
/etc/shadow: 存储用户密码信息的文件
/etc/group: 存储用户组信息的文件。
把这三个文件同步到其他节点之后,就可以保证所有节点的用户是一致的。
3、添加linux系统用户到slurm中
虽然系统中存在了test用户,但是slurm自己本身并无法识别test用户,因此必须在slurm中添加test用户:
sacctmgr -i add user test DefaultAccount=normal
注意必须指定:DefaultAccount属性,同时在管理节点的slurm.conf配置文件中需开启如下配置:
AccountingStorageEnforce=associations
用户此时便可利用默认的account或者指定其他的account进行提交作业。
4、提交作业
不指定-A 参数,则以默认的normal属性提交
srun -n 10 hostname
指定-A参数,则以其他的记账属性提交
srun -A otheraccount -n 10 hostname
其他常用命令请参考slurm官方网站。