云存储网关的缓存最佳实践

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 前言 云存储网关支持通过传统的文件协议(SMB/NFS)来访问OSS Bucket里面的数据,并能够通过缓存技术将用户频繁访问的热点数据保留在网关侧的缓存盘里,从而提供给用户更好的访问体验。用户在使用阿里云云存储网关时,经常会碰到一些缓存相关的问题,比如在创建共享时如何选择缓存盘的容量和类型,比如缓存的数据淘汰策略是什么等。

前言

云存储网关支持通过传统的文件协议(SMB/NFS)来访问OSS Bucket里面的数据,并能够通过缓存技术将用户频繁访问的热点数据保留在网关侧的缓存盘里,从而提供给用户更好的访问体验。使得用户在享受云上海量OSS存储空间的同时,还兼具本地的高速访问性能。下面是阿里云文件网关的架构图。

83b20186b331ce7e094f76cd1ccdcfc4bef93a16

用户在使用阿里云云存储网关时,经常会碰到一些缓存相关的问题,比如在创建共享时如何选择缓存盘的容量和类型,比如缓存的数据淘汰策略是什么等。本文接下来的内容将结合缓存盘的工作原理来解开这些困惑。云存储网关根据支持的协议的不同,分为支持NFS/SMB文件协议的文件网关和支持iSCSI协议的块网关。它们两者的缓存工作机制是不一样的,本文主要针对的文件网关。

工作原理

文件网关支持缓存模式和复制模式两种模式,绝大部分用户使用的应该都是缓存模式。缓存模式是指缓存盘的数据到一定比例之后,文件网关会自动淘汰那些访问不频繁的数据。在这种模式下,固定容量的缓存盘可以管理远远大于缓存盘实际容量的OSS Bucket。复制模式则不同,数据在网关侧和OSS Bucket里面是1:1的,所以网关不会去做数据的淘汰,一定容量的缓存盘理论上只能管理对应于缓存盘容量的OSS Bucket。复制模式针对的场景主要是OSS Bucket总数据量基本不会增长且总数据量不是特别大,同时希望将所有数据都保持在网关共享里加速访问。不过这种场景毕竟在少数,绝大多数用户会选择缓存模式以应对日后OSS Bucket里面的数据增长。

cachemode

在缓存模式下,缓存盘的数据会在60%满的时候触发淘汰直到实际数据量落到60%以下,从而保证永远有足够的缓存容量面对新的数据写入。那么淘汰的策略是如何的呢,如何决定哪些数据是可以淘汰的呢?文件网关淘汰的实际上是已经同步到OSS Bucket里面的文件,也就是说对某个文件的最后一次修改应用到网关的SMB或者NFS共享之后,并且网关已经将这个文件上传到OSS Bucket里面,那么这个文件就是可以淘汰的。如果用户还在持续的对某个文件进行写入,这个文件是不会被选为一个淘汰的对象的。所以用户如果同时打开多个文件进行写入,缓存盘的容量就应该比同时在写的所有文件的总容量要大,否则就有可能导致数据来不及淘汰而造成写入错误!!!

在复制模式下,因为数据不会发生淘汰,相对来说就简单很多。缓存盘的容量比OSS Bucket里面的总数据大就可以,这种模式注定它不可能管理特别大的数据量,因为当前支持的缓存盘的最大容量32TB。所以除非对复制模式有强需求,还是推荐使用缓存模式,相对来说更加灵活。

另外文件网关会预留一部分缓存盘空间存储元数据,一般会预留20%。这部分元数据主要是用来存储单个文件的元数据,包括大小,修改时间等等。所以即使某个文件的数据被淘汰之后,网关还是存储了一个桩文件在元数据里,这样用户从客户端进行文件夹浏览的时候,还是能够看到数据被淘汰掉的这个文件,给用户一致的体验。用户如果试图读取这个文件内容,网关会负责将数据再次从OSS Bucket里获取到缓存盘里面。这部分元数据空间关系到当前共享可以支持的最大文件数目,毕竟40GB的缓存盘的元数据空间肯定低于50GB的缓存盘的元数据空间。一般来说100G的缓存盘已经可以支持到1000万文件了。

