写点什么

从开源 CubeFS 看云原生存储技术的演进与创新

  • 2024-10-09
    北京
  • 本文字数:4800 字

    阅读完需:约 16 分钟

大小:2.32M时长:13:32
从开源CubeFS看云原生存储技术的演进与创新

在人工智能的快速发展中,生成式人工智能已经成为许多应用的核心支柱。然而,在这场人工智能革命的表面下还隐藏着一个关键的元素:存储层。随着大模型技术的突破,人工智能正推动各行业变革,存储服务也在不断演进,以满足大模型技术对高效数据处理的需求。

 

CubeFS 作为新一代云原生存储产品,首次亮相是在 SIGMOD 会议上发表的论文《CFS: A Distributed File System for Large Scale Container Platforms》中,并于 2019 年正式对外开源。同年,CubeFS 加入 CNCF 开源基金会,成为“沙箱”项目,并于 2022 年进入“孵化”阶段。目前,CubeFS 已在大数据、AI、存算分离、互联网文件业务等多个场景中得到了深入和广泛的应用,并已在 OPPO、京东、贝壳、网易、小米、BIGO 等互联网公司中实现了大规模生产应用。

 

采访嘉宾:常亮,OPPO 分布式存储专家,云计算部文件存储负责人。从事存储方面研发 10 余年,曾就职于华为、腾讯等企业。他也是开源项目分布式文件系统 CubeFS 的 TSC Member,主导了 CubeFS 进入 CNCF 的孵化,目前在正在负责 CubeFS 在 CNCF 的毕业相关事项。在即将召开的 QCon 上海 2024,常亮将分享更多分布式文件系统的演进与 AI 时代的思考。



InfoQ:数据平台的存储层基础设施,在过去十年发生了哪些显著变化?这些变化背后的驱动力是什么?

 

常亮:存储平台演进变化的背后就是行业的不断发展。

 

十年前,正是移动互联网最火热的时期,海量存储和业务需求到了一个新的阶段,数据从传统的文件、图片、音视频存储,到文档、结构化、半结构化、数据库等领域的存储,也从单机到分布式再到全球存储。集群成本的控制,性能、成本、稳定性、易维护、容灾调度能力等都有了新的需求,随后,各大厂商对中台建设形成了共识,纷纷构建自己的中台系统,经过几年的发展基本上都能够对外提供相对完善的云计算服务。

 

近年来,随着生成式人工智能的快速发展,我们已感受到第四次工业革命的气息,如何为大规模 AI 提供高效稳定的数据存储与管理能力,既是机遇,也是挑战。同时,AI 赋能千行百业,其作为重要引擎,也将成为存储产品持续优化的核心动能。

 

InfoQ:业界已经有一些应用广泛的分布式存储系统,那么为什么还会重新研发一套开源的分布式文件系统 CubeFS 并开源?与 CephFS 有哪些显著差异?

 

常亮:2015 年后,随着移动互联网的发展,对于存储系统的需求更为具体和明确,其中通用性成为了一个重要特点,例如对于 POSIX 文件的操作修改等标准接口、能力需求又回归到了构建一套分布式文件存储系统本身,人们需要一套系统解决海量文件存储的各种问题,其中 Ceph 逐步成为影响力比较大的分布式文件存储系统,CephFS 是基于 Ceph 的对象存储实现的分布式文件系统,它利用 Ceph 的底层对象存储来管理文件和目录,提供高可用性和可扩展性。

 

但基于对象的 CephFS 分布式文件存储,初期架构元数据系统 MDS 不可扩展,再加上百万行级别的代码的系统维护极其困难,一般情况下需要一个专业的团队来运营 Ceph,而且因为 MDS 的亲和性和锁粒度问题,很容导致死锁问题,影响线上运营。

 

而作为 CNCF 基金会唯一处于毕业最后阶段的一站式存储服务平台,CubeFS 具备多协议、可扩展元数据、混合云存储等诸多特性,在架构上属于新一代存储架构,拥有卓越的扩展性和容灾能力,在性能方面也成功规避了传统路径上的一些短板。尤为值得一提的是,CubeFS 没有商业版本,所有特性均向社区开放,这使其具有更高的透明度和更强的持续性。它能够更好地与不同厂商协作,有力地促进社区的蓬勃发展。

 

