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

主要职责
Storage Container Manager 为 Ozone 集群提供多项关键功能。SCM 充当集群管理器、证书颁发机构、块管理器和副本管理器。
SCM 负责创建 Ozone 集群。当 SCM 通过 init 命令启动时,SCM 会创建集群标识以及 SCM 证书颁发机构所需的根证书。SCM 管理集群中数据节点的生命周期。
- SCM 是块管理器。SCM 分配块并将其指派给数据节点,客户端直接对这些块进行读写。
- SCM 跟踪所有块副本。如果发生数据节点或磁盘丢失,SCM 会检测到该情况,并指示数据节点复制缺失的块,以确保高可用性。
- 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,存储容器管理器)在启动时会进入安全模式。这是一种保护状态,让系统在完全投入使用之前先趋于稳定。在安全模式期间,块分配等某些操作会受到限制。
如何退出安全模式
退出安全模式有两种方式:
自动退出: 当一组预定义的
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)。
手动退出: 你可以使用
ozone admin safemode --force-exit命令强制 SCM 退出安全模式。
安全模式预检查
还有一个“预检查”阶段。在所有预检查规则得到满足之前,SCM 不会退出安全模式。DataNodeSafeModeRule 就是一条预检查规则。这意味着 SCM 会先等待最少数量的 Datanode 可用,然后才会考虑退出安全模式的其他条件。
重要配置项
| 配置键 | 默认值 | 说明 |
|---|---|---|
ozone.scm.container.size | 5GB | Ozone 使用的默认容器大小 |
ozone.scm.block.size | 256MB | 数据块的默认大小。 |
hdds.scm.safemode.min.datanode | 3 | 开始实际工作所需的最少 Datanode 数量。 |
ozone.scm.http-address | 0.0.0.0:9876 | SCM 服务器的 HTTP 地址 |
ozone.metadata.dirs | none | 用于存储持久化数据(RocksDB)的目录。 |
评论
登录后参与评论
KnowForge