分布式数据保护策略——多副本和纠删码怎么选?

news/2024/10/30 23:19:15/

在之前的《一文读懂分布式存储》文章中,我们介绍了什么是分布式存储。

但谈到存储,安全就是一个绕不开的话题。

没有数据安全的存储毫无意义。

所以数据保护技术对于分布式存储来说非常重要。

▉ 为什么需要数据保护?

数据显示,硬盘在存储实际使用过程中年故障率一般在2%上下,这意味着100块硬盘中,平均每年会有2块盘出现故障,硬盘的故障率是非常高的。

而且根据浴缸曲线,硬盘在刚上线时和36个月后故障风险更大,远高于理论故障率。

并且,分布式存储与传统的集中存储不同,分布式存储是通过增加存储节点来提升存储性能和容量的。越多的存储节点意味着风险越高,所以更需要数据保护策略来保护数据的安全。

目前,分布式存储的数据保护方式多采用多副本和纠删码技术。

▉什么是多副本和纠删码? 

数据保护大家一定不陌生,例如我们之前经常会提到的RADI技术,就是传统集中存储硬盘数据保护经常用到的数据保护技术。

分布式存储不同于传统的集中存储,它采用无中心的组网方式,每个存储节点都可以同时提供计算和存储资源,实现更灵活的扩展性和更大的存储规模。传统的RAID在分布式存储数据保护过程中也遇到了瓶颈,所以就出现了多副本和纠删码等新的数据保护技术方式。

那么今天我们聊聊什么是多副本和纠删码技术?

多副本,顾名思义就是多个数据副本,简单来说就是一个数据拷贝多份完全一样的副本,分别存放在多个不同节点上。当某个副本丢失时,可以通过另一个副本复制恢复数据。

以三副本为例,如上图,我们要保存A这个数据,并不是只保存单独这个数据,而是需要先将A这个数据拷贝成3份,然后分别放到1、3、4上,这个存储是随机的,下一个B数据有可能就放在节点1、2、4上了。

接下来我们来看下纠删码,纠删码的英文全称是Erasure Code,有时我们也会简称为EC。纠删码顾名思义是一种纠正数据丢失的校验码,简单理解可以把它类比成一个我们上学时候学的方程组。

例如,如果知道4个数a、b、c、d,就可以通过2个不同的公式算出2个校验数据x和y,把6个数据一起保存起来,那么当a、b、c、d其中1个或2个数据丢失的话,就可以通过剩余的2个值和计算公式,反推出丢失的2个数据。

▉ 对存储节点有啥要求?

多副本和纠删码对分布式存储的节点数量和硬盘配置都有一定要求。例如多副本,N个副本至少需要N个节点才能部署,比如3副本至少需要3个存储节点。

而纠删码则是M+N纠删码至少需要(M+N)个节点,比如4+2纠删码至少需要6个节点。

当然这些只是最低要求,上限并没有限制,另外也不会有倍数比例的要求,比如3副本并不要求一定是6个、9个节点,5个、7个节点也可以。

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

▉ 多副本和纠删码哪个好?

那么我们在做分布式存储的时候是应该选择多副本的方式还是纠删码的方式呢?这个主要看你的业务需求,多副本和纠删码在不同的应用场景下有各自的优势。我们来分不同方面看下:

1.得盘率

得盘率直接关系到企业的支出成本。比如双份本的得盘率只有50%,冗余多虽然很高,但是这带来了巨大的额外存储空间消耗,无形中提升了企业的成本。三副本的得盘率是66.6%,这也是很多人选择三副本的原因,相对安全,读写也能保证。

纠删码技术不需要完整写入真实数据的副本,通过纠删码算法将原始的数据进行编码得到冗余,并将数据和冗余一并存储起来,以达到容错的目的。磁盘利用率为m/(m+n),以纠删码(4+2)为例,得盘率也是66.6%,

整体来说,纠删码技术与副本方法相比具有磁盘利用率更高。

2.容错性

多副本方面,N副本技术可以允许N-1个节点同时故障数据不丢失。如果是硬盘故障,只要故障硬盘的范围不超过N-1个节点,数据也不会丢失。例如,2副本允许1个数据节点出现故障,三副本可以允许2个数据节点出现故障。

和多副本一样,纠删码对损失的数据分块内容有要求。比如m+n块的元素,当其中任意的n块元素出错(包括原始数据和冗余数据)时,均可以通过对应的重构算法恢复出原来的m块数据。如果大于n后,就恢复不了数据。如(4+2)纠删码只能丢失2个数据分片才能恢复。

3.重构性能

