阿里云存储网关(CSG)软件版与ossfs对比(元数据篇)

简介: 本文从元数据的使用及管理角度,详细对比阿里云存储网关(CSG)软件版与ossfs之间的区别。

前言

目前阿里云团队开发了一款开源的工具:ossfs,可以将Oss Bucket挂载在本地机器上,以POSIX文件接口对存在Oss Bucket中的文件进行访问。不过,该工具从2019年起,已经不再维护了。

阿里云云存储网关(Cloud Storage Gateway, CSG)软件版(以下简称CSG软件版)。同样是一款可以安装在阿里云用户机器(ECS,或用户自建机房服务器)上的产品,将OSS Bucket挂载到用户机器,以POSIX文件接口进行访问。在实现上,CSG软件版衍生自已经商业化的CSG托管版,与ossfs有较大的不同,并且在使用上引入了监控等多项功能。

阿里云存储网关(CSG)软件版与ossfs对比(数据缓存篇)》一文中,已经详细对比了CSG软件版和ossfs中文件数据存储的区别。

本文将从元数据的使用和管理的角度,比较CSG软件版和ossfs的区别。


元数据存储管理

ossfs

  • 使用内存缓存文件的元数据信息。
  • 文件的元数据信息缓存数量有上限,默认能缓存1000个文件的元数据信息。当元数据缓存到达上限时,会遍历缓存中的元数据,淘汰最早的一个文件的元数据信息。


CSG软件版

  • CSG软件版以KV数据库缓存文件的元数据信息,包括文件系统目录结构、文件的状态等信息。
  • 所有的文件的元数据全量缓存到本地的缓存盘,支持上亿级别的文件。
  • 通过CSG软件版创建、修改的文件的元数据能直接保存在本地;通过其他方式上传、修改得Oss Bucket中的文件的元数据信息,需要通过访问该目录,将文件的元数据信息同步到本地缓存。


数据一致性保证

ossfs

  • 每次open一个文件时,都会将内存中文件的元数据缓存清除,重新访问oss bucket,获取文件的元数据信息。
  • 支持配置ExpireTime,配置之后,如果元数据缓存的时间至今已经超过了ExpireTime,也会将内存中文件的元数据缓存清除,重新访问oss bucket,获取文件的元数据信息。如果不配置,则在内存中淘汰元数据信息之前,都认为本地和云上的元数据信息是一致的。
  • 一旦挂载完成,不支持更改同步策略,即不支持修改ExpireTime。


CSG软件版

  • 文件元数据信息从本地缓存获取;
  • 支持开启“反向同步”选项,并配置“反向同步时间间隔”参数。开启之后,访问某个目录,会将oss bucket中该目录下的文件的元数据信息同步到本地缓存中。但是在反向同步时间间隔之内,访问一个目录只会触发一次反向同步。
  • 支持在挂载期间修改配置,即支持开启、关闭“反向同步”,或是设置“反向同步时间间隔”。用户可以根据使用场景的需求,实时更改配置,而不需要重新挂载,即中断IO。


对比测试

目前,CSG软件版支持Linux和Windows两个平台,而ossfs只支持Windows平台,因此下面的测试中,仅对比CSG软件版的linux版本和ossfs。


大量文件情形

测试环境:阿里云ECS,ecs.g5.8xlarge。

测试

CSG软件版

ossfs

创建一个文件夹testdir1,创建1*100*1000(目录结构)个大小为4k的文件。

305s(不含上云时间)

