AI 场景深度优化!K8s 集群 OSSFS 2.0 存储卷全面升级,高效访问 OSS 数据

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000 次 1年
简介: 阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,是用户在云上存储的高性价比选择…

【阅读原文】戳:AI 场景深度优化!K8s 集群 OSSFS 2.0 存储卷全面升级,高效访问 OSS 数据

01. 背景

 


阿里云对象存储 OSS 是一款海量、安全、低成本、高可靠的云存储服务,是用户在云上存储数据的高性价比选择,在北京、上海、杭州、深圳、新加坡地域提供单账号高达 100 Gbps 的下载带宽,可以很好地满足客户日益增长的带宽需求。

在 K8s 集群部署的业务若需要像操作本地文件一样读写在云端的 OSS 数据,需要将 OSS 类型的存储卷挂载至容器内。OSS 原生仅提供 RESTful 的 API 访问接口,因此挂载依赖基于 FUSE (filesystem in userspace) 接口的客户端,它负责将业务的 POSIX 协议操作转译成对象存储服务端的 RESTful 请求,使业务无需做额外改造,即可像访问本地文件系统一样访问 OSS 数据。

因此,FUSE 客户端的性能直接影响数据读写的整体效率。在 AI 等大数据业务场景中,相较于传统应用负载,有文件数量庞大(训练)、大文件读取性能要求高(推理)等典型特征,为避免 GPU 闲置,需尽量缩短数据加载与写入时间,对 FUSE 客户端的访问性能提出了更高要求,建立高速高效的访问通道至关重要。

 

 


02. 从 OSSFS 1.0 到 2.0


 

ACK 集群存储插件此前接入的是 OSSFS 1.0 客户端 [1],其基于开源项目 S3FS-FUSE 演化而来,支持了较为完整的 POSIX 语义:

 

  • 除基础数据访问功能外,OSSFS 1.0 版本通过在对象的自定义元数据里记录了如 UID 等信息,从而具备文件系统级用户鉴权、软链接管理、扩展属性操作等功能。
  • OSSFS 1.0 版本通过引入本地磁盘缓存,支持了完整的写入能力(顺序写、随机写)实现了业务无需修改即可直接操作远程数据的需求。

这些特性使 OSSFS 1.0 客户端在需要通过挂载方式访问对象存储的通用读写场景发挥了重要价值。

然而,随着 AI 业务的发展,我们发现 AI 场景有下面几个典型特征:

 

  • 推理场景需加载大模型文件,关注大文件读取的能力。
  • 训练场景读取的数据集庞大,关注元数据的缓存能力、小文件并发加载的能力。
  • 训练场景还会生成模型文件,关注大文件顺序写的能力。
  • 不关注 POSIX 权限/软链接/扩展属性/重命名文件夹/随机写的能力。

而 OSSFS 1.0 版本由于设计上追求较为完备的 POSIX 语义,以及架构设计和实现上的选择,应对上述场景往往性能达不到预期:

 

  • 为了支持 POSIX 权限/软链接/扩展属性等信息,OSSFS 1.0 版本需要频繁地发送 HeadObj 请求获取最新的元数据。
  • 为支持随机写,OSSFS 1.0 版本数据读写需要落盘,在容器场景通常落到系统盘(默认一般为 P0 或 P1 级别的 ESSD 云盘)。相对于节点的网络带宽和 OSS 吞吐能力,磁盘 I/O 性能成为瓶颈,尤其在 Serverless 场景中问题更显著。而在 AI 场景,通常仅需要对检查点做顺序写操作。


尽管 OSSFS 1.0 客户端已提供 readdir_optimze(忽略扩展信息)和 direct_read(直读模式,避免数据落盘)等优化模式 [2],可在特定场景提升性能,但其原始设计目标与架构设计仍难以完全满足 AI 场景的性能需求。此外,由于 OSSFS 1.0 版本基于开源项目 S3FS-FUSE 实现,其历史遗留的架构设计与工程实现使其很难大改以针对 AI 特定场景优化。

