配置文件作用:
/etc/mdadm.conf作为默认的配置文件,主要作用是方便跟踪软RAID的配置,尤其是可以配置监视和事件上报选项。在这里我们主要说明配置文件在组装RAID时的作用。更多mdadm.conf使用可参见man mdadm.conf。
举例:
组装中的几点说明:
需要加–force才能使RAID active的情况:
无法将RAID组装成active的情况:
对于上节说到的缺少一块成员盘时,可以通过–force参数将RAID组装起来,但对于掉了两块或两块以上的成员盘时,无法将RAID再组装成active状态,只能组装成一个inactive状态的RAID。
用法:mdadm –create md-device –chunk=X –level=Y –raid-devices=Z devices
例子:# mdadm –create /dev/md0 –chunk=64 –level=0 –raid-devices=2 /dev/sda1 /dev/sdb1
说明:使用sda1和sdb1创建RAID0,条带大小是64KB。
例子:#mdadm –create /dev/md1 –chunk=64 –level=1 –raid-devices=1 /dev/sdc1 missing
说明:创建一个降级的RAID1,同样可以使用missing创建降级的RAID4/5/6
用法:mdadm –assemble md-devices options-and-component-devices…
例子:#mdadm –assemble /dev/md0 /dev/sda1 /dev/sdb1
说明:把sda1和sdb1重组成/dev/md0。
用法:mdadm –assemble –scan md-devices-and-options…
例子:#mdadm –assemble –scan /dev/md0
说明:从配置文件读出设备列表,根据超级块中的信息,重组/dev/md0。
用法:mdadm –assemble –scan options…
例子:#mdadm –assemble –scan –uuid=xxxxxxx
说明:从配置文件读出设备列表,根据超级块中的uuid信息,重组uuid是xxxxxxx的RAID。
假如#mdadm –assemble –scan命令后面没有设备列表,mdadm会读取配置文件中所列的RAID信息,并尝试重组。假如系统中没有/etc/mdadm.conf配置文件,则会从/proc/partitions中读取设备列表。因此使用mdadm时,必须保证mdadm中的状态信息(/proc/mdstat)和/etc/mdadm.conf配置文件一致,否则重启操作系统后,会出现问题。
用法:mdadm options… devices..
例子:#mdadm –detail –test /dev/md0
说明:这条命令的返回值:0代表md0正常;1代表md0至少有一个failed的组件设备;2代表md0有多个failed组件设备,这个md0已经不能使用,即失效(md0是raid1、raid5、raid6、raid10时);4代表获取md0设备信息错误。
用法: mdadm –monitor options… devices..
说明:mdadm除了报告事件以外,mdadm还可以把一个RAID中的热备盘移动到另一个没有热备盘的RAID中,前提条件是这些RAID都属于同一个spare-group(RAID的spare-group可以在配置文件里设置)。
说明:当命令中有设备列表时,mdadm只会监控这些设备。当没有设备列表时,配置文件中的所有RAID都会被监控。当使用–scan选项时,/proc/mdstat中的设备也会被监控。
说明:传给program的三个参数是事件名、涉及到的md device名、涉及到的其他设备(比如组件设备失效)。
说明:监控的事件有
DeviceDisappeared 当RAID0和linear中某个设备失效时,就会出现RAID消失。
RebuildStarted 重建RAID
RebuildNN 重建百分比,NN代表20,40,60,80
RebuildFinished 重建结束
Fail RAID中某个活动组件设备失效
FailSpare RAID中某个热备盘失效
SpareActive RAID中热备盘启用,用于重建RAID
NewArray 在/proc/mdstat中监控到有新的RAID被创建
DegradedArray RAID降级
MoveSpare 热备盘从一个RAID中移动到另外一个RAID中,前提是这两个RAID属于同个spare-group
SparesMissing 发现RAID中的热备盘数比配置文件中的少
TestMessage 测试
说明:只有Fail、FailSpare、DegradedArray、SparesMissing、TestMessage事件才会触发发送Email
说明:能改变RAID1、5、6中的”size”属性。
说明:能改变RAID1、5中的”raid-disks”属性。
说明:增加移除RAID中的write-intent bitmap。
创建配置文件
例子:#echo ‘DEVICE /dev/hd*[0-9] /dev/sd*[0-9]‘ > mdadm.conf
#mdadm –detail –scan >> mdadm.conf
说明:创建配置文件的原型。
创建RAID
例子:#mdadm –create /dev/md0 –chunk=64 –level=1 –raid-devices=2 /dev/sda1 /dev/sb1
说明:创建md0,RAID级别是RAID1,条带大小事64KB,成员盘是sda1、sdb1
给RAID增加热备盘
例子:#mdadm /dev/md0 -add /dev/sdc1
说明:给md0增加热备盘sdc1。
查看RAID信息和组件设备信息
例子:#cat /proc/mdstat
说明:查看当前所有RAID的状态
例子:#mdadm –detail /dev/md0
说明:查看md0的详细信息
例子:#mdadm –examine /dev/sda1
说明:查看组件设备sda1中超级块的信息和状态
删除RAID
例子:#mdadm –stop /dev/md0
说明:停止md0的运行
例子:#mdadm — zero-superblock /dev/sda1
说明:清除组件设备sda1中超级块的信息
格式简要说明
格式说明:SYNTAX xxx xxx xxx xxx xxx
注释说明:#This is a comment.
多行说明:假如任意一行中开头是以空白开头的(space/tab),这行被看做是上一行的延续。
空行说明:空行被忽略
关键字说明
DEVICE:
该关键字后面跟的是设备列表(设备和分区),这些设备可能是某个md设备的组件。当要查找某个RAID的组件设备时,mdadm会扫描这些设备。
例子:DEVICE /dev/hda* /dev/hdc*
例子:DEVICE /dev/hd*[0-9] /dev/sd*[0-9]
例子:DEV /dev/sd*
例子:DEVICE /dev/discs/disc*/disc
例子:DEVICE partitions
说明:mdadm会读取/proc/partitions中的设备。假如在配置文件中没有DEVICE关键字,
则假定”DEVICE partitions”,也就是默认会读取/proc/partitions中的设备
APPLY:
说明:关键字ARRAY标识一个活动的RAID,ARRAY后面跟着的是RAID的名字。RAID名字后面跟着的是RAID的属性值,这些属性值标识一个RAID,或者标识一个组的成员RAID(spare-group)。假如给出了多个属性值,则每个组件设备中的超级块信息必须匹配属性值。