337s(包含上云时间

2h2min43s

rename testdir1

1.151s(不含上云时间)

284s(包含上云时间)

3h18min23s

创建文件夹testdir2,下面有10w个文件,每个文件大小4k

384s(不含上云时间)

402s(包含上云时间)

2h18min6s

将testdir2下面的10w个文件进行chmod操作

207s(不含上云时间)

240s(包含上云时间)

2h16min58s


少量文件情形

测试环境:阿里云ECS,ecs.g5.8xlarge。

测试

CSG软件版

ossfs

创建文件夹testdir3,下面有1000个文件,每个文件大小4k

3.13s(不含上云时间)

20.07s(包含上云时间)

81s

rename testdir3

0.196s(不含上云时间)

15.36s(包含上云时间)

58.115s


mdtest元数据测试结果

机器规格:阿里云ecs.g6.large,高效云盘,


元数据操作

CSG软件版

ossfs

dir stat

4928

544

dir create

2597

315

dir remove

3127

322

file stat

4593

458

file create

2347

191

file read

2018

122

file remove

2284

140

tree create

9

2

tree remove

13

0


结果分析

可以看出来,CSG软件版元数据性能优于ossfs。并且,在文件数量较多的情形下,CSG元数据性能的优势比较明显原因主要有三点:

(1)CSG软件版本地会缓存文件元数据信息,而不需要向OSS Bucket发送请求;

(2)ossfs内存中默认只存1000份元数据。超过1000份时,需要遍历元数据缓存,找到最老的删掉。而CSG软件版会缓存所有文件的元数据信息,无遍历淘汰的过程。

(3)ossfs的文件操作需要等到上云之后才返回,而CSG软件版则将本地文件元数据、数据缓存更新后即返回,文件操作异步上云。



目录
相关文章
|
1月前
|
人工智能 缓存 Cloud Native
用 Higress AI 网关降低 AI 调用成本 - 阿里云天池云原生编程挑战赛参赛攻略
《Higress AI 网关挑战赛》正在火热进行中,Higress 社区邀请了目前位于排行榜 top5 的选手杨贝宁同学分享他的心得。本文是他整理的参赛攻略。
518 67
|
10天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 08 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
18天前
|
Cloud Native 关系型数据库 Serverless
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
128 10
|
1月前
|
API
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态
阿里云微服务引擎及 API 网关 2024 年 7 月产品动态。
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 07 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
2月前
|
监控 负载均衡 Java
深入理解Spring Cloud中的服务网关
深入理解Spring Cloud中的服务网关
|
4月前
|
运维 网络协议 安全
长连接网关技术专题(十):百度基于Go的千万级统一长连接服务架构实践
本文将介绍百度基于golang实现的统一长连接服务,从统一长连接功能实现和性能优化等角度,描述了其在设计、开发和维护过程中面临的问题和挑战,并重点介绍了解决相关问题和挑战的方案和实践经验。
217 1
|
4月前
|
缓存 安全 API
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
公司对外开放的OpenAPI-Server服务,作为核心内部系统与外部系统之间的重要通讯枢纽,每天处理数百万次的API调用、亿级别的消息推送以及TB/PB级别的数据同步。经过多年流量的持续增长,该服务体系依然稳固可靠,展现出强大的负载能力。
152 9
【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
|
1月前
|
运维 Kubernetes 安全
利用服务网格实现全链路mTLS(一):在入口网关上提供mTLS服务
阿里云服务网格(Service Mesh,简称ASM)提供了一个全托管式的服务网格平台,兼容Istio开源服务网格,用于简化服务治理,包括流量管理和拆分、安全认证及网格可观测性,有效减轻开发运维负担。ASM支持通过mTLS提供服务,要求客户端提供证书以增强安全性。本文介绍如何在ASM入口网关上配置mTLS服务并通过授权策略实现特定用户的访问限制。首先需部署ASM实例和ACK集群,并开启sidecar自动注入。接着,在集群中部署入口网关和httpbin应用,并生成mTLS通信所需的根证书、服务器证书及客户端证书。最后,配置网关上的mTLS监听并设置授权策略,以限制特定客户端对特定路径的访问。
109 2
|
1月前
|
Java API 微服务
服务网关Gateway
该博客文章详细介绍了Spring Cloud Gateway的使用方法和概念。文章首先阐述了API网关在微服务架构中的重要性,解释了客户端直接与微服务通信可能带来的问题。接着,文章通过具体的示例代码,展示了如何在Spring Cloud Gateway中添加依赖、编写路由规则,并对路由规则中的基本概念如Route、Predicate和Filter进行了详细解释。最后,文章还提供了路由规则的测试方法。
服务网关Gateway