知识扫盲-- RAID0,RAID1,RAID5,RAID6,RAID10简介

整理自youtube视频:

  1. https://www.youtube.com/watch?v=U-OCdTeZLac
  2. https://www.youtube.com/watch?v=UuUgfCvt9-Q&t=29s

如有错误,还请指正。

RAID(Redundant Arrays of Independent Drives),中文名:独立磁盘冗余阵列。

为什么要有RAID呢?

我们都是知道存在磁盘中的数据是有可能丢失的,通过RAID中的“冗余“功能,我们可以一定程度的解决这个问题。

RAID有好几种,每种功能不同,适用的场合不同,常见的RAID有5种,分别是RAID0,RAID1,RAID5,RAID6和RAID10,下面就分别来介绍一下这几种RAID,说下他们的功能以及优缺点。

1. RAID 0

RAID 0是RAID中稍微特殊的一类,因为它不仅不能缓和数据丢失的情况,反而加重了数据丢失难以恢复的情况。为什么会这样呢?先来看看它的原理,如下图:

可以看到,数据来了以后,兵分两路,同时写入到两块磁盘中,这意味着,任意一块磁盘损坏后,整个数据都会丢失。那RAID 0有啥用?当然是IO速度加快咯。你想想现在数据可以同时向两块磁盘里写,肯定比原来一块磁盘块嘛。而且理论上磁盘越多速度越快。当然数据丢失的风险也会增加。

  • 优点:io速度加快
  • 缺点:数据更易丢失

2. RAID 1

RAID 1也至少需要两块磁盘,原理图如下:

RAID 1的数据也是同时写入两块磁盘,与RAID0不同的是,RAID 1是将同一份数据分别写入到两块磁盘中。这样磁盘1相当于就是磁盘0的完全备份,当任一块磁盘损坏后,数据都不会受到影响。

现在我们来想想RAID1的优缺点:

  • 优点:可以有一份完整的磁盘备份,当其中一块磁盘损坏后,数据不至于丢失。
  • 缺点:假定我们使用了两块磁盘,那么就会损失50%的存储空间。

3. RAID 10

咱们先来说RAID10,之后再来谈RAID5和6。 RAID10,其实并不是10(十),他是1和0的结合体。也就是说,他综合了RAID0和RAID1。使用RAID10,我们至少需要4块磁盘,原理图如下:

数据来了以后,首先遇到的是RAID0,还记得RAID0的特点吗?数据可以从这里分流,同时写入到两个分流中去。(速度加倍)。为了保证数据不那么容易丢失,在RAID0之后,紧跟了RAID1,也就是说数据将在这里“备份”,复制出一份副本,然后分别将原数据和副本写入到RAID1下面的两块磁盘中。

优点:综合了RAID0和RAID 1的优点。

缺点: 和RAID1 一样,浪费了一半的空间。

4. RAID 5

RAID 5 是被广泛使用的一种RAID,它至少需要3张磁盘,存储图如下:

数据可被同时存入其中3块磁盘,其中一块磁盘用于存储辅助信息-- PARITY。同时可以观察到,PARITY的排布是有一定规律的,如果磁盘共有4块,并将磁盘阵列看成一个矩阵的话,它会以每一行左移位(右移位)出现。如第1行在第4列出现,第2行在第3列出现,以此类推(个人猜想是为了负载均衡,毕竟不这样排列,也能复原数据)。

当任一块磁盘出现崩溃,我们可以借助其余三块磁盘来复原它,如此重建数据。

那么它是如何重建数据的呢?首先得知道PARITY这个东西是什么。其实很简单,PARITY就是同一行其余数据求异或所得到的结果。如第一行:

$$ PARITY = A 异或 B 异或 C $$

如: A = 1 B = 0 C = 1, 那么PARITY = 0。

假设现在数据C丢失了。那么可通过异或将C重建。

$$ C = PARITY 异或 A 异或 B $$

在之类 A = 1, B = 0 , PARITY = 0。于是C = 0 异或 1 异或 0 = 1。

  • 优点:数据得到了一定的保障。
  • 缺点:损失了一块磁盘的存储容量。如果用4块磁盘来组RAID5, 那么浪费率为25%。

现在,我们在稍微延展一点,如果有两块磁盘都崩溃了呢?

sorry,RAID5没办法复原了。这意味着有两块磁盘崩溃,所有数据都没有了。于是产生了RAID6

5. RAID 6

RAID6和RAID5类似,但是它需要至少4块磁盘,且在一行中存储两个PARITY。如下图:

当然了,此时的PARITY可就没那么简单了。牵扯一定的域论知识,超出本文的探讨范围内。如果要想了解,可参考:

https://zh.wikipedia.org/wiki/RAID#RAID_6

  • 优点:很强的容错性,同时丢失两块磁盘,也可重建
  • 缺点: 容量浪费大,读速度等同于RAID5,但是写速度低于RAID5,因为要写入两个PARITY。
Last modification:August 7th, 2019 at 09:39 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment