RAID技术总结

独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),简称磁盘阵列。简单来说,RAID把多个硬盘组合成为一个逻辑扇区,因此,操作系统只会把它当作一个硬盘。

磁盘阵列比较表

RAID档次 最少硬盘 最大容错 磁盘利用率 读取性能 写入性能 安全性 目的 应用产业
0 2 0 100% n n 一个硬盘异常,全部硬盘都会异常 追求最大容量、速度 视频剪接缓存用途
1 2 n-1 1/n n 1 最高,一个正常即可 追求最大安全性 个人、企业备份
5 3 1 (n-1)/n n-1 n-1 追求最大容量、最小预算 个人、企业备份
6 4 2 (n-2)/n n-2 n-2 安全性较RAID 5高 同RAID 5,但较安全 个人、企业备份
10 4 n/2 50% n/2 n/2 安全性高,但在同一个子组群中不能出现两颗毁损硬盘 综合RAID 0/1优点,理论速度较快 大型数据库、服务器
50 6 n/m 1-1/m n-n/m n-n/m 安全性高,但在同一个子组群中不能出现两颗毁损硬盘 高可靠性、高读取速度 事务处理
  • n代表硬盘总数
  • m 代表 RAID 5 的组盘数量

特点总结

  • 读写性能最高:RAID 0
  • 磁盘利用率最低:RAID 1 (1/n)
  • 可靠性最高:RAID 1

常见RAID级别

RAID 0

RAID 0亦称为带区集。它将两个以上的磁盘并联起来,成为一个大容量的磁盘。

  • 读写速度最快:因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的;
  • 无冗余无容错:RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失。

RAID 1

两组以上的N个磁盘相互作镜像。在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。

  • 读写速度:在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID 0相同。写入速度有微小的降低;
  • 可靠性最高:只要一个磁盘正常即可维持运作;
  • 数据完全性最好:因为有镜像硬盘做数据备份;
  • 磁盘利用率最低:无论用多少磁盘做RAID 1,仅算一个磁盘的容量;
  • 不同大小磁盘的情况:如果用两个不同大小的磁盘建RAID 1,可用空间为较小的那个磁盘,较大的磁盘多出来的空间也可以分区成一个区来使用,不会造成浪费。

RAID 5

RAID 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。

  • RAID 5至少需要三个硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息分别存储于不同的磁盘上;
  • 可靠性:数据保障程度要比RAID 1低;
  • 读写速度:RAID 5具有和RAID 0相近似的数据读取速度,由于多一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,使用“回写缓存”可以让性能改善;
  • 磁盘利用率:RAID 5的磁盘空间利用率要比RAID 1高。因为多个数据对应一个奇偶校验信息;
  • RAID 5最多支持坏一块盘。

RAID 6

与RAID 5相比,RAID 6增加第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法。

  • RAID 6必须具备四个以上的磁盘才能生效。
  • 数据的可靠性:非常高,任意两块磁盘同时失效时不会影响数据完整性。
  • 通常通过硬件方式实现:RAID 6需要分配给奇偶校验信息更大的磁盘空间和额外的校验计算,相对于RAID 5有更大的IO操作量和计算量,因此其“写性能”强烈取决于具体的实现方案。
  • 磁盘利用率:可使用的容量为硬盘总数减去2的差,乘以最小容量。
  • 最多容许两个磁盘损坏。

RAID 10/01

RAID 10是先镜像再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。

RAID 01则是先分区再将数据镜像到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,并将两组硬盘各自视为RAID 0运作。

  • RAID 10有一个硬盘受损,其余硬盘会继续运作。
  • RAID 01只要有一个硬盘受损,同组RAID 0的所有硬盘都会停止运作,只剩下其他组的硬盘运作,可靠性较低。如果以六块硬盘建RAID 01,镜像后再用三块盘建RAID 0,那么坏一块硬盘便会有三个硬盘离线。
  • RAID 10远较RAID 01常用。

RAID 50

RAID 5与RAID 0的组合,先作RAID 5,再作RAID 0,也就是对多组RAID 5彼此构成Stripe访问。以RAID 50最小的6颗硬盘配置为例,先把6颗硬盘分为2组,每组3颗构成RAID 5,如此就得到两组RAID 5,然后再把两组RAID 5构成RAID 0。

  • RAID 50,至少需要6颗硬盘;
  • 数据可靠性:RAID 50在底层的任一组或多组RAID 5中出现1颗硬盘损坏时,仍能维持运作,不过如果任一组RAID 5中出现2颗或2颗以上硬盘损毁,整组RAID 50就会失效;
  • 读写性能:RAID 50由于在上层把多组RAID 5构成Stripe,性能比起单纯的RAID 5高;
  • 磁盘利用率:((n-m)/n),比RAID5((n-1)/n)要低。

Raid磁盘状态检查

1
2
3
4
5
6
7
8
9
10
yum -y install MegaCli.noarch

/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL

/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll

smartctl -d megaraid,1 -H /dev/sdc1

smartctl -s on -a -d megaraid,0 /dev/sdc1

  • 查看系统raid状态
    1
    ansible all -m shell -a "/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL |grep -i level" -i hosts

参考文档