集群使用手册
集群访问 SSH
SSH(Secure Shell)是一种用于计算机之间加密通信的网络协议。它主要用于远程登录和执行命令,同时提供强大的加密和身份验证功能,确保通信的安全性。SSH 是管理员和开发人员日常工作中常用的工具之一。通常来说,个人 PC 和任何你能接触到的现代集群都预装了 SSH 客户端和服务器。因此你可以开始直接尝试使用:
- 使用 user 用户名登录到 host 服务器(使用默认端口号22):
- 使用 user 用户名登录到 host 服务器(使用其他端口号,如2222):
- 如果你希望执行命令而不是启动交互会话,可以使用:
- 生成属于你的密钥对,可以加上
-C your_email
设置密钥对应的邮箱。通常来说,生成的密钥会保存在~/.ssh
目录下,将你的公钥复制到服务器的~/.ssh/authorized_keys
文件中你就可以凭借本地的私钥实现免密登录。
我们强烈不建议你在任何情况下将你的私钥放置于任何服务器的任何目录下。这会给你的个人信息安全和服务器安全带来难以想象的毁灭性打击。
更多相关知识参见What is SSH (Secure Shell)? | SSH Academy
终端多路复用:TMUX
在远程访问任何集群,特别是计算节点和登录节点分离的集群的时候。我们强烈不建议你使用
nohup
或者&
的方法将进程挂在后台运行,这会给集群的稳定运行带来不必要的困扰。如果你存在类似的需求,请务必学习下面介绍的工具。
在远程访问使用集群的时候,稳定的命令行环境能够大大提高我们的工作效率。如果你希望在同一个终端下使用多个独立的环境,或者保证你的终端在网络波动导致掉线的时候仍能保持稳定,tmux 工具是一个好的选择。
A Quick and Easy Guide to tmux - Ham Vocke
你可以参考上面链接中的快速上手教程,或者仅仅简单学会使用以下指令:
- 如果你已经想好了一个动听的名字
$NAME
,你可以使用以下命令新建会话:
- 如果你想查看当前所有会话:
- 如果你在会话中,并且希望暂时离开会话,以下两个指令均可:
- 如果你在会话中,并且希望永久关闭会话:
- 如果你需要重新连接之前暂时离开的对话,使用以下两个指令均可:
更多知识参见Getting Started · tmux/tmux Wiki · GitHub
环境配置 Module
Modules 是一种环境管理工具,用于在 Unix 和 Linux 系统上动态地修改用户的环境。它允许用户方便地加载、卸载和切换软件包及其版本,避免了环境变量冲突和混乱。Modules 工具特别适用于科学计算和高性能计算(HPC)环境。
如果集群本身自动配置了 Module 环境,你可以直接开始使用(对于比赛中你会接触到的集群,当然如此)。否则可以向管理员询问 Module 环境的初始化脚本路径。
- 如果要查询系统上的可用模块,可以使用以下命令。如果结果太多,可以使用
grep
指令对你希望的目标进行筛选。
- 如果你希望加载一个模块
$MOD
- 如果你希望卸载一个模块
$MOD
- 如果你希望显示当前环境已经加载的模块:
- 如果你需要查看一个模块的详细信息:
更多知识/详细文档参见:module — Modules documentation
任务提交 Slurm
SLURM(Simple Linux Utility for Resource Management)是一种开源的、高度可扩展的集群管理和作业调度系统,广泛应用于高性能计算(HPC)环境中。SLURM 提供了对计算资源的高效管理和调度功能,支持各种作业类型和调度策略。
核心组件:
- Slurmctld:主控制守护进程,管理作业队列和资源分配。
- Slurmd:计算节点守护进程,负责执行和管理作业。
- Slurmdbd:数据库守护进程,管理作业和资源使用数据(可选)。
-
Slurm CLI:命令行工具,用于用户提交、管理和监控作业。
-
如果你希望查看当前作业队列状态(其中 user 是你的用户名):
- 如果你希望查看当前 SLURM 管理的所有集群节点信息:
- 交互式提交
你可以使用如下命令进行任务$MISSION
的提交:
其他可选项:
--job-name=job_name
:指定作业名。
--output=filename
:指定标准输出文件。
--error=filename
:指定标准错误文件。
--ntasks=num
:指定任务数。
--cpus-per-task=num
:指定每个任务使用的 CPU 数。
--mem=memory
:指定每个节点分配的内存大小。
--time=HH:MM:SS
:指定作业的运行时间。
--partition=partition_name
:指定作业提交的分区
- 脚本提交
你可以创建一个名为job.slurm
的脚本(当然也可以是其他名字):
#!/bin/bash
#SBATCH --job-name=my_job # 作业名
#SBATCH --output=my_job.out # 标准输出文件
#SBATCH --error=my_job.err # 标准错误文件
#SBATCH --ntasks=1 # 任务数
#SBATCH --time=01:00:00 # 运行时间 (HH:MM:SS)
#SBATCH --partition=default # 分区
# 加载必要的模块 (如果使用模块环境管理工具)
module load python/3.8
# 执行命令
python my_script.py
然后使用 sbatch
提交作业:
- 对于给定的
$JOBID
,如果你想取消任务: