您的当前位置:首页正文

mdadm命令详解

来源:帮我找美食网
mdadm命令详解

创建阵列(-C或--create)

--raid-devices(-n)

功能:指定阵列中成员盘个数。

举例:mdadm --create /dev/md0 -l5 -n2 /dev/sdb /dev/sdc -x1 /dev/sdd

备注:当创建linear, multipath, raid0和raid1时,允许指定成员盘个数为1,但要使⽤--force参数。raid4与raid5不允许指定成员盘个数为1。成员盘个数可以通过--grow参数来修改,只有RAID1、RAID5 和RAID6阵列⽀持。--spare-devices (-x)

功能:指定阵列中热备盘个数。

举例:mdadm --create /dev/md0 -l5 -n2 /dev/sdb /dev/sdc -x1 /dev/sdd备注:⽆

--size (-z)

功能:创建阵列时,指定每个成员盘使⽤多⼤的空间。单位KB。举例:mdadm --create /dev/md0 -l5 -n3 /dev/sd[b-d] -z 4194304

备注:当创建RAID1/4/5/6时,可以指定每个成员盘使⽤多⼤的空间。同时磁盘最后要留下128Kb⼤⼩空间,⽤于存放RAID的

superblock。如果没有指定该参数,mdadm将使⽤最⼩成员盘的⼤⼩指定该值。如果某个成员盘的⼤⼩⼤于最⼩成员盘1%,将会有警告信息,提⽰有部分空间没有被使⽤。创建阵列时,如果RAID中所有成员盘使⽤了的空间都⼩于其本⾝的⼤⼩,那么它们剩余的空间可以通过--grow来扩容。--size=max,mdadm将⾃动选择⼀个适合的最⼤值,来创建阵列。--chunk (-c)

功能:指定条带⼤⼩。单位KB,默认值64KB。

举例:mdadm --create /dev/md0 -l5 -n2 /dev/sdb /dev/sdc -x1 /dev/sdd -c 128

备注:测试过指定4、8、16、32、64、128、256、1024、2048、4096、8192、16384、32768、65536、131072。最⼤值尚未测试出来,不知是否有最⼤值。--rounding

功能:指定linear阵列的rounding因⼦。等价于chunk size,但linear设备的chunk不是条带分布在所有磁盘上,第⼀个磁盘分布完后,再分布到第⼆个磁盘上。

举例:mdadm --create /dev/md1 -llinear -n2 /dev/sdb /dev/sdc --rounding=128

备注:如果建⽴raid5,指定该参数为128。mdadm –D获取详情时,显⽰Chunk Size为128K。--level (-l)

功能:设置raid级别。

举例:mdadm --create /dev/md0 -l5 -n2 /dev/sdb /dev/sdc -x1 /dev/sdd --chunk=128

备注:当创建阵列时,--level参数后⾯可以跟定的值有linear, raid0, 0, stripe, raid1, 1, mirror, raid4, 4,raid5, 5, raid6, 6, raid10, 10,multipath, mp, faulty(指定faulty没有创建成功)。其中,存在多个同义值。当--build阵列时,--level参数后⾯可以跟定的值有linear,stripe, raid0, 0, raid1, multipath, mp, and faulty。该参数不⽀持--grow。--layout (-p)

功能:配置raid5和raid10阵列的数据布局,控制faulty失败模式。举例:mdadm --create /dev/md0 -l5 -n3 /dev/sd[b-d] -p ra

备注:raid5奇偶校验块的布局可以为left-asymmetric, left-symmetric, right-asymmetric, right-sym-metric, la, ra, ls, rs。默认为left-asymmetric。--parity

功能:等同于--layout--bitmap (-b)

功能:使⽤bitmap模式记录RAID阵列有多少个块已经同步(resync),正常停⽌RAID后,再将RAID组装起来时,磁盘上已同步块不⽤再次同步。

举例:mdadm --create /dev/md0 -l5 -n3 /dev/sd[b-d] --bitmap=internal --force

备注:可以将bitmap记录在⽂件中,⽂件名可以是不存在的,如果⽂件被⽤来记录过bitmap可以通过指定--force参数来清空原来的信息。如果创建阵列的时候指定了⽂件,那么组装阵列时,也要指定该⽂件。如果值为internal,则bitmap将被当作元数据信息,写⼊到每个成员盘上⾯。--grow模式下,如果值为none,则bitmap信息将被清除。

注意:位图⽂件只能存储在ext2或者ext3⽂件系统上。存储到其他⽂件系统上⾯,可能导致严重问题。--bitmap-chunk

功能:指定bitmap中的每1个bit位对应RAID中每个数据块的⼤⼩,单位为KB。如--bitmap-chunk=1024,则表⽰bitmap中1个bit对应RAID中1024K。即如果bitmap中第1个bit为1,代表RAID中第1M的数据在各个磁盘上是不⼀致的,需要同步。举例:mdadm --create /dev/md0 -l5 -n3 /dev/sd[b-d] --bitmap=internal --bitmap-chunk=1024

