CurveFS: AI 与大数据领域的降本增效利器

原创
2023/09/25 10:04
阅读数 299

项目背景

导语:Curve 是云原生计算基金会 (CNCF) Sandbox 项目,是网易主导自研和开源的高性能、易运维、云原生的分布式存储系统。分为 CurveFS (文件存储)和 CurveBS (块存储)。本文介绍 CurveFS 的项目思路、价值及未来规划。

在当今大数据和人工智能领域的快速发展中,随着数据量的爆炸式增长,对分布式文件系统的存储可扩展性、成本和性能提出了更高的要求。因此,我们开发了 Curve 共享文件存储系统来解决这些问题。

Curve 共享文件存储系统旨在解决以下三大问题:

  1. 可扩展性问题:随着文件数量的增长,现有的文件系统如 CephFS 和 HDFS 等元数据的可扩展性不足,无法满足大规模文件存储的需求。Curve 文件系统将提供可扩展的共享文件存储,解决元数据管理的问题;

  2. 性能问题:随着文件数量的增加,文件元数据的性能会大幅下降。此外,小文件的读写性能也比较差,这会对大数据和 AI 等业务产生影响。Curve 文件系统将优化元数据管理,提高文件检索效率,并改善小文件的读写性能;

  3. 成本问题:现有的文件系统通常采用两副本或三副本技术,但实际上 80% 的数据都是冷数据,使用多副本技术存储成本较高。Curve 文件系统将采用更高效的数据存储策略,降低存储成本,提高资源利用率。

项目思路和方案

文件系统的元数据独立存储

解决元数据增长带来的扩展性和性能要求。通过创新的设计和实现,使得其中元数据被存储在一个独立的集群中。随着文件数量的不断增加,元数据集群可以持续扩展,确保了元数据的线性扩展能力。这种设计有效地解决了传统文件系统在处理大规模文件时面临的性能和可扩展性挑战。

图片

Curve 共享文件存储系统通过对元数据进行合理的分片,使得多个分片可以分布在由多台服务器组成的元数据集群中。当前方案按照 inodeid 进行分片,按照算法serverid = (inodeid / inode_per_segment) mod metaserver_num进行分片。

例如,如果按照每个分片管理 100个 inodeid,有 3 个 metaserver,那么分片信息将如下。如果元数据数量增加,可以通过增加元数据集群的服务器来实现线性扩展的目标。

图片


文件系统数据存储的降本增效

文件数据最终存储在 S3 上,例如 NOS、阿里云OSS、AWS S3 等。S3 通常使用 EC 技术(一般可以支持1.2副本),相比 2 副本或 3 副本,在保证可靠性的同时可以大幅度降低存储成本。

以网易对象存储这边当前主流的 EC 20+4 使用为例,该使用方式相当于 1.2 副本。因此,以需要 1PB 使用空间为例,使用 Curve 共享文件存储系统+1.2  副本对象存储只需要 1.2PB 空间,相比本地盘 2 副本可以节省约 800TB 的容量,成本优化效果非常显著。

文件系统数据和元数据都支持多级缓存

在工程实践中,由于 S3 和元数据集群都需要通过网络进行访问,每次读写操作都会经过网络,这可能会对业务性能产生负面影响。为了解决这个问题,Curve 共享文件存储系统在保证多挂载点一致性的情况下,进行了数据和元数据的性能优化,主要思路是增加缓存。

数据支持多级缓存,包括:

  • 内存缓存:用于加速当前节点上的读写速度;

  • 本地缓存:同样用于加速当前节点上的读写速;

  • 全局缓存集群:用于加速当前节点以及多节点数据共享时的速度。

图片

元数据支持kernel缓存和本地缓存

缓存何时加载或失效是元数据缓存的难点。与采用分布式锁的做法相比,Curve 共享文件存储系统选择不实现复杂的分布式锁机制,而是基于业务分析不需要完全强一致性的前提,为每种类型的缓存数据制定了一些规则,在满足业务一致性的前提下提供了较好的性能。

此外,通过结合 VFS 层的重试机制,Curve 共享文件存储系统提供了完善的 CTO(close-to-open)一致性,完全满足 CTO 语义。相对于 JuiceFS 等依赖用户缓存时长配置来实现 CTO 的存储系统,Curve 共享文件存储系统具有更好的性能,并在任何场景下都能保证 CTO 一致性。

