分布式存储数据保护策略 您所在的位置:网站首页 raid是副本吗 分布式存储数据保护策略

分布式存储数据保护策略

2024-02-20 21:12| 来源: 网络整理| 查看: 265

一、集中存储和分布式存储介绍

介绍多副本和纠删码之前,我们先来说一下分布式存储。分布式存储是不同于传统集中式存储的的一种架构,很多时候也被称为SDS软件定义存储(Software Defined Storage)。

      传统集中式存储采用控制器+硬盘柜的方式,通过冗余的双控制器提供数据管理和读写能力(也有超过2个控制器的多控存储,多见于高端存储),通过控制器自带的硬盘槽位或扩展硬盘柜提供存储空间。

      集中式存储的硬盘数据保护多采用RAID技术,比如RAID5、RAID6、RAID10等,以后有机会我们再单独介绍。

分布式存储为了实现更灵活的扩展性和更大的存储规模,采用无中心的组网方式,每个存储节点都可以同时提供计算和存储资源。它们通过内部交换机互联起来,基于分布式存储软件提供统一的存储资源池。比如1个节点是200TB容量,那么5个节点就是1000TB容量,并可以扩展到数千个节点EB级别的容量,所以更适合用在海量数据的场景下。     与集中式存储不同的是,分布式存储的硬盘数据保护多采用多副本和纠删码技术。

二、什么是多副本和纠删码技术?

        多副本,顾名思义就是多个数据副本,简单来说就是一个数据拷贝多份完全一样的副本,分别存放在多个不同节点上。比如我们常用的3副本(如下图所示)就是将A这个数据拷贝了3份,分别存放在节点1、3、4上,这三个节点是在整个集群中随机选择的,下一个B数据有可能就放在节点1、2、4上了。

 

        我们来看下多副本的数据保护效果,很明显,当节点1和3同时故障时,节点4上仍然会保存有A数据。以此类推,我们可以知道,N副本技术可以允许N-1个节点同时故障数据不丢失。如果是硬盘故障,只要故障硬盘的范围不超过N-1个节点,数据也不会丢失,比如节点1坏了3块盘、节点3坏了4块盘,数据仍然不会丢失。

 

         纠删码的英文全称是Erasure Code,所以有时我们也会简称为EC。纠删码顾名思义是一种纠正数据丢失的校验码,大家可以把它类比成一个方程组。我们如果知道4个数a、b、c、d,就可以通过2个不同的公式算出2个校验数据x和y,把6个数据一起保存起来,那么当a、b、c、d其中1个或2个数据丢失的话,就可以通过剩余的2个值和计算公式,反推出丢失的2个数据。比如:

       已知:a+b+c+d=x=10,a+2b+3c+4d=y=20,c=2,d=1

        那么:a+b=7,a+2b=10,则a=4,b=3

当然以上计算只是一个简化的方案,目的是帮助大家理解,真正存储中用的校验方式会比这个复杂得多,但效果是类似的。

如果我们用M+N表示纠删码的话,以上就是一个4+2的纠删码方案,数据会被切分成4个相同大小的分片,并通过校验算法生成2个同样大小的校验分片P和Q。比如32KB的数据会被切成4个8KB的分片,再生出2个8KB的分片,总计48KB数据。当6个数据分片生成后,它们会被随机存到6个不同的节点上(如下图所示)。

 

和多副本一样,我们来看下4+2纠删码的数据保护效果。从上图可以看出,当任意2个节点故障时,数据是不会丢失的,因为只会丢失2个数据分片,还是可以反算出来的。当然如果同时故障了3个节点,4+2的纠删码是无能为力的,就像1个方程有2个未知数怎么也解不出来一样。而且4+2纠删码也可以允许2个节点内任意个数硬盘故障时,数据不丢失。比如节点1、节点2分别故障了5块硬盘,也完全不会有影响,因为每一组4+2分片都有4个分片还在,数据还是可靠的。

 

三、多副本和纠删码对存储节点有什么要求?

多副本和纠删码对分布式存储的节点数量和硬盘配置都有一定要求,主要是2点:

N个副本至少需要N个节点才能部署,比如3副本至少需要3个存储节点,而M+N纠删码至少需要(M+N)个节点,比如4+2纠删码至少需要6个节点,当然这只是最低要求,上限并没有限制,另外也不会有倍数比例的要求,比如3副本并不要求一定是6个、9个节点,5个、7个节点也可以;

每个节点的硬盘数量和单盘容量建议相同,因为如果不同的话,就会出现水桶的短板效应,两个节点,一个节点配置8TB硬盘,一个节点配置4TB硬盘,8TB硬盘只能当4TB硬盘用,因为每个节点的数据保存容量是随机分布、几乎相同的。

 

四、什么是M+N:1纠删码?