备注:使⽤⼀个⽂件存储位图时,默认使⽤最⼩的。不会⼩于4,不会超过2^21(2M)。当--bitmap=internal时,成员盘中⽤⽤记录bitmap的空间有个最⼤值,如果指定的bitmap-chunk过⼩,则bitmap就会使⽤过⼤的空间,如果超过了最⼤空间,则⽆法创建成功。如果不指定bitmap-chunk,则会使⽤bitmap允许的⼤空间来⾃动计算出⼀个bitmap-chunk的最⼩值。--write-mostly(-w)

功能:阵列的成员盘指定该参数后,在应⽤中该成员盘只进⾏数据写,⽽不从它上⾯读取数据。该参数只针对RAID1有效。举例:mdadm --create -l1 -n2 /dev/sdi --W /dev/sdj备注:--create 、–build和—add时,均可指定该参数。通过mdadm –D可以查询到哪个设备指定了该参数。Number Major Minor RaidDevice State0 8 128 0 active sync /dev/sdi

1 8 144 1 active sync writemostly /dev/sdj 通过cat /proc/mdstat也可以查看该信息。md1 : active raid1 sdi[0](W) sdj[1](W)

dd if = /dev/md1 of=/dev/null bs=1M count=4096 &iostate –x /dev/sdi /dev/sdj 1 10发现仅仅有/dev/sdi盘有流量变化。--write-behind

功能:该参数只针对RAID1有效。对于标记为write-mostly的设备,延迟写。若RAID1中有⼀个盘是本地磁盘,⼀个盘是⽹络上导⼊的磁盘,则对导⼊的磁盘设置write-behind参数。在写⼊数据时,本地磁盘数据写完后,RAID则认为该次写操作已完成。举例:mdadm --create /dev/md1 -l1 -n2 /dev/sde --wrtie-mostly /dev/sdf --write-behind –bitmap=internal备注:该参数仅仅⽀持raid1。使⽤该参数,必须指定bitmap。该参数没有经过测试。--assume-clean

功能:创建阵列时,不初始化磁盘上的数据,将指定的磁盘直接组成⼀个RAID。举例:mdadm --create -l5 -n3 /dev/sd[b-d] --assume-clean

备注:当我们可以保证RAID上的数据是⼀致的,不需要初始化,则可以使⽤这个参数,⼀⽅⾯可以节省初始化时间,更重要的是,当RAID被损坏后,如果磁盘都在系统中,可以使⽤此参数,恢复RAID上的数据。--backup-file

功能:通过--grow参数来扩充raid5的成员盘数量时,如果没有空闲盘,可以通过该参数指定⼀个⽂件顶替。举例:mdadm --grow /dev/md4 –n4 –backup-file=/tmp/file.backup

备注:通过该参数,仅仅⽀持扩展⼀个磁盘。不能对降级状态的RAID5进⾏扩容。扩容后,mdadm将执⾏数据迁移。--name(-N)

功能:阵列名称。

举例:mdadm --create /dev/md4 -l5 -n3 /dev/sd[e-g] --metadata=1.0 --name=aaa

备注:创建阵列时,superblock采⽤1.0版本,该参数才⽣效。组装阵列的时候,可以通过该参数来组装。mdadm -Av --name=aaa/dev/md4 /dev/sd[b-h]。如果创建时,没有指定--name参数,mdadm将⾃动为阵列选取⼀个名字。选取规则是,选取md设备名称的最后部分作为该阵列的名字。例如:/dev/md3,则3将被选择为阵列的名称。--homehost

功能:创建时,通过该参数可以将主机名记录在成员盘的superblock信息中,在组装时⽤来匹配磁盘中记录的主机名与当前主机是否⼀致,如果不⼀致,组装不成功。

举例:mdadm --create /dev/md1 -l5 -n3 /dev/sd[b-d] --homehost=pc3x

备注:它将覆盖mdadm.conf⽂件⾥⾯HOMEHOST字段。homehost信息将被保存在superblock中,对于1.0以上版本superblock,它将作为name的前缀。对于0.90版本superblock,它将存储与UUID后64位中。--run(-R)

功能:当阵列的活跃盘上⾯存在其他阵列的superblock信息时,强制启动阵列。举例:mdada --create /dev/md0 -l5 -n3 /dev/sd[b-d] --run

备注:构建阵列的盘存在其他阵列的superblock信息时,如果不加--run参数,mdadm将会弹出确认信息Continue creating array?。指定--run参数,将跳过确认信息,直接启动阵列。

--force(-f)

功能:强制mdadm接受geometry和layout说明。

举例:mdadm --create /dev/md0 -l1 -n1 /dev/sde --force

