通过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及以上版本 |
|
1.80.x | v1.20.5-ff6490f-aliyun(支持Arm64的首个CSI版本) | |
AMD64 | 1.91及以上版本 |
|
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版本。
执行以下命令,查询正在运行的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
执行以下命令,确认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重挂载?。
确认csi-plugin版本为1.30.1及以上版本。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在组件管理页面,查找定位csi-plugin组件,查看组件当前版本。
若csi-plugin版本小于1.30.1,请单击组件右下角升级,将组件升级至最新版本。
通过控制台或kubectl任一方式开启
UpdatedOssfsVersion
特性门控。说明通过控制台开启时,设置的FeatureGate参数将覆盖原有的特性门控配置,若您不确定此前是否已经通过kubectl开启过其他特性门控功能,建议您使用kubectl方式进行开启。
通过控制台开启
csi-plugin组件升级完成后,在csi-plugin组件卡片右下角单击配置。
在csi-plugin 参数配置页面,设置FeatureGate参数为UpdatedOssfsVersion=true,然后单击确定。
若之前已经开启过其他特性门控,则参数填写格式为xxxxxx=true,yyyyyy=false,UpdatedOssfsVersion=true。
通过kubectl开启
执行以下命令修改csi-plugin的DaemonSet文件。
在csi-plugin容器(非Init Container容器)的
args
中,新增参数--feature-gates=UpdatedOssfsVersion=true
。修改后的args类似为:
kubectl -n kube-system edit ds csi-plugin
说明若此前已经开启过其他特性门控,新增参数格式为
--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及以上版本新功能介绍及性能压测。