mdadm是multiple devices admin的简称,它是Linux下的一款标准的
软件 RAID 管理工具,作者是Neil Brown。但是我在虚假机上测试的时候,创建的软阵列不会随
系统自动启动起来:
首先创建新的阵列
mdadm使用--create(或其缩写-C)参数来创建新的阵列,并且将一些重要阵列的标识信息作为元
数据可以写在每一个底层
设备的指定区间。--level(或者其缩写-l)表示阵列的RAID级别,--chunk(或者其缩写-c)表示每个条带单元的大小,以KB为单位,默认为64KB,条带单元的大小配置对不同负载下的阵列读写性能有很大影响。--raid-devices(或者其缩写-n)表示阵列中活跃的设备个数,而--spare-devices(或者其缩写-x)表示阵列中热备盘的个数,一旦阵列中的某个磁盘失效,MD内核
驱动
程序自动用将热备磁盘加入到阵列,然后重构丢失磁盘上的数据到热备磁盘上。
简单解释一下配置
文件:
/etc/mdadm.conf作为默认的配置文件,主要作用是方便跟踪软RAID的配置,尤其是可以配置监视和事件上报选项。Assemble命令也可以使用--config(或者其缩写-c)来指定配置文件。我们通常可以如下命令来建立配置文件。
[root@fc5 mdadm-2.6.3]#echo DEVICE /dev/sd[b-h] /dev/sd[i-k]1 > /etc/mdadm.conf
[root@fc5 mdadm-2.6.3]# ./mdadm -Ds >>/etc/mdadm.conf
[root@fc5 mdadm-2.6.3]# cat /etc/mdadm.conf
DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi1 /dev/sdj1 /dev/sdk1
ARRAY /dev/md1 level=raid0 num-devices=3 UUID=dcff6ec9:53c4c668:58b81af9:ef71989d
ARRAY /dev/md0 level=raid10 num-devices=6 spares=1 UUID=0cabc5e5:842d4baa:e3f6261b:a17a477a
使用配置文件启动阵列时,mdadm会查询配置文件中的设备和阵列内容,然后启动运行所有能运行RAID阵列。如果指定阵列的设备名字,则只启动对应的阵列。
Linux 默认会在系统启动时启动以前已经创建好的阵列。但是在我机器上启动失败。首先当然去系统的启动脚本里找相关的:
系统启动脚本:rc.sysinit中找到以下几行:
update_boot_stage RCraid
if [ -f /etc/mdadm.conf ]; then # 如果存在 /etc/mdadm.conf 则
/sbin/mdadm -A -s # mdadm -A 表示 Assemble 模式,-s 则表示搜索 /etc/mdadm.conf
fi
在这里加上以下脚本:
# cp -a /dev/md1 /etc/udev/devices/
这样就可以在机器重启后自动运行raid了;
另外如果在创建时没有保存好/etc/mdadm.conf,在系统启动是不会启动你新建的那个阵列呢。那怎么办呢?我们可以用另外一种方法激活raid
组装曾创建过的阵列
模式--assemble或者其缩写(-A)主要是检查底层设备的元数据信息,然后再组装为活跃的阵列。如果我们已经知道阵列由那些设备组成,可以指定使用那些设备来启动阵列。
[root@fc5 mdadm-2.6.3]# ./mdadm -A /dev/md0 /dev/sd[b-h]
mdadm: /dev/md0 has been started with 6 drives and 1 spare.
如果有配置文件(/etc/mdadm.conf)可使用命令mdadm -As /dev/md0。mdadm先检查mdadm.conf中的DEVICE信息,然后从每个设备上读取元数据信息,并检查是否和ARRAY信息一致,如果信息一致则启动阵列。如果没有配置/etc/mdadm.conf文件,而且又不知道阵列由那些磁盘组成,则可以使用命令--examine(或者其缩写-E)来
检测当前的块设备上是否有阵列的元数据信息。
[root@fc5 mdadm-2.6.3]# ./mdadm -E /dev/sdi mdadm: No md superblock detected on /dev/sdi.
[root@fc5 mdadm-2.6.3]# ./mdadm -E /dev/sdb /dev/sdb: Magic : a92b4efc Version : 00.90.00 UUID : 0cabc5e5:842d4baa:e3f6261b:a17a477a
Creation Time : Sun Aug 22 17:49:53 1999 Raid Level : raid10 Used Dev Size : 1048512 (1024.11 MiB 1073.68 MB)
Array Size : 3145536 (3.00 GiB 3.22 GB) Raid Devices : 6 Total Devices :
7 Preferred Minor : 0 Update Time : Sun Aug 22 18:05:56 1999 State : clean Active Devices : 6 Working Devices : 7 Failed Devices : 0 Spare Devices : 1 Checksum : 2f056516 - correct Events : 0.4 Layout : near=2, far=1 Chunk Size : 64K Number Major Minor RaidDevice State this 0 8 16 0 active sync /dev/sdb 0 0 8 16 0 active sync /dev/sdb 1 1 8 32 1 active sync /dev/sdc 2 2 8 48 2 active sync /dev/sdd 3 3 8 64 3 active sync /dev/sde 4 4 8 80 4 active sync /dev/sdf 5 5 8 96 5 active sync /dev/sdg 6 6 8 112 6 spare /dev/sdh
从上面命令结果可以找到阵列的唯一标识UUID和阵列包含的设备名字,然后再使用上面的命令来组装阵列,也可以使用UUID标识来组装阵列。没有一致的元数据的信息设备(例如/dev/sda和/dev/sda1等)mdadm程序会自动跳过。
[root@fc5 mdadm-2.6.3]# ./mdadm -Av --uuid=0cabc5e5:842d4baa:e3f6261b:a17a477a /dev/md0 /dev/sd*
mdadm: looking for devices for /dev/md0
mdadm no recogniseable superb ock o dev/sda
mdadm: /dev/sda has wrong uuid
mdadm no recogniseable superblock o dev/sda1
mdadm: /dev/sda1 has wrong uui .
mdadm: no RAID superbloc on / ev/sdi
mdadm: /dev/sdi has wrong uuid
mdadm /dev/sdi1 has wrong uuid.
mdadm: no RAID superbloc on / ev/sdj
mdadm: /dev/sdj has wrong uuid
mdadm /dev/sdj1 has wrong uuid.
mdadm: no RAID superbloc on / ev/sdk
mdadm: /dev/sdk has wrong uuid
mdadm /dev/sdk1 has wrong uuid.
mdadm: /dev/sd is identified s a member of /dev/md0, slot 0.
mdadm: /dev/sdc is identified s a member of /dev/md0, slot 1.
mdadm: /dev/sdd is identified s a member of /dev/md0, slot 2.
mdadm: /dev/sde is identified s a member of /dev/md0, slot 3.
mdadm: /dev/sdf is identified s a member of /dev/md0, slot 4.
mdadm: /dev/sdg is identified s a member of /dev/md0, slot 5.
mdadm: /dev/sdh is identified s a member of /dev/md0, slot 6.
mdadm: added /dev/sdc to /dev/ d0 as
mdadm: added /dev/sdd to /dev/ d0 as
mdadm: added /dev/sde to /dev/ d0 as
mdadm: added /dev/sdf to /dev/ d0 as
mdadm: added /dev/sdg to /dev/ d0 as
mdadm: added /dev/sdh to /dev/ d0 as
mdadm: added /dev/sdb to /dev/ d0 as
mdadm: /dev/md0 has been start d with 6 drives and 1 spare.
另外如果发现缺失某个设备后 RAID 不能启动,可以使用剩余设备启动 RAID
# mdadm -A --run /dev/md1 /dev/sde /dev/sdf
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7682812/viewspace-669597/,如需转载,请注明出处,否则将追究法律责任。