单机存储的容错机制:一文搞懂所有 RAID 级别的原理、性能、应用场景

您所在的位置:网站首页 raid1恢复数据应该在哪个界面 单机存储的容错机制:一文搞懂所有 RAID 级别的原理、性能、应用场景

单机存储的容错机制:一文搞懂所有 RAID 级别的原理、性能、应用场景

2024-07-09 09:13| 来源: 网络整理| 查看: 265

文章目录 RAID基本概念级别RAID 0RAID 1RAID 2RAID 3RAID 4RAID 5RAID 6 组合RAID 0+1RAID 10RAID 50 总结

RAID 基本概念

由 D. A. Patterson 在论文 A Case for Redundant Arrays of Inexpensive Disks (RAID) 中提出,感兴趣的可以看看。

RAID(Redundant Array of Independent Disks)即独立磁盘冗余阵列,是一种数据存储虚拟化技术,通过将多个物理磁盘驱动器组件组合到一个或多个逻辑单元中,以达到获取大容量、高性能、容错等目的。

根据实现方式不同,RAID 可以分为以下两种形式:

软件 RAID:通过内核设备驱动(如 mdadm)实现,通过 OS 实现所有的计算和 I/O 逻辑,CPU 开销较高,且可靠性低。优点是可灵活调整 RAID 配置、级别;成本低。

硬件 RAID:通过硬件设备(如 RAID 卡)实现,有专门的控制器、I/O 处理芯片,性能较高,且有缓存、错误校验、热备等功能,缺点是成本较高。

硬件辅助:也叫做半软半硬 RAID,通过主板集成 RAID 或一些最基本的 RAID 卡加上厂商提供的驱动实现。虽然自身能负责 I/O 操作,蛋由于没有独立的处理器、缓存等,计算逻辑仍需要占用 CPU 资源,属于成本与性能的折中方案。

在介绍 RAID 的各个级别之前,还需要介绍几个核心概念:

条带化:一种数据存储方式,即将数据分割为连续的条带(可以按块、字节、位等各种粒度),并将这些条带分布到多个磁盘中。校验:在 RAID 的不同级别中分别用到了不同的校验算法,例如 RAID 2 的海明码,RAID 3~6 的奇偶校验,RAID 6 的 RS 校验。 奇偶校验: 原理:添加一个额外的校验位,当前数据位中为 1 的位数为奇数时则写入 1,偶数则写入 0。通过对比写入前后 1 的数量判断数据是否被篡改。XOR 校验:RAID 中通常以 XOR 校验的方式实现,即将所有数据位进行异或后得到一个校验位,写入前后对比校验位的数值,即可判断数据是否被变更。⚠️ 注意:奇偶校验只能感知单个位错误, XOR 校验只能感知奇数个位错误。它们只能感知,无法纠正。 海明码(Hamming): 原理:海明码是奇偶校验的一种变形,即生成多个 XOR 校验位(假设数据有 m 位,校验码有 r 位,需满足 2^r >= m + r + 1)并将其穿插在数据位(通常为 2N 位)中,确保能覆盖到每一个位。⚠️ 注意:当只有单个位错误时,海明码可以感知并纠正错误,但如果有 2 位错误时则只能感知到(更多的时候可能感知异常)。 RS 校验码(Reed-Solomon):由于逻辑较为复杂这里就不过多介绍,感兴趣的可以看看往期博客 分布式存储中常见的容错机制:多副本、纠删码(RS、LRC、SHEC)。

级别

在 A Case for Redundant Arrays of Inexpensive Disks (RAID) 中定义了 RAID 1 ~ RAID 5 原始 RAID 等级,随着 RAID 技术的发展,又衍生出了 RAID 0、RAID 6。(不包括 RAID 7,其目前仍未被纳入 RAID 标准,仅有小部分厂商使用)

RAID 0

RAID 0 基于块级条带化原理,将数据分割成块,并均匀分布在各个磁盘上。此时存储空间为最小的磁盘容量 * 磁盘数量,理论读写速率为单块盘读写速度 * 磁盘数量。

在这里插入图片描述

RAID 0

