Linux 内核提供了一种替代昂贵硬件RAID的模式——软RAID,并同时提供了 mdadm 命令进行控制。但mdadm命令选项过于繁杂,在此记录一些常用选项和命令以备查看
原文链接:http://blog.ryjer.com/posts/a11db3421e.html
命令格式: mdadm [模式选项] [RAID设备名] [子选项…] [组件设备名…]
1 创建模式 -C
选项简写 | 选项全写 | 含义 | 备注 |
---|
-C | –create | 创建阵列 | |
-l | –level | 设置阵列级别 | |
-n | –raid-devices | 组成raid的活动设备数 | 这里的活动设备指不包括热备设备 |
-a | –auto | 通知mdadm是否创建设备文件,并分配一个未使用的次设备号 | 默认值是–auto=yes,需要md设备的设备名是一个标准格式,根据这个设备名的格式来指定RAID是否可分区以及该RAID的次设备号。当–auto=yes时标准格式为:不可分区阵列,/dev/mdNN、/dev/md/NN,如指定设备文件名为/dev/md0,则该RAID是一个不可分区的,且次设备号为0。可分区阵列/dev/md/dNN和/dev/md_dNN;–auto=md,创建一个不可以分区的阵列;–auto=mdp/part/p,创建一个可以分区的阵列;如果指定了–scan参数,那配置文件(/etc/mdadm.conf)里面指定的auto=将覆盖命令行后面给定的–auto=。 |
-c | –chunk | 指定数据块/条带大小,单位KB | 默认64KB,通常镜像型的raid1不需要这个参数,只有条带型的raid需要 |
-x | –spare-devices | 指定空闲盘(热备磁盘)个数 | 空闲盘(热备磁盘)能在工作盘损坏后自动顶替 |
-z | –size | 指定每个成员盘使用多大的空间,单位KB | 当创建RAID1/4/5/6时,可以指定每个成员盘使用多大的空间。同时磁盘最后要留下128Kb大小空间,用于存放RAID的superblock。如果没有指定该参数,mdadm将使用最小成员盘的大小指定该值。如果某个成员盘的大小大于最小成员盘1%,将会有警告信息,提示有部分空间没有被使用。创建阵列时,如果RAID中所有成员盘使用了的空间都小于其本身的大小,那么它们剩余的空间可以通过–grow来扩容。–size=max,mdadm将自动选择一个适合的最大值,来创建阵列。 |
-p | –layout | 控制数据布局 | 设置RAID5、RAID10数据布局类型,控制faulty级别的failure的模式。 |
| –assume-clean | 创建阵列时,不初始化磁盘上的数据,将指定的磁盘直接组成一个RAID。 | 当array从一个严重的故障中恢复时,这个选项会保证没有数据会被覆盖。当创建RAID1和RAID10时,这个选项也能避免初始化同步。但是使用该选项必须要很谨慎。 |
注意:创建阵列时,阵列所需磁盘数为-n活动设备参数和-x热备设备参数的个数和
0 硬盘识别确认
在创建raid前,应该先查看磁盘是否被识别,如果内核还为识别,创建Raid时会报错。
使用以下命令查看硬盘是否被识别
如果没有被识别,可以执行命令:
或者
创建 raid0
使用 /dev/sdb1
和 /dev/sdb2
共2
个设备组建条带大小为128KB
的 raid0
新设备 /dev/md0
,
1
| mdadm -C /dev/md0 -a yes -l 0 -n 2 -c 128 /dev/sdb{1,2}
|
创建 raid1
使用 /dev/sdb3
和 /dev/sdb4
共2
个设备组建 raid1
新设备 /dev/md1
1
| mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{3,4}
|
创建 raid5
使用 /dev/sdb5
、 /dev/sdb6
、/dev/sdb7
、/dev/sdb7
共4
个设备组建 raid5
新设备 /dev/md2
,其中3
个作为活动盘,1
个作为热备盘
1
| mdadm -C /dev/md2 -a yes -l 5 -n 3 -x 1 /dev/sdb{5,6,7,8}
|
2 Misc 混杂模式
选项简写 | 选项全写 | 含义 | 备注 |
---|
-Q | –query | 检查设备是否为md设备,是否为md阵列的组成部分 | |
-D | –detail | 显示一个阵列的详细信息 | |
-Y | –export | 与–detail一起使用,使阵列信息的输出格式变为key=value的格式 | |
-R | –run | 启动不完整的RAID | 比如本来是有4块盘的raid5,现在3块盘也可以启动 |
-S | –stop | 停止阵列 | 被停止的阵列需要重新组装后才能使用 |
-o | –-readonly | 使RAID只能只读 | |
-w | –readwrite | 使RAID能读写 | |
| –zero-superblock | 将包含合法md信息的superblock区域置为零 | 停止阵列后,若需要清理磁盘上的阵列信息,需要执行该操作。 |
-t | –test | 与–detail一起使用,获取阵列的状态 | 写shell脚本时会用到,而与–test一起使用,echo $?的结果如下:0:阵列处于active状态。1:阵列存于degrade和重构状态。2:阵列处于disabled状态。4:获取设备信息时,存在错误。 |
查询一个md设备
查看 详细信息
查看 raid状态
3 管理模式
选项简写 | 选项全写 | 含义 | 备注 |
---|
-f | –fail | 模拟损坏 | |
-r | –remove | 移除损坏的硬盘 | |
-a | –add | 添加新硬盘到阵列中 | |
| –re-add | 增加一个刚刚从阵列中移除不久的设备 | |
-S | –stop | 停止阵列 | |
模拟损坏
模拟 md1
阵列中的 sdb5
损坏
1
| mdadm /dev/md1 -f /dev/sdb5
|
移除损坏硬盘
移除阵列 md1
中的硬盘 sdb5
1
| mdadm /dev/md1 -r /dev/sdb5
|
添加新的硬盘到已有的阵列
添加硬盘 sdb7
到阵列 md1
1
| mdadm /dev/md1 -a /dev/sdb7
|
停止阵列
注意事项:
- 新增加的硬盘需要与原硬盘大小一致
- 如果原有阵列缺少工作磁盘(如raid1只有一块在工作,raid5只有2块在工作),这时新增加的磁盘直接变为工作磁盘,如果原有阵列工作正常,则新增加的磁盘为热备磁盘。
4 扩容模式 -G
选项简写 | 选项全写 | 功能 | 备注 |
---|
-G | –grow | 管理模式 | |
-n | –raid-disks | 改变成员盘数量 | 阵列只有在正常状态下,才能扩容,降级及重构时不允许扩容。对于raid5来说,只能增加成员盘,不能减少。而对于raid1来说,可以增加成员盘,也可以减少。但要减少成员盘时,首先要将盘faulty和removed掉。 |
-z | –size | 改变成员盘大小 | 可以增加或者减小成员空间大小。当增加空间时,将执行resync操作。madam –grow /dev/md0 –size=max,分配可使用最大的空间给阵列。 |
-b | –bitmap | 增加或者移除bitmap | 增加bitmap:-b internal ;移除bitmap:-b none |
-p | –layout | 改变校验数据分布。等同于create模式下–layout选项。 | |
重置阵列硬盘数
将阵列 md1
的活动硬盘数重置为5
个
1
| mdadm --grow /dev/md0 --raid-disks=5
|
改变成员盘大小
1 2
| mdadm --grow /dev/md0 --size=4194304 madam --grow /dev/md0 --size=max
|
增加位图 bitmap
1
| mdadm --grow /dev/md0 -b internal
|
5 装配模式 -A
选项简写 | 选项全写 | 功能 | 备注 |
---|
-A | –assemble | 组装阵列 | |
-R | –run | 当重组阵列active盘数少于创建时指定个数时,尝试启动阵列 | 正常情况下,组装阵列时,如果指定的active盘数小于期望的盘数,mdadm将组装成功,但状态是inactive,无法使用该RAID。如果指定了–run参数,mdadm将通过各种方式使其启动 |
| –no-degraded | 组装降级阵列,不启动阵列 | 和–scan选项一起使用。禁止RAID中的组件设备不完整时启动RAID,直到RAID中的组件完整。 |
-U | –update | 组装阵列,更新每个设备的superblock信息。 | 选项有 sparc2.2, summaries, uuid, name, homehost, resync, byteorder, devicesize or super-minor。 |
| | | |
软RAID是基于系统的,当原系统损坏了,需要重新装配RAID
将已经停止的阵列md1
重新装配
1
| mdadm -A /dev/md1 /dev/sdb5 /dev/sdb6
|
参考
mdadm命令详解 - lpfuture - 博客园 (cnblogs.com)
软RAID管理命令mdadm详解 | 旺旺知识库 (toxingwang.com)
mdadm命令详解_wm0615ht的博客-CSDN博客_mdadm命令