SSD缓存

2025年2月26日 | 阅读 7 分钟

引言

固态硬盘 (SSD) 缓存,有时也称为闪存缓存,是将数据临时存储在 SSD 的 NAND 闪存芯片上的过程,以提高数据请求的响应速度。

通常,计算机系统会在硬盘驱动器 (HDD) 上保留其最新数据的永久副本,并在 SSD 缓存中保留临时副本。为了更快地访问较慢的 HDD,通常会使用闪存缓存。

SSD Caching

您可以使用缓存进行读写数据。在企业 IT 环境中,SSD 读取缓存旨在存储以前请求过的数据,以便在数据通过网络传输时能够快速检索,从而在需要时实现快速检索。临时存储或缓存是一种存储先前请求过的数据的方式,以便可以更快地访问它,并最大限度地减少对企业的带宽需求。SSD 缓存是为高级闪存存储上的数据存储提供的一种经济高效的额外解决方案。SSD 写入缓存旨在提供临时数据存储,直到较慢的持久存储介质能够以足够的资源处理写入操作。通过 SSD 写入缓存可以提高系统性能。

闪存缓存可以实现多种外形尺寸,例如 PCI Express (PCIe) 卡、SAS、Serial ATA 或非易失性内存 express (NVMe) SSD,或者安装在服务器内存插槽中的双列直插式内存模块 (DIMM)。

当 SSD 缓存软件和 SSD 缓存驱动器硬件结合使用时,VMware vSphere 和 Microsoft Hyper-V 等虚拟机 (VM) 的运行速度可以更快。此外,它们还可以将基本的操作系统缓存功能扩展到 Windows 和 Linux。SSD 缓存软件可从存储、操作系统、虚拟机、应用程序和第三方提供商处获得。

SSD 缓存的工作原理

存储控制器或主机软件选择将被缓存的数据。在计算机系统中,首先部署 RAM、DRAM 和非易失性 DRAM (NVRAM) 缓存,然后是 SSD 缓存。在每次 DRAM、NVRAM 或 RAM 缓存未命中后,当收到数据请求时,系统会检查 SSD 缓存。如果 DRAM、NVRAM、RAM 或 SSD 缓存中没有该数据的副本,则请求将被发送到主存储系统。

SSD 缓存的有效性取决于缓存算法预测数据访问模式的能力。当其缓存算法有效时,SSD 缓存可以处理很大一部分 I/O。SSD 缓存算法示例是

  • 最不常用。跟踪数据访问的频率;缓存中计数最低的项目首先被删除。
  • 最近最少使用。将最近使用过的信息保留在缓存的顶部附近;当缓存已满时,将删除较少访问的信息。

SSD 缓存的类型

系统制造商使用多种 SSD 缓存方法,例如

1. 直写式 SSD 缓存。系统同时将数据写入 SSD 缓存和主存储。在主机确认主存储设备和缓存上的写入操作都已完成之前,无法从 SSD 缓存中检索到任何数据。由于直写式 SSD 缓存不需要数据保护,因此其部署成本可能较低。一个缺点是初始写入操作会延迟。

2. 回写式 SSD 缓存。在将数据写入主存储设备之前,主机会验证数据 I/O 块是否已写入 SSD 缓存。在写入主存储之前,数据可以从 SSD 缓存中读取。一个好处是写入和读取操作的延迟都很低。主要缺点是 SSD 缓存发生故障时可能丢失数据的可能性。回写式缓存供应商通常使用电池备用 RAM、冗余 SSD 或镜像到另一个主机或控制器作为保护。

3. 回绕式 SSD 缓存。系统将数据直接写入主存储设备,跳过 SSD 缓存。当存储系统响应数据请求并填充缓存时,SSD 缓存需要时间来预热。当再次请求相同数据时,SSD 缓存将比第一次从主存储服务请求时更快。回绕式缓存可减少不经常访问的数据溢出缓存的风险。

SSD 缓存位置

SSD 缓存可与服务器、笔记本电脑、外部存储阵列、设备和便携式计算机一起使用。

NAND 闪存缓存被存储阵列供应商广泛用作更昂贵、更快的 DRAM 或 NVRAM 缓存的补充。SSD 缓存可以提高对访问频率较低的数据的访问速度,尽管它不如高性能缓存方法重要。

通过专用的闪存缓存设备,可以将缓存添加到现有存储系统中。闪存缓存设备安装在应用程序和存储系统之间时,会利用设备中内置的逻辑来决定哪些数据属于其 SSD。如果数据存储在闪存缓存设备上的 SSD 中,它可以响应数据请求。基于软件或硬件的虚拟设备可以在云端或附近的数据中心缓存数据。

