1.传统磁盘的劣势
计算机的性能的组件一般包括:CPU、主板总线IO、内存IO,硬盘IO、网卡IO。现代计算机整体的IO性能较弱,严重影响了计算机的性能。
IOPS性能指标。第一个速度第二个IOPS
以目前来看,影响性能主要是硬盘IO的限制。硬盘速度很慢。
SATA <150M/s 机械硬盘
SCSI <200M/s 比较传统的
SAS 200M/s
SSD 500M/s 固态硬盘
一盘是绝大多数计算机的性能瓶颈。
2.RAID技术(廉价磁盘冗余阵列技术)
解决磁盘速度慢,和稳定性差的缺陷。
通过多次盘并行运行来提高计算机的存储IO性能。
RAID分为很多种类,称之为RAID级别。现代RAID共7类,常用的一共有下面4类
RAID 0 读写性能
RAID 1 读取性能、冗余性
RAID 5 读写性能、冗余性(一块硬盘)
RAID 6 读写性能、冗余性(两块硬盘)
RAID 0 空间利用率最高,性能最好,但没有冗余能力
RAID0使用最少2快硬盘,读写时,将数据分开写到多块硬盘的方式来提高读写性能。性能为所有硬盘速度之和,但是没有冗余能力(任何一块磁盘损毁数据就会丢失)。空间利用率是所有硬盘空间之和。(一般来讲创建RAID,所有的硬盘的大小一样,生产环境中不仅要求大小一样,型号规格也要一样,防止不兼容而出现问题)
RAID1 (只用在稳定性极强的地方,写数据不经常发生)
最少使用两块硬盘,在写数据时,将数据复制写到多块硬盘,在读时,以提供冗余性,同时从多块硬盘读取数据,以提高读性能
空间利用率:所有磁盘中最小的那一块(磁盘使用率非常低)
性能:读为所有硬盘之和,写性能会有所减弱。
冗余:只要有一块硬盘正常,数据就正常。冗余能力是最强的。
在实际生产环境中最长使用的是RAID5和RAID6
RAID 5
最少使用三块硬盘,和RAID0类似,读写数据时会将数据分布式的读写在所有硬盘上,但在写数据的时候会对数据进行奇偶校验运算,将校验信息同时保存在硬盘上,校验信息可以进行数据恢复使用(通过校验信息和其他的数据将丢失的数据反推获取)。
空间利用率:1-1/n
性能:读性能接近RAID0,写性能较RAID0差点
冗余能力:可接受1块硬盘的损坏
RAID6
最少使用4块硬盘。与RAID5类似,但会比RAID5多保存一份校验信息,所以冗余性较RAID5有所提升。
空间利用率:1-2/n
性能:读性能接近RAID5,但写比RAID5还要弱一些
冗余能力:可以接受2块硬盘的损坏
3、RAID实现
软件实现与硬件实现
软件:通过系统功能或RAID软件实现。会占用一定的系统资源(CPU、硬盘接口速度)并且受操作系统稳定性影响。
硬件:通过独立的RAID硬件卡实现。有些主板集成RAID硬件,有些需要购买独立的RAID硬件卡,不需要占用资源,稳定性和速度都比软件RAID强。
4。软件RAID
Linux中通过mdadm这个程序实现
mdadm支持RAID的级别:0,1,4,5,6
mdadm可以基于多块硬盘分区或逻辑卷创建软件RAID
创建好的软件RAID对应/dev/mdn ,n为第几个RAID,如创建的RAID为:/dev/md0
RAID信息保存在/proc/mastat文件中,通过mdadm命令查看。
5.实际操作
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
查看RAID信息
创建其他级别的RAID
备份磁盘 正常不工作,当出现故障时,指定的备份磁盘自动上线工作。
关闭RAID,关闭前必须卸载(不同的版本不一样)底层磁盘(组成RAID的磁盘还是保存RAID信息的)
彻底清除作为其他的情况使用
mdadm --zero-superbolck /dev/sdb
mdadm--zero-superbolck /dev/sdc
将组成RAID的磁盘中的数据彻底删除
之后可以重新创建
RAID5和6需要对相应的磁盘进行自动条带化
6.模拟故障