容错:无容错,单盘故障则整体不可用。性能:无计算逻辑+块级条带化,确保了较高的读写性能。空间利用率:1 。应用场景:高速读写、不需要容错的场景,例如一些弱状态存储或高性能计算。

RAID 1

RAID 1 基于镜像来实现数据冗余,将数据同时写入主磁盘和镜像磁盘中,读取时会根据负载均衡策略选取读取的磁盘(取决于 RAID 控制器实现)。当某块磁盘故障时,可自动切换到剩余磁盘上进行读写,不需要同步数据。

在这里插入图片描述

RAID 1

容错:基于镜像保证了较高的容错,系统中只要有一块盘可用,数据就不会丢失。性能:读取时负载均衡,性能略微提升。写入时需要同时写入多块盘,且要在结束后对比数据,速度取决于最慢的磁盘。空间利用率:1 / N应用场景:适用于安全性较高,且随机读取较多的场景,例如金融数据库、电商交易等。

RAID 2

RAID 2 基于位级条带化技术,将数据按位拆分到不同数据盘中,并通过海明码算法生成校验码,写入到各个校验盘中(序号从 0 开始,第 2N 块磁盘即为校验盘)。

在这里插入图片描述

RAID 2

容错:基于海明码保障了较高的可用性,最多可容忍 N - 1 块盘故障。性能:基于位级条带化,连续读性能高,随机读性能低。由于每次写入都要计算复杂的海明码,写入性能较低。空间利用率:(N - floor(log2N) - 1) / N应用场景:由于空间利用率较低,海明码计算开销较高(且现代磁盘中已内置错误校验),因此 RAID 2 现在几乎不再使用。

RAID 3

RAID 3 基于字节级条带化技术,并通过奇偶校验生成校验码到一个专门的检验盘中。相比较于 RAID 2,空间节省了很多,但由于所有读写都要经过校验盘,仅此整体性能可能会被校验盘性能限制。 在这里插入图片描述

RAID 3

容错:基于奇偶校验确保可用性,仅能容忍单块盘故障。性能: 按照字节级条带化,理论连续读性能仅次于位级。由于每次写入时都需要写入校验数据,因此整体性能可能被校验盘限制,且当数据盘出现故障,需要通过读取校验盘恢复数据,此时会导致整体写入性能降低。 空间利用率:(N -1) / N应用场景:适用于需要保证一定容错且数据连续传输的场景,例如音视频处理、大规模数据迁移/备份等。

RAID 4

RAID 4 与 RAID 3 原理基本相同,区别在于采用了块级条带化,在读写时只需要操作单个数据盘和校验盘。相比较于 RAID 3,提高了数据操作的粒度,此时所有盘都可以独立的读写数据,因此随机读写性能提升,但同时也导致连续读取性能降低。

在这里插入图片描述

RAID 4

容错:基于奇偶校验确保可用性,仅能容忍单块盘故障。性能:块级条带化后随机读性能提升,但与 RAID 3 一样性能仍然受限于校验盘,且单盘故障会影响其他盘。空间利用率:(N -1) / N应用场景:适用于需要保证一定容错且大规模随机读取的场景,但由于性能受限于校验盘,因此通常使用更均衡的 RAID 5 替代。

RAID 5

RAID 5 在 RAID 4 的基础上再次进行改进,此时校验数据不再单独写入一个盘中,而是均匀分布在所有的盘中。此时整体性能不再被校验盘约束,但数据恢复时由于校验数据分布在各个盘上,因此单盘故障会导致整体系统缓慢。

在这里插入图片描述

RAID 5

容错:基于奇偶校验确保可用性,仅能容忍单块盘故障。性能:块级条带化后随机读性能高,且不再受限于校验盘瓶颈,但单盘故障仍然影响整体。空间利用率:(N -1) / N应用场景:适用于需要保证一定容错且大规模随机读取的场景,例如数据分析、数据库、存储等,是当前最为主流的方案。

RAID 6

RAID 6 则在 RAID 5 的基础上引入了双重校验的概念,即同时采用两种校验算法,生成两种不同的校验块。此时就可以允许同时有两块盘出现故障。(校验块可能有独立盘,也可能均匀分布在数据盘)

由于当前 RAID 6 并未统一标准(算法不同,校验块位置不同),所以只要支持两种校验算法,同时允许两块盘失效的都统称 RAID 6。常见的实现如下:

