NetApp Tech OnTap NetApp 标识
NetApp Tech OnTap
     
基础知识回顾:数据压缩

本文是介绍 NetApp® 热门技术基础知识的“基础知识回顾”系列中的第六篇文章。

数据压缩技术已经推出很长时间了,但是给大型存储系统带来了巨大的难题,其中性能影响问题尤为严重。直到最近,磁带驱动器和 VTL 等设备的数据压缩还几乎一直通过专用硬件实现,导致成本和复杂性提高。

NetApp 开发了实时透明的数据压缩和后处理数据压缩技术,压缩过程在软件中完成,同时降低了对计算资源的影响。这样,我们便能在 Data ONTAP® 架构中免费提供数据压缩优势,将该技术用于现有 NetApp 存储系统。自从数据压缩技术在 Data ONTAP 8.0.1 中首次推出以来,反响非常不错。该技术已经获许用于众多行业的系统中。在这些系统中,40% 在主存储上采用数据压缩,60% 将其用于备份/归档。

NetApp 数据压缩技术可带来显著的优势,其中包括:

  • 可与行业领先的其他 NetApp 存储效率技术结合使用。数据压缩技术与精简配置和重复数据删除等其他效率技术相结合,可显著减少所需总存储量,从而降低资本支出和运营费用。根据应用的不同,仅凭数据压缩技术便可节省总空间多达 87%。如果与其他效率技术相结合,节省会更多。
  • 性能影响最小。尽管所有数据压缩技术都会对性能有些影响,但是 NetApp 在最大限度地节省空间的情况下,尽力将影响降至最低。
  • 无需软件许可费用。NetApp 数据压缩功能是 Data ONTAP 8.1 的标配功能。无需许可证,因此启用数据压缩时,无需投入额外的硬件或软件成本。
  • 适用于主存储和二级存储。您可以对主存储卷、二级存储卷或者同时对两者进行数据压缩。
  • 无需更改应用程序。数据压缩对应用程序透明,无需更改代码,即可将其用于多种不同的应用程序。
  • 空间节省在复制期间和使用 DataMotion 时能够继承。使用卷 SnapMirror 复制经过压缩的卷或使用 DataMotion™ 移动卷时,数据块以经过压缩的状态进行复制。这样可以节省数据传输期间所用的带宽和时间以及目标存储上的空间,同时无需占用额外的 CPU 周期再次压缩相同的数据块。

这篇“基础知识回顾”文章介绍如何实施 NetApp 数据压缩技术、该技术的性能、合适的用例、如何在实时压缩与后处理压缩之间进行选择以及最佳实践。

如何在 Data ONTAP 中实施数据压缩

NetApp 数据压缩技术可以在主存储、二级存储和归档存储上压缩灵活卷(FlexVol® 卷)中的数据,从而减少在存储系统上存储数据所需的物理容量。它可以压缩常规文件、虚拟本地磁盘和 LUN。在本文其余部分,提及文件的内容也适用于虚拟本地磁盘和 LUN。

NetApp 数据压缩不是将整个文件作为一个连续的字节流进行压缩。如果要处理部分文件的小量读取,作为连续的字节流压缩成本非常高,因为需要在处理读取请求之前从磁盘读取整个文件且文件处于未压缩状态。读取大型文件就显得尤为困难。为了避免这一问题,NetApp 数据压缩技术一次只压缩少量连续数据块。这是 NetApp 数据压缩得以更高效的一个关键设计要素。收到读取请求之后,只需读取和解压缩少量数据块,而不是整个文件。这种方法可以优化少量数据的读取和覆盖,在压缩文件的大小方面可扩展性更高。

NetApp 压缩算法将文件分成称为“压缩组”的数据区块,压缩组最大为 32 KB。例如,一个 60 KB 大小的文件将包含在两个压缩组中。第一个 32 KB,第二个 28 KB。每个压缩组都只包含一个文件的数据,不对 8 KB 或更小的文件执行压缩。

写入数据。写入请求在压缩组级别得到处理。压缩组形成之后,对其进行测试,决定数据是否可以压缩。如果不能至少节省 25%,则不执行压缩。仅当测试表明数据可以压缩时,才会压缩写入磁盘的数据。这样可以优化节省,同时最大限度地降低资源开销。

