RAID软件磁盘阵列
一、RAID概述
1、RAID的概念
- 磁盘阵列的全名是(Redundant Arrays of Inexpensive Disk,RAID),中文意思是独立冗余磁盘阵列。
- RAID可以通过技术(软件或者硬件)将多个较小的磁盘整合成为一个较大的磁盘设备,而这个较大的磁盘功能可不止存储而已,它还具有数据保护的功能,整个RAID由于选择的级别(level)不同,而使得整合后的磁盘具有不同的功能,
- 基本常用的level有以下几种RAID0, RAID1, RAID5,RAID6,RAID1+0等
2、RAID 中主要有三个关键概念和技术
镜像( Mirroring )将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。
数据条带( Data Stripping )将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。
数据校验( Data parity )利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。
不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。至于设计何种 RAID (甚至新的等级或类型)或采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。
二、常用RAID介绍
1、RAID 0(条带化存储)— 性能最佳
RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余;
RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据;
RAID 0不能应用于数据安全性要求高的场合。
补充知识:数据冗余
1.1 关系数据库中的数据冗余主要是指关系数据库中同一信息数据的重复存贮。
1.2 数据冗余浪费了宝贵的资源,应尽量减少。但关系数据库中为实现一些功能有些数据冗余是必需的。必需的数据冗余主要用于以下用途:
- 数据间建立联系,如两表间通过共同属性建立联系;
- 数据恢复,如建立备份文件以备正式文件被破坏时恢复;
- 数据核查,如设立数据校验位可以检查数据在存贮、传输等过程中的改变;
- 数据使用的便利,如为了查看数据的直观,使用数据的方便、高效。
- 减少数据通讯开销,如分布式数据库在不同场地重复。
数据冗余的缺点:
a) 存储空间的浪费。
b) 数据交互和数据库访问执行效率降低。
但适当的数据冗余又能加快查询
数据冗余究竟是好是坏还是要根据自己所做的项目进行合理的取舍
2、RAID 1(镜像存储)— 完整备份
通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据;
当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1 可以提高读取性能;
RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当个磁盘失效时, 系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
3、RAID 5 — 性能与数据备份的均衡考虑
N (N>=3) 块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据,共N份数据在N块盘上循环均衡存储
N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高;
(N-1) /N磁盘利用率;
可靠性高,允许坏1块盘,不影响所有数据(如果坏了2块硬盘,则恢复不了)
RAID5取代了RAID3,RAID3是将校验数据放在一个磁盘上,所以此硬盘是动态频繁变化的,故障率极高
RAID5将校验数据分摊到每个硬盘上,可靠性高
4、RAID 6 — 更强大的数据备份
N (N>=4) 块盘组成阵列,(N-2) /N磁盘利用率;
与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块;
两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用;
相对于RAID 5有更大的“写损失"因此写性能较差。
5、RAID 1+0(先做镜像,再做条带)
N (偶数,N>=4)块盘两两镜像后,再组合成一个RAID 0;
N/2磁盘利用率;
N/2块盘同时写入,N块盘同时读取;
性能高,可靠性高。
6、RAID 0+1(先做条带,在做镜像)
读写性能与RAID 10相同;
安全性低于RAID 10;
使用较少。
6、主流 RAID 等级技术对比
RAID级别 | RAID 0 | RAID 1 | RAID 5 | RAID 6 | RAID 1+0 |
别名 | 条带 | 镜像 | 分布奇偶校验条带 | 双重奇偶校验条带 | 镜像加条带 |
容错性 |
无 |
有 | 有 | 有 | 有 |
冗余类型 | 无 | 有 | 有 | 有 | 有 |
热备份选择 | 无 | 有 | 有 | 有 | 有 |
读性能 | 高 | 低 | 高 | 高 | 高 |
随机写性能 | 高 | 低 | 一般 | 低 | 一般 |
连续写性能 | 高 | 低 | 低 | 低 | 一般 |
需要磁盘数 | n≥1 | 2n (n≥1) | n≥3 | n≥4 | 2n(n≥2)≥4 |
可用容量 | 全部 | 50% | (n-1)/n | (n-2)/n | 50% |
补充知识:
热备份与冷备份
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将要害性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。冷备份的优点是:
是非常快速的备份方法(只需拷文件)
轻易归档(简单拷贝即可)
轻易恢复到某个时间点上(只需将文件再拷贝回去)
能与归档方法相结合,做数据库“最佳状态”的恢复。
低度维护,高度安全。
但冷备份也有如下不足:
单独使用时,只能提供到“某一时间点上”的恢复。
再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢。
不能按表或按用户恢复。
热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。所以,假如你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。
热备份的优点是:
可在表空间或数据库文件级备份,备份的时间短。
备份时数据库仍可使用。
可达到秒级恢复(恢复到某一时间点上)。
可对几乎所有数据库实体做恢复
恢复是快速的,在大多数情况下爱数据库仍工作时恢复。
热备份的不足是:
不能出错,否则后果严重
若热备份不成功,所得结果不可用于时间点的恢复
因难于维护,所以要非凡仔细小心,不答应“以失败告终”。
三、硬件磁盘阵列
1、磁盘阵列介绍
所谓的磁盘阵列是通过磁盘阵列卡来完成磁盘阵列的功能,磁盘阵列卡上面有一块专门的芯片用于处理RAID任务,因此在性能方面会比价好。在很多任务(例如RAID5奇偶校验值计算)中,磁盘阵列并不会重复消耗原本系统的I/O总线,理论上性能会较佳,此外目前一般的中高级磁盘阵列卡都支持热插拔,即在不关机的情况下抽换损坏的磁盘,在系统的恢复和数据的可靠性方面非常好用
2、阵列卡介绍
阵列卡是用来实现RAID功能的板卡
通常是由I/O处理器、硬盘控制器、硬盘连接器和缓存等一系列组件构成的
不同的RAID卡支持的RAID功能不同:
例如支持RAID0、RAID1、 RAID5、 RAID10等
RAID卡的接口类型:
IDE接口、SCSI接口、 SATA接口和SAS接口
3、阵列卡的缓存
缓存(Cache)是RAID卡与外部总线交换数据的场所,RAID卡先将数据传送到缓存,再由缓存和外边数据总线交换数据。
缓存的大小与速度是直接关系到RAID卡的实际传输速度的重要因素。
不同的RAID卡出厂时配备的内存容量不同,一般为几兆到数百兆容量不等。
四、创建软 RAID 磁盘阵列步骤
1.检查是否已安装mdadm软件包
rpm -q mdadm
yum install -y mdadm
2.使用fdisk工具将新磁盘设备/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde划分出主分区sdb1、sdc1、sdd1、sde1.并且把分区类型的ID标记号改为“fd”
两种方法:
fdisk /dev/ sdb(进入交互页面)
echo 'n >p>1> > >t>fd>w ' | fdisk/dev/sdc
3.创建 RAID 设备
#创建 RAID5
mdadm -C -v /dev/md0 [-a yes] -15 -n3 /dev/sd[bcd]1 -x1 /dev/ sde1
#创建 RAID10 ( 先做镜象,再做条带)
mdadm -Cv /dev/md0 - -l1 -n2 /dev/sd [bc] 1
mdadm -Cv /dev/md1 -l1 -n2 /dev/sd[de] 1
mdadm -Cv /dev/md10 -l0 -n2 /dev/md0 /dev/ md1
4.查看RAID磁盘详细信息
查看RAID创建进度的两种方式:
cat /proc/ mdstat
mdadm -D / dev/ md0
#每10S动态显示创建过程
watch -n 10 'cat /proc/mdstat’
#检查磁盘是否已做 RAID
mdadm -E /dev/sd[b-e]1
5.创建并挂载文件系统
mkfs -t xfs /dev/ md0 #格式化
mkdir /data
mount /dev/md0 /data/ #挂载(临时)
df -Th
cp /etc/ fstab /etc/ fstab.bak
vim /etc/ fstab
/dev/md0 /data xfs defaults 0 0 #永久挂载
6.实现故障恢复
mdadm /dev/md0 -f /dev/ sdb1
#模拟/dev/ sdb1故障
mdadm -D /dev/ md0
#查看发现sde1已顶替sdb1
7.创建 /etc/mdadm.conf 配置文件,方便管理软RAID的配置,比如启动、停止
echo ' DEVICE /dev/ sdb1 /dev/sdc1 /dev/ sdd1 /dev/sde1' > / etc/ mdadm. conf #.conf结尾的基本都是配置文件
mdadm --detail --scan>> / etc/ mdadm. conf
umount /dev/md0
#启动之前要先解挂载
mdadm -S /dev /md0
mdadm -As /dev/ md0
#-s:指查找 /etc/mdadm. conf 文件中的配置信息
补充知识:
输出重定向
概念:把命令的标准输出重定向到指定文件中
格式:
命令>文件名 #重定向输出,会覆盖原文件
命令>>文件名 #重定向追加,不会覆盖原文件
说明: 输出附加定向符( >> )的作用是把命令/程序的输出附加到指定文件的末尾
五、实例操作
1、添加4块20G的硬盘,添加方法可参照博客磁盘管理与文件系统
2、检查是否已安装mdadm软件包
3、fdisk -l 查看硬盘是否添加成功,并对四块硬盘进行主分区创建
3.1 查看硬盘是否添加成功
3.2 创建分区的第一种情况
3.3 创建分区的第二种方法(可不进去交互页面)
其他按照此方法进行分区(上键找到之前的命令,并改下磁盘名称即可)
4、创建RAID
4.1 创建RAID5
4.2 创建RAID10
5.查看RAID磁盘详细信息
6、对RAID5进行格式化,以及挂载
7、模拟故障检测RAID功能
8、创建 /etc/mdadm.conf 配置文件,方便管理软RAID的配置,比如启动、停止
8.1 创建/etc/mdadm.conf配置文件
8.2 管理RAID的配置