备注:正常情况下,mdadm不允许使⽤⼀块盘建⽴阵列,包括linear, multipath, raid0和raid1。加—force,将可以建⽴⼀块盘的阵列。通常情况下,建⽴raid5时,mdadm会⽤n-1个成员盘建⽴⼀个降级状态的阵列,然后,将最后⼀块成员盘被当成热备盘的形式加⼊到阵列中。这样,mdadm将执⾏recover操作。加--force,mdadm将直接建⽴⼀个active状态的阵列,然后执⾏resync操作。-a, --auto{=no,yes,md,mdp,part,p}{NN}

功能:通知mdadm是否创建设备⽂件,并分配⼀个未使⽤的次设备号。举例:mdadm --create /dev/md0 -l5 -n3 /dev/sd[b-d] --auto=md备注:

auto默认值是--auto=yes,需要md设备的设备⽂件名有⼀个标准格式,根据这个设备⽂件名的格式来指定RAID是否可分区以及该RAID的次设备号。

当--auto=yes时标准格式为:不可分区阵列,/dev/mdNN、/dev/md/NN,如指定设备⽂件名为/dev/md0,则该RAID是⼀个不可分区的,且次设备号为0。可分区阵列/dev/md/dNN和/dev/md_dNN。

--auto=no,将不会创建设备⽂件,如果不存在指定的设备⽂件,将不能创建阵列。--auto=md,创建⼀个不可以分区的阵列。

--auto=mdp/part/p,创建⼀个可以分区的阵列。

如果指定了--scan参数,那配置⽂件(/etc/mdadm.conf)⾥⾯指定的auto=将覆盖命令⾏后⾯给定的--auto=。--symlink=no

功能:禁⽌创建软连接。

举例:mdadm --create /dev/md/0 -l5 -n3 /dev/sd[b-d] --symlink=no

备注:正常情况下,mdadm在/dev/md/下⾯创建设备时,它会在/dev/⽬录下⾯为该设备创建⼀个软连接,名字以md或者md_开始。指定该参数,将禁⽌该功能。即使/etc/mdadm.conf⽂件⾥⾯禁⽌创建软连接,通过--symlink=yes也可以强制创建。--metadata(-e)

功能:指明被使⽤superblock类型。

举例:mdadm --create /dev/md/0 -l5 n3 /dev/sd[b-d] -e1.0

备注:当创建阵列时,默认是0.90。默认值可以改变,mdadm.conf⽂件中,写如下信息:CREATE metadata=1。可选择值为:

0.90,default:使⽤默认的0.90版本superblock。这个版本限制阵列只能有28个成员盘和RAID1的成员盘不能⼤于2TB(没有测试过)。1.0,1.1,1.2:使⽤新版本superblock。它有新的约束。不同⼦版本,存储superblock于磁盘不同位置。1.0,末尾;1.1,开始;1.2,开始4K。

Build阵列(--build)

该模式同create参数相同,但该模式创建的是⽆superblock的raid0 、linear、 multipath、 or faulty的RAID。详细参数说明,见create模式。

组装阵列--assemble或-A)

该模式⽤来组装阵列。当阵列被停⽌后,或重启设备时,如要继续使⽤该阵列,此要将该阵列组装起来。下⾯详细介绍该模式的参数。--uuid(-u)

功能:通过匹配uuid来重构raid。

举例:mdadm -Av --uuid=af25a90b:0d43e494:46533453:86b2b0d4 /dev/md1

备注:uuid号指raid的uuid号,如果磁盘中记录的uuid号与指定的uuid号不匹配,则不使⽤该磁盘。--super-minor(-m)

功能:通过匹配设备次设备号来重构raid。举例:mdadm -A /dev/md0 --super-minor=0备注:

对于superblock版本为1.0的阵列,不能通过该参数进⾏重组。

次设备号在创建阵列时,已经分配。重组阵列时,对于不包含该次设备号的设备将不能重组到阵列中。例如:重组的md设备为/dev/md0,那么mdadm将寻找次设备号为0的所有设备。

如果创建阵列时,阵列为/dev/md1,那么所有设备的次设备号为1,即使重组后,阵列变为/dev/md3,所有设备的次设备号还为1。--name(-N)

功能:通过name组装阵列。

举例:mdadm -A --name=god /dev/md0

备注:

仅⽀持superblock版本为1.0的阵列。

创建阵列时,要指定--name(或homehost)。组装时,--name要匹配每个设备上的name(或homehost)。下⾯举例说明:mdadm --create /dev/md1 -l5 -n3 /dev/sd[b-d] --e1.0 --homehost=pc3x --assume-cleanmdadm -D /dev/md1,获取Name字段值,应该为pc3x:N,N为数字。mdadm --stop /dev/md1

mdadm -A --name=Name字段值 /dev/mdX--force(-f)

功能:当superblock过期时,可以通过该参数强制组装。举例:mdadm -A --super-minor=0 /dev/md0 --force

备注:如当RAID在重构过程中,设备重启了,再组装RAID时,需要加--force参数,才能组装成功。--run(-R)

