• 功能:事件通过syslog报告。
  • 举例:mdadm --monitor --syslog /dev/md0 &
  • 备注:message被打印到/var/log/message文件里面
–delay(-d)
  • 功能:查看设备的延迟时间。默认是60s
  • 举例:mdadm --monitor –mail=xxx@csdn.net --program=/root/pc3x.sh --delay=300 /dev/md0 &
–daemonise(-f)
  • 功能:mdadm将以后台demon形式来运行。
  • 举例:mdadm --monitor --syslog /dev/md0 -f
  • 备注:demon的ID号将被打印到屏幕上面。可以配合–pid-file参数使用,将ID号打印到–pid-file参数指定的文件中。
–pid-file(-i)
  • 功能:当mdadm以demon模式运行时,把进程ID写入到指定的文件中。
  • 举例:mdadm --monitor --syslog --pig-file=/root/pc3x.pid /dev/md0 -f
  • 备注:注意,该参数必须和-f参数一起使用。如果不使用—pid-file参数,进程号将被打印到屏幕上,指定该参数后,进程号被写入到指定的文件中。
–oneshot(-1)
  • 功能:立刻检查一次盘阵,会检查到NewArray、DegradedArray 、SparesMissing事件。
  • 举例:mdadm --monitor --oneshot --scan --program=/root/pc3x.sh
  • 备注:该参数不能与-f参数一起使用。虽然与-f参数一起使用不会报错,但是demon根本不会启动起来。与—scan参数配合使用,效果更加。在配置cron一起使用,效果更上一层。
–test(-t)
  • 功能:当启动mdadm的时候,给每个md设备发送一条TestMessage事件。
  • 举例:mdadm --monitor --test --syslog /dev/md0 -f
  • 备注:当–test配合–scan使用时,它会给/etc/mdadm.conf文件里面的每个md设备发送TestMessage事件。如果mdadm --monitor命令指定设备,它会给每个设备发送TestMessage事件。
–config(-c)
  • 功能:指定特定的配置文件,通过配置文件指定邮件地址和程序。不使用该参数,默认文件为/etc/mdadm.conf。
  • 举例:mdadm --monitor --scan --config=文件 --oneshot
  • 备注:如果指定其他配置文件,则/etc/mdadm.conf文件将失效。
–scan(-s)
  • 功能:监控/proc/mdsate文件中列出的所有设备。
  • 举例:mdadm --monitor --scan --program=/root/pc3x.sh -f
  • 备注:当使用–scan参数时,–program或者—mail,两个参数必须指定一个。同时,mdadm --monitor命令行不需要特别说明某个设备。

2.8 非特定模式参数

–help(-h)
  • 功能:显示帮助信息,后面跟上选项名称,将显示该选项方式下所有选项帮助信息。
  • 举例:mdadm --help; mdadm --help --add; mdadm --create --help
–help-options
  • 功能:显示一些帮助信息。跟–help大同小异。
  • 举例:mdadm --help-options
–version(-V)
  • 功能:打印mdadm版本
  • 举例:mdadm --version
–verbose(-v)
  • 功能:对于正在发生的,显示详细信息。
  • 举例:mdadm -D -v -s
  • 备注:该参数可以使用2遍,显示额外信息。目前可以应用在–detail --scan 和 --examine --scan。
–quiet(-q)
  • 功能:避免打印完全的信息。
  • 备注:这种模式下,mdadm除非是非常重要的信息,否则不会打印任何信息。
–brief(-b)
  • 功能:显示简短信息。比–verbose少。
  • 举例:mdadm -D /dev/md0 --brief
  • 备注:可以与–detail或–examine一起使用。当与–verbose一起使用时,打印–verbose与–brief中间状态信息。
–force(-f)
  • 功能:不同模式下面有不同意思,具体详见各个模式。仔细小心使用这个参数。
