一.简介
Personalities :
unused devices: <none>
[root@fc5 mdadm-2.6.3]# cat /proc/devices | grep md
1 ramdisk
9 md
253 mdp
[root@fc5 mdadm-2.6.3]# lsmod | grep md
md_mod 73364 0
如果Linux系统既没有将MD编译到内核也没有自动加载MD模块,则没有/proc/mdstat文件,那么需要执行命令modprobe md加载驱动模块。
cat: /proc/mdstat: No such file or directory
[root@fc5 mdadm-2.6.3]# modprobe md
[root@fc5 mdadm-2.6.3]# lsmod | grep dm_mod
dm_mod 100369 11
如果系统中没有MD驱动模块则需要自己从Linux内核源代码网站下载源代码包,并且重新编译内核,并且需要在内核的配置文件选择。
<*> RAID support
<M> Linear (append) mode
<M> RAID-0 (striping) mode
<M> RAID-1 (mirroring) mode
<M> RAID-10 (mirrored striping) mode (EXPERIMENTAL)
<M> RAID-4/RAID-5/RAID-6 mode
[*] Support adding drives to a raid-5 array
<M> Multipath I/O support
<M> Faulty test module for MD
在Linux系统中用户层以前使用raidtool工具集 来管理MD设备,目前广泛使用mdadm软件来管理MD设备,而且该软件都会集成在Linux的发布版中。如果系统中没有安装可以到RAID驱动程序和mdadm软件的维护者Neil Brown的个人网站 来下载源码包进行编译安装,或者下载RPM包直接安装。mdadm的最新版本是2.6.3。可以使用mdadm --version查看当前系统使用的版本。本文使用的是mdadm-2.6.3, Linux内核版本是Linux-2.6.22.1。下面的测试命令是在虚拟机环境中测试运行的。
2.6.22.1
[root@fc5 mdadm-2.6.3]# mdadm --version
mdadm - v2.6.3 - 20th August 2007
二. mdadm管理软RAID阵列
Create 使用空闲的设备创建一个新的阵列,每个设备具有元数据块
Assemble 将原来属于一个阵列的每个块设备组装为阵列
Build 创建或组装不需要元数据的阵列,每个设备没有元数据块
Manage 管理已经存储阵列中的设备,比如增加热备磁盘或者设置某个磁盘失效,然后从阵列中删除这个磁盘
Misc 报告或者修改阵列中相关设备的信息,比如查询阵列或者设备的状态信息
Grow 改变阵列中每个设备被使用的容量或阵列中的设备的数目
Monitor 监控一个或多个阵列,上报指定的事件
软RAID阵列实际上也可以使用任何标准的块设备作为底层设备,如SCSI设备、IDE设备、RAM disk磁盘和NBD(Network Block Device)等,甚至是其他的MD设备。
if [ -f /etc/mdadm.conf ]; then
/sbin/mdadm -A -s
fi
mdadm --create /dev/md0 --level=0 --chunk=32 --raid-devices=3 /dev/sd[i-k]1
创建一个RAID 1设备:
mdadm -C /dev/md0 -l1 -c128 -n2 -x1 /dev/sd[i-k]1
创建一个RAID 5设备:
mdadm -C /dev/md0 -l5 -n5 /dev/sd[c-g] -x1 /dev/sdb
创建一个RAID 6设备:
mdadm -C /dev/md0 -l6 -n5 /dev/sd[c-g] -x2 /dev/sdb /dev/sdh
创建一个RAID 10设备:
mdadm -C /dev/md0 -l10 -n6 /dev/sd[b-g] -x1 /dev/sdh
创建一个RAID1+0设备:
mdadm -C /dev/md0 -l1 -n2 /dev/sdb /dev/sdc
mdadm -C /dev/md1 -l1 -n2 /dev/sdd /dev/sde
mdadm -C /dev/md2 -l1 -n2 /dev/sdf /dev/sdg
mdadm -C /dev/md3 -l0 -n3 /dev/md0 /dev/md1 /dev/md2
如果想对支持分区的MD设备(Partitionable raid array)进行分区.创建阵列是通过--auto=mdp(或者其缩写-ap)参数指定。
[root@fc5 mdadm-2.6.3]# mdadm -Cv --auto=mdp /dev/md_d0 --bitmap=internal -l5 -n24 /dev/sd[a-w] -x2 /dev/sd[x-y]
使用mdadm生成mdadm.conf:
#mdadm -Ds >/etc/mdadm.conf
ARRAY /dev/md_d0 level=raid5 num-devices=11 spares=3 UUID=bc83fe18:b2aca48d:a8221049:a3e397e4
2.2 为磁盘划分FD(Linux raid autodetect)分区
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-512, default 1):1
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-512, default 512):512
Using default value 512
Selected partition 1
Hex code (type L to list codes): FD
Changed system type of partition 1 to fd (Linux raid autodetect)
The partition table has been altered!
Syncing disks.
[root@fc5 mdadm-2.6.3]# fdisk -l /dev/sdk
Disk /dev/sdk: 1073 MB, 1073741824 bytes
128 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 4096 * 512 = 2097152 bytes
/dev/sdk1 1 512 1048560 fd Linux raid autodetect
当RAID1/4/5/6/10等创建成功后,需要计算每个条带的校验和信息并写入到相应磁盘上,所以RAID阵列有一个冗余组数据同步的初始化过程(resync)。但是MD设备只要创建成功后即可对外被上层应用读写使用,当然由于上层数据读写降低数据同步的性能。初始化的时间长短和磁盘阵列自身性能以及读写的应用负载相关,使用cat /proc/mdstat信息查询RAID阵列当前重构的速度和预期的完成时间。
Personalities : [raid10]
md0 : active raid10 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU]
[===>...........] resync = 15.3% (483072/3145536) finish=0.3min speed=120768K/sec
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid10]
md0 : active raid10 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU]
如果一个块设备已经正在被其他的MD设备或者文件系统使用,则不能用来创建新的MD设备。
mdadm: Cannot open /dev/sdh: Device or resource busy
mdadm: create aborted
Build模式可以用来创建没有元数据的RAID0/1设备,不能创建RAID4/5/6/10等带有冗余级别的MD设备。
mdadm: array /dev/md0 built and started.
[root@fc5 mdadm-2.6.3]# ./mdadm -BR /dev/md0 -l1 -n2 /dev/sd[b-c]
mdadm: array /dev/md0 built and started.
[root@fc5 mdadm-2.6.3]# ./mdadm -BR /dev/md0 -l5 -n6 /dev/sd[b-g]
mdadm: Raid level 5 not permitted with --build.
[root@fc5 mdadm-2.6.3]# ./mdadm -BR /dev/md0 –l6 -n6 /dev/sd[b-g]
mdadm: Raid level 5 not permitted with --build.
[root@fc5 mdadm-2.6.3]# ./mdadm -BR /dev/md0 –l10 -n6 /dev/sd[b-g]
mdadm: Raid level 10 not permitted with --build.
#parted /dev/md_d0
#mkfs.ext3 /dev/md_d0p1
停止正在运行的阵列:
mdadm: fail to stop array /dev/md0: Device or resource busy
[root@fc5 mdadm-2.6.3]# umount /dev/md0
[root@fc5 mdadm-2.6.3]#mdadm --stop /dev/md0
mdadm: stopped /dev/md0
2.3 组装曾创建过的阵列
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)来检测当前的块设备上是否有阵列的元数据信息。
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
State : clean
Active Devices : 6
Working Devices : 7
Failed Devices : 0
Spare Devices : 1
Checksum : 2f056516 - correct
Events : 0.4
Chunk Size : 64K
this 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程序会自动跳过。
/dev/md0 /dev/sd*
mdadm: looking for devices for /dev/md0
mdadm: no recogniseable superblock on /dev/sda
mdadm: /dev/sda has wrong uuid.
mdadm: no recogniseable superblock on /dev/sda1
mdadm: /dev/sda1 has wrong uuid.
mdadm: no RAID superblock on /dev/sdi
mdadm: /dev/sdi has wrong uuid.
mdadm: /dev/sdi1 has wrong uuid.
mdadm: no RAID superblock on /dev/sdj
mdadm: /dev/sdj has wrong uuid.
mdadm: /dev/sdj1 has wrong uuid.
mdadm: no RAID superblock on /dev/sdk
mdadm: /dev/sdk has wrong uuid.
mdadm: /dev/sdk1 has wrong uuid.
mdadm: /dev/sdb is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdc is identified as a member of /dev/md0, slot 1.
mdadm: /dev/sdd is identified as a member of /dev/md0, slot 2.
mdadm: /dev/sde is identified as a member of /dev/md0, slot 3.
mdadm: /dev/sdf is identified as a member of /dev/md0, slot 4.
mdadm: /dev/sdg is identified as a member of /dev/md0, slot 5.
mdadm: /dev/sdh is identified as a member of /dev/md0, slot 6.
mdadm: added /dev/sdc to /dev/md0 as 1
mdadm: added /dev/sdd to /dev/md0 as 2
mdadm: added /dev/sde to /dev/md0 as 3
mdadm: added /dev/sdf to /dev/md0 as 4
mdadm: added /dev/sdg to /dev/md0 as 5
mdadm: added /dev/sdh to /dev/md0 as 6
mdadm: added /dev/sdb to /dev/md0 as 0
mdadm: /dev/md0 has been started with 6 drives and 1 spare.
配置文件:
[root@fc5 mdadm-2.6.3]# mdadm -Ds >>/etc/mdadm.conf
[root@fc5 mdadm-2.6.3]# cat /etc/mdadm.conf
DEVICE /dev/sd[b-h] /dev/sd[i-k]1
ARRAY /dev/sda level=raid5 num-devices=11 spares=3 UUID=bc83fe18:b2aca48d:a8221049:a3e397e4
使用配置文件启动阵列时,mdadm会查询配置文件中的设备和阵列内容,然后启动运行所有能运行RAID阵列。如果指定阵列的设备名字,则只启动对应的阵列。
mdadm: /dev/md1 has been started with 3 drives.
mdadm: /dev/md0 has been started with 6 drives and 1 spare.
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10]
md0 : active raid10 sdb[0] sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1]
3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU]
7337664 blocks 32k chunks
[root@fc5 mdadm-2.6.3]# mdadm -S /dev/md0 /dev/md1
mdadm: stopped /dev/md0
mdadm: stopped /dev/md1
[root@fc5 mdadm-2.6.3]# mdadm -As /dev/md0
mdadm: /dev/md0 has been started with 6 drives and 1 spare.
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10]
md0 : active raid10 sdb[0] sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1]
3145536 blocks 64K chunks 2 near-copies [6/6] [UUUUUU]
2.4 查询阵列的状态
Personalities : [raid6] [raid5] [raid4] [raid1]
md0 : active raid5 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
5242560 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
[root@fc5 mdadm-2.6.3]# ./mdadm /dev/md0 -f /dev/sdh /dev/sdb
mdadm: set /dev/sdh faulty in /dev/md0
mdadm: set /dev/sdb faulty in /dev/md0
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1]
md0 : active raid5 sdh[6](F) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[7](F)
5242560 blocks level 5, 64k chunk, algorithm 2 [6/5] [_UUUUU]
如果Linux系统目前支持sysfs也可以访问/sys/block/md0目录查询阵列信息。
capability holders range size stat uevent
dev md removable slaves subsystem
[root@fc5 mdadm-2.6.3]# ls /sys/block/md0/md/
array_state dev-sdg rd1 suspend_lo
bitmap_set_bits dev-sdh rd2 sync_action
chunk_size layout rd3 sync_completed
component_size level rd4 sync_speed
dev-sdb metadata_version rd5 sync_speed_max
dev-sdc mismatch_cnt reshape_position sync_speed_min
dev-sdd new_dev resync_start
dev-sde raid_disks safe_mode_delay
dev-sdf rd0 suspend_hi
[root@fc5 mdadm-2.6.3]# ls /sys/block/md0/slaves/
sdb sdc sdd sde sdf sdg sdh
我们也可以通过mdadm命令查看指定阵列的简要信息(使用--query或者其缩写-Q)和详细信息(使用--detail或者其缩写-D) 详细信息包括RAID的版本、创建的时间、RAID级别、阵列容量、可用空间、设备数量、超级块状态、更新时间、UUID信息、各个设备的状态、RAID算法级别类型和布局方式以及块大小等信息。设备状态信息分为active, sync, spare, faulty, rebuilding, removing等等。
/dev/md0: 2.100GiB raid10 6 devices, 1 spare. Use mdadm --detail for more detail.
[root@fc5 mdadm-2.6.3]# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sun Aug 22 17:49:53 1999
Raid Level : raid10
Array Size : 3145536 (3.00 GiB 3.22 GB)
Used Dev Size : 1048512 (1024.11 MiB 1073.68 MB)
Raid Devices : 6
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent
State : clean
Active Devices : 6
Working Devices : 7
Failed Devices : 0
Spare Devices : 1
Chunk Size : 64K
Events : 0.122
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg
2.5 管理阵列
mdadm: set /dev/sdb faulty in /dev/md0
当磁盘已经损坏时,使用--remove(或者其缩写--f)参数将这个磁盘从磁盘阵列中移走;但如果设备还正在被阵列使用,则不能从阵列中移走。
mdadm: hot removed /dev/sdb
[root@fc5 mdadm-2.6.3]# ./mdadm /dev/md0 --remove /dev/sde
mdadm: hot remove failed for /dev/sde: Device or resource busy
如果阵列带有spare磁盘,那么自动将损坏磁盘上的数据重构到新的spare磁盘上;
mdadm: set /dev/sdb faulty in /dev/md0
Personalities : [raid0] [raid10]
md0 : active raid10 sdh[6] sdb[7](F) sdc[0] sdg[5] sdf[4] sde[3] sdd[2]
3145536 blocks 64K chunks 2 near-copies [6/5] [U_UUUU]
[=======>........] recovery = 35.6% (373888/1048512) finish=0.1min speed=93472K/sec
如果阵列没有热备磁盘,可以使用--add(或者其缩写-a)参数增加热备磁盘
mdadm: added /dev/sdh
2.6 监控阵列
--syslog --delay=300 /dev/md0 --daemonise
查看系统日志信息,可以看到哪个阵列或者阵列中的哪个设备发生过的哪些事件。
mdadm: set /dev/sdb faulty in /dev/md0
[root@fc5 mdadm-2.6.3]#tail –f /var/log/messages
Aug 22 22:04:12 fc5 mdadm: RebuildStarted event detected on md device /dev/md0
Aug 22 22:04:12 fc5 kernel: md: using maximum available idle IO bandwidth
(but not more than 200000 KB/sec) for recovery.
Aug 22 22:04:12 fc5 kernel: md: using 128k window, over a total of 1048512 blocks.
Aug 22 22:04:14 fc5 mdadm: Fail event detected on md device /dev/md0,
component device /dev/sdb
Aug 22 22:04:14 fc5 mdadm: Rebuild80 event detected on md device /dev/md0
Aug 22 22:04:16 fc5 mdadm: RebuildFinished event detected on md device /dev/md0
Aug 22 22:04:16 fc5 mdadm: SpareActive event detected on md device /dev/md0,
component device /dev/sdh
Aug 22 22:04:16 fc5 kernel: md: md0: recovery done.
回调程序从mdadm程序接受两个或者三个参数:事件名字,监控阵列的名字和特殊事件可能使用到的底层块设备名字。上面的事件返回的信息如下:
Eventname: Fail Device: /dev/md0 next: /dev/sdb
Eventname: Rebuild80 Device: /dev/md0 next:
Eventname: RebuildFinished Device: /dev/md0 next:
Eventname:SpareActive Device: /dev/md0 next: /dev/sdh
2.7 扩展阵列
然后在阵列需要扩展大小时,使用模式--grow(或者其缩写-Q)以及--size参数(或者其缩写-z) 在加上合适的大小数值就能分别扩展阵列所使用每个块设备的大小。
/dev/md0: 500.00MiB raid5 6 devices, 1 spare. Use mdadm --detail for more detail.
[root@fc5 mdadm-2.6.3]# ./mdadm --grow /dev/md0 --size=204800
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
1024000 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
[============>......] resync = 69.6% (144188/204800) finish=0.0min speed=10447K/sec
[root@fc5 mdadm-2.6.3]# ./mdadm -Q /dev/md0
/dev/md0: 1000.00MiB raid5 6 devices, 1 spare. Use mdadm --detail for more detail.
如果上面是文件系统(ext2,ext3, reiserfs),在设备大小扩展后,文件系统也要同时扩展。
/dev/md0 485M 11M 449M 3% /mnt/md-test
[root@fc5 mdadm-2.6.3]# ext2online /dev/md0
[root@fc5 mdadm-2.6.3]# df -h | grep md
/dev/md0 969M 11M 909M 2% /mnt/md-test
mdadm还提供增加或减少阵列中设备个数的功能(reshape),使用模式—grow和 --raid-disks(或者其缩写-n)参数再加上合适的设备个数。扩展后阵列中原来的热备盘变为活跃磁盘,所以阵列的设备个数增加,阵列的大小也相应增加。
/dev/md0:
Version : 00.90.03
Creation Time : Sun Aug 22 22:16:19 1999
Raid Level : raid5
Array Size : 1024000 (1000.17 MiB 1048.58 MB)
Used Dev Size : 204800 (200.03 MiB 209.72 MB)
Raid Devices : 6
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent
State : clean
Active Devices : 6
Working Devices : 7
Failed Devices : 0
Spare Devices : 1
Chunk Size : 64K
Events : 0.12
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg
[root@fc5 mdadm-2.6.3]# ./mdadm --grow /dev/md0 --raid-disks=7
mdadm: Need to backup 1920K of critical section..
mdadm: ... critical section passed.
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
1024000 blocks super 0.91 level 5, 64k chunk, algorithm 2 [7/7] [UUUUUUU]
[===>.............] reshape = 19.4% (40256/204800) finish=0.7min speed=3659K/sec
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0
/dev/md0:
Version : 00.91.03
Creation Time : Sun Aug 22 22:16:19 1999
Raid Level : raid5
Array Size : 1024000 (1000.17 MiB 1048.58 MB)
Used Dev Size : 204800 (200.03 MiB 209.72 MB)
Raid Devices : 7
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent
State : clean, recovering
Active Devices : 7
Working Devices : 7
Failed Devices : 0
Spare Devices : 0
Chunk Size : 64K
Delta Devices : 1, (6->7)
Events : 0.76
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg
6 8 112 6 active sync /dev/sdh
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
1228800 blocks level 5, 64k chunk, algorithm 2 [7/7] [UUUUUUU]
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sun Aug 22 22:16:19 1999
Raid Level : raid5
Array Size : 1228800 (1200.20 MiB 1258.29 MB)
Used Dev Size : 204800 (200.03 MiB 209.72 MB)
Raid Devices : 7
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent
State : clean
Active Devices : 7
Working Devices : 7
Failed Devices : 0
Spare Devices : 0
Chunk Size : 64K
Events : 0.204
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg
6 8 112 6 active sync /dev/sdh
2.8 Bitmap记录
mdadm: array /dev/md1 started.
[root@fc5 tests]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1]
md1 : active raid1 sdj1[1] sdi1[0]
2096384 blocks [2/2] [UU]
[========>......] resync = 51.2% (1075072/2096384) finish=0.1min speed=153581K/sec
bitmap: 128/128 pages [512KB], 8KB chunk
[root@fc5 tests]# ./mdadm -X /dev/sdi1
Filename : /dev/sdi1
Magic : 6d746962
Version : 4
UUID : bcccddb7:0f529abd:672e1f66:7e68bbc8
Events : 1
Events Cleared : 1
State : OK
Chunksize : 8 KB
Daemon : 5s flush period
Write Mode : Normal
Sync Size : 2096384 (2047.59 MiB 2146.70 MB)
Bitmap : 262048 bits (chunks), 262048 dirty (100.0%)
[root@fc5 tests]# ./mdadm --stop /dev/md1
mdadm: stopped /dev/md1
[root@fc5 tests]# ./mdadm -A /dev/md1 /dev/sd[i-k]1 --bitmap=internal ; cat /proc/mdstat
mdadm: there is no need to specify --bitmap when assembling arrays with internal bitmaps
mdadm: /dev/md1 has been started with 2 drives and 1 spare.
Personalities : [raid6] [raid5] [raid4] [raid1]
md1 : active raid1 sdi1[0] sdk1[2](S) sdj1[1]
1048448 blocks [2/2] [UU]
[==============>...] resync = 87.6% (919616/1048448) finish=0.0min speed=89408K/sec
bitmap: 27/128 pages [108KB], 4KB chunk
[root@fc5 tests]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid1]
md1 : active raid1 sdj1[1] sdi1[0]
2096384 blocks [2/2] [UU]
bitmap: 0/128 pages [0KB], 8KB chunk
[root@fc5 tests]# mdadm -X /dev/sdi1
unused devices: <none>
Filename : /dev/sdi1
Magic : 6d746962
Version : 4
UUID : bcccddb7:0f529abd:672e1f66:7e68bbc8
Events : 4
Events Cleared : 4
State : OK
Chunksize : 8 KB
Daemon : 5s flush period
Write Mode : Normal
Sync Size : 2096384 (2047.59 MiB 2146.70 MB)
Bitmap : 262048 bits (chunks), 0 dirty (0.0%)
使用bitmap文件记录要求这个文件不能在RAID阵列上或者其相关的设备上,而且使用assemble命令时要指定bitmap文件名字。
--bitmap=/tmp/md0-bm --bitmap-chunk=4 --delay=1 --force
mdadm: array /dev/md0 started.
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat ; ./mdadm -X /tmp/md0-bm
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
5242560 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
[===========>.......] resync = 64.3% (675748/1048512) finish=0.7min speed=7848K/sec
bitmap: 128/128 pages [512KB], 4KB chunk, file: /tmp/md0-bm
Filename : /tmp/md0-bm
Magic : 6d746962
Version : 4
UUID : d2f46320:40f1e154:08d7a21a:4cc9a9c1
Events : 1
Events Cleared : 1
State : OK
Chunksize : 4 KB
Daemon : 1s flush period
Write Mode : Normal
Sync Size : 1048512 (1024.11 MiB 1073.68 MB)
Bitmap : 262128 bits (chunks), 262128 dirty (100.0%)
[root@fc5 mdadm-2.6.3]# ./mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@fc5 mdadm-2.6.3]# ./mdadm -A /dev/md0 /dev/sd[b-h] --bitmap=/tmp/md0-bm ;
cat /proc/mdstat ; ./mdadm -X /tmp/md0-bm
mdadm: /dev/md0 has been started with 6 drives and 1 spare.
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb[0] sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1]
5242560 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
[=============>.....] resync = 70.5% (739884/1048512) finish=0.7min speed=6539K/sec
bitmap: 41/128 pages [164KB], 4KB chunk, file: /tmp/md0-bm
Filename : /tmp/md0-bm
Magic : 6d746962
Version : 4
UUID : d2f46320:40f1e154:08d7a21a:4cc9a9c1
Events : 3
Events Cleared : 3
State : OK
Chunksize : 4 KB
Daemon : 1s flush period
Write Mode : Normal
Sync Size : 1048512 (1024.11 MiB 1073.68 MB)
Bitmap : 262128 bits (chunks), 83696 dirty (31.9%)
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat ; ./mdadm -X /tmp/md0-bm
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb[0] sdh[6](S) sdg[5] sdf[4] sde[3] sdd[2] sdc[1]
5242560 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
bitmap: 0/128 pages [0KB], 4KB chunk, file: /tmp/md0-bm
Filename : /tmp/md0-bm
Magic : 6d746962
Version : 4
UUID : d2f46320:40f1e154:08d7a21a:4cc9a9c1
Events : 6
Events Cleared : 6
State : OK
Chunksize : 4 KB
Daemon : 1s flush period
Write Mode : Normal
Sync Size : 1048512 (1024.11 MiB 1073.68 MB)
Bitmap : 262128 bits (chunks), 0 dirty (0.0%)
bitmap模式在阵列处于降级(degrade)状态能够记录有哪些块被写过,当那个暂时失效的磁盘使用--re-add参数被重新添加后,阵列只重构这期间修改的数据块,减少阵列重构的时间。bitmap信息中dirty的数量表示降级期间被修改过的块。
mdadm -C /dev/md0 -l5 -n6 /dev/sd[b-g] -x1 /dev/sdh --assume-clean
如果想避免mdadm每次创建命令时,因为设备上还有以前的元数据的提示,避免手工输入,可以使用--run(或者其缩写-R)通知阵列直接运行。
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
4. 异构磁盘组成的RAID
mdadm -C /dev/md0 -l5 -n6 /dev/sd[b-g] -x1 /dev/sdh --assume-clean
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md1 | grep "Array Size"
Array Size : 7337664 (7.00 GiB 7.51 GB)
在阵列的状态信息查询中的大小(ArraySize)前面使用的是KB,也表示MD块设备的实际大小;而后面的两个值只是为了显示处理后的结果。
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md1 | grep "Array Size"
Array Size : 7337664 (7.00 GiB 7.51 GB)
[root@fc5 mdadm-2.6.3]# ./mdadm -CR /dev/md1 -l5 -n3 /dev/sd[i-k]1
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md1 | grep "Array Size"
Array Size : 2096896 (2048.09 MiB 2147.22 MB)
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 spare-group=sparedisks
UUID=dcff6ec9:53c4c668:58b81af9:ef71989d
ARRAY /dev/md0 level=raid10 num-devices=6 spare-group=sparedisks
UUID=0cabc5e5:842d4baa:e3f6261b:a17a477a
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
--delay=300 /dev/md* --daemonise
8105
[root@fc5 mdadm-2.6.3]#mdadm /dev/md1 -f /dev/sdi1
mdadm: set /dev/sdi1 faulty in /dev/md1
[root@fc5 mdadm-2.6.3]#./mdadm -D /dev/md1
/dev/md1:
Version : 00.90.03
Creation Time : Mon Aug 23 00:10:00 1999
Raid Level : raid5
Array Size : 2096896 (2048.09 MiB 2147.22 MB)
Used Dev Size : 1048448 (1024.05 MiB 1073.61 MB)
Raid Devices : 3
Total Devices : 4
Preferred Minor : 1
Persistence : Superblock is persistent
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Chunk Size : 64K
Events : 0.4
3 8 112 0 spare rebuilding /dev/sdh
1 8 145 1 active sync /dev/sdj1
2 8 161 2 active sync /dev/sdk1
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0 | grep Version
Version : 00.90.03
[root@fc5 mdadm-2.6.3]# ./mdadm -CR /dev/md0 -l5 -n6 -x1 -e1.0 /dev/sd[b-h]
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0 | grep Version
Version : 01.00.03
[root@fc5 mdadm-2.6.3]# ./mdadm -CR /dev/md0 -l5 -n6 -x1 -e1.1 /dev/sd[b-h]
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0 | grep Version
Version : 01.01.03
[root@fc5 mdadm-2.6.3]# ./mdadm -CR /dev/md0 -l5 -n6 -x1 -e1.2 /dev/sd[b-h]
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0 | grep Version
Version : 01.02.03
ARRAY /dev/md0 level=raid5 num-devices=6
UUID=acd2b182:4695ee20:37689502:eb0423e1
spares=1
[root@fc5 mdadm-2.6.3]# mdadm /dev/md0 -f /dev/sdh -r /dev/sdh
mdadm: set /dev/sdh faulty in /dev/md0
mdadm: hot removed /dev/sdh
[root@fc5 mdadm-2.6.3]# mdadm --zero-superblock /dev/sdh
[root@fc5 mdadm-2.6.3]# mdadm -Es /dev/sdh
[root@fc5 mdadm-2.6.3]#
|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: size set to 1048512K
mdadm: array /dev/md_d0 started.
[root@fc5 mdadm-2.6.3]# fdisk /dev/md_d0
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1310640, default 1):1
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1310640, default 1310640): +1024M
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (250002-1310640, default 250002):250002
Using default value 250002
Last cylinder or +size or +sizeM or +sizeK (250002-1310640, default 1310640):1310640
Using default value 1310640
The partition table has been altered!
Syncing disks.
[root@fc5 mdadm-2.6.3]# fdisk -l /dev/md_d0
2 heads, 4 sectors/track, 1310640 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
/dev/md_d0p1 1 250001 1000002 83 Linux
/dev/md_d0p2 250002 1310640 4242556 83 Linux
1 ramdisk
9 md
253 mdp
[root@fc5 mdadm-2.6.3]# cat /proc/partitions | grep md
9 1 2096896 md1
253 0 5242560 md_d0
253 1 1000002 md_d0p1
253 2 1000002 md_d0p2
[root@fc5 mdadm-2.6.3]# ./mdadm -Q /dev/md0
/dev/md0: 600.00MiB raid5 7 devices, 0 spares. Use mdadm --detail for more detail.
mdadm: /dev/md0: Cannot reduce number of data disks (yet).
[root@fc5 mdadm-2.6.3]# ./mdadm --grow /dev/md0 -n8
mdadm: Need to backup 2688K of critical section.
mdadm: /dev/md0: Cannot grow - need a spare or backup-file to backup critical section
[root@fc5 mdadm-2.6.3]# ./mdadm -G /dev/md0 -n9 --backup-file=/root/bak-reshape
mdadm: Need to backup 1024K of critical section..
mdadm: /dev/md0: failed to initiate reshape
mdadm: Need to backup 2688K of critical section..
mdadm: ... critical section passed.
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
6291072 blocks super 0.91 level 5, 64k chunk, algorithm 2 [8/7] [UUUUUUU_]
[>..................] reshape = 2.6% (28608/1048512) finish=4.1min speed=4086K/sec
md1 : active raid0 sdk1[2] sdj1[1] sdi1[0]
7337664 blocks 64k chunks
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0
/dev/md0:
Version : 00.91.03
Creation Time : Sun Aug 22 23:46:29 1999
Raid Level : raid5
Array Size : 6291072 (6.00 GiB 6.44 GB)
Used Dev Size : 1048512 (1024.11 MiB 1073.68 MB)
Raid Devices : 8
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent
State : clean, degraded, recovering
Active Devices : 7
Working Devices : 7
Failed Devices : 0
Spare Devices : 0
Chunk Size : 64K
Delta Devices : 1, (7->8)
Events : 0.94
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg
6 8 112 6 active sync /dev/sdh
7 0 0 7 removed
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
7339584 blocks level 5, 64k chunk, algorithm 2 [8/7] [UUUUUUU_]
7337664 blocks 64k chunks
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sun Aug 22 23:46:29 1999
Raid Level : raid5
Array Size : 7339584 (7.00 GiB 7.52 GB)
Used Dev Size : 1048512 (1024.11 MiB 1073.68 MB)
Raid Devices : 8
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent
State : clean, degraded
Active Devices : 7
Working Devices : 7
Failed Devices : 0
Spare Devices : 0
Chunk Size : 64K
Events : 0.766
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg
6 8 112 6 active sync /dev/sdh
7 0 0 7 removed
[root@fc5 mdadm-2.6.3]# ./mdadm -G /dev/md0 -n9 --backup-file=/root/bak-reshape
mdadm: Need to backup 3584K of critical section..
mdadm: /dev/md0: failed to find device 7. Array might be degraded.
--grow aborted
mdadm: Need to backup 1280K of critical section..
mdadm: /dev/md0: Cannot get array details from sysfs
mount –t sysfs sysfs /sys/
/dev/md0 485M 11M 449M 3% /mnt/md-test
另一种情况是MD设备被用户层其他程序打开使用,如nbd-server导出MD设备:
/dev/md0: 3507(root)
[root@fc5 md0]#ps ax| grep 3507
3507 ?
还有可能是内核驱动程序打开使用,如被LVM程序当作物理卷(PV)使用:
total 0
lrwxrwxrwx 1 root root 0 08-22 23:31 dm-0 -> ../../../block/dm-0
1.Soft Raid是否一定需要mdadm.conf的配置文件才能启动(也就是重启后怎么自动启动Raid)
答案是,不一定.
if [ -f /etc/mdadm.conf ]; then
/sbin/mdadm -A -s
fi
但是,你可以没有配置文件,在启动后,用下面的方法启动
#mdadm -A /dev/md0 /dev/sd[bcde]
kernel: md: Autodetecting RAID arrays.
2.Soft Raid的本身的信息是记录在什么地方?
所以删除RAID中的硬盘的方法如下
#mdadm –stop /dev/md0
#mdadm –remove /dev/md0
# mdadm --zero-superblock /dev/sda
命令概要: mdadm [模式选项] [RAID设备名] [子选项…] [组件设备名…]
模式选项 | 子选项 | 备注 |
无特定模式 | –verbose | 显示更详细的信息 用于 –detail –scan 或者 –examine –scan |
–force | 某些选项强制执行 | |
–config= | 指定配置文件,默认是”/etc/mdadm.conf”或者是”/etc/mdadm/mdadm.conf”,假如配置文件名是 “partitions”,则mdadm会读取/proc/partitions的设备用于scan。 假如配置文件名是”none”,则mdadm会认为配置文件是空的。 | |
–scan | 从配置文件或者/proc/mdstat中扫描信息。 | |
–metadata= | 定义组件设备上超级块的类型。对于–create,默认是0.90。 0,0.90 : 限制一个RAID中的设备数为28个,限制组件设备大小为2TB 1,1.0,1.1,1.2 :不同的子版本号标识在不同的地方存储超级块。1.0在设备的结尾,1.1在设备的开头,1.2在设备的4K处。 | |
–homehost= | 在创建一个RAID时,homehost名会记录在超级块中。在1.X超级块中,它是RAID名字的前缀。0.90超级块中,homehost名的的SHA1值会保存在UUID的后半部分。 当使用Auto-Assemble时,只有相同homehost名的RAID才会被组建。 | |
–create
–build –grow | –raid-devices= | 指定一个RAID中active devices的数目。 |
–spare-devices= | 指定创建一个RAID时spare devices中的数目。 | |
–size= | 在RAID1/4/5/6中每个设备所能利用的数据容量。这个值必须是 chunk size的整数倍。而且必须留128K的设备空间用于RAID超级块。假如没有指定,则默认使用最小设备空间。 该选项能用–grow 进行扩容。 | |
–chunk= | 条带大小 | |
–rounding= | 在linear array中的rounding factor,等于条带大小 | |
–level | 设置RAID级别,RAID级别有(有些是同义词,比如raid5和5): Linear,raid0,0,stripe,raid1,1,mirror,raid4,4,raid5,5,raid6,6,raid10,10,multipath,mp,faulty。 –build只支持linear,stripe,raid0,0,raid1,multipath,mp,faulty。 –grow不支持改变RAID级别。 | |
–layout= (–parity=) | 设置RAID5、RAID10数据布局类型,控制faulty级别的failure的模式。 | |
--bitmap= | 这个选项对性能可能有影响,具体查看《mdadm手册翻译》 设置一个文件用于保存write-intent位图。 当文件名是”internal”时,位图复制保存在RAID组件设备(一个RAID的所有组件设备)的超级块中。当–grow,文件名是”none”时,位图会被移除。 | |
–bitmap-chunk= | 这个选项对性能可能有影响,具体查看《mdadm手册翻译》 设置位图中每位所映射块的大小。 当使用”internal”位图时,映射块的大小是自动设置的(根据超级块中可用空间)。 | |
–write-mostly | –build、–create、–add后的设备都被标记上”wirte-mostly”。这个选项只对RAID1有效,即”md”driver会避免从RAID1的所有设备读取数据。假如镜像的速度很慢,这是非常有用的。 | |
–write-behind= | 该选项只对RAID1有效。这个选项会设置最大的写队列深度,默认值是256。使用write-behind的前提是先设置write-intent bitmap,先设置设备为write-mostly。 | |
–assume-clean | 告诉mdadm这个array已经clean。当array从一个严重的故障中恢复时,这个选项会保证没有数据会被覆盖。当创建RAID1和RAID10时,这个选项也能避免初始化同步。但是使用该选项必须要很谨慎。 | |
–backup-file= | 当使–grow为RAID5增加组件设备数时,该文件保存关键数据。(该文件不能在该RAID5上,以免发生死锁。) | |
–name | 给一个RAID设置名字,只在1.X超级块中有用,它是简单的字符串,用于assembling时识别RAID组件设备。 | |
–run | 强制激活RAID。(当一个RAID中的某些组件设备被其他RAID或者文件系统占用时)。使用这个选项,设备上有旧的元数据信息的提示会被忽略。 | |
–force | mdadm无条件接受指定的参数。 使用该选项可以只使用一个设备创建RAID; 创建RAID5时使用该选项,使得RAID5初始化不使用recovery模式,而是校验同步所有组件设备上的数据(比recovery模式要慢)。详情请见命令举例中的创建RAID | |
–auto= | 创建md设备文件。选项是{no,yes,md,mdp,part,p}{NN}。默认是yes。 “yes”要求RAID设备名是标准格式的,然后设备文件类型和minor号会自动确定。 比如RAID设备名是”/dev/mdx” 查看/proc/partitions可以看到mdx的major号是9,minor号是x。 当使用”md”时,RAID设备名可以是非标准格式,比如”/dev/md/zhu”,然后创建两个设备文件/dev/md/zhu 还有 /dev/mdx,并给这两个设备文件分配相同的major号和minor号(也就是这两个设备文件指向同一个设备)。分配minor号的方法是:分配一个没有使用过的minor号,这个minor号就是/dev/mdx中的数字x。查看/proc/partitions和/proc/mdstat,RAID设备名还是/dev/mdx。 当使用”mdp,p,part”时,RAID设备名可以是非标准格式,比如”/dev/md/zhu”,除了创建设备文件/dev/md/zhu 还有 /dev/mdx外,还会创建 /dev/md/zhup1, /dev/md/zhup2, /dev/md/zhup3, /dev/md/zhup4,这些是分区设备文件。 | |
–symlink=no | 默认下–auto会创建/dev/md/zhu的软连接 /dev/md_zhu。假如使用该选项,则不会创建软连接。 | |
–assemble | –uuid= | 重组RAID,要求组件设备的uuid相同 |
–super-minor= | minor号会保存在每个组件设备中的超级块中,可以根据这个重组RAID。 | |
–name= | 根据RAID名重组RAID。 | |
–force | 即使一些超级块上的信息过时了,也可以强制重组。 | |
–run | 即使RAID中的组件设备不完整(例如原来创建4块盘的RAID5,现在只发现3块成员盘),RAID也被重组,并启动。 (假如不用–run,RAID只被重组,但是不启动) | |
–no-degraded | 和–scan选项一起使用。 禁止RAID中的组件设备不完整时启动RAID,知道RAID中的组件完整。 | |
–auto | 如–create中的 –auto | |
–bitmap | 指定bitmap文件(当RAID创建时所指定的bitmap文件),假如RAID使用internal类型的bitmap,则不需指定。 | |
–backup-file= | 当增加RAID5的组件设备数,指定backup-file文件。在RAID5重构过程中,假如系统当机,backup-file文件会保存关键数据,使得重启系统之后,重构可以继续进行。假如没有指定backup-file,mdadm会使用热备盘上的空间作为备份空间。 | |
–update= | 更新RAID中每个组件设备的超级块信息。选项有sparc2.2、summaries、uuid、name、homehost、resync、byteorder、super-minor | |
–auto-update-homehost | 只对auto assembly情况下有用。 | |
Manage模式 | –add | 给RAID在线添加设备(可用于添加热备盘) |
–re-add | 给RAID重新添加一个以前被移除的设备。 假如一个RAID使用write-intent bitmap时,它的一个设备被移除后又被重新添加,bitmap可以避免完全重建,而是只更新那些设备被移除后已经被更新过的块数据。 | |
–reomve | 移除设备,只能移除failed(失效)和spare(热备)设备。(因此假如要移除RAID5中的一个活动设备,需要先使用–fail选项使该设备的状态变成failed,然后才能移除。) 该选项后面跟的是设备名(比如是 /dev/sdc),也可以是failed和detached关键字。Failed使得所以失效的部件被移除,detached使得所以被拔出的硬盘被移除。 | |
–fail | 使RAID中某个设备变成failed状态。 该选项后面跟的是设备名(比如是 /dev/sdc),也可以是detached关键字。 | |
Misc模式 | –query | 查询一个RAID或者一个RAID组件设备的信息 |
–detail | 查询一个RAID的详细信息 | |
–examine | 查询组件设备上的超级块信息 | |
–sparc2.2 | 用于修正超级块信息,详情请见用户手册。 | |
–examnie-bitmap | 查看bitmap文件中的信息 | |
–run | 启动不完整的RAID(比如本来是有4块盘的RAID5,现在3块盘也可以启动)。 | |
–stop | 禁止RAID活动,释放所有资源。但是RAID中组件设备上的超级块信息还在。还可以重新组建和激活RAID。 | |
–readonly | 使RAID只能只读 | |
–readwrite | 使RAID能读写 | |
–zero-superblock | 假如一个组件设备包含有效的超级块信息,那么这个超级块会被写0覆盖。假如使–force选项,则不管超级块中是否有信息,都会被写0覆盖。 | |
–test | 假如–detail一起使用,则mdadm的返回值是RAID的状态值。 0 代表正常 1 代表降级,即至少有一块成员盘失效 2 代表有多快成员盘失效,整个RAID也失效了(对于RAID1/5/6/10都适用)。 4 读取raid信息失败 | |
–monitor
(–follow) | | 设置警报邮件 |
–program | 当监测到一个事件发生时,关于该事件的信息会作为参数被发给该程序 | |
–syslog | 所有事件都会通过syslog报告 | |
–delay | Mdadm会隔多少秒轮询各个RAID,默认是60秒 | |
–daemonise | Mdadm会创建一个子进行作为后台监控程序。该子进程的PID号会输入到stdout上。 | |
–pid-file | 当–daemonise一起使用时,子进程的PID号会写入该文件中 | |
–oneshot | 只会检测RAID一次。它会检测NewArray、DegradedArray、SparesMissing事件。 在cron脚本中运行”mdadm –monitor –scan –oneshot”会定期报告。 | |
–test | 对每个RAID产生TestMessage,用于测试mail、program是否正确。 |