使用固态存储设备作为缓存可以显著提升服务器和应用程序性能,但是所选择的闪存缓存的种类至关重要。
闪存存储设备提供了有效的方法来消除数据存储性能问题,特别是当它们安装在应用程序所在的服务器上时。使用闪存作为该应用程序数据的缓存,能够以自动化的方式利用性能加速,并可以加速内部服务器存储和共享存储网络上的存储。如今,IT专业人士面临的挑战是确定哪个闪存缓存替代方案是其最佳选择。
当用户需要提高存储性能时,应该考虑采用这三种主要的闪存缓存类型:
- 文件级缓存
- 块级缓存
- 聚合缓存
每种方法都有其利弊。本文描述了每种方法,以便用户可以为自己的环境选择正确的缓存解决方案。
所有这些方法的产品通常安装在环境中的服务器上,服务器可以访问基于闪存的存储,无论是服务器内部还是存储网络。最典型的用例是将闪存存储在服务器中,通常称为服务器端闪存。
所有这三种缓存解决方案都可以利用安装在服务器插槽中的固态硬盘驱动器(SSD),基于PCI Express(PCIe)的闪存卡,或新兴的基于双列直插内存模块(DIMM)的闪存设备。
大多数这些解决方案还将支持专用存储网络上的闪存存储。通常,唯一的要求是将闪存作为块设备呈现给软件。
(1)文件级闪存缓存
顾名思义,文件级缓存软件在操作系统或应用程序中的文件级别上运行。这些产品会自动分析和评估特定文件以测量其缓存的有效性。但大多数将加速整个文件,而不仅仅是其中的一部分。
文件级缓存解决方案通常不能在虚拟化环境中的虚拟机管理程序级安装,因此无法从单个软件实例向多个虚拟机(VM)提供缓存服务。相反,它需要安装在每个要加速的虚拟机上的客户机操作系统中。文件级缓存也可以安装在裸机或非虚拟化服务器上。
关键是软件的每一个实例都必须提供一个由某种形式的闪存组成的专用块设备。
虽然这些实施要求需要管理缓存软件的多个实例,而在虚拟化环境中,将内部服务器SSD细分为潜在的许多独立块设备,但奖励是非常有效的应用程序加速。缓存不会浪费在数据上,因为某些原因可能会暂时限制SSD层。
文件级缓存产品往往被用于可以离散选择需要加速的文件(如数据库日志和索引)的应用程序特定环境中。这使得通过这些解决方案人工选择要由高速缓存分析的文件是常见的情况。
其结果是,文件级缓存可以很好地加速几个任务关键文件运行,而不需要过多的闪存容量。但为了达到这个效率水平,在购买闪存硬件和软件之前,必须了解哪些文件应该被指定为高速缓存。
(2)块级闪存缓存
块级缓存解决方案在块级别运行,因此它们不会或不能注意生成I / O的文件或应用程序。相反,他们只是寻找最活跃的数据块,并加速它们,而不管这些块可能来自哪里。
与文件级缓存不同,块级缓存是虚拟化环境的理想选择,用户可能希望部署一个缓存解决方案,从而加速该服务器上所有虚拟机的性能。这种方法的优点是每个物理主机只需要实现缓存软件的一个实例。其缺点是,在大多数情况下,该主机上的所有数据均被处理,所以任何活动数据集将消耗闪存容量。
一些块级产品现在正在添加智能功能,以便可以跟踪特定虚拟机的特定I / O。通过该功能,用户可以自定义缓存软件,将某些虚拟机固定为高速缓存或始终排除某些虚拟机。但是,这种优化是一个无所不在的命题;块级缓存解决方案无法对等到虚拟机中,以仅加速该虚拟机中的某些文件。
虚拟机迁移和服务器端缓存
在虚拟机迁移时,文件和块级缓存产品都会在虚拟化环境中受到挑战。如果虚拟机从一个物理服务器移动到另一个物理服务器,则缓存软件必须拦截该迁移,并在实际发生迁移事件之前使缓存失效(缓存无效是清空缓存内容的过程)。
在最低限度上,市场上的大多数缓存产品都可以确保在虚拟机移动之前缓存无效。然而,重点是当虚拟机到达其目标服务器时如何重建高速缓存。这就是文件级缓存具有明显优势的地方。由于缓存软件安装在客户机操作系统中,要加速虚拟机,需要遵循特定文件上的策略,这些文件可以在虚拟机迁移后快速重新加载到缓存中。
当虚拟机到达目标主机服务器时,块级缓存必须从头开始重建缓存分析。这意味着可以重新获得资格的数据高速缓存的适应性绩效将硬盘驱动器(HDD)速度约束。在某些情况下,将正确的数据放回新服务器的缓存可能需要几天时间。
当发生迁移时,一些块级解决方案可以将高速缓存分析传输到目标主机。显然,这意味着需要在每个主机上安装相同的缓存软件,但这将是典型的。通过在迁移虚拟机时将缓存分析转移到虚拟机中,运行在接收主机上的缓存软件可以立即将该虚拟机的正确块复制到其缓存区域。虽然这个过程发生时性能仍然会受到硬盘限制,但它应该是一个非常快的过程,通常只需几分钟。
聚合缓存解决方案
第三个闪存缓存替代方案是聚合缓存解决方案。这些产品通过将服务器内部的闪存资源组合成虚拟但共享的存储池来解决迁移问题。它们还提供更好的弹性,因为可以实现类似于RAID的数据保护方案。迁移友好和弹性的组合使得这些聚合解决方案非常适合读写缓存。
这些产品通过在虚拟集群中的所有主机上安装缓存聚合软件来实现,该虚拟集群执行两个功能:聚合闪存资源,并向每个主机提供有关如何最佳地将该聚合闪存池用作缓存的智能。这种智能类似于文件和块级缓存解决方案使用的缓存算法。
集群中至少有三个(但通常是更多)的主机需要贡献闪存资源,然后将它们聚合到作为传统存储层的缓存层的闪存存储的虚拟池中。重要的是要注意,尽管至少有三个主机必须参与,但并不是所有的主机都需要提供闪存容量。大多数这些缓存聚合软件产品允许在集群中连接的任何主机访问闪存的共享池。
产品采样器:闪存缓存软件
以下是在文件,块或聚合级别工作的闪存缓存产品的一些示例。
(1)文件级缓存
- Intel Cache Acceleration软件
(2)块级缓存
- SanDisk FlashSoft
- 近端数据自动缓存
- HGST Virident EnhanceIO SSD缓存软件
(3)聚合缓存
- Infinio加速器
- PernixData FVP
一旦建立了闪存的聚合池,软件就会向每个主机提供缓存智能,以将最活跃的数据移动到闪存层,并且在许多情况下,首先将闪存层直接写入I / O(由于聚合缓存的更好的可用性)。但与其他两种缓存类型不同,如果发生迁移,则无需重新构建缓存分析,因为它使用共享池。目标主机简单地拾取原来主机关闭的位置。
最好的闪存缓存选项是什么?
企业最好的服务器缓存解决方案取决于环境。 例如,如果企业的服务器到服务器网络已经建立并升级,则聚合缓存解决方案有很多优势,可能会提供更有弹性的方式来缓存数据。但是,如果企业的服务器到服务器网络无法处理此类工作负载,则由文件或块级缓存提供的内部服务器选项可能是最佳选择。它们提供了显著的性能提升,而不必接触网络,这是一个关键点,因为许多存储管理员没有授权升级或修改服务器网络。