–config(-c)
  • 功能:指定配置文件。
  • 备注:默认配置文件为/etc/mdadm.conf,如果这个文件不存在,将是/etc/mdadm/mdadm.conf。如果值是none,mdadm会将配置文件看成空文件。如果值是partitions,mdadm将读取/proc/partitions以获取所有设备。
    mdadm --examine --brief --scan --config=partitions
–scan(-s)
  • 功能:扫描配置文件或者/proc/mdstate文件,去获取信息。
  • 备注:从/proc/mdstate文件中获取一些/etc/mdadm.conf文件中没有的信息。如:成员盘。唯一例外就是misc和monitor模式下,使用—detail或者—stop,mdadm将从/proc/mdstate文件中获取所有阵列。如mdadm --stop --scan将停止所有的md设备。

2.9 mdadm.conf

配置文件作用:

/etc/mdadm.conf作为默认的配置文件,主要作用是方便跟踪软RAID的配置,尤其是可以配置监视和事件上报选项。在这里我们主要说明配置文件在组装RAID时的作用。更多mdadm.conf使用可参见man mdadm.conf。

举例:

  • 配置磁盘设备文件名:echo DEVICE /dev/sd[b-i] > /etc/mdadm.conf
  • 配置软RAID信息:mdadm --detail --scan >> /etc/mdadm.conf
  • 利用配置文件组装软RAID:mdadm -A --scan
  • 当RAID无法组装时(如缺少成员盘,或读写造成superblock数据过期),强制组装软RAID:mdadm -A --scan --force

组装中的几点说明:

  • –scan参数只能根据扫描配置文件中配置的RAID,没有配置在配置文件中的RAID不能组装起来。
  • DEVICE中配置的是组装RAID时,所有要扫描的磁盘,如RAID中的成员盘没有配置到DEVICE项中,则该磁盘无法组装到RAID中。

需要加–force才能使RAID active的情况:

  • 对于有冗余且无热备的RAID,停止后,又掉了一块盘,组装时不加–force,RAID组装起来为inactive状态,mdadm -D 查不到RAID信息,仅/proc/mdstat中可看到简要信息。对于先掉盘,后停止的RAID,不需要–force也可以组装成功。
  • 对于有冗余且无热备,RAID中所有成员盘虽然在系统中,但配置文件的DEVICE的配置缺少一个成员盘,则组装时,可以理解为缺少一块成员盘。因此组装结果同1中相同。
  • 重构状态的RAID,重启后,不指定–force无法组装成功。

无法将RAID组装成active的情况:

对于上节说到的缺少一块成员盘时,可以通过–force参数将RAID组装起来,但对于掉了两块或两块以上的成员盘时,无法将RAID再组装成active状态,只能组装成一个inactive状态的RAID。

3. 使用示例

3.1 create模式

用法: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

3.2 Assemble模式

用法: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配置文件一致,否则重启操作系统后,会出现问题。

3.3 Misc模式

用法:mdadm options… devices..

例子:#mdadm –detail –test /dev/md0

说明:这条命令的返回值:0代表md0正常;1代表md0至少有一个failed的组件设备;2代表md0有多个failed组件设备,这个md0已经不能使用,即失效(md0是raid1、raid5、raid6、raid10时);4代表获取md0设备信息错误。

3.4 Monitor模式 (只监控raid1/5/6/10,不监控raid0)

用法: 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

3.5 Grow模式

说明:能改变RAID1、5、6中的”size”属性。

说明:能改变RAID1、5中的”raid-disks”属性。

说明:增加移除RAID中的write-intent bitmap。

3.6 命令举例

创建配置文件
	例子:#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中超级块的信息

3.7 配置文件详解

格式简要说明

格式说明: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>

3.8 注意事项

当系统中不存在配置文件/etc/mdadm.conf、/etc/mdadm/mdadm.conf时,系统启动时,md驱动会自动查找分区为FD格式的磁盘。所以一般会使用fdisk工具将hd磁盘和sd磁盘分区,再设置为FD的磁盘分区。因此假如直接使用/dev/sda、/dev/sdb创建RAID,系统重启后,不会重组该RAID。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