对此,阿里云存储团队推出全新的 OSSFS 2.0客户端 [3],作为在 AI 等高性能场景中的解决方案。

OSSFS 2.0 客户端针对 AI 训练、推理等关键场景,舍弃对对象存储不友好的文件权限以及随机写等 POSIX 语义兼容能力,转而聚焦于发挥 OSS 的原生高带宽能力。通过重新设计元数据架构、充分利用 FUSE 模块原生能力、引入阿里云自研的协程化技术,OSSFS 2.0 客户端对大文件顺序读写、大规模小文件并发读写实现了针对性的优化,也全面提升了客户端对 CPU 资源的利用率:

 

  • 不追求完整的 POSIX 兼容性,仅维护基本的文件属性,如 mtime 和 size,面对大规模文件时无需频繁发送 HeadObj 请求,既减轻服务端压力,也提升客户端性能。
  • 基于 FUSE3 Low Level API 重构。
  • 元数据缓存管理更加灵活,查询、淘汰的性能更好。
  • 可以利用到更底层的 API,减少线程切换和数据拷贝次数,提升读写性能。
  • 引入了阿里云内部研发的协程化技术,显著提升并发效率与负载吞吐,并降低 CPU 资源使用。


总结起来,AI 场景下,与 OSSFS 1.0 客户端相比,OSSFS 2.0 客户端具有以下核心优势:

 

  • 更加轻量化的协议设计:减少 OSS 元数据请求数量,专注于释放 OSS 服务端的读写能力。
  • 大文件顺序读写优化:通过端到端读写链路重构,实现高效的大文件顺序访问。
  • 小文件并发加速:依托高效的元数据管理系统,显著提升小文件加载并发能力。
  • 资源精细化管理:在同等 CPU / 内存资源下,通过资源分配优化保障高性能输出。


OSSFS 2.0 具备业界领先的读写性能,尤适合机器学习训练等对高吞吐数据访问要求严苛的场景,满足不同负载对于挂载 OSS 的需求。而对于对 POSIX 文件属性有高需求,或需要支持随机写等通用场景,OSSFS 1.0 则是更合适的选择。

 

 


03. 性能测试

 


使用 OSSFS 1.0 客户端、OSSFS 2.0 客户端挂载 Bucket 存储空间后,分别对基本的读写能力和模拟 AI 推理场景在单节点上进行测试。

 

 

读写能力测试

 

运用 FIO 测试工具,分别针对基本顺序读写能力展开测试。测试场景与结果如下:


单线程顺序写 100 GB 文件

 

image.png

 


单线程顺序读 100 GB 文件

 

image.png

 


4 线程顺序读 100 GB 文件

 

image.png

 


128 线程并发读 10 万 128 KB 小文件

 

image.png

 

ossfs 2.0 相较于 ossfs 1.0 在顺序读写和高并发小文件读取方面均实现了显著的性能提升。

 

  • 顺序写入性能:在单线程大文件顺序写入场景下,ossfs 2.0 的带宽相较于 ossfs 1.0 提升了近 18 倍
  • 顺序读取性能:

a. 在单线程大文件顺序读取场景下,ossfs 2.0 的带宽相较于 ossfs 1.0 提升了约 8.5 倍。

b. 在多线程(4 线程)大文件顺序读取场景下,ossfs 2.0 的带宽相较于 ossfs 1.0 提升了 5 倍以上。

c. 小文件并发读取性能:在高并发(128 线程)读取小文件的场景下,ossfs 2.0 的带宽相较于 ossfs 1.0 提升了 280 倍以上。

详细的测试环境、挂载参数以及测试命令请参考性能测试文档 [4]

 

 

AI 推理场景模拟: safetensors 模型加载


 