功能:当重组阵列active盘数少于创建时指定个数时,尝试启动阵列。举例:mdadm -A /dev/md0 /dev/sdb /dev/sdc --run

备注:正常情况下,组装阵列时,如果指定的active盘数⼩于期望的盘数,mdadm将组装成功,但状态是inactive,⽆法使⽤该RAID。如果指定了--run参数,mdadm将通过各种⽅式使其启动。下⾯举例说明。mdadm --create /dev/md0 -l5 -n3 /dev/sd[b-d]mdadm --stop /dev/md0

mdadm -A /dev/md0 /dev/sdb /dev/sdc;执⾏结果如下:

mdadm: /dev/md0 assembled from 2 drives - need all 3 to start it (use --run to insist).cat /proc/mdstate; 查询到md0信息如下:md0 : inactive sde[0] sdf[1]

mdadm --run /dev/md0;可以启动md0阵列。mdadm --stop /dev/md0

mdadm -A --run /dev/md0 /dev/sdb /dev/sdc;组装阵列并启动成功。--no-degraded

功能:组装降级阵列,不启动阵列。

举例:mdadm -A --no-degraded --scan /dev/md1

备注:正常情况下,mdadm -A --scan组装阵列时,即使扫描到盘个数⼩于阵列创建时指定盘个数,也可以组装并启动成功。当加上--no-degraded参数,则不启动该阵列。-a, --auto{=no,yes,md,mdp,part}

功能:更改md设备名称。

举例:mdadm -A --auto=mdp /dev/test /dev/sdb /dev/sdc /dev/sdd

备注:关于该参数具体说明,可以看create模式下相关部分。正常情况下,如果运⾏mdadm -A /dev/test /dev/sd[b-d]将失败,因为/dev/test不是标准md设备名。⽽指定了--auto=mdp后,可以组装成功,并为该设备产⽣⼀个次设备号。--bitmap(-b)

功能:指定组装RAID使⽤的bitmap⽂件,该⽂件为创建时指定的⽂件。举例:mdadm -A --bitmap=/root/aaa.file /dev/md1 /dev/sd[b-d]

备注:如果是internal类型的bitmap,重组时不需要指定。对于⾮internal类型的bitmap,如果不指定,组装成功的阵列将不在有bitmap功能。--backup-file

功能:如果⼀个RAID使⽤了backup-file参数进⾏了扩容,那么组装时,也需要指定backup-file。举例:mdadm -A /dev/md0 /dev/sd[b-d] --backup-file=/root/aaa备注: 下⾯举例说明:

mdadm --create /dev/md0 -l5 -n3 /dev/sd[b-d]

mdadm --grow /dev/md0 -n4 --backup-file=/root/aaamdadm --stop /dev/md0

mdadm -A /dev/md0 /dev/sd[b-d] --backup-file=/root/aaa如果重组时,如果不指定backup file。测试结果如下:

对于扩容完成的阵列,重组时指定backup file与否没有关系,均可以重组和启动成功。对于正在扩容中的阵列,停⽌阵列后,再重组,指定backup file与否也没有关系,均可以重启和启动成功,reshape进度继续,⽽⾮重新开始。

the system crashed during the critical section,这种情况下重组阵列,需要指定backup file(个⼈理解)。因为通过—backup-file扩充盘数时,⾸先会进⾏“mdadm: Need to backup 384K of critical section..”这步操作,然后是“mdadm: ... critical section passed.”,扩充磁盘数完成,进⾏reshape。--update(-U)

功能:组装阵列,更新每个设备的superblock信息。举例:mdadm -A /dev/md0 /dev/sd[b-d] --update=xxx

备注:xxx值可能为sparc2.2, summaries, uuid, name, homehost, resync, byteorder, devicesize or super-minor。󰀀 sparc2.2:

在linux内核版本为2.2下,需要指定该参数来给内核打⼀个patch。󰀀 super-minor:

该选项会更新每个设备的superblock信息中preferred minor字段,使该字段的值等于所属阵列的次设备号。当使⽤--super-minor组装阵列时,更换了md设备名称。这时,该设备的次设备号就会改变。但过mdadm –E可以查询后,发现各个成员盘中记录的阵列的次设备号没有更新。󰀀 uuid:

更新阵列的UUID。如果通过参数--uuid给定了⼀个合法的UUID,那么这个UUID将当作阵列的新UUID,⽽不是拿这个UUID来组装阵列之⽤。如果--uuid未指定,将随机选择UUID。正常情况下,组装阵列,其UUID是不变的。下⾯举例说明:mdadm -A /dev/md2 --super-minor=2 --update=uuid --uuid=bc3c1314:8ac4d622:8bf1a0f2:72d806aa结果为,改变阵列的uuid为bc3c1314:8ac4d622:8bf1a0f2:72d806aa。󰀀 name:

