当前位置: 首页 > article >正文

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

文章目录

    • 0.简介
    • 1.RAID
      • 1.1 RAID 0
      • 1.2 RAID 1
      • 1.3 RAID 5
      • 1.4 RAID 6
      • 1.5 RAID 10
    • 2.EC(纠删码)
      • 2.1 概念
      • 2.2 原理
    • 3.多副本
    • 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有着更少的空间占用和更高的空间利用率。


http://www.kler.cn/a/536115.html

相关文章:

  • 无人机方位感知器官磁力传感器!
  • QUIC 与 UDP 关系
  • 8. k8s二进制集群之Kubectl部署
  • Linux 内核模块 | 加载 / 添加 / 删除 / 优先级
  • 使用git clone一个指定文件或者目录
  • html的字符实体和颜色表示
  • 计算机网络-SSH基本原理
  • 书籍《新能源汽车动力电池安全管理算法设计》和《动力电池管理系统核心算法》脑图笔记
  • Maven 构建命令详解
  • leetcode刷题日记 1
  • anaconda使用
  • apisix网关ip-restriction插件使用说明
  • Spring Boot实现多数据源连接和切换
  • Linux Windows macOS如何安装Ollama
  • QQ自动发送消息
  • TypeScript 快速上手 ------- 学习笔记分享
  • SMU winter 2025 Personal Round 2
  • RabbitMQ:windows最新版本4.0.5安装方案
  • Rust unresolved import `crate::xxx` 报错解决
  • C++11—可变参数模板
  • 【CS61A 2024秋】Python入门课,全过程记录P6(Week12 Interpreters开始,更新于2025/2/7)
  • 【HarmonyOS NEXT】设备显示白屏 syswarning happended in XXX
  • C++ 类和对象 详细版(上)
  • PT2021K 单触控同步输出 IC
  • Python爬虫-如何正确解决起点中文网的无限debugger
  • CF 278A.Circle Line