图片

文件系统支持数据预读和预热

支持预读(Prefetch),即在数据访问时,可以将文件超过访问长度外的数据提前读入缓存。

支持预热(warmup),AI 用户可以在训练前将云端数据按需拷贝到指定的任意缓存层。这样,在后续访问时可以提供更好的性能,大大节省训练时间。

图片

项目价值

杭研多媒体团队 AI 业务使用三副本 Ceph 内核文件存储来支撑 AI 场景,包括通用、AI 相关的各种流程。AI 业务存储的数据量是巨大的,但其中 80% 都是冷数据,使用三副本存储成本很高。业务期望找一个文件系统替换 Ceph,在保证性能的同时能够降低存储成本。

同样 Curve 共享文件存储系统可以无缝接入业务,目前杭研多媒体 AI 业务已全量迁入 Curve 共享文件存储系统,业务使用后的收益包括

  • 成本下降:Curve 共享文件存储系统 后端接入 NOS 低频存储,相比 3 副本存储每年每 PB 数据存储可节约 40% 成本;

  • 性能收益:在通用场景 Curve 共享文件存储系统性能和 Ceph 内核文件系统差不多持平,在 AI 存储密集型的特征提取和部分特征训练场景性能提升 30%+,计算密集型特征训练场景性能和 Ceph 内核文件系统持平。尤其是在昂贵的 GPU 节点上,存储性能提升可以带来更高的 GPU 利用效率,从而降低训练成本;

  • 提升训练任务并发度:使用 Ceph 文件系统作为 AI 训练数据集存储后端时,所有数据需要实时从存储后端读取,一旦业务有多个 AI 任务需要并发执行,就会导致 Ceph 文件系统存储后端负载超出集群总能力,最终导致训练任务耗时大大拉长。Curve 共享文件存储系统通过利用多级缓存加速能力,大部分训练数据只需要从存储后端读取一次即可缓存到本地或分布式缓存集群,从而降低对存储后端的性能需求,把负载分散到训练节点或分布式缓存集群,极大提升训练任务的并发度,减少多个训练任务之间的互相影响。

另外七鱼的 AI 业务以及云音乐广告算法团队 AI 业务也已经落地使用 Curve 共享文件存储系统,稳定运行半年多。

Curve 共享文件存储系统不仅适用于 AI 业务场景,还适用于 ElasticSearch 等大数据存储分析业务场景,目前也已在多家公司业务落地,比如金融行业的江苏农信,电信行业的易信蓝鲸等。

项目未来规划和展望

CurveFS 作为一个年轻的文件系统,存在很多的不足,也期望更多社区小伙伴跟我们一起来完善打磨这款开源软件。当前,CurveFS 仍在快速迭代发展中,后续将继续聚焦在 AI 、大数据存储等场景:

  • 和 AI 框架的融合:做到⾃动预热、训练节点和缓存节点的亲和性调度、与各类算法平台的深度融合等,进一步提升 AI 训练场景下的易用性和性能表现;

  • ⼤数据和 AI 的融合:提供 HDFS 接⼝,使⽤ Curve 共享文件存储系统即可以⽤在数据⽣产收集,也可以⽤于后续处理和训练;

  • 推动在更多大数据业务场景 (HDFS, Flink, Spark 等)的落地。

 

图片

------ END. ------

🔥 社区资讯

Curve 社区上半年 Roadmap 进展及下半年规划

🔥用户案例

Curve 文件存储在 Elasticsearch 冷热数据存储中的应用实践

扬州万方:基于申威平台的 Curve 块存储在高性能和超融合场景下的实践

创云融达:基于 Curve 块存储的超融合场景实践

🔥技术解析

Curve 控制台详细部署使用指南

Curve 混闪之性能优化记录

CurveBS RDMA & SPDK 部署指南

关于 Curve

Curve 是一款高性能、易运维、云原生的开源分布式存储系统。可应用于主流的云原生基础设施平台:对接 OpenStack 平台为云主机提供高性能块存储服务;对接Kubernetes 为其提供 RWO、RWX 等类型的持久化存储卷;对接PolarFS 作**为云原生数据库的高性能存储底座,完美支持云原生数据库的存算分离架构。

Curve 亦可作为云存储中间件使用 S3 兼容的对象存储作为数据存储引擎,为公有云用户提供高性价比的共享文件存储。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部