浪潮云海在2023年5月正式发布新一代InCloud Rail G7系列超融合一体机,其内置的InCloud dSAN超融合存储组件,基于新一代的硬件平台设计,支持全栈RDMA协议,同时在EC纠删功能上也带来全新体验,为新时代用户提供更丰富的产品功能。
本文将详细解读InCloud dSAN在新一代InCloud Rail G7系列超融合一体机上如何设计EC纠删功能。
什么是EC纠删码技术?
纠删码技术是一种数据保护方法,主要是通过利用纠删码算法将原始数据分割成多段,然后进行扩展和编码校验,并将分段数据和校验一并在磁盘、存储节点或其他位置存储起来,以达到容错目的。基本原理:总数据块 = 原始数据块 + 校验块,常用表示为,n= k + m基本思想是将k块原始的数据元素通过一定的编码计算,得到m块校验元素。对于这k+m块元素,当其中任意的m块元素发生故障(包括数据和校验出错),均可以通过对应的重构算法恢复出原来的k块数据。
EC纠删码在块存储设计的挑战
EC纠删码数据切分和计算示意图
上述场景以K = 4,M = 2为例,首先将应用数据拆分成4个分片,然后计算出两个校验条带分片,然后按照数据分布算法,将6个分片数据下发到6个节点上存储。由于多副本策略是客户常用的数据冗余策略,我们将EC纠删码和三副本的的读写流程及故障场景下的流程做了相关分析:由下表中可得出,在正常写流程中,需要消耗7个IO完成正常的写入流程,同时在有故障场景的读写,需要7个IO,有较大的读写惩罚。另外,在小块IO读写流程中,如果数据块小于EC切片数据大小,会存在空间浪费的情况。
数据冗余策略 | 读写场景 | 消耗读写IO次数 |
EC(4+2) | 正常读 | 1个 |
正常写 | 4个读IO,3个写IO | |
落在故障盘的读 | 5个读IO | |
落在故障盘的写 | 5个读IO + 2个写IO | |
三副本 | 正常读 | 1个 |
正常写 | 3个 | |
落在故障盘的读 | 2个 | |
落在故障盘的写 | 1个 |
在超融合的应用场景中,用户经常使用块存储承接应用数据,适用于包括虚拟化、云平台、数据库等场景。此种场景下会产生非常多的小块随机读写负载,同时用户对于时延要求较高,要求控制在5ms以内,且要求在故障场景下,对业务影响较小。这些要求正是EC纠删码的缺点。
浪潮云海超融合在新一代G7平台的EC设计
由于EC的优劣势明显,如何在超融合块存储上使用EC功能是时下刚需,浪潮云海超融合在新一代G7平台做了独特的方案设计:
EC纠删码设计方案
方案亮点主要有:
数据分层管理:将数据存储划分为缓存层和数据层,其中缓存层使用高性的NVMe和Sata SSD存储,同时在缓存层使用多副本的设计,提供高性能数据存储能力。数据层提供EC存储,主要由HDD硬盘存储,提供高容量存储空间。
智能缓存管理:设计冷热分层的智能缓存管理,高效识别热点数据和冷数据,同时设计全局的缓存管理功能,确保客户的热数据保存在缓存空间中。
数据空间高效存储:在缓存层中由于副本存储,将上层应用的小块IO聚合,当数据变成冷数据下刷至EC存储层时,由于下刷采用数据对齐,聚合成大块的顺序条带读写,可以在EC数据层进行高效的数据存储。
EC加速计算:设计支持多个EC加速引擎,支持不同平台的EC加速计算,其中在Intel平台使用ISA-L的EC加速库,发挥Intel CPU的EC计算能力。
为了验证方案效果:同时对比ISA-L加速计算和使用Jerasure纯软件不经过CPU加速计算的性能测试。下图所示测试数据采用了金融和医疗等行业常用的数据库应用,使用1G的测试数据,在触发数据下刷场景下,使用EC算法选择Reed-Solomon和Cauchy算法测试EC纠删场景。从实验数据发现:
不同K/M模型ISA-L和Jerasure的EC计算带宽对比
ISA-L在不同的K/M模型下,EC计算带宽表现较为稳定,而软件计算随着计算量增加呈线性下降趋势;
ISA-L在新一代G7平台的吞吐率为9.8 GB/s,相较于软件计算提升5.7倍。
总结:EC纠删码相较于多副本策略虽然可以提升存储的利用率,如4 + 2场景利用率为66%,3副本只有33%,8 + 2可以做到80%。但是其涉及到EC的纠删计算、数据校验、读写惩罚等问题相较于多副本仍存在较多优化空间。InCloud dSAN分布式存储软件在新一代G7平台,依托于新硬件(Intel新一代至强CPU)、ISA-L软件加速库,设计新型的EC功能,采用独特的数据分层、智能缓存管理、软件硬协同等方案,解决了当前广泛存在的数据冗余和存储空间利用难题。
稿源:美通社