mdadm命令

mdadm是一个用于创建、管理、监控RAID设备的工具,它使用linux中的md驱动。

基本语法 :
mdadm [mode] [options]

mdadm程序是一个独立的程序,能完成所有软件RAID的管理功能,主要有7中使用模式 [mode]
Assemble:将以前定义的某个阵列加入当前在用阵列。
Build:Build a legacy array ,每个device 没有 superblocks
Create:创建一个新的阵列,每个device 具有 superblocks
Manage: 管理阵列,比如 add 或 remove
Misc:允许单独对阵列中的某个 device 做操作,比如抹去superblocks 或 终止在用的阵列。
Follow or Monitor:监控 raid 1,4,5,6 和 multipath 的状态
Grow:改变raid 容量或 阵列中的 device 数目

3. 概念解析
 

/proc/mdstat : 当前md(软RAID)的状态信息

/etc/mdadm.conf : mdadm的配置文件

Active devices : RAID中的活动组件设备

Faulty device : RAID中失效的设备

Spare device : RAID中热备盘

Device Names : RAID设备名、标准格式是”/dev/mdNN”或者”/dev/md/NN”

md            : Multiple Devices虚拟块设备(利用底层多个块设备虚拟出一个新的虚拟块设备)。

md driver        : MD的驱动

Array            : 阵列,跟RAID意思相同

Raid            :不解释

md device        : 就是使用MD创建的软件RAID

md array :同上

md设备        :同上

mdadm各个选项

可用的 [options]:
-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 选项
-f, --force
-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。此选项正相反。
-a, --auto{=no,yes,md,mdp,part,p}{NN}:
各种模式的使用
 

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

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。

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设备信息错误。

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。

Grow模式
说明:能改变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中超级块的信息

监控RAID

网友补充 在这里补充本文不完善的地方,或是在此讨论和纠错,知识在于分享,您补充的资料会让更多人获得帮助!