mdadm是linux下用于创建和管理软件RAID的命令,是一个模式化命令。但由于现在服务器一般都带有RAID阵列卡,并且RAID阵列卡也很廉价,且由于软件RAID的自身缺陷(不能用作启动分区、使用CPU实现,降低CPU利用率),因此在生产环境下并不适用。但为了学习和了解RAID原理和管理,因此仍然进行一个详细的讲解:

一、创建模式

选项:-C
专用选项:
-l 级别
-n 设备个数
-a {yes|no} 自动为其创建设备文件
-c 指定数据块大小(chunk)
-x 指定空闲盘(热备磁盘)个数,空闲盘(热备磁盘)能在工作盘损坏后自动顶替
注意:创建阵列时,阵列所需磁盘数为-n参数和-x参数的个数和
 
示例:

1、创建raid0:

1.1 创建raid

mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
注意:用于创建raid的磁盘分区类型需为fd
 1.2 格式化:
mkfs.ext4 /dev/md0
注意:在格式化时,可以指定-E选项下的stride参数指定条带是块大小的多少倍,有在一定程度上提高软RAID性能,如块默认大小为4k,而条带大小默认为64k,则stride为16,这样就避免了RAID每次存取数据时都去计算条带大小,如:
mkfs.ext4  -E stride=16 -b 4096 /dev/md0
其中stride=chunk/block,为2的n次方
 

2、创建raid1:

2.1 创建raid
[root@localhost ~]# mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sdb{5,6}
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device.  If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
注意:这个提示是说软raid不能用作启动分区。
 2.2 格式化:
[root@localhost ~]# mkfs.ext4  /dev/md1

3、创建raid5:

由于没有磁盘空间,我将原来做raid1的测试磁盘全部删除后重新建立四个分区用于raid5测试,分别为sdb5-8
3.1 创建raid5
[root@localhost ~]# mdadm -C /dev/md2 -a yes -l 5 -n 3 /dev/sdb{5,6,7}
mdadm: /dev/sdb5 appears to be part of a raid array:
level=raid1 devices=2 ctime=Sun Jul 14 09:14:25 2013
mdadm: /dev/sdb6 appears to be part of a raid array:
level=raid1 devices=2 ctime=Sun Jul 14 09:14:25 2013
mdadm: /dev/sdb7 appears to be part of a raid array:
level=raid1 devices=2 ctime=Sun Jul 14 09:14:25 2013
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
注意:由于我的分区刚才在raid1上使用过,因此有此提示。
3.2 格式化:
[root@localhost ~]# mkfs.ext4 /dev/md2
3.3 增加热备磁盘:
[root@localhost ~]# mdadm /dev/md2 -a /dev/sdb8
 

4、查看md状态:

4.1 查看RAID阵列的详细信息:
选项: -D = --detail
mdadm -D /dev/md#   查看指定RAID设备的详细信息
4.2 查看raid状态
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md0 : active raid0 sdb2[1] sdb1[0]
     4206592 blocks super 1.2 512k chunks
 
md1 : active raid1 sdb6[1] sdb5[0]
      2103447 blocks super 1.2 [2/2] [UU]
 
unused devices: <none>
 
 
注意:在创建raid前,应该先查看磁盘是否被识别,如果内核还为识别,创建Raid时会报错:
cat /proc/partitions
如果没有被识别,可以执行命令:
kpartx /dev/sdb或者partprobe/dev/sdb
 

二、管理模式

选项:-a(--add),-d(--del),-r(--remove),-f(--fail)

1、模拟损坏:

mdadm /dev/md1 -f /dev/sdb5

2、移除损坏的磁盘:

mdadm /dev/md1 -r /dev/sdb5

3、添加新的硬盘到已有阵列:

mdadm /dev/md1 -a /dev/sdb7
注意:
3.1、新增加的硬盘需要与原硬盘大小一致
3.2、如果原有阵列缺少工作磁盘(如raid1只有一块在工作,raid5只有2块在工作),这时新增加的磁盘直接变为工作磁盘,如果原有阵列工作正常,则新增加的磁盘为热备磁盘。

4、停止阵列:

选项:-S = --stop

mdadm -S /dev/md1
 

4、启动阵列:

选项:-R= --run

mdadm -R  /dev/md1

三、监控模式

选项:-F
不常用,不做详细说明。

四、增长模式,用于增加磁盘,为阵列扩容:

选项:-G

示例,将上述raid5的热备磁盘增加到阵列工作磁盘中

[root@localhost ~]# mdadm -G /dev/md2  -n 4
注意:-n 4 表示使用四块工作磁盘
再次使用-D选项查看阵列详细信息如下:
[root@localhost ~]# mdadm -D /dev/md2
……此处略掉部分信息……
   Number   Major   Minor   RaidDevice State
           0       8       21        0      active sync   /dev/sdb5
           1       8       22        1      active sync   /dev/sdb6
             3       8       23        2      active sync   /dev/sdb7
           4       8       24        3      active sync   /dev/sdb8
 

