Linux 磁盘阵列介绍
一、磁盘阵列的功能
1、整合闲置的磁盘空间
2、提高磁盘读取效率
3、提供容错性
二、磁盘阵列等级
1、Raid-0: (俗称等量模式 ),Raid-0可以由2个以上的磁盘合并成一个磁盘空间,他会将存入的数据切割成N份(N为磁盘数量),然后把第一份数据分别存入到一个磁盘的区段中。特点:读写速度快,缺乏容错性。
2、Raid-1:(镜像模式), Raid-1可以由2个(甚至更多)磁盘合并成为一个磁盘空间。当你把一份数据存储到Raid-1的磁盘阵列时,Raid-1磁盘阵列会把数据复制一份,存储到其他的磁盘中,由于每一个磁盘中的数据都一模一样,就像镜子一样。
特点: 可提供容错性,可加快读取速度,较浪费磁盘空间,无法提高写入效率。
3、Raid-5: Raid-5磁盘阵列由3个以上的磁盘组成,当你把数据写入到Raid-5时,Raid-5磁盘会把数据切割成若干等份,然后写入到不同的组成磁盘中,接着计算出每一份数据的同位检查码,再把同位检查码写入到其他的磁盘中,同位检查码不是集中存储在同一个磁盘中,而是分散存储在每一个磁盘中,拥有n个磁盘的Raid-5的磁盘阵列,会把第n个区段来存储检查码。特点:读取速度快,具备容错,增加可用空间,写入慢,需要更高的计算能力。
上述 3个等级的磁盘阵列的差异,如下表
 

 
Raid-0
Raid-1
Raid-5
俗称
等量模式
镜像模式
具同位检查的等量模式
组成磁盘数量
2个以上
2个以上
3个以上
组成磁盘大小
可以不用一样大
需要大小相同
需要大小相同
可用空间
所有磁盘空间总和
单一磁盘大小
( N-1)*S
N为磁盘数量, S为每一个磁盘大小
优点
读取快
写入快
增加可用空间
具备容错
读取快
读取快
具备容错
增加可用空间
缺点
无容错
写入普通
浪费磁盘空间
写入慢
需要更高的计算能力
三、硬件磁盘阵列
Dmraid 全名为设备对应器磁盘阵列( Device Mapper RAID)
1、查看支持的硬件与模式
[root@linux~]#dmraid –l
可以查看你使用的 dmraid支持哪些硬件磁盘阵列设备,NVIDIA设备代号,NVIDIA RAID全名,SPAN,RAID-0,RAID-1,RAID-1+0,RAID-5支持的等级。
2、设置磁盘阵列
在启动计算机时进入 BIOS来进行配置工作
3、启动磁盘阵列设备
启动后会在 /dev/mapper目录中,产生该硬件磁盘阵列的设备文件,格式如下:/dev/mapper/TYPE_UNIQUENAME,TYPE是硬件磁盘设备的代号UNIQUENAME是该硬件设备的唯一代号,通常由不规则文字组成。
[root@linux~]#ls /dev/mapper/
[root@linux~]#dmraid –a y (启动磁盘阵列 )
4、使用磁盘阵列
启动磁盘阵列后,你可以把该设备文件当做一个磁盘使用,例如对该磁盘阵列设备产生分区,制作文件系统等。
5、读取磁盘阵列设备
[root@linux~]#dmraid –r [DEVICE]
6、查看磁盘阵列
[root@linux~]#dmraid –s [RAID]
7、停用磁盘阵列
[root@linux~]#dmraid –a n
四、软件磁盘阵列
软件磁盘阵列是由 Linux 内核提供的一项功能,只要你的linux内核编译时有启动软件磁盘阵列功能,就可以享受磁盘阵列的好处,完全不需准备额外的硬设备。Redhat Enterprise Linux 的软件磁盘阵列以分区为软件磁盘阵列的组成单元,你可以把多个分区组成磁盘阵列的设备。
1、产生组成单元
[root@linux~]#parted –s /dev/sdb mklabel msdos
[root@linux~]#parted –s /dev/sdb mkpartfs primary ext2 0 1024
[root@linux~]#parted –s /dev/sdb mkpartfs primary ext2 1024 2048
[root@linux~]# parted –s /dev/sdb mkpartfs primary ext2 2048 3072
[root@linux~]# parted –s /dev/sdb mkpartfs primary ext2 3072 4096
我这里在 sdb上建立3个分区
[root@linux~]#parted –s /dev/sdb set 1 raid
[root@linux~]#parted –s /dev/sdb set 2 raid
[root@linux~]#parted –s /dev/sdb set 3 raid
[root@linux~]#parted –s /dev/sdb set 4 raid
 
把分区的系统识别码设为 raid
[root@linux~]#fdisk –l /dev/sdb | grep raid
 
2、初始化多重磁盘设备
[root@linux~]#mdadm –verbose –create /dev/md0 \
>--level raid5 \
>--raid-devices 3 \
>--spare-devices=1 \
>/dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
或者 [root@linux~]#mdadm –C –v /dev/md0 –l5 –n3 –x1 /dev/sdb{1,2,3,4}
3、查看多重磁盘阵列的详细状况
[root@linux~]#watch cat /proc/mdstat
[root@linux~]#mdadm –detail /dev/md0
4、设置 /etc/mdadm.conf
这个文件默认是不存在的,要自己建立 .该配置文件存在的主要作用是系统启动的时候能够自动加载软RAID,同时也方便日后管理. 说明下,mdadm.conf文件主要由以下部分组成:DEVICES选项制定组成RAID所有设备, ARRAY选项指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号.
[root@linux ~]# mdadm --detail --scan > /etc/mdadm.conf
[root@linux ~]# cat /etc/mdadm.conf
#默认格式是不正确的 ,需要做以下方式的修改: 
[root@linux ~]# vi /etc/mdadm.conf
[root@linux ~]# cat /etc/mdadm.conf
devices /dev/sdb1,/dev/sdb2,/dev/sdb3,/dev/sdb4
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=e62a8ca
5\6:2033f8a1:f333e527:78b0278a
5、解决多重磁盘设备故障
若 /dev/sdb1 出现faulty spare,卸载/dev/sdb1,加入/dev/sdc1
[root@linux ~]#mdadm /dev/md0 –set-faulty /dev/sdb1
模拟磁盘 /dev/sdb1出现故障
[root@linux ~]#mdadm –detail /dev/md0 | tail –n 5
查看 md0,果然发现/dev/sdb1 出现faulty spare,
[root@linux ~]#mdadm /dev/md0 –remove /dev/sdb1
在线卸载 /dev/sdb1
[root@linux ~]#mdadm /dev/md0 –add /dev/sdc1
在线加入 /dev/sdc1
[root@linux ~]#mdadm –detail /dev/md0 | tail –n 5
再查看, /dev/sdb1已经被/dev/sdc1替代
5、启用与停用多重磁盘
[root@linux ~]#mdadm –stop /dev/md0
先停用我的 md0
[root@linux ~]#mdadm –detail /dev/md0
想看一下我的磁盘状态,但无法查看
[root@linux ~]#mdadm –assemble –scan /dev/md0
再启用 md0
[root@linux ~]#mdadm –detail /dev/md0
现在是可以查看的
6、增加多重磁盘
现在我的 sdb1好了,我想把他重新加入我的raid-5
[root@linux ~]#mdadm /dev/md0 –add /dev/sdb1
[root@linux ~]#mdadm –detail /dev/md0
现在利用 grow扩展我的raid-5
[root@linux ~]#mdadm –grow /dev/md0 –raid-devices=4
然后再查看,我的 /dev/sdb1已经成为raid-5的一员了
[root@linux ~]#mdadm –detail /dev/md0 | tail –n 7
7、挂载我的 raid-5
格式化为 ext3格式
[root@linux ~]#mkfs.ext3 /dev/md0
设置卷标为 /dev/md0
[root@linux ~]#e2label /dev/md0 /dev/md0
[root@linux ~]#e2label /dev/md0
然后挂载到我的 /var/md0目录
[root@linux ~]#mount /dev/md0 /var/md0
更改 /etc/fstab,以免下次启到自己挂载,增加下面一行
8、监控 raid5
Mdadm的监控模式提供一些实用的功能,可以使用下列命令来监控 /dev/md0,delay参数意味着检测的时间间隔,这样紧急事件和严重的错误会及时发送给系统管理员
[root@linux ~]#/etc/init.d/mdmonitor restart
[root@linux ~]#nohup mdadm –monitor
9、删除 raid
[root@linux ~]#umount /dev/md0
[root@linux ~]#mdadm –stop –s /dev/md0
[root@linux ~]#mdadm –zero-superblock /dev/sdb{1,2,3,4} /dev/sdc1
[root@linux ~]#rm –rf /etc/mdadm.conf