RAID(独立冗余磁盘阵列)
基本思想:将多块独立的磁盘按不同的方式组合为一个逻辑磁盘,从而提高存储容量,提升存储性能或提供数据备份功能。
RAID级别
- RAID 0(不含校验与冗余的条带存储),功能:多块磁盘组合为RAID0后,数据被分割病分别存储在每块硬盘中,所以能最大地提升存储性能与存储空间,但无法容错,RAID 0至少需要两块磁盘。缺点:因为没有校验与备份,两块硬盘中如果有一块磁盘损坏,即磁盘中的任何一个数据块损坏将导致整个文件无法读取。
- RAID 1(不含校验的镜像存储),功能:多块磁盘组合为RAID 1后,数据将被同时复制到每块硬盘中,制作这种磁盘阵列至少需要两块硬盘,该级别的RAID只需要一块磁盘可用,即可正常工作,该级别的阵列安全性是最好的,磁盘的利用率也是最低的。缺点:写入的效率低,且磁盘的利用率极低。
- RAID 2(位级别的校验式条带存储),功能:多块磁盘组合为RAID2后,数据将以位(bit)位单位同步式分别存储在不同的硬盘上,并采用海明码(一种具有纠错功能的校验码)对数据进行校验和恢复,对大数据量的读写具有很高的性能,但对少量数据的读写性能反而不好,该磁盘阵列至少需要三块硬盘。
- RAID 3(字节级别的校验式条带存储),功能:参考RAID2,数据分割级别为字节。
- RAID 4(数据块级别的校验式条带存储),功能:该级别的磁盘阵列与RAID2类似,仅数据分割单位不同。
- RAID 5(数据块级别的分布式校验条带存储),功能:多块磁盘组合为RAID5后,数据将以块(block)为单位同步式分别存储在不同的硬盘上,并对数据进行海明码运算,与其他级别不同的式,该级别的海明码会被写入不同的磁盘。
- RAID 10(镜像与条带存储),功能:它由RAID0余RAID1结合而成,RAID10继承了RAID0的快速与高效,同时也继承了RAID1的数据安全,RAID10至少需要四块硬盘。RAID10通常有两种结构,一种是RAID0+1结构,一种是RAID1+0结构。
RAID创建
Linux中创建磁盘阵列可以使用mdadm命令:
用法:mdadm [模式] 选项 <raid设备>
选项:-C 创建RAID(create)
-l 指定RAID级别(level)
-n 指定磁盘个数
-x 指定备用设备个数
以下命令创建了名为md0的RAID 0设备以及名称为md1的RAID5设备:
mdadm -C /dev/md0 -l 0 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm -C /dev/md1 -l 5 -n 3 -x 1 /dev/sdb2 /dev/sdc2 /dev/sdd2 /dev/sde2
RAID测试
对普通磁盘写入1GB的数据测试写入时间:
time dd if=/dev/zero of=txt bs=1M count=1000
RAID故障模拟
mdadm /dev/md1 -f /dev/sdb2
使用 -f 选项(failed)模拟磁盘sdb2的损坏。
本文参考《Linux运维之道》