CubeFS 是国内首个云原生开源分布式存储产品,2019 年开源并捐赠托管至云原生计算基金会(CNCF),2020 年 10 月 OPPO 开始主导 CubeFS 社区运营与版本迭代,累计发布 7 个 release 版本。在 OPPO 的全力推进下,CubeFS 于 2022 年 6 月进入 CNCF 孵化阶段。
本文,我们与 CubeFS Maintainer OPPO 的何小春进行了对话,共同探讨 CubeFS 的技术演进及云原生存储技术的发展方向。
云原生存储技术“越来越分布式”
随着云计算时代的到来,5G 等场景下的大规模数据存储成为常态,超大容量、快速变化的 I/O 需求,对存储的弹性、运维及 TCO 都提出了更高要求。传统存储的紧耦合特点、烟囱式架构以及高昂的价格愈来愈无法满足企业的发展需要,于是基于分布式架构的软件定义存储(SDS)登上舞台。
我们从 SNIA 提出的 SDS 应具备的特性可以看出,其最大优势是实现软硬件的解耦,能够打破对于存储或传统存储的硬件依赖。而分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,既可提高系统的可靠性、可用性和存取效率,还易于扩展,能很好满足 SDS 的需求。
据 IDC 预测,2017—2022 年全球 SDS 市场规模平均增速达到 14.7%,国内 SDS 市场规模平均增速为 32.5%。我们可以清楚看到,SDS 呈现了从集中式逐渐过渡到分布式的趋势。
智研咨询发布的《2021-2027 年中国分布式存储行业市场研究分析及投资战略规划报告》显示,2020 年我国分布式存储行业市场规模 102.9 亿元,同比增长47%,其中分布式文件规模 48.36 亿元,成为市场主导。
行业趋势已然明了,但业内鲜有已投入生产且历经大规模流量考验的分布式存储系统可供选择, CubeFS 是其中一个。
存储技术革新:CubeFS 正式进入孵化阶段
CubeFS 作为国内首个开源分布式存储系统,2019 年由京东捐赠给云原生计算基金会,同期 OPPO 在大规模机器学习、大数据存储和其他传统的IT应用方面,对文件以及对象存储有强烈的需求,在经历 Ceph、HDFS 等多次技术选型后,OPPO 引入 CubeFS 并于 2020 年 10 月起,开始大量投入并全面主导 CubeFS 的社区运营与版本迭代。
何小春谈起 OPPO 的存储系统选型时说道,“我们需要一个在生产上真正好用的产品,一个在系统稳定性、可扩展性、IO 性能以及可维护性方面都表现优秀的产品,我们当时调研了许多行业里的产品,发现 CubeFS 最符合我们的业务需求,于是把产品引进来,并且投入了大量的研发人力,和社区伙伴一起共建 CubeFS。”
CubeFS 在进入孵化阶段之前,OPPO 在对产品的稳定性夯实、代码规范、社区治理、用户及开发者支持等方面做了很多工作。2020 年 10 月至今,OPPO 持续组织了多场社区例会,公布开发计划、认真听取了社区用户的建议。同时,OPPO 在整个产品文档建设方面也投入了许多精力,外部伙伴拥有更好的使用体验。
历经 2 年,CubeFS 正式进入孵化阶段。CubeFS 在产品成熟度、项目采用率以及社区持续性等方面取得一系列进展,目前已在 OPPO、京东、网易、360 等企业内被大量应用。历经多家公司多类业务负载的长期考验,CubeFS 的稳定性、扩展性、易运维性、性能、成本优势等各项数据都可以证明,其已是一款真正实现“生产可用”的产品:
稳定性:CubeFS 目前支撑着 OPPO 大数据、AI、云相册等各个业务累计 EB 级数据的存储;在其他公司的业务实践中,存储量也已达到数十 PB~百 PB 级;CubeFS 稳定性得到有效的验证。
高性能:在大/小文件读写、超大目录访问等场景都有优秀的解决方案,具体可参考 https://cubefs.readthedocs.io/zh_CN/latest/evaluation.html#io
可运维性:CubeFS 提供了易用的节点上下架、完整的指标监控、详细的Log以及配套的运维工具,让运维工作变得更简单高效;
高性价比:V3.0.0 版本发布的“在线纠删码”功能,对比之前的三副本存储,可有效降低存储成本。OPPO 在使用EC引擎后,业务整体 TCO 下降超60%;CubeFS 可以直接支持高精尖的芯片业务,比如支撑马里亚纳芯片设计的存储系统就是CubeFS,维护成本高、响应不及时、个性化需求难以满足的问题都得到了解决。
对在分布式存储方面有需求的企业和开发者而言,无论是底层引擎能力、元数据系统设计还是业务场景支撑维度上看,CubeFS 都可以很好的满足。
在整个 CubeFS 项目的开发过程中,作为 Maintainer 的何小春有许多启发,他认为,在做存储系统的技术选型时,企业除了需要考虑系统的稳定性、性能外,还要考虑成本与业务改造难度。“存储迁移的成本和风险都比较高,所以(某个系统)如果能够做到业务改造尽量小的话,用户就能很好地做出选型决策。”
何小春的这些考虑也都被纳入了 CubeFS 的设计之中。CubeFS 架构设计简洁,对代码质量有良好把控,二次开发成本更低;采用存算分离架构设计,支持可水平扩展的强一致性的元数据服务,数据存储支持多副本和纠删码两种引擎。此外,CubeFS 还支持多级智能加速能力,支持标准 S3、POSIX、HDFS 三种访问协议,与K8s、容器生态有良好的兼容性。
CubeFS 的开发者文档十分丰富,大大降低了企业和开发者的使用门槛。四个模块+三个节点便可以将整个存储集群搭建起来。如果使用“纠删码引擎”,模块会多一些,但 CubeFS 开发团队也正在对纠删码架构做进一步优化;从文档方面针对存储集群部署为运维者提供了丰富易用的操作文档。对于内部已经在运行 CEPH、HDFS 或其他主流开源分布式存储系统的企业, CubeFS 同样可以做到几乎零改动接入。
OPPO 的技术探索:亿级数据湖背后的存储技术
很多人都认为“数据湖”是下一代大数据平台,各大云厂商也都陆续提出了自己的数据湖解决方案,而从 OPPO 也从主导 CubeFS 项目后,就基于 CubeFS 对数据湖存储技术进行了探索。
数据湖最早是在 2010 年 10 月纽约 Hadoop World 大会上提出来的,在这样的大背景下,数据湖与 Hadoop 总是要一起被提起的。在 Hadoop 这个原生生态下,数据湖技术目前主要存在三个问题,第一是存储成本;第二是性能;第三个是业务侧的使用体验,于是 CubeFS 基于此提出了解决方案。
从成本方面,CubeFS 采存算分离的架构设计,各子系统可独立扩容;同时“在线纠删码引擎”可有效降低数据冗余度,节约存储成本,还能有效提升数据的耐久度。在未来,CubeFS 还将提供更智能的冷热分层能力,实现业务对对性能和成本双重需求。
从性能方面,CubeFS 针对小文件做了许多针对性优化,能够提供很好的小文件读写性能。CubeFS 支持多种访问协议,不同类型业务可以共享同一个存储集群,结合精细化租户隔离策略及不同租户间潮汐访问的特点,可有效提升存储集群关键资源( IO 和带宽)利用率,降低运营成本。
至于用户体验,用户通常指两类人员。一类是运维人员,从之前的要维护多套存储集群变成只维护 CubeFS 这一套集群,工作量大大降低,扩容、缩容过程也更加智能自动化,保证系统稳定性的同时,运维工作也变得更便捷。另一类是终端用户,CubeFS 提供的是统一数据底座和元数据管理,支持多种协议,极大程度上避免了用户对底层数据做多次拷贝,大幅提升数据复用效率。
整体而言,CubeFS 对于数据湖的探索,主要集中在元数据管理、纠删码存储与数据湖访问加速。从元数据管理方面,CubeFS 内存元数据分片通过 snapshot 方式持久化到磁盘以作备份及恢复使用。目前CubeFS单个目录支持百万级别容量,元数据全内存化,保证优秀的读写性能。
纠删码存储技术(EC)作为 CubeFS 的核心技术,目前已在 3.0 版本支持了,可有效降低海量数据的存储成本。CubeFS 单集群支持 EB 规模,相比传统的多副本存储,EC 的数据冗余度更低。其实现方式有多种,大多数是基于异或运算或 RS 编码。EC 的底层原理是“将 K 份原始数据,通过编码计算得到新的 M 份数据,当 K+M 份数据丢失任意的不多于 M 份时,通过解码可还原出原始数据”,有效地实现故障容灾。
CubeFS 在数据湖访问加速问题上提出了跨区域跨云的“多级缓存能力”和“谓词下推操作”两个解决方案。目前多级加速功能已上线,一级本地缓存与计算节点同机部署,支持元数据和数据缓存,支持内存、PMem、NVme、HDD 不同类型介质,访问时延低但容量少;二级全部分布式缓存副本数目弹性可变,提供机房位置感知能力,支持用户/桶/对象级的主动预热和被动缓存,数据淘汰策略也可配置。谓语下推操作策略显著减少了存储与计算节点间大量的数据流动,降低了资源开销并提升计算性能。
谈至此,何小春说到,“目前我们正在考虑解决“异构存储编排管理”问题,如把存量的文件或对象存储集群统一纳入管理,减少数据搬迁,该特点预计年底发布。”
其实 CubeFS 对于数据湖存储的探索不仅如此,除了以上三个核心技术,CubeFS 还正在设计一个基于混合云业务场景的架构;在产品特性方面推出了许多重要功能,如多版本快照、智能生命周期管理、数据容灾方面的跨区复制功能等。
关于 CubeFS 的未来,OPPO 有自己的想法
OPPO CubeFS 项目的 Maintainer 何小春提到 CubeFS 的未来规划,“全力推动并争取在2年内在 CNCF 毕业。”
为了顺利从 CNCF 毕业,CubeFS 将在核心重要特性、业务支撑范围、低成本运维能力建设等方面持续迭代与夯实。技术层面上主要进行三大技术演进,第一,在数据湖与 AI 领域,持续优化 CubeFS 的性能,为大数据及 AI 场景提供整体的存储及加速能力;第二,CubeFS 将逐步从数据中心向边缘设备进行扩展;第三,在混合云管理方面,结合私有云和公共云优势,提供具备高可扩展性、灵活性及成本优势,同时兼具数据安全性和隐私性的混合云存储能力。
一个优秀开源产品的发展需要更多社区力量的支持,OPPO 将在未来为社区共建做出更多努力,让更多用户和开发者参与到产品的建设中来,在一些关键场景上,共同开发出更多产品新特性。OPPO CubeFS 项目组目前也制定了一些比较明确的社区共建计划,除了之前已有的社区例会、文档更新外,还将组织系列技术沙龙,邀请社区伙伴共同分享 CubeFS 在公司业务场景中的详细实践。未来 CubeFS 将会和开源社区做进一步的融合,比如打通其他技术生态等,之后社区伙伴们可以直接在 CubeFS 官方技术公众号看到 CubeFS 项目的一些技术架构解析及运维心得。
“希望 CubeFS 能够被更多用户在生产中使用,能有更多的用户参与到产品建设中来。”何小春给了想要快速参与进 CubeFS 项目共建者3条建议:
1、先阅读官网文档,了解 CubeFS 整体设计,不要一开始就扎到代码里面去;
2、根据 CubeFS 的操作文档尝试搭建一个集群,看看它到底是有怎样的表现;
3、自己去提一些 Issue,或去承接一些 Issue 相关的任务,通过简单特性开发或 Bug 修复逐步了解系统。
在未来,CubeFS 作为一个成熟的开源项目,何小春说出了 CubeFS 研发团队对项目的期待,“当前,真正完整的开源分布式存储产品其实是非常稀缺的,我希望 CubeFS 能够填补分布式存储产品市场的“空白”,CubeFS 的目标就是成为具有全球影响力的分布式存储。”
写在最后
在存储层面,我们看到整体都在朝着越来越分布式的方向发展,这一切都是因为传统存储的扩展性受限,当下环境下日益增长的数据存储容量需求,对存储系统稳定性、性能及成本的要求越高,“云原生分布式存储”的呼声就会越热。
随着企业数字化转型进入深水区,混合云的业务场景也越来越多,在未来,如何将本地存储与公有云存储打通、企业如何继续使用原来存储方式的同时,还能享受到分布式存储系统所具有的弹性及低成本能力,这将是一个非常值得探索的技术方向。