存储与数据¶
三类存储¶
| 路径 | 范围 | 默认容量策略 | 生命周期 | 适合内容 |
|---|---|---|---|---|
/cluster-home/$USER |
个人、跨节点共享 | 200 GiB | 持久 | 代码、配置、小型结果 |
/project/<name> |
项目组、跨节点共享 | 500 GiB/项目 | 持久 | 数据集、共享模型、正式结果 |
$LOCAL_SCRATCH |
单个作业、单个节点 | 100 GiB/节点 | 作业后部分保留 48 小时 | 中间数据、缓存、高 I/O 文件 |
默认值可能有管理员批准的例外;不要用表格推断自己的实际配额。
此外,集群可通过对象存储 OSS保存和交换数据。Bucket
stellaredge 也挂载到 /oss/stellaredge,但这种挂载不会让对象存储获得完整的
POSIX 语义。训练时通常先把输入复制到 /project 或作业本地盘,结束前再通过
ossutil、SDK 或该挂载上传结果。
个人目录与项目目录¶
项目目录依赖 FreeIPA 组权限。收到 Permission denied 时先运行 id,确认输出中包含
对应项目组。管理员刚更新组成员后,退出全部 SSH 会话并重新登录,让新组身份生效。
不要在共享目录使用无差别的 chmod -R 777、chown -R 或递归删除命令。需要清理时
先列出精确路径,再删除本次作业创建的命名目录。
作业本地临时盘¶
每个作业按节点获得独立的 XFS 配额目录。默认申请 100 GiB,可以用 --tmp 调整:
允许范围为 1 MiB 至 8 TiB/节点,并受节点剩余容量与预留空间限制。请求值是每节点, 不是多节点作业的总量。
作业内可用变量:
echo "$LOCAL_SCRATCH" # /local_scratch/jobs/<job-id>
echo "$SLURM_TMPDIR" # $LOCAL_SCRATCH/tmp
echo "$TMPDIR" # $LOCAL_SCRATCH/tmp
目录结构:
$LOCAL_SCRATCH/
├── tmp/ # 作业结束时立即回收
├── dataset/ # 作业结束后最多保留 48 小时
├── output/ # 作业结束后最多保留 48 小时
└── checkpoint/ # 作业结束后最多保留 48 小时
dataset、output 和 checkpoint 的 48 小时是故障恢复窗口,不是备份。重要结果必须
在作业正常结束前复制到 /project 或 $HOME。作业异常退出也不要依赖保留窗口作为
唯一副本。
推荐的数据流¶
# 1. 从共享项目目录复制输入到节点本地盘
cp -a /project/example/dataset/. "$LOCAL_SCRATCH/dataset/"
# 2. 在本地盘运行高 I/O 工作负载
python train.py \
--data "$LOCAL_SCRATCH/dataset" \
--output "$LOCAL_SCRATCH/output"
# 3. 将最终结果原子地归档到共享项目目录的独立作业目录
destination=/project/example/results/"$SLURM_JOB_ID"
mkdir -p "$destination"
cp -a "$LOCAL_SCRATCH/output/." "$destination/"
多节点作业的 $LOCAL_SCRATCH 彼此不可见。使用 srun 让每个节点准备自己的输入,
或让程序直接读取共享 /project,并评估共享存储负载。
配额写满¶
达到硬限额时可能看到 Disk quota exceeded,节点本地盘也可能返回
No space left on device。立即停止继续写入,检查目标路径与申请值,清理自己明确
创建的临时文件或提高下一次作业的 --tmp。不要删除其他作业或其他用户的数据。