1、各厂商主要缓存技术特点HDS IBM EMC NetApp存储缓存技术探秘By 黄光亮前言:当今主流的存储厂商中越来越多的使用Flash,或者说SSD。但各家用法都相近,要么作为独立的存储层,用来实际存放热点数据,要么作为缓存的扩展。这篇文档挑选具有代表性的缓存技术加以总结概括,以期能触类旁通。1 HDS缓存分区技术缓存分区(cache partition)是HDS存储独有的缓存技术,且在HDS高端和中端存储上都有应用,缓存分区包括两个含义:1)将cache分区,通过cache分区和存储分区,将磁盘阵列分成多个逻辑存储,每个业务互相不影响,这个功能在HDS的高端USP/NSC系列,以及模 块化
2、AMS/WMS系列都存在,而其他高端阵列不具备这个功能(IBM DS系列中只有DS9B2才能做到2个分区而已,而普通的8100、8300都不可以)2)在实现了cache分区以后,每个分区的cache block size都可以调整,这样每个分区可以根据应用的特点来调整block size对应相对分区应用程序的block size,比如数据库block size为8K,可以将阵列的block size调整为8或者16k,流媒体应用将block size调整为256k,512k或更大。HDS AMS系列产品与USP V系列产品都是遵循HDS先进的SOSS战略设计的,都具备能够保证应用系统QoS的缓
3、存分区功能。Cache Partition Manager高速缓存分区功能Cache Partition Manager(高速缓存分区功能)是AMS和WMS存储系统产品线的一个关键改变,可确保应用的服务质量。其它任何模块化产品都没有能力在这一级别管理高速缓存。Cache Partition Manager通过以下机制发挥作用:分区技术的使用 将Cache分为最多32个分区。每个分区的资源访问独立进行,不会互相串扰。 根据应用的I/O特性不同,可以用多种不同的方法优化每个分区的分段大小。分段尺寸可设置为4kB,8KB,16KB,64KB,256KB,512KB等等。可调的分段尺寸将大大提高缓存访
4、问的命中率。对于4KB的I/O数据, 8KB的分区将比16KB的分区大大提高访问命中率 根据应用的可靠性要求不同,对Cache的使用率要求不同,对可将每个分区的缓存设为镜像模式、无镜像模式 每个分区对应的磁盘LU可选择不同的条带大小,尺寸可由16KB,64KB,64KB一直增长到128KB,最终实现分区缓存数据写入磁盘的优化操作可调磁盘条带大小Striping Size综上所述,分区技术为模块化存储设备提供存储虚拟化的高级能力,最终为应用系统提供全方位的存储服务质量支持。2 IBM XIV的缓存技术IBM XIV扩展缓存采用的是SSD磁盘的形式,这与XIV 大容量SATA+SSD的设计理念是分
5、不开的,因为XIV倡导的就是使用低成本大容量的磁盘来获取高的性能,并实现横向扩展。SSD在XIV中并不是作为一个独立的存储层,用来存放阵列中的热点数据,而是作为缓存来提升热点数据的访问速度。因为XIV的设计人员认为如果数据不能被快速定位,那么分层存储的效率是不高的。这一点与NetApp非常相像。在XIV中使用SSD cache,不需要手工重新分布数据,因为SSD只作为阵列缓存的一个扩展。SSD在XIV中仅仅作为读缓存,当数据逐渐变冷时,将会被丢弃,取而代之的是更多的热点数据。下图是XIV SATA盘和SSD之间的关系示意。XIV阵列的构成如下,需要强调的是,SSD只是作为控制器内存的一个扩展,
6、用来作读缓存,而不是传统意义上的分层存储将SSD作为独立的一层来真正存储数据。3 EMC VNX 缓存真相EMC高端存储中前端卡与后端卡连接CACHE的方式与HDS有很大差别,HDS是通过内部交换方式连接,而EMC是直接连接,每个卡与每个CACHE板之间都有数据通道,所以,EMC的连接方式又叫直连矩阵。EMC高端存储中,如vmax,缓存采用了与EMC中端vnx不一样的镜像技术,成为读写全局cache全镜像。“全局读写CACHE全镜相”与“读写CACHE分离,写CACHE镜相技术”的差别:1)全局CACHE中,读写是混在一起的,类似oracle的buffer,读可以直接在一个CACHE中命中。2
7、)读写分离中,如果一个要读的数据在写CACHE中存在,需要先从写CACHE拷贝到读CACHE,可能存在多份。3)读CACHE一般远远大于写CACHE。下面我们来看看VNX的缓存从EMC官网下的文档h8268_VNX_Block_best_practices.pdf可以看到VNX各产品的技术规格中,内存值为:从文档的描述中可以知道:VNX的读写Cache=内存-操作系统开销-功能开销-安装的应用程序开销除去这些开销外,各产品能用于数据读写的缓存如下表。读cache的建议初始值为:但是不是这些缓存都用于处理读写请求了呢,其实不然,还会存在性能开销。从下表中可以看出,以VNX5700为例,如果启用了
8、Data Service和Fast Cache,则每个控制器可用的读写缓存总和从原来的18GB降为5280MB,减去读cache 1024MB,则写cache为4256MB,镜像后写cache为每控制器2128M。由此可粗略估算,在不开启Date Service和Fast Cache的情况下,每控制器的实际读写cache为:R/O cache = SP chche size per SP * 2 - (SP chche size per SP recommended initial read cache) / 2所以可以大概估算出EMC VNX系列存储的有效Cache容量: VNX5100(双
9、控8GB Cache): 8012-(801-100)/2=1251.5MB1.25GB VNX5300(双控16GB Cache):39972-(3997-400)/2=6195.5MB6.2GB VNX5500(双控24GB Cache):69882-(6988-700)/2=10832M11GB VNX5700(双控36GB Cache):109062-(10906-1024)/2=16871MB17GB VNX7500(双控48GB Cache):14205(2-14205-1024)/2=21819.5MB22GB由此看来,VNX的内存表面上看比较大,但实际可用的读写cache在启用
10、了各种功能后会大大缩水,下表是镜像后各产品每SP的写cache大4 NetApp的缓存技术Netapp的Flash技术已覆盖服务器、存储控制器和磁盘框三个层面,其中使用在服务器上的Flash accel,可扩大服务器的缓存,能够优化服务器闪存的使用、提高应用程序响应能力和大大提高系统总吞吐量。使用在存储控制器中的闪存介质包括VNRAM和Flash Cache,其中NVRAM优化写性能,将写请求集中起来等到consist point后再写入到磁盘中;Flash Cache优化读性能,自动将热点数据缓存到Flash Cache上,提高数据读取速度。有SSD盘组成的Flash Pool可以作为独立的
11、Aggregate放在磁盘框中,同时对随机小块的读写性能进行优化,特别是随机重写操作,有非常大的性能改善。下面将主要介绍Flash Pool闪存池的技术原理。4.1 AST&VST简介所谓自动存储分层会尝试识别热数据并将其存储在性能较高的存储介质上,同时将冷数据存储在速度较慢、成本较低的介质上,而不是将整个数据集永久地放置在昂贵的介质上。自动存储分层 (AST) 技术主要用来帮助数据中心在最大程度地降低成本和复杂性的同时,从基于闪存的介质性能改善中受益。基于闪存的设备(如基于固态硬盘 SSD 控制器的闪存)每秒可完成的随机读取操作数比最快的硬盘驱动器 (HDD) 多 25 到 100 倍,但是
12、要达到这样的性能,每 GB 成本也要高出 15 到 20 倍。HDD 的容量在不断地提高,但在每美元 IOPS 方面,HDD 却没有多少改进。闪存所提供的每美元 IOPS 则要多得多,而且延迟时间更短。NetApp虚拟存储层 (VST) 是存储基础架构中的一个自我管理型的数据驱动式服务层。它可提供对基于工作负载的优先级的实时评估,还可针对成本和性能优化 I/O 数据请求,而不必进行复杂的数据分类。NetApp使用闪存来在阵列内提供Flash Pool(闪存池)卷层次高速缓存,在控制器内提供Flash Cache(闪存高速缓存),数据默认存储在成本最低的可用物理存储设备上(通常为大容量 SATA
13、),因为 VST 会将智能缓存用在 I/O 和 CPU 开销极少的闪存上。根据实际使用模式按需进行数据提升,从而确保即时响应不断变化的工作负载需求。技术原理基于迁移的 AST 可自动化数据迁移的流程。当一个数据块被确定为“热”数据时,会将该数据块移至速度较快的介质,当该数据块变“冷”时,会将其移回速度较慢的介质。移入和移出闪存都需要访问 HDD。基于缓存的 AST 使用广为人知的缓存方式将热数据“提升”到高性能的介质中。由于 HDD 上仍保留有数据的副本,因此当数据变“冷”时,只需将其从缓存中释放即可,而不需要额外的 HDD I/O。4.2 NetApp Flash PoolFlash Poo
14、l 读缓存 读请求发起时,首先检查数据是否在内存缓冲区中;如果在,则直接返回给主机; 若不在内存中,则检查是否在Flash Pool中;若在,则将数据读入内存中,并返回给主机; 若数据不在内存中,也不在Flash Pool中,则直接从HDD读取,并将数据放入内存缓冲区中,并在Flash Pool作一个insert操作;(数据插入Flash Pool时,它的温度是中性的(neutral),即既不是冷数据也不是热数据) 数据在内存中的动向 -数据到内存被读到内存时,它将会被分类:如果是随机读数据,将会被放到一个分开的buffer里;如果是系统数据或连续读数据,则又会被放到另外的buffer里。 -
15、数据被从内存逐出(eviction)时,如果是随机数据,则会被移到CP(consistancy point)中,在下一个CP到来时,作为CP的一部分insert到Flash Pool中。 Flash Pool读缓存机制 数据插入Flash Pool时,它的温度是中性的(neutral),即既不是冷数据也不是热数据; Flash Pool的管理机制中,有一个eviction scanner的角色,会定时去扫Flash Pool中的数据;如果在扫描之前被访问过,则其温度增加,从中性变为warm,否则变为cold;再继续扫描,被访问过温度就升一级,未被访问则降一级。当到达evict时,则将冷数据清除
16、,为其他数据提供空间; Flash Pool写缓存 Wirte cashing设计用来承接针对HDD的overwrite,所以Flash Pool在写缓存上专门的目的就是减轻对硬盘随机重写的压力。 Flash Pool并不会试图截获顺序写操作,因为硬盘也可以有效的处理顺序大数据写操作; Flash Pool不能取代NVRAM作为第一写优化的地位,它只提供承接随机重写的空间; Flash Pool的write caching功能在如下场景发挥作用: -来自主机的写操作,写的位置是随机的; -前一次的随机写操作也是写到相同的块; Flash Pool写缓存机制 数据写入到Flash Pool时,温度是中性的; 当evict scanner扫盲数据时,该数据块有重写,则该数据温度不变,仍为neutral;若没有重写,则变为Cold; 当Cold的数据在下一次扫描仍没有被重写时,则被驱逐出Flash Pool,而读入到主内存中,在下一个CP到来时写到硬盘中。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1