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

https://yq.aliyun.com/articles/747224数据库


前言

云存储网关支持经过传统的文件协议(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万文件了。spa

注意事项

了解缓存的工做原理以后,下面这些其实都比较好理解了。3d

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

容量的选择主要和并发数和最大文件大小有关。缓存盘的可用容量(须要扣除元数据空间)须要大于并发数和最大文件大小的乘积,这样才不会形成数据写入错误。固然越大的缓存盘本地可以缓存的热数据量也就越多,整体来讲性能会更好。因此若是但愿可以得到比较好的性能,缓存盘仍是要设置的稍微大一些。blog

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

calcu

小结

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