注意事项

了解缓存的工作原理之后,下面这些其实都比较好理解了。

如果你的业务对带宽和IOPS的要求比较高,比如跑的数据库之类的对时延要求比较高的业务,那么可能SSD类型的缓存盘更适合,因为它拥有更好的带宽和IOPS。SSD类型的缓存盘的带宽和IOPS都会比高效云盘更优秀,SSD缓存的最高IOPS可以到25000,高效云盘缓存是5000,带宽方面SSD缓存最高可以到300MB,高效云盘缓存的带宽最高可以到140MB。

容量的选择主要和并发数和最大文件大小有关。缓存盘的可用容量(需要扣除元数据空间)需要大于并发数和最大文件大小的乘积,这样才不会造成数据写入错误。当然越大的缓存盘本地能够缓存的热数据量也就越多,总体来说性能会更好。所以如果希望能够获得比较好的性能,缓存盘还是要设置的稍微大一些。

云存储网关的控制台现在也提供了非常方便的计算器,根据用户输入的IOPS和带宽需求等可以作出合适的缓存容量和类型的推荐。结合我们前面讲的对照看下图中每一个条目,相信很好理解。

calcu

小结

本文介绍了云存储网关文件网关的缓存工作原理,包括缓存盘元数据空间管理,数据淘汰策略等,旨在解答用户在选择和使用缓存盘时遇到的一些问题。

相关实践学习
1分钟 Serverless搭建高性能网盘
本场景将使用阿里云函数计算、文件存储NAS以及开源项目Kodbox,带大家1分钟Serverless搭建个人高性能网盘,网盘可长期使用。
目录
相关文章
|
8月前
|
存储 缓存 NoSQL
Redis缓存应用与最佳实践:优化性能与处理挑战
本篇深入探讨了Redis在缓存应用中的最佳实践,旨在优化性能并处理常见的缓存挑战。我们首先介绍了设计高效缓存架构的基本原则,展示了如何使用Redis作为缓存存储来提升应用性能。进一步地,我们讨论了缓存更新策略,演示了如何在源数据更新时同时更新缓存,以确保数据的一致性。
359 0
|
Web App开发 存储 缓存
【译】缓存最佳实践 & max-age的陷阱
【译】缓存最佳实践 & max-age的陷阱
225 0
【译】缓存最佳实践 & max-age的陷阱
|
存储 消息中间件 缓存
Java高性能系统缓存的最佳实践(下)
Java高性能系统缓存的最佳实践
270 0
|
消息中间件 存储 缓存
Java高性能系统缓存的最佳实践(上)
Java高性能系统缓存的最佳实践
231 0
Java高性能系统缓存的最佳实践(上)
|
存储 缓存 物联网
云存储网关管理缓存的操作流程
云存储网关为每个共享路径提供一个缓存盘,本文介绍如何通过本地文件网关控制台管理缓存,包括添加缓存、删除缓存,缓存盘测速等操作。
784 0
|
Web App开发 缓存 前端开发
|
7月前
|
存储 Linux API
如何经济高效使用云存储网关对接OSS存储
存储网关是一款可以为OSS存储提供文件访问接口的产品,从而用户可以像使用NAS一样在Windows/Linux操作系统里面直接挂载OSS进行使用。众所周知,OSS存储具有多种存储类型。那么对于所有的存储类型,云存储网关是否都适用呢?本文将围绕这一话题,展开一些探讨。
155 0
|
存储 缓存 对象存储
利用云存储网关在Windows上挂载OSS
概述 阿里云OSS提供了海量低成本高可靠的对象存储,非常适合于存储文件,图像,视频等非结构化数据,同时也提供了丰富的SDK生态给开发者集成使用。但是对于开发资源有限的小企业或者个人用户而言,直接使用OSS存储还是存在诸多不便。
8725 0
|
存储 Kubernetes 文件存储
使用阿里云容器ACK通过云存储网关(CSG)挂载OSS
本文将详细介绍如何使用阿里云容器服务ACK通过云存储网关挂载OSS。
1211 1
使用阿里云容器ACK通过云存储网关(CSG)挂载OSS

相关产品

  • 云存储网关