1、NetApp技术报告FlashCache最佳实践指南NetApp公司SkipShapiro2013年11月ITR-3832摘要NetAppsFlashCachel和FlashCache2卡,以及DataONTAP操作系统中内嵌的缓存软件,可以提升NetApp存储系统的性能。本指南介绍了FlashCache和FlashCache2的工作原理,提供了成功实施所需的基本信息,同时还说明了如何衡量FlashCache在已部署的系统中的效用。目录1 概述41.1 NetAPP虚拟存储层41.2 使用FlashCache的优点42 FlashCache的工作原理52.1 DataONTAP磁盘读取操作52
2、2 DataONTAP清除系统内存空间以容纳更多数据52.3 在FlaShCaChe中保留活动数据62.4 从FlashCache中读取数据62.5 从FIaShCaChe中删除数据72.6 可通过FlashCache加速的工作负裁72.7 不可通过FlashCache加速的工作负载73 FlashCache的工作模式73.1 元数据模式73.2 普通数据模式(默认设置)83.3 低优先级模式83.4 使用普通数据模式进行顺序读取缓存93.5 使用以7-模式运行的DataONTAP进行混合缓存94 FlashCache在集群模式DataONTAP中的运行104.1 管理104.2 运行115
3、 FlashCache与其他DataONTAP功能的互操作性125.1 重复数据删除125.2 FIexCIone125.3 数据压缩125.4 FlashPool126性能要求和性能监控126.1 缓存预热期126.2 FlashCache重新恢复136.3 可用性方面的注意事项136.4 监控FlashCache的性能147缓存规模估算157.1 使用预测性缓存统计信息167.2 考虑添加更多缓存168结论17插图目录图1)NetAppVST产品系歹J04图2)在未配置FlashCache的DataONTAP存储系统中执行的读取操作。5图3)清除未配置FlashCache的DataONTA
4、P存储系统中的内存。6图4)将数据插入FlashCache缓存。6图5)从FlashCache读取数据的速度通常要比从磁盘读取快10倍。6图6)元数据缓存。8图7)普通数据缓存;同时缓存元数据和用户数据。8图8)低优先级数据缓存;元数据、用户数据和低优先级数据将被缓存。9图9)Voll卷启用cache=keep优先级后FIashCache在元数据模式下的运行情况。10图IO)VOI2卷启用cache=reuse优先级后FlashCache在普通模式下的运行情况。10图11)使用集群模式DataONTAP时的直接数据访问。11图12)使用集群模式DataONTAP时的间接数据访问。11图13)工
5、作负载不变、缓存大小逐渐增加的条件下两种工作集大小的命中率。16图14)通过添加更多缓存实现的命中率增长.161概述NetAppFlashCache和FlashCache2(除非另有说明,本报告中统称为FlashCache)可将缓存软件与基于闪存的PCI-Express(PCIe)卡相集成来提高存储系统性能。此缓存软件内嵌在DataONTAP操作系统中,而两代FlashCache卡(FlaShCaChe和FlashCache2)均使用相同的软件。FlashCache可对缓存的读取数据实现毫秒级访问,这要比硬盘驱动器(HDD)的典型读取延迟快8到20倍。FlashCache卡可提供256GB、5
6、12GB和ITB三种容量,FlashCache2卡可提供512GB、ITB和2TB三种容量。某些存储控制器型号可以安装多个卡,所有卡的容量均作为一个共享的缓存资源来使用。1.1 NetApp虚拟存储层NetApp虚拟存储层(VST)是一种基于闪存的产品组合,适用于DataONTAP系统,这些产品可以共同实现从服务器到存储的端到端数据缓存功能。VST包括服务器缓存软件FlashAccel-以及两个辅助存储缓存选件:FlashCache和FlashPoob-o本技术报告重点介绍FlashCache;FlashPool和FlashAccel将在其他类似报告中介绍。所有卷的控制器级读取缓存易于实施和使
7、用图I)NetAPPVST产品系列。聚合级读写缓存.按卷应用策略在控制器接管期间提供持久的缓存数据访问1.2 使用FlashCache的优点通过FlashCache和FlashCache2,初次从HDD读取的数据(应用程序数据和存储系统元数据)在缓存中保留的时间会更长,这样,此后在请求读取相同数据时就可以从低延迟缓存中进行读取,而不必再从HDD中检索数据(HDD的响应速度要慢于缓存)。在系统中实施FlashCache具有以下一项或多项优点: 可加快大型应用程序数据集的读取响应速度。与没有辅助缓存的系统相比,配置了FlashCache的NetApp系统可以缓存多达85倍的数据,并且从缓存读取数据
8、的速度可比从HDD读取快2至10倍。 可为其他工作负载提供更多的HDD操作。通过使用缓存处理重复性读取请求,FlashCache可以减轻HDD的操作负担,使磁盘驱动器可以处理其他读写请求。 可提高系统吞吐量(IoPS)。如果因系统的HDD利用率较高而使吞吐量受到限制,FlashCache可以利用缓存处理重复性读取请求,使HDD可以处理其他请求,从而提高系统的总IOPS。 可减少HDD的数量。为支持一组指定工作负载而配置了FlashCache的NetApp存储系统,与未配置辅助缓存的系统相比,所需同类型(rpm)的HDD数量通常更少。通过FlashCache,往往还可以为系统配置速度较慢、每TB
9、成本较低的HDD0为存储系统配置了FlashCache以及较少的(有时速度也较慢的)HDD后,与仅配置HDD的系统相比,系统总体成本会更低。 可降低数据中心的运营支出。配置了FlashCache以及数量较少或速度较慢的HDD的存储系统,与仅配置HDD而未配置FlashCache的同类系统相比,所占用的数据中心机架空间往往会更少,电耗和散热成本也更低。如上所述,配置了FlashCache的NetApp存储系统可以提供非凡的性能和/或存储效率优势。但是,以下几点是FlashCache无能为力的: 降低或缓解较高的系统内存或CPU利用率。FlashCache使用系统内存和CPU周期来管理缓存,因此它
10、会增加而不是减少这些资源的利用率。这样,系统就必须为FlaShCaehe提供充足的可用内存和CPU周期,才能发挥其优势。 提高存储控制器的最大吞吐量。实现系统的最大吞吐量(IoPS或MB/秒)与存储控制器的内存和CPU资源密切相关。缓存技术无法提高系统中可用的内存或CPU周期。因此,配置了FlashCache的NetApp存储系统的最大吞吐量并不会比仅配置HDD的系统更高。 加快写入操作的速度。FlashCache是一种读取缓存;可以加快重复性读取操作的速度。DataONTAP操作系统已使用内存写入缓存和非易失性内存(NVRAM或NVMEM)进行了写入操作优化,可以快速响应写入操作。2 Fla
11、shCache的工作原理FlashCache可通过扩充DataONTAP系统的本机缓存功能,提供出色的性能和存储效率优势。DataONTAP系统会在控制器内存缓冲区中缓存读取操作所需的数据。但是,控制器内存与大多数系统中存储的数据总量的比率通常很低(5%或更低);因此,存储的数据只有一小部分可以缓存在内存缓冲区中。向系统控制器添加一个或多个FlashCache卡可以显著提高可保留在缓存中的数据量,从而加快响应更多读取请求的速度。本章节其余部分将解释使用FlashCache进行读取和缓存操作的工作原理。2.1 DataONTAP磁盘读取操作收到读取请求后,如果所请求的数据尚未保存在控制器内存或F
12、lashCache缓存中,则会从磁盘检索请求的数据并将其放入内存缓冲区。然后,会将数据转发给发出请求的主机或客户端。图2显示了未安装FlashCache卡的系统所执行的这一操作。图2)在未配置FlashCache的DataONTAP存储系统中执行的读取操作。2.2 DataoNTAP清除系统内存空间以容纳更多数据随着要读取其他数据的请求向内存插入的数据不断增多,所有内存缓冲区最终都会被占满。DataONTAP会确定内存中保留的最没有价值的数据,并将该数据逐出内存缓冲区,以便为从磁盘读取的新数据腾出空间。图3)清除未配置FlashCache的DataONTAP存储系统中的内存,2.3 在Flas
13、hCache中保留活动数据在配置了FlashCache的系统中,指定要从控制器内存缓冲区逐出的数据会在从内存逐出之前插入到FlashCache缓存中。图4)将数据插入FlashCache缓存.2.4 从FlashCache中读取数据收到数据读取请求后,如果要读取的数据已经不在内存中,而是位于FlashCache缓存中,则会从FlashCache缓存(而不是从磁盘)提供数据,并将数据重新插入内存缓存区中。数据一旦进入内存,就会转发给发出请求的主机或客户端。从FlashCache提取数据的速度要比从磁盘检索数据快得多-通常至少快10倍。因此,应用程序响应时间和服务器利用率往往会因数据等待时间缩短而
14、有所改进。图5)从FlashCache读取数据的速度通常要比从磁盘读取快10倍。2.5 从FlashCache中删除数据尽管FlashCache可以比控制器内存容纳更多数据,但它也属于有限资源,最终也会被占满,这时就需要逐出某些数据,以便为新数据腾出空间。FlashCache对它所缓存的数据使用先入先出(FIFO)的替换算法。缓存中最旧的数据会先从缓存中删除,以释放空间来容纳新数据。此方法会以同样的方式处理FlashCache中的所有数据块,频繁访问的数据会保留在内存缓冲区缓存或FlashCache缓存中,以便于快速访问。2.6 可通过FlashCache加速的工作负载FlashCache可以
15、加快任何重复性读取工作负载的响应速度,无论访问存储系统中的数据时使用的哪种协议。FlashCache既适用于块(FC、FCoE或iSCSI)访问工作负载,也适用于文件(CIFS/SMB和NFS)访问工作负载。第3节“FlashCache的工作模式”说明了如何使用FlashCache策略选项调整FlashCache的缓存行为。2.7 不可通过FlashCache加速的工作负载通常,有两种类型的工作负载无法利用FlashCache加速:大部分由写入请求组成的工作负载大部分由非重复性读取请求或非频繁重复性读取请求组成的工作负载FIaShCaChe不会缓存写入数据,因此无法加快写入工作负载的速度。在写
16、入操作占主导的混合读写工作负载中,使用FlashCache可能会产生间接优势:如果可以从缓存处理读取操作,则HDD就可以处理更多写入IZOo非重复性读取工作负载无法从FlashCache获益,因为插入到缓存中的数据不会被再次读取。同样,读取请求重复频率不高的工作负载也是如此;上次的读取操作所请求的数据不可能长时间保留在缓存中。3 FlashCache的工作模式FlashCache提供了三种工作模式或缓存策略:元数据模式、普通用户数据模式和低优先级模式。可以通过不同的模式优化FlashCache的缓存行为,使其最适合存储系统所处理的工作负载。元数据模式缓存的数据范围最窄,低优先级模式则最宽。3.
17、1 元数据模式在DataONTAP环境中,元数据主要由间接块(这些块可引用包含应用程序或用户数据的块)和特殊文件(如目录)组成。使用元楚据模式时,只有即将从内存缓冲区逐出的元数据才会插入到FlashCache缓存中;用户数据会从内存单逐出而不进行缓存。所有应用程序都会在某种程度上使用元数据,并且某些工作负载具有的元数据量较大(与应用程序数据相比)。例如,由数千万或数亿个小文件组成的工作负载就属于高元数据工作负载。但是,现售的NetAppFAS和V系列存储控制器支持大小亥512GB或更大的FlashCache卡。这些卡的容量足以缓存所有元数据,即使对于文件数量极多的工作负载也不例外,同时还有多余
18、空间来容纳部分用户数据。因此,目前几乎不会建议使用元数据模式。通过在DataONTAP中设置以下FlexScale选项,可以选择元数据模式:flexscale.enableonflexscale.lopri_blocksoffflexscale.normal_data_blocksoff图6)元数据缓存。Iopri bocks=offnormal_data_blocksoff(元数据)3.2 普通数据模式(默认设置)普通数据模式会在从内存缓冲区逐出元数据和随机读取的用户数据之前,将这些数据插入到FlashCache中。普通数据模式是FlashCache默认的缓存模式,建议对大部分部署采用该模式
19、用于启用普通数据模式的FIexScaIe选项设置如下:flexscale.enableonflexscale.lopri_blocksoffflexscale.normal_data_blockson图7)普通数据缓存;靛缓存品数据和用户数据。IoprLblocks-OffnormaLdaIaJ)1。CkS=On(元数据)3.3 低优先级模式低优先级用户数据通常是指那些保留在内存缓冲区中而用处最小的应用程序数据,因此这类数据往往最先被逐出缓冲区,以便将高优先级数据插入内存。在普通模式下使用FlashCache时,不会向FlashCache插入低优先级数据。但是对于某些工作负载,在缓存中保留低
20、优先级数据确实可以提高性能。使用此模式时会向FlashCache插入两类低优先级用户数据:写入数据。使用DataONTAP时,要写入的数据会缓冲在DRAM中,并记录在非易失性内存(NVRAM或NVMEM)中。将缓冲的写入数据提交到磁盘后,这些数据将从NVRAM(或NVMEM)中转储,并以低优先级保留在DRAM中。换句话说,只要元数据或普通用户数据需要空间,就会将近期写入的数据从内存中逐出。某些应用程序工作负载会在写入数据后不久就回读最近写入的数据。对于这类工作负载,FIaShCaChe可以在近期写入的数据块从内存中转储之前将它们保留在缓存中,从而提高读性能。长时间顺序读取操作。长时间顺序读取的
21、数据块保留在内存缓冲区的时间只够将数据传递给发出请求的主机或客户端。随后该数据将被迅速逐出内存,因为只读取一次的数据可能会迅速使内存缓冲区溢出,并代之以更有可能重复读取的元数据或随机用户数据。但是,在某些工作负载中,多个客户端会在短时间内请求顺序读取的数据,在这种情况下,将数据保留在FlashCache中可减轻HDD的重复性读取负担,从而获得一定优势。用于启用低优先级模式的FIexScaIe选项设置如下:flexscale.enableonflexscale.lopri_blocksonflexscale.normal_data_blockson图8)低优先级数据缓存;元数据、用户数据和低优先
22、级数据将被缓存。IoprLblocks=Onnormal data bocks=on(元数据)3.4 使用普通数据模式进行顺序读取缓存从DataONTAP8.2开始,我们提供了一个选项,使用该选项,当FlashCache在普通数据模式下运行时可以缓存长时间顺序读取的数据。将flexscale,readaheadblocks设置为On可启用此选项。在需要缓存顺序读取的数据时,建议使用此选项而不使用低优先级模式,因为readahead选项不会同时缓存写入数据。3.5 使用以7模式运行的DataONTAP进行混合缓存FlashCache属于控制器范围的资源,所选的缓存模式适用于在某个控制器所拥有的聚
23、合上配置的所有卷的数据。以7-模式运行的DataONTAP包含一项名为FlexShare的功能,与FlashCache一同使用时,能够在卷级别对缓存保留策略进行优调。例如,最佳操作模式可能是仅缓存除一个卷之外的所有卷的元数据,这种情况下使用普通模式数据缓存将受益最大。这时可以使用FIexShare优先级设置来修改被排除的卷的FlashCache缓存行为。要使用FIexShare和FlashCache对特定卷的缓存行为进行优调,请遵循以下步骤:1 .在命令提示符处输入以下命令,启用FIexShare:priorityon2 .输入以下命令设置FlexShare优先级,使其仅影响缓存行为:prio
24、ritysetenabled_components=cache3 .这时有两个选项可供选择。当FlashCache设置为仅缓存除一个卷之外所有其他卷的元数据时,第一个选项可以保留被排除的那个卷的普通用户数据。要启用此行为,请使用以下命令: prioritysetvolumecache=keep此命令仅更改指定卷的FlashCache操作,以便同时缓存元数据和普通用户数据。注释:如果FlashCache在普通模式或低优先级模式下运行,步骤3中的FIexShare设置将无效。图9显示了名为VoH的卷在设置了cache=keep优先级后的缓存行为。图9)Vol1卷启用cache=kep优先级后Fla
25、shCache在元数据模式下的运行情况。当FIaShCaChe在普通模式或低优先级模式下运行时,使用第二个选项,目的是仅保留特定卷的元数据。这种情况下,要使用的优先级命令为: prioritysetvolumeVol2cache=reuse图10显示了名为Vol2的卷的此缓存行为。图10)Vol2卷启用cache=reuse优先级后FlashCache在普通模式下的运行情况。只有以7-模式运行的DataONTAP才提供FIexShare功能。对于集群模式DataONTAP,选中的FlaShCaChe模式将应用于在某个节点(控制器)下的聚合上配置的所有卷,并且无法修改各个卷的缓存行为。“系统管理
26、指南”中的“系统性能和资源”小节介绍了有关管理FIexShare的详细信息。此外,NetApp技术报告TR-3459FIexShare设计和实施指南也对FIexShare进行了详细讨论:WWW.netappcom/CrVrneClia/tr-3459.pdf.4 FlashCache在集群模式DataONTAP中的运行FlashCache缓存在集群模式DataONTAP中的工作原理与在7-模式下运行的DataONTAP中相同,只是如上一节所述,在7-模式下可以使用FIexShare0但是,集群模式DataONTAP的命令行管理和数据访问方法有所不同,本节将就此进行说明。4.1 管理默认情况下,
27、集群模式DataONTAP通过集群Shell进行管理。FlashCache在节点Shell中按每个节点进行管理。在集群Shell中使用以下命令,可以连接到节点Shell:Cluster:noderun-node在节点Shell中,使用与上一节介绍的相同命令来修改缓存设置。例如,使用以下命令将在节点“nodeA”上启用普通数据缓存模式:nodeAoptionsflexscaleflexscale.enableonflexscale.lopri_blocksoffflexscale.normal_data_blockson4.2 运行FlashCache将卷的数据缓存在负责管理该卷所在聚合的节点(
28、控制器)上。下面的示例说明了通过卷所在的节点直接访问数据时以及通过其他节点间接访问数据时FlashCache缓存的运行情况。这两个示例显示的均是一个四节点(两个HA对)集群。直接数据访问在此示例中,客户端通过LIF连接到节点A1并向节点A所管理的聚合上配置的一个卷请求数据。数据由节点A直接提供给客户端,无需经过集群互连。如果请求的数据已缓存,将从FlashCache提供数据;否则,将从磁盘提取数据。此卷的数据仅缓存到节点A上的FlashCache中。图11)使用集群模式DataONTAP时的直接数据访问。客户读取(11H间接数据访问在此示例中,客户端通过LlF连接在节点C上,并向节点A所管理的
29、聚合上配置的一个卷请求数据。从节点A检索到数据后,数据经过集群互连传递至节点C,之后由节点C提供给客户端。如果请求的数据已缓存,该数据会驻留在节点A上的FlashCache中,并通过缓存提供。如果数据未缓存,将从节点A上的磁盘中检索该数据。在这种情况下,请求的数据仅缓存在节点A上,永远不会缓存在节点C上。图12)使用集群模式DataONTAP时的间接数据访问。5 FlashCache与其他DataONTAP功能的互操作性FlashCache在大多数其他DataONTAP软件功能的下层运行。这使得FlashCache能够在同时使用数据保护功能(如SnapMirror和SnapVault)和存储效
30、率功能(如重复数据删除、FlexClone和数据压缩)的系统中为工作负载加速。FlashCache整合了重复数据删除和FIexCIone的存储效率功能,但与数据压缩功能有所不同。本节将介绍FlashCache与这些功能的互操作性,以及如何将FlashCache与FlashPool配合使用。5.1 重复数据删除已进行重复数据删除的数据块可按照与未进行重复数据删除的数据块相同的方式进行缓存。此外,缓存在FlashCache中的数据块与在磁盘上一样进行重复数据删除;也就是说,只需要一个物理块便可缓存多个针对同一数据的逻辑弓I用。通过这种方式,重复数据删除功能可使FlashCache存储更多唯一数据,
31、从而增强缓存效果。5.2 FIexCIoneFlashCache可以缓存来自文件、LUN和卷克隆的数据块,并且只需要一个物理块便可缓存多个针对克隆块的引用。与重复数据删除一样,使用FIexCIone时,FIaShCaChe可缓存更多唯一数据,从而增强缓存效果。5.3 数据压缩FlashCache可以缓存已启用数据压缩功能的卷中的数据。但是,只可以缓存这些卷中未经压缩的块;经过压缩的块不会插入FlashCacheo5.4 FlashPoolFlashCache和FlashPool可以在一个节点(控制器)上、一个HA对内以及单个集群模式DataONTAP集群中配合使用。FlashPool聚合或全S
32、SD聚合中配置的卷的数据将自动被排除在FlashCache缓存之外。FlashPool聚合中配置的卷的数据使用FlashPool缓存,SSD聚合中配置的卷的数据不会因使用FlashCache而获益。尽管FlashCache和FlashPool可以配置在同一节点上或同一HA对中,但可配置的总缓存会受到一定限制。使用FlashCache和FlashPool时的最大缓存大小因控制器型号和DataONTAP版本而异;有权访问NetApp支持站点的客户,可在NetAppHardwareUniverse中找到相关详细信息。6性能要求和性能监控6.1 缓存预热期每个控制器所支持的FlashCache容量因型
33、号而异,在最大型号上最高可纵向扩展至8TiBo因此,可能需要数个小时才能完全预热系统中的缓存。要理解填满缓存和预热缓存之间的区别,以及空的缓存意味着什么,有必要进一步了解存储系统如何使用缓存。系统启动时,或者在发生故障后进行的接管活动中执行交还之后,或者重新恢复功能被禁用时,FIaShCaChe模块中没有数据可用于加速工作负载。这导致所有初始读取的数据都来自磁盘子系统。随着数据流经系统,缓存中将填充数据。最终,系统将达到一个点,在这一刻会出现两种情景之一:一种情景是不需要再载入更多信息,唯一载人的数据将替代那些因覆盖而失效的数据;另一种情景是流经系统的数据量超过缓存所能容纳的量,这时它将替代有
34、效条目来为新数据让出空间。在第二种情景中,缓存仅在填满的那一刻发挥了100%的效用。使用情况并不能表明缓存的“繁忙”程度,只能说明它的容量占用程度。很多情况下,由于DataONTAP管理缓存所用的算法的原因,缓存永远不会达到100%填满,而是处于稍微低于100%的使用状态。要确定完全填满缓存可能需要的时间,可以使用下面这个简单的算式:填满缓存所需的时间=(缓存大小)/(每秒的读取吞吐量)例如:每秒512GB100MB=5,120秒=85分钟乍看起来,此情形可能会让人很惊讶,但这里并未考虑缓存以及缓存的数据随时间发生的行为变化。随着缓存被填满且被系统使用,最新放入缓存的数据被重复使用的可能性最高
35、随着缓存不断填充数据,在系统中保存更多数据所带来的相对效果将会减弱。因此,在向缓存填充数据的过程中,缓存技术对前10%的用量效果最佳,对后10%效果最差。要想尽可能获得最大效果.并最大程度地为大型数据集带来优势,缓存需要具有很大的容量,但是,缓存的优势首先应归功于首次放入其中的可重复使用的条目。在缓存预热时间方面,需要考虑以下问题: 工作负载的读取吞吐量如何? 工作集的大小如何? 工作集中的数据重复使用率如何?这些因素共同影响预热时间的长短。如前所述,吞吐量会直接影响缓存可以识别的数据缓存速度。工作集大小可能比所缓存的实际数据量大,也可以比该数据量小;实际上,很多工作负载的工作集内都存在热点
36、其中有较小一部分数据处于活动状态),而这些热点会迁移到工作集内的其他位置。最后,如果工作集中存在大量重复使用的数据,则预热的效果会比重复使用的数据较少时更加明显。6.2 FlashCache重新恢复FlashCache重新恢复是DataONTAP8.1中引入的一项功能,它使存储系统可以在用户发起控制器接管或关闭操作后保留缓存的内容。重新恢复功能可以显著缩短控制器重新启动或交还后的预热时间,使系统更快地恢复最佳性能。默认情况下,重新恢复功能已启用,无需在DataONTAP中进行额外配置。但是,如果系统发生混乱或断电,或者发出了某些阻止重新恢复的命令,则不会进行重新恢复C有关这些命令的详细信息,
37、请参阅系统管理指南。用户在高可用性环境中发起接管期间,接管配对系统将维护一份日志,记录故障配对系统缓存中必定会失效的数据。如果缓存中存储的大量数据在接管期间失效,则在节点恢复联机后,能够重新恢复的数据将减少,而缓存可能需要更多的时间来预热。6.3 可用性方面的注意事项接管事件在设计使用FlashCache的解决方案时,请记住以下几点:NetApp建议为HA对中的各个节点采用对称的缓存配置。例如,如果其中一个系统具有2TB缓存,另一个系统也应具有2TB缓存,这样才可能在接管时提高性能的一致性。当发生接管时,配对节点负责缓存数据。执行交还时,可能需要重新初始化缓存,具体取决于接管的原因。如果可以使
38、用缓存重新恢复功能,预热时间可能会有所缩短。非中断性故障FlashCache的设计可保证其故障属于非致命性故障。当发生硬件故障时,FlashCache模块将变为脱机状态,系统将在缺少该模块的情况下继续运行。这样将保证数据的可用性,等到可以停机的时段再更换故障模块。6.4 监控FlashCache的性能FlashCache使用DataONTAP计数器管理器架构来维护性能数据点。模块的计数器管理器对象名称为:ext_cache_obj要查着计数森对象中的信息,请使用以下命令:statsshowext_cache_objext_cache_obj:ec:type:IOMEM-FLASHext_cac
39、he_obj:ec:blocks:402653184ext_cache_obj:ec:size:1560ext_cache_obj:ec:usage:1%ext_cache_obj:ec:accesses:Oext_cache_obj:ecO:disk_reads_replaced:0/sext_cache_obj:ecO:hit:0/sext_cache_obj:ec:hit_normal_levO:0/sext_cache_obj:ec:hit_metadata_file:0/sext_cache_obj:ec:hit_directory:0/sext_cache_obj:ecO:hit_
40、indirect:0/sext_cache_obj:ecO:total_metadata_hits:0/sext_cache_obj:ec:miss:0/sext_cache_obj:ec:miss_metadata_file:0/sext_cache_obj:ec:miss_directory:0/sext_cache_obj:ec:miss_indirect:0/sext_cache_obj:ec:hit_percent:0%ext_cache_obj:ecO:inserts:0/sext_cache_obj:ec:inserts_normal_levO:0/sext_cache_obj:
41、ec:inserts_metadata_file:0/sext_cache_obj:ec:inserts_directory:0/sext_cache_obj:ecO:inserts_indirect:0/sext_cache_obj:ecO:evicts:0/sext_cache_obj:ecO:evicts_ref:0/sext_cache_obj:ecO:readio_solitary:0/sext_cache_obj:ec:readio_chains:0/sext_cache_obj:ec:readio_blocks:0/sext_cache_obj:ecO:readio_max_in
42、flight:236ext_cache_obj:ec:readio_avg_chainlength:Oext_cache_obj:ec:readio_avg_latency:Omsext_cache_obj:ec:writeio_solitary:0/sext_cache_obj:ecO:writeio_chains:0/sext_cache_obj:ec:writeio_blocks:0/sext_cache_obj:ecO:writeio_max_in_flight:67ext_cache_obj:ec:writeio_avg_chainlength:Oext_cache_obj:ec:
43、writeio_avg_latency:Omsext_cache_obj:ecO:invalidates:0/s此输出内容虽然完整,但只能以单一时间点的视图显示计数器数据。因此,NetApp建议对FlashCache计数器使用带有预设的重复格式命令。这样可以每隔5秒输出一次最关键计数器的每秒数据速率:statsshow-pflexscale-access输出内容的格式如下:CacteReadsWritesDiskReads阿eHitMetaNissHitEvictInvalInsertChainBlocksChainBlocksReplaced%/s/s/s%/s/s/s/s/s/s/s/s0
44、000000000000下面是这些计数器的定义: CacheUsage(缓存使用量)。模块中当前存储的数据量 Hit(命中)。每秒4kB磁盘块缓存命中率 Meta(元数据)。每秒4kB元数据磁盘块缓存命中率 Miss(未命中)。每秒未命中的4kB磁盘块缓存 Hit(命中)。总命中数/未命中数的百分比 Evict(逐出)。每秒从缓存逐出的4kB磁盘块(由于集合冲突而离开缓存) Inval(失效)。每秒从缓存中失效的4kB磁盘块(由于覆盖或让出空间而离开缓存) Insert(插入)。每秒插入缓存的4kB磁盘块 ReadsChain(读取链)。每秒的读取I/O链数 ReadsBlocks(读取块)。
45、每秒读取的4kB磁盘块数 WritesChain(写入链)。每秒的写入I/O链数 WritesBlocks(写入块)。每秒写入的4kB磁盘块数 DiskReadsReplaced(替代的磁盘读取)。每秒由缓存替代的本应转至磁盘的读取次数在该输出内容中,最重要的数据是命中率和替代的磁盘读取次数。另外,还可以获取sysstat数据,这些数据有助于了解系统的工作负载量。7缓存规模估算FlashCache可以使各种工作负载获益,但总体的性能提升取决于工作负载的特征和工作集的大小。许多可变因素会影响FlashCache缓存数据的能力。但是,可以缓存的工作集数据越多,通过FlashCache(而非访问磁盘
46、提供数据的可能性就越高。对于大多数工作负载,随着缓存大小的增加,命中数会逐渐提高并接近该工作负载的特征所允许达到的最大命中率。图13和14例举了在不同缓存点针对两种不同的工作集大小(30OGB和500GB)执行的工作负载。趋势显示回报随着所添加缓存的增加而递减;但是整体益处仍继续增长。第一张图表显示总体命中百分比。第二张图表显示缓存增加带来的增量益处,或通过添加额外缓存实现的命中百分比增长。图13)工作负载不变、缓存大小逐渐增加的条件下两种工作集大小的命中率。已实现命中百分比Vp *P P sP y? P *sP OOOOOOO 伊7 6 5 4 3 2 13去皿l-30OGB50OGB图1
47、4)通过添加更多缓存实现的命中率增长.7.1 使用预测性缓存统计信息预测性缓存统计信息(PCS)是DataONTAP中内置的一项模拟FlashCache缓存的功能。PCS可以捕获缓存统计信息,并观察使用真正的FlashCache缓存可带来哪些改进。PCS允许更改缓存大小及使用不同的工作模式(如本报告前面所述),以便确定最佳配置。请参阅TR-3801预测性缓存统计信息简介了解有关如何使用PCS的详细信息。7.2 考虑添加更多缓存已经安装了FlashCache模块的系统必须先禁用FlashCache才能运行PCSo这就带来了一个问题:如何判断添加更多缓存是否会有所帮助?因为禁用FlashCache通常无法令人接受。我们可以通过系统提供的缓存统计信息来大致判断系统是否可以从额外的FlashCache缓存中获益,但答案归根结底取决于工作负载。一般来说