raid5现在很多领域都能用到,使用也是最多,raid5的使用从容错和冗余也是非常不错的。
Linux中的内核支持raid技术我们这里给大家介绍linux下的软raid也就是用软件实现raid技术。
Mdadm工具;mdadm是multiple devices admin的简称,它是Linux下的一款标准的软件 RAID 管理工具。在早期的linux版本中使用的是raidtools工具。
raidtools是Linux下一款经典的用于管理软件 RAID 的工具,但是因为配置/etc/raidtab比较繁琐,而且其功能有限,所以现在越来越多的人选择mdadm。
mdadm 和 raidtools 主要有以下几点不同:
mdadm能够诊断、监控和收集详细的阵列信息
mdadm是一个单独集成化的程序而不是一些分散程序的集合,因此对不同RAID管理命令有共通的语法
mdadm能够执行几乎所有的功能而不需要配置文件(也没有默认的配置文件)
当然,如果需要一个配置文件,mdadm将帮助管理它的内容
Mdadm说是工具其实更像一个命令,只要输入一条命令就能实现raid磁盘阵列。
Mdadm工具再高版本的linux中已经自带了如果没有可以到官方网站下载。
你可以到mdadm的官方网站(http://www.cse.unsw.edu.au/)。推荐下载tgz格式的压缩包自行编译然后安装mdadm和它的文档、手册和示例文件。具体安装过程不做讲解。
一、mdadm的用法
基本语法:
mdadm [mode] <raid-device> [options] <component-devices>
目前支持:
LINEAR, RAID0(striping), RAID1(mirroring), RAID4, RAID5, RAID6, RAID10, MULTIPATH和FAULTY
模式(7种):
Assemble:加入一个以前定义的阵列
Build:创建一个没有超级块的阵列
Create:创建一个新的阵列,每个设备具有超级块
Manage: 管理阵列(如添加和删除)
Misc:允许单独对阵列中的某个设备进行操作(如停止阵列)
Follow or Monitor:监控RAID的状态
Grow:改变RAID的容量或阵列中的设备数目
选项:
A, --assemble:加入一个以前定义的阵列
-B, --build:Build a legacy array without superblocks.
-C, --create:创建一个新的阵列
-Q, --query:查看一个device,判断它为一个 md device 或是 一个 md 阵列的一部分
-D, --detail:打印一个或多个 md device 的详细信息
-E, --examine:打印 device 上的 md superblock 的内容
-F, --follow, --monitor:选择 Monitor 模式
-G, --grow:改变在用阵列的大小或形态
-h, --help:帮助信息,用在以上选项后,则显示该选项信息
--help-options
-V, --version
-v, --verbose:显示细节
-b, --brief:较少的细节。用于 --detail 和 --examine 选项
-c, --config= :指定配置文件,缺省为 /etc/mdadm/mdadm.conf
-s, --scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息。配置文件/etc/mdadm/mdadm.conf
create 或 build 使用的选项:
-c, --chunk=:Specify chunk size of kibibytes. 缺省为 64.
--rounding=: Specify rounding factor for linear array (==chunk size)
-l, --level=:设定 raid level.
--create可用:linear, raid0, 0, stripe, raid1,1, mirror, raid4, 4, raid5, 5, raid6, 6, multipath, mp.
--build可用:linear, raid0, 0, stripe.
-p, --parity=:设定 raid5 的奇偶校验规则:eft-asymmetric, left-symmetric, right-asymmetric, right-symmetric, la, ra, ls, rs.缺省为left-symmetric
--layout=:类似于--parity
-n, --raid-devices=:指定阵列中可用 device 数目,这个数目只能由 --grow 修改
-x, --spare-devices=:指定初始阵列的富余device 数目
-z, --size=:组建RAID1/4/5/6后从每个device获取的空间总数
--assume-clean:目前仅用于 --build 选项
-R, --run:阵列中的某一部分出现在其他阵列或文件系统中时,mdadm会确认该阵列。此选项将不作确认。
-f, --force:通常mdadm不允许只用一个device 创建阵列,而且创建raid5时会使用一个device作为missing drive。此选项正相反
具体配置过程
1、我们使用4块硬盘其中三块做raid5另外一块做备份,如果raid5中的三块硬盘一块坏损另外一块自动替换。
2、因为raid使用的是硬盘的分区所以我们把四块硬盘每块硬盘分一个区,然后吧分区的编号改成raid的如图
sdb、sdc、sdd、sde四块硬盘做raid使用并且分区的id为linux raid autodetect格式raid所使用。
1、 使用mdadm命令创建raid 5
这里使用了/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1四个设备创建RAID 5,其中/dev/sdb1作为备份设备,其他为活动设备。备份设备主要起备用作用,一旦某一设备损坏可以立即用备份设备替换,当然也可以不使用备份设备。命令格式如下:如图6-8所示
Mdadm –Cv /dev/md0 –l5 –n3 –c128 /dev/sdc1 /dev/sdd1 /dev/sde1 –x1 /dev/sdb1
命令解释命令中各参数分别表示如下作用:“-C”指创建一个新的阵列;“/dev/md 0”表示阵列设备名称;“-l5”表示设置阵列模式,可以选择0、1、4、5、6,它们分别对应于RAID0、RAID1、RAID4、RAID5、RAID6,这里设为RAID5模式;“-n3”指设置阵列中活动设备的数目,该数目加上备用设备的数目应等于阵列中的总设备数; “-x1”设置阵列中备份设备的数目,当前阵列中含有1个备份设备;“-c128”指设置块的尺寸为128KB,缺省为64KB;
raid5已经完成要使用必先格式化在挂载使用mkfs格式化,使用mount命令挂载命令mkfs.ext3 /dev/md0 如图
将md0挂载到 mnt下的raid5文件夹中使用命令是mount /dev/md0 /mnt/raid5
如图
查看md0的信息如图
raid故障模拟
上面的实例,让我们对Redhat Linux的软件RAID功能有了一定的认识,并且通过详细的步骤说明了如何创建RAID5。有了RAID做保障,电脑里的数据看起来似乎已经很安全了,然而现有的情况还是不能让我们高枕无忧,想一想,万一磁盘出现故障怎么办?下面我们模拟一个更换RAID5故障磁盘的完整过程,希望以此丰富大家处理RAID5故障的经验,提高管理和维护水平。
我们仍然沿用上面的RAID5配置,首先往阵列中拷贝一些数据,接下来开始模拟/dev/sdb1设备故障。不过,对于无备份设备的RAID5的模拟过程也要经过如下三步,只是阵列重构和数据恢复是发生在新设备添加到阵列中之后,而不是设备损坏时。
2使用mdadm –f模拟sdb1坏损然后查看阵列状态如图
因为有备份设备,所以当阵列中出现设备损坏时,阵列能够在短时间内实现重构和数据的恢复。从当前的状态可以看出,阵列正在重构,且运行在降级模式,sdb1的后面已经标上了(F),活动设备数也降为2个
3、过几分钟再次查看阵列的状态如图
因为有备份设备sde1所以在sdb1坏损的时候sde1自动添加到raid中可以看到图6-15sde1已经工做设备又变成3个
移除坏损设备并添加新的硬盘,移除设备使用mdadm的-r参数,因为是模拟操作,可以通过下面的命令再次将/dev/sdb1添加到阵列中。如果是实际操作则要注意两点:一是在添加之前要对新磁盘进行正确的分区;二是添加时要用所添加设备的设备名替换/dev/sdb1。如图