RAID

Mdadm管理软件RAID阵列


Mdadm程序是一个独立的程序,能完成所有的软件RAID管理功能,主要有7种使用模式:
模式名字               主要功能
Create          使用空闲的设备创建一个新的阵列,每个设备具有元数据块。
Assemble      将原来属于一个阵列的每个块设备组装为阵列。
Build          创建或组装不需要元数据的阵列,每个设备没有元数据块
Manage     管理已经存储阵列的设备,比如增加热备磁盘或者设置某个磁盘失效,然后从阵列中删除这个磁盘。
Misc        报告或者修改阵列中相关设备的信息,比如查询阵列或者设备的状态信息
Grow     改变阵列中每个设备被使用的容量或阵列中的设备的数目
Monitor   监控一个或多个阵列,上报指定的事件。
为磁盘划分分区
如果MD驱动被编译到内核中,当内核调用执行MD驱动时会自动查找分区为FD
(Linux raid autodetect)格式的磁盘。所以一般会使用fdisk工具将HD磁盘或者SD磁盘分区,再设置FD的磁盘。
如果MD驱动是模块形式加载,需要在系统运行时由用户层脚本控制RAID阵列启动运行。如系统中在/etc/rc.d/rc.sysinit文件中有启动RAID阵列的指令,若RAID的配置文件mdadm.conf存在,则调用mdadm检查配置文件时的先项,然后启动RAID阵列。
创建新的阵列
Mdadm使用—create(或其缩写-C)参数来创建新的阵列,并且将一些重要阵列的标识信息作为元数据可以写在每一个底层设备的指定区间。
--level(或者其缩写-l)表示阵列的RAID级别,--chunk(或者其缩写-c)表示每个条带单元的大小,以KB为单位,默认为64KB,条带单元的大小配置对不同负载下的阵列读写性能有很大影响。--raid-devices(或其缩写-n)表示阵列中活跃的设备个数,而—spare-devices(或其缩写-x)表示阵列中热备盘的个数,一旦阵列中的某个磁盘失效,MD内核驱动程序自动用将热备磁盘加入到阵列,然后重构丢失磁盘上的数据到热备磁盘上。
创建一个RAID0设备
mdadm –-create /dev/md0 –-level=0 –-chunk=32 –-raid-devices=3 /dev/sd[i-k]1
创建一个RAID1设备
mdadm –C /dev/md0 –l1 –c128 –n2 –x1 /dev/sd[i-k]1
创建一个RAID5设备:
mdadm –C /dev/md0 –l5 –n5 /dev/sd[c-g]1 –x1 /dev/sdb
创建一个RAID10设备
mdadm –C /dev/md0 –l10 –n6 /dev/sd[b-g] –x1 /dev/sdh1
创建一个RAID0+1设备
mdadm –C /dev/md0 –l1 –n2 /dev/sdb1 /dev/sdc1
mdadm –C /dev/md1 –l1 –n2 /dev/sde1 /dev/sdf1
mdadm –C /dev/md2 –l1 –n2 /dev/sde1 /dev/sdg1
mdadm –C /dev/md3 –l0 –n3 /dev/md0 /dev/md1 /dev/md2