更改存储在阵列superblock中的Name字段。下⾯举例说明:

mdadm --create /dev/md1 -l5 -n3 /dev/sd[e-g] -e1.0 --name=pc3x --assume-cleanmdadm --stop /dev/md1

mdadm -A /dev/md1 /dev/sd[e-g] --update=name;

结果为,阵列的Name字段由pc3x更新为md阵列的新次设备号,这⾥也就是1。mdadm -A /dev/md1 /dev/sd[e-g] --update=name;结果为,阵列的Name字段将不在更新。

mdadm -A /dev/md1 /dev/sd[e-g] --update=name --name=aaa;结果为,阵列的Name字段更新为aaa。󰀀 homehost:

更新superblock⾥⾯的homehost信息。对于0.9版本,更新UUID。对于1.0版本,更新name。mdadm --create /dev/md0 -l5 -n3 /dev/sd[b-d] -homehost=pc3x --assume-cleanmdadm -D /dev/md0;查询UUIDmdadm --stop /dev/md0

mdadm -A /dev/md0 /dev/sd[b-d] --homehost=aaa --update=homehostmdadm -D /dev/md0;查询UUID,与上⾯相⽐已改变。󰀀 resync:

标识阵列为dirty来表⽰所有冗余数据都可能是不正确。强迫mdadm开启resync,来保证冗余数据的正确性。󰀀 byteorder:

该选项的存在,允许阵列在不同字节序的机器上⾯移动。仅针对0.9版本superblock。(没有测试)󰀀 summaries:

纠正superblock中的摘要信息。包括total,working,active,failed,和spare devices。(没有测试)󰀀 devicesize:

这个属性很少使⽤,仅仅⽀持superblock版本为1.1和1.2。当阵列的成员盘改变⼤⼩的时候,这个功能会有⽤。成员盘的superblock中记录了成员盘可以⽤于存储数据的空间⼤⼩,当增加了成员盘空间,superblock并不会改变它相应的字段。这样,当增加阵列空间时,就会报错。使⽤--update=devicesize,可以修复这个错误。下⾯使⽤分区来测试说明。

mdadm --creat /dev/md0 -l5 -n3 /dev/sd[b-d]1; 假设这⾥分区⼤⼩均为2Gmdadm -E /dev/sdb1; 查看Avail Dev Size字段mdadm --stop /dev/md0

改变每个分区⼤⼩,增加到4G;fdisk命令先删除原分区在建⽴该分区。mdadm -E /dev/sdb1; 查看Avail Dev Size字段,没有识别出新增空间。 mdadm -A /dev/md0 /dev/sd[b-d]1mdadm --stop /dev/md0

mdadm -A /dev/md0 /dev/sd[b-d]1 --update=devicesize

mdadm -E /dev/sdb1; 查看Avail Dev Size字段,识别出新增空间。--auto-update-homehost

功能:该项仅在auto-assembly情况下起作⽤。该条件下,如果没有发现合适的阵列适合该homehost,mdadm将重新扫描所有阵列并组装它们,并更新它们的homehost为指定值。

举例:mdadm -A --scan --homehost=aaa --auto-update-homehost备注:下⾯举例说明。

mdadm --create /dev/md0 -l5 -n3 /dev/sd[b-d] --homehost=pc3x --assume-cleanmdadm --stop /dev/md0

mdadm -A --scan --homehost=aaa --auto-update-homehost

扩容阵列(--grow)

--raid-disks(-n)

功能:改变成员盘数量。

举例:mdadm --grow /dev/md0 --raid-disks=5

备注:阵列只有在正常状态下,才能扩容,降级及重构时不允许扩容。对于raid5来说,只能增加成员盘,不能减少。⽽对于raid1来说,可以增加成员盘,也可以减少。但要减少成员盘时,⾸先要将盘faulty和removed掉。--size(-z)

功能:改变成员盘⼤⼩。

举例:mdadm --grow /dev/md0 --size=4194304

备注:可以增加或者减⼩成员空间⼤⼩。当增加空间时,将执⾏resync操作。madam --grow /dev/md0 --size=max,分配可使⽤最⼤的空间给阵列。--bitmap(-b)

功能:增加或者移除bitmap。举例:

󰀀 mdadm --grow /dev/md0 -b internal;增加bitmap󰀀 mdadm --grow /dev/md0 -b none;移除bitmap--level(-l)

功能:尚不⽀持改变RAID级别。--layout(-p)

功能:改变校验数据分布。等同于create模式下--layout选项。

管理磁盘(--manage)

--add(-a)

功能:将指定设备添加到阵列中。

举例:mdadm --add /dev/md0 /dev/sdb

备注:如果RAID是正常状态,则--add⼀个磁盘后,该磁盘变为RAID的热备盘。如果RAID为降级状态,当--add所掉的成员盘时,若磁盘上记录了bitmap信息,则根据bitmap 信息来重构RAID磁盘中需要同步的部分。如果RAID为降级状态,--add⼀个⾮掉的成员盘,RAID开始全局重构。--re-add

