RAID原理基础
传统磁盘的劣势
影响计算机性能的组件一般包括:CPU、主板总线IO、内存IO、硬盘IO、网卡IO。现在处理器性能已经很高了,但是计算机整体IO性能较弱,严重影响了计算机性能
现在的计算机总线、内存的速度可能达到5G每秒,甚至更高,但是硬盘IO往往较低
硬盘是绝大多数计算机的性能瓶颈
RAID
现代硬盘的缺陷:IO性能极弱、稳定性极差
RAID(Redundant Array of Independent Disks)廉价磁盘冗余阵列技术是通过多磁盘并行运行来提高计算机存储IO性能。
RAID分为很多种类,称之为RIAD级别,现代RIAD共有7类,常用的有以下四类:
RAID 0 读写性能 RAID 1 读写性能、冗余性 RAID 5 读写性能、冗余性(1块硬盘) RAID 6 读写性能、冗余性 (2块硬盘)
RAID 0
RAID 0最少使用2块硬盘,在读写时,将数据分开读写到多块硬盘的方式来提高读写性能。
空间利用率: 所有硬盘空间之和
性能: 所有硬盘速度之和
冗余能力: 无
RAID 1
RAID 1最少使用2块硬盘,在写数据时,将数据复制写到多块硬盘。在读数据时,以提供冗余性。同时从多块硬盘读取数据,以提高读性能。
空间利用率:所有磁盘最小的那块
性能: 度性能为所有硬盘速度之和,写性能会有所减弱
冗余能力: 只要有一块硬盘正常,数据就正常
RAID 5
RAID 5最少使用3块硬盘,RAID5与RAID0类似,读写数据的时候会将数据分布式的读写在所有硬盘上,但是在写数据的时候会对数据进行奇偶校验运算,将校验信息同时保存在硬盘上,校验信息可以进行数据恢复使用。
空间利用率:1-1/n
性能: 读写性能接近RAID0,写性能较RAID0弱一些
冗余能力: 可接受一块硬盘损坏
RAID 6
RAID 6最少使用4块硬盘,RAID6与RAID5类似,读写数据的时候会将数据分布式的读写在所有硬盘上,并保存奇偶校验信息,但是会比RAID5多保存一份校验信息,所以冗余性较RAID5有所提升。
空间利用率:1-2/n
性能: 读写性能接近RAID5,读性能能比RAID5还要弱一点
冗余能力:可接受2块硬盘损坏
软件RAID配置
RAID机制通过使用多硬盘并行工作的方式来提高硬盘的IO性能
RAID分为多种,称之为RAID level,RAID共有7级:RAID0 ~ RAID6
常用的RAID级别有:RAID0、RAID1、RAID5、RAID6
RAID级别 速度 冗余性 磁盘利用率
RAID 0 读写速度均有提升 0 所有磁盘之和 RAID 1 读性能提升 n 一个磁盘大小 RAID 5 读写速度均有提升 1 1-1/n RAID 6 读写速度均有提升 2 1-2/n
RAID的实现分为:硬件RAID、软件RAID
RAID实现
RAID的实现方式有两种:
软件RAID
MDADM
每种操作系统都有软件RAID的实现
在Linux中软件RAID通过mdadm这个程序实现
mdadm支持的RAID级别有:RAID0、RAID1、RAID4、RAID5、RAID6
mdadm可以基于多块硬盘、分区或逻辑卷创建软件RAID
创建好的软件RAID对应/dev/mdn,n为第几个RAID,如第一个创建的RAID/dev/md0,第二个为/dev/md1
RAID的信息保存在/proc/mdstat文件中,或通过mdadm命令查看
创建软件RAID
我们可以通过mdadm命令创建RAID
创建RAID 0
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb /dev/sdc
-C 创建一个新的RAID
-a 自动创建对应设备
-l 指定要创建的RAID级别
-n 指定硬盘的数量
创建好RAID之后,我们需要创建一个配置文件
mdadm -D --scan > /etc/mdadm.conf
创建文件系统之后挂载使用
mkfs.ext4 /dev/md0 mount /dev/md0 /mnt
/dev/md0 /mnt ext4 defaults 0 0
查看RAID信息
我们可以使用mdadm命令查看RAID相关信息
mdadm -D /dev/md0
/proc中的文件也包含RAID相关信息
cat /proc/mdstat
创建RAID1
mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdb /dev/sdc
创建RAID5
mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sdb /dev/sdc /dev/sdd
创建RAID6
mdadm -C /dev/md0 -a yes -l 6 -n 4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
我们也可以使用-x参数指定一个备份磁盘,备份磁盘一般不使用,当出现故障磁盘时,指定的备份磁盘可以自动上线工作
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
控制RAID
我们可以通过以下命令关闭一个RAID,关闭前先卸载
mdadm -S /dev/md0
通过以下命令可以启用指定RAID
mdadm -R /dev/md0
彻底清除RAID设备
首先停止RAID设备
mdadm -S /dev/md0
然后:
mdadm --zero-superblock /dev/sdb
模拟故障
实验环境下,我们可以通过以下命令模拟一个磁盘的故障:
mdadm /dev/md0 -f /dev/sdb
之后,我们可以将故障磁盘移除
mdadm /dev/md0 -r /dev/sdb
换上新的硬盘后,我们可以将新硬盘添加到RAID中
mdadm /dev/md0 -a /dev/sdb