CubeFS 元数据支持百万级 QPS,可满足海量小文件的大模型训练高 IOPS 需求。下图是 CubeFS 与开源 CephFS 在大文件、小文件场景的 IOPS 性能对比,可以看到 CubeFS KB 小文件读写性能明显优化 CephFS, 这得益于 CubeFS 高效的元数据管理能力。

 


InfoQ:CubeFS 更适合哪些类型的应用场景?它在哪些方面具有竞争优势?

 

常亮:应用场景:

 


上图是 CubeFS 的系统架构,CubeFS 可以支持传统的海量存储业务,百亿级别文件,上千节点的大机群存储。在大数据、AI、存算分离、互联网文件业务等场景有非常深入和广泛的应用。



竞争优势:

 

一、具备完整能力的自闭环的存储产品

核心模块从客户端、管控、两个数据存储子系统、元数据系统等所有模块都是社区自己开发维护的,从而所有的代码都能够有很好的维护支持,团队能够更为系统的规划未来演进,定制业务需求,不需要担心第三方组件带来的需求匹配问题。

 

二、高性能元数据管理

  • 可扩展性:元数据分片,新建文件 inode 随机分布,元数据节点可增加。

  • 强一致:基于 raft 实现元数据副本的一致性。

  • 弱亲和性:目录 inode 和子文件 dentry 的关联关系,父目录 inode 和子文件 inode 没有绑定关系。

  • 基于 Btree 的元数据内存索引提供高效查询性能

  • 基于 rocksdb 的持久化索引( 稳定性测试中 ),适配成本优化,这里后续可以借助 rocksdb 实现更多的元数据分片操作和 inode、dentry 的亲和性调整。

 

三、多协议兼容

CubeFS 支持了 HDFS 接口,结合大数据纠删码,支持数据入湖,作为存储底座,把海量、成本、性能等都一站式解决。

 

CubeFS 支持了协议兼容,文件和对象可以互通访问,业务可以根据需要选择或者一起使用。对象存储因为接口是 restful 的形式,这样对于业务不需要额外的配置或者库就能够使用。

 

CubeFS 提供 SDK 开发接口,对于存算分离,减少 Fuse 等组件对于性能的影响,从而可以更好的提高性能。

 

四、混合云管理

一期:CubeFS 混合云存储一期( 稳定性测试中 )

 

  • 基于多存储介质类型的数据空间划分、管理规则、可控机制

  • 基于多存储介质类型的数据的生命周期模型、迁移规则、迁移机制

  • 元数据索引对接基于多存储介质类型,配合迁移实现无缝的索引变更

 

基于一期我们可以实现基于生命周期规则的数据的单向迁移,例如冷热分层,从 SSD 副本到 HDD 副本存储,或者 SSD 副本到纠删码存储。

 

二期:实际上,基于混合云一期构建的基础,还可以实现。

 

  • 数据分层流动,可以为后续提供基于生命周期的数据的流动规则,不仅仅是单项流动。根据规则配置可以实现多种的数据迁移能力。不仅仅是数据中心内的流动,也可以是云上云下的迁移调度。

  • 支持第三方存储,可外接 S3 等其他存储,提高更为丰富的数据部署能力。

  • 数据备份,根据生命周期规则,实现数据自动备份,构建备份恢复规则,元数据索引支持创建新的对应备份元数据信息。

  • 数据碎片整理,和本地文件系统一样,碎片产生原因较多也比较复杂,碎片整理有助于系统的稳定性和减轻空间的管理负担。可以通过生命周期来实现。

  • 数据分区收缩,数据分区管理单元过多对系统管理有一定的负担。通过混合云可以搬迁数据分区逻辑单元,从而注销掉过多的数据分区。

 

五、多层次的读写加速能力

 

加速能力是 CubeFS 近期投入的重点方向,并且有望成为其后续的突出亮点之一。加速功能可视为混合云的重要组成部分,对云上云下数据的同步起着至关重要的作用。目前,加速主要涵盖以下几个方面:

  • 内部的读写性能的优化基于 Fuse 的一些并发能力受限考虑放开内部的关键路径继续优化,减少性能损耗写入流程优化,减少 meta 路径的频繁请求

  • 全链路 RDMA 能力改造,RDMA 是未来的标配场景,读写路径、同步路径都会带来显著的收益。

  • 分布式缓存,尤其对于 AI 场景,云上的算力使用有很大帮助。我们会基于此点在云上构建更多的能力。

 

