一文读懂EMC存储的Fast cache(第一部分:基本概念)

写在前面,为什么要写这个文章。近日有工程师误将fast cache 理解成了cache,然后就有了一些悲剧的操作,客户数据基本上都废了。写这个文章的目的就是普及一下fast cache的基本知识以及fast cache 的一些基本概念。

文章分两篇,第一篇是基本概念,后面还有一篇是和cache的详细对比。如果还有问题,添加vx: StorageExpert我们来进行进一步的探讨。

FAST Cache 是 EMC VNX 存储系统中的一项功能,利用企业级闪存驱动器(Flash Drives)作为二级缓存,位于 DRAM 主缓存和硬盘驱动器(HDD)之间,旨在提升存储系统的整体性能。以下是对 FAST Cache 的核心要点总结:

1. 功能与原理

  • 作用:FAST Cache 通过将频繁访问的数据(热点数据)从 HDD 复制到闪存驱动器,提供更低的响应时间和更高的 IOPS(每秒输入/输出操作数),从而增强系统性能。
  • 工作机制
    • 数据以 64 KB 的块(chunk)为单位进行管理。
    • 当某个数据块被频繁访问时,FAST Cache 的策略引擎会将其从 HDD 提升(promotion)到闪存驱动器。
    • 如果数据访问频率降低或需要腾出空间,较旧的数据会被写回(write-back)到 HDD。
    • FAST Cache 命中(hit)时,数据直接从闪存驱动器读取,显著降低响应时间。
  • 缓存页面状态
    • Dirty Page:缓存中数据比原始 LUN 数据更新,需同步回 LUN。
    • Clean Page:缓存中数据与原始 LUN 一致。
    • Invalid Page:缓存中无有效数据。

这段看完,感觉Fast cache和存储的内存有很多的相似点,但也有很多的不同点。

