> ## Documentation Index
> Fetch the complete documentation index at: https://starforge.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 维护模式

> 排空集群而不丢工作，然后从原地恢复。

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
sf admin maintenance drain --note "升级 Ray 集群镜像，14:00 前恢复"
sf admin maintenance status
sf admin maintenance resume
```

维护模式的存在，是为了让「升级集群」不等于「把上面跑的作业扔掉」。

## 排空做了什么

<Steps>
  <Step title="新提交入队，但什么都不下发">
    用户仍然可以提交。他的作业等着，而你写的那段说明会展示给他。
  </Step>

  <Step title="运行中的作业被暂停，保留 checkpoint">
    每个都标记为 `PAUSED` 并设自动恢复，run id 不变。
  </Step>

  <Step title="你去做事">
    换镜像、升级 operator、给节点打补丁。
  </Step>

  <Step title="恢复">
    队列 worker 按原 run id 重新提交每个暂停的作业，训练从 checkpoint 继续。
    排队的提交也重新开始下发。
  </Step>
</Steps>

因为恢复后的作业保持同一个 run id，它的指标、日志和产物都在一处。
在控制台上它读起来是「一次暂停过的 run」，而不是「两次需要你自己在脑子里拼起来的 run」。

## 请写那段说明

`FORGE_MAINTENANCE_NOTE` 会展示给每一个被拦下的提交者。
一段带预计结束时间的说明，能直接回答他们本来要来问你的问题。
只写「维护中」会制造支持工单。

## 排空期间还能用什么

| 能用                       | 不能               |
| ------------------------ | ---------------- |
| 登录、浏览作业、看日志和产物           | 下发任何新东西          |
| `GET /api/version` 和健康探针 | 启动 Playground 会话 |
| API 的读接口                 |                  |

承接应用流量的模型部署是另一回事——排空训练队列不会停掉它们。
真要停的话，显式挂起那个部署。

## 用它做升级

集群镜像变更的推荐顺序：

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
sf admin maintenance drain --note "新的 NeMo-RL 镜像，约 30 分钟"
# 等运行中的数量降到零
sf admin maintenance status
# 做升级
sf admin maintenance resume
```

<Warning>
  如果因为框架版本不兼容而无法从 checkpoint 恢复，作业会在恢复时失败，而不是在排空时。
  升级跨框架大版本时，计划让作业自然跑完，而不是排空它们。
</Warning>

这个流程的其余部分见[升级](/zh-Hans/ops/upgrades)。