双副本下,一个节点或者数据块故障,数据恢复直接从另一个副本读取、写入,一次进行恢复副本,影响一个节点的读取性能。三副本的情况下,最多影响两个节点的读取性能。

纠删码设置 (4+2)情况下,一个节点或者数据块故障,数据恢复需要读取三个数据块和两个校验,通过运算后写入一次进行数据恢复,影响5个节点的读取性能。恢复效率较低。

4.写惩罚

双副本下,某个节点的一次数据写入,实际需要两个节点参与(写入两次),写惩罚为 2。三副本情况下,最多需要三个节点参与,写惩罚为3。

纠删码设置 (4+1)情况下,一次数据写入,实际需要至少三个节点参与,其中读取两次(读取数据,读取校验),写入两次(写入数据,写入校验),写惩罚为4。如果是纠删码设置 (4+2)情况下,写惩罚最小为6。

5.CPU开销

无论是双副本还是三副本,都是是基于数据完整复制,几乎没有计算的开销,对 CPU 开销较低。

纠删码由于读写都需要计算校验值,有较高的计算开销,需要额外的 CPU 资源开销。

好了,说了这么多,我将上面的信息总结成一张表格:

▉ 到底怎么用?

选择两种数据保护方式,就需要根据业务情况因地制宜。

多副本技术可以更好的保证数据的安全性,提升读写效率。一般适用于关键业务,对性能要求比较高,网络对数据出错容忍度极低的业务,如数据库等。

纠删码则可以提高存储系统利用率,降低成本。一般适用于其他非关键性业务,如视频、影像存储等海量存储场景,部分数据块的损坏不会影响信息的传递。

END


http://www.ppmy.cn/news/470732.html

相关文章

毕业设计记录-FM调频计算过程记录

2022.1.9的记录: 今天和朋友在客厅用电视大屏幕一起玩双人成行,好开心啊。但也不能忘了毕设。记录一下没怎么看过的FM。

通信原理FM直接调频实验

通信原理FM直接调频实验 系统框图 基带信号1V 10hz 基带信号频谱 FM信号波形1V 200Hz 50Hz/V 疏密相间的等幅波形 注意:此处我们fm信号调制器的频率要大于基波信号的频率 FM信号频谱 带通滤波 输出波形 注意:我们滤掉了直流&…

支持还是禁用,你如何看待FM调频功能

在这个智能手机泛滥式普及的今天,几乎每个年轻手中又都一个自己的智能机,随着技术的发展,功能越来越多,网速越来越快的智能手机也在我们的日常生活中发挥着越来越大的作用。 但是,其实智能手机中的各项功能也不是只有增…

使用AD9361实现FM调频接收机接受广播

最近研究zedboardad9361平台的软件无线电。ADI官网提供了很详细的例程,https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz 今天试了一下利用AD9361接受调频广播的功能。 1.首先将发射通道在iio_debug中关闭,就是将0x002寄存器的值写为…

基于multisim的fm调制解调_基于Multisim的FM调频与鉴频电路设计与仿真

基于Multisim的FM调频与鉴频电路设计与仿真 师范学院电气信息工程学院2014届通信工程专业课程设计报告课程设计报告题 目基于Multisim的FM调频与鉴 频电路设计与仿真 学生姓名 学生学号 系 别 电气信息工程学院 专 业 通信工程 届 别 2014届 指导教师 * 电气信息工程学院制201…

LimeSDR的LabVIEW编写FM调频接收机,采用DLL方法,(非NI-USRP方式,)

前几天搞了一下用labview编写FM接收机,但是采用的是模拟NI-USRP的方式,非常不方便,很多limeSDR的控制都控制不了,,还死慢的,于是在想用labview应该还有更简单的方法。 (代码以上传至&#xff1…

全国各地城市FM调频电台频率列表(上海北京广州深圳长沙武汉重庆)

长沙 [FM] CH00 08760,中央电台经济之声 CH01 10770,中央电台音乐之声 CH02 08930,湖南电台音乐频道 CH03 10220,长广星空调频 CH04 09550,金鹰之声电台 CH05 10280,湖南电台卫星频道 CH06 10170,长沙城市之音 CH07 09180,湖南电台交通频道 CH08 10500,长沙电台星沙之…

arduino使用oled代码_用 Arduino 制造一台 FM 调频收音机

这是一个基于 Arduino 的开源的收音机项目,它具备一台标准收音机的全部功能,从控制部分到外壳都可以自己 DIY。在项目中,我们将介绍让 FM 收音机调谐器的 RDA5807 模块与 I2C 协议进行通信的方法,整个过程只需要两根线就可以与 IC 通信,接线非常简单。3D 打印的外壳也非常…