架构

Storage Container Manager

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

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

存储容器管理器(Storage Container Manager,SCM)是块空间管理的主节点。其主要职责是创建和管理容器,容器是 Ozone 的主要复制单元。

Storage Container Manager

主要职责

Storage Container Manager 为 Ozone 集群提供多项关键功能。SCM 充当集群管理器、证书颁发机构、块管理器和副本管理器。

SCM 负责创建 Ozone 集群。当 SCM 通过 init 命令启动时,SCM 会创建集群标识以及 SCM 证书颁发机构所需的根证书。SCM 管理集群中数据节点的生命周期。

  1. SCM 是块管理器。SCM 分配块并将其指派给数据节点,客户端直接对这些块进行读写。
  2. SCM 跟踪所有块副本。如果发生数据节点或磁盘丢失,SCM 会检测到该情况,并指示数据节点复制缺失的块,以确保高可用性。
  3. SCM 的证书颁发机构 负责为集群中的每个服务签发身份证书。这套证书基础设施使得在网络层启用 mTLS 变得容易,而块令牌基础设施也依赖于此证书基础设施。

主要组件

本节对 Storage Container Manager 提供的网络服务和存储的持久化数据进行简要概述,以便更详细地了解 Storage Container Manager。

Storage Container Manager 提供的网络服务

  • Pipeline:列出/删除/激活/停用

    • Pipeline 是组成复制组的数据节点集合
    • Raft 组由 SCM 规划
  • 容器:创建 / 列出 / 删除容器

  • 管理相关请求

  • 安全模式状态/修改

  • 复制管理器启动 / 停止

  • CA 证书颁发机构服务

  • 其他服务端组件所依赖

  • 数据节点心跳协议

    • 由数据节点发送到 SCM(默认 30 秒)
    • 数据节点报告容器、节点等的状态
    • SCM 可以在响应中附加命令

note

客户端不会直接连接到 SCM。

持久化状态

以下数据持久化在 Storage Container Manager 端的特定 RocksDB 目录中

  • Pipeline

    • 服务器的复制组。维护这些信息是为了在为新的容器/块分配时找到可用的组。
  • 容器

    • 容器是复制单元。当数据副本不足或过多时需要这些数据来采取相应操作。
  • 已删除的块

    • 块数据在后台被删除。需要一份列表来跟踪进度。
  • 有效证书

  • 由内部证书颁发机构使用,用于授权其他 Ozone 服务

安全模式

SCM(Storage Container Manager,存储容器管理器)在启动时会进入安全模式。这是一种保护状态,让系统在完全投入使用之前先趋于稳定。在安全模式期间,块分配等某些操作会受到限制。

如何退出安全模式

退出安全模式有两种方式:

  1. 自动退出: 当一组预定义的 SafeModeExitRule(安全模式退出规则)得到满足时,SCM 会自动退出安全模式。这些规则确保集群处于健康状态。主要规则如下:

    • DataNodeSafeModeRule :检查是否有最小数量的 Datanode 已向 SCM 注册。该数量由 hdds.scm.safemode.min.datanode 配置(默认值:3)。
    • RatisContainerSafeModeRule :检查已上报至少一个副本的容器中,有一定比例的容器可用。该比例由 hdds.scm.safemode.threshold.pct 配置(默认值:0.99)。
    • HealthyPipelineSafeModeRule :检查有一定比例的 Pipeline 处于健康状态。该比例由 hdds.scm.safemode.healthy.pipeline.pct 配置(默认值:0.10)。
    • OneReplicaPipelineSafeModeRule :检查有一定比例的 Pipeline 已上报至少一个副本。该比例由 hdds.scm.safemode.atleast.one.node.reported.pipeline.pct 配置(默认值:0.90)。
    • ECContainerSafeModeRule :检查有一定比例的纠删码块组处于健康状态。该比例同样由 hdds.scm.safemode.threshold.pct 配置(默认值:0.99)。
  2. 手动退出: 你可以使用 ozone admin safemode --force-exit 命令强制 SCM 退出安全模式。

安全模式预检查

还有一个“预检查”阶段。在所有预检查规则得到满足之前,SCM 不会退出安全模式。DataNodeSafeModeRule 就是一条预检查规则。这意味着 SCM 会先等待最少数量的 Datanode 可用,然后才会考虑退出安全模式的其他条件。

重要配置项

配置键默认值说明
ozone.scm.container.size5GBOzone 使用的默认容器大小
ozone.scm.block.size256MB数据块的默认大小。
hdds.scm.safemode.min.datanode3开始实际工作所需的最少 Datanode 数量。
ozone.scm.http-address0.0.0.0:9876SCM 服务器的 HTTP 地址
ozone.metadata.dirsnone用于存储持久化数据(RocksDB)的目录。

评论

登录后参与评论

正在加载评论…