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

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

1. 前言

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

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

元数据的使用管理角度的对比,在《阿里云存储网关(CSG)软件版与ossfs对比(元数据篇)》一文中已经已经有阐述,您可以点击该链接查看详情。

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


2. 原理对比

2.1 CSG软件版缓存实现

CSG软件版的数据缓存原理可以参考下图。

  • 当CSG软件版挂载点收到文件写请求时,数据会先在内存中缓存住。
  • 如果内存缓存达到上限,则内存中数据会写至磁盘上,防止占用内存过多。
  • 文件close时,内存中缓存的数据也会写至磁盘上。同时,本地的db中记录一份操作日志。随即write请求返回。
  • 后台线程异步回放日志,将文件在本地的缓存上传至OSS Bucket。


CSG软件版支持配置缓存的路径、缓存空间大小。当本地磁盘的缓存到达高水位时,此时读写会触发限流。并且会启动线程,回收磁盘空间。

如果本地有数据缓存,读请求可以直接从本地磁盘获取数据,加速读取。


image.png

CSG软件版写数据流程


2.2 ossfs缓存实现

ossfs的文件数据也会首先写入本地的缓存盘,然后上传到OSS Bucket中。当缓存空间足够时,文件的数据会先写入本地的缓存盘,在文件flush时,上传到OSS Bucket,上传成功之后才会返回。当缓存空间不足时,会提前上传文件的part,并将文件的缓存清理。

ossfs支持配置缓存路径和不配置缓存路径(默认模式)两种模式。如果指定缓存路径,文件的数据缓存不会被显示回收,因此一般使用时,均采用默认模式(不指定缓存路径)挂载。因此下文均分析、对比默认模式。


ossfs如果未指定缓存路径,在挂载点收到文件写请求时,数据缓存的使用方式如下图所示。

  • 在create/open阶段,在/tmp路径下创建特殊的tmpfile,作为文件缓存,该文件对文件系统不可见,且在close的时候会自动被清理缓存
  • 文件先写入本地缓存,并且为异步落盘,即先写入page cache即返回。
  • 在flush阶段,将文件上传至Oss Bucket,上传成功之后请求返回。


由于数据缓存是临时本地文件,在close之后就会被清除,因此无需显示回收缓存。

由于本地只会临时缓存,所以读文件时,并不能使用使用本地缓存加速。

image.png


2.3 原理对比


Ossfs与CSG软件版的数据缓存原理对比


ossfs

CSG软件版

存储形式

数据以临时文件的方式存在系统盘/tmp目录下,临时文件对用户不可见,但使用总量不太可控。

数据缓存在本地磁盘中,占用的空间事先分配并统一管理。

缓存文件自动回收,本地一般无缓存,因此每次读需要从云上下载至本地,再从本地缓存读数据。

若本地缓存命中,从磁盘读;否则从云上下载缺失的数据并写入本地磁盘供后续读取,对读更友好。

  • 数据首先写入磁盘,再从磁盘读取文件,同步上云,上云之后才会返回。
  • 文件关闭时,即可在云上看到文件数据。
  • 如果是大文件文件关闭的时候会卡很长一段时间。
  • 数据首先由内存缓存,达到缓存上限或文件close时,写入磁盘后立即返回。
  • 后台线程从磁盘中读取数据,异步回放上云,体验更好。
  • 文件关闭之后,无法及时感知文件是否上云。

数据回收

每次文件close时,文件的缓存自动回收

缓存到达高水位时,后台线程自动回收


3. 测试

测试环境配置为阿里云ECS:

  • CPU:24核
  • 内存:48GB
  • 磁盘:500GB,ESSD PL1,带宽上限为350MB/s


另外,用于对比测试的Ossfs版本为1.80.6版本。下面根据读写的不同情形,分别进行了对比测试,具体结果见下文。


3.1. 写测试

CSG软件版

ossfs

单线程,写小文件

1.88MB/s

0.042MB/s

cp500个本地4K小文件至挂载点。

多线程,写小文件

3.46MB/s

0.051MB/s

64线程。每个线程cp160个本地4K小文件至挂载点。

单线程,写大文件

232.7MB/s

64.7MB/s

cp1个本地5G大文件至挂载点。

多线程,写大文件

340.3MB/s

95.8MB/s

32线程,每个线程cp1个本地1G大文件至挂载点。

注:由于CSG软件版异步进行文件上传,因此统计CSG软件版的写带宽时,不包含文件上云时间。


3.2. 读测试

CSG软件版

Ossfs

本地无缓存

本地有缓存

单线程,读小文件

0.25MB/s

3.30MB/s

0.16MB/s

cp500个挂载点4K小文件至本地。

多线程,读小文件

9.67MB/s

20.86MB/s

0.29MB/s

64线程。每个线程cp160个挂载点4K小文件至本地。

