为了给您提供更优质的服务,请您先完善以下信息:
确认提交

扫码关注

爱数技术支持中心公众号

请选择:

请选择咨询类型

AnyShare
AnyBackUp
AnyRobot

扫码关注

爱数技术支持中心公众号

contact us

提交成功!

我们将在 24 小时之内联系你。

性能爆表
AnyShare
如何购买
我已是Anyshare 客户
AnyRobot
如何购买
购买 AnyRobot 订阅服务
我已是 AnyRobot 客户
一对一在线咨询
我是 AnyRobot 新客户
一对一在线咨询

爱数博客

全部 AnyBackup AnyShare AnyRobot AnyDATA AnyFabric

AnyShare ECeph 数据冗余策略

2021-12-01 4207 0
ECeph支持两种数据冗余策略:副本策略和纠删码策略。下面将介绍副本策略和纠删码策略的数据处理流程。
副本策略
ECeph存储池可以使用多副本,即同一数据块同时存放在不同的节点或者磁盘组中。其中第一份数据块为主数据块,其它数据块为副本数据块。
如图所示为一个对象使用三副本时,经过CRUSH算法,均衡分布在3个节点上。
                             
                                                  副本策略
Ø 副本数据写入流程

客户端接收到对象写入请求时,把对象映射到存储池和PG,然后根据CRUSH MAP,使用CRUSH (一个可扩展的伪随机数据分布算法,下同)算法计算出此PG对应的OSD,从而得出对象的具体存储位置。客户端将所有I/O操作先写入到PG中的主OSD上,再由主OSD向后分发。当所有副本都更新好后返回确认信息给客户端。在副本策略下,同一个PG内各OSD放置的数据分片是完全一样的(都是一个副本)。副本数据的写入流程如下图所示。
                            
                                                副本数据写入流程
Ø 副本数据读取流程:副本数据读取流程直接从Primary OSD将完整副本读取出来返回给客户端。

纠删码策略
Ø 数据条带化
纠删码又叫Erasure Code,下面简称EC。在采用纠删码时,首先需要将数据划分条带,每个条带由K个数据块(Data),和M个校验块(Parity)组成。同一个条带的K+M个块均匀地存储在所有节点上(注:若已划分保护域,则数据被限定在保护域节点中(数据分布均默认已遵守保护域限制规则),见3.5.1。如果一个节点中有多块磁盘,数据块和校验块也会均匀地存储在节点的所有磁盘上。以实现磁盘和节点级别容灾。
纠删码的空间利用率为K/(K+M),如EC4+2)或EC6+3)的空间利用率为66%
纠删码条带校验的计算过程是可逆的,在1M个数据块或校验块丢失(损坏)的情况下,仍然可以通过任意K个数据块解码得到完整的数据。
Ø K+M编码方案

当存储节点数量大于等于K+M时,数据块和校验块可以完全展开分布在不同的节点上。M个磁盘或节点同时发生故障时,仍可保证数据可用性。在使用K+M的纠删码数据冗余策略时,元数据自动采用多副本的方式存储,且副本数为M+2个副本,这保障了在M个磁盘或M个节点同时故障时,数据仍可访问,用户业务不中断。
6节点采用EC(4+2)方案时的数据分布方式,如下图所示:
             
                   
K+M编码方案,6节点采用EC(4+2)方案的数据分布方式

Ø K+M:B编码方案
当节点数量少于K+M时,ECeph对象存储支持K+M:B编码方案,一个节点上的磁盘划分为2个磁盘组,数据块基于磁盘组互斥存放,此时同一个节点上可能存储同一个条带的2个数据块(数据块或校验块)。
使用K+M:B方案时,不同磁盘组中的M个磁盘故障或者B个节点同时故障时仍可保证数据可用性。在集群规模小且节点数量少于K+M时,可使用压缩的K+M方案(K+M:B),三节点采用4+2:1的数据存储分布如下图所示:

                      
                       K+MB编码方案,三节点采用4+2:1的数据存储分布图
Ø 纠删码数据写入流程

在纠删码策略下,主OSD负责接收全部数据,并且负责将数据切片为K块数据块并编码M块纠删码块,对于1体积的数据,这些数据块的大小均为1/K。编码完成后,主OSD负责将这些数据块分发到对应的从OSD中。与副本策略中Primary-copy模式相同的是,各从OSD在完成数据写入后返回确认信息给主OSD,主OSD在确认所有从OSD都已完成数据写入后返回确认信息给客户端。
对于4+2纠删码下的PG[1, 2, 3,4, 5, 6]OSD1负责接收来自客户端的完整的一份数据,同时把完整的数据编码为4块数据块并计算出2块纠删码块,随后按PG内的顺序依次分发数据块与纠删码块。也就是说,OSD1234依次得到了数据块1-4,而OSD5得到了纠删码块1OSD6得到了纠删码块2。在纠删码下,同一PG内各OSD存放的数据块是完全不一样的,如下图所示:
           
                                      纠删码数据写入流程
Ø 纠删码数据读取流程

取时,主OSD从各个OSD中取得任意K块数据块(无论是数据块还是纠删码块)解码返回给客户端,如下图所示:
            

                                 纠删码数据读取流程

请就本文对您的益处进行评级:

标签

产品功能

相关文章

热门标签

版本发布 在线教学
ai-assistant
chat
support
trial
需求助手 (内容由 AI 大模型生成,请仔细甄别)