在Linux下用软件实现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模式,他包括对多种内部的任务和没有指定特别模式的一些操作。
系统平台: 红帽 AS4 for x86
三、部署
1、准备磁盘
只能使用Sofware RAID格式的磁盘才能组成阵列,所以,首先我们要把做好磁盘格式。正如上面提到的,除了系统盘sda外,我们需要对sdb、sdc、sdd进行操作
a)对sdb进行分区
fdisk /dev/sdb
n,划分区:

p,划分区:

w,写入退出:

2、创建阵列
mdadm能支持LINEAR、RAID0 (striping)、 RAID1(mirroring)、 RAID4、RAID5、RAID6和MULTIPATH的阵列模式。
创建命令格式如下:
mdadm [mode] [options]
例如:创建一个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[bcd]1
还能增加-c128参数,指定chunk size为128K(默认64K)
3、设置文件
mdadm不采用/etc/mdadm.conf作为主要设置文件,他能完全不依赖该文件而不会影响阵列的正常工作。
该设置文件的主要作用是方便跟踪软RAID的设置。对该设置文件进行设置是有好处的,但不是必须的。推荐对该文件进行设置。
通常能这样来建立:

echo DEVICE /dev/sd[bcd]1 > /etc/mdadm.conf
mdadm -Ds >> /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf

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[bcd]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[bcd]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的情况下把使用过,但目前没有属于所有阵列的磁盘划分到新阵列中:

时间: 2024-10-29 04:32:36

在Linux下用软件实现RAID功能的实现方法_服务器其它的相关文章

在Linux下用软件实现RAID功能_unix linux

数据安全性是人们在使用计算机中最重要的问题之一.通常情况下,人们会在服务器环境中采用硬盘镜像技术,以达到数据的双重备份.同样,在Linux环境下,我们也可以采用这种技术. 在Linux环境下,采用Raidtools工具,不仅可以将两个硬盘进行镜像,还可以制作软RAID0.RAID1.RAID5.说是软RAID,是因为通常情况下,RAID盘是通过专用的RAID卡进行的,而在Linux环境下,可以利用Raidtools软件实现RAID功能,所以称为软RAID.本文介绍根据不同的Linux版本,建立并

在Linux操作系统下用软件实现RAID功能

数据安全性是人们在使用计算机中最重要的问题之一.通常情况下,人们会在服务器环境中采用硬盘镜像技术,以达到数据的双重备份.同样,在Linux环境下,我们也可以采用这种技术. 在Linux环境下,采用Raidtools工具,不仅可以将两个硬盘进行镜像,还可以制作软RAID0.RAID1.RAID5.说是软RAID,是因为通常情况下,RAID盘是通过专用的RAID卡进行的,而在Linux环境下,可以利用Raidtools软件实现RAID功能,所以称为软RAID.本文介绍根据不同的Linux版本,建立并

Linux下Web网站压力测试工具Webbench使用教程_服务器其它

Webbench是一个非常简单的压力测试工具,Webbench最多可以模拟3万个并发连接去测试网站的负载能力. (1)Webbench安装 复制代码 代码如下: wget http://www.jb51.net/soft/linux/webbench-1.5.tar.gz tar zxvf webbench-1.5.tar.gz cd webbench-1.5 make make install (2)Webbench使用 复制代码 代码如下: webbench -c 1000 -t 60 ht

Linux下Web性能压力测试工具http_load使用教程_服务器其它

http_load介绍:http_load基于linux平台的一种性能测工具.以并行复用的方式运行,用以测试web服务器的吞吐量与负载,测试web页面的性能. 下载及安装: wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz tar xzvf http_load-12mar2006.tar.gz cd http_load-12mar2006/ make && make install http_loa

Linux下图像处理软件汇总

最近几年Linux的开源http://www.aliyun.com/zixun/aggregation/18374.html">图像处理软件的进步迅速,尽管系统本身的兴趣不减,构建其上的各种开源软件也差强人意.aloa就认为比Windows下要强多了.作为一个普通的摄影爱好者,aloa认为现在linux下的图像处理软件已经远远能够超出一般爱好者的要求. GIMP,Linux下的Photoshop,因为aloa不用photoshop,所以没有什么体会.但gimp功能只多不少,扩展功能尤其强大

简述Linux下的软件安装

对于Windows的用户来说,软件安装的确是没有什么学问,一直Next或者改一下路径,软件就会装好了.但是在Linux下可没这么简单了. Linux下的软件安装主要有三种方式,分别是rpm(RedHat系列)或DPKG(Debian系列).yum(RedHat系列)或APT(Debian系列)和Tarball. 由于rpm.yum等的安装方式都非常简单,在这里就不再详述了,就举一个例子来说明吧,在Windows上360.金山这些系统管理软件相信大家都有用过,yum的软件安装方式就类似于你在360

linux下,做了raid的硬盘,怎么获取smart信息?谢谢!

问题描述 linux下,做了raid的硬盘,怎么获取smart信息?谢谢! 场景:两块硬盘做了raid1,在/dev/下只能看到逻辑盘/dev/sdc.(之前的物理盘是/dev/sda./dev/sdb,做了raid后没了.) 说明:没做raid,可用disktool或者smartctl查看smart信息. 求助:不解除raid,获取硬盘的smart信息. 谢谢!

在linux下编译软件和第三方库时不分debug和release吗?

问题描述 在linux下编译软件和第三方库时不分debug和release吗? 在win下,通常需要编译debug和release两个版本. 但是我在linux下编译一些第三方的软件和类库,例如QT/jsoncpp/ACE等等在编译的时候都只能选择debug和release中的一个版本,很少有能同时编译两个版本的. 而且用官方的安装软件编译的QT5.5,我查看文件也发现只有一个版本链接库,在QtCreator却可以生成debug和release两种版本的代码.很困惑究竟是为什么?是Qt的原因还是

Linux下编写Lua扩展so文件和调用方法实例

  这篇文章主要介绍了Linux下编写Lua扩展so文件和调用方法实例,本文给出C语言代码.编译SO文件.Lua中调用代码实例,需要的朋友可以参考下 代码如下: #include #include #include #include #include #include #include #include #include #include #include "lua.h" #include "lualib.h" #include "lauxlib.h&qu