
# RAID概述
#### 什么是RAID
RAID的中文名称为：独立硬盘冗余阵列（RAID，Redundant Arrays of Independent Disks），简称磁盘阵列。
其核心思想是将多块磁盘通过RAID控制器结合成虚拟的单块大容量磁盘使用，从而提供比单个磁盘更高的存储性能、更高的I/O性能及可靠性。
#### RAID相关特性及概念
| 特性/概念    | 解释                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|
| 磁盘组和虚拟磁盘 | 由于现代数据中心业务量的与日俱增，单台服务器上需要运行的数据也日益增多。当单个磁盘在容量和安全性上不足以支持系统业务时，就需要将多个磁盘联合起来，对外作为一个可见的磁盘来使用，才可满足实际需要。磁盘组，就是将一组物理磁盘集合起来，作为一个整体对外体现，是虚拟磁盘的基础。 虚拟磁盘，即使用磁盘组划分出来的连续的数据存储单元，相当于一个个独立的磁盘，通过一定的配置，使其具有较单个物理磁盘更大的容量，及更高的安全性和数据冗余性。 一个虚拟磁盘可以是： - 一个完整的磁盘组。  - 多个完整的磁盘组。  - 一个磁盘组的一部分。  - 多个磁盘组的一部分（每个磁盘组划分一部分，共同组成虚拟磁盘）。   |
| 容错       | 容错是指在系统出现磁盘错误或磁盘故障时，可以保证数据完整性和数据处理能力。RAID卡通过冗余的磁盘组在RAID 1、5、6、10、50、60上实现此功能。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 一致性校验    | 针对有冗余功能的RAID 1、5、6、10、50、60，RAID卡可以对RAID组的硬盘数据进行一致性检查，对磁盘数据进行检验和计算，并与对应的冗余数据进行比较。如果发现有数据不一致的情况，会尝试做自动修复并保存错误信息。 由于RAID 0不具备冗余性，因此不支持一致性校验。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 磁盘条带化    | 当多个进程同时访问一个磁盘时，可能会出现磁盘冲突。大多数磁盘系统都对访问次数（每秒的I/O操作）和数据传输率（每秒传输的数据量）有限制。当达到这些限制时，后面需要访问磁盘的进程就需要等待。 条带化是一种自动的将I/O的负载均衡到多个物理磁盘上的技术。条带化技术将一块连续的数据分成多个小部分并将其分别存储到不同磁盘上去。这就能使多个进程同时访问数据的多个不同部分而不会造成磁盘冲突，而且在需要对这种数据进行顺序访问的时候可以获得最大程度上的I/O并行能力。                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 磁盘镜像     | 磁盘镜像，适用于RAID 1和RAID 10，是指执行写数据的任务时，会将同样的数据同时写入两块磁盘，以实现100%的数据冗余度。由于两块磁盘上的数据完全相同，当一块磁盘故障时，数据不会丢失。另外，同一时间，两块盘上的数据是完全相同的，当一块磁盘故障时，另一块盘可以马上接替故障盘的工作。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 硬盘直通     | 硬盘直通，即"JBOD"功能，又称指令透传，是不经过传输设备处理，仅保证传输质量的一种数据传输方式。 打开硬盘直通功能后，RAID控制器可对所连接的硬盘进行指令透传，在不配置虚拟磁盘的情况下，用户指令可以直接透传到硬盘，方便上层业务软件或管理软件访问控制硬盘。 例如，服务器操作系统安装过程中，可以直接找到挂载在RAID卡下的硬盘作为安装盘；而不支持硬盘直通的RAID卡，在操作系统安装过程中，只能找到该RAID卡下已经配置好的虚拟磁盘作为安装盘。                                                                                                                                                                                                                                                                                                                                                                                              |
   
