strmvol存储卷概述

更新时间: 2025-05-06 09:47:45

strmvol存储卷通过虚拟块设备的形式挂载对象存储数据,优化海量OSS小文件的读取性能。

方案概述

对象存储OSS具有支持海量数据存储、按需付费的弹性成本以及基于HTTP协议的便捷访问特性。容器化场景下通常采用FUSE(Filesystem in Userspace)方案挂载对象存储数据,但对于小文件读取场景,您可以采用虚拟块设备方案,以strmvol(Streaming Volume的缩写)存储卷的形式挂载对象存储数据。

strmvol存储卷通过虚拟块设备直接访问OSS数据,消除了FUSE中间层的性能瓶颈,将数据访问路径直接下沉至存储驱动层,以提升访问速度。这一方案尤其适用于需要快速遍历百万级小文件的场景,例如AI训练集加载、时序日志分析等业务。

FUSE方案特点

基于FUSE实现的文件系统(如ossfs)方案。方案特点如下:

  • 能感知OSS服务端数据的变化(若关闭元信息缓存,则数据的变更是实时的)。

  • 支持写操作,支持文件系统的扩展信息如gid、uid等。

  • 单次读写系统请求都将经过FUSE层传递到ossfs等客户端,对于海量小文件遍历等请求量峰值较高的场景,会有明显的额外性能开销。

  • ossfs客户端在早期CSI版本中以进程形态运行在所在节点上,当前CSI版本中,ossfs客户端以单独的Pod运行在集群中,运行在同一节点且挂载了同一PV的Pod将共用一个ossfs客户端进行OSS访问。

虚拟块设备方案特点

基于底层虚拟块设备及内核态文件系统(如erofs)方案。方案特点如下:

  • 初始化期间将拉取OSS Bucket挂载点下的所有文件元信息并构建索引。当前版本中,暂不支持运行期间OSS服务端数据的同步。

  • 针对只读场景,不支持OSS对象的扩展信息解析。

  • 规避FUSE层的性能开销。使用预设的内存大小作为数据的存储介质,加速小文件场景的预取速度。

  • 除了CSI组件,本方案还会部署一个名为strmvold的DaemonSet,负责管理节点上创建的虚拟块设备。虚拟块设备挂载至节点后占用预设的节点资源实现数据缓存。

适用场景

如果您的业务满足以下特性,可以采用本文介绍的虚拟块设备方案(即strmvol存储卷)。

说明

FUSE方案适用于绝大多数通用场景。具体使用方式请参见使用ossfs 1.0静态存储卷使用ossfs 1.0动态存储卷使用ossfs 2.0存储卷

  • 数据已存储在OSS Bucket中,且在业务运行期间数据无更新需求。

  • 业务对文件系统的扩展信息不敏感。

  • 只读场景,尤其是海量小文件或随机读场景。

运行方式

使用strmvol存储卷需要在应用市场部署strmvol-csi-driver组件。部署该组件会生成以下资源:

资源名称

资源类型

功能

strmvold

DaemonSet

负责管理节点上创建的虚拟块设备。

strmvol-csi-plugin

DaemonSet

实现strmvol存储卷的挂载和卸载能力。

strmvol-csi-provisioner

Deployment

实现strmvol存储卷的动态创建能力。

上一篇: ossfs 2.0存储卷FAQ 下一篇: 使用strmvol存储卷
阿里云首页 容器服务Kubernetes版 相关技术圈