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热备设备参数的个数和
硬盘识别确认
在创建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命令