运维

升级与降级

师成师成· 更新于 2026-09-28· 阅读 5 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Ozone 支持非滚动升级和降级,即先停止所有组件,然后使用升级或降级后的版本重新启动。

升级状态

组件升级后,升级过程分为两个状态:

  1. 预终结(Pre-finalized):当停止当前组件并启动新版本时,它们会发现磁盘上的数据是由 Ozone 的旧版本写入的,从而进入预终结状态。在预终结状态中:

    • 随时可以停止所有组件并使用旧版本重新启动,使集群降级。
    • 新版本中引入的向后不兼容特性将被集群禁止使用。
    • 集群将保持完全正常运行,旧版本中存在的所有功能仍然可用。
    • 在预终结期间创建的任何数据在降级后仍然可读。
  2. 已终结(Finalized):当向 OM 或 SCM 发出终结命令后,它们将进入已终结状态。在已终结状态中:

    • 集群将无法再降级。
    • 新版本中引入的所有集群新特性均可使用。

查询终结状态

OM:ozone admin om finalizationstatus。如果使用 OM HA,则检查的是法定人数(quorum)的终结状态,而非单个 OM 的状态。

SCM:ozone admin scm finalizationstatus。SCM 在自身完成终结,并且获知有足够多已终结的 Datanode 可以构成写入管道后,将报告终结已完成。其余 Datanode 将异步完成终结,并在通知 SCM 已终结后被纳入写入管道。

Datanode:ozone admin datanode list 将列出所有 Datanode 及其在 SCM 眼中的健康状态。如果 SCM 已终结,那么健康状态为 HEALTHY 的 Datanode 已通知 SCM 它们完成了终结;健康状态为 HEALTHY_READONLY 的 Datanode 尚未通知 SCM 它们已完成终结。处于 HEALTHY_READONLY(预终结)状态的 Datanode 仍可读取,因此即使某些原本健康的 Datanode 尚未完成终结,集群仍可正常运行。处于 STALE 或 DEAD 状态的 Datanode 在重新可达后,SCM 将要求它们进行终结。

升级和降级步骤

从当前使用的 Ozone 版本开始,按照以下步骤升级到更新的 Ozone 版本。

  1. 如果使用 OM HA 且当前运行的是 Ozone 1.2.0 或更高版本,请准备 Ozone Manager。如果未使用 OM HA,可以跳过此步骤。

    ozone admin om prepare -id=<om-sevice-id>

prepare 命令会阻止 Ozone Manager 接收所有写入请求。更多信息请参阅 Ozone Manager Prepare For Upgrade。

  1. 停止所有组件。

  2. 将所有组件的构件替换为较新版本。

  3. 启动组件

    1. 按常规方式启动 SCM 和 Datanode:

      ozone --daemon start scm
      ozone --daemon start datanode
    2. 使用 --upgrade 标志启动 Ozone Manager,使其退出 prepare 模式。

      ozone --daemon start om --upgrade
  • 还存在一个 --downgrade 标志,它是 --upgrade 的别名。使用哪个名称并不重要。
    - 重要:在这一步中,所有 OM 都必须使用 --upgrade 或 --downgrade 标志启动。如果有些 OM 忘记使用该标志启动,请运行 ozone admin om cancelprepare -id=<om-sevice-id>,以确保所有 OM 退出准备模式。
    至此,集群已升级到预完成状态,并可完全正常运行。可以通过重复上述步骤来降级集群,只是在第 3 步中恢复的是组件的旧版本而非新版本。若要完成集群升级以使用新功能,请继续执行以下步骤。

    一旦执行了以下步骤,将无法再进行降级。

  1. 完成 SCM 升级

    ozone admin scm finalizeupgrade

此时,SCM 会通知所有 DataNode 执行 finalize 操作。当 SCM 完成足够数量的 DataNode 的 finalize、从而能够组成一个写入管线(write pipeline)时,它将返回 finalize 成功的结果。其余尚未完成 finalize 的 DataNode 将处于只读状态,直到它们向 SCM 表明自己已完成 finalize 为止。写请求将只会被定向到已完成 finalize 的 DataNode。
6. Finalize OM

ozone admin om finalizeupgrade -id=<om-service-id>

至此,集群已完成定版,升级也就此结束。

评论

登录后参与评论

正在加载评论…