一、RAID简介
RAID全称Redundant Arrays of Inexpensive Disks(廉价磁盘冗余阵列),后面RAID价格上涨被称为Redundant Arrays of Independent Disks(独立磁盘冗余阵列),简单来说,RAID是一种把多块独立的硬盘按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。
组成磁盘阵列的不同方式称为RAID级别即RAID Levels,RAID基本的级别有RAID0到6七种,还有组合RAID级别如:RAID 01(RAID 0和RAID 1的组合),RAID 10(RAID 1和RAID 0的组合)等等。
RAID的作用:提高IO能力,提高耐用性,即速度与安全。
RAID实现的方式:
1、外接式磁盘阵列,通过扩展卡提供适配能力
2、内接式RAID,主板集成RAID控制器
3、Software RAID:软件实现的RAID
二、RAID等级
1、RAID 0:条带卷,把多块物理硬盘通过硬件或软件方式串联在一起,RAID 0在存储数据时,先将数据分成多个块,平均分布到各个硬盘上,IO累加;
优点:使用n个硬盘,可将读写性能提升n倍,其读写性能是RAID级别中最高的;
缺点:不提供数据冗余,其中任意一块硬盘出问题,整个阵列将故障;
硬盘数量:最少2个;
2、RAID 1:镜像卷,将最少两块硬盘组合成RAID磁盘阵列,其容量等于一块硬盘的容量,另一块硬盘只做数据“镜像”;
优点:安全性增长;
缺点:空间利用率是最差的;
硬盘数量:最少2个,磁盘空间使用率:50%;
3、RAID 5:性能和数据备份都有考虑,将至少3块硬盘组成磁盘阵列,其中一块盘用来存放数据的奇偶校验信息,这样当其中一块硬盘损坏可以根据校验信息和剩下的数据恢复损坏的数据;
优点:兼顾空间利用率和安全性;
缺点:需要额外运算校验信息,仅能忍受一块硬盘损坏;
硬盘数量:至少3个;
4、RAID 10:RAID 1和RAID 0的组合,先将所有磁盘做成RAID1,两两分组,再在上层做RAID0将各个组串联实现IO性能提升;
优点:读写性能提升,并且有容错能力;
缺点:可用空间:N*min(S1,S2,...)/2;
硬盘数量:至少4个;
5、JBOD:Just a Bunch Of Disks,将多块磁盘空间合并成一个大的连续空间使用,可用空间:sum(S1,S2,...);
三、CentOS7 上的软件RAID实现
1、结合内核中的md(multi devices)模块实现;
2、mdadm:模式化的工具
命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>
支持的RAID级别:LINEAR,RAID 0,RAID 1,RAID 4,RAID 5,RAID 6,RAID 10;
模式:
创建:-C
装配:-A
监控:-F
管理:-f,-r,-a
<raiddevice>: /dev/md#
<component-devices>:任意块设备
-C:创建模式
-n #:使用#个块设备来创建此RAID;
-l #:指明要创建的RAID的级别;
-a {yes|no}: 自动创建目标RAID设备的设备文件;
-c CHUNK_SIZE:指明块大小;
-x #:指明空闲盘的个数
-D:显示RAID详细信息
mdadm -D /dev/md#
管理模式:
-f: 标记指定磁盘为损坏;
-a:添加磁盘;
-r:移除磁盘
观察md的状态:
cat /proc/mdstat
watch -n1 'cat /proc/mdstat' 每隔一秒刷新查看
例如:创建一个10G可用空间的RAID5;
a、新建四个分区,一个作为空闲盘,每个分区大小为5G;
b、更改分区类型为:Linux raid 自动
c、让内核识别设备
d、创建RAID
e、将RAID创建为ext4文件系统
f、挂载设备,mount /dev/md0 /mydata
注意:若要在/etc/fstab中配置自动挂载,最好使用UUID挂载避免系统重启后md0名称改变;
可以查看到新建的md0启用了三块设备,还有一块空闲设备:
g、测试损坏一块磁盘,看RAID 5的恢复过程
mdadm /dev/md0 -f /dev/sdb2 让其中一块盘损坏
watch -n1 'cat /proc/mdstat' 每隔一秒查看RAID修复情况
再次查看md0信息可看到空闲盘/dev/sdb5顶替了损坏的盘
附:即使空闲盘被使用了,RAID 5还可以接受损坏一块硬盘;