当RAID1/5/10等创建成功后,需要计算每个条带的校验和信息并写入到相应磁盘上,所以RAID阵列有一个冗余组数据同步的初始化过程(resync)。但是MD设备只是创建成功后即可以外被上层主主应用读写使用,当然由于上层数据读写降低数据同步的性能。初始化的时间长短和磁盘阵列自身性能以及读写的应用负载相关,使用cat /proc/mdstat信息查询RAID阵列当前重构的速度和预期的完成时间。
如果一个块设备已经正在被其他的MD设备或者文件系统使用,则不能用来创建新的MD设备。会出现以下这样情况
mdadm –C /dev/md1 –l0 –n2 /dev/sdh1 /dev/sdi1
mdadm:Cannot open /dev/sdh:Device or resource busy
mdadm:create aborted
build模式可以用来创建没有元数据的RAID0/1设备,不能创建RAID4/5/6/10等带有冗余级别的MD设备
mdadm –BR /dev/md0 –l0 –n6 /dev/sd[b-g]1
mdamd –BR /dev/md0 –l1 –n2 /dev/sd[b-c]1
使用阵列和停止正在运行的阵列
MD设备可以像普通设备那样直接读写,也可以做文件系统格式化。
#mkfs.ext3 /dev/md0
#mkdir –p /mnt/md-test   #mount /dev/md0  /mnt/md-test
当阵列没有文件系统或者其他存储应用以及高级设备使用的话,可以使用-stop(或者其缩写-S)停止阵列;如果命令返回设备或者资源忙类型的错误,说明/dev/md0正在被上层应用使用,暂时不能停止,必有要首先停止上层的应用,这样也能阵列上数据的一致性。
#umount /dev/md0 #mdadm –stop /dev/md0
组装曾创建过的阵列
模式—assemble或者其缩写(-A)主要是检查底层设备的元数据信息,然后再组装为活跃的阵列。如果我们已经知道阵列由那些设备组成,可以指定使用那些设备来启动阵列。
Mdadm –A /dev/md0 /dev/sd[d-h]1
如果有配置文件(/etc/mdadm.conf)可使用命令mdadm –As /dev/md0.mdadm先检查mdadm.conf中的DEVICE的信息,然后从每个设备上读取元数据信息,并检查是否和ARRAY信息一致,如果信息一致则启动信息。如果没有配置/etc/mdadm.conf文件,而且又不知道阵列由那些磁盘组成,则可以使用命令—examine(或者其缩写-E)来检测当前的块设备上是否有阵列的元数据信息。
配置文件
/etc/mdadm.conf作为默认的配置文件,主要作用是方便跟踪RAID的配置,尤其是可以配置监视和事件上报选项。Assemble命令也可以使用—config(或者其缩写-c)来指定配置文件。我们通常可以如下命令来建立配置文件。
#echo DEVICE /dev/sd[b-h]1 /dev/sd[i-k]1 >/etc/mdadm.conf
#mdadm –Ds >>/etc/mdadm.conf
#cat /etc/mdadm.conf
使用配置文件启动阵列时,mdadm会查询配置文件中的设备和阵列内容,然后启动运行所有能运行RAID阵列。如果指定阵列的设备名字,则只启动对应的阵列。
查询阵列的状态
我们可以通过 cat /proc/mdstat信息查看所有运行的RAID阵列的状态,我们也可以通过mdadm命令查看指定阵列的简要信息(使用—query或者其缩写-Q)和详细信息(使用—detail或者其缩写-D)详细信息包括RAID的版本、创建的时间、RAID级别、阵列容量、可用空间、数据数量、超级块状态、更新时间、UUID信息、各个设备的状态、RAID算法级别类型和布局方式以及块大小等信息。设备状态信息分为active,sync,spare,faulty,rebuilding,
Removing等等。
#mdadm –-query /dev/md0
管理阵列
Mdadm可以在Manage模式下,对运行中的阵列进行添加及删除磁盘。常用于标识failed磁盘,增加spare(热备)磁盘,以及从阵列中移走已经失效的磁盘等等。使用—faill(或者其缩写-f) 指定磁盘损坏。
#mdadm /dev/md0 –fail /dev/sdb1
当磁盘已经损坏时,使用 –removie(或者其缩写 –f)参数将这个磁盘从磁盘阵列中移走;但如果设备还正在被阵列使用,则不能从阵列中移走。
#mdadm /dev/md0 –remove /dev/sdb1
如果阵列带有spare磁盘,那么自动将损坏磁盘上的数据重构到新的spare磁盘上;如果阵列没有热备磁盘,可以使用—add(或者其缩写-a)参数增加热备磁盘
Mdadm /dev/md0 –add  /dev/sdh
扩展阵列
如果在创建阵列不想使用整个块设备,可以指定用于创建RAID阵列每个块设备使用的设备大小
mdadm –CR /dev/md0 –l5 –n6 /dev/sd[b-g]1 x1 /dev/sdh –size=102400
然后在阵列需要扩展大小时,使用模式—grow(或者其缩写-g)以及—size参数(或者其缩写-z)在加上合适的大小数值就能分别扩展阵列所使用每个块设备的大小
Mdadm还提供增加或减少阵列中设备个数的功能,使用模式—grow和—raid-disks(或者其缩写-n)参数再加上合适的设备个数。扩展后阵列中原来的热备盘变为活跃磁盘,所以阵列的设备个数增加,阵列的大小也相应增加。
#mdadm –grow /dev/md0 –raid-disks=7

RAID0
添加硬盘
RAID 设备的成员是硬盘分区,需先对硬盘分区,分区不能在同一物理硬盘上
#fdisk /dev/sdb    n 创建主分区,t 分区类型fd,w 写保存
#fdisk /dev/sdc
#mdadm –Cv /dev/md0 –l0 –n2 /dev/sdb1 /dev/sdc1
-C,--create 创建一个新的阵列 -v,verbose 显示细节
/dev/md0 阵列设备的名称 -l,--level= 阵列级别,如0,1,4,5,6
-n,--raid-devices= 阵列活动数目
/dev/sd[bc]1 阵列包含的设备列表
#more /proc/mdstat 查看阵列状态
#mkfs.ext3 /dev/md0 创建文件系统
#mount /dev/md0 /mnt/raid
让系统自动挂载,修改/etc/fstab,添加 /dev/md0 /mnt/raid ext3 defaults 0 0
RAID5 故障模拟
前面已创建了一个RAID5 设备md0
#mdadm –Cv /dev/md0 –l5 –n3 –x1 –c128 /dev/sd[b,c,d,e]1
1.将/dev/sdb1 标记为已损坏的设备
#mdadm /dev/md0 –f /dev/sdb1
这时阵列开始重构和恢复数据
查看损坏信息 cat /proc/mdstat  F表示坏的
2.移除损坏的设备
#mdadm /dev/md0 –r /dev/sdb1
3.将新设备添加到阵列
注意,一:对硬盘正确分区,二:添加设备名要与被移除的一致,如sdb1
#mdadm /dev/md0 –a /dev/sdb1
生成配置文件/etc/mdadm.conf
格式如下:
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md10 level=raid10 num-devices=4
UUID=12334343dkfj
其中UUID 信息通过#mdadm –D /dev/md10 得到
#mdadm –Ds 扫描该文件信息

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11364208/viewspace-344596/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11364208/viewspace-344596/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值