MAILADDR:
使用monitor模式(同时也使–scan选项)时,警报事件发送到的Email地址。
MAILFROM:
邮件地址。
PROGRAM:
“mdadm –monitor”监测到的事件都会发送给这个程序。只能有一个程序。
CREATE:
该行中是创建RAID时使用的默认值。
配置文件示例:
DEVICE /dev/sd[bcdjkl]1
DEVICE /dev/hda1 /dev/hdb1
# /dev/md0 is known by it’s UID.
ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371
# /dev/md1 contains all devices with a minor number of
# 1 in the superblock.
ARRAY /dev/md1 superminor=1
# /dev/md2 is made from precisey these two devices
ARRAY /dev/md2 devices=/dev/hda1,/dev/hdb1
# /dev/md4 and /dev/md5 are a spare-group and spares
# can be moved between them
ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df
spare-group=group1
ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977
spare-group=group1
# /dev/md/home is created if need to be a partitionable md array
# any spare device number is allocated.
ARRAY /dev/md/home UUID=9187a482:5dde19d9:eea3cc4a:d646ab8b
auto=part
MAILADDR root@mydomain.tld
PROGRAM /usr/sbin/handle-mdadm-events
CREATE group=system mode=0640 auto=part-8
HOMEHOST <system>
当系统中不存在配置文件/etc/mdadm.conf、/etc/mdadm/mdadm.conf时,系统启动时,md驱动会自动查找分区为FD格式的磁盘。所以一般会使用fdisk工具将hd磁盘和sd磁盘分区,再设置为FD的磁盘分区。因此假如直接使用/dev/sda、/dev/sdb创建RAID,系统重启后,不会重组该RAID。