由于经过压缩的数据所含要写入磁盘的数据块较少,因此可以减少数据经过压缩后每次写入操作所需的写入 I/O 数。这样不仅能够减少磁盘上的数据占用空间,而且还能缩短执行备份所需的时间。

使用 VSC vCenter 插件时,VMware 管理员和存储管理员的职责。

图 1) 将文件分成称为“压缩组”的数据区块,然后对其进行测试,决定是否可以压缩。根据测试结果,每个压缩组以经过压缩或未经压缩的状态写入磁盘。

读取数据。收到压缩数据的读取请求之后,Data ONTAP 仅读取包含请求数据的压缩组,而不是整个文件。这样可以最大限度地减少处理请求所需的 I/O 数、系统资源开销和读取服务时间。

实时操作。如果将 NetApp 数据压缩配置为实时操作,将数据写入磁盘之前,在内存中对其进行压缩。这样可以显著减少卷的写入 I/O 数,但是也会影响写入性能,事先未经测试,不能用于对性能敏感的应用程序。

为达到最佳吞吐量,执行实时压缩时,会压缩大多数新写入的数据,但是会推迟一些对性能比较敏感的压缩操作(例如部分压缩组覆盖),直到执行后面的后处理压缩过程为止。

后处理操作。执行后处理压缩时,既可以压缩最近写入的数据,也可以压缩启用数据压缩之前磁盘上存在的数据。采用的计划与 NetApp 重复数据删除相同。如果启用了数据压缩,首先执行数据压缩,然后执行重复数据删除。重复数据删除不仅对未经压缩的数据起作用;它可以轻松删除数据卷中经过压缩或未经压缩的重复数据块。

如果同时启用了实时压缩和后处理压缩,则后处理压缩仅尝试压缩尚未压缩的数据块。其中包括实时压缩期间绕过的数据块,例如部分压缩组覆盖。

压缩性能和空间节省

数据压缩利用 Data ONTAP 的内部特性高效执行。尽管 NetApp 数据压缩可以最大限度地降低性能影响,但并不能消除影响。影响大小取决于多种因素,包括数据类型、数据访问模式、硬件平台、有多少可用系统资源等。在生产卷上实施数据压缩之前,应该在实验室环境中测试影响。

在 FAS6080 上执行的后处理压缩测试表明,一个进程可产生高达 140 MB/秒的压缩吞吐量,多个并行进程的最高吞吐量为 210 MB/秒。在 CPU 占用率低于 50% 的系统上,对文件服务等工作负载执行的测试表明,对于可压缩率为 50% 的数据集,CPU 占用率大约提高了 20%。对于 CPU 占用率高于 50% 的系统,影响可能更明显。

多种不同工作负载因采用数据压缩和重复数据删除而节省的空间如图 2 所示。

使用 VSC vCenter 插件时,VMware 管理员和存储管理员的职责。

图 2) 通常情况下,因采用数据压缩、重复数据删除或同时采用两者节省的存储。

用例

我之前提到过,要选择何时启用数据压缩或重复数据删除,就要平衡空间节省的优势与潜在的性能影响。为了确定在您的存储环境中将数据压缩用在何处能起到最大作用,综合衡量这两方面非常重要。

数据库备份(和常规备份)可能是数据压缩的最佳作用点。数据库通常容量非常大,许多用户愿意以备份存储些许的性能影响换来 65% 以上的容量节省。例如,一项并行备份四个 Oracle 卷且启用了实时压缩的测试表明,空间节省了 70%,CPU 占用率提高了 35%,备份时间不变。在这种情况下,鉴于节省非常明显,假设目标存储上有可用的 CPU 资源,大多数人或许会选择启用数据压缩。为备份调整新存储系统大小时,您可能想要验证是否有足够的 CPU 支持压缩操作。

另一个可能的用例是文件服务。在繁忙时间约占 50%、数据集可压缩率为 50% 的系统中,对文件服务工作负载执行的测试表明,吞吐量仅减少了 5%。在文件响应时间为 1 毫秒的文件服务环境中,这将转化成仅增加 0.05 毫秒,即响应时间增加到 1.05 毫秒。若能节省 65% 的空间,这一小幅度的性能降低您也许可以接受。如果采用 NetApp 卷 SnapMirror® 技术复制数据,您可以节省网络带宽和二级存储上的空间,从而进一步增加节省。(在这种情况下,二级存储继承主存储的数据压缩,因此无需另外进行压缩处理。)在这种情况下,您可以实现:

  • 主存储容量节省 65%
  • 通过网络发送进行复制的数据量减少 65%
  • 复制速度提高 65%
  • 二级存储容量节省 65%