InfoQ:GenAI 的兴起意味着存储必须发展,那么对比上一代存储系统,AI 数据存储面临怎样的挑战?

 

常亮:主要有四大挑战。

 

挑战一:大容量与高效数据互通

大模型的工作流依赖海量数据的快速归集、多渠道治理、数据在不同流通环节能共享及互通,要求存储支持海量数据规模的同时,能对不同生命周期、不同热度的数据做到统一存储,各种超大目录、海量小文件弹性元数据管理, 并支持多种协议的数据快速接入。

 

挑战二:强悍性能及超高稳定性

如何匹配强大的 GPU 算力,让 GPU 零等待,考验存储的并行 IO 能力。存储足够稳定、checkpoint 能快速保存,中断后能快速恢复才能避免训练不被中断阻塞,存储强悍的性能及稳定性是降低大模型的训练成本的关键。

 

挑战三:快速线上部署能力

模型更新效率关系业务收益。如何快速、频繁、一致地将数 GB 级别的模型分发到线上,对存储并发 IO、吞吐、流程简便性都有极高的要求。




挑战四: 算力紧张

大量厂商自购 GPU 卡严重不足,或者担心资源浪费,所以纷纷开始使用云上算力进行大模型训练,这意味着存储也要适配云上的服务,支持混合云的存储,支持多地域分布。

 

分布式存储平台需要减少 AI 业务在数据方面的数据迁移、成本控制等方面的顾虑,构建好数据的生命周期,做好云上云下的数据协同。

 

InfoQ:有观点说,AI 工作负载带来的数据吞吐量是传统计算的 300 倍,那么 CubeFS 在应对如此高的吞吐量方面有哪些优化措施?以及 CubeFS 是如何应对 AI 工作负载带来的其它挑战的?

 

常亮:工作负载确实会导致数据吞吐量显著增加,但具体的倍数(如 300 倍)可能会因应用场景、模型复杂性和硬件架构等因素而有所不同,但更多的时候体现在训练阶段,这里普遍的解决方案是使用缓存,CubeFS 同样提供了分布式缓存服务,预热能力,可以很好的解决这一问题。

 

CubeFS 支持两级缓存加速,全量或者部分缓存训练数据,每轮 epoch 数据大部分都能从本地或者缓存节点读取, 大幅提升 IO 效率。

 


InfoQ:在 AI 训练过程中,如何有效地排查数据丢失或损坏问题?CubeFS 提供了哪些工具或机制来辅助故障诊断和修复?

 

常亮:CubeFS 在数据和元数据方面都是基于强一致协议的存储引擎,有完备的磁盘坏盘检测、修复、校验码校验等技术手段和方法,能保证问题数据被快速检测、快速修复。在即将发布的 3.4 版本,我们会发布分区异常的自动化检测和修复的能力,下图是我们的系统架构。

 


基于状态机实现了数据迁移、流控、回滚、前滚的过程,对于系统分区异常可以自动检测自动修复。对于 HDD 磁盘,尤其是接近过保的机器,都可以有很好的运营效果,极大减少运维人员的压力,增强数据的可靠性。

 

InfoQ:您如何看待未来分布式存储的发展趋势?

常亮:十年来,计算机领域先后掀起了云计算、互联网金融、元宇宙、物联网、虚拟现实(VR)、自动驾驶等一系列重要的技术浪潮。在这些技术浪潮的背后,存储始终作为核心基础设施,发挥着至关重要的作用。例如,在云计算中,存储为数据的可靠存储和快速访问提供了保障;在物联网中,存储能够应对海量设备产生的数据。企业在追逐这些技术浪潮的过程中,有的经过了深思熟虑,有的则稍显急躁冒进。但无论如何,存储都是不可或缺的。

 

如今,人工智能推动计算机领域迈入了全新的时代,大模型技术的出现更是引发了各行业的颠覆性创新。作为云基础设施的重要组成部分,存储本质上是为数据服务。AI 存储也会随着 AI 赛道的发展变化而不断调整,将持续致力于为大模型技术栈构建一站式存储服务作为重要的发展方向。

 