RAID DPRAID P+QRAID ADG

这里以最为主流的 RAID P+Q 为例,其同时使用了奇偶校验和 RS 校验,并将校验数据分散到各个数据盘中为例:

在这里插入图片描述

RAID 6

容错:基于双重校验保可用性,可同时允许两块盘故障。性能:读性能高,但由于校验逻辑复杂导致写性能极低,且磁盘故障恢复时对整个系统的影响更大。空间利用率:(N -2) / N应用场景:适用于需要保证一定容错且大规模随机读取的场景,例如数据分析、数据库、存储等,是当前最为主流的方案。

组合

在上面分别介绍了 7 种不同的 RAID 级别,除了独立使用外,还可以将其进行组合,生成新的磁盘阵列例如 RAID 00、 RAID 01、 RAID 10 、 RAID 100、 RAID 30、 RAID 50、RAID 53、 RAID 60。由于其中大部份仅应用于固定场景,这里就以最为主流的 RAID 0+1、10、50 举例说明。

RAID 0 速度最快,唯一的缺点就是没有容错,因此通常我们会将 RAID 0 与其他具有容错的级别进行组合。

RAID 0+1

RAID 0 + 1 结合了 RAID 0 和 RAID 1 的特点,先将磁盘组成 N / 2 对 RAID 0,再将这些 RAID 0 组成一个 RAID 1。由于可用容量恒定为 单 RAID 0 大小,因此通常只会使用 4 块盘组成 RAID 0 + 1。

在这里插入图片描述

RAID 0+1

容错:一级 RAID 1 确保容错,可容许 N / 2 - 1 个 RAID 0 同时故障。性能:二级 RAID 0 确保较高的性能,但如果任意一个磁盘故障则会引起单 RAID 0 不可用,并且会尝试从其他 RAID 0 中修复数据,此时会造成系统整体性能下降(因此当使用 RAID 0+1 时需要及时修复坏盘)。空间利用率:2 / N。应用场景:适用于高性能、高安全性的场景,例如实时数据分析。

RAID 10

RAID 10 与 RAID 0+1 刚好相反,其先组成 N / 2 个 RAID 1,再将这些 RAID 1 组成一个 RAID 0。 这样做虽然牺牲了一部份性能,但容量不再恒定,且单盘故障只会影响单 RAID 的性能。

在这里插入图片描述

RAID 10

容错:二级 RAID 1 确保容错,最多支持 N 个不同 RAID 1 中的一块盘同时故障。性能:整体性能比 RAID 0+1 略低,但单盘故障只会影响对应的 RAID 1,不再影响整个系统。空间利用率:1 / 2。应用场景:适用于大数据量、高安全性的场景,例如金融、企业级数据库。

RAID 50

RAID 50 同理,首先组成 N / 2 个 RAID 5,再将这些 RAID 5 组成一个 RAID 0。 比起单 RAID 5,这样不仅提升了读性能,容错、故障恢复的能力也得到了提高,最大的缺点就是成本太高。 在这里插入图片描述

RAID 50

容错:二级 RAID 5 确保容错,最多支持 N 个不同 RAID 5 中的一块盘同时故障。性能:RAID 5 的完美提升。空间利用率:(N -2) / N应用场景:好是好,就是太贵。 应用场景与 RAID 5 相同,例如一些高性能数据库、存储服务。

总结 级别机制容错随机读顺序读随机写顺序写最小磁盘数空间利用率RAID 0块级条带无>=1N>=1N21RAID 1镜像N>=1N1121 / NRAID 2位级条带+海明码1>=1N1=1N>=1N3(N -1) / NRAID 4块级条带+奇偶校验(校验盘)1>=1N1=1N / 241 / 2RAID 50RAID 5 + RAID 0N / 3>=12 * N / 312 * N / 36(N -2) / N 这里的 N 指磁盘数量。这里的性能指的是理论性能,1 为单块磁盘的标准,N 为多块盘并发读/写带来的理论 N 倍提升。= 代表在某些场景下性能略微提高。其中 RAID 0、RAID 1、RAID 5、RAID 10 是当前使用最多的几个。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3