NetApp Tech OnTap NetApp 标识
NetApp Tech OnTap
     
NetApp 实时数据缩减功能揭秘
Skip Shapiro
NetApp
全闪存 FAS 和 ONTAP 闪存技术营销工程师
Skip Shapiro

在 NetApp® ONTAP® 9 中,我们新增了一项名为实时数据缩减的存储效率功能。由于大多数人对这个概念都很陌生,因此我认为有必要花些时间在本文中解释一下数据缩减功能的工作原理,及其如何与 NetApp 的其他存储效率功能相互作用。

实时数据缩减功能按时间顺序作用于数据,也就是在数据陆续抵达存储控制器时作用于数据。当数据仍在控制器内存中时,我们选择一些在物理存储上通常各占用一整个 4 KB 数据块的数据区块,然后对这些区块进行缩减。经过缩减后,多个区块可以放入一个 4 KB 物理块中。我们可以将其视作类似于行李箱打包、大旅行箱打包、背包打包这样的问题。我们可以获得一些也许已经填充了许多零或空白空间的 I/O,在删除空白空间后再加以利用。这正是数据缩减功能所发挥的作用。

实时数据缩减发生在创建 ONTAP 一致点 (Consistency Point, CP) 写入期间。这就像在玩俄罗斯方块游戏时进行拆解一样,只不过我们需要拆解的是这些小型 I/O。在将两个或多个 I/O 放置到存储介质上之前,我能否快速地将它们合并装入一个物理块呢?我们的实时数据缩减技术已经申请了多项专利。我们使用的这种方法具有创新性。NetApp 全闪存 FAS 系统默认已启用数据缩减功能;对于具有纯 HDD 聚合或 NetApp Flash Pool 聚合的 FAS 系统,您可以选择打开此功能。无论哪种情况,都无需为数据缩减功能额外付费;与数据压缩和重复数据删除功能一样,它也是 ONTAP 的核心功能。

数据缩减是一个附加存储效率组件。它与重复数据删除功能相辅相成,与实时自适应数据压缩功能相得益彰。借助实时自适应数据压缩功能,在数据可压缩率超过 50% 时,我们会创建数据压缩组。在对数据进行压缩后,我们可以寻找机会,通过将多个小区块或大区块与小区块进行配对后放入一个物理块,进一步对压缩过的数据进行缩减。由于这是 CP 过程的一部分,因此数据缩减功能本身所需的 CPU 开销非常少,最多只占 1% 至 2%。您应该从来没有遇到过这种情况:控制器的 CPU 占用率只增加 1% 至 2% 就导致超出上限。如果出现这种情况,系统实际上早就已经过载。

虽然数据压缩和数据缩减功能可以实现完美的协作效果,但并不需要同时运行这两项功能。例如,如果一个卷上有许多小文件,那么它适合进行数据缩减,而采用数据压缩则意义不大。

从逻辑上说,在数据进入存储控制器后,接下来是存储效率过程发挥作用的时候了(假定启用了所有效率功能):

  1. 首先是检测出具有零的所有数据块。对于这些数据块,我们无需进行任何写入,只需更新元数据即可。从本质上说,这些数据块只是一个引用计数。
  2. 接下来,我们要实施实时自适应压缩。该过程可以非常高效地确定数据块是否可以压缩 50% 甚至更高。我们不会将 CPU 周期浪费在尝试压缩其压缩率低于 49% 的数据上(在这种情况下,通过缩减获得不了节省)。
  3. 然后,进行实时重复数据删除。这项功能早在 ONTAP 8.3.2 中就已推出,它只对内存中数据进行比较并实时删除重复部分。在 ONTAP 9.0 中,我们扩展了指纹散列存储的大小,旨在涵盖最近写入存储介质的数据。如果您希望通过重复数据删除最大限度地节省空间,最佳实践也是安排时间进行后台(后处理)重复数据删除。
  4. 我们最后要执行的操作就是数据缩减。通过自适应压缩进行过压缩的所有数据,或者尚未进行过压缩检查的所有数据,均可进行数据缩减。因此,通过实时自适应压缩功能压缩约 75% 或更高比率的小型未压缩文件或数据,也适合进行数据缩减。数据缩减过程先将两个或多个区块进行配对,使其刚好可以放入一个 4 KB 物理块,然后再将这个数据块发送到存储上。压缩率越高,文件越小,缩减比率也就越高。因此,通过组合小数据块并进行压缩和缩减,可以实现极佳的倍增效果。

