【杂项】磁盘阵列知识梳理

数据库课程要做关于磁盘阵列的视频,说实话感觉两者不搭,但也还是记录一下

引言

假如 a 数据都存在 A 盘里,b 数据都存在 B 盘里,A 盘读写数据的时候跟 B 盘一点关系都没有

这种传统的没有联系的磁盘关系用英文来讲就是 Just a bunch of disk,也被称为 JBOD 结构

翻译过来的意思为:只是一堆磁盘

这样当你传输数据的时候,除非同时用到两块盘的内容,否则总有一个盘是空闲的,也就造成了一部分磁盘性能的浪费

为了让所有磁盘都能物尽其用,就诞生了磁盘阵列这个技术

磁盘阵列

磁盘阵列在电脑当中被我们称之为 RAID

给多块磁盘组建完 RAID 以后,在电脑内就只会看到一个 RAID 的阵列盘,而看不到它的子磁盘

磁盘阵列的等级

目前行业公认的 RAID 等级为 0-7

不同 RAID 等级之间没有优劣之分,它们仅仅是不同功能的阵列

标准 RAID 等级

RAID 0

RAID 的工作原理类似于内存双通道,至少需要两块磁盘才能实现

它的工作原理就是把一个完整的数据拆分开以后分散到多块磁盘里去,写入的时候同时往多块磁盘内写入,读取的时候同时从多块磁盘读取

做到和内存双通道一样:带宽翻倍、速度翻倍的效果,一般来说,有几块儿磁盘就能翻多少倍的性能

但是这的性能指的是连续读写速度,并不是随机读写速度

RAID 0 是无法提高随机读写速度的,因为随机读写主要考验的就是硬盘的寻道和寻址能力,组建磁盘并不能改善这个性能

还有可能出现短板效应,导致在组 RAID 0 后,反而随机读写性能弱于单块磁盘的现象

RAID 0 是所有阵列里速度最快的,也是最不安全的

因为你的数据分散在多个磁盘里,任意一个磁盘出现了故障,你就无法正常读取这个数据,导致所有的数据全部报废

所以 RAID 0 是一把双刃剑:加的磁盘越多,读取速度就越快,数据也就越危险

RAID 1

RAID 1 又被我们成为镜像,至少需要两块磁盘才能实现

它的工作原理就是把一份完整的数据复制到其它的磁盘里去

假设有一个 RAID 1 由两块磁盘组成,那么在往这个 RAID 1 存储数据的时候,两块磁盘内都会存入一模一样的数据

所以 RAID 1 简单来讲就是自动备份

RAID 1 是所有阵列里最安全的,但是相应的它是空间利用率和速度最低的

RAID 2

RAID 2 是一种利用海明码校验的阵列,它主要的目的是在 RAID 0 的基础上增加数据纠错能力,这并不等于容灾

RAID 2 其数据的第 2 的 n 次方为校验文件,即 1、2、4、8、16、32... 位为用来纠错的校验码,其他位置上的数据为原始数据

假设你有一个四位编码的数据需要存储,那你需要七块磁盘:1、2、4 存放校验码,3、5、6、7 存放原始数据

假设你有一个八位编码的数据需要存储,那你需要七块磁盘:1、2、4、8 存放校验码,剩余的磁盘存放原始数据

所以大家可以发现对于 RAID 2 来说,你的编码数据位数越少,磁盘利用率越低

由于一次写入数据可以往多块存放数据的磁盘里写入,所以它具有和 RAID 0 比较相似的并发性能

但由于写入和读取都需要校验码,所以其性能开销比较大,因此使用 RAID 2 的人很少

RAID 3

RAID 3 的实现至少需要三块磁盘,它具有一定的容灾能力,但并不具有纠错能力

假设用三块磁盘组一个 RAID 0,这时候我们再增加一块磁盘,这个磁盘里面存放着前面三块磁盘的恢复码

在前面三块磁盘任意一个磁盘出现故障的时候,靠着剩下两个磁盘的数据加上恢复码,就可以恢复丢失磁盘的数据了

而恢复码的磁盘要是损坏了,也不会影响到前面三个磁盘

所以 RAID 3 相对于 RAID 0 来讲,容灾能力从零块增加到了一块,且性能非常接近

RAID 4

RAID 4 和 RAID 3 很像,只不过是按区块读写

假设 RAID3 和raid4都是 3 块数据盘加 1 块恢复盘,这时有一个文件被分成了三组,这三组数据需要分别存储到磁盘内

RAID3 就是第一组拆分(拆分成 3 块,分别存入 3 块数据盘)加上第一组恢复码,进行写入;

第二组拆分,加上第二组恢复码,进行写入;第三组拆分,加上第三组恢复码,进行写入

而 RAID 4 则是 1、2、3 组直接准备好,然后把 1、2、3 组的数据整体准备一个恢复码,再把三组数据和整体的恢复码写入进去

RAID 4 和 RAID 3 的区别就是:

RAID3 是将一个数据块拆分分开存,校验码也是针对拆分的这一部分去进行计算的

而 RAID 4 是直接按区块去进行存储,校验码是针对几个块一块是进行计算,其容灾能力也是一块磁盘

总的来说,RAID 4 每次的操作是所有盘,RAID 3 每次的操作是每个盘上的一段数据

RAID 5

因为 RAID 4 有制约,假如加的磁盘有很多,那么这些磁盘理应具有高速的读写性能

但恢复盘只有一个,就会导致这些磁盘的性能被这一块恢复盘所制约,无法提升

RAID 5 是每一块磁盘里都分别存储一部分恢复码,这样恢复码的写入操作就会被拆分,由多块磁盘共同来完成

这里校验码的下标分别为 A4、B3、C2、D1,为绿色的方块:

Image

当磁盘 3 发生故障时,由于 B1、B2、B4 没有损坏,所以不需要恢复这块数据

剩下的 A3、C3、D3 有损坏,就需要其他盘上的原始数据和校验码来进行恢复,如:用 A1、A2、A4 来恢复 A3

民用层面 RAID 5 是使用最多的一种磁盘 RAID

RAID 6

RAID 6 的恢复码相对于 RAID 5 从 1 组变成了 2 组,这时候如果你坏了 2 块磁盘,你的数据依旧可以找回

Image

RAID 7

RAID 组合等级

嵌套等级的名字由子 RAID 等级和总 RAID 等级的名字相组合而来

比如你拿了一堆 RAID 1,组合了一个 RAID 0,那么这个 RAID 的等级就叫 RAID 10

再比如你拿了一堆 RAID 5,组合了一个 RAID 0,那么这个 RAID 的等级就叫 RAID 50


参考链接

1
https://www.bilibili.com/video/av80240051?from=search&seid=152963681220640232
文章目录
  1. 1. 引言
  2. 2. 磁盘阵列
    1. 2.1. 磁盘阵列的等级
      1. 2.1.1. 标准 RAID 等级
        1. 2.1.1.1. RAID 0
        2. 2.1.1.2. RAID 1
        3. 2.1.1.3. RAID 2
        4. 2.1.1.4. RAID 3
        5. 2.1.1.5. RAID 4
        6. 2.1.1.6. RAID 5
        7. 2.1.1.7. RAID 6
        8. 2.1.1.8. RAID 7
      2. 2.1.2. RAID 组合等级
      3. 2.1.3. 参考链接
|