英特尔为便携式计算机提供了智能响应技术,该技术使用 SSD 缓存来存储最常用的数据和应用程序。SSD 缓存可以与更经济实惠、容量更大的 HDD 单独使用,也可以集成到固态混合驱动器中。英特尔技术可以区分高价值数据(如应用程序、用户和启动数据)与与后台进程关联的低价值数据。

SSD 缓存与存储分层

为了满足性能、空间和成本目标,数据块通过手动或自动存储分层在较慢和较快的存储介质之间移动。

数据的首要版本存储在较慢或成本较低的介质上,例如 HDD 或低成本闪存,而 SSD 缓存仅在高性能闪存驱动器上保留数据的副本。

由存储控制器或 SSD 缓存软件决定缓存哪些数据。当缓存已满时,使用 SSD 缓存的系统可以将数据无效化,而不是移动它。

与将所有数据存储在闪存存储上相比,SSD 缓存是一种更经济高效的加速应用程序性能的方法,因为在任何给定时间只有一小部分数据是活动的。尽管如此,对于 I/O 密集型工作负载(如高性能数据库和金融交易应用程序),将数据放置在更快的存储层上可能是有益的,以减少缓存未命中的可能性。

SSD 缓存用例:虚拟化基础设施

SSD 缓存可以大大减少大型虚拟化网络和企业应用程序的延迟并提高性能。

例如,虚拟化系统会产生大量的随机 I/O,而 SSD 缓存可以提高 I/O 速度。这是由于将多个服务器应用程序和功能集成到虚拟化环境中的结果。这包括具有数百到数千个虚拟桌面以及数十个不同应用程序服务器和虚拟机 (VDI) 的虚拟化计算网络。

所有这些虚拟化实体都使用相同的底层存储介质,主要是 HDD,因为支持虚拟化环境并不需要用全闪存阵列替换 HDD 阵列以降低成本。虽然 AFA 可以处理非常高的 I/O 计数,但即使是更大的虚拟化环境,当前或将来也不会自动产生接近 AFA 性能的 I/O。

如此昂贵的全闪存阵列在这种架构下并不合理。然而,SSD 缓存使 HDD 或混合阵列中的硬盘驱动器(为虚拟化网络供电)能够满足高 I/O 需求,即使是对于密集型应用程序。

在虚拟化网络中,可以使用基于服务器的 SSD 而不是基于网络阵列的存储。在这些情况下,主机服务器使用其直连存储中的 SSD 缓存来为多个虚拟机提供服务。由于 SSD 缓存位于 I/O 位置附近,因此可以消除更多延迟。缺点是,如果服务器崩溃,则取决于写入缓存的类型,缓存的数据可能无法恢复或完全无法访问。然而,如果 IT 部门在备份、快照或复制缓存数据后快速恢复到另一台服务器,这并不是一个主要缺点。

最佳 SSD 缓存软件

在 SSD 缓存中,“最佳”是一个难以捉摸的概念,因为有许多系统提供缓存软件命令。这些系统包括存储阵列、SSD 存储控制器、Windows 和 Linux、专用应用程序、VMware、Hyper-V 和第三方软件。例如

  • Intel:通过智能响应技术进行混合缓存。英特尔快速存储技术的智能响应技术提高了混合阵列的性能和耐用性。通过使用 SSD 存储大量数据,智能响应技术利用 HDD 来缓存最常用应用程序和数据的 I/O 块。
  • Intel:RAID 缓存控制器。英特尔还生产一款 RAID SSD 缓存控制器,该控制器使用先进的缓存技术来识别频繁访问的数据,并将其定向到快速闪存。
  • QNAP:NAS 上的原生 SSD 缓存。QNAP 声称其缓存技术可以提高 QNAP 网络附加存储的 IOPs 性能高达十倍,并降低延迟高达三倍。QNAP 通过其 SSD 缓存功能为虚拟化环境和数据库提供 NAS 支持。
  • NetApp:基于阵列的 SSD 缓存。SSD 缓存功能提高了 NetApp 阵列的读取速度,这对于存储读取密集型工作负载的阵列尤其有益。NetApp 在其 SSD 上同时使用主缓存位置和辅助缓存位置。NAND 闪存单元充当辅助缓存,而基于 SSD 控制器的 DRAM 充当主缓存。数据存储在那里后,后续的读取操作将在 SSD 缓存上进行,而不是在主存储上进行。高性能 SSD 缓存可提高应用程序响应时间和输入/输出,同时在各种工作负载中保持性能提升。