OSS存储卷概述

对象存储OSS是阿里云提供的低成本的海量共享存储空间,适合存储写入后较少修改的数据,例如图片、音视频等非结构化数据。ACK支持将OSS Bucket作为存储卷挂载到Pod上,满足持久化存储需求。

OSS介绍

对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,具备高数据持久性、高数据可用性等特点。OSS提供标准、低频访问、归档、冷归档等多种存储类型,可以覆盖从热到冷的各种数据存储场景。您可以结合OSS计费、数据访问频率等选择合适的存储类型。更多信息,请参见选型指导存储类型

重要

关于OSS的计量计费方式,请参见计费概述

适用场景

低成本的海量共享存储空间,适合存储写入后较少修改的数据。

常见适用场景如下:

  • 共享数据场景

    OSS为共享存储,支持多个Pod同时访问一份数据。OSS中的数据不会随Pod删除而清空,可用于Pod之间共享数据。

  • 配置文件、图片、各类视频等媒体文件等多读少写场景

    OSS适合存储非结构化数据,如配置文件、图片、音视频等。如业务需要变更文件内容,请选择ossfs1.0存储卷,对POSIX操作的兼容性更佳。

  • AI推理、数据分析等大并发批处理场景

    OSS的高服务端带宽适合大并发批处理,比如AI训练、数据分析、自动驾驶等新型计算密集型负载及工作流。这类工作负载主要涉及顺序和随机读取、顺序(仅支持追加)写入操作,请选择ossfs2.0存储卷获得更高吞吐。

  • 具有较高鉴权、容灾需求的数据安全场景

    OSS支持3AZ同城冗余容灾及KMS等服务端加密能力,并支持MD5校验,保证数据上传下载的完整性,同时支持RAMOSS Bucket Policy两种对象级别的鉴权方式。

说明

选择客户端

OSS存储卷可通过客户端文件系统(Filesystem in Userspace,简称FUSE)或虚拟块设备实现对象存储的本地挂载。相较于传统的本地存储和块存储,其在POSIX操作兼容性方面存在一定限制。

目前OSS存储卷支持的客户端如下。更多信息,请参见客户端选型参考

客户端

类型

说明

依赖的存储组件版本

ossfs 1.0

FUSE

支持大部分POSIX操作,包括追加写、随机写、设置用户权限等。更多信息,请参见工作原理版本更新功能介绍

始终支持。具体请参见ossfs 1.0版本说明

ossfs 2.0

FUSE

支持完整读和顺序追加写操作。适用多读场景,大幅提升数据读取性能。更多信息,请参见ossfs 2.0概述

CSI组件版本为v1.33.1及以上。

strmvol

虚拟块设备

目前版本仅支持只读场景。使用虚拟块设备解决FUSE在海量小文件只读场景的性能瓶颈。

CSI组件外,还需部署strmvol-csi-driver组件。

使用说明

  • 如需挂载OSS Bucket中的子目录,建议直接使用PV中的path字段,而非subpath方式。若业务需要使用subpathsubpathExpr配置,为避免因权限配置错误等原因导致挂载异常,请先查阅使用subpathsubpathExpr方式挂载OSS存储卷异常

  • OSS存储卷挂载根路径不支持chmodchown操作,可通过配置项mp_umask实现。更多信息,请参见OSS存储挂载权限问题

注意事项

说明

以下注意事项主要针对通用读写场景(ossfs 1.0),ossfs 2.0strmvol客户端由于仅支持部分POSIX操作(主要为读操作),基本不涉及。

随机或者追加写文件实际为在本地生成新文件重新上传至OSS服务端,由于OSS存储特性,请注意以下事项:

  • 文件、文件夹的rename操作非原子。

  • 请尽量避免并发多写,或直接在挂载路径下进行压缩、解压缩等操作。

    重要

    多写场景依赖用户自行协调各个客户端的行为。对于写操作导致的元数据和数据的不一致性问题,ACK不承诺保障。

此外,还需注意以下限制:

  • 不支持硬链接(Hard Link)。

  • 不支持挂载归档存储、冷归档存储或者深度冷归档存储类型的Bucket。

  • readdir操作默认会发送大量headObject请求以获取路径下的所有对象的扩展信息。当目标路径下的文件较多时,可能会影响ossfs的整体性能。若在读写场景中对文件的权限等属性不敏感,可开启-o readdir_optimize参数进行优化。具体请参见新增readdir优化功能

  • CSI pluginv1.20.7以下版本时,仅检测本地修改,而不能检测其他客户端或工具的外部修改。

  • CSI版本小于1.28时,ossfs以进程形式直接运行在节点上。支持的节点操作系统为CentOS、Alibaba Cloud Linux、ContainerOS和龙蜥操作系统。如果节点操作系统不支持,请升级csi-plugincsi-provisioner