存储汇总
存储汇总
存储系统
CubeFS 总结
CubeFS 是一个开源的云原生分布式文件系统,于2024年成为云原生计算基金会(CNCF)毕业项目。它旨在通过一套存储系统同时支持文件、对象和大数据等多种存储协议,并能灵活适配从高性能计算到海量冷数据归档的多样化场景4。
核心特性
-
多协议支持
CubeFS 兼容 POSIX(如本地磁盘)、S3(对象存储)、HDFS(大数据)协议,且数据在不同协议间互通4。 -
双存储引擎
- 多副本引擎:提供高可用性和低延迟,适用于对性能要求高的场景。
-
纠删码引擎:具备高可靠性、高可用性、低成本的特点,支持超大规模(EB级别)存储4。
-
云原生与可扩展性
- 原生支持多租户隔离和容器存储接口(CSI),易于在 Kubernetes 上部署和运维4。
- 各模块可水平扩展,轻松构建 PB 或 EB 级规模的分布式存储服务4。
应用场景
CubeFS 的应用场景非常广泛,主要包括4:
- AI/机器学习平台:为 AI 训练、模型存储及分发提供支撑。
- 大数据分析:兼容 HDFS 协议,可作为 Hadoop 生态(如 Spark、Hive)的统一存储底座。
- 容器平台存算分离:多 POD 间通过 CubeFS 共享持久化数据。
- 数据库及中间件数据存储:为 MySQL、ElasticSearch 等提供高并发、低时延的云盘服务。
- 在线服务与内容存储:为在线业务或终端用户的图、文、音视频等内容提供高可靠、低成本的对象存储服务。
技术架构
CubeFS 的架构主要由以下组件构成4:
- Master:资源管理节点,负责管理整个集群的元信息。
- MetaNode:元数据节点,负责存储文件元信息。
- DataNode:数据存储节点,负责文件数据的实际存储。
- ObjectNode:对象存储节点,提供 S3 协议兼容的访问能力。
部署方式
CubeFS 支持多种安装方式,其中在 Kubernetes 集群中部署是常见选择4:
- 可以使用 Helm 工具进行部署。
- 部署时,Master 通常部署为 StatefulSet,DataNode 和 MetaNode 部署为 DaemonSet,ObjectNode 部署为 Deployment。
- 需要通过节点标签(nodeSelector)来指定各组件运行的节点。
JuiceFS^2
我们使用了 JuiceFS 来管理对象存储。TiKV 和 K8s 来搭建元数据存储系统。对象存储部分使用了 SeaweedFS,这使得我们能够快速扩展存储规模,且无论是小数据还是大数据,访问速度都很快。此外,我们的对象存储分布在多个平台:包括本地存储、阿里云存储以及国外的 R2 和 Amazon 对象存储。通过 JuiceFS,我们能够将这些不同存储系统集成起来,并提供一个统一的接口。^4
在使用 GlusterFS 时,我们每天最多只能处理 20 万个模型;而切换到 JuiceFS 后,处理能力大幅提升,日均数据处理能力增加了 2.5 倍,小文件吞吐能力也显著提高,特别是在存储量达到 70% 后,系统仍能保持稳定运行。此外,扩容也非常便捷,而之前的架构,扩容过程非常繁琐,操作起来比较麻烦。
尽管MinIO集群提供了一个巨大的、兼容S3协议的对象存储“桶”,但JuiceFS的作用是为这个“桶”加上一个强大的“文件系统大脑”,解决对象存储固有的痛点。