Linux下使用mdadm创建和管理软raid

注:本次操作以RHEL4为例,但应该可以应用到其它大部分的distro上(guess)。

mdadm的几个常用参数

-C 创建Raid,后面跟参数,代表raid设备的名称。比如:/dev/md0,/dev/md1。

-n 用于创建磁盘阵列的磁盘个数。

-l Raid的级别。

-x 指定用于hotspare(热备盘)的磁盘个数。如果阵列中有一块硬盘坏了,它会立刻顶上,并rebuild;

-D 显示软raid的详细信息;

-s 扫描配置文件(/etc/mdadm.conf)或'/proc/mdstat'来查看遗漏的信息f;

创建软raid的大体流程

使用fdisk工具为新磁盘创建分区;

使用mkfs.XXXX工具将刚才划分好的分区格式化成某种格式的文件系统。比如:ext3,reiserfs等;

使用mdadm来创建软raid;

创建/etc/mdadm.conf文件(注意文件的格式,包括是否有逗号等等。该文件是为了系统在重启后能

够自动启用软raid。可以查看/etc/rc.sysinit脚本,搜索'mdadm'字符串就明白了);

示例:创建软raid5(+hotspare)

以下是我的一次实际操作的完整过程:

这是用'fdisk -l'命令查看到的我当前的磁盘和分区情况(只有/dev/sda在使用,

其它四个都是新磁盘,没有分区,没有格式化):

# fdisk -l

Disk /dev/sda: 6442 MB, 6442450944 bytes

255 heads, 63 sectors/track, 783 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id System

/dev/sda1   *           1         720     5783368+ 83 Linux

/dev/sda2             721         783      506047+ 82 Linux swap

Disk /dev/sdb: 214 MB, 214748160 bytes

64 heads, 32 sectors/track, 204 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/sdc: 214 MB, 214748160 bytes

64 heads, 32 sectors/track, 204 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Disk /dev/sdc doesn't contain a valid partition table

Disk /dev/sdd: 214 MB, 214748160 bytes

64 heads, 32 sectors/track, 204 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Disk /dev/sdd doesn't contain a valid partition table

Disk /dev/sde: 214 MB, 214748160 bytes

64 heads, 32 sectors/track, 204 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Disk /dev/sde doesn't contain a valid partition table

使用fdisk创建分区(本例中将整块磁盘划分为一个主分区。其余几块磁盘也做相同的操作。):

# fdisk /dev/sdb

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.

Warning: invalid flag 0x0000 of partition table 4 will be corrected

by w(rite)

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-204, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-204, default 204):

Using default value 204

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

为刚才新建的分区建立文件系统(其余几个分区依次做相同的操作):

# mkfs.ext3 /dev/sdb1

mke2fs 1.35 (28-Feb-2004)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

52416 inodes, 208880 blocks

10444 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=67371008

26 block groups

8192 blocks per group, 8192 fragments per group

2016 inodes per group

Superblock backups stored on blocks:

8193, 24577, 40961, 57345, 73729, 204801

Writing inode tables: done

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

所有磁盘都操作完后,再次用'fdisk -l'查看磁盘及分区状态:

# fdisk -l

Disk /dev/sda: 6442 MB, 6442450944 bytes

255 heads, 63 sectors/track, 783 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id System

/dev/sda1   *           1         720     5783368+ 83 Linux

/dev/sda2             721         783      506047+ 82 Linux swap

Disk /dev/sdb: 214 MB, 214748160 bytes

64 heads, 32 sectors/track, 204 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot      Start         End      Blocks   Id System

/dev/sdb1               1         204      208880   83 Linux

Disk /dev/sdc: 214 MB, 214748160 bytes

64 heads, 32 sectors/track, 204 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot      Start         End      Blocks   Id System

/dev/sdc1               1         204      208880   83 Linux

Disk /dev/sdd: 214 MB, 214748160 bytes

64 heads, 32 sectors/track, 204 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot      Start         End      Blocks   Id System

/dev/sdd1               1         204      208880   83 Linux

Disk /dev/sde: 214 MB, 214748160 bytes

64 heads, 32 sectors/track, 204 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Device Boot      Start         End      Blocks   Id System

/dev/sde1               1         204      208880   83 Linux

使用mdadm创建一个软raid,raid级别:5;并有一个hotspare盘:

# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd[b-e]1

mdadm: array /dev/md0 started.

输出信息显示软raid(/dev/md0)已经启用了。使用mdadm的-D参数(--detail)可以查

看软raid状态:

# mdadm -D /dev/md0

/dev/md0:

Version : 00.90.01

Creation Time : Wed Aug 23 15:10:19 2006

Raid Level : raid5

Array Size : 417536 (407.75 MiB 427.56 MB)

Device Size : 208768 (203.88 MiB 213.78 MB)

Raid Devices : 3

Total Devices : 4

Preferred Minor : 0

Persistence : Superblock is persistent

Update Time : Wed Aug 23 15:10:21 2006

State : clean

Active Devices : 3

Working Devices : 4

Failed Devices : 0

Spare Devices : 1

