AnyShare ECeph 数据冗余策略
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),如EC(4+2)或EC(6+3)的空间利用率为66%。
纠删码条带校验的计算过程是可逆的,在1~M个数据块或校验块丢失(损坏)的情况下,仍然可以通过任意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+M:B编码方案,三节点采用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内的顺序依次分发数据块与纠删码块。也就是说,OSD1、2、3、4依次得到了数据块1-4,而OSD5得到了纠删码块1,OSD6得到了纠删码块2。在纠删码下,同一PG内各OSD存放的数据块是完全不一样的,如下图所示:

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

纠删码数据读取流程
副本策略
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),如EC(4+2)或EC(6+3)的空间利用率为66%。
纠删码条带校验的计算过程是可逆的,在1~M个数据块或校验块丢失(损坏)的情况下,仍然可以通过任意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+M:B编码方案,三节点采用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内的顺序依次分发数据块与纠删码块。也就是说,OSD1、2、3、4依次得到了数据块1-4,而OSD5得到了纠删码块1,OSD6得到了纠删码块2。在纠删码下,同一PG内各OSD存放的数据块是完全不一样的,如下图所示:

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

纠删码数据读取流程
赞
点个赞吧!
请就本文对您的益处进行评级: