0%

Linux软RAID命令mdadm使用说明

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时会报错。

使用以下命令查看硬盘是否被识别

1
cat /proc/partitions

如果没有被识别,可以执行命令:

1
kpartx /dev/sdb

或者

1
partprobe /dev/sdb

创建 raid0

使用 /dev/sdb1/dev/sdb22个设备组建条带大小为128KBraid0 新设备 /dev/md0

1
mdadm -C /dev/md0 -a yes -l 0 -n 2 -c 128    /dev/sdb{1,2}

创建 raid1

使用 /dev/sdb3/dev/sdb42个设备组建 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/sdb74个设备组建 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设备

1
mdadm --query /dev/md0

查看 详细信息

1
mdadm -D /dev/md1

查看 raid状态

1
cat /proc/mdstat

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

停止阵列

1
mdadm -S /dev/md1

注意事项:

  • 新增加的硬盘需要与原硬盘大小一致
  • 如果原有阵列缺少工作磁盘(如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命令