safetensors 格式模型的加载机制存在特殊性:模型文件在读取时遵循一种带规律性跳跃的随机读模式。具体而言,加载过程需要根据权重分布特征,以特定偏移量分块读取数据,而非连续线性访问。然而,现有大部分存储客户端在处理此类读取模式时,会因无法识别跳跃规律而退化为纯随机读,导致 I/O 吞吐显著下降,成为模型加载速度的瓶颈。

OSSFS 2.0 客户端对 safetensors 等带偏移量读取模式进行了优化。

测试中,使用 hugging face 框架在 CPU 模式加载 safetensors 格式模型 Qwen2.5-72B-Instruct。具体详情如下:

 

  • 节点机型:ecs.g7.32 x large (128 vCPU 512 GiB)
  • 测试场景:在 Qwen-2.5-72B 模型文件加载的 AI 推理场景下,在 CPU 环境下使用 vllm 库的 LLM 函数加载模型,对比 OSSFS 1.0 与 OSSFS 2.0 客户端的性能。
  • 测试数据:Qwen-2.5-72B 模型文件,约 134.5 GB(约 4 GB文件 * 37 个,safetensors 格式)。

OSSFS 1.0 客户端开启了直读模式,测试中的配置参数为:

 

 

-odirect_read -odirect_read_prefetch_chunks=256 -odirect_read_prefetch_limit=8192 -odirect_read_backward_chunks=256 -odirect_read_chunk_size=16

 


OSSFS 2.0 客户端使用默认参数。

 

image.png

 

 


04. 在 ACK 集群使用 OSSFS 2.0 存储卷

 


目前阿里云容器服务官方存储插件 CSI [5] 已支持挂载 OSS 存储卷时切换至 OSSFS 2.0 客户端 [6],使用方式与此前基本一致,以下展示了 OSSFS 2.0 存储卷的存储卷(PV, PersistentVolume)与存储声明(PVC, PersistentVolumeClaim)的 YAML 文件,通过部署 YAML 文件即可在集群中创建相应的资源。


 

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-ossfs2
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadOnlyMany
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: ossplugin.csi.alibabacloud.com
    volumeHandle: pv-ossfs2 # 需要和PV名字一致。
    # 使用预先创建的存储鉴权信息的secret,配置方式与原OSSFS 1.0存储卷一致。
    nodePublishSecretRef:
      name: oss-secret
      namespace: default
    volumeAttributes:
      fuseType: ossfs2 # 固定,声明使用的是OSSFS 2.0客户端
      bucket: cnfs-oss-test # bucket名称
      path: /subpath # 挂载的bucket子路径
      url: oss-cn-hangzhou-internal.aliyuncs.com # bucket的域名
      otherOpts: "-o close_to_open=false" # OSSFS 2.0客户端的配置参数
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-ossfs2
  namespace: default
spec:
  # 以下配置需要与PV一致
  accessModes:
    - ReadOnlyMany
  resources:
    requests:
      storage: 20Gi
  volumeName: pv-ossfs2

 


部署后,应用即可通过挂载 pvc-ossfs2 存储声明,在容器中通过 OSSFS 2.0 客户端访问 OSS 数据。OSSFS 2.0 存储卷同时支持静态挂载和动态挂载两种方式,具体使用方式请参考OSSFS 2.0 存储卷使用文档 [7],OSSFS 2.0 客户端支持的配置参数可参考配置文档 [8]

 

 


05. 总结

 


OSSFS 2.0 存储卷针对机器学习、自动驾驶、基因分析等高性能大数据场景进行了深度优化,与 OSSFS 1.0 存储卷相比实现了显著的性能突破。

ACK 已支持多位内外部客户针对 OSSFS 2.0 存储卷进行业务压力测试,并在实际业务场景中展现出高达数十倍的吞吐量提升,充分验证了其在高并发、高带宽需求下的稳定性与高效性。如需进一步验证其性能表现,欢迎在 ACK 集群中部署并测试 OSSFS 2.0 存储卷,以释放更极致的数据访问能力。

 

