技术架构
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个,支持水平扩容。
- 数据子系统:分为副本子系统和纠删码 子系统,两种子系统可同时存在,也都可单独存在:
- 副本子系统由DataNode组成,每个节点管理一组 数据分片,多个节点的数据分片构成一个副本组;
- 纠删码子系统(Blobstore)主要由BlobNode模块组成,每个节点管理一组数据块,多个节点的数据块构成一个纠删码条带。
提示
数据节点支持水平扩容。
对象子系统:由对象节点(ObjectNode)组成,提供了兼容标准S3语义的访问协议,可以通过Amazon S3 SDK或者是s3cmd等工具访问存储资源。
卷:逻辑上的概念,由多个元数据和数据分片组成,从客户端的角度看,卷可以被看作是可被容器访问的文件系统实例。从对象存储的角度来看,一个卷对应着一个bucket。一个卷可以在多个容器中挂载,使得文件可以被不同客户端同时访问。
在github上编辑