You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slurm中无需登录节点如何实现各节点local scratch文件向外传输(类反向sbcast)

Slurm集群本地scratch文件反向传输方案(sbcast反向功能实现)

以下是几种无需登录计算节点即可拉取节点本地scratch分区文件的可行方案:

方案1:使用Slurm原生sgather工具(官方反向sbcast实现)

  • 适用场景:Slurm版本≥20.02,官方原生支持,无需额外配置
  • 核心功能:和sbcast逻辑完全反向,支持从指定节点/指定作业对应的所有节点拉取本地文件到管控节点/共享存储,自动用节点名区分同名文件避免覆盖
  • 常用命令:
    按作业ID拉取所有作业节点上的指定文件:
    sgather --jobid <你的作业ID> /local/scratch/源文件路径 ./本地目标存储路径/
    按指定节点列表拉取:
    sgather -w node01,node02 /local/scratch/源文件路径 ./本地目标存储路径/

方案2:srun并行执行传输命令(全版本通用)

  • 适用场景:Slurm版本较低没有sgather,或者需要自定义传输逻辑的场景
  • 操作步骤:
    1. 先获取目标节点列表,若要拉取指定作业的节点文件,执行squeue -j <作业ID> -o "%N" -h即可得到节点列表
    2. 用srun在所有目标节点并行执行传输命令,示例:
      传输到共享存储(不需要跨节点认证):
      srun -w <节点列表> --ntasks-per-node=1 cp /local/scratch/你的文件路径 /共享存储/目标路径/$(hostname)-结果文件
      传输到管控节点本地路径:
      srun -w <节点列表> --ntasks-per-node=1 rsync /local/scratch/你的文件路径 管控节点用户名@管控节点IP:/目标路径/$(hostname)-结果文件

方案3:作业脚本内嵌自动回传逻辑

  • 适用场景:作业尚未提交,可提前配置数据回传规则
  • 操作方法:在sbatch提交脚本的作业执行逻辑末尾添加回传命令,作业运行结束前自动将本地scratch数据传到共享存储,避免scratch清空导致数据丢失,示例脚本:
#!/bin/bash
#SBATCH --job-name=compute_job
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=8

# 作业计算逻辑
srun /path/to/your/compute/program

# 自动回传本地scratch数据
mkdir -p /sharedfs/result/${SLURM_JOB_ID}/$(hostname)
cp -r /local/scratch/${USER}/${SLURM_JOB_ID}/* /sharedfs/result/${SLURM_JOB_ID}/$(hostname)/

注意:绝大多数Slurm集群的local scratch分区会在作业结束后自动清空回收空间,建议优先选择方案3提前配置自动回传,若作业已运行,需在作业结束前尽快执行拉取操作。

内容的提问来源于stack exchange,提问作者AhmadRg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:36:05