技术架构

arc

CubeFS 由 元数据子系统(Metadata Subsystem)数据子系统(Data Subsystem)资源管理节点(Master) 以及 对象网关(Object Subsystem) 组成,可以通过 POSIX/HDFS/S3 接口访问存储数据。

  • 资源管理节点:由多个 Master 节点组成,负责异步处理不同类型的任务,如管理数据分片与元数据分片(包括创建、删除、更新以及一致性检查等),检查数据节点或者元数据节点的健康状态,维护管理卷信息等

提示

Master 节点可以有多个,节点之间通过 Raft 算法保证元数据的一致性,并且持久化到 RocksDB 中。

  • 元数据子系统:由多个 Meta Node 节点组成,多个元数据分片(Meta Partition)和 Raft 实例(基于 Multi-Raft 复制协议)组成,每个元数据分片表示一个 Inode 范围元数据,其中包含两棵内存 B-Tree 树:inode BTree 与 dentry BTree。

提示

元数据实例最少需要3个,支持水平扩容。

  • 数据子系统:分为副本子系统和纠删码open in new window 子系统,两种子系统可同时存在,也都可单独存在:
    • 副本子系统由 DataNode 组成,每个节点管理一组 数据分片,多个节点的数据分片构成一个副本组;
    • 纠删码子系统(Blobstore)主要由 BlobNode 模块组成,每个节点管理一组数据块,多个节点的数据块构成一个纠删码条带。

提示

数据节点支持水平扩容。

  • 对象子系统:由对象节点(ObjectNode)组成,提供了兼容标准 S3 语义的访问协议,可以通过 Amazon S3 SDK 或者是 s3cmd 等工具访问存储资源。

  • :逻辑上的概念,由多个元数据和数据分片组成,从客户端的角度看,卷可以被看作是可被容器访问的文件系统实例。从对象存储的角度来看,一个卷对应着一个 bucket。一个卷可以在多个容器中挂载,使得文件可以被不同客户端同时访问。

在github上编辑