Jun 14

[原]用mdadm管理软件RAID 夜晚

linuxing , 12:42 , 基础知识 » 系统命令 , 评论(3) , 引用(0) , 阅读(29253) , Via 本站原创 | |
 昨天提到安装程序实现软件RAID代替硬件RAID的方法,今天再进一步谈谈手动创建软RAID和日常维护的方法。
 mdadm使用的也是md驱动,由于其拥有多种模式,而且单一工具,不依赖任何配置文件,是替代raidtools的好工具。目前几乎所有发行版本使用的都是该工具。

一、安装和编译
源码下载:http://www.cse.unsw.edu.au/~neilb/source/mdadm/
编译:
tar xzvf ./mdadm-1.6.0.tgz
cd mdadm-1.6.0
make install

rpm安装:
rpm -ivh mdadm-1.6.0-3.rpm

※源码最新版本是2.5,由于我使用的1.6.0的rpm包,所以还是以该版本为例。

二、模式
 mdadm有6种模式,前两种模式:Create、Assemble用于配置和激活阵列;Manage模式用于操作在活动阵列中的设备;Follow或Monitor模式允许管理员对活动阵列配置事件提醒和动作;Build模式用于对旧阵列使用旧版本的md驱动;还有Grow模式可以扩展阵列;剩下的是Misc模式,它包括对多种内部的任务和没有指定特殊模式的一些操作。

系统平台: 红旗 DC Server for x86
硬件平台: Intel Xeon 3.0G DP、1个系统硬盘,3个组成阵列磁盘


三、部署
1、准备磁盘
 只能使用Sofware RAID格式的磁盘才能组成阵列,所以,首先我们要把做好磁盘格式。正如上面提到的,除了系统盘sda外,我们需要对sdb、sdc、sdd进行操作
a)对sdb进行分区
fdisk /dev/sdb

点击在新窗口中浏览此图片
分区前状态:

点击在新窗口中浏览此图片
n,划分区:

点击在新窗口中浏览此图片
t,修改分区格式为fd:

点击在新窗口中浏览此图片
w,保存:

点击在新窗口中浏览此图片
b)同样的方法,对sdc、sdd进行分区和保存
最后状态如下:
点击在新窗口中浏览此图片

2、创建阵列
 mdadm可以支持LINEAR、RAID0  (striping)、 RAID1(mirroring)、 RAID4、RAID5、RAID6和MULTIPATH的阵列模式。
创建命令格式如下:
mdadm [mode] <raiddevice> [options] <component disks>

其中:
引用
[mode]表示引用的模式
指定软RAID设备号,如/dev/md0
[options]可以有长短两种表示方式
表示组成阵列的磁盘分区,可以用shell的方法简短表示

例如:创建一个RAID 0设备:
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

--level表示创建的阵列模式,--raid-devices表示参与阵列的磁盘数量。
点击在新窗口中浏览此图片
也可以这样表达,意思是一样的:
mdadm -Cv /dev/md0 -l0 -n3 /dev/sd{b,c,d}1

还可以增加-c128参数,指定chunk size为128K(默认64K)

3、配置文件
 mdadm不采用/etc/mdadm.conf作为主要配置文件,它可以完全不依赖该文件而不会影响阵列的正常工作。
 该配置文件的主要作用是方便跟踪软RAID的配置。对该配置文件进行配置是有好处的,但不是必须的。推荐对该文件进行配置。
引用
格式:
DEVICE 参与阵列的设备
ARRAY 阵列的描述

 通常可以这样来建立:
echo DEVICE /dev/sd{b,c,d}1 >> /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf

 结果如下:
引用
# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1
ARRAY /dev/md0 level=raid0 num-devices=3 UUID=8ba81579:e20fb0e8:e040da0e:f0b3fec8
  devices=/dev/sdb1,/dev/sdc1,/dev/sdd1


4、格式化阵列
 后续,只要你把/dev/md0作为一个单独的设备来进行操作即可:
mkfs.ext3 /dev/md0
mkdir /mnt/test
mount /dev/md0 /mnt/test

 结果如下:
点击在新窗口中浏览此图片

5、若要开机自动挂载,请加入/etc/fstab中:
引用
/dev/md0                /mnt/tes                auto    defaults        0 0


四、监控和管理
 mdadm可以非常方便的对阵列进行监控和管理的操作,也包括了停止和启动阵列等常用维护。
1、查看
cat /proc/mdstat

可以查看所有使用md驱动的阵列的状态:
点击在新窗口中浏览此图片
mdadm --detail /dev/md0
查看指定阵列的详细信息(-D):
点击在新窗口中浏览此图片
2、停止
mdadm -S /dev/md0

停止指定阵列,并释放磁盘(--stop):
点击在新窗口中浏览此图片
※注意:停止后,原组成阵列的磁盘将处于空闲状态,一旦吾操作这些磁盘,将不能再重启激活原阵列。
3、启动
mdadm -A /dev/md0 /dev/sd{b,c,d}1

启动指定的阵列,也可理解为讲一个新阵列装配到系统中(--assemble):
点击在新窗口中浏览此图片
若你已经在上面配置了/etc/mdadm.conf文件,也可用-s查找:
mdadm -As /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可以在Manage模式下,对运行中的阵列进行添加及删除磁盘。常用于标识failed磁盘,增加spare(冗余)磁盘,以及替换磁盘等。
例如:原来状态是:
点击在新窗口中浏览此图片
则可以使用--fail指定坏磁盘,并--remove走:
mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1

点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
等待同步完成后,结果:
点击在新窗口中浏览此图片
※需要注意的是,对于某些阵列模式,如RAID0等,是不能用--fail和--remove的。
点击在新窗口中浏览此图片
增加一个新的阵列用磁盘
mdadm /dev/md0 --add /dev/sdc1

点击在新窗口中浏览此图片
※需要注意的是,对于某些阵列模式,如RAID0等,是不能用--add的。
6、监控
 在Follow或Monitor状态下,可以使用mdadm对阵列进行监控,例如当阵列出现问题的时候,发送邮件给管理员;或者当磁盘出现问题的时候进行自动的磁盘替换。
nohup mdadm --monitor --mail=sysadmin --delay=300 /dev/md0 &

上述定义:没300秒监控一次,当阵列出现错误,会发送邮件给sysadmin用户。由于monitor启动后是不会自动退出的,所以需要加上nohup和&,使之持续在后台运行。
 在Follow模式下,是允许共享冗余磁盘的。
 例如,我们有两个阵列:/dev/md0、/dev/md1,而/dev/md0里面有一个spare磁盘。当我们在/etc/mdadm.conf中定义类似:
引用
DEVICE  /dev/sd*
ARRAY   /dev/md0 level=raid1 num-devices=3 spare-group=database  
  UUID=410a299e:4cdd535e:169d3df4:48b7144a
ARRAY  /dev/md1 level=raid1 num-device=2 spare-group=database  
  UUID=59b6e564:739d4d28:ae0aa308:71147fe7

 也就是定义一个spare-group组。并运行上面的monitor模式命令。这样,当组成/dev/md1的其中一个磁盘出现问题的时候,mdadm会自动从/dev/md0上移走spare磁盘,并加入/dev/md1中,而不需要人工干预。(请注意,能实现这样工作的,只有在该阵列支持冗余的情况下才能实现,如raid1、raid5等。而对于raid0等阵列模式,是无效的)

五、其他
1、增加spare磁盘
 可以通过在创建的时候指定冗余磁盘:
mdadm -Cv /dev/md0 -l1 -n2 -x1 /dev/sd{b,c,d}1

-x(--spare-devices)参数用于指定冗余磁盘的数量,结果:
点击在新窗口中浏览此图片
 另外,对于full的阵列(例如已经有2个磁盘的RAID1),则直接使用-add参数,mdadm会自动把冗余的磁盘作为spare disk。
2、删除阵列
mdadm -S /dev/md0


rm /dev/md0

修改/etc/mdadm.conf、/etc/fstab等配置文件,把相关的地方去掉;
最后,用fdisk对磁盘进行重新分区即可。
3、重建阵列
 我们也可以在没有fdisk的情况下把使用过,但目前没有属于任何阵列的磁盘划分到新阵列中:
点击在新窗口中浏览此图片
确认后即可。

六、附录
mdadm中文man文档
参考资料:
mdadm: A New Tool For Linux Software RAID Management
Tags: , , , ,
chenlun1994
2014/08/12 21:55
zan
linuxing Email Homepage
2007/06/14 14:05
上面的问题,也可以改为下面的写法:
echo DEVICE /dev/sd{b,c,d}1 >> /etc/mdadm.conf
文章中相应的地方已经修改。
fan3838
2007/05/29 15:28
echo DEVICE /dev/sd[bcd]1 >> /etc/mdadm.conf
上述这个操作不能达到下面的效果吧。
# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1
linuxing 回复于 2007/05/30 11:35
echo语句的结果和mdadm.conf文件的结果是不一致的,谢谢纠正。
但使用echo语句的写法,是可以正常使用的。也就是说,mdadm可以识别这种写法。
对比一下mdamd -Cv命令就知道了。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]