2. 优势

  • 性能提升:特别适合随机小块 I/O 和高局部性(locality of reference)的工作负载,如 VMware View、Oracle OLTP 和 SQL Server,测试显示可显著降低延迟并提高事务处理能力。
  • 成本效益(TCO:通过少量闪存驱动器处理热点数据,剩余存储需求可使用低成本、高容量的 HDD,优化性能与成本比。
  • 全局性:FAST Cache 是系统级功能,受益于所有启用它的 LUN 或存储池,而非特定应用。
  • 非侵入式:配置和启用过程在线进行,不干扰主机操作。

3. 配置与管理

  • 硬件要求:至少需要 2 个闪存驱动器,配置为 RAID 1,容量从 100 GB 到 2 TB(视 VNX 型号而定)。
  • 管理工具
    • Unisphere:通过图形界面管理 FAST Cache 的创建、启用/禁用及监控。
    • Secure CLI:提供命令行接口,如 naviseccli cache -fast -create 创建缓存,chglun -fastcache 0 禁用特定 LUN 的缓存。
  • 启用方式
    • RAID 组 LUN:逐个启用/禁用。
    • 存储池:对整个池启用/禁用,影响池内所有 LUN。
    • MetaLUN:需对组成 LUN 单独禁用。
  • 监控:通过 Unisphere 的“Manage Cache”或 CLI 命令(如 naviseccli cache -fast -info -perfData)查看脏数据百分比和已刷新数据量。

4. 最佳实践

  • 适合场景:随机小块 I/O、高数据重访问率、HDD 性能瓶颈的系统。
  • 不适合场景:顺序或大块 I/O 工作负载(如数据库日志、VNX File SavVol LUN)。
  • 操作建议
    • 在非高峰时段执行缓存刷新,以减少对主机 I/O 的影响。
    • 优先使用闪存驱动器配置 FAST Cache,而非 FAST VP,因其全局效益更高。
    • 确保 SP CPU 使用率低于 80%,避免性能瓶颈。
  • 限制
    • VNX5100 不可同时启用 FAST Cache 和 Thin Provisioning。
    • 某些私有 LUN(如 MirrorView 的写意图日志)建议禁用 FAST Cache,以避免不必要的缓存占用。

5. 刷新与禁用 FAST Cache

  • 刷新过程:将脏数据写回原始 LUN,可能产生大量磁盘写入 I/O,需在低负载时执行。
  • 禁用方法
    • 逐个禁用 LUN 或存储池的 FAST Cache,避免直接全局销毁。
    • 使用 Unisphere 或 CLI(如 naviseccli chglun -fastcache 0)操作。
    • 监控刷新进度,确保两存储处理器(SP A 和 SP B)的脏数据百分比降至 0% 后,再销毁缓存。

6. 与其他技术的关系

  • DRAM Cache 对比
    • DRAM Cache 响应时间更快(纳秒到微秒),但容量有限,易受断电影响。
    • FAST Cache 容量更大(微秒到毫秒),非易失性,适合扩展缓存需求。
  • FAST VP 协同
    • FAST Cache 专注于即时性能提升,处理突发性负载,粒度为 64 KB。
    • FAST VP 优化长期数据分布,粒度为 1 GB,适合可预测的工作负载。
    • 两者互补,FAST Cache 避免重复提升 FAST VP 已分配到闪存的数据。

下面是关于Fast cache的一些重要概念

1. Flush(刷新)

  • 定义:Flush 是将 FAST Cache 中的“脏数据”(dirty pages,即比原始 LUN 更新且尚未同步的数据)写回到其原始 LUN(通常位于硬盘驱动器 HDD 上)的过程,以确保数据一致性。
  • 用途
    • 清空 FAST Cache 中的脏数据,为后续操作(如禁用或销毁 FAST Cache)做准备。
    • 在缓存空间不足时,通过写回(write-back)操作腾出空间。
  • 操作场景
    • 禁用 FAST Cache(针对特定 LUN、存储池或全局)。
    • 销毁 FAST Cache 前。
    • 自动触发:当 FAST Cache 需要提升新数据但缺少空闲/干净页面时,使用 LRU(最近最少使用)算法写回脏数据。
    • 故障处理:如闪存驱动器降级时,加速脏数据写回。
  • 特点
    • 是一个整体流程,包含多个数据写回操作(即 destage)。
    • 会产生大量磁盘写入 I/O,可能影响性能,建议在非高峰时段执行。
    • 可通过 Unisphere(System > Manage Cache)或 CLI(naviseccli cache -fast -info -perfData)监控进度,查看 Percentage Dirty(脏数据百分比)和 MBs Flushed(已刷新数据量)。

2. Destage(卸载/写回)

  • 定义:Destage 是将 FAST Cache 中的脏数据(dirty pages)从闪存驱动器写回到原始 LUN(HDD 或存储池)的具体动作,是 flush 过程中的核心操作。

可以把destage和flush理解成一个概念就可以了。

这里要特别强调一下,如果触发了flush或者destage的动作,不要重启控制器,如果这个时候重启控制器,落盘的动作正在进行中,是很可能导致dirty cache的,pool 或者LUN的内部状态乱掉。

3. Disable(禁用)

  • 定义:Disable 是指关闭 FAST Cache 功能,使其停止为特定 LUN、存储池或整个系统提供缓存服务。禁用后,FAST Cache 中的脏数据需要通过 flush(包含 destage)写回到原始 LUN。
  • 用途
    • 停止特定 LUN 或存储池使用 FAST Cache(例如,优化性能或排除低优先级应用的缓存占用)。
    • 为销毁 FAST Cache 做准备(逐个禁用 LUN/存储池可加速全局 flush)。
  • 操作场景
    • LUN 级别:对 RAID 组 LUN 或 metaLUN 的组件 LUN 禁用 FAST Cache。
      • CLI:naviseccli chglun -l <LUN_ID> -fastcache 0
      • Unisphere:LUN 属性 > Cache 标签,取消勾选 FAST Cache。
    • 存储池级别:对整个存储池禁用 FAST Cache,影响池内所有 LUN。
      • CLI:naviseccli storagepool -modify -id <pool_ID> -fastcache off
      • Unisphere:Storage > Storage Pools > Advanced 标签,取消勾选 FAST Cache。
    • 禁用后,系统会自动触发 flush(包含 destage)以清空相关脏数据。
  • 特点
    • 是一个配置操作,影响 FAST Cache 的启用状态。
    • 禁用后,数据访问将直接从原始 LUN 或 DRAM 缓存处理,绕过 FAST Cache。
    • 逐个禁用 LUN/存储池是最佳实践,不要一下子全部disable。

4. Destroy(销毁)

  • 定义:Destroy 是指完全删除 FAST Cache 的配置,解除闪存驱动器与 FAST Cache 的 RAID 1 绑定,使驱动器恢复为可用状态,供其他用途(如创建新 RAID 组或存储池)。
  • 用途
    • 停止 FAST Cache 功能,释放闪存驱动器资源。
    • 更改 FAST Cache 容量(需先销毁再重新创建,docu32136 第13页)。
  • 操作场景
    • 通过 Unisphere:System > Manage Cache > Destroy 按钮。
    • 通过 CLI:naviseccli cache -fast -destroy。
    • 前提条件:所有脏数据必须通过 flush(包含 destage)清空(SP A 和 SP B 的 Percentage Dirty 均为 0%)。
  • 特点
    • 是一个全局配置操作,影响整个存储系统的 FAST Cache。
    • 销毁前必须完成 flush,否则操作可能失败或卡住(How to flush and disable FAST Cache 第3页)。
    • 销毁后需重新创建 FAST Cache(包括重新配置闪存驱动器和内存映射),并经历缓存预热(warm-up)期。
    • 如果系统中存在离线 LUN 或未正确禁用的私有 LUN,销毁可能失败。

概念之间的关系

  • Flush Destage
    • Flush 是清空 FAST Cache 脏数据的整体流程,包含多个 destage 操作。
    • Destage 是 flush 的核心动作,指具体的数据块从 FAST Cache 写回到原始 LUN。
    • 例如,禁用 LUN 的 FAST Cache 会触发 flush,其中包含若干 destage 操作。
  • Disable Flush/Destage
    • 禁用 FAST Cache(disable)会触发 flush 流程,以 destage 脏数据到原始 LUN。
    • 逐个禁用 LUN/存储池是最佳实践,可加速 flush,减少全局销毁时的等待时间。
  • Destroy Flush/Destage/Disable
    • 销毁 FAST Cache(destroy)需先确保所有脏数据通过 flush(包含 destage)清空。
    • 建议先逐个禁用(disable)LUN/存储池,完成 flush,再执行销毁,以避免 flush 过慢或卡住。
    • 如果直接销毁而未完成 flush,操作可能失败。
  • 离线 LUN 的影响
    • 离线 LUN 无法 destage(因此也无法完成 flush),可能导致禁用或销毁操作卡住。

操作流程示例

假设需要销毁 FAST Cache,典型流程如下:

  1. 逐个禁用 FAST Cache(disable):
    • 对 RAID 组 LUN:naviseccli chglun -l <LUN_ID> -fastcache 0
    • 对存储池:naviseccli storagepool -modify -id <pool_ID> -fastcache off
    • 对 metaLUN 的组件 LUN 逐个禁用。
  2. 监控 flush 进度(包含 destage):
    • CLI:naviseccli cache -fast -info -perfData
    • Unisphere:System > Manage Cache,确认 Percentage Dirty 降至 0%。
  3. 销毁 FAST Cache(destroy):
    • CLI:naviseccli cache -fast -destroy
    • Unisphere:System > Manage Cache > Destroy。

 总结表

概念

定义

主要用途

触发场景

关键点

Flush

将 FAST Cache 脏数据写回到原始 LUN 的整体流程。

清空脏数据,确保数据一致性。

禁用/销毁 FAST Cache、空间不足、故障处理。

包含多个 destage 操作,可能影响性能,需监控 Percentage Dirty。

Destage

将 FAST Cache 脏数据从闪存驱动器写回到原始 LUN 的具体动作。

同步数据到后端存储,腾出缓存空间。

flush 过程中、空间不足、故障处理。

是 flush 的子操作,依赖 LUN 可用性,离线 LUN 无法 destage。

Disable

关闭 FAST Cache 功能,停止为特定 LUN/存储池或全局提供缓存。

优化缓存分配,准备销毁 FAST Cache。

逐个 LUN/存储池禁用,或全局禁用。

触发 flush/destage,逐个禁用可加速全局操作。

Destroy

删除 FAST Cache 配置,释放闪存驱动器。

停止 FAST Cache 功能,重新分配闪存资源。

全局销毁 FAST Cache。

需先完成 flush/destage,失败可能因离线 LUN 或私有 LUN 未正确禁用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值