基础知识回顾:RAID-DP

随着磁盘驱动器的容量不断增加,灵活地保护关键数据变得越来越具有挑战性。虽然磁盘变得越来越大,但是其整体可靠性却并未提高。磁盘容量越大意味着使用独立磁盘冗余阵列 (RAID) 奇偶校验信息重建故障磁盘所需的时间会明显增加,因而在重建完成之前发生第二个磁盘故障或其他错误的可能性也会增加。发生位和块错误的可能性也会随着介质大小的增加而相应地提高,因而会导致在重建期间发生此类事件的可能性明显增加,并且会提高发生双磁盘故障的几率,从而会中断业务以及在单奇偶校验 RAID 实施中造成数据丢失。

为解决此灵活性问题,NetApp 率先开发了独一无二的双奇偶校验 RAID :RAID-DP。虽然还存在其他双奇偶校验 RAID 6,但是只有 RAID-DP 可以在同一 RAID 组中保护数据不受双磁盘故障的影响,同时也不会严重降低性能。

RAID-DP 的表现如此之好,因此已成为 NetApp 存储系统的默认选项。测试表明,相较于 NetApp RAID 4 实施,随机写入性能增量仅为 2%。通过对比,相对于同一系统上的 RAID 5,另一个主要存储供应商的 RAID 6 随机写入性能降低了 33%。(RAID 4 和 RAID 5 均是单奇偶校验 RAID 实施。)RAID 4 使用指定的奇偶校验磁盘。RAID 5 在 RAID 组的所有磁盘中分发奇偶校验信息,以避免奇偶校验磁盘成为热点。而使用 NetApp RAID 4 时则没有必要,这得益于 Data ONTAP 写入数据的方式,稍后我们将对其进行介绍。

RAID-DP 提供以下显著优势:

最大程度地提高数据保护。如果采用 NetApp RAID-DP,双磁盘故障带来数据丢失的可能性是 RAID 5 配置的数百分之一。尽管 RAID 1+0 能够提供优于 RAID 5 的数据保护,但是在发生双镜像磁盘故障时,仍然存在数据丢失的风险。RAID-DP 可以提供 100% 的双磁盘故障保护,成本仅为 RAID 1+0 的一半。

成本最低。RAID 5 实施通常会将 RAID 组大小限制在 3+1 或 5+1 内(表示成本开销在 17% 到 25% 之间)。而 RAID 1+0 要求的组大小为 1+1(50%的开销)。相比之下,NetApp 支持的 RAID 组大小可达 28 (26+2) 个磁盘,而只需 7% 的容量开销。

卓越的性能。如前所述,与之竞争的其他奇偶校验技术可能会明显降低写入性能,并且可能最适合“主读”型的应用程序。相较于单奇偶校验 RAID,作为 NetApp 默认选项的 NetApp RAID-DP 带来的性能损失几乎为零,并且适用于所有工作负载。

无软件许可费用。RAID-DP 功能是所有 NetApp 系统中的标准功能。您无需花费额外成本即可使用该功能,节省的成本可用于添加奇偶校验磁盘,而使用更大的 RAID 组可抵消这笔开支。

本篇文章将介绍如何实施 NetApp RAID-DP 技术、适用的用例、实施 RAID-DP 的最佳实践等内容。

如何在 Data ONTAP 中实施 RAID-DP

与 NVRAM 和 WAFL 紧密集成

在 Data ONTAP 中实施 RAID-DP 与 NetApp NVRAM 和 NetApp WAFL?(任意位置写入文件布局)紧密相关。这是通过 RAID-DP 获得优于其他 RAID 6 实施的卓越性能的关键所在。

因为写入内存的速度远远快于写入磁盘,所以存储系统供应商通常使用电池后备、非易失性 RAM (NVRAM) 来缓存写入并提高写入性能。NetApp 在其所有存储系统中都提供 NVRAM,但是 NetApp Data ONTAP 操作环境使用 NVRAM 的方式明显不同于典型的存储阵列。

NVRAM 用作 Data ONTAP 自上个一致点接收的写入请求的日志。每隔几秒钟,Data ONTAP 就会创建一个称为一致点的特殊 Snapshot? 副本,即磁盘上文件系统的完全一致映像。因为 Data ONTAP 绝不会覆盖现有磁盘块,所以即使在向磁盘写入新块时,一致点也会保持不变。凭借此方法,当发生故障时,Data ONTAP 只需恢复到最近的一致点,然后回放来自 NVRAM 的写入请求的日志。

相对于传统的存储阵列,这是 NVRAM 一个非常不同的使用方式,即在磁盘驱动程序层缓存写入请求,这样可带来以下几项优势:减少所需的 NVRAM 数量、缩短对编写程序的响应时间并支持优化写入磁盘。

优化写入:RAID 4

此缓存写入方法与 NetApp RAID 实施紧密集成,并且支持 NetApp 对写入进行计划,以确保针对底层 RAID 阵列优化磁盘写入性能。在介绍 RAID-DP 之前,我将首先说明 NetApp 如何针对 RAID 4 实施优化此流程。