功能:增加⼀个刚刚从阵列中移除不久的设备。

举例:mdadm -r /dev/md0 /dev/sdb --re-add /dev/sdb备注:--red-add与--add⽬前测试看来效果相同。--fail(-f)

功能:标记指定盘为faulty。

举例:mdadm -f /dev/md0 /dev/sdb

备注:除了可以指定设备名外,也可以指定detached。使⽤detached,可以导致从系统detached的盘被标记为faulty(这个没有测试)。--set-faulty

功能:作⽤等同于--fail--remove(-r)

功能:从阵列中移除指定设备。举例:

󰀀 mdadm -r /dev/md0 /dev/sdb /dev/sdc,移除md0中的sdb和sdc。

󰀀 mdadm -r /dev/md1 faulty;移除⼀个faulty的设备,并不能同时将所有faulty设备移除。󰀀 mdadm -r /dev/md1 detached;没有测试。备注:只可以移除spare和faulty盘。

misc模式

--query(-Q)

功能:检查设备是否为md设备,是否为md阵列的组成部分。举例:mdadm --query /dev/md0 or mdadm --query /dev/sdi备注:

󰀀 查询⼀个md设备,输出信息如下:

[root@localhost ~]# mdadm --query /dev/md0

/dev/md0: 15.100GiB raid5 3 devices, 0 spares. Use mdadm --detail for more detail.包括阵列名称、阵列⼤⼩、阵列级别、阵列的盘数和热备盘数。󰀀 查询⼀个⾮md设备(设备是md阵列的active盘),输出信息如下:[root@localhost ~]# mdadm --query /dev/sdj/dev/sdj: is not an md array

/dev/sdj: device 1 in 2 device active raid1 /dev/md3. Use mdadm --examine for more detail.󰀀 查询⼀个⾮md设备(设备是md阵列的faulty盘),输出信息如下:/dev/sdi: is not an md array

/dev/sdi: device 0 in 2 device undetected raid1 /dev/md2. Use mdadm --examine for more detail.󰀀 查询⼀个⾮md设备(设备存在superblock信息,但已经从md阵列移除),输出信息:/dev/sdg: is not an md array

/dev/sdg: device 2 in 3 device mismatch raid5 /dev/md0. Use mdadm --examine for more detail.󰀀 查询⼀个⾮md设备(设备不存在superblock信息),输出信息:[root@localhost ~]# mdadm --query /dev/sdk/dev/sdk: is not an md array--detail(-D)

功能:显⽰⼀个阵列的详细信息。举例:mdadm --detail /dev/md0备注:

󰀀 mdadm -D /dev/md0 显⽰信息如下:/dev/md0:

Version : 00.90.03 //superblock版本

Creation Time : Thu Jul 28 08:31:13 2011 //创建阵列时间Raid Level : raid5 //阵列级别

Array Size : 16777088 (16.00 GiB 17.18 GB) //阵列⼤⼩

Used Dev Size : 8388544 (8.00 GiB 8.59 GB) //每块成员盘使⽤在阵列中的⼤⼩Raid Devices : 3 //成员盘个数,正在重构中重构盘也计算在内Total Devices : 3 //磁盘总个数=active+failed+sparePreferred Minor : 0 //阵列次设备号

Persistence : Superblock is persistent //是否使⽤superblockIntent Bitmap : Internal //bitmap类型

Update Time : Sat Jul 30 08:45:47 2011 //更新时间State : active //阵列状态

Active Devices : 3 //活跃盘个数,正在重构中的重构盘不计算在内,⽽计算在Spare Device中,重构完成后,才从Spaer Devices中计算到此项中。

Working Devices : 3 //同Raid Devices相同。Failed Devices : 0 //faulty盘个数。

Spare Devices : 0 //热备盘个数,重构过程中顶⼊的重构盘仍计算在内。Layout : left-symmetric //冗余分布算法Chunk Size : 64K //条块⼤⼩

UUID : f4eea5d5:1959d933:c4cd1425:c6c88f28 //RAID uuidEvents : 0.66

Number Major Minor RaidDevice State //磁盘信息0 8 16 0 active sync /dev/sdb1 8 32 1 active sync /dev/sdc2 8 48 2 active sync /dev/sdd

󰀀 mdadm -Ds显⽰/proc/mdstat中所有阵列的信息

ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f4eea5d5:1959d933:c4cd1425:c6c88f28ARRAY /dev/md1 level=raid5 num-devices=3 UUID=cdaf2fef:dfe7b741:2fb91a6c:772f21a6ARRAY /dev/md3 level=raid1 num-devices=2 UUID=5c8695d2:e606d5ee:8fa15373:20bdb34a󰀀 mdadm -D --brief /dev/md0将列出md阵列的简略信息。

ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f4eea5d5:1959d933:c4cd1425:c6c88f28--export(-Y)

