MDS
概要
MDS是中心节点,负责元数据管理、集群状态收集与调度。MDS包含以下几个部分:
-
Topoloy: 管理集群的 topo 元数据信息。
-
Nameserver: 管理文件的元数据信息。
-
Copyset: 副本放置策略。
-
Heartbeat: 心跳模块。跟chunkserver进行交互,收集chunkserver上的负载信息,copyset信息等。
-
Schedule: 调度模块。用于自动容错和负载均衡。
MDS是中心节点,负责元数据管理、集群状态收集与调度。MDS包含以下几个部分:
Topoloy: 管理集群的 topo 元数据信息。
Nameserver: 管理文件的元数据信息。
Copyset: 副本放置策略。
Heartbeat: 心跳模块。跟chunkserver进行交互,收集chunkserver上的负载信息,copyset信息等。
Schedule: 调度模块。用于自动容错和负载均衡。
topology用于管理和组织机器,利用底层机器的放置、网络的规划以面向业务提供如下功能和非功能需求。
curve整体的拓扑结构如下图:
chunkserver:用于抽象描述物理服务器上的一块物理磁盘(SSD),chunkserver以一块磁盘作为最小的服务单元。
server: 用于抽象描述一台物理服务器,chunkserver必须归属于server。
zone: 故障隔离的基本单元,一般来说属于不同zone的机器至少是部署在不同的机架,再要求严格一点的话,属于不同zone的机器可以部署在不同机架组下面(一个机架组共享一组堆叠 leaf switch),一个server必须归属于一个zone。
pool: 用于实现对机器资源进行物理隔离,pool中server之间的交互仅限于pool之内的server。运维上,可以在上架一批新的机器的时候,规划一个全新的pool,以pool为单元进行物理资源的扩容(pool内扩容也可以支持,但是不建议pool内扩容,因为会影响每个chunkserver上的copyset的数量)。
借鉴ceph的设计,curve在如上物理pool之上又引入逻辑pool的概念,以实现统一存储系统的需求,即在单个存储系统中多副本PageFile支持块设备、三副本AppendFile(待开发)支持在线对象存储、AppendECFile(待开发)支持近线对象存储可以共存。
如上所示LogicalPool与pool为多对一的关系,一个物理pool可以存放各种类型的file。当然由于curve支持多个pool,可以选择一个logicalPool独享一个pool。
通过结合curve的用户系统,LogicalPool可以通过配置限定特定user使用的方式,实现多个租户数据物理隔离(待开发)。
logicalPool:用于在逻辑层面建立不同特性的pool,比如如上AppendECFile pool、AppendEC pool 、PageFile pool;实现user级别的数据隔离和共享。