Storage Container Manager
Storage Container Manager (SCM) 是块空间管理的 leader 节点,其主要职责是创建和管理容器,而容器也是 Ozone 的主要复制单元。
主要职责
Storage Container Manager (SCM) 为 Ozone 集群提供了多项关键功能,承担了集群管理器、证书颁发机构、块管理器以及复制管理器的角色。
SCM 负责创建 Ozone 集群。当通过 init
命令启动 SCM 时,SCM 将创建担任证书颁发机构所需的集群 ID 和根证书。同时,SCM 负责管理集群中数据节点的整个生命周期。
-
SCM 作为块管理器,负责将块分配给相应的数据节点,客户端可以直接读写这些块;
-
SCM 负责跟踪所有块的副本,当有数据节点或磁盘掉线,SCM 侦测到后,会启动相应的数据节点复制缺失的块,以确保高可用;
-
SCM 的证书颁发机构 负责为集群中的每个服务颁发身份证书,这种证书架构可以很方便地在网络层启用双向认证(mTLS)。同时,Ozone 的块令牌也依赖于这种证书架构。
主要组件
针对 Storage Container Manager 的详细视图,本节提供有关网络服务和持久化数据的快速概述。
Storage Container Manager 提供的网络服务:
- 管道: 列出/删除/激活/停用
- 管道是形成一组复制组的数据节点
- SCM 负责划分 Raft group
- 容器: 创建/列出/删除容器
- 管控相关的请求
- 安全模式的状态查看/修改
- 复制管理器的启动/停止
- 证书鉴权服务
- 其他服务组件所需
- 数据节点的心跳协议
- 从数据节点到 SCM(默认是30秒)
- 数据节点上报容器和节点的状态
- SCM 可以添加命令到心跳回包中
注意:客户端不能直接连接 SCM 。
持久化状态
以下数据持久化在 Storage Container Manager 端的指定 RocksDB 目录中
- 管道
- 服务器的复制组,维护以用于查找新容器或块分配的组
- 容器
- 容器是基本的复制单元,数据用于防止复制不足或过度复制。
- 删除块
- 块数据在后台删除时,需要一个列表来跟踪进度
- 有效证书,失效证书
- 由内部证书颁发机构来授权其他 Ozone 服务
需要关注的配置选项
配置项 | 默认值 | 描述 |
---|---|---|
ozone.scm.container.size | 5GB | Ozone 使用的默认容器的大小 |
ozone.scm.block.size | 256MB | 数据块的默认大小 |
hdds.scm.safemode.min.datanode | 1 | 能够启动实际工作所需的最小数据节点数 |
ozone.scm.http-address | 0.0.0.0:9876 | SCM 服务端使用的 HTTP 地址 |
ozone.metadata.dirs | none | 存储持久化数据的目录(RocksDB) |