功能:与--detail⼀起使⽤,使阵列信息的输出格式变为key=value的格式。举例:mdadm --detail --export /dev/md0备注:输出的内容为:MD_LEVEL=raid0MD_DEVICES=4

MD_METADATA=0.90

MD_UUID=6905fc31:e0e4cdcc:0ae08b48:7f860f33--examine(-E)

功能:打印设备上⾯的superblock信息举例:mdadm --examine /dev/sdj备注:

󰀀 mdadm --examine /dev/sdb显⽰信息为:/dev/sdb:

Magic : a92b4efcVersion : 00.90.00

UUID : f4eea5d5:1959d933:c4cd1425:c6c88f28Creation Time : Thu Jul 28 08:31:13 2011Raid Level : raid5

Used Dev Size : 8388544 (8.00 GiB 8.59 GB)Array Size : 16777088 (16.00 GiB 17.18 GB)Raid Devices : 3Total Devices : 3Preferred Minor : 0

Update Time : Sat Jul 30 08:45:47 2011State : clean

Internal Bitmap : presentActive Devices : 3Working Devices : 3Failed Devices : 0Spare Devices : 0

Checksum : dfee75c0 - correctEvents : 0.66

Layout : left-symmetricChunk Size : 64K

Number Major Minor RaidDevice State

this 0 8 16 0 active sync /dev/sdb0 0 8 16 0 active sync /dev/sdb1 1 8 32 1 active sync /dev/sdc2 2 8 48 2 active sync /dev/sdd

󰀀 mdadm --examine --scan。如果/etc/mdadm.conf⽂件声明了DEVICE字段,将扫描该字段列出的设备。如果没有声明,将扫描所有设备。

ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f4eea5d5:1959d933:c4cd1425:c6c88f28ARRAY /dev/md1 level=raid5 num-devices=3 UUID=cdaf2fef:dfe7b741:2fb91a6c:772f21a6ARRAY /dev/md3 level=raid1 num-devices=2 UUID=5c8695d2:e606d5ee:8fa15373:20bdb34a󰀀 mdadm --examine --brief /dev/sdj列出具体设备所属于阵列的信息。

ARRAY /dev/md3 level=raid1 num-devices=2 UUID=5c8695d2:e606d5ee:8fa15373:20bdb34a--sparc2.2

功能:对于linux内核版本为2.2下创建的RAID,通过该参数修正阵列的superblock信息举例:mdadm -E --sparc2.2 /dev/md0

备注:如果阵列是通过2.2内核加上RAID patch的形式建⽴的,那样superblock建⽴的不正确,⾄少与2.4及以后的内核不兼容。可以通过--examine --spare2.2,在显⽰信息之前修正它。也可以通过--assemble --update=sparc2.2,重装它。--examine-bitmap(-X)

功能:显⽰bitmap信息。

举例:mdadm -X /dev/sdx or mdadm -X /root/bitmap.file备注:备注:mdadm -X /dev/sdh显⽰内容Filename : /dev/sdhMagic : 6d746962Version : 4

UUID : 85086dde:4b2d35db:8e186060:0589add1Events : 0

Events Cleared : 0State : OK

Chunksize : 32 KB

Daemon : 5s flush periodWrite Mode : Normal

Sync Size : 8388544 (8.00 GiB 8.59 GB)

Bitmap : 262142 bits (chunks), 262142 dirty (100.0%)--run(-R)

功能:阵列中某⼀部分设备包含其他阵列superblock信息时,该阵列可能是inactive状态,或需要⽤户确认后才能启动,使⽤该参数可以直接将阵列设为active状态。

举例:

󰀀 mdadm --CR /dev/md0 -l5 -n3 /dev/[b-d] -x1 /dev/sde --bitmap=internal --force󰀀 mdadm -R /dev/md0--stop(-S)

功能:停⽌阵列。被停⽌的阵列需要重新组装后才能使⽤。举例:mdadm --stop /dev/md0--readonly(-o)

功能:将active阵列变成只读。举例:mdadm --readonly /dev/md0

备注:通过cat /proc/mdstate⽂件可以查看到阵列的这个变化。如果正在进⾏重构过程中,阵列变成了只读,那阵列将不能够继续进⾏重构。不可以重复的对同⼀设备进⾏只读设置。--readwrite(-w)

功能:将只读陈列变成可读写。举例:mdadm --readwrite /dev/md0

备注:阵列默认是可读写。不可以重复的对同⼀设备进⾏可读写设置。--zero-superblock

功能:将包含合法md信息的superblock区域置为零。举例:mdadm --zero-superblock /dev/sdj

备注:停⽌阵列后,若需要清理磁盘上的阵列信息,需要执⾏该操作。--test(-t)

功能:与--detail⼀起使⽤,获取阵列的状态。举例:mdadm --detail --test /dev/md0; echo $?

