SmartX分享:SMTX ZBS的纠删码EC与多副本介绍、对比与其他概念(分布式存储)

背景

近期,SmartX的SMTX ZBS 分布式存储 推出了 SMTX ZBS 5.6版本。该版本有几点重大变化:

  • 支持文件存储
  • 全新存储分层(写缓存池和读缓存池)
  • 支持EC(Erasure Coding 纠删码)

在这里插入图片描述

新版本彩页:SmartX 分布式存储产品组合介绍

本文针对其中的EC与之前就支持的多副本做一个分享。

多副本

通过将数据在不同的位置存储多份实现数据冗余,在部分数据副本损坏后,通过健康的副本继续提供服务,并重建数据副本,将副本数量恢复至期望的级别。

存储中,会保存2或3个数据的完整副本,因此在设置了多副本机制的存储池中,存储可用容量为50%(2副本)或33.33%(3副本)

读、写性能不会受到硬盘故障的影响,IOPS稳定

EC

通过对多个数据块(K)计算校验块(M),无需完整地存放数据副本,从而节省存储空间。在部分数据块损坏后(≤M),通过 K 个可用的数据块和校验块可以重建出损坏的数据。

  1. EC更加节省空间,在22+1的strip下存储可用率达96%
  2. 采用缓存加速机制,可以保证EC在大部分情况下的读写性能;但EC的数据在多节点,涉及跨网络读取数据时,读性能会有所下降。

相关概念

数据块(Data Block):原始数据块。
校验块(Parity Block):原始数据块通过纠删码算法计算得到的冗余数据。
编码块(Coded Block):数据块和校验块统称为编码块。
纠删码条带(Stripe):(K+M)个编码块的集合,一个条带包含多个数据块和校验块。

限制

需要搭配存储分层使用

工作方式

写入

  1. 在新写入数据时,数据切分成块后以副本形态写入缓存层(m=1时,2副本;m>=2时,3副本)。每个副本分配在不同的节点。
  2. 根据数据访问频率,针对不经常访问的数据计算校验块,并将数据块和校验块下沉至容量层。
    • 每K个数据块与M个校验块组成1个EC条带。
    • 同一个条带的块分配到不同的节点。
      在这里插入图片描述

读取

  • 若在缓存层
    • 直接读取副本数据
  • 若在容量层
    • 读取EC数据块。若频繁访问会被提升到读缓存层。

在这里插入图片描述

编辑

  • 若在缓存层
    • 直接对多个数据副本进行修改
  • 若在容量层
    • 新数据以副本的形式写入缓存层,下沉时更新对应的数据和校验块

在这里插入图片描述

故障

  • 使用存活的块重建丢失的块,并放置到不包含条带的块的节点上。此时数据块无法被读取。
  • 随机读取k个块,完成所需数据块的重建。

在这里插入图片描述

移除硬盘、节点

系统自动触发数据迁移,将被移除的块迁移到其他盘或不包含条带块的节点。

EC存储配置

EC的数据块越多,空间利用率越高
EC的校验块越多,可以容忍的故障数越多

EC推荐节点数

EC 机制下,数据冗余配置为 k+m,空间利用率为 k/(k+m),节点数最小配置为 k+m+1,节点数推荐配置为 k+m+m。

EC 机制需要的节点数最小为 k+m+1。该配置可满足 1 个节点故障后,剩余节点可将数据恢复至期望的状态
当 m > 1 时,为了提升可靠性,推荐将节点数配置为 k+m+m,满足 2 个节点或 m 块数据盘故障后,剩余节点可将数据恢复至期望的状态。

在这里插入图片描述

这里补充一点,华为存储的EC支持一个叫做折叠的功能.
N+M:1(折叠):将N个数据块和M个校验块随机打散存放于所有节点,每个节点都存在存放M个分片的情况,此时硬盘池允许故障M块硬盘或1个节点。
这个功能主要的作用是,可以在主机数少于n+m数量时,最低满足(n+m)/2的主机数量就可以正常使用设置的EC

EC的容错能力

目前ZBS 5.6 支持校验块(m)设置为1-4(推荐1-2)
在这里插入图片描述

EC的数据块数

数据块(k)只支持设置为偶数,以便更好地I/O拆分。

例如卷条带256KiB,EC块4KiB。偶数的拆分可以保证全条带。

k与m的互相限制

m = 1 或 2 时,k 可设置为 2 - 22 间的偶数
m = 3 或 4 时,k 可设置为 4 - 8 间的偶数

因此,SMTX ZBS 5.6 目前支持 28 种配比方案。此外,EC 22+1 可达到 96% 的空间利用率,EC 22+2 则可达到 92%。

EC和多副本的对比

复杂但直观的验证过程不做赘述,可以看这一篇官方文章:一文了解分布式存储纠删码(EC)机制与配置方案

直接说结论:

  • 读:
    • 正常:
      • 数据下沉前:与多副本一致,4K随机读IOPS平均319K
      • 数据下沉后:随着数据全部提升到缓存后,4K随机读IOPS平均200K
    • 故障:
      • 副本:下降约10%
      • EC:下降约40%,但是内存击穿性能比副本好
    • 与副本机制相当

在这里插入图片描述

其他

涉及到全新存储分层的概念

SMTX ZBS 提供了存储分层能力,分为缓存层和容量层。
混闪 SSD作为缓存层,HDD作为容量层,且缓存层至少是容量层的10%;
全闪 可以根据SSD协议与速率也做分层,也可以不做分层。

在ZMTX ZBS 5.6 中,缓存层做了进一步分类:

  • 写缓存
    • 也被称为性能层,是集群层级的写缓存池。
    • 无论采用EC还是多副本存储机制,在写缓存中,新写入的数据均以副本形态写入写缓存;对于已经下沉至容量层的数据,新写入时也是写入写缓存。这一机制主要是保证数据写性能
    • 此外还有常驻缓存功能。类似与内存常驻,是将数据保留在写缓存中。
  • 读缓存
    • 节点粒度的读缓存池。
    • 用于缓存被频繁访问的容量层的数据,提升数据的读性能。

对于不同的硬盘,也有一定的区别:

  • 混闪或多类型SSD全闪:
    • 高速介质做缓存,低速做容量。
    • 每块缓存盘中内部划分读缓存和写缓存。
  • 单一类型SSD:
    • 所有盘使用一部分做缓存,剩余做容量。
    • 缓存分区均为写缓存。
      • 用于EC卷的数据整理。EC卷的数据先写入写缓存,再下沉至容量层。
      • 副本卷不使用缓存层,直接通过容量层读写。

在这里插入图片描述

可以参考的原文链接:

分布式块存储 ZBS 的自主研发之旅 分布式块存储 ZBS 的自主研发之旅 | 架构篇
SmartX 官方博客:SmartX 超融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值