ChubaoFS 基础
简介
ChubaoFS是一个开源的分布式文件存储系统,同时提供
POSIX FS
和S3
两种访问接口。2018年由JD TigLab开发,2020年加入CNCF基金会,现为CNCF沙箱项目;
ChubaoFS的设计之初是为大规模容器环境提供分布式的文件存储服务;
特点
- 高可扩展:ChubaoFS的所有组件都是支持分布式部署,数据资源通过分片实现横向扩展;
- 高可靠:各个资源节点通过multi-raft协议提供的多副本强一致性来保证数据的高可靠;
- 多协议支持:同时支持POSIX FS 和S3 协议;
- 大小文件优化:ChubaoFS对于大小文件在底层,使用不同的方式进行优化,同时兼顾了大小文件的性能和存储开销;
- 多写入模式支持:同时支持顺序写、随机写2种写入模式;
- 动态资源调度:ChubaoFS的资源管理基于负载的动态调度算法,能合理分配资源,调度资源,避免热点;
- 部署简便:各组件部署不依赖其他组件,部署方便;同时提供docker,k8s容器部署组件;
架构
组件
资源管理节点(
Master
):执行集群资源管理、分配、调度的节点,资源管理节点只参与资源管理和调度,不进行具体的数据读写;元数据节点(
MetaNode
):提供文件元数据(Meta
)管理、存储服务的节点,文件元数据包括inode、dentry、extend等,通过分片(MetaParitition
)分布到不同的元数据节点,通过multi-raft保证多副本一致性;数据节点(
DataNode
):提供文件数据(Data
)管理、存储服务的节点,文件数据通过数据分片(DataPartition
)分布到不同的数据节点,通过多副本保证数据高可用;对象存储节点(
ObjectNode
): 提供S3访问服务的节点,ObjectNode
节点主要提供S3协议解析及uri映射功能,为无状态节点,可以动态部署;Fuse客户端(
Client
): Fuse客户端为用户提供POSIX FS文件访问接口;
基础概念
集群(
Cluster
):一组建立副本关系的Master
和由其管理的MetaNode
,DataNode
,ObjectNode
节点构成一个集群;卷(
Volume
):卷是一个逻辑视图,每个卷由一组相关的MetaPartition
, 数据分组DataPartition
组合;数据分片(
DataPartition
): 数据分片是文件数据管理的单元,chubaofs在数据分片为单位来实现数据的分布,复制等管理,从而实现数据的扩展和高可用;元数据分片(
MetaPartition
): 元数据分片是文件元数据管理单元;副本组(
Replicas
):数据集(
Extent
):
资源管理
Master是chubaofs系统中进行资源管理、分配的组件;
Master主要管理chubaofs集群中的所有元数据节点(metanode),数据节点(datanode)及这些节点上的mp,dp等资源;
Master通过raft来实现多节点部署时的数据同步,以提供master的高可用;
Master只有一个Leader节点提供服务,非Leader节点只作为备份节点,只是作为Leader节点的数据副本;当发生Leader切换时,新当选的Leader提供继续提供服务;
Master只参与资源管理和分配,不参与具体的读写流程,轻量化;
Master主要管理的资源包括:
MetaNode节点管理;
DataNode节点管理;
Volume资源管理;
用户管理;
状态监测;
元数据管理
数据管理
FuseClient
S3
加载Volume
数据修复
未来
metanode内存优化;
datanode nvme+spdk优化;
网络库优化;
raft 优化;
web console;
EC node;