存算分离场景在未来仍将持续发展。通用性的存储平台与定制化的存储平台之间的竞争也将继续。成本、性能以及特性能力,无论是过去、现在还是将来,都是竞争的焦点所在。

 

分布式存储需要更加紧密地贴近业务需求。一方面,要提前进行布局,通过架构改造,及时跟上场景变化,甚至推动行业的发展。例如,可以采用新兴的存储技术,对业务需求进行深入分析,制定个性化的存储解决方案。另一方面,在未来,多云和混合云将会成为常态,企业会采用不同云服务厂商的服务,或者进行切换,以灵活地、最大限度地降低企业运营成本。分布式存储系统需要提升云上的运营部署能力,结合云上的资源、存储服务和第三方服务,与云上生态系统紧密结合,构建灵活的部署能力,打通云上云下的数据通路。


活动推荐

10 月 18 日 -19 日,QCon 全球软件开发大会将在上海举办。从云原生工程、架构、线上可靠性、大前端、技术管理等经典内容,到 AI Agent、AI Infra、RAG 等大热的 AI 话题,60+ 资深专家共聚一堂,深度剖析相关落地实践案例,共话前沿技术趋势。大会火热报名中,详情可联系票务经理  17310043226 咨询。


2024-10-09 15:542253

评论

发布
暂无评论

Java中关于多线程的知识点

Java学术趴

7月日更

架构实战营模块7作业

挖了蘑菇哩斯

架构实战营

正则什么的,你让我写,我会难受,你让我用,真香!

掘金安东尼

前端 正则 7月月更

前端网络之跨域请求

Jason199

跨域 7月月更

从日常小事看如何工作

耳东@Erdong

7月月更

Okaleido tiger NFT即将登录Binance NFT平台,你期待吗?

股市老人

STM32+ENC28J60+UIP协议栈实现WEB服务器示例

DS小龙哥

7月月更

鸿蒙eTS版天气预报

坚果

开源 HarmonyOS OpenHarmony Open Harmony 7月月更

王者荣耀商城异地多活架构设计(架构实战营 模块七作业)

Gor

如何分析并设计性能测试场景

老张

性能测试 需求分析

【函数式编程实战】(一)Java演变与函数式编程

小明Java问道之路

Lambda stream 函数式编程 7月月更

Docker小白的福音:50条Docker命令清单,干就完了!

wljslmz

Docker Linux Docker 镜像 7月月更

【MySql 实战】以 sql 的方式多表联动更新数据

安逸的咸鱼

MySQL 实战 7月月更

mysql进阶(十四) 批量更新与批量更新多条记录的不同值实现方法

No Silver Bullet

MySQL 数据库 7月月更 批量更新

Envoy负载均衡与限流设计

阿泽🧸

7月月更 Envoy负载均衡

王者荣耀商城异地多活部署设计

Geek_e8bfe4

王者荣耀商城异地多活架构设计

Geek_7a789a

云原生(九) | Devops篇之Jenkins安装与实战

Lansonli

云原生 7月月更

TableWidget 排序的多种方式

小肉球

qt 7月月更

一年时间过去了,LiveData真的被Flow代替了吗? LiveData会被废弃吗?

编程的平行世界

android android jetpack

python小知识-如何判断一个对象为空值

AIWeker

Python python小知识 7月月更

zookeeper-集群leader选举

zarmnosaj

7月月更

架构师成长:关于我在 ArchSummit 大会收获了什么

宇宙之一粟

架构 个人感悟 ArchSummit 7月月更

关于Web响应式设计

程序员海军

Web 7月月更 响应式设计

Okaleido tiger NFT即将登录Binance NFT平台,NFT权益时代即将开启

鳄鱼视界

iOS中内存管理(Autoreleasepool)

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

Web3流量聚合平台Starfish OS,给玩家元宇宙新范式体验

股市老人

树莓派3B搭建Flink集群

程序员欣宸

Java flink 树莓派 7月月更

C#入门系列(二十六) -- 程序集和命名空间

陈言必行

7月月更

从开源CubeFS看云原生存储技术的演进与创新_云原生_Tina_InfoQ精选文章