数据压缩还可以在其他许多用例中发挥重要作用,我们提供了多种工具和指南,可以帮助您确定哪些用例最适合您的环境。对于主存储,请考虑以下数据压缩用例:

  • 文件服务
  • 地震地质数据
  • 测试和开发

对于备份/归档存储,请考虑以下数据压缩用例:

  • 文件服务
  • 地震地质数据
  • 虚拟服务器
  • Oracle OLTP
  • Oracle 数据仓库
  • Microsoft® Exchange 2010

采用数据压缩

NetApp 数据压缩技术可用于运行 Data ONTAP 8.1 及更高版本的所有 NetApp FAS 和 V 系列系统。数据压缩在卷级别启用。这意味着由您选择在哪些卷上启用该技术。如果您知道某个卷包含不可压缩的数据,则不应该在该卷上启用数据压缩。数据压缩可与重复数据删除结合使用,因此需要首先在卷上启用重复数据删除。卷必须包含在 64 位聚合(在 Data ONTAP 8.0 中推出的一项功能)中。从 Data ONTAP 8.1 开始,对卷大小不予限制,但您使用的特殊 FAS 或 V 系列平台强加的限制除外。您可以使用命令行工具或 NetApp System Manager 2.0 启用和管理数据压缩。

NetApp 建议您在启用数据压缩之前进行测试,验证是否有所需的资源,并了解所有潜在影响。对影响程度有影响的因素包括:

  • 应用程序类型
  • 数据集的可压缩性
  • 数据访问模式(例如顺序访问与随机访问、I/O 大小和模式)
  • 平均文件大小
  • 更改率
  • 启用了数据压缩的卷数
  • 硬件平台 — 系统中的 CPU/内存数量
  • 系统中的负载
  • 磁盘类型和速度
  • 聚合体中的磁盘轴数

一般来说,遵循以下经验法则:

  • 压缩性能随硬件平台类型扩展。
  • 内核越多,吞吐量越高。
  • 内核越快,对吞吐量的影响越小。
  • 数据可压缩率越高,对性能的影响越小。

选择实时压缩还是后处理压缩

配置数据压缩时,您可以选择将立即见效的实时压缩与定期后处理压缩结合使用,也可以选择单独使用后处理压缩。实时压缩可立即节省空间,减少磁盘 I/O 和 Snapshot™ 副本占用的空间。由于后处理压缩首先将未经压缩的数据块写入磁盘,稍后再读取并对其进行压缩,因此如果不想对新写入的数据造成潜在的性能影响,或者不想在高峰期占用额外的 CPU,这种压缩方式是首选。

如果对性能不敏感,可以接受对写入性能有些影响,并且在高峰期有可用的 CPU,在此类情况下,实时压缩最为有用。实时压缩和后处理压缩的一些注意事项如表 1 中所示。

目标 建议
最大限度地减少 Snapshot 空间 实时压缩可最大限度地减少 Snapshot 副本占用的空间。
最大限度地减少 qtree SnapMirror 或 SnapVault® 目标上的磁盘占用空间 实时压缩可立即节省空间,而对备份时间影响最小。此外,它占用的 Snapshot 预留空间较少。
最大限度地减少磁盘 I/O 实时压缩可减少写入磁盘的新数据块的数量。
避免对新写入的数据造成性能影响 后处理压缩将未经压缩的新数据写入磁盘,不会对初始写入性能造成任何影响。您随后可以计划何时执行数据压缩来回收空间。
最大限度地降低在高峰期对 CPU 的影响 后处理压缩便于您计划何时执行数据压缩,最大限度地降低压缩在高峰期造成的影响。

表 1) 后处理压缩单独使用和实时压缩与后处理压缩结合使用的注意事项。

数据压缩和其他 NetApp 技术

NetApp 数据压缩与 NetApp 重复数据删除是两项互补技术。本部分介绍数据压缩与其他 NetApp 热门技术的结合使用。

