关于多副本和纠删码(二) |
您所在的位置:网站首页 › ec是啥游戏 › 关于多副本和纠删码(二) |
文章目录
一、Erasure Coding(纠删码)和Raid比较二、Erasure Coding(纠删码)介绍2.1正常场景时EC读写原理2.2故障场景时EC读写原理2.3EC冗余配比
一、Erasure Coding(纠删码)和Raid比较
(1)EC算法是跨节点的,4+2:1的冗余允许1个节点故障而不丢失数据,RAID5一般是由节点内的若干块盘组成RAID组的,只能容忍硬盘故障,不能容忍节点故障。 (2)EC算法采用全局热备的方式,不需要单独的热备盘,所有硬盘都可参与数据读写,只要系统中有剩余空间,就可以恢复故障数据;RAID5方式单节点至少准备一块全局热备盘。 (3)4+2:1的EC方式允许损害任意的2块盘而不丢失数据,RAID5方式每个RAID组最多只允许损害1块盘,所谓的允许损坏多块盘是建立在所有坏盘都不位于相同RAID组中的,从实际经验来看,把数据安全建立在理想情况下是不靠谱的。 (4)当出现硬盘故障时,EC方式是多块盘参与数据恢复,RAID方式只有1块盘(热备盘)能够写数据,这就导致EC方式的数据恢复效率(1TB/小时)是RAID方式的几十倍,这也大大减少了数据恢复期间硬盘再次故障的可能(目前单盘容量都达到数个TB使得该风险急剧增加),进一步提升了系统的安全性。 (5)EC方式的保护级别可以针对目录设置,重要的数据目录可以设置更高的保护级别以确保安全性,随着节点扩容,数据条带大小还能自动调整以获取更高的空间利用率;RAID方式所有数据的保护级别是相同的,RAID组一旦划分完不能够再调整。 (6)RAID方式需要独立的RAID卡,EC方式不需要额外的硬件支持。 二、Erasure Coding(纠删码)介绍传统的硬盘级RAID模式将数据存放于单节点内的不同硬盘,当整节点发生故障时,无法有效恢复数据。为了避免数据丢失,存储系统需要将数据在节点间进行冗余保护。Erasure Coding(简称EC,即纠删码)是一种冗余保护机制,通过计算校验片的方式实现数据冗余保护。 分布式存储系统在写入数据时,将数据切分为N个数据块(N为偶数),通过EC编码算法计算得到M个校验块(M取值2、3或4)。 服务器级安全:将N+M个数据块和校验块存储于不同的节点中,故障M个节点或M块硬盘,系统仍可正常读写数据,业务不中断,数据不丢失。 机柜级安全:将N+M个数据块和校验块存储于不同的机柜中,故障M个机柜、不同机柜的M个节点或M块硬盘,系统仍可正常读写数据,业务不中断,数据不丢失。 EC冗余方式的空间利用率约为N/(N+M),N越大,空间利用率越高,数据的可靠性由M值的大小决定,M越大可靠性越高。具体的冗余配比关系可以参见本章节末尾的“EC冗余配比表”,基于性能和可靠性综合考虑,推荐配置4+2。 说明:机柜级安全和服务器级安全的原理类似,以下内容以服务器级安全为例介绍其不同场景的读写原理。 2.1正常场景时EC读写原理当存储节点的个数≥N+M时采用N+M冗余配比,当(N+M)/M≤存储节点的个数<N+M时采用N+M:1冗余配比。 N+M:将N个数据块和M个校验块随机存储于不同的节点中(因为存储节点的个数大于N+M同时基于可靠性的考虑,数据块将存储于不重复的节点),此时存储池允许故障M块盘或M个节点。 以N=4、M=2、存储节点个数=7为例: 写原理:如图1-2所示,用户写入数据Data后被系统切分为4个数据块(D1D4),同时通过EC编码得到2个校验码(C1C2),系统将6个数据块随机存入6个节点中。 图1-2 使用EC(N+M)写入数据
说明:扩容后,当存储节点数量≥N+M时,系统会通过后台自动均衡将N+M:1展开为N+M。 2.2故障场景时EC读写原理故障场景写原理(N+M冗余配比) 当故障后的剩余存储节点数量≥N+M,系统会重新分配一个新节点组成N+M冗余,保证数据冗余不降低。 以N=4、M=2、存储节点个数=7为例,如图1-6所示,当故障Node6节点后,剩余6个节点仍满足4+2的情况,系统分配Node7存放数据块D2。 图1-6 故障场景写原理(剩余存储节点的数量≥N+M) 当故障后的剩余存储节点数量<N+M时,在故障恢复前系统会将新写入的数据缩列为N/2+M,保证IO不中断的同时可靠性级别不降低,故障恢复后,系统冗余配比恢复为N+M。 以N=4、M=2、存储节点个数=6为例,如图1-7所示,数据Data1在以4+2的冗余配比写入过程中,EC成员节点突然故障,此时为了保证可靠性不变,系统将新写入的数据Data2缩列为2+2冗余配比。 图1-7 数据写入原理(剩余节点数量<N+M) 故障场景写原理(N+M:1冗余配比) 当故障1个节点或M块硬盘后,系统仍然将N+M个数据块和校验块写入所有正常节点中。 数据读取原理 当EC成员节点或成员盘故障时,系统会读取任意N个数据(不管是数据分片还是校验分片),通过EC解码恢复数据。 以N=4、M=2为例: 冗余配比N+M:如图1-8所示,Node6和Node5发生故障,无法读取该节点的数据块D2和校验块C1,系统会从其他正常节点读取4个数据D1、D3、D4和C2,并通过解码获取Data返回给用户。 图1-8 故障场景数据读取原理(N+M)![]() ![]() ![]() |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |