Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1945408
  • 博文数量: 1000
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7921
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-20 09:23
个人简介

storage R&D guy.

文章分类

全部博文(1000)

文章存档

2019年(5)

2017年(47)

2016年(38)

2015年(539)

2014年(193)

2013年(178)

分类: LINUX

2014-09-07 17:47:07

原文地址:linux mdadm软件raid实现 作者:laigq


mdadm用法
基本语法 : mdadm [mode] [options]
mode  有7种:
Assemble:将以前定义的某个阵列加入当前在用阵列。
Build:Build a legacy array ,每个device 没有 superblocks
Create:创建一个新的阵列,每个device 具有 superblocks
Manage: 管理阵列,比如 add 或 remove
Misc:允许单独对阵列中的某个 device 做操作,比如抹去superblocks 或 终止在用的阵列。
Follow or Monitor:监控 raid 1,4,5,6 和 multipath 的状态
Grow:改变raid 容量或 阵列中的 device 数目
可用的 [options]:
-A, --assemble:加入一个以前定义的阵列
-B, --build:Build a legacy array without superblocks.
-C, --create:创建一个新的阵列
-Q, --query:查看一个device,判断它为一个 md device 或是 一个 md 阵列的一部分
-D, --detail:打印一个或多个 md device 的详细信息
-E, --examine:打印 device 上的 md superblock 的内容
-F, --follow, --monitor:选择 Monitor 模式
-G, --grow:改变在用阵列的大小或形态
-h, --help:帮助信息,用在以上选项后,则显示该选项信息
--help-options
-V, --version
-v, --verbose:显示细节
-b, --brief:较少的细节。用于 --detail 和 --examine 选项
-f, --force
-c, --config= :指定配置文件,缺省为 /etc/mdadm.conf
-s, --scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息。配置文件/etc/mdadm.conf
创建阵列及其文件系统
下面将通过实际操作,创建一个RAID1:
4.1 格式化待做软RAID的分区:
准备两个待做RAID1的分区/dev/hdc1, /dev/hdd1:
要求: 大小近乎相等,格式为Linux raid autodetect (即:fd);
# fdisk /dev/hdc
The number of cylinders for this disk is set to 9964.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
  (e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n
Command action
  l   logical (5 or over)
  p   primary partition (1-4)
p
First cylinder (1012-9964, default 1012):
Using default value 1012
Last cylinder or +size or +sizeM or +sizeK (1012-1039, default 1012): 1025
Command (m for help): p
Disk /dev/hdc: 20.0 GB, 20060135424 bytes
16 heads, 63 sectors/track, 38869 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
  Device Boot      Start         End      Blocks   Id  System
/dev/hdc1               1       38869    19589944+  fd  Linux raid
Command (m for help): t      (更改分区类型)  //转为 fd 时,不用编辑 mdadm.conf 也能自动加载 md0磁盘阵列。
Selected partition: 1
Hex code (type L to list codes): fd  (分区类型为 Linux raid autodetect)
Command (m for help): w    (保存退出)
#fdisk -l /dev/hdc
Disk /dev/hdc: 20.0 GB, 20060135424 bytes
16 heads, 63 sectors/track, 38869 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
  Device Boot      Start         End      Blocks   Id  System
/dev/hdc1               1       38869    19589944+  fd  Linux raid autodetect
同样创建另一分区 /dev/hdd
4.2 创建RAID 1:
#mdadm -C --verbose /dev/md0 --level=1 --raid-devices=2 /dev/hdc1 /dev/hdd1
--level:创建磁盘阵列的raid 的等级
--raid-devices:磁盘的个数
#mdadm -D /dev/md0 (查看raid信息)
/dev/md0:
       Version : 00.90.01
 Creation Time : Mon Dec 17 08:43:57 2007
    Raid Level : raid1
    Array Size : 19589824 (18.68 GiB 20.06 GB)
 Used Dev Size : 19589824 (18.68 GiB 20.06 GB)
  Raid Devices : 2
 Total Devices : 2
Preferred Minor : 0
   Persistence : Superblock is persistent
   Update Time : Mon Dec 17 09:26:08 2007
         State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
 Spare Devices : 0
          UUID : dade41ff:9df3d1b7:ba30ec8a:696dd689
        Events : 0.3170
   Number   Major   Minor   RaidDevice State
      0      22        1        0      active sync   /dev/hdc1
      1      22       65        1      active sync   /dev/hdd1
#cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdd1[1] hdc1[0]
     19589824 blocks [2/2] [UU]
    
unused devices:
创建文件系统并挂接(mount)使用
RAID1 已经启动并处于运行状态,现在要做的就是在其上创建一个文件系统,这里使用mkfs命令,文件系统类型为ext3。命令如下:
# mkfs -t ext3 /dev/md0
当新的文件系统生成之后,就可以将/dev/md0挂接到指定的目录了。命令如下:
# mount /dev/md0 /mnt/md0
为了让系统在启动时自动将 /dev/md0 挂接到 /mnt/md0,还需要修改 /etc/fstab 文件,添加如下内容:
/dev/md0 /mnt/raid ext3 defaults 0 0
添加/etc/mdadm.conf 配置文件:
echo DEVICE /dev/sd[bcd]1 > /etc/mdadm.conf
mdadm -Ds >> /etc/mdadm.conf

#cat /etc/mdadm.conf
DEVICE /dev/hdc1 /dev/hdd1
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=dade41ff:9df3d1b7:ba30ec8a:696dd689 devices=/dev/hdc1,/dev/hdd1

通过mdadm -D命令,我们可以查看RAID的版本、创建的时间、RAID级别、阵列容量、可用空间、设备数量、超级块、更新时间、各个设备的状态、RAID算法以及块大小等信息。
mdmonitor 能监控有坏盘时自动发 有邮件给 用户:
service mdmonitor start
chkconfig mdmonitor on

#mkfs.ext3 /dev/md0

常用阵列维护命令
1.启动阵列
# mdadm -As /dev/md0
该命令指启动/dev/md0阵列,其中“-A”指装载一个已存在的阵列;“-s”指查找mdadm.conf文件中的配置信息,并以此为依据启动阵列。
#mdadm -As
该命令指启动mdadm.conf文件中的所有阵列。
#mdadm -A /dev/md0 /dev/sd[b,c,d,e]1
如果没有创建mdadm.conf文件则可以采用上面这种启动方式。
2.停止阵列
# mdadm -S /dev/md0
3.显示指定阵列的详细信息
# mdadm -D /dev/md0

4、 如果你没有配置/etc/mdadm.conf文件,而且又忘了某磁盘属于那个阵列,则你可以使用检测:(-examine)
mdadm -E /dev/sdb1
获得UUID后,也可以这样激活阵列:
mdadm -Av /dev/md0 -uuid=8ba81579:e20fb0e8:e040da0e:f0b3fec8 /dev/sd*
可以看到,只要磁盘没有损坏,这样装配是非常方便的:
5、删除阵列
mdadm -S /dev/md0  //停止 md0 阵列
rm /dev/md0
修改/etc/mdadm.conf、/etc/fstab等配置文件,把相关的地方去掉;
最后,用fdisk对磁盘进行重新分区即可。
6、 监控RAID
mdadm的监控模式提供一些实用的功能,可以使用下列命令来监控/dev/md0,delay参数意味着检测的时间间隔,这样紧急事件和严重的错误会
及时发送给系统管理员:
# mdadm --monitor --delay=300 /dev/md0
当使用监控模式时,mdadm不会退出,可以使用下列命令:
# nohup mdadm --monitor --delay=300 /dev/md0 &
阅读(903) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~