ossfs版本说明

通过CSI挂载OSS存储卷时,csi-plugin组件将启动ossfs进程,将OSS服务端数据挂载到容器内指定的挂载路径。您可以通过POSIX操作读写服务端的文件,像操作普通文件那样读写OSS Bucket中的Object,便于云端存储资源的访问和管理。ossfs版本随着CSI组件版本的迭代进行升级。本文介绍ossfs版本说明以及如何查看并切换ossfs版本。

功能原理

ossfs是一个用户空间文件系统(userspace filesystem),可以将对象存储OSS的Bucket挂载到Linux系统的本地文件系统。通过ossfs,您可以像操作本地文件一样直接访问和管理OSS中的Object,从而实现数据的无缝共享和操作。主要功能如下。

  • 支持POSIX文件协议标准的大部分功能,例如上传下载文件、目录,设置用户权限等。

  • 默认使用OSS的分片上传和断点续传功能上传文件。

  • 支持MD5校验,保证数据的完整性。

  • 基于s3fs构建,具有s3fs的全部功能。

关于ossfs更多使用信息,请参见ossfs

版本说明

ossfs版本的表达方式为x.yy.z。其中:

  • x.yy为ossfs基于开源s3fs的版本。x.yy版本发布时,支持通过CSI环境变量等配置项回退。

  • z为ossfs自身的迭代版本,包括OSS存储、ACK使用环境的优化。例如监控、鉴权、加密等新增功能。更多版本信息,请参见csi-plugin

  • 为了区分开源ossfs版本,容器ossfs版本还会有.ack.1后缀,例如1.80.6.ack.1

ossfs大版本迭代记录

重要

如果您对文件操作性能有较高要求,建议您将ossfs版本切换至1.91及以上版本。关于ossfs 1.91及以上版本的启用场景,请参见ossfs 1.91及以上版本启用最佳实践。如何切换ossfs版本,请参见下文将ossfs切换至1.91及以上版本

架构类型

ossfs版本

对应CSI版本

Arm64

1.91及以上版本

  • v1.30.1-98960d8-aliyun (通过特性门控启用)

  • v1.30.4-fe12624-aliyun(默认使用)

1.80.x

v1.20.5-ff6490f-aliyun(支持Arm64的首个CSI版本)

AMD64

1.91及以上版本

  • v1.30.1-98960d8-aliyun (通过特性门控启用)

  • v1.30.4-fe12624-aliyun(默认使用)

1.88.x

v1.22.14-820d8870-aliyun

1.86.x

v1.16.9.43-f36bb540-aliyun

1.80.x

初始版本

查看ossfs版本

  • 在非容器化CSI版本(小于1.28且不包含1.26.6的CSI版本)中,ossfs运行在节点上,您可以登录任一节点,执行以下命令,确认ossfs版本。

    /usr/local/bin/ossfs --version
  • 在容器化CSI版本(1.26.6,或1.28.1及以上的CSI版本)中,ossfs作为Pod内的容器运行在集群中。挂载OSS存储卷后,CSI组件将自动在kube-system命名空间(小于1.30.4的CSI版本)或ack-csi-fuse命名空间(1.30.4及以上的CSI版本)下创建相关Pod。您可以通过以下方式确认ossfs版本。

    1. 执行以下命令,查询正在运行的Pod。

      小于1.30.4的CSI版本:

      kubectl -n kube-system get pod | grep csi-fuse-ossfs

      1.30.4及以上的CSI版本:

      kubectl -n ack-csi-fuse get pod | grep csi-fuse-ossfs
    2. 执行以下命令,确认ossfs版本。

      小于1.30.4的CSI版本:

      kubectl -n kube-system exec -it <csi-fuse-ossfs-xxxx> -- ossfs --version

      1.30.4及以上的CSI版本:

      kubectl -n ack-csi-fuse exec -it <csi-fuse-ossfs-xxxx> -- ossfs --version

将ossfs切换至1.91及以上版本

方法一:升级CSI版本

对于1.30.4及以上的CSI版本,ossfs默认已使用1.91及以上的版本,您可以直接通过升级CSI版本切换ossfs的版本。

方法二:开启特性门控

您需要开启UpdatedOssfsVersion特性门控以启用1.91及以上版本的ossfs。具体操作如下:

说明

默认情况下,运行在同一节点上,且挂载同一OSS存储卷的Pod会共用一个ossfs进程,即在集群中只会启动一个名为csi-fuse-ossfs-***的Pod。开启UpdatedOssfsVersion特性门控后,新启动的ossfs容器使用的镜像将自动变更为1.91及以上版本,正在使用OSS存储卷的业务不受影响。如需手动触发当前业务使用的ossfs版本升级,请参见共享挂载方式下如何实现ossfs重挂载?

  1. 确认csi-plugin版本为1.30.1及以上版本。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群

    2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

    3. 在组件管理页面,查找定位csi-plugin组件,查看组件当前版本。

      若csi-plugin版本小于1.30.1,请单击组件右下角升级,将组件升级至最新版本。

  2. 通过控制台或kubectl任一方式开启UpdatedOssfsVersion特性门控。

    说明

    通过控制台开启时,设置的FeatureGate参数将覆盖原有的特性门控配置,若您不确定此前是否已经通过kubectl开启过其他特性门控功能,建议您使用kubectl方式进行开启。

    通过控制台开启

    1. csi-plugin组件升级完成后,在csi-plugin组件卡片右下角单击配置

    2. csi-plugin 参数配置页面,设置FeatureGate参数为UpdatedOssfsVersion=true,然后单击确定

      若之前已经开启过其他特性门控,则参数填写格式为xxxxxx=true,yyyyyy=false,UpdatedOssfsVersion=true

    通过kubectl开启

    1. 执行以下命令修改csi-plugin的DaemonSet文件。

    2. kubectl -n kube-system edit ds csi-plugin
    3. 在csi-plugin容器(非Init Container容器)的args中,新增参数--feature-gates=UpdatedOssfsVersion=true。修改后的args类似为:

    4. 说明

      若此前已经开启过其他特性门控,新增参数格式为--feature-gates=xxxxxx=true,yyyyyy=false,UpdatedOssfsVersion=true

            - args:
              - --endpoint=$(CSI_ENDPOINT)
              - --v=2
              - --driver=oss,nas,disk
              - --feature-gates=UpdatedOssfsVersion=true

相关文档

关于1.91及以上版本新增功能以及压测性能介绍,请参见ossfs 1.91及以上版本新功能介绍及性能压测