单线程,读大文件

53.3MB/s

222.5MB/s

35.0MB/s

cp1个挂载点5G大文件至本地。

多线程,读大文件

346.9MB/s

349.8MB/s

248.2MB/s

32线程,每个线程cp1个挂载点1G大文件至本地。CSG软件版达到磁盘带宽上限。


3.3 结果分析

从上面的结果可以看出:

  • 数据写入的场景下,CSG软件版由于是异步上传,数据落盘之后即返回。而Ossfs是同步上传,数据上传到OSS Bucket之后才能返回。因此在写大文件时,以及网络较差的情形下,CSG软件版优势较大。
  • 读写文件数目较多时,元数据的性能也在其中扮演了很重要的作用,因而CSG软件版表现更好。
  • CSG软件版支持缓存数据到本地磁盘。数据重复读取的场景下,无需重复从云上下载,直接从本地缓存读取即可,优势巨大。
  • 读文件本地无缓存时,CSG软件版通过后台线程池,异步进行预取,而Ossfs则是等待预取完成之后返回,因此CSG软件版有一定优势。
相关实践学习
1分钟 Serverless搭建高性能网盘
本场景将使用阿里云函数计算、文件存储NAS以及开源项目Kodbox,带大家1分钟Serverless搭建个人高性能网盘,网盘可长期使用。
目录
相关文章
|
1月前
|
关系型数据库 MySQL 数据挖掘
阿里云 SelectDB 携手 DTS ,一键实现 TP 数据实时入仓
DTS 作为阿里云核心的数据交互引擎,以其高效的实时数据流处理能力和广泛的数据源兼容性,为用户构建了一个安全可靠、可扩展、高可用的数据架构桥梁。阿里云数据库 SelectDB 通过与 DTS 联合,为用户提供了简单、实时、极速且低成本的事务数据分析方案。用户可以通过 DTS 数据传输服务,一键将自建 MySQL / RDS MySQL / PolarDB for MySQL 数据库,迁移或同步至阿里云数据库 SelectDB 的实例中,帮助企业在短时间内完成数据迁移或同步,并即时获得深度洞察。
阿里云 SelectDB 携手 DTS ,一键实现 TP 数据实时入仓
|
1月前
|
API
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
阿里云微服务引擎及 API 网关 2024 年 2 月产品动态
|
1月前
|
SQL 人工智能 数据挖掘
阿里云DMS,身边的智能化数据分析助手
生成式AI颠覆了人机交互的传统范式,赋予每个人利用AI进行低门槛数据分析的能力。Data Fabric与生成式AI的强强联合,不仅能够实现敏捷数据交付,还有效降低了数据分析门槛,让人人都能数据分析成为可能!阿里云DMS作为阿里云统一的用数平台,在2021年初就开始探索使用Data Fabric理念构建逻辑数仓来加速企业数据价值的交付,2023年推出基于大模型构建的Data Copilot,降低用数门槛,近期我们将Notebook(分析窗口)、逻辑数仓(Data Fabric)、Data Copilot(生成式AI)进行有机组合,端到端的解决用数难题,给用户带来全新的分析体验。
110149 118
阿里云DMS,身边的智能化数据分析助手
|
2月前
|
存储 数据可视化 数据管理
基于阿里云服务的数据平台架构实践
本文主要介绍基于阿里云大数据组件服务,对企业进行大数据平台建设的架构实践。
723 2
|
3天前
|
存储 缓存 NoSQL
Redis入门到通关之Redis缓存数据实战
Redis入门到通关之Redis缓存数据实战
|
12天前
|
API
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态
阿里云微服务引擎及 API 网关 2024 年 3 月产品动态。
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 02 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
1月前
|
缓存 NoSQL Java
【九】springboot整合redis实现启动服务时热点数据保存在全局和缓存
【九】springboot整合redis实现启动服务时热点数据保存在全局和缓存
44 0
|
1月前
|
消息中间件 编解码 运维
阿里云 Serverless 异步任务处理系统在数据分析领域的应用
本文主要介绍异步任务处理系统中的数据分析,函数计算异步任务最佳实践-Kafka ETL,函数计算异步任务最佳实践-音视频处理等。
175313 348
|
1月前
|
存储 数据采集 Apache
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍
随着业务在金融、保险和商城领域的不断扩展,众安保险建设 CDP 平台以提供自动化营销数据支持。早期 CDP 平台依赖于 Spark + Impala + Hbase + Nebula 复杂的技术组合,这不仅导致数据分析形成数据孤岛,还带来高昂的管理及维护成本。为解决该问题,众安保险引入 Apache Doris,替换了早期复杂的技术组合,不仅降低了系统的复杂性,打破了数据孤岛,更提升了数据处理的效率。
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍

热门文章

最新文章