日常运维操作¶
环境速查¶
项目 |
值 |
|---|---|
本地目录 |
/opt/skyformai(软链接目录,host-setup生成) |
共享目录 |
/opt/skyformai_shared(全集群共享) |
配置目录 |
/opt/skyformai/etc(cb.yaml、hosts、queue.yaml…) |
日志 |
/opt/skyformai/log/<daemon>.<host>.log |
服务 |
systemd 服务名 aip |
ccluster # 集群概览,直接给出 MASTER_HOST
chosts # 主机状态
chosts -c # 已 hclose 的主机
chosts -l node1 # 某主机详情:maxslots、nprocs、STATUS
cjobs -m node1 # 某主机上的作业
移除计算节点(示例:node1)¶
警告
改 cluster.hosts 需重启全集群 cbls,会造成数分钟中断,请在维护窗口操作。
1. 先关闭调度,再处理作业¶
csadmin hclose -C "节点下线维护" node1
cjobs -m node1
等作业跑完,或强制清空:ckill -m node1(杀不掉加 -r)。
备注
hclose 只阻止派新作业,不影响已运行的。先关再查,避免中间又派进新作业。
2. 备份并改配置(master,共享目录只改一次)¶
cd /opt/skyformai/etc
cp -a cb.yaml cb.yaml.bak.$(date +%Y%m%d)
cp -a hosts hosts.bak.$(date +%Y%m%d)
编辑 cb.yaml,删掉 node1 出现的所有位置:cluster.hosts、queues[].hosts、hostgroups[].members、limits[].hosts。
sed -i '/\bnode1\b/d' /opt/skyformai/etc/hosts # AIP 内部 IP↔主机名解析表
警告
/opt/skyformai/etc/queue.yaml、hg.yaml 等动态文件会覆盖 cb.yaml,务必 grep -rn node1 /opt/skyformai/etc/ 全扫一遍,否则主机重启后还会回来。
3. 校验配置¶
cadmin ckconfig && csadmin ckconfig
有 fatal error 先修,否则 reconfig 会被拒绝。
4. 停 node1 上的服务(node1 本机)¶
systemctl stop aip && systemctl disable aip
5. 删环境变量(node1 本机)¶
rm -f /etc/profile.d/aip.*
6. 删本地软链接(node1 本机)⚠️ 高危¶
先确认 /opt/skyformai 不是共享挂载点:
df -h /opt/skyformai
find /opt/skyformai -maxdepth 1 -type l -exec ls -ld {} \; # 逐个确认
find /opt/skyformai -maxdepth 1 -type l -delete
危险
rm 结尾不能带 /,带尾斜杠会顺链接删掉共享存储上的真实文件,等于摧毁集群。
7. 重启集群服务(master)¶
cadmin reconfig
csadmin schedrestart
8. 验证¶
chosts -S # 主机总数应比原来少 1
chosts -l node1 # 应报 invalid host
cping # 其余主机可达
tail -n 50 /opt/skyformai/log/cbsched.<master>.log
新增计算节点(示例:node2)¶
备注
前置条件:静态 IP、集群内网防火墙关闭、登录用户的 UID/GID 与集群一致、依赖包已装。
发行版 |
依赖包安装命令 |
|---|---|
EL7(如 CentOS 7) |
yum -y install libcurl libyaml psmisc net-tools |
EL8 及以上(如 Rocky Linux 8、RHEL 8/9) |
dnf install -y libcurl libyaml psmisc net-tools libnsl |
Ubuntu(Debian 系) |
apt install dmidecode numactl psmisc |
1. 挂共享目录(node2 本机)¶
mkdir -p /opt/skyformai_shared
mount <存储>:/share/skyformai_shared /opt/skyformai_shared # 路径与集群其他主机一致
hostname -s # 短主机名,必须与下面配置里的名字完全一致
2. 加入主机名解析(master,共享目录只改一行)¶
echo "192.168.20.103 node2" >> /opt/skyformai/etc/hosts # 主管理节点必须在该文件第一行
3. 加入 cb.yaml(master)¶
在 cluster: → hosts: 下新增:
- name: node2
备注
若原配置已用范围写法(如 node[0001-0100])覆盖新主机名,此步可跳过。
4. 校验配置¶
cadmin ckconfig && csadmin ckconfig
有 fatal error 先修,否则 reconfig 会被拒绝。
5. 运行 host-setup(node2 本机,必须 root)¶
/share/skyformai_shared/host-setup
做三件事:建 /opt/skyformai 软链接、启用并启动 systemd 服务 aip、设置 /etc/profile.d 环境变量。
6. 重启集群服务(master)¶
cadmin reconfig
csadmin schedrestart
7. 验证¶
chosts -S # 主机总数应比原来多 1
chosts -l node2 # STATUS 应为 ok
cping # 其余主机可达
tail -n 50 /opt/skyformai/log/cbsched.<master>.log
队列增删改¶
队列定义示例(/opt/skyformai/etc/cb.yaml)¶
queues:
- name: medium
description: 通用计算队列
priority: 3
fairshare: "[default, 1]"
hosts: compute # EDA 计算主机组
usermaxslots: 2
runlimit: 1440 # 24 小时
- name: gpu
description: GPU 计算为主的应用
priority: 3
hosts: gcompute # 使用 GPU 主机组
resspec: rusage[gpu=0.25] # 按作业槽平均分配 GPU
- name: high
description: 高优先级队列,可抢占普通作业所占的资源
priority: 10 # 优先级只要高于 medium 队列即可
users: user03 user04 # 只有这两个用户可以使用这个队列
exclusive: yes
常用队列参数¶
参数 |
含义 |
|---|---|
hosts |
该队列可用主机/主机组;all不限 |
users |
允许使用该队列的用户/用户组;all不限 |
priority |
队列优先级,数字越大越优先 |
fairshare |
公平分享策略,[default, N]表示每用户等同 N 份份额 |
usermaxslots |
每用户最多占用的作业槽数 |
runlimit |
作业运行时长上限(分),超时作业被杀掉 |
slotreservetime |
大作业/独占作业的作业槽预留分钟数 |
exclusive |
yes表示独占作业,只调度到无作业运行的主机 |
操作步骤¶
备份:cp -a cb.yaml cb.yaml.bak.$(date +%Y%m%d)
改配置:在 queues: 段新增/删除/修改队列及其上述参数。
校验:cadmin ckconfig && csadmin ckconfig。
生效:cadmin reconfig + csadmin schedrestart。
更换 / 移除 master 节点(示例:mgt01 → mgt02)¶
备注
master 由 cb.yaml 的 master_list 决定;未显式配置时,cluster.hosts 段的前 3 台主机自动成为 Master 候选(主机总数 < 3 时所有主机都是候选)。另外 /opt/skyformai/etc/hosts 文件中主管理节点必须放在头部。
查当前 master¶
ccluster # 输出 MASTER_HOST
lsid
grep -n master_list /opt/skyformai/etc/cb.yaml # 未定义 → 按 hosts 段前 3 台算
备份并改配置(master,共享目录只改一次)¶
cd /opt/skyformai/etc
cp -a cb.yaml cb.yaml.bak.$(date +%Y%m%d)
cp -a hosts hosts.bak.$(date +%Y%m%d)
把 mgt02 提到 master_list 第一位(原本没这个参数就新增到 cluster: 段下):
cluster:
master_list: mgt02 mgt01 # 空格分隔,第一位优先
同时把 /opt/skyformai/etc/hosts 里的 mgt02 那一行挪到文件头部。
校验¶
cadmin ckconfig && csadmin ckconfig
让新 master 接管(在 mgt01 上停服务)¶
systemctl stop aip # 或只停 cbls:cadmin lsshutdown mgt01
危险
这一步会短暂中断调度。候选列表里还有活着的主机时,调度器会自动在下一个候选上启动,不用手动干预。
确认接管¶
lsid # MASTER_HOST 应为 mgt02
ccluster
tail -n 50 /opt/skyformai/log/cbls.mgt02.log
重启集群服务(新 master 上)¶
cadmin reconfig
csadmin schedrestart
处理旧 master¶
降级为普通管理节点:留在 master_list 里当备份候选即可;
彻底移除:先从 master_list 和 cluster.hosts 里删掉,再按第 2 节「移除计算节点」8 步走。
警告
master_list 至少留 2 台候选。只剩 1 台时 master 故障就无冗余,整个集群停摆。
增加 / 删除集群管理员¶
三种”管理员”别搞混¶
配置位置 |
含义 |
|---|---|
cluster.administrators |
集群管理员列表,至少 1 个,第一位是主管理员 |
queues[].administrators |
队列管理员:可操作本队列内任何用户的作业 |
ugroups[].administrator |
用户组管理员:可查看本组成员的作业,每个群组只能指定 1 名 |
cluster:
administrators: # 部分官方示例写作 administrator:(单数)
- cadmin # ← 第一位 = 主管理员
- root
- user01
增加管理员¶
前提:该用户名必须在所有主机上都存在且 UID/GID 一致,否则跨机执行会失败。
编辑 cb.yaml,在 administrators 下加一行。
校验并生效:
cadmin ckconfig && csadmin ckconfig
cadmin reconfig
csadmin schedrestart
验证:用该用户执行 csadmin hclose 这类特权子命令应当成功。
删除管理员¶
编辑 cb.yaml,从 administrators 列表删掉该用户 —— 至少保留 1 个。
如果删的是第一位(主管理员),必须把 /opt/skyformai/work 的属主改成新的第一个管理员:
chown -R <新主管理员> /opt/skyformai/work
危险
work/data 的 owner 必须是 administrators 里的第一个用户。只改配置不改属主,调度器会因权限问题起不来。
校验生效:cadmin ckconfig && csadmin ckconfig → cadmin reconfig + csadmin schedrestart
验证:用该用户执行 csadmin reconfig 应被拒绝。
作业管理常用命令¶
提交(csub)¶
csub ./job.sh # 最简提交,自动选队列
csub -q medium -n 8 ./job.sh # 指定队列 + 8 个作业槽
csub -m node02 "sleep 60" # 只在 node02 上跑(-m 主机组同理)
csub -J check -o out.log -e err.log ./job.sh # 指定作业名、输出/错误文件
csub -W 2:00 ./job.sh # 运行时限 2 小时
csub -M 8G ./job.sh # 内存限:-M 默认 KB,结尾 M/G 为 MB/GB
csub -w "done(1234)" ./job.sh # 依赖:1234 完成后才跑
csub -J "arr[1-10]%3" ./job.sh # 作业阵列 1~10,最多同时跑 3 个
csub -I # 交互式作业
csub -H ./job.sh # 提交为挂起态(PSUSP),需 cresume 释放
备注
不指定 -q 时按 CB_DEFAULTQUEUE → cb.yaml 的 default_queues 挑队列;不指定 -n 时只请求 1 个槽。
作业内可用的环境变量¶
变量 |
含义 |
|---|---|
CB_JOBID |
作业 ID |
CB_JOBNAME |
作业名(csub -J) |
CB_QUEUE |
所在队列 |
CB_SUB_HOST |
提交主机 |
CB_SUBCWD |
提交时的工作目录 |
CB_MCPU_HOSTS |
分配的主机及每机槽数 |
CB_MAX_NUM_PROCESSORS |
申请的最大处理器数 |
CB_JOBINDEX |
阵列元素下标(阵列作业用) |
查看(cjobs / chist)¶
cjobs # 默认:自己未完成的作业
cjobs -w # 宽格式,字段不截断
cjobs -l 101 # 详情:等待/暂停原因、资源限制、执行目录
cjobs -a # 含最近完成的作业(默认保留 CLEAN_PERIOD,约 4000 秒)
cjobs -p # 排队作业 + 未调度原因 ← 排查 PEND 首选
cjobs -p -l # 同上,并给出具体主机名
cjobs -r / cjobs -s # 只看运行中的 / 只看暂停的
cjobs -u all # 所有用户的作业(受 cb.yaml 的 user_view_alljobs 限制)
cjobs -q medium # 某队列的作业
cjobs -m node02 # 执行主机为 node02 的作业
chist -l 101 # 已滚出 cjobs 窗口的历史作业
cjobs -o "jobid stat exec_host finish_time" # 自定义输出字段,便于脚本解析
暂停 / 恢复 / 终止 / 重排队¶
cstop 101 # 挂起:顺序作业 SIGSTOP,并行作业 SIGTSTP
cresume 101 # 恢复挂起作业,发 SIGCONT
ckill 101 # 终止:先 SIGINT/SIGTERM 给清理机会,再 SIGKILL
ckill -r 101 # 杀不掉时强制从 AIP 摘除并释放资源
ckill -m node02 0 # 杀某主机上的全部作业(0 = 所有匹配项)
ckill -q medium 0 # 杀某队列的全部作业
crequeue 101 # 终止并回原队列重排,作业 ID 不变,从头重跑
危险
cstop / cresume / ckill / crequeue 不带参数选择器时默认只操作你最近提交的那一个作业。批量杀必须带 0,且 0 只对同时给出的 -m/-q/-u/-g/-J 过滤条件生效 —— 漏掉 0 是”以为全杀了、实际只杀了 1 个”的常见原因。
权限¶
普通用户只能操作自己的作业;root / AIP 管理员可操作所有人的。
队列管理员可操作所辖队列的作业,用户组管理员可操作组内用户的作业。
主机临时下线维护与恢复¶
备注
区别于「移除计算节点」:临时下线不改 cb.yaml,重启主机后作业不回来;永久移除请走「移除计算节点」6 步。
下线¶
csadmin hclose -C "主机维保,暂停接收新作业" node1 # 阻止派新作业
cjobs -m node1 # 等已运行作业跑完
systemctl stop aip # 停本机服务(可选,纯维保用)
恢复上线¶
systemctl start aip # 起本机服务
csadmin hopen node1 # 重新打开,接收新作业
chosts -l node1 # STATUS 应为 ok
版本升级与回滚¶
升级¶
install --shared=/opt/skyformai_shared --admin=cadmin --help
备注
共享目录已有旧版本 AIP 文件时,install 会把新版本装到独立版本目录(如 /opt/skyformai_shared/10.25.0),不会修改已有配置。确认路径后再决定是否回滚。
常用选项:
选项 |
说明 |
|---|---|
–shared=<共享目录> |
指定共享安装目录(务必与集群其他主机一致,缺省 /opt/skyformai_shared) |
–admin=<AIP管理员用户名> |
指定集群主管理员(缺省 cadmin) |
–hosts=<hosts文件路径> |
提供集群所有主机 IPv4 与主机名列表(缺省读当前目录 ./hosts) |
–ncpus=threads|cores |
定义 ncpus 含义:threads 用 CPU 逻辑核(缺省);cores 用物理核 |
–distro=<旧版本/架构子目录> |
指定版本/架构子目录;多版本共存、10.25.0 覆盖安装或回滚时必须显式给出(如 –distro=10.25.0aarch64) |
–upgrade |
升级(覆盖原有可执行文件);不会重启本机 AIP 服务 |
–noint/–silent |
非交互/静默安装,自动化部署用 |
–deploylocal |
二进制装到本地(>500 台集群建议),与 Shared 不支持共存。 |
–gui |
图形服务器,安装并启动 SkyForm CRV |
–crv_port=<CRV服务端口> |
SkyForm CRV 的端口号(缺省 16000) |
企业版 License:每颗 CPU 和 GPU 各占一个 key 单元,节点变多可能导致单元不足而无法提交作业。install 生成的 key 为 45 天有效期的企业版临时 key,永久使用需替换为正式授权 key 文件。
回滚¶
install --shared=/opt/skyformai_shared --distro=<旧版本/架构子目录>
# 切回旧版本目录后:
cadmin reconfig
csadmin schedrestart
备注
回滚不会保留突破 check 选项的动态修改;回滚完成后需重新配置队列 quota/fairshare 等。
常见故障排查¶
参考 故障处理