简介

RAID早先的意思是廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),本意为使用多块硬件中较为廉价且效能增长较慢的磁盘组成阵列,用来提升计算机性能,同时实现容错、逻辑数据备份的功能。但后来发现,大量便宜磁盘组合并不能适用于现实的生产环境,而该技术得到了越来越广泛的应用后,各种生产环境的实现方案并不便宜。所以后来Inexpensive被改为independent,意为独立磁盘冗余阵列(Redundant Array of Independent Drives)。

目的

  • 提高IO能力:磁盘并行读写;

  • 提高耐用性:磁盘冗余来实现。

RAID级别

RAID的级别并不是说等级越高越好,而是表示多块磁盘组织在一起工作的不同方式。

RAID级别的实现方式主要有以下三种:

  1. 外接式磁盘阵列:通过扩展卡提供适配能力。(生产环境主要实现方式。)
  2. 内接式RAID:主板集成RAID控制器。(BIOS。)
  3. 软件实现RAID:通过系统自带模块或软件方式实现。(现网环境不推荐使用。)

RAID级别简介:

由于RAID的级别众多,下面只介绍几个常用的RAID级别。

-0:条带卷;

至少两块磁盘组成,将数据切割后,分别存入两个磁盘,读取时再从两个磁盘同时读取,提高了整体IO性能。

容量计算为:最小硬盘容量*硬盘个数。

优点:

  1. 读写新能提升。

缺点:

  1. 无容错能力。

最大磁盘容错:0。

RAID-1:镜像卷;

至少两块硬盘组成,将数据分别存入两个磁盘,读取时分别从两个磁盘读取,提高了容错能力。

容量计算为:最小硬盘容量。

优点:

  1. 读取性能提升;
  2. 良好的容错能力;
  3. 重建会更快。

缺点:

  1. 写入性能下降;
  2. 总容量减半;

最大磁盘容错:1。

RAID-4:奇偶校验;

针对RAID-0的优化,至少三块硬盘组成,数据分别存入两块盘,第三块盘存校验吗,以便进行数据恢复。

容量计算为:最小硬盘容量*(硬盘个数-1)。

优点:

  1. 读写性能提升;
  2. 有一定的容错能力。

缺点:

  1. 单块盘作为校验盘,访问压力较大,比较容易坏的同时,可能会影响性能。
  2. 目前不常用。

最大磁盘容错:1。

RAID-5:单磁盘分布式奇偶校验;

针对RAID-4的提升,至少三块硬盘组成,三块硬盘轮流当校验盘,减轻了校验盘的压力。

容量计算为:最小硬盘容量*(硬盘个数-1)。

优点:

  1. 读写性能提升;
  2. 容错能力提升。

缺点:

  1. 暂未发现。

最大磁盘容错:1。

RAID-6:双磁盘分布式奇偶校验;

至少由四块硬盘组成,相对于RAID-5,增加1个磁盘作校验盘,大大提高了容错能力。

容量计算为:最小硬盘容量*(硬盘个数-2)。

优点:

  1. 读写性能提升;
  2. 容错能力提升。

缺点:

  1. 暂未发现。

最大磁盘容错:2。

RAID-10:镜像+条带;

混合型用法,至少四块硬盘,先把硬盘两两RAID-1,然后再整体RAID-0

容量计算为:最小硬盘容量*硬盘数量/2。

优点:

  1. 读写性能提升;
  2. 有一定的容错能力。

缺点:

  1. RAID-1中的两块磁盘同时坏掉,整个组合将不可用。

最大磁盘容错:1-2。

RAID-01: 条带+镜像;

混合型用法,至少四块硬盘,先把硬盘两两RAID-0,然后再整体RAID-1

容量计算为:最小硬盘容量*硬盘数量/2。

优点:

  1. 读写性能提升;
  2. 有一定的容错能力。

缺点:

  1. 任意一块磁盘坏点,都将导致RAID-0不可用,只剩下其他组的硬盘在运行,可靠性较低。
  2. RAID-1下的RAID-0中各有一块磁盘坏掉,整合组合将不可用。

最大磁盘容错:1-2。

RAID-50:单磁盘分布式奇偶校验+条带。

至少六块硬盘,先把每三块硬盘组成RAID-5,再结合成RAID-0,相当于在RAID-5的基础上再次提升了性能。

容量计算为:最小硬盘容量*(硬盘个数-2)。

优点:

  1. 读写性能提升;
  2. 容错能力更佳。

缺点:

  1. 容量利用率稍低。

最大磁盘容错:3-4。

RAID-60:双磁盘分布式奇偶校验+条带。

至少八块硬盘,和RAID-50相似,容错能力进一步提升,但容量利用率也进一步降低。

JBOD

不是标准的RAID级别,但也属于磁盘阵列的一种。

JBOD把各磁盘进行串联,虚拟成一个大容量的磁盘,读写能力由各磁盘分别决定。

容量计算为:磁盘容量++

优点:

  1. 将小容量磁盘结合成大容量磁盘,适用于某些特殊情景。

缺点:

  1. 无容错能力。

最大磁盘容错:0。

实现方式

软件实现RAID

结合内核中的md(multi devices)模块实现。

实现工具:mdadm

命令语法格式:

支持的RAID级别:LINEAR(类似JBOD)RAID-0RAID-1RAID-4RAID-5RAID-6RAID10

模式(mode):

  • 创建:-C
  • 装配:-A(扫描磁盘原有的RAID模式,并重新合并成RAID使用);
  • 监控:-F
  • 管理:-f, -r, -a

-C 创建模式:

  • -n #:使用#个块设备来创建此RAID;
  • -l #:指明要创建的RAID的级别;
  • -a {yes|no}:是否自动创建目标RAID设备的设备文件;
  • -c CHUNK_SIZE:指明块大小;
  • -x #:指明空闲盘的个数;

-D 显示raid的详细信息。

管理模式:

  • -f:标记指定磁盘为损坏;
  • -a:添加磁盘;
  • -r:移除磁盘;

观察md的状态:

停止md设备:

更多信息请参考man mdadm

示例:创建一个5G的RAID-1,并指定一块空闲硬盘容灾。

这里使用的是三块磁盘进行测试。

给三块磁盘分别进行分区(设备分区模式必须为“fd raid”)。

创建RAID-1,并指定一块空闲硬盘容灾。

可以看到RAID-1创建成功了,sdc1sdb1组成RAID-1sdd1作为空闲磁盘备用。

使用mdadm /dev/md0 -r /dev/sdd1mdadm /dev/md0 -a /dev/sdd1可以移除或添加磁盘。

下面要做的,就是格式化并挂载分区了。

删除软RAID

软RAID创建后,如果不按顺序删除卸载,则磁盘在以后的使用中可能会遇到各种问题,下面说说怎么卸载软RAID。

使磁盘实效并卸载:

停止并删除RAID:

清空超级块信息:

清除其他配置: