一、磁盘阵列介绍
1.RAID简介
RAID(Redundant Array of Inexpensive Disks)称为廉价磁盘冗余阵列。RAID 的基本想法是把多个便宜的小磁盘组合到一起,成为一个磁盘组,使性能达到或超过一个容量巨大、价格昂贵的磁盘。 目前 RAID 技术大致分为两种:基于硬件的 RAID技术和基于软件的 RAID 技术。其中在 Linux 下通过自带的软件就能实现 RAID 功能,这样便可省去购买昂贵的硬件 RAID 控制器和附件就能极大的增强磁盘的 IO 性能和可靠性。由于是用软件去实现的 RAID 功能,所以他配置灵活、管理方便。同时使用软件 RAID,还可以实现将几个物理磁盘合并成一个更大的虚拟设备,从而达到性能改进和数据冗余的目的。当然基于硬件的 RAID 解决方案比基于软件 RAID 技术在技术性能和服务性能上稍胜一筹,具体表显在检测和修复多位错误的能力、错误磁盘自动检测和阵列重建等方面。
出于成本和技术方面的考虑,需要针对不同的需求在数据可靠性及读写性能上做出权衡,制定出满足各自需求的不同方案,目前已有的RAID磁盘阵列的方案至少有十几种,而RAID0,RAID1,RAID5与RAID10这4种是最常见的方案
2.RAID 级别介绍
随着 RAID 技术经过不断的发展,现已有 RAID 0 到 RAID 6 七种基本的 RAID 级别,同时还有 RAID 0 和 RAID 1 的组合形式,称为 RAID 10。其中的级别并不代表技术的高低,而 RAID 2 和 RAID 4 基本上不再使用了,RAID 3 则是由于实现起来太复杂也很少使用。目前这些常用的 RAID 级别 Linux 内核都能够支持。
(1)RAID 0
将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。RAID 0亦称为带区集。它是将多个磁盘并列起来,成为一个大磁盘。在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都会丢失。
(2)RAID 1
两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高。RAID 1就是镜像,其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID中磁盘利用率最低的一个级别。
如果用两个不同大小的磁盘建RAID 1,可用空间为较小的那个磁盘,较大的磁盘多出来的空间也可以分区成一个区来使用,不会造成浪费。
(3)RAID 5
如下图所示,RAID 5技术是把硬盘设备的数据奇偶效验信息保存在其他硬盘设备中,RAID 5磁盘阵列组中数据的奇偶效验信息并不是单独保存在某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备中上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷,p部分存放的就是数据的奇偶效验信息,换句话说,就是RAID 5技术实际上并没有备份硬盘中的真实数据信息,而是当硬盘出现问题后通过奇偶效验信息来尝试重建损坏的数据,RAID 5这样的技术特性“受协”的兼顾了硬盘设备的读写速度、数据安全性与存储成本的问题。
(4)RAID 1+0
大部分企业更在乎的是数据本身的价值而非硬盘价格,因此生产环境中主要使用RAID 10技术 顾名思义,RAID 10 技术是RAID 1+RAID 0 技术的一个“组合体”。如下图所示,RAID 10技术至少需要4块硬盘设备来组建,其中先分别俩俩制作成RAID 1磁盘阵列,以保证数据的安全性;然后再对俩个RAID 1磁盘阵列实施 RAID 0技术,进一步提高硬盘设备的读写速度,这样从理论上来讲,只要坏的不是同一组中的所有硬盘,那么最多可以损坏百分之50的硬盘设备而不丢失数据。由于RAID 10 技术继承了RAID 0 的高读写技术和RAID 1 的数据安全性,在不考虑成本的情况下,RAID 10 的性能超过了RAID 5,因此当前成为广泛使用的一种存储技术。
二、阵列卡介绍(Raid 卡)
阵列卡就是用来实现 RAID 功能的办卡,通常是由 I/O 处理器、硬盘控制器、磁盘连接器和缓存等一系列零组件构成的。
不同的 RAID 卡支持的 RAID功能不同,例如支持 RAID 0、RAID 1、RAID 5、RAID 6、RAID 10等
RAID 卡的接口类型: IDE 接口、SCSI 接口、SATA 接口和 SAS 接口
阵列卡的缓存: 缓存(Cache)是 RAID 卡与外部总线交换数据的场所,RAID 卡先将数据传送到缓存,再由缓存和外边数据总线交换数据。他是 RAID 卡电路板上的一块存储芯片,与硬盘盘片相比,具有极快的存取速度。 缓存的大小与速度是直接关系到 RAID 卡的实际传输速度的重要因素,大缓存能够大幅度地提高数据命中率从而提高 RAID 卡整体性能。
不同的 RAID 卡出厂时配置的内存容量不同,一般为几兆到数百找容量不等。
三、配置硬件 RAID
1.开机进入管理界面
进入界面:
DELL:Ctrl+R
IBM:Ctrl+H
2.确认硬盘状态已 Ready
下一页:Ctrl+N
3.上一页:Ctrl+P 回到首页,按回车,进入制作界面
4.在 RAID Level 选项处回车,选择 RAID 5
5.按空格键选中要制作 RAID 的硬盘,使其前面显示[X]
6.选择右侧的 OK,回车
出现提示需要初始化:
7.初始化
确认物理硬盘是否 online。选中 Physical Disks 0,按 “->” 键
选中 Virtual Disks 0 按 “F2” 键,选择 “FAST Init” 快速初始化
回车,选择 yes,回车
出现完成界面:
保存退出,按 ESC 键,选择 “OK”
重启后开始安装操作系统
四、配置软件 RAID
1.所需软件:
mdadm,若未安装,Centos7 系统安装盘中有 rpm 安装包。
2.mdadm 命令
(1)作用:
实现软件 RAID,跟随不同选项作用不同
(2)格式:
mdadm [选项] 参数
(3)常用选项:
-C 或 -create:创建一个新的软 RAID,后面接 raid 设备的名称。例如:/dev/md0,/dev/md1等
-A 或 -assemble:加载一个已存在的阵列,后面跟阵列以及设备的名称
-S 或 -stop:停止指定的 RAID 设备。
-D 或 -detail:输出指定 RAID 设备的详细信息。
-s 或 -scan:扫描配置文件或/proc/mdstat 文件来搜索软 RAID 的配置信息,该参数不能单独使用,只能配置其它参数才能使用。
-l 或 -level:设置 RAID 的级别,例如设置“–level=5”则表示创建阵列的级别是 RAID 5。
-n 或 -raid-devices:指定阵列中活动磁盘的数目。
-x:指定阵列中备用磁盘数
-G 或 -grow:改变在用阵列的大小或形态。
-v 或 -verbose:显示详细过程。
-n :指定设备数量
-a :自动创建设备文件
【示例一:在虚拟机中,新增三块 20G 的新硬盘,将其配置为软件 RAID 5】
1.关机后新增三块 20G 的新硬盘
2.接下来使用 mdadm 命令创建 RAID 5,名称为“/dev/md0”
命令中,
-C 参数代表创建一个 RAID 阵列;
-v 参数显示创建的过程,同时在后面追加一个设备名称 /dev/md0,这样 /dev/md0 就是创建后的 RAID 磁盘阵列的名称;
-a yes 参数代表自动创建设备文件;
-n 3 参数代表使用 3 块硬盘来部署这个 RAID 磁盘阵列;
-l 5 参数则代表 RAID 5方案;最后再加上硬盘设备的名称。
3.把制作好的 RAID 磁盘阵列格式化为 xfs 格式
4.创建挂载点然后把磁盘设备进行挂载操作
5.查看 /dev/md0 磁盘阵列的详细信息,并设置为自动挂载
【示例二:在虚拟机中,新增五块 20G 的新硬盘,将其配置为软件 RAID 10 + 1 块备份盘】
1.关机新增五块 20G 的新硬盘
2.使用 mdadm 命令创建 RAID 10,名称为 “/dev/md0” 使用 4 块硬盘,外加一块备份盘
3.将 RAID 10 阵列格式化为 xfs 文件格式,然后挂载到目录上
4.模拟硬盘故障,备份盘自动顶替工作
接下来就是见证奇迹的时刻,我们将硬盘设备 /dev/sdb 移出磁盘阵列,迅速查看 /dev/md0 磁盘阵列的情况
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
······
Number Major Minor RaidDevice State
4 8 80 0 spare rebuilding /dev/sdf
1 8 32 1 active sync set-B /dev/sdc
2 8 48 2 active sync set-A /dev/sdd
3 8 64 3 active sync set-B /dev/sde
0 8 16 - faulty /dev/sdb
······
5.正确删除 linux 中软 RAID 的方法
(1)先 umount 组建好的 raid: umount /dev/md0
(2)停止 raid 设备:mdadm -S /dev/md0
(3)此时如果忘了 raid 中的硬盘名称,要么重启系统,要么运行:mdadm -A -s /dev/md0 然后再用 mdadm -D /dev/md0 查看 raid 中包含哪几个硬盘。再次运行第二步停止命令:mdadm -S /dev/md0
(4)删除 raid 里的所有硬盘:
[root@localhost ~]# mdadm --misc --zero-superblock /dev/sdc
[root@localhost ~]# mdadm --misc --zero-superblock /dev/sdd
[root@localhost ~]# mdadm --misc --zero-superblock /dev/sde
[root@localhost ~]# mdadm --misc --zero-superblock /dev/sdf
有几块硬盘,就按格式删几次,注意最后面的硬盘名称。
(5)删除配置文件:rm -f /etc/mdadm.conf
(6)如果之前将 raid 相关信息写入了 /etc/fstab 配置文件中,还需 vim /etc/fstab,将 raid 相关的内容删除即可。