Layout : left-symmetric

Chunk Size : 64K

Number   Major   Minor   RaidDevice State

0       8       17        0      active sync   /dev/sdb1

1       8       33        1      active sync   /dev/sdc1

2       8       49        2      active sync   /dev/sdd1

3       8       65       -1      spare   /dev/sde1

UUID : f8283de5:39c73d89:b9fbc266:fdceb416

Events : 0.2

生成配置文件(/etc/mdadm.conf):

# mdadm -D -s >/etc/mdadm.conf

查看一下:

# cat /etc/mdadm.conf

ARRAY /dev/md0 level=raid5 num-devices=3

UUID=f8283de5:39c73d89:b9fbc266:fdceb416

devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1

修改(把上面devices=后面的磁盘,都放到DEVICE后面,并且不要逗号。而/dev/md0之后

的内容,都要用逗号来分隔):

DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

ARRAY /dev/md0

level=raid5,num-devices=3,UUID=f8283de5:39c73d89:b9fbc266:fdceb416

重启一下,检测配置好的软raid是否能够在系统重启后自动启用。

重启后,查看'/proc/mdstat'文件就可以看到软raid的状态:

# cat /proc/mdstat

Personalities : [raid5]

md0 : active raid5 sdb1[0] sde1[3] sdd1[2] sdc1[1]

417536 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: That's all.

出现故障后的恢复

这里指的出现故障,是指raid中的一块磁盘出现了故障,无法使用。这时候需要使用额外的

磁盘来代替它。这里以强制将某块磁盘标记为已损坏,来模拟实际出现故障(注:新的磁盘

的容量最好和已损坏的磁盘一致):

将/dev/sdb1标记为已损坏:

# mdadm /dev/md0 -f /dev/sdb1

mdadm: set /dev/sdb1 faulty in /dev/md0

这时候使用mdadm的-D参数来查看状态,可以看到/dev/sdb1已经被认为是faulty,而

hotspare(热备)盘'/dev/sde1'已经顶替了它的位置(这就是hotspare的作用):

# mdadm -D /dev/md0

/dev/md0:

Version : 00.90.01

Creation Time : Wed Aug 23 15:10:19 2006

Raid Level : raid5

Array Size : 417536 (407.75 MiB 427.56 MB)

Device Size : 208768 (203.88 MiB 213.78 MB)

Raid Devices : 3

Total Devices : 4

Preferred Minor : 0

Persistence : Superblock is persistent

Update Time : Wed Aug 23 15:42:24 2006

State : clean

Active Devices : 3

Working Devices : 3

Failed Devices : 1

Spare Devices : 0

Layout : left-symmetric

Chunk Size : 64K

Number   Major   Minor   RaidDevice State

0       8       65        0      active sync   /dev/sde1

1       8       33        1      active sync   /dev/sdc1

2       8       49        2      active sync   /dev/sdd1

3       8       17       -1      faulty   /dev/sdb1

UUID : f8283de5:39c73d89:b9fbc266:fdceb416

Events : 0.4

既然'/dev/sdb1'出现了故障,当然就要将它移除:

# mdadm /dev/md0 -r /dev/sdb1

mdadm: hot removed /dev/sdb1

现在可以关机了。关机之后拔下这块已损坏的磁盘了,换上你的新磁盘。换好之

后,分区,mkfs.XXXX。然后将它加入到软raid中:

# mdadm /dev/md0 -a /dev/sdb1

mdadm: hot added /dev/sdb1

这时候再使用mdadm的'-D'参数,可以看到sdb1已经作为hotspare盘了:

# mdadm -D /dev/md0

/dev/md0:

Version : 00.90.01

Creation Time : Wed Aug 23 15:10:19 2006

Raid Level : raid5

Array Size : 417536 (407.75 MiB 427.56 MB)

Device Size : 208768 (203.88 MiB 213.78 MB)

Raid Devices : 3

Total Devices : 4

Preferred Minor : 0

Persistence : Superblock is persistent

Update Time : Wed Aug 23 16:19:36 2006

State : clean

Active Devices : 3

Working Devices : 4

Failed Devices : 0

Spare Devices : 1

Layout : left-symmetric

Chunk Size : 64K

Number   Major   Minor   RaidDevice State

0       8       65        0      active sync   /dev/sde1

1       8       33        1      active sync   /dev/sdc1

2       8       49        2      active sync   /dev/sdd1

3       8       17       -1      spare   /dev/sdb1

UUID : f8283de5:39c73d89:b9fbc266:fdceb416

Events : 0.6

misc

假如创建了RAID,但是没有生成 /etc/mdadm.conf 文件,那么系统重启后是

不会启用RAID的,这时候需要这样做:

# mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

