RAID(Redundant Array of Independent Disk独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能,能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。
一、raid基础
磁盘阵列是由很多磁盘,以硬件(RAID卡)或软件(MDADM)形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一起,提升整个磁盘系统效能。
1.RAID机制
通过使用多硬盘并行工作的方式来提高硬盘的IO性能。
RAID有三个关键技术:镜像:提供了数据的安全性;条带(块大小也可以说是条带的粒度),它的存在的就是为了提高I/O性,提供了数据并发性;数据的校验:提供了数据的安全。
2.RAID级别
RIAD分为多种,称之为RAID level,RAID共有7级:RAID0~RIAD6
常用的RAID级别有:RAID0、RAID1、RAID5、RAID6、RAID10
类型 |
读写性能 |
可靠性 |
磁盘利用率 |
成本 |
RAID0 |
最好 |
最低 |
100% |
较低 |
RAID1 |
读正常;写2份数据 |
高 |
50% |
高 |
RAID5 |
读:近似RAID0 写:多了校验 |
RAID0<RAID5<RAID1 |
(n-1)/n |
RAID0<RAID5<RAID1 |
RAID6 |
读:近似RAID0 写:多了双重校验 |
RAID6>RAID5 |
RAID6<RAID5 |
RAID6>RAID1 |
RAID10 |
读:RAID10=RAID0 写:RAID10=RAID1 |
高 |
50% |
最高 |
- 每种操作系统都有软件RAID的实现
- 在Linux中软件RAID通过mdadm这个命令(程序包)实现
- mdadm支持的RAID级别有:RAID0、RAID1、RAID4、RAID5、RAID6
- mdadm可以基于多块硬盘、分区或逻辑卷创建软件RIAD
- 创建好的软件RAID对应/dev/mdn,n为第几个RAID,如第一个创建的RAID为/dev/md0,第二个为/dev/md1
- RAlD的信息保存在/proc/mdstat文件中;通过mdadm命令也可查看
3.RAID实现
a.硬件RIAD
通过用硬件来实现RAID功能的就是硬RAID,独立的RAID卡,主板集成的RAID芯片都是硬RAID。
RAID卡就是用来实现RAID功能的板卡,通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列零组件构成的。不同的RAID卡支持的RAID功能不同。支持RAlD0、RAID1、RAID4、RAID5、RAID10不等。不同品牌的RAID卡会有不同的功能与操作方法。我们不作分析评价。
b.软件RAID
软RAID运行于操作系统底层,将SCSI或者IDE控制器提交上来的物理磁盘,虚拟成虚拟磁盘,再提交给管理程序来进行管理。软RAID有以下特点:
- 占用内存空间
- 占用CPU资源
- 如果程序或者操作系统故障就无法运行