软RAID的实际搭建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软RAID的实际搭建相关的知识,希望对你有一定的参考价值。
软RAID的实际操作
下面来看操作:
为了让大家更加认识RAID的特性,所以我们通过软RAID,操作系统本身有这样的功能,来演示一下RAID的特性,来看看RAID是否真的有冗错性。
举例:
我们要做RAID-5,那么这个RAID-5要做的话,我们至少要用到三块硬盘。
现在有一个这样的问题,你是否想过,RAID-5虽然在企业里用的非常多,但是一旦损坏一块硬盘,这时候你感觉系统会出现什么状态?
解答:比方说,他有三块硬盘,坏一块是可以的,但是坏这一块硬盘,这时候我们访问磁盘的数据的时候,他需要另外两块磁盘来算这块坏掉的磁盘中的数据,这时候,我们会发现,系统特别慢,那我们的性能会急剧下降,而且这时候我们的服务器负载还挺大的时候,突然磁盘的性能这么差,服务就有可能出现宕机。比如说,正好是高峰期,访问量最大的时候,
这时候我们应该怎么办?
一般情况下,硬盘坏了,会有报警。给你发个短信或者给你发个邮件,你可以看到这个提示。但是有可能你在外地,或者在别的地方,在你赶到之前,这中间会有一段时间,在这段时间之内,服务器可能已经受不了了,那怎么办?
那在真正的实际生产环境中,绝对不是这样的,我们要有专门的一块硬盘放到旁边的。这个硬盘叫做spare硬盘。其实就是空闲硬盘。这个spare硬盘他是加到RAID成员里了,但是他不工作。不属于真正的成员。比方说,原来是三块硬盘,我再加一块,四块。但是平时spare硬盘是不参与工作,只是由其他三块硬盘完成工作,在当发现其中一块硬盘坏了,这个备用的硬盘,自动顶替这个坏了的硬盘。这个过程不用管,他会自动代替。
代替,一开始可能是需要同步数据,肯定是稍微慢一会,但是这个时间不会很长。总比手工去换块硬盘的时间快多了。这就是spare硬盘,一般在实际生产环境中,一般都是有备用硬盘的。
当我们的的备用硬盘用上之后,我们在回到公司后,我们还需要,去机房将坏的硬盘拆下来,再找一块硬盘,作为备用硬盘。这里只要我们之前配好了,做好了RAID,我们再换备用硬盘时,不用再配RAID,不用再指定谁是spare硬盘。当然这个设置,我们使用软件RAID做的,将来工作中是RAID卡,则需要在开机的时候调节Bios,有一个专门的字符界面。他有说明,到时候自己看就行,那个也不太难。我们先了解原理就行,到时候胡一看说明书我们就能配。
这里面需要注意,RAID做的时候,比如说我没有三块硬盘做成RAID以后,在真正的linux系统启动以后,我们只能看到一a硬盘sda他底下其实是一个组合设备,对于操作系统来讲我们看到就是一块硬盘。
下面我们实际操作:
先看一下当前系统有几块硬盘:lsblk
发现正好有4块硬盘,并且都是20G,这时候我们就可以拿过来用了。
然后在用df命令查看一下分区的挂载情况。确认一下硬盘是否开始被使用,我们好做好将整块硬盘做RAID,还是讲硬盘中的某个分区拿出来做RAID.
注意:做RAID,linux中做RAID,可以拿硬盘,也可以拿分区。要是拿分区做RAID的话,分区的大小应该是一致的,包括要加的那个成员大小都是一致的。
比方说,a硬盘,再次分一个区出来。
先查看一下,a硬盘已经分了多少个分区用p,然后发现已经分了好多了,为了便于分析观察,我们退出用命令q退出。我们去b硬盘做RAID
我们发现B硬盘是干净的硬盘,我们就用B硬盘来做。首先第一步是进入b磁盘的划分分区的管理界面:
第一步:
用命令查看一下b硬盘的分区情况:
接下来我们划分分区,用分区来做RAID,用分区做RAID就是多一个步骤,就是多一个分区的操作,而且还要改他的ID,如果是硬盘的话,没有这个动作,对于硬盘直接拿过来做RAID就行了。
那么创建分区:
这里创建分区,创建主分区或者创建逻辑分区,都可以,只要大小一样就行。
第二步:
现在注意我是有四个硬盘,每个硬盘取出10G,我要做RAID-5,最终我们看到的空间是多大?我们知道RAID-5磁盘利用率是n-1/n,也就是说我们最后应该看到30G.另外那10G我们放了校验位。
我们分完区之后,我们要调一个选项:用命令t与l自命令
输入l后,会显示如下编号对应的文件系统而且我们也有下图显示的内容,找到我们要改的编号是,fd 因为它对应Linux raid auto
然后我们在下面的提示符后面输入 fd 并用p命令查看一下分好区的文件系统格式。然后保存分区后退出交互式管理界面。并且在保存退出时发现磁盘分区表也同步了,不用手动通知内核,强制其重新读取磁盘分区表。“the partition table has been altered!”如下图所示:
我们接下来查看一下磁盘分区 lsblk 如下图所示:
这样我们的b1分区就准备好了。而且我们发现b磁盘跟d,c,e磁盘是一模一样的,那我们一个个分区岂不是太麻烦了,那我们应该怎么办?
我们要学会学以致用,我们可以用dd复制命令,将b磁盘分区表导入到,c,d,e三个磁盘中。如下图所示:
这种导入分区表后,可能不同步,如下图所示:
这时发现分区表不同步,那么我们就用命令partx -a DEVICE来同步一下,如下图所示:发现分区表同步了。
这时我们分完区后,我们正好是用b1,c1,d1,e1四个成员来做RAID,
注意:我们做RAID可不能拿分区一个个来做,我们是把他们组合起来一块来做的,所以现在不是格式化的时候,是我们做完RAID以后统一格式化,以前我们说的是,分完区就格式化了,这里有区别,这里是我们先做完RAID再格式化。
接下来我们用mdadm这个命令来创建RAID
mdadm: md就是多磁盘管理器。
命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>
命令语法格式翻译一下就是:mdadm
[mode]模式 (比如说创建就是 -C大写)
<raiddevice> 指定要创建的RAID设备有哪些,包括要制定的RAID级别是RAID几 包括有几块硬盘,分别是谁都要指定。
支持的RAID 级别:LINEAR,RAID0, RAID1, RAID4,RAID5, RAID6, RAID10
接下来我们开始做RAID:
第三步:
先查看RAID设备名称是否已经存在,由下图可知,默认情况下没有
没有则需要我们创建,创建RAID模式用 -C大写,
模式:
创建:-C后加RAID设备名来创建。
(这里设为/dev/md0,其实这个地方,md0不是确定的,可以写md7,这里我们是第一个RAID设备,为了好区分,我们就设置为、/dev/md0)
-a{yes|no} :自动创建目标RAID 设备的设备文件
-l #:l是level的意思,指明要创建的RAID 的级别;
-n#: 使用# 个块设备来创建此RAID;
(我们这里-n 后面写了3,是这样的我们用4个分区来创建 RAID,但有一个是备用 的所以实际工作是三个。
-x#: 指明空闲盘的个数。其实就是让我表名备用磁盘或分区的个数。
最后再挨个指定做RAID的成员。标准写法是/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
但是我们可以用简便的写法,综合所述,写出如下图命令。回车则开始构建RAID
在构建RAID时,我们可以用,命令
-D :显示raid 的详细信息; mdadm-D /dev/md#
#mdadm -D /dev/md0 来查看RAID的创建过程。可以看到
"spare rebuliding /dev/sdd1"
"clean, degraded, recovering"
我们还可以用命令cat /proc/mdstat 来查看md的工作状态。如下图所示,已经是%45
还可以用命令
watch -n 1 cat /proc/mdstat 动态查看创建状态
从里面可以读出,当前创建的是RAID-5,包括哪些成员。一共有几个。显示谁是备用磁盘或分区sde1[3](S):后面加S表示备用。S是spare的首字母
能看到chunk是512K
创建完成后我们再次用命令
cat /proc/mdstat 查看一下。没有问题
在用命令mdadm -D /dev/md0 来查看我们创建的RAID的详细信息。
layout=left-symmetric 这个标签表示我创建的RAID是左对齐。
接下来,注意我们创建完RAID 后,他是有这样一个变化的,
我们可以看到在/dev/sdb1等等RAID成员后面的类型,已经不是普通的分区了,而是RAID成员了。member 成员。
第四步:
接下来这个RAID设备,我们需要用-Ds 来显示出的信息,并将这个信息备份到专门的一个文件里面。这个文件应该叫 mdadm.conf
但是这个文件不存在。
文件mdadm.conf不存在,我们需要这个命令来创建。
生成配置文件:mdadm –D –s >> /etc/mdadm.conf
否则可能在将来启动的时候会有问题。那么我就生成一下,如下图所示:
第五步:
RAID做完之后我们进行格式化,格式化如下图所示:
第六步:
我们接下来进行挂载:为了我们下次重启,丢不了。
加入的内容如下图所示:
其实我们要挂载的设备文件名应该写成UUID,但是这里偷懒,就先写成设备文件名。
创建挂载目录,并将做的RAID挂载到目录下,并查看挂载结果。
我们看到,创建的RAID已经挂载上了,但是显示是20G,这是为什么呢?
解:这是因为我们用四个分区创建RAID-5,其中一个是用来备用的,另一个是存放校验位的,所以我们看到的是20G.
接下来我们拷贝点文件过去,并查看一下。用来检验我创建的RAID卷
发现成功了。这就是所说的创建RAID-5,的步骤。
RAID的测试和修复。
对RAID做破坏测试,其实就是损坏一块硬盘就知道了。
损坏硬盘有两种情况,
第一种是:做测试,模拟损坏。
第二种是:真损坏。
我们接下来模拟硬盘的损坏,模拟硬盘损坏,我们有专门的命令,
我们先用命令查看一下当前RAID的状态:
#mdadm -D /dev/md0
模拟磁盘故障
#mdadm /dev/md0 -f /dev/sda1 选项 -f 其实就是failed的首字母,坏掉的意思。
我们模拟其中一块损坏的,如果创建RAID成功的话,我们的将其中一块硬盘模拟损坏后,按正常的来讲,备用的硬盘应该是自动替换坏掉的硬盘。
我们执行一下,mdadm -D /dev/md0
查看结果中,显示的内容:
我们发现,备用硬盘顶替了损坏的硬盘。但是这个过程开始需要一段时间,因为备用的硬盘在构建数据,这时我们可以用命令来查看:
#cat /proc/mdstat
我们注意的是,在这个数据恢复的过程中,我们还是能够访问数据的,只是速度有点慢。
用命令再次查看:
#cat /proc/mdstat //查看数据恢复状态到什么程度了。
#mdadm -D /dev/md0 // 查看RAID是否正常,显示"clean",带表正常。
接下来我们看到在上图中,最后一行,就是模拟坏掉的硬盘,或者分区,那我们再加进RAID中,是否可以呢?
解:
我们是在做测试,加进去应该没有问题。
并且在加的时候,我们一你该注意,我们原先模拟的这块损坏的硬盘,还在RAID中,并没有移除,所以我们要想加进去,要先移除或者卸载之后再加进去。
用命令:
移除磁盘
#mdadm /dev/md0 –r /dev/sda1
我们再查看一下确认将其移除:
#mdadm -D /dev/md0
然后我们再将其加进去:
#mdadm /dev/md0 –a /dev/sda1
再次查看,是否加进去了:如下图所指示:显示加进去了,并且做备用盘。
#mdadm -D /dev/md0
那现在我们在做一个测试:
我们将dev/sdb1移除:
我们查看一下:
#mdadm -D /dev/md0
然后我们想问的问题是,我们移除这个分区或者磁盘后,我们重启机器,移除的磁盘会往上加吗?
#reboot
其实我们有可能会遇到错误,希望在这里要注意一下。但是我演示没有出现错误。
重启机器后,先查看一下挂载:
看到有RAID后,我们在用命令
#mdadm -D /dev/md0 查看一下,开机之前移除的的分区是否还有自动挂载上了。
发现有。
二。
我们这下来点真的,模仿真是生产环境硬盘真的坏了,物理损坏。
我们将硬盘删了,这个删除是要在VMW中删除。
我们删除其实删除备用的磁盘或者分区,是没用的,但是我们这次,删除备用的sdb,跟sde,这样按理说,我们删除了两块硬盘,应该还能访问数据。
我们关闭虚拟机,删除硬盘。
关机:
删除两块硬盘之后,我们再重启,如果能重启,说明我们做的RAID具有冗错性。如果启动都启动不了。则说明做的RAID不成功。
但是我们操作发现,删掉两块硬盘后,我们是能开机的。
然后我们再看一下/dev/mdadm 详细信息。发现还剩两块硬盘在工作中,我们之前创建的
#mdadm -D /dev/md0
RAID.如下图所示:
我们再访问我们RAID挂载的目录:
# cd /mnt/raid
#ls 发现我们的目录还能访问。
接下来我们修复:
一种方法:我们直接再加硬盘,划分去,然后格式化,加进去。
第二种方法:我们直接在本地现有的硬盘上划分出10G,改fd然后格式化,然后再加入到我们需要修复的RAID.
我们就不在以后用RIAD成员的硬盘上在划分分区,因为,再发分分区,就体现不出,RAID的冗错性了,只有在不同的磁盘上才有冗错性。
我们在a盘上划分出一个分区,大小为10G
分完区之后再改类型:
上面显示不同步,那我们需要手动同步:
#partx -a /dev/sda
在用lsblk查看分区表:
然后我们就将、sda7加入到RAID中,注意这里不需要对a7单独格式化,我们只要将a7加入到RAID中,里面的文件系统就自动同步。
执行步骤:
#mdadm /dev/md0 -a /dev/sda7 并查看加入后的md0详细信息:
这时我们发现我们恢复成功。
那么我再加一块行不行?
答:可以,再加一个就是加备份磁盘或者分区。
具体步骤:
我们就再在a盘上演示:
一:#fdisk /dev/sda
n
+10G
p
t
8
fd
w
二:分区表同步:
#partx -a /dev/sda
lsblk //查看分区表信息,发现有了sa8
三:将其加入到已将创建RAID中加之前先看看RAID是不是三个成员:
#mdadm -D /dev/md0
sa8加入RAID
#mdadm /dev/md0 -a /dev/sda8
再次查看mdadm 详细信息:
#mdadm -D /dev/md0
加入成功的分区后。显示如下图所示:
接下来,我想移除所键的RAID,
第一步:
卸载RAID
umount /mnt/raid
再停止RAID服务:
mdadm -S /dev/md0
注意:在将设备停止之后,我们的RAID状态就看不到了。如下图所示:
甚至RAID设备都没了,tab键补全后,补不出来。
停掉后,我们还可以将服务RAID开启
启动之后我们就又可以看mdadm详细信息了。
#mdadm -D /dev/md0
注意:做这个启动,停止,都依赖于一个文件,/etc/mdadm.conf,如过没有这个文件,这个文件我们必须事先准备好,如果这个文件没了,我们就不能在停止,启动了。
停止后,这个RAID设备就用不上了,那用命令blkid查看的到的RAID成员我们就可以删除了。
那我们删除他们的分区就可以了。
# fdisk /dev/sda
d
8 删除sda7 和sda8两个分区。并保存
d
7
w
lsblk //查看一下磁盘分区表,发现没有同步。
#partx -d --nr 7-8 /dev/sda //让内核重读分区
lsblk
我们在次查看,我们发现,还有一个md0,这说明,我们直接删除分区其实是有问题。
同样的道理,我们用相同的命令删除其他分区中的RAID成员。
我们再次查看时,发现md0还是存在的。
然后我们执行
ls /dev/sd*会显示如下图所示:
我们发现,a7 ,a8还是存在的。所以我们这种删除需要特殊的命令来删除:
为什么删了分区,里面还有显示呢?
解:这是因为他里面带有的RAID信息还没有删除。
执行:
# mdadm--superblock /dev/sda7 如下图显示:
下面这张图片,是因为命令打错了,应该是,mdadm
二用命令:
blkid 也可以查看到分区的系统的系统类型。文件要格式化成的文件系统。
我们删掉RAID,我们先要停掉这个服务。
执行命令:
#mdadm--zero-superblock /dev/sda8
#mdadm --zero-superblock/dev/sda7
#mdadm--zero-superblock /dev/sdc1
#mdadm--zero-superblock /dev/sdb1
最后执行
blkid
然后将自动挂载文件里边的配置信息删掉:
vim /etc/fstab
自后将RAID的配置文件mdadm.conf删除
#rm -f /etc/mdadm.conf
到此为止,我们所做的RAID就全部清空了。
创建软件RAID的命令总结:
mdadm :模式化的工具
命令的语法格式:mdadm [mode]<raiddevice> [options]
<component-devices>
支持的RAID 级别:LINEAR,RAID0, RAID1, RAID4,
RAID5, RAID6, RAID10
模式:
创建:-C
装配: -A
监控: -F
管理:-f, -r, -a
<raiddevice>: /dev/md#
<component-devices>:
-C: 创建模式
-n #: 使用# 个块设备来创建此RAID;;
-l # :指明要创建的RAID 的级别;
-a {yes|no} :自动创建目标RAID 设备的设备文件;
-c CHUNK_SIZE: 指明块大小;
-x #:指明空闲盘的个数,其实就是备份个数。
-D :显示raid 的详细信息;
mdadm -D /dev/md#
管理模式:
-f: 标记指定磁盘为损坏
-a: 添加磁盘
-r: 移除磁盘
观察md 的状态:
cat /proc/mdstat
停止md 设备:
mdadm -S /dev/md#
模拟磁盘故障
#mdadm /dev/md0 -f /dev/sda1
移除磁盘
#mdadm /dev/md0 –r /dev/sda1
从软件RAID 磁盘修复磁盘故障
替换出故障的磁盘然后开机
在备用驱动器上重建分区
#mdadm /dev/md0 -a /dev/sda1
mdadm 、/proc/mdstat
生成配置文件:mdadm –D –s >> /etc/mdadm.conf
停服务:mdadm –S /dev/md0
激活:mdadm –A –s/dev/md0 激活
删除raid 信息:mdadm–zero-superblock /dev/sdb1
补充:RAID在用的时候,千万要注意,他的设备名有可能一重启就会发生变化,明明是md0,一重启变成127了,所以在/etc/fstab文件里边,就不写设备文件名,写UUID.
我们这时在centos6上做的实验,如果我们去centos7上做实验的时候,我们重启,起不来,我们可以用下面的命令,
强制启动:
mdadm -R /dev/sdb1
本文出自 “11847750” 博客,请务必保留此出处http://11857750.blog.51cto.com/11847750/1844865
以上是关于软RAID的实际搭建的主要内容,如果未能解决你的问题,请参考以下文章