RAID 阵列通过条带管理数据,其中一个条带由 RAID 组的每个磁盘中的一个块组成。对于每个条带,指定一个块作为奇偶校验块。图 1 显示了使用水平奇偶校验的传统 RAID 4 组,由四个数据磁盘(前四个标为“D”的列)和一个奇偶校验磁盘(最后一个标为“P”的列)组成。

图 1) RAID 4 奇偶校验示例。

在本示例中,为了便于演示,计算奇偶校验的方式为将每个水平条带中的值相加,然后将所得之和存储为奇偶校验值 (3 + 1 + 2 + 3 = 9)。在实际操作中,将使用异或 (XOR) 运算方式计算奇偶校验。

如果需要从单个故障中重建数据,那么只需反向执行用于生成奇偶校验的流程。例如,如果第一个磁盘发生故障,RAID 4 会根据其余磁盘的数据重新计算磁盘 1 的每个块中的数据;在本示例中,只需从存储的奇偶校验值中减去其余磁盘的值 (9 – 3 – 2 – 1 = 3)。这也解释了为什么单奇偶校验 RAID 只能在单个磁盘出现故障时起到防护作用。您会发现,如果缺少两个值,则没有足够的信息来重新计算缺少的值。

在典型的 RAID 实施中,为了将新数据写入已包含数据(和奇偶校验)的条带,您必须读取奇偶校验块并计算该条带的新奇偶校验值,然后才能写入数据块和新奇偶校验块。对于要写入的每个块,这是一笔很大的开销。

NetApp 通过尽可能地在内存中缓存写入(通过 NVRAM 中的日志提供保护),然后写入完整的 RAID 条带和奇偶校验来减少这方面的损失。这样一来,在写入之前就无需读取奇偶校验数据,并且还支持 WAFL 针对完整的数据块条带执行单奇偶校验计算。(确切的块数目取决于 RAID 组大小。)由于在现有块被修改时,WAFL 绝不会覆盖现有块并且它可以将数据和元数据(描述数据组织方式的说明信息)写入任意位置,因此上述目标可以实现。而在其他数据布局中,修改过的数据块一般会被覆盖,并且元数据通常需要位于固定位置。

添加对角奇偶校验:RAID-DP

NetApp RAID-DP 在每个 RAID 组中使用两个奇偶校验磁盘。一个奇偶校验磁盘存储针对水平条带计算的奇偶校验,如前所述。另一个奇偶校验磁盘存储根据对角条带计算的奇偶校验。相对于图 1 的水平奇偶校验图,图 2 添加了一个对角奇偶校验条带(用蓝底块表示)并新增了一个奇偶校验磁盘(用“DP”表示)。

图 2) 添加对角奇偶校验。

在计算中,对角奇偶校验条带包括水平奇偶校验磁盘中的一个块。对于原始 RAID 4 构造中的所有磁盘(包括数据和奇偶校验磁盘),RAID-DP 采用相同的处理方式。请注意,在对角奇偶校验条带中忽略了一个磁盘。图 3 显示了其他水平和对角奇偶校验条带。

图 3) 显示水平和对角奇偶校验的多个条带。

每个对角奇偶校验条带仅缺少一个磁盘,并且每个对角缺少另一个不同的磁盘。还有一个在对角奇偶校验磁盘上未存储奇偶校验的对角条带(图 3 中的白色块)。这并不会影响恢复所有数据的能力。

从双磁盘故障中恢复

通过结合使用水平和对角奇偶校验,可以在同一 RAID 组中从双磁盘故障中恢复。如果发生单个磁盘故障或者块或位错误,那么只需水平奇偶校验即可重新创建缺少的数据。

发生双磁盘故障之后,RAID-DP 首先确定开始重建所在的链,如图 4 所示。请谨记,仅当缺少一个元素时,才能通过奇偶校验重建数据;这也是每个对角奇偶校验条带跳过其中一个数据磁盘的原因。

使用对角奇偶校验开始 RAID-DP 恢复。

图 4) 使用对角奇偶校验开始 RAID-DP 恢复。

如果使用对角奇偶校验恢复了第一个块,那么转而也可以使用水平奇偶校验恢复第二个块(图 4 中的第一行)。继而又可以使用对角奇偶校验恢复另一个缺少的块。此恢复链继续,直到由于条带不存在任何对角奇偶校验而终止。此时,将找到另一个切入点,从 而开始恢复另一条对角和水平条带链。最终,直至填满足够的缺少块,即仅使用水平奇偶校验即可重新计算缺少奇偶校验的条带的所有值。在 TR-3298:《RAID-DP》中更加全面地介绍了此流程。

在本文中,我简化了这些示例,便于您更加轻松地了解关于 RAID-DP 的基本概念,但是重要的是要了解如何在具有包含数十个磁盘的 RAID 组以及百万行数据的实际存储部署中应用相同的流程。虽然故障示例说明的是两个相邻数据磁盘的恢复,但无论磁盘是否相邻以及无论故障磁盘本身是数据磁盘还是奇偶校验磁盘,相同的流程均适用。