五、装配模式,软RAID是基于系统的,当原系统损坏了,需要重新装配RAID

选项:-A

示例:将上述已经停止的阵列重新装配:

mdadm -A /dev/md1 /dev/sdb5 /dev/sdb6
 

实现自动装配:

mdadm运行时会自动检查/etc/mdadm.conf  文件并尝试自动装配,因此第一次配置raid后可以将信息导入到/etc/mdadm.conf  中,命令如下:

[root@localhost ~]# mdadm -Ds >/etc/mdadm.conf

mdadm 软RAID的更多相关文章

  1. 软RAID管理

    软RAID管理 软RAID 软RAID 提供管理界面:mdadm 软RAID为空余磁盘添加冗余,结合了内核中的md(multi devices). RAID 设备可命名为/dev/md0./dev/m ...

  2. 软RAID管理命令mdadm详解

    软RAID管理命令mdadm详解 mdadm是linux下用于创建和管理软件RAID的命令,是一个模式化命令.但由于现在服务器一般都带有RAID阵列卡,并且RAID阵列卡也很廉价,且由于软件RAID的 ...

  3. [daily][archlinux][mdadm][RAID] 软RAID

    一, 使用mdadm创建RAID 参考:https://wiki.archlinux.org/index.php/RAID 1.  安装 mdadm /home/tong [tong@TStation ...

  4. Raid 介绍以及软raid的实现

    RAID: old Redundant Arrays of Inexpensive Disks (廉价磁盘冗余阵列) new Redundant Arrays of Independent Disks ...

  5. CentOS 6.3下配置软RAID(Software RAID)

    一.RAID 简介 RAID 是英文Redundant Array of Independent Disks 的缩写,翻译成中文意思是“独立磁盘冗余阵列”,有时也简称磁盘阵列(Disk Array). ...

  6. 网易视频云技术分享:linux软raid的bitmap分析

    网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PAAS服务,在线教育.远程医疗.娱乐秀场.在线 ...

  7. ☆RHEL6创建软raid的使用☆——经典之作

    raid主要的种类 1.raid0  扩展卷   raid 0又称Stripee或Striping,中文译为集带工作方式, 有时也可以理解为拼凑. 它是将要存取的数据以条带状的形式尽量平均分配到多个硬 ...

  8. linux磁盘管理系列-软RAID的实现

    1 什么是RAID RAID全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想是把多个磁盘组合起来,组合一个磁盘阵列组,使得性能大幅提高. R ...

  9. linux磁盘管理系列二:软RAID的实现

    磁盘管理系列 linux磁盘管理系列一:磁盘配额管理   http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html l ...

随机推荐

  1. mysql 使用inet_aton和inet_ntoa处理ip地址数据

    mysql 使用inet_aton和inet_ntoa处理ip地址数据 mysql提供了两个方法来处理ip地址 inet_aton 把ip转为无符号整型(4-8位) inet_ntoa 把整型的ip转 ...

  2. 揭秘 Python 中的 enumerate() 函数

    原文:https://mp.weixin.qq.com/s/Jm7YiCA20RDSTrF4dHeykQ 如何以去写以及为什么你应该使用Python中的内置枚举函数来编写更干净更加Pythonic的循 ...

  3. 记录在Python2.7 x64 bit 下 PyQt5.8的编译过程

    由于工作需要使用python下面的Qt库.PyQt现在只提供针对Python3.X系列的PyQt,所有需要自己手动编译.防止忘记,特意写下随笔记录备忘. 工 作  环境:Python版本:Python ...

  4. svn 技巧

    参考:https://blog.csdn.net/wlccomeon/article/details/20398923

  5. CDN理解<转>

    CDN则是更高级的手段.CDN到底如何工作的呢,让我们来大概了解一下! CDN的基础百科资料也很多了,我也稍等提一下.CDN,Content Distribute Network,即:内容分发网络. ...

  6. python's output redirect

    [python's output redirect] fin = open("xx.txt", 'r'); print >>fin, "hello world ...

  7. 理解ServletRequest和ServletResponse

    博客地址:http://blog.51cto.com/lavasoft/275586

  8. unity3d 移动与旋转 1

    移动与旋转 1 player角色随asdw按键左右上下移动并旋转 public void Update() { // Reset player rotation to look in the same ...

  9. 1-求组合数(c(n, m))的几种方法

    1.求C(n, m) 动态规划(递归+记忆数组) 递推关系为:C(n, m) = C(n-1, m) + C(n - 1, m - 1),C(n, m)表示为从n个数中选出m个出来,可以基于最后一个元 ...

  10. c语言静态断言-定义自己的静态断言

    c语言里面可以自己定义静态断言,更加方便的调试代码. 使用静态断言 #include<stdio.h> #include<stdlib.h> #include<asser ...