附:ACK 集群 OSS 存储卷选型参考

 

场景 存储卷 官方文档
读写或需要配置用户权限等绝大部分场景。 OSSFS 1.0 存储卷 [9]
只读或只包括顺序追加写的场景。如推理、训练集加载、自动驾驶等。 OSSFS 2.0 存储卷 [6]
海量小文件只读,且 OSS 远端数据较少更新。如训练、量化回测、时序日志分析等。 StrmVol 存储卷 [10]
读写可分离场景,即读写操作不同时进行或操作不同文件。如断点保存、日志持久保存等。 拆分不同的存储卷,如使用 ossfs 2.0 存储卷挂载只读路径,使用 ossfs 1.0 存储卷挂载写路径。

 


参考阅读:

《StrmVol 存储卷:如何解锁 K8s 对象存储海量小文件访问性能新高度?》


相关链接:

 

[1] 阿里云官方文档 - ossfs 概述

https://help.aliyun.com/zh/oss/developer-reference/ossfs-overview/


[2] 阿里云官方文档 - ossfs 1.0 新版本功能介绍及性能压测

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/introduction-of-new-functions-and-performance-pressure-measurement-of-ossfs-version-1-91-and-above


[3] 阿里云官方文档 - ossfs 2.0 概述

https://help.aliyun.com/zh/oss/developer-reference/ossfs-2-0/


[4] 阿里云官方文档 - ossfs 2.0 性能测试说明

https://help.aliyun.com/zh/oss/developer-reference/performance-test-of-ossfs-2-0


[5] GitHub 开源项目 - Alibaba Cloud CSI Driver

https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver


[6] 阿里云官方文档 - ossfs 2.0 存储卷概述

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/ossfs-2-0/


[7] 阿里云官方文档 - 使用 ossfs 2.0 存储卷

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/mount-oss-volumes-through-ossfs-2-0


[8] 阿里云官方文档 - ossfs 2.0 挂载选项说明

https://help.aliyun.com/zh/oss/developer-reference/description-of-mount-options


[9] 阿里云官方文档 - ossfs 1.0 存储卷概述

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/ossfs1-0/


[10] 阿里云官方文档 - StrmVol 存储卷概述

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/strmvol/


 


我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信微博知乎