Snapshot 副本。采用 Snapshot 副本,可以保留创建 Snapshot 副本之后更改的数据块,将数据恢复到特定时间点。数据压缩可以减少 Snapshot 副本占用的空间,因为经过压缩的数据在磁盘上占用的空间较少。

后处理压缩可以压缩 Snapshot 副本锁定的数据,但是不能立即节省空间,因为未经压缩的原始数据块仍然存储在磁盘上,直到 Snapshot 副本过期或被删除为止。NetApp 建议在创建 Snapshot 副本之前执行后处理压缩。有关将数据压缩与 Snapshot 副本结合使用的最佳实践,请参阅 TR-3958TR-3966

卷 SnapMirror。卷 SnapMirror 在物理块级别起作用,如果在源卷上启用重复数据删除和(或)数据压缩,则重复数据删除和数据压缩空间节省在传输期间和目标卷上可以一直保持。这样可以显著减少复制期间所需的网络带宽,并大大缩短完成 SnapMirror 传输所需的时间。一般需注意以下几点:

  • 源系统和目标系统应使用相同版本的 Data ONTAP。
  • 数据压缩和重复数据删除只在源系统上进行管理 — 目标系统上的灵活卷继承存储节省。
  • 数据压缩在整个传输期间持续进行,因此传输的数据量会减少,从而减少网络带宽使用,并缩短执行传输所需的时间。
  • 没有必要执行 SnapMirror 链路压缩,因为 NetApp 数据压缩已经压缩了数据。

网络带宽和 SnapMirror 传输时间的减少量与空间节省量直接成比例。举个例子,如果您能节省 50% 的磁盘容量,则 SnapMirror 传输时间会缩短 50%,而且必须通过线缆传输的数据量也会减少 50%。

qtree SnapMirror 和 SnapVault。qtree SnapMirror 和 SnapVault 都在逻辑块级别起作用,源存储系统和目标存储系统单独运行重复数据删除和数据压缩,因此您可以根据需求,在其中一个或者同时在这两个系统上运行。这样,即使源数据并未经过压缩或重复数据删除,也可以对 qtree SnapMirror 和(或)SnapVault 备份进行数据压缩和(或)重复数据删除。除非将计划设置为手动执行,否则后处理压缩和重复数据删除会在 SnapVault 传输完成之后自动运行。

克隆。NetApp FlexClone® 技术即时创建文件或数据卷的虚拟副本,在对克隆进行更改之前,这些副本不占用额外的存储空间。FlexClone 支持重复数据删除和数据压缩。如果在克隆的父卷上启用数据压缩,克隆会继承节省。如果在克隆卷上启用数据压缩,写入克隆的新数据会得到压缩,而不影响父卷上的数据。

结论

NetApp 数据压缩技术是重要的存储效率工具,可用于优化主存储和二级存储上的空间节省。有关这篇文章介绍的所有主题的完整信息及其他内容,请参阅 TR-3958:《NetApp 数据压缩和重复数据删除部署和实施指南:在 7-模式下运行 Data ONTAP 8.1》TR-3966:《NetApp 数据压缩和重复数据删除部署和实施指南:在集群模式下运行 Data ONTAP 8.1》

 您对数据压缩有何见解?

请在 NetApp 社区中在线提出问题、交流观点、分享看法。

Sandra Moulton
NetApp 技术营销工程师
 


自两年前加入 NetApp 以来,Sandra 基本上专注于存储效率的研究,专攻重复数据删除和数据压缩技术。她负责设计这些重要技术的白皮书、最佳实践指南和参考架构。Sandra 拥有 20 余年的行业经验,曾在其他领先的硅谷公司担任类似职位。


Tech OnTap
立即订阅
Tech OnTap 每月发布一次,为用户提供 IT 见解,以及对实际应用的最佳实践、技巧和工具、幕后技术访谈、演示、同行评论等的独家访问。

访问 NetApp 社区中的 Tech OnTap,立即订阅。

相关内容
相关内容
更多“基础知识回顾”

请阅读该系列的其他章节,学习 NetApp 核心技术基础知识:

相关内容
 


Go further, faster TRUSTe
联系我们   |   如何购买   |   反馈   |   招聘  |   订阅   |   隐私政策   |   © 2012 NetApp