Berkeley:伯克利提出:A case for Redundent Arrays of Inexpensive Disks 为RAID(廉价冗余阵列)
如今:Redundant Arrays of Independent Disks 独立冗余阵列
2.优点和表现方式
1)通过磁盘并行读写,提高IO能力:
2)通过磁盘冗余(容错)机制来实现提高耐用性:
3.级别:多块磁盘组织在一起的工作方式有所不同
RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID10、RAID01、RAID50、JBOD
4.实现方式
(1)软件模拟实现:Software RAID,结合内核中的md(multi devices)工具
生产环境中一般没有人使用
(2)硬件实现:硬件级别的RAID配置多块硬盘在bios中实现
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器
1)可以通过SAS接口的适配器接口扩展出串行端口附加存储,以logical unit number逻辑单元号表现
窄带:8个接口,7target
宽带:16个接口,15个target
2)RAID控制器需要系统驱动使用,在BIOS中可以设置,通过适配器连接到RAID磁盘阵列
3)RAID控制器本身有CPU,还可以有内存来加速,另外设置电源方式断电时候的应急写入
二、RAID级别和工作模式
常用级别:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
1.RAID-0:0, 条带卷,strip;
性能:读、写性能提升;无容错能力
空间使用:N*min(S1,S2,...),
最少需要磁盘数量:至少两块
条带:会以磁盘容量最小的磁盘为主分块制作条带
2.RAID-1: 1, 镜像卷,mirror;
性能:读性能提升、写性能略有下降;有冗余能力
空间使用:1*min(S1,S2,...),每块存储内容都一样
空间利用率:1/2
最少需要硬盘数量:至少两块
3.RAID-4:单块硬盘作为集中校验盘
采用独立存取方式,将条带由RAID3的小数据块改为更大的数据块
校验较为迅速,但写入速度极差,控制器的设计更加复杂
通过异或运算将其中一块硬盘,集中存放校验码
允许有一块硬盘损坏,但因为集中校验会导致性能瓶颈
4.RAID-5:循环校验存储机制
性能:读、写性能提升,有容错能力:1块磁盘
空间使用:(N-1)*min(S1,S2,...) 短板效应
空间利用率:(n-1)/n
最少磁盘数:至少三块,可降级使用
5.RAID-6:循环校验存储机制,一块硬盘专门做校验盘,校验码存储两次
性能:读、写性能提升;有容错能力:2块磁盘
空间使用:(N-2)*min(S1,S2,...)
最少磁盘数:最少四块
6.RAID-7:商业版
新的RAID标准,一个独立的“存储计算机”,自身带有智能化实时操作系统和用于存储管理的软件工具,可以完全独立与主机运行,不占用主机CPU资源
7.RAID-10:先做镜像,再做条带
性能:读、写提升,有冗余能力
空间利用率:1/2
最少磁盘数:至少需要4块
8.RAID-01:先做条带,再做镜像
性能:读、写提升,有冗余能力
空间利用率:1/2
最少磁盘数:至少需要4块
9.RAID-50:
性能:读、写提升;有冗余能力
空间利用率:(n-2)/n
最少磁盘数:至少需要6块
10.JBOD:Just a Bunch Of Disks 将多块磁盘的空间合并一个大的连续空间使用
性能表现:无提升;无冗余能力
空间使用:磁盘大小之和sum(S1,S2,...)
空间利用率:100%
最少磁盘数:至少需要2块
三、RAID内核实现观测相关命令
CentOS 6上的软件RAID的实现
1.md(multi devices)工具,mdadm:模式化的工具
命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>
支持的RAID级别:LINEAR线性方式, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;
模式:创建:-C;装配: -A;监控: -F;管理:-f, -r, -a
<raiddevice>: /dev/md#
<component-devices>: 任意块设备
(1)-C: 创建模式
-n #: 使用#个块设备来创建此RAID;
-l #:指明要创建的RAID的级别;
-a {yes|no}:自动创建目标RAID设备的设备文件;
-c CHUNK_SIZE: 指明块大小; 默认512k
-x #: 指明空闲盘的个数;
(2) 管理模式:
-f: 标记指定磁盘为损坏;
-a: 添加磁盘
-r: 移除磁盘
(3)-D:显示raid的详细信息; mdadm -D /dev/md#
(4)观察md的状态: cat /proc/mdstat
(5)停止md设备:mdadm -S /dev/md#
2.watch:动态观测命令运行过程
格式:watch -n# 'COMMAND'
-n #: 刷新间隔,单位是秒;
如何在Linux上构建 RAID 10阵列
Debian软RAID安装笔记 - 使用mdadm安装RAID1
Linux实现最常用的磁盘阵列-- RAID5