除了常见的M+N纠删码之外,我们还经常见到一种M+N:1的纠删码,这是一种特殊的纠删码技术,我们称之为亚节点纠删码。

这种技术的出现是为了满足小规模集群的部署要求,我们举个例子,有一个用户采购了3个分布式存储节点,因为节点数量比较少,他可选的数据冗余策略就只有3副本和2+1纠删码(2副本暂不考虑,后文我们来详细说明原因)。选择3副本的话,存储的空间利用率就只有33%了,如果我们再考虑其他因素,比如硬盘标称值的差异、系统预留空间、热备空间的话,可用空间可能只有26%左右,这对于很多看重容量的用户来讲是比较难以接受的。但如果我们选择2+1纠删码呢,问题出现了,2+1纠删码只能允许1个分片数据丢失,当集群中2个节点分别故障1块硬盘的时候,数据就丢失了!

在实际使用场景下,2块硬盘同时故障的情况虽然比较少见,但概率也并不算低,因为很多用户在1块硬盘故障时可能并没有发觉。这段时间存储就是在极其危险的状态下运行,任何硬盘出问题都会导致集群数据丢失,很显然,2+1纠删码的方案并不好。

基于以上原因,4+2:1的纠删码出现了。为什么叫亚节点纠删码呢,因为默认的纠删码是按照节点来分配数据的,但4+2:1只会按照硬盘来分配数据,它把3个节点当6个节点用,每个节点选择2块硬盘,整个集群选择6块不同的硬盘来存放4+2总计6个分片数据(如下图所示)。

 

 

我们看到,4+2:1相比2+1纠删码,虽然能容忍节点故障数量仍然是1个,但它可以允许2个节点分别故障1块硬盘(总计故障2块硬盘)而数据不丢失。而实际情况下,硬盘故障的概率是远远低于整个节点故障的,所以4+2:1还是非常可靠的,而且它的空间利用率远高于3副本。当然如果你担心的是2个节点同时故障,那你只能选择3副本了。

类似于4+2:1,也存在8+2:1、16+2:1等亚节点纠删码,这里我们就不多讨论了。

 

五、多副本和纠删码哪个好,应该如何选择?

1、在比较多副本和纠删码技术时,我们可以从可用容量、读写性能、重构性能、可靠性等方面来分析,如下表所示。

 

 

2、两者在不同的场景有各自的优缺点。

可靠性对比

EC 配置 1 个校验位(FT=1) 与 2 副本(RF=2) 的可靠性相当,允许任意 1 个节点或者 1个数据块损坏

EC 配置 2个校验位(FT=2) 与 3 副本(RF=3) 的可靠性相当,允许任意 2 个节点或者2 个数据块损坏

数据恢复对性能影响

2 副本下,1 个节点或者数据块故障,数据恢复需要从一个副本读取一次,然后写入一次进行恢复副本,影响 1 个节点的读取性能。

EC 设置 4/1 情况下,1 个节点或者数据块故障,数据恢复需要读取 3 个数据块和 1 个校验,通过运算后写入一次进行数据恢复,影响 4 个节点的读取性能。

写惩罚

2 副本下,某个节点的 1 次数据写入,实际需要 2 个节点参与(写入 2 次),写惩罚为 2

EC 设置 4/1 情况下,1 次数据写入,实际需要至少 2 个节点参与,其中读取 2 次(读取数据,读取校验),写入 2 次(写入数据,写入校验),写惩罚为 4

CPU 开销

2 副本/ 3 副本是基于数据完整复制,没有涉及额外的运算,对 CPU 开销较低。

EC 由于读写都需要计算校验值,需要额外的 CPU 资源开销

 

如何选择两种数据保护方式,可以根据业务情况因地制宜,那么就要知道两种模式的区别,这个就不细说了,总的来说,从性能和冗余性来说副本要好很多,但是从硬盘利用率来说EC肯定要好。

什么样的业务选择副本模式呢?

1) 关键业务,对性能要求比较高的业务,如数据库等。

2) 其他非关键性业务,如视频监控等,可以选择EC。如何定义是不是关键业务要看企业具体情况。

4.同一套存储中可有副本和EC都存在,那么就可以实现数据分层存储,既数据的生命周期管理。

 

副本和纠删码是目前分布式存储系统中常用的两种数据冗余保护策略,它们各有自己的特点。

副本:

顾名思义,一份数据写多份。

优点:读写性能好。

缺点:得盘率低。

纠删码:

优点:得盘率高。

缺点:校验码计算有性能损耗。

应用中,如何选择还得结合具体的业务场景。性能要求高的关键业务,一般采用副本。视频,影像存储等海量存储场景可以采用纠删码,提高存储系统利用率,降低成本。此外,对象存储系统中,索引池可以使用副本策略,而数据池可以采用纠删码,这样既提升了读写效率,又节省了成本。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有