写点什么

九识智能:基于 JuiceFS 的自动驾驶多云亿级文件存储

  • 2025-10-27
    北京
  • 本文字数:3542 字

    阅读完需:约 12 分钟

九识智能:基于 JuiceFS 的自动驾驶多云亿级文件存储

九识智能 Zelos 是一家专注于自动驾驶与无人配送技术的高新技术企业,具备自动驾驶系统及 AI 芯片的自主研发与规模化落地能力。公司核心产品已在全国 200 多个城市广泛部署,整车销售市占率超过 90%,在中国 L4 城配自动驾驶领域持续领先。


随着业务迅速扩展,公司数据体量从 TB 级快速增长至 PB 级,原有基于 Ceph 的存储方案面临高昂成本与维护压力,同时在处理小文件、元数据、高并发及延迟等方面逐渐出现性能瓶颈,影响仿真和训练效率。


此外,随着算法迭代加速和跨地域业务部署,多云环境下的数据流转与资源调度需求日益频繁,但存在数据分散、迁移成本高和调度复杂等问题。部分存储工具社区支持有限、响应慢,进一步增加了运维难度。


面对这些挑战,九识智能亟需构建一套具备高性价比、强扩展性和易运维能力的云原生存储架构。在系统评估了 Alluxio、CephFS 等方案后,最终选择采用 JuiceFS 作为统一的存储基础设施。目前,九识已将生产、仿真、训练与推理等核心业务数据全面迁移至 JuiceFS,构建起一个高效、灵活、统一的存储底座,全面支撑自动驾驶多场景下的海量数据处理需求。


自动驾驶训练流程与存储挑战


九识智能目前致力于 L4 级别自动驾驶技术的研发,主要聚焦于城市智能配送物流场景的应用。在自动驾驶模型的训练过程中,会产生大量数据,并涉及复杂的处理流程。以下为我们自动驾驶训练的基本步骤:


  • 数据采集与上传:在车辆上开展标定工作以采集数据,随后将采集到的数据上传。

  • 算法处理:算法部门提取相关数据用于模型训练或算法改进,之后将结果交由仿真环节进行打分。

  • 仿真验证与修改:若仿真失败,返回算法部门进行修改;若仿真成功,则进入模拟环境验证阶段。

  • 测试车辆验证:在模拟环境验证通过后,在测试车辆上进行测试。若测试失败,再次返回修改环节;若测试成功,则发布到 OTA。


在整个流程中,数据量急剧增长。每辆车每日约上传十几 GB 数据,随着车辆规模扩大,总数据量已达 PB 级别,尤其在模型训练阶段需高效提取和使用海量数据,对存储系统的性能、扩展性和稳定性提出了极高要求。


为满足自动驾驶研发全流程对数据的需求,九识智能需要建立一个具备以下特性的存储平台:


  • 高性能 I/O:能够在训练和仿真阶段支撑海量数据的高并发读取与低延迟访问。

  • 弹性扩展性:可随着车辆规模扩大灵活扩展至 PB 级甚至更高的数据存储需求。

  • 跨云兼容性:支持多云与自建环境的统一接入,保障数据在不同环境间的流转与一致性。

  • 易运维性:提供简化的管理与监控能力,降低运维复杂度,确保系统长期稳定运行。

  • 成本效益:在保证性能和稳定性的同时,控制总体存储成本,实现资源利用最大化。


存储选型:JuicsFS、Alluxio、 CephFS


基于上述需求,我们尝试使用了多种存储方案,包括 Alluxio、JuiceFS 和 CephFS。


Alluxio 通过 Master 来进行元数据管理,熟悉难度较高。需要单独部署 Master、Worker 集群,运维复杂度高,且在社区版使用中遇到了诸如卡死、I/O 异常等问题。



各文件系统架构


CephFS 方面,其元数据存储在自有 MDS 中,而数据则存放于 RADOS 中,相比之下, JuiceFS 支持多种后端存储(如 S3、OSS 等),元数据可依托外部数据库(如 Redis、TiKV)管理,架构更为灵活。


此外,CephFS 的部署和调优极为复杂,需专业团队深度参与。我们在自建 Ceph 集群时发现,扩展 OSD 及数据再均衡耗时漫长,小文件写入性能较差,出现写入速度低下等问题,且因其架构复杂,调优困难,最终决定放弃该方案。



CephFS vs JuiceFS


JuiceFS 能够将各类对象存储接入本地,并支持跨平台、跨地域的多主机同时读写。采用数据与元数据分离存储的设计,文件数据经切分后存储于对象存储,而元数据可保存在 Redis、MySQL、TiKV 或 SQLite 等多种数据库中,用户可根据实际场景和性能需求灵活选择,并且极大简化了运维工作。


相比之下,JuiceFS 在多方面表现更为出色。尤其在小文件高并发读取场景中,性能符合我们的需求,因此约一年前我们全面转向 JuiceFS,并在多云架构中广泛应用。


JuiceFS 在多云环境中的应用与实践


JuiceFS 采用元数据与数据分离的存储架构:元数据层支持多种数据库引擎,包括 Redis、MySQL、TiKV、SQLite 等,用户可根据业务规模与可靠性需求灵活选择;数据层则基于主流对象存储,实现与不同存储系统的无缝对接。



JuiceFS 社区版架构


目前,我们的系统部署覆盖联通、电信、火山、移动、AWS 等多个云平台,均采用 JuiceFS 作为核心存储组件。在不同环境中,我们灵活搭配后端存储与元数据引擎。在自建 IDC 机房中,采用 MinIO 作为对象存储,配合 Redis 管理元数据;在公有云环境中,则使用 OSS 与 Redis 组合。这一架构不仅提升了系统灵活性,而且在一年多来的实际运行中表现稳定,完全满足业务需求,具备良好的可用性和用户体验。


在 Kubernetes 集群中,我们基于 JuiceFS 提供的 CSI 驱动进行了部署,整体方案与 Kubernetes 兼容性良好。我们直接使用官方提供的 Helm Charts 来创建和管理 JuiceFS 存储卷,并根据不同业务的需求,配置了对应的 Chart,分别对接后端的 Redis 及 OSS 存储。


在节点本地,我们为 JuiceFS 缓存分配了 NVMe 高速固态硬盘,将其挂载至 /data 目录。用作缓存层,可显著提升读取性能:一旦数据被缓存,后续读取同一文件的请求可直接从本地 NVMe 盘中获取,读写效率极高。


实践 1-JuiceFS 在训练平台的应用:面向上亿规模文件的高并发访问与弹性扩展


我们的训练平台架构整体分为多层。底层为基础设施层,涵盖存储资源、网络资源、计算资源以及若干数组服务机和硬件设备。其上为容器化层,基于 Kubernetes 集群构建,用于支撑各类服务。平台提供深度 GPU 计算支持、多种开发语言环境及主流深度学习框架。


在深度学习平台中,用户可通过 Notebook 或 VR 界面提交训练任务。任务提交后,系统将通过 Training Operator 进行资源调度与分配。存储方面,我们基于 PVC(Persistent Volume Claim)预配置了存储资源,并借助 JuiceFS 实现底层存储的自动关联与供给。


我们将 JuiceFS 集成于 Kubeflow 机器学习平台中,用于模型训练任务。在 Notebook 环境中创建训练任务时,系统会自动关联至后端 JuiceFS 提供的 StorageClass,实现存储资源的动态分配与管理。同时,集群中部署了监控系统,对存储性能进行实时观测。目前监测到读取吞吐约在 200MB/s 左右,写入请求量较低,这与我们训练推理场景中读多写少的 I/O 特性较为吻合——读取操作远高于写入。


在性能调优过程中,我们参考了 JuiceFS 社区的相关分享,对比了 Redis 与 TiKV 作为元数据引擎的表现。测试结果显示,TiKV 在读密集型场景下性能显著优于 Redis。因此,我们计划将部分训练集群的元数据引擎逐步迁移至 TiKV,以进一步提升读取效率。


目前,我们一个存储桶中已存有约 700TB 的数据,文件数量达 6 亿个。其中存在大量小文件,典型于 AI 训练任务中常见的数据组织形式。在实际使用中,JuiceFS 在面对高并发的小文件读写时表现稳定出色,未出现任何异常,完全满足生产需求。


在仿真场景中,数据规模已达到 PB 级别,存储桶以大文件为主。底层存储资源依托于移动云对象存储,主要用于仿真数据的集中存放。在实际使用过程中,该存储方案同样表现稳定,能够支撑大规模仿真任务的持续运行。


实践 2:JuiceFS 在多云环境中的数据同步


为实现多云环境下的数据同步,我们在多个云服务商之间部署了多条专线,并预先完成了跨云网络打通。对于需要在不同云中保持一致的训练数据,我们自主开发了同步工具,该工具底层集成 JuiceFS Sync 命令,能够高效地将同一份数据同步至多个云环境中。此外,尽管支持跨云挂载,但由于其高度依赖网络稳定性,我们并不推荐该方式。跨云数据同步的核心挑战在于网络可靠性,一旦出现网络波动,同步过程易受影响,因此需谨慎使用。



九识智能多云数据同步链路


小结


在生产、仿真、训练和推理等关键环节中,JuiceFS 依托灵活的元数据引擎选择、多样化的对象存储对接方式,以及与 Kubernetes、Kubeflow 的良好兼容性,有效支撑了小文件高并发访问、跨云数据流转和性能扩展等场景需求。在大规模数据场景下,JuiceFS 运行稳定,显著降低了运维复杂度和总体成本,并在系统扩展性方面满足了当前业务规模。


未来,随着 TiKV 等元数据引擎的逐步应用以及跨云同步机制的持续优化,JuiceFS 的整体性能和适应性仍有提升空间,将为九识智能在自动驾驶研发中的海量数据处理提供持续支撑。


关于作者


邓君宇,九识智能基础设施运维工程师


今日好文推荐


8000 行 Python+Rust 手搓 ChatGPT,日收14.5k星!Karpathy:Agent 只会帮倒忙


Windows 10 停服引发全球热议,国产OS迎来窗口期?专家:技术迭代是残酷的,也是必然过程


Python新版本去GIL刷屏,Karpathy 点赞敢死队,Python 之父:冷静,别神话并发


“杀死每家AI初创、造超级OS”?奥特曼的野望惊现缺口:资深人士曝出三大瓶颈


2025-10-27 11:231

评论

发布
暂无评论

解析字节算法面试真题,深入探究ArrayList应用原理

小Q

Java 学习 编程 架构 面试

VACUUM无法从表中删除死元组的三个原因

PostgreSQLChina

数据库 postgresql

一口气说出四种幂等性解决方案,面试官露出了姨母笑~

不才陈某

Java 分布式 接口

Prometheus TSDB(Part 2):预写日志(WAL)和检查点

Grafana 爱好者

云原生 Prometheus tsdb 可观察性

产品策略闭环是个什么环?

万事ONES

项目管理 团队协作 需求管理 需求分析 产品策略

80%Java开发者面试都问的SpringBoot你竟不会?看完这些笔记足以

Java架构之路

Java 程序员 架构 面试 编程语言

云图说 | 云上资源管控有神器!关于IAM,你想知道的都在这里!

华为云开发者联盟

服务 权限管理 iam

EZYTRX波场智能合约APP系统软件开发

系统开发

腾讯高工强烈推荐的“Netty速成手册”原理+应用+调优,带你将知识点一网打尽

比伯

Java 编程 程序员 架构 Netty

什么是全场景AI计算框架MindSpore?

华为云开发者联盟

人工智能 AI mindspore

LeetCode题解:127. 单词接龙,BFS+统计单词变化次数,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

答了Mybatis这个问题后,面试官叫我回去等通知……

田维常

mybatis

智慧警务可视化平台开发,重点人员管控系统搭建

t13823115967

智慧公安 智慧警务系统开发

耗时一个月整理的97道大厂Java核心面试题出炉,精心整理,无偿分享

Java架构之路

Java 程序员 架构 面试 编程语言

为了SpringBoot提交Tomcat执行,我总结了这么多

小Q

tomcat 学习 面试 微服务 springboot

面试被问高并发一脸懵?那是你没看过我整理得高并发回答模板

小Q

Java 学习 面试 高并发 性能调优

我和阿里P7差的不是薪资?而是Redis+微服务+Nginx+MySQL+Tomcat

Java架构之路

Java 程序员 架构 面试 编程语言

智慧城市建设,社区智能化系统搭建解决方案

t13823115967

智慧城市 平安小区

IDEA 文档插件 DocView 版本更新:修改 UI 并支持 IDEA 2020.3 !

程序员小航

idea插件 IntelliJ IDEA 文档生成

将原则纳入到架构的生命中

soolaugust

架构 思考 设计

好久不见!这份Spring全家桶、Docker、Redis架构大礼包免费赠送

Java架构之路

Java 程序员 架构 面试 编程语言

Java进阶文档:彻底搞懂JVM+Linux+MySQL+Netty+Tomcat+并发编程

Java架构之路

Java 程序员 架构 面试 编程语言

一文为你详解Unique SQL原理和应用

华为云开发者联盟

数据库 sql unique

硬肝到秃头!Alibaba强推并发编程笔记我跪了,真的学到好多东西!

Java架构追梦

Java 学习 架构 面试 并发编程

从 JMM 透析 volatile 与 synchronized 原理

码哥字节

volatile JVM JMM Java 25 周年 synchronized

dubbogo 3.0:牵手 gRPC 走向云原生时代

阿里巴巴云原生

gRPC 云原生 中间件 dubbo-go Go 语言

一文带你彻底了解大数据处理引擎Flink内存管理

华为云开发者联盟

大数据 数据 处理

从源码的角度搞懂 Java 动态代理!

Java架构师迁哥

盘点2020 | 疫情下的思考和学习

soolaugust

盘点2020

《大数据算法》.pdf

田维常

算法

太赞了!滴滴开源了一套分布式ID的生成系统...

Java架构师迁哥

九识智能:基于 JuiceFS 的自动驾驶多云亿级文件存储_生成式 AI_邓君宇_InfoQ精选文章