linux mdadm 脚本,Linux下使用mdadm创建和管理软raid相关推荐

  1. linux下使用mdadm组软raid,Linux下使用mdadm创建和管理软raid

    Linux下使用mdadm创建和管理软raid 注:本次操作以RHEL4为例,但应该可以应用到其它大部分的distro上(guess). mdadm的几个常用参数 -C 创建Raid,后面跟参数,代表 ...

  2. linux软RAId配置与管理总结,Linux下使用mdadm创建和管理软raid(转)

    Linux下使用mdadm创建和管理软raid 注:本次操作以RHEL4为例,但应该可以应用到其它大部分的distro上(guess). mdadm的几个常用参数 -C 创建Raid,后面跟参数,代表 ...

  3. linux mdadm 脚本,Linux命令:mdadm

    mdadm命令简介: mdadm是linux下用于创建和管理软件RAID的命令,是一个模式化命令. 由于现在服务器一般都带有RAID阵列卡,并且RAID阵列卡也很廉价,且由于软件RAID不能用作启动分 ...

  4. Linux Shell脚本 Linux C程序 获取指定的范围内 or 系统可用端口

    Linux Shell脚本 && Linux C程序 获取指定的范围内 or 系统可用端口 一.源代码及其运行 1. Linux C程序getPort.c 源码 运行示例 2. 脚本文 ...

  5. linux新建图片,Fedora 下的图像创建程序 | Linux 中国

    原标题:Fedora 下的图像创建程序 | Linux 中国 Fedora 有很多程序可以帮助你的创造力.从数字绘图.矢量到像素艺术,每个人都可以在这个周末发挥创意. -- Ryan Lerch 致谢 ...

  6. linux y脚本,Linux中脚本的使用方法

    Linux中脚本的使用方法 一.前言 关于Linux中的脚本的用法,一直没有时间去好好地总结,正好今天下雨,就好好的整理一下思路吧,其实精通了一门语言,比如C语言,学习其他语言需要的成本是非常少的,同 ...

  7. linux函数脚本,linux 函数_linux常用脚本和函数

    摘要 腾兴网为您分享:linux常用脚本和函数,自动刷宝,英语字典,携程,享家等软件知识,以及智慧人社app,安卓终端,vdhcoapp,matebook管家,钦州智慧党建,商户号系统,税务app,济 ...

  8. linux mdadm 脚本,Linux下用mdadm实现软件RAID

    实现过程 -:配置RAID1 第一步:以root用户登录系统,对磁盘进行分区. #fdisk /dev/sdb 将设备/dev/sdb上的全部磁盘空间划分给一个主分区,建立/dev/sdb1分区,并修 ...

  9. linux ant脚本,linux下ant jmeter自动化测试

    1.借助badboy工具进行Jmeter的脚本录制; 2.在Jmeter的图形界面下进行脚本调整和增加理想的监听器; 3.linux下正确安装ant和Jmeter 4.书写ant的执行脚本build. ...

最新文章

  1. Python:通过远程监控用户输入来获取淘宝账号和密码的实验(一)
  2. Java并发编程—Thread类的start()方法是如何启动一个线程的?
  3. 推荐一个Chrome扩展应用,能够自动去除CSDN广告
  4. ASP.NET Core管道深度剖析(3):管道是如何处理HTTP请求的?
  5. java线程安全定义了什么单例_Java中四种线程安全的单例模式实现方式
  6. 剑指offer——27.二叉树的镜像
  7. java实现RSA公私钥PKCS8与PKCS1之间的相互转换(java RSA pkcs8转pkcs1,RSA pkcs1转pkcs8),PKCS8和PKCS1公私钥byte数组还原为java对象
  8. Arduino米思齐Mixly---人体声控灯
  9. 微软笔试题《Arithmetic Puzzles》- 题解
  10. 再谈过时且脆弱的TCP长肥管道三宗罪!
  11. c语言转义字符o用法,gogo体育下载官网-gogo体育下载官网
  12. php函数 chm,php函数手册 chm格式_PHP教程_源雷技术空间
  13. 统计每天的新老用户,日活,周活,月活
  14. 【总结】最全面的Python面试知识!
  15. 圆形体癣是什么样子的图片_【 身上起圈圈型的癣图片】_如何治疗_怎么治疗-大众养生网...
  16. vue 给iframe设置src_vue 中引入iframe,动态设置其src,遇到的一些小问题总结
  17. 【英语阅读】纽约时报 | 乔布斯是对的:手机和iPad杀死了个人电脑
  18. js删除指定html及子标签,js中如何删除某个元素下面的所有子元素?(两种方法)...
  19. 微信小程序之微信登录
  20. 硬盘检测 Victoria教程:每个扇区512byte(现在新的硬盘每个扇区有4K)一个块是4K(4096)扇区,1个块由连续的8个扇区组成。Victoria扫描常选块由2048扇区每扇区512字节

热门文章

  1. 给WinXP和Vista增加启动专杀功能
  2. 中英文名言警句 励志
  3. 活动(Activity)详解
  4. MobileNet系列
  5. Java中Integer超出范围问题
  6. Pythom基础入门
  7. 【图文】海康威视监控视频官方JavaSDK初步尝试
  8. html语言怎么改变文字大小,如何设置css中字体大小?
  9. 安卓day25快速入门 目录结构 清单 DDMS adb 危险权限 发短信 点击事件 安卓版本...
  10. Android设置字间距和行间距