存储可靠性:从基于磁盘的RAID到分布式纠删码(EC),多副本

文章目录

    • 0.简介
    • 1.RAID
      • [1.1 RAID 0](#1.1 RAID 0)
      • [1.2 RAID 1](#1.2 RAID 1)
      • [1.3 RAID 5](#1.3 RAID 5)
      • [1.4 RAID 6](#1.4 RAID 6)
      • [1.5 RAID 10](#1.5 RAID 10)
    • 2.EC(纠删码)
      • [2.1 概念](#2.1 概念)
      • [2.2 原理](#2.2 原理)
    • 3.多副本
    • [4. 总结和优缺点比较](#4. 总结和优缺点比较)

0.简介

在选择数据存储方案时,一个绕不开的话题就是数据存储的可靠性(面对故障时的应对能力),本文对磁盘的RAID技术和现在分布式存储常用的纠删码(EC)和多副本的原理和优缺点进行详细的介绍。

1.RAID

RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。RAID技术主要分为几种不同的级别,以下是其不同级别及其特点的介绍:

1.1 RAID 0

RAID 0 又称为Striping(条带化),条带化意思是把各个磁盘的相同偏移量的一块空间横向进行分割,从而形成一块逻辑存储空间。数据按照条带来进行写入,即一条写满后再写下一条。一个卷可以有很多条条带组成。条带的划分应该的磁盘配置初级就完成。条带包含扇区(或块)的个数叫条带长度;每个磁盘内包含属于这个条带的扇区(或块)的个数叫条带深度。引入条带的原因是要解决单个磁盘一次只能同时并发一个IO和保证数据完整性。提高并发是通过条带的方式可以让多个磁盘一起协同完成任务来实现的,其结构如下,该层级一块磁盘破坏,数据完整性就被破坏了。

1.2 RAID 1

RAID 1 又称为Mirroring(镜像),它将数据完全复制到两个或多个磁盘上。这种方式提供了最高的数据安全性,但成本最高,并且存储效率只有50%(即,如果使用了两个磁盘,实际可用存储空间只有一个磁盘的容量),其读写特点也很明显,读快,写慢。

1.3 RAID 5

RAID 5结合了条带化和分布式奇偶校验。数据被分散到多个磁盘上,同时校验信息也被存储在这些磁盘上。如果任何一个磁盘出现故障,数据可以从其他磁盘和校验信息中恢复。RAID 5在性能和成本之间提供了较好的平衡。

1.4 RAID 6

与RAID 5类似,但提供了两个磁盘的容错能力。它使用两种不同方式的奇偶校验,因此可以承受两个磁盘的同时故障。

1.5 RAID 10

RAID 10又称为RAID 1+0,它是RAID 1和RAID 0的组合。数据先被镜像到两个磁盘组,然后这些组再被条带化。这种方式提供了非常高的性能和容错能力,但成本也相对较高。

2.EC(纠删码)

2.1 概念

EC纠删码(Erasure Coding)是一种高级数据保护技术,也称为纠删编码或前向纠错(FEC)编码。它主要用于分布式存储系统中,以提高数据的可靠性和存储效率。

2.2 原理

类似于RAID5中的思路,增加校验码来保证数据存储的可靠性,下面先来看一个4+2编码解码以及故障恢复的流程。

1)chunk:将数据进行分片,上图分成了四个片。

2)encode:根据四个数据分片,生成两个校验分片,也就是4+2结构。

3)故障:4+2允许坏两个片,图中是d2和c1损坏。

4)decode:根据剩余的四个片计算出原始块。

5)re-encode:根据原始块重新分成四个数据块并计算出校验块。

6)replace:将损坏的块进行替换。

上面比较关键的就是如何生成校验码和恢复数据,主要利用可逆矩阵去实现。

3.多副本

多副本比较容易理解,就是多份数据,类似于RAID1,其结构如下:

4. 总结和优缺点比较

以上介绍了从单机到分布式的数据可靠性保证方式,单机可以通过磁盘组合(RAID)的方式保证可靠性同时提高并发,而分布式可以通过多节点存储的方式(EC)或多副本去保证数据可靠性,其都能看到RAID的影子,只是将其扩展到多节点。

而两种分布式的方式而言,多副本有着更好的并发和对节点故障数量容忍更好;EC有着更少的空间占用和更高的空间利用率。

相关推荐
前端不太难1 天前
从本地到多端:HarmonyOS 分布式数据管理实战详解
分布式·状态模式·harmonyos
Yeats_Liao1 天前
MindSpore开发之路(二十五):融入开源:如何为MindSpore社区贡献力量
人工智能·分布式·深度学习·机器学习·华为·开源
我爱娃哈哈1 天前
SpringBoot + Seata + Nacos:分布式事务落地实战,订单-库存一致性全解析
spring boot·分布式·后端
掘金-我是哪吒2 天前
Kafka配套的Zookeeper启动脚本
分布式·zookeeper·云原生·kafka
超级种码2 天前
Kafka四部曲之一:Kafka的核心概念
分布式·kafka
Java 码农2 天前
RabbitMQ集群部署方案及配置指南09
分布式·rabbitmq
u0104058362 天前
基于 Kafka Exactly-Once 语义保障微信群发消息不重复不丢失
分布式·kafka·linq
超级种码2 天前
Kafka四部曲之二:核心架构与设计深度解析
分布式·架构·kafka
optimistic_chen2 天前
【Redis 系列】持久化特性
linux·数据库·redis·分布式·中间件·持久化
论迹2 天前
RabbitMQ
分布式·rabbitmq