优化写入:RAID-DP

如前面 RAID 4 讨论中所述,WAFL 总是尽可能地缓存完整的块条带并将其写入磁盘。RAID-DP 在内存中缓存数据块,以通过一次读取操作完成多个水平和对角奇偶校验计算。与 RAID 4 相比,RAID-DP 会带来 2% 的性能开销,这是计算对角奇偶校验和写入第二个奇偶校验块所带来的额外开销。

用例

至于 RAID-DP 的用例,由于该技术在 NetApp 存储的应用非常广泛,因此相对于应该使用该技术的情况,谈论可能选择不使用它的一些情况会更加容易。超过 90% 的 NetApp 客户已使用 RAID-DP,包括用于最重要的业务工作负载和性能要求最高的工作负载。RAID-DP 是 NetApp 所有全新存储系统的默认选项,我们规定在最佳实践中要使用 RAID-DP,并且在公布的性能基准测试中也使用了 RAID-DP。所有 NetApp 软件均与 RAID-DP 完全兼容。其他任何供应商都不会宣称其 RAID 6 实施可以做到这些。

您可能选择使用 RAID 4 而不使用 RAID-DP 的唯一情况是对灵活性要求低的情况,如暂存空间、测试和实验室环境。

使用 RAID-DP

RAID-DP 是在 Data ONTAP 版本 6.5 中推出的。

创建 RAID-DP 卷

若要通过 RAID-DP RAID 组创建聚合(或传统卷),请在借助 NetApp 图形工具配置存储时选择对应选项,或将 -t raid_dp 开关添加到聚合创建或卷创建命令。

如果未指定 RAID 类型,Data ONTAP 将自动使用默认 RAID 类型 — 目前推出的所有 Data ONTAP 版本均采用 RAID-DP。您可以通过从 Data ONTAP 信息库中选择您所用的 Data ONTAP 版本来了解系统的默认选项。(需要具有 NetApp NOW? 访问权限。)

现有 RAID 4 RAID 组可以转换为 RAID-DP。可以在聚合或传统卷级别进行转换,并且必须具有可用于每个 RAID 组的对角奇偶校验磁盘的磁盘(大小至少与 RAID 组中的最大磁盘相同)。

选择 RAID-DP RAID 组大小

通过 RAID-DP 可使用更大的 RAID 组,从而可以抵消对奇偶校验所需的额外磁盘可用容量的影响。要降低甚至消除此影响,一个选择是对于所使用的磁盘驱动器类型,使用默认 RAID-DP 组大小。基于默认 RAID-DP RAID 组大小的倍数创建聚合。

对于硬盘驱动器(SATA、FC 和 SAS),首选调整大小的方式是在 12 (10+2) 到 20 (18+2) 之间确定 RAID 组大小,从而获得均匀的 RAID 组布局(所有 RAID 组包含相同数量的驱动器)。如果多个 RAID 组大小实现了均匀的 RAID 组布局,建议使用上述范围之内的更大的 RAID 组大小值。如果无法避免不完整的 RAID 组(有时会出现这种情况),则建议聚合所缺少的驱动器数量最多比 RAID 组数量少一个(否则,您将会选择下一个最小的 RAID 组大小)。应在 RAID 组中均匀分布导致 RAID 组不完整的缺少的驱动器,以使每个 RAID 组所缺少的驱动器不超过一个。

RAID-DP 管理

如果使用或转换为 RAID-DP,操作流程需要很少的更改,甚至无需任何更改。存储系统可以包含混合的 RAID 4 和 RAID-DP 聚合,并且用于管理的命令可保持不变。

RAID-DP 重建

如果发生双磁盘故障,RAID-DP 将自动提高重建流程的优先级,从而可以更加快速地完成恢复。因此,从双故障磁盘中重建数据所花费的时间略微少于从单磁盘故障中重建数据。在发生双磁盘故障的情况下,很可能是一个磁盘先于另一个磁盘发生故障,并且至少已使用水平奇偶校验重新创建一些信息。RAID-DP 将在第二个磁盘故障中缺少两个元素的地方开始恢复,以自动调节此情况。

借助 Data ONTAP 所具有的一些选项,存储管理员可以调整 RAID 重建对系统性能所带来的影响。

默认情况下,raid.reconstruct.perf_impact 选项设置为“中”。此选项包括三个值:低、中和高。将此选项设置为“低”可能会增加 RAID 重建的完成时间,因为系统资源设置为优先响应前台 I/O。将此选项设置为“高”将支持 RAID 恢复操作与前台 I/O 竞争获得更多系统资源(因而会降低前台 I/O 性能)。

在某些情况下,可能需要调整此选项,但这应该是最后的手段。NetApp 一般建议保留默认值。

结论

NetApp RAID-DP 技术是一个重要的灵活性工具,可用于几乎所有常见存储工作负载。

本文作者:

NetApp高级技术营销工程师 Carlos Alvarez 和技术营销工程师 Jay White

?