获取关于我们的更多信息~

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
26天前
|
存储 监控 调度
阿里云对象存储OSS之间进行数据转移教程
讲解如何在阿里云对象存储OSS之间进行跨账号、跨地域、以及同地域内的数据迁移,包括数据迁移之前的准备工作和实施数据迁移以及一些后续操作
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
当无人机遇上Agentic AI:新的应用场景及挑战
本文简介了Agentic AI与AI Agents的不同、Agentic无人机的概念、应用场景、以及所面临的挑战
370 5
当无人机遇上Agentic AI:新的应用场景及挑战
|
2月前
|
人工智能 数据可视化 程序员
程序员必收藏!Github 167000+ star 的自主AI agent,全自动AI助手,全面覆盖开发效率场景
AutoGPT 是基于 GPT-4 的开源自主 AI 智能代理,全面覆盖开发效率场景。支持任务自动拆解、多轮反馈、插件扩展与记忆管理,具备持续执行能力,适合自动化测试、CI/CD、Web 数据抓取等任务。GitHub 超 176K Star,是当前最热门的 AI Agent 开源项目之一,提供 CLI 与 GUI 双界面,助力开发者提升工作效率。
320 1
|
3月前
|
传感器 人工智能 自然语言处理
比亚迪座舱接入通义大模型,未来将联合打造更多AI智能座舱场景
比亚迪与阿里云深度合作,将通义大模型应用于智能座舱和营销服务。通过通义万相,腾势推出“AI壁纸”功能;借助通义星尘,实现“心理伴聊”等情感陪伴场景。阿里云Mobile-Agent智能体落地比亚迪座舱,支持复杂语音操作,如查询淘宝物流、订火车票等。该方案基于全视觉解决技术,具有强泛化能力,未来双方将持续拓展更多AI应用。
396 8
|
28天前
|
存储 安全 数据管理
服务器违规资源被删,数据定时备份OSS 云存储才是 “救命稻草”
在数字化时代,数据已成为企业与个人的核心资产。然而,服务器违规、硬件故障等问题频发,导致数据丢失、业务中断,甚至造成不可挽回的损失。为保障数据安全与业务连续性,定时备份至关重要。阿里云国际站OSS提供高效、可靠的云存储解决方案,支持自动定时备份,帮助用户轻松应对数据风险。本文详解OSS备份操作步骤与注意事项,助你为数据穿上“防护甲”,实现安全无忧存储。
|
3月前
|
SQL 存储 人工智能
Quick BI V5.5上线:AI赋能全场景提效,分析决策 “快、准、稳”!
Quick BI 5.5版本应运而生,围绕"AI赋能+全场景提效",助力企业加速释放数据价值。此次升级,不仅让复杂分析"开箱即用",更通过智能工具与场景化能力,助力企业实现从数据洞察到决策落地的全流程闭环。
Quick BI V5.5上线:AI赋能全场景提效,分析决策 “快、准、稳”!
|
人工智能 大数据 开发者
阿里云技术解决方案开放免费试用,热门AI场景免费体验!
阿里云推出免费试用计划,2025年7月起,新老用户均可领取100点试用点,用于部署体验技术解决方案。完成部署还可再获最高100点,相当于一年200元云资源免费用。支持AI、大数据、安全等多个领域,涵盖DeepSeek部署、模型微调等热门场景。点击链接即可领取,快速上手云上方案。
|
3月前
|
人工智能 JSON 测试技术
AI 驱动 API 研发提效:解析 Apipost 在 API 文档生成场景的全流程能力
随着AI和大模型技术发展,软件开发步入智能化时代。API研发作为核心环节,高效调试与文档编写至关重要。Apipost是国内领先的API协同工具,提供从API设计到性能测试的完整闭环,支持AI驱动的文档生成、Markdown润色及OpenAPI生成等功能,显著提升团队效率。其AI功能可一键补全参数描述、生成示例代码与响应样例,减少重复劳动,助力开发者专注于业务逻辑优化。无论是快速迭代还是大规模接口设计,Apipost都为高效协作提供了强大支持。
151 0
|
人工智能 缓存 NoSQL
【深度】企业 AI 落地实践(四):如何构建端到端的 AI 应用观测体系
本文探讨了AI应用在实际落地过程中面临的三大核心问题:如何高效使用AI模型、控制成本以及保障输出质量。文章详细分析了AI应用的典型架构,并提出通过全栈可观测体系实现从用户端到模型推理层的端到端监控与诊断。结合阿里云的实践经验,介绍了基于OpenTelemetry的Trace全链路追踪、关键性能指标(如TTFT、TPOT)采集、模型质量评估与MCP工具调用观测等技术手段,帮助企业在生产环境中实现AI应用的稳定、高效运行。同时,针对Dify等低代码平台的应用部署与优化提供了具体建议,助力企业构建可扩展、可观测的AI应用体系。
|
1月前
|
机器学习/深度学习 人工智能 PyTorch
GPT为定制AI应用工程师转型第一周学习计划
本计划帮助开发者快速入门AI领域,首周涵盖AI基础理论、Python编程及PyTorch实战。前两天学习机器学习、深度学习与Transformer核心概念,掌握LLM工作原理。第三至四天快速掌握Python语法与Jupyter使用,完成基础编程任务。第五至七天学习PyTorch,动手训练MNIST手写识别模型,理解Tensor操作与神经网络构建。
116 0

热门文章

最新文章