#### 常用的RAID级别
- RAID 0 RAID 0又称为条带化（Stripe）或分条（Striping），代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个硬盘上存取。这样，当系统有数据请求时就可以在多个硬盘上并行执行，每个硬盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽，显著提高硬盘整体读写性能。但由于其没有数据冗余，无法保护数据的安全性，只能适用于I/O要求高，但数据安全性要求低的场合。
  图1RAID 0数据存储原理   
  ![](https://support.huaweicloud.com/usermanual-bms/zh-cn_image_0143322056.png "点击放大") 
- RAID 1 RAID 1又称镜像（Mirror或Mirroring），即每个工作盘都有一个镜像盘，每次写数据时必须同时写入镜像盘，读数据时同时从工作盘和镜像盘读出。当更换故障盘后，数据可以重构，恢复工作盘正确数据。RAID 1可靠性高，但其有效容量减小到总容量一半以下，因此常用于对容错要求较高的应用场合，如财政、金融等领域。
  图2RAID 1数据存储原理   
  ![](https://support.huaweicloud.com/usermanual-bms/zh-cn_image_0143322142.png "点击放大") 
- RAID 5 RAID 5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。为保障存储数据的可靠性，采用循环冗余校验方式，并将校验数据分散存储在RAID的各成员盘上。当RAID的某个成员盘出现故障时，通过其他成员盘上的数据可以重新构建故障硬盘上的数据。RAID 5既适用于大数据量的操作，也适用于各种小数据的事务处理，是一种快速、大容量和容错分布合理的磁盘阵列。
  图3RAID 5数据存储原理   
  ![](https://support.huaweicloud.com/usermanual-bms/zh-cn_image_0143322225.png "点击放大")
  其中，PA为A0、A1和A2的奇偶校验信息，PB为B0、B1和B2的奇偶校验信息，以此类推。
  
- RAID 6 在RAID 5的基础上，RAID 6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法，数据的可靠性非常高，即使两块磁盘同时失效也不会影响数据的使用。但RAID 6需要分配给奇偶校验信息更大的磁盘空间，相对于RAID 5有更大的"写损失"，因此"写性能"较差。
  图4RAID 6数据存储原理   
  ![](https://support.huaweicloud.com/usermanual-bms/zh-cn_image_0143322273.png "点击放大")
  其中，PA为A0、A1和A2的第一个校验信息块，QA为第二个校验信息块；PB为B0、B1和B2的第一个校验信息块，QB为第二个校验信息块，以此类推。
  
- RAID 10 RAID 10是将镜像和条带进行两级组合的RAID级别，即RAID 0＋RAID 1的组合形式，第一级是RAID 1，第二级是RAID 0。RAID 10是存储性能和数据安全兼顾的方案。它在提供与RAID 1一样的数据安全保障的同时，也提供了与RAID 0近似的存储性能。
  图5RAID 10数据存储原理   
  ![](https://support.huaweicloud.com/usermanual-bms/zh-cn_image_0143322323.png "点击放大") 
- RAID 50 RAID 50被称为镜像阵列条带，即RAID 5 + RAID 0的组合形式。像RAID 0一样，数据被分区成条带，在同一时间内向多块磁盘写入；像RAID 5一样，也是以数据的校验位来保证数据的安全，且校验条带均匀分布在各个磁盘上。
  图6RAID 50数据存储原理   
  ![](https://support.huaweicloud.com/usermanual-bms/zh-cn_image_0143376725.png "点击放大")
  其中，PA为A0、A1和A2的奇偶校验信息，PB为B0、B1和B2的奇偶校验信息，以此类推。
  
- RAID 60 RAID 60同RAID 50类似，数据采用镜像阵列条带分布方式，即RAID 6 + RAID 0的组合形式。像RAID 0一样，数据被分区成条带，在同一时间内向多块磁盘写入；像RAID 6一样，以两个数据校验模块来保证数据的安全，且校验条带均匀分布在各个磁盘上。
  图7RAID 60数据存储原理   
  ![](https://support.huaweicloud.com/usermanual-bms/zh-cn_image_0143378117.png "点击放大")
  其中，PA为A0、A1和A2的第一个校验信息块，QA为第二个校验信息块；PB为B0、B1和B2的第一个校验信息块，QB为第二个校验信息块，以此类推。
  
 
#### 各RAID级别性能对比
| RAID级别  | 需要磁盘数                                                        | 容错能力                                                                                                                                                             | IO性能                                                                                                      | 存储容量                    | 存储容量利用率    |
|:---|:---|:---|:---|:---|:---|
| RAID 0  | 下限：1 上限：RAID卡型号不同，支持的最大数量不同。 | 不提供容错功能。任意一个成员盘出现故障，都会导致数据丢失。通过条带化方式同时在多个成员盘中写入数据。RAID 0对于需要高性能但不需要容错的应用场景非常理想。                                                                                  | 提供优异的性能。RAID 0将数据分割为较小的数据块并写入到不同的磁盘中，由于可以同时对多个磁盘进行读写，RAID 0提升了IO性能。                                       | 成员盘最小容量 x 成员盘个数         | 100%       |
| RAID 1  | 2                                                            | 提供100%的数据冗余能力。当一个成员盘故障时，可以使用RAID组中对应的其他磁盘的数据来运行系统，并重构故障盘。因为一个成员盘的内容会完全备份写入另一个磁盘，所以如果其中一个驱动器出现故障，则不会丢失任何数据。成对的成员盘在任何时候都包含相同的数据。RAID 1组是需要最大容错能力和最小容量要求的应用场景的理想选择。 | 由于RAID组中的硬盘都是成对出现，写数据时也必须同时写入2份，从而占用更多的时间和资源，导致性能降低。                                                      | 成员盘最小容量                 | 50%        |
| RAID 5  | 下限：3 上限：RAID卡型号不同，支持的最大数量不同。 | 结合了分布式奇偶校验和磁盘条带化。奇偶校验在不需要备份全部磁盘内容的情况下，为1个磁盘提供了冗余特性。当一个成员盘故障时，RAID卡使用奇偶校验数据来重建所有丢失的信息。RAID 5使用较小的系统开销为系统提供了足够的容错能力。                                               | 提供了较高的数据吞吐能力。由于成员盘上同时保留常规数据和校验数据，每个成员盘都可以独立读写，再加上完善的Cache算法，使得RAID 5在很多应用场景中都有出色的性能表现。                    | 成员盘最小容量 x ( 成员盘个数 - 1 ) | (N-1)/N    |
| RAID 6  | 下限：3 上限：RAID卡型号不同，支持的最大数量不同。    | 结合了分布式奇偶校验和磁盘条带化。奇偶校验在不需要备份全部磁盘内容的情况下，为2个磁盘提供了冗余特性。当一个成员盘故障时，RAID卡使用奇偶校验数据来重建所有丢失的信息。RAID 6使用较小的系统开销为系统提供了足够的容错能力。                                               | 在需要高可靠性、高响应率、高传输率的场景下，RAID 6是较为适合的RAID级别，其提供了高数据吞吐量、数据冗余性和较高的IO性能。由于RAID 6需要为每个成员盘写入2套校验数据，导致其在写操作期间性能降低。 | 成员盘最小容量 x ( 成员盘个数 - 2 ) | (N-2)/N    |
| RAID 10 | 下限：4 上限：RAID卡型号不同，支持的最大数量不同。   | 使用多个RAID 1提供完整的数据冗余能力。RAID 10对所有需要通过镜像磁盘组提供100%冗余能力的场景都适用。                                                                                                       | 由RAID 0子组提供高数据传输率的同时，RAID 10在数据存储方面表现优异。IO性能随着子组数量的增加而提升。                                                 | 成员盘最小容量 x 成员盘个数 / 2     | 50%        |
| RAID 50 | 下限：6 上限：RAID卡型号不同，支持的最大数量不同。  | 使用多个RAID 5的分布式奇偶校验提供数据冗余能力。在保证数据完整性的情况下，每个RAID 5分组允许1个成员盘故障。                                                                                                     | 在需要高可靠性、高响应率、高传输率的场景下，RAID 50表现最好。IO性能随着子组数量的增加而提升。                                                       | 子组容量 x 子组数              | (N-M)/N    |
| RAID 60 | 下限：6 上限：RAID卡型号不同，支持的最大数量不同。 | 使用多个RAID 6的分布式奇偶校验提供数据冗余能力。在保证数据完整性的情况下，每个RAID 6分组允许2个成员盘故障。                                                                                                     | 使用场景与RAID 50类似，但是由于每个成员盘必须写入2组奇偶校验数据，使得在写操作中性能降低，因此RAID 60不适用于大量写入任务。                                     | 子组容量 x 子组数              | (N-M\*2)/N |
   
![](https://support.huaweicloud.com/usermanual-bms/public_sys-resources/note_3.0-zh-cn.png)
子组数：子RAID的个数。例如RAID 50由两个RAID 5组成，则子组数为2。
N为RAID成员盘的个数，M为RAID的子组数。