只有您开始使用数据缩减功能,才有可能清楚它能带来的影响。实时数据缩减是 CP 内部的一个探索性过程。它首先选择前 100 个 I/O 作为样本确定缩减比率,然后将这个比率应用于后面进入的 100 个 I/O。如果缩减比率上升,缩减过程就会认为:“好的,我假定接下来将达到更高的比率。”如果实现的缩减比率减小,它会降低缩减比率。在下一个 CP 到来时,这个过程会再次启动。这是一个迭代过程,目标是寻求以最低的 CPU 占用实现最高的缩减比率。

图 1) 数据经过 ONTAP 堆栈时应用 NetApp 实时存储效率功能。

来源:NetApp,2016 年

如果需要,您可以单独使用实时数据缩减功能(不同时使用数据压缩或重复数据删除功能)。假定您只有一个小型文件环境,其中文件的大小只有 2 KB 甚至更小。这些小文件不可压缩,并且重复数据删除功能也不太可能帮您节省很多空间。但是,当两个或多个文件可以存储在一个 4 KB 物理块中时,我们可以通过实时数据缩减节省空间。

拿逻辑数据复制来说,如果源卷和目标卷都启用了相同的效率策略,不需要进行任何再融合就可以保持空间节省。例如,在将默认启用所有存储效率策略的全闪存 FAS 系统复制到作为 NetApp SnapVault® 目标的 FAS 系统之后,如果您希望继续通过重复数据删除、自适应数据压缩和实时数据缩减实现空间节省,那么必须同时在目标系统上启用所有这些策略。

反过来,如果目标 FAS 系统未启用任何空间节省策略,而且您从 ONTAP 9 全闪存 FAS 系统中复制数据,那么数据在写入目标系统时数量就会增加。因为数据块没有进行数据压缩和重复数据删除,数据也没有进行缩减。因此,如果您希望继续保持空间节省,源卷和目标卷必须采用相同的存储效率策略。顺便说一下,我们的最佳实践是,在从全闪存 FAS 存储系统中复制数据时,在目标卷上应启用所有效率策略;这样一来,便可以在目标卷上同样保持空间节省。

总而言之,实时数据缩减完全不会改变逻辑数据;我们只是解决了如何更高效地打包数据的问题。除非您的环境中全是小文件,否则最好在实时自适应压缩的基础上应用数据缩减功能,以达到倍增效果。如果您的 I/O 未完全占满 ,数据缩减功能可以助您一臂之力。由于 CPU 开销低并且可以释放更多空间来存储数据,因此没有任何原因可以阻碍您在全闪存 FAS 系统启用实时数据缩减。

Skip Shapiro 是 NetApp 的一名技术营销工程师,主要负责 NetApp 全闪存 FAS、Flash Pool 和 Flash Cache 技术。在拉斯维加斯和柏林举行的 NetApp Insight® 大会期间,Skip 将主持两场技术研讨会。有关详细信息,请参见以下链接:

NetApp Insight 拉斯维加斯大会(9 月 26–29 日):
NetApp ONTAP 9:在 SLA 驱动型业务环境中实现可预测的性能
全闪存 FAS 的深度技术剖析

NetApp Insight 柏林大会(11 月 14–17 日):
NetApp ONTAP 9:在 SLA 驱动型业务环境中实现可预测的性能
全闪存 FAS 的深度技术剖析

2016 年 9 月

 
联系我们   |   如何购买   |   反馈   |   招聘  |   订阅   |   隐私政策   |   © 2016 NetApp