在存储市场,关注焦点已从单纯追求性能或容量,转向每瓦性能与每瓦容量。随着 AI 部署的快速扩张,对电力的重视几乎在一夜之间凸显出来。如今,全球电力基础设施已扩展到极限,企业正在积极寻求额外的电力来源,甚至将目光投向核电,以推动 AI 革命,并为现有及新建数据中心提供能源支持。在这一转变趋势下,QLC 技术凭借每块硬盘和每瓦能耗能够提供更高存储容量,发展势头强劲。企业正在开发基础设施,以满足日益增长的存储容量需求。随着硬盘容量不断增大,新的问题也随之浮现,亟待解决,尤其是硬盘发生故障时的可靠性与恢复时间。这些关注点均合情合理,也是 Solidigm 与 Xinnor 优先解决的核心问题。
在我们之前的成果,《使用 Xinnor xiRAID 和 Solidigm 高密度 QLC 硬盘的最佳 RAID 解决方案》(Optimal Raid Solution with Xinnor xiRAID and High Density Solidigm QLC Drives) 中,已展示了使用 61.44TB 高密度 QLC 固态硬盘,Solidigm™ D5-P5336,1与 Xinnor xiRAID,2 实现的 RAID5 性能。Xinnor xiRAID 是基于软件的 RAID 解决方案,专为应对 NVMe 硬盘的高并行性而设计。凭借软件 RAID 的可靠性和 QLC 的大容量优势,我们呈现了一套部署解决方案——适用于任何追求大容量且不愿牺牲可靠性的场景。RAID5 配置下的性能数据和写入放大系数 (WAF) 结果已发布在上述解决方案简介中。
本文旨在解决高容量 QLC 硬盘的重建时间问题,具体通过测量 RAID 阵列中硬盘的重建耗时来实现。我们还在重建过程中检查写入放大。
写入放大系数是衡量 NAND 固态硬盘耐用性的重要指标。在工作负载运行前后,通过固态硬盘的 SMART 日志获取主机写入量和 NAND 写入量,来计算 WAF。我们认为,这也是衡量存储栈效率的指标。WAF 是特定应用程序工作负载的 NAND 写入次数与主机写入次数的比值。WAF 的计算如下:
WAF = 工作负载的 NAND 写入次数/工作负载的主机写入次数
在理想状态下,一次主机写入恰好对应一次 NAND 写入,此时 WAF 为 1。然而,多种因素会导致每次主机写入对应多次 NAND 写入。QLC 硬盘使用更大的间接寻址单元,范围从 8K 到 64K 不等。这一单元会随着容量的增加而增大。
这主要有两个原因:成本和电力。首先,保持固态硬盘的 DRAM 容量与低容量硬盘保持一致,为 QLC 硬盘带来了成本优势。其次,这使得高密度 QLC 硬盘能够维持与低容量硬盘相同的电力预算。这些因素,加上 QLC 硬盘的读取性能已达到 Gen4 链路的饱和状态,且写入性能比 HDD 高出几个数量级,使得客户能够在升级存储基础设施以实现 AI 目标的同时,仍能获得总体拥有成本 (TCO) 优势。
深入剖析 NAND 存储介质,当主机写入的 IO 大小与间接寻址单元大小匹配,且 IO 与间接寻址单元对齐时,IO 会写入物理 NAND 介质,这意味着不会产生额外的写入操作。然而,当 1) IO 大小与间接寻址单元大小不匹配时,或 2) 当 IO 未与间接寻址单元对齐时,NAND 的物理特性会要求先读取对应块,然后修改 IO 所在部分,最后将其写回介质。这便是“读取-修改-写入”操作,也是导致写入放大率偏高的主要原因。主机堆栈通常针对 4KB 的 IO 大小进行优化,而将这些小容量 IO 写入大型间接寻址单元时,会导致较高的写入放大率。“读取-修改-写入”操作也会消耗本可用于处理主机应用程序工作负载的性能周期。
如需更深入了解该主题,请参阅上述解决方案简介。为了总结该解决方案简介的结果,我们展示了如何优化应用程序工作负载,以及 xiRAID 的架构如何凭借其灵活调整块大小的能力,在 QLC 硬盘上最大限度地减少“读取-修改-写入”周期,从而充分释放 RAID 阵列的性能潜力。
奇偶校验 RAID 是一类利用奇偶校验硬盘作为保护机制以提供容错能力和数据冗余 的RAID 阵列。RAID5 是具有一个奇偶校验硬盘的奇偶校验 RAID 示例,而 RAID6 具有两个奇偶校验硬盘。还有其他奇偶校验 RAID 配置,但 RAID5 和 RAID6 是最常用的。奇偶校验 RAID(如 RAID5,RAID6 等)的奇偶校验计算基于 RAID 综合征计算的数学公式。这些计算可能很耗时,具体取决于 RAID 引擎中的计算实现效率。奇偶校验 RAID 重建是 RAID 重新计算已插入 RAID 配置的新硬盘的数据内容,以替换阵列中故障硬盘的过程。在重建过程中,对于每个 RAID 条带,RAID 引擎先从其余正常运行的硬盘中读取数据,再使用计算算法计算出数值,然后将其写入新硬盘。
当 RAID 丢失至少一块硬盘且重建过程尚未启动,在降级模式下运行时,或者当 RAID 中至少一块硬盘正在重建,在重建模式下运行时,会面临以下问题:
因此,RAID 重建的速度至关重要。完成重建的速度越快,RAID 阵列必须在性能降低和故障风险增加的情况下运行的时间就越短。重建时间与 RAID 硬盘的容量呈线性正相关。阵列中故障硬盘容量越大,完成重建所需的时间就越长。随着硬盘容量不断增加,RAID 引擎需要更加高效,以匹配硬盘的原始性能,快速完成重建过程。
鉴于业界对使用高密度硬盘重建 RAID 阵列的担忧,以及对高效软件的相关需求,我们决定借助 xiRAID 测量 Solidigm 高密度 QLC 61.44TB 硬盘在 RAID5 阵列中的实际性能。在后续章节中,我们将向您介绍一系列实验及其结果。我们选取了开源软件 RAID 解决方案 mdraid 作为参照,以便与我们的结果进行对比分析。同时,我们分别在“有主机工作负载”和“无主机工作负载”两种场景下进行重建测试,以此验证最佳情况与最差情况的表现。
在本次测试期间,针对每个 RAID 引擎,mdraid 和 xiRAID Classic 4.3,执行以下步骤:
1. 使用默认参数创建了由 9 个数据硬盘组成的 RAID5 阵列。
2. RAID 重建参数设置如下:
3. 等待 RAID 初始化完成。
4. 从 SMART 日志中获取了新数据硬盘的 nand_bytes_written 和 host_bytes_written 参数。这些用于计算硬盘的 WAF。此硬盘不属于 RAID,而是替换硬盘。
5. 将 RAID 阵列中的硬盘替换为步骤 4 中的硬盘。记录替换时间。
6. 流程完成后,从系统日志中获取重建时间
7. 获取步骤 4 中所述重建数据硬盘的 nand_bytes_written 和 host_bytes_written 参数。
8. 使用以下公式计算 WAF
9. 计算重建硬盘的重建时间。
结果见表 1。
RAID 引擎 | 重建时间 | 重建速度 (硬盘大小/重建时间) |
WAF - 正在重建的硬盘 |
mdraid | 53 小时 40 分钟 | 322MB/s | 1.2 |
xiRAID Classic 4.3 | 5 小时 22 分钟 | 3.18GB/s | 1.02 |
表 1. 无需主机工作负载进行 RAID 重建
在没有主机工作负载的情况下,xiRAID 的重建速度比 mdraid 快 10 倍。尽管在没有工作负载的情况下,61.44TB QLC 硬盘使用 mdraid 的重建时间约为 2.25 天(约 51 小时),而使用 xiRAID 则可在数小时内完成重建。xiRAID 可以利用 Solidigm D5-P5336 固态硬盘的完整原始顺序带宽,实现快速重建。此类重建可在预期的主机工作负载空闲时段启动。
在本次测试期间,针对每个 RAID 引擎,mdraid 和 xiRAID Classic 4.3,执行以下步骤:
1. 使用默认参数创建了由 9 个数据硬盘组成的 RAID5 阵列。
2. RAID 重建参数设置如下:
3. 等待 RAID 初始化完成。
4. 从 SMART 日志中获取了新数据硬盘的 nand_bytes_written 和 host_bytes_written 参数。这些用于计算硬盘的 WAF。此硬盘不属于 RAID,而是替换硬盘。
5. 启动以下 fio 混合工作负载:
[global]
iodepth=64
direct=1
ioengine=libaio
group_reporting
runtime=604800 # seconds (1 week)
[write]
rw=write
bs=1MB
numjobs=38
offset_increment=15G
filename=/dev/xi_test
[read]
rw=read
bs=1MB
numjobs=90
offset_increment=10G
filename=/dev/xi_test
6. 将 RAID 中的硬盘替换为步骤 4 中的硬盘。记录替换时间。
7. 流程完成后,从系统日志中获取重建时间
8. 获取步骤 4 中所述重建数据硬盘的 nand_bytes_written 和 host_bytes_written 参数。
9. 使用以下公式计算 WAF
10. 计算重建硬盘的重建时间。
在主机工作负载运行时,mdraid 的重建速度约为 10.5MB/s,如此之慢的速度使其无法在合理时间内完成 61.44TB 硬盘的完整重建。mdraid 的重建时间结果是根据其重建速度估算得出的。
结果见表 2。
RAID 引擎 | 重建时间 | 重建速度 (硬盘大小/重建时间) |
WAF - 正在重建的硬盘 | 工作负载速度 (重建中) |
mdraid | > 67 days | 10.5 MB/s | 1.58 | 读取 ~ 100MB/s 写入 ~ 45MB/s |
xiRAID Classic 4.3 | 53 小时 53 分钟 | 316MB/s | 1.21 | 读取 – 44GB/s 写入 – 13GB/s |
表 2. 使用主机工作负载进行 RAID 重建
当主机 IO 无法等待硬盘重建完成时,mdraid 将无法用于大容量硬盘。重建硬盘可能需要两个多月的时间,这会导致 RAID 阵列容易受到第二次硬盘故障的影响,可能造成数据丢失。相比之下,xiRAID 在主机工作负载运行的情况下,依然能够提供与 mdraid 在无工作负载重建时相当的重建性能。RAID 阵列中的 Solidigm D5-P5336 61.44TB QLC 硬盘可以处理通过主机工作负载发送的软件堆栈中的混合 IO,以及重建逻辑的混合 IO。
我们的研究结果有力地反驳了“RAID 阵列中重建高密度硬盘耗时过长,因此不适用于 RAID 解决方案”的观念。虽然此问题在未针对 NVMe 硬盘进行优化的 RAID 引擎中普遍存在(如 mdraid 便是如此),但我们已经通过实验证明,xiRAID Classic 4.3 在无主机工作负载的情况下,仅需短短几小时就能完成 Solidigm 61.44TB QLC 硬盘的重建。在同时运行主机工作负载的情况下,重建时间也仅略微延长至几天,同时还能将 WAF 维持在接近 1 的水平。这也表明,Solidigm 高密度 QLC 固态硬盘可以轻松满足高性能软件堆栈的需求,在处理重建 IO 的同时,还能应对主机的混合读写工作负载。如果没有 Solidigm D5-P5336 QLC 固态硬盘的原始性能,重建过程可能会耗时很长,在某些情况下甚至需要数月,而且/或者主机 IO 将无法得到妥善处理。
这些结果表明,xiRAID Classic 4.3 更适合 Solidigm 高密度 QLC 硬盘的 RAID 部署,即使在主动且快速的重建过程中,主机也能访问 RAID。
Sarika Mehta 是 Solidigm 的高级存储解决方案架构师,拥有超过 16 年在 Intel 存储部门及 Solidigm 的工作经验。她的工作重点是与 Solidigm 的客户和合作伙伴密切协作,助力其优化存储解决方案的成本和性能。她负责针对不同存储场景对 Solidigm 的固态硬盘进行调优和优化,覆盖范围包括直连存储,以及分层与非分层的分离式存储解决方案等多种部署模式。她在存储领域的各个方面都有着丰富经验,包括认证、性能基准测试、探索新方向、技术营销和解决方案架构。
Daniel Landau 是 Xinnor 的高级解决方案架构师。Daniel 担任系统架构师的经历超过十年,在解决复杂网络配置和系统安装方面拥有丰富的经验。工作之余,Daniel 喜欢旅游、摄影和音乐。
测试系统配置 | |
系统 | 戴尔 PowerEdge R760 |
BIOS | 厂商:戴尔公司 版本:2.3.5 |
CPU | Intel(R) Xeon(R) Gold 6430 x 2 2 x 插槽 @3.4GHz,32 内核/每插槽 |
NUMA 节点 | 2 |
DRAM | 共 512G DDR4@3200 MHz |
操作系统 | Rocky Linux 9.5 版 |
内核 | 5.14.0-503.22.1el9_5.x86_64 |
固态硬盘 | 10 个 Solidigm D5-P5336 61.44 TB,硬件版本:5CV10302, PCIe Gen4x4 |
Fio | 版本:3.35 |
xiRAID | 版本:4.3 |
Mdraid | 版本:4.3 2024-02-15 - 3 |
表 3. 系统配置