备注:--detail参数单独使⽤时,只有在获取⼀些设备的有⽤信息失败情况时,才返回⾮0。⽽与--test⼀起使⽤,echo $?的结果如下:󰀀 0:阵列处于active状态。

󰀀 1:阵列存于degrade和重构状态。󰀀 2:阵列处于disabled状态。

󰀀 4:获取设备信息时,存在错误。-W, --wait

功能:它将等待resync, recovery, or reshape完成,然后返回。举例:mdadm -W /dev/md0

备注:如果md设备没有进⾏resync, recovery, or reshape,该命令将直接返回。echo $?结果为1。如果mdadm等待md设备完成resync, recovery, or reshape后,命令执⾏结束,echo $?为0。

监控模式(--monitor)

指定监控对象:

对于命令mdadm --monitor options... devices...,如果给出了devices,则仅仅监控指定的devices。反之,监控所有配置⽂件(/etc/mdadm.conf)中的devices。如果指定了--scan,则/proc/mdstate⾥⾯列出的设备也被监控。输出监控事件:

监控的结果就是产⽣事件。事件被传递给指定的程序或者发送给指定的E-mail,则事件报告给stdout。具体如何指定事件的输出见下节详述。当传递事件给程序时,程序⽴刻运⾏。传递给程序2-3个参数。第⼀个是事件的名称,第⼆个是产⽣事件的md设备名称,如果存在,第三个参数是关联设备的名称。被监控事件类型:

DeviceDisappeared:对mdadm配置monitor错误时,会产⽣该事件。例如:对于⼀个已经配置了监控进程的md设备,再次给它配置监控进程,后配置的监控进程将产⽣该事件。对于--mail参数配置错误的参数,如配置两个以上邮箱,之间以空格隔开。可以配置成功,但会报该事件。RebuildStarted:md设备开始重建。

RebuildNN:md设备的重建进度到达某些值时产⽣监控事件。如进度值为20、40、60和80时,产⽣相应监控事件。RebuildFinished:md设备重建完成。

Fail:md设备上⾯⼀个磁盘状态为faulty。FailSpare:热备盘代替faulty盘失败。

SpareActive:热备盘代替faulty盘成功,并且Spare盘状态最终变为active(⾮spare)状态时,产⽣监控事件。NewArray:/etc/mdadm.conf也/proc/mdstat两个⽂件对⽐,mdadm.conf⽂件中不存在的md设备,即被报告该事件。DegradedArray:检查到存在降级的md设备。

MoveSpare:在使⽤全局热备时,热备盘从⼀个md设备移动到另⼀个md设备。

SparesMissing:/etc/mdadm.conf⽂件,某个md设备指定了spares参数(热备盘个数),⽽monitor发现md设备的热备盘个数少于指定个数时,产⽣该事件。

TestMessage:与--test参数配合,当运⾏monitor命令时,相应的md设备产⽣该事件。

所有事件都可以触发程序运⾏,但仅有Fail、FailSpare、DegradedArray、SparesMissing 和TestMessage事件可以通过mail发送。可监控级别:

监控md设备状态的变化。该参数对raid1、4、5、6、10和multipath盘阵有作⽤。对于raid0和linear,由于它们⽆相关监控事件不需要监控。监控设置全局热备:

除了能够报告事件外,对于处于相同spare-group的阵列,如果其中⼀个阵列的某个磁盘损害且不存在热备盘,⽽另外阵列存在热备盘,monitor进程可以把热备盘移动到这个阵列上⾯来。及多个阵列可以共有⼀个热备盘。配置⽂件格式如下:

DEVICE /dev/sd*

ARRAY /dev/md0 level=raid5 num-devices=3 spares=1 UUID=a7e27ec9:3389e70a:2a2d9651:abbe4ad6 spare-group=group1

ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8f427b1d:d86e2313:7f5d9f04:310f9e63 spare-group=group1对于上⾯md0和md1,配置了spare-group都是group1,当监控开启后,md1若掉盘了,监控发现该事件后,会⾃动将md0中的热备顶到md1中,供其使⽤。

--mail(-m)

功能:指定邮件地址

举例:madam –monitor /dev/md0

备注:⾸先要保证sendmail服务启动,同时,通过mail命令可以发送邮件成功。可以配置多个邮箱,以逗号隔开。-program(-p), --alert

功能:当事件被发现时,触发指定的程序运⾏。

举例:mdadm --monitor --program=/root/pc3x.sh /dev/md0 &备注:程序可以为shell脚本,通过$1,$2,$3来获取相应的参数。-y, --syslog

功能:事件通过syslog报告。

举例:mdadm --monitor --syslog /dev/md0 &

备注:message被打印到/var/log/message⽂件⾥⾯--delay(-d)

功能:查看设备的延迟时间。默认是60s

举例:mdadm --monitor --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命令⾏不需要特别说明某个设备。

⾮特定模式参数

--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设备。

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。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top