环境:vmware虚拟机上安装有红帽linux企业版4 RHEL 4
三块SCSI硬盘,后二块在实验中要拿部分空间来做做RAID0
目的:1.用fdisk进行磁盘分区
2.在二块磁盘上各拿部分等量的空间做软RAID0陈列,并实现开机自动挂载(效果:加快访读取,存放的速度)
3.模拟其中一块磁盘损坏,再添加一块新磁盘加入这个阵列,看是否能同步数据(千万注意:只有raid1、5、10、01、6的阵列才能可能这样还原,而0级别是不能还原的,所以我前面做的0级别是不能还原的,因此后面我建一个RAID1级别的阵列和一个RAID5级别的阵列,模拟环境。原因看下面的raid级别的解释)。
备注:RAID级别的解释
RAID0:带区卷,指二个或二个以上的磁盘各拿出相同的空间组成一个分区,数据在存储时,会每个字节的轮流存储到不同的磁盘上.这样可大大加快访问速成度。优点:数据存储速度加快。缺点:作何一个磁盘损坏且不能恢复的话,将造成数据丢失。容量:各磁盘容量的和(单个磁盘也能做,但没任何意义)
RAID1:镜像卷,指二个或二个以上的磁盘各拿出相同的空间组成一个分区,数据在存储时会向各个磁盘各存储一份。优点:容错能力强,只要还剩一块磁盘能工作,数据就不会丢失。缺点:存储速度慢,因为数据会向RAID1级别中的所有磁盘各写一份数据。容量:各磁盘容量和的一半。
RAID5:指三个或三个以上的磁盘各拿出相同的空间组成一个分区,以A、B、C三块为例,当前二个字节的数据分别存储于A、B盘时,C存储这二个字节的逻辑与运算值,A、C存储数据时,B存储运算值。依次轮转。优点:允许坏一块磁盘,丢失的数据会反算出来。最像个方程式,只有一个未知数的情况下,未知数的值是很容易被算出的。但不能有二个未知数,这就是为什么不能同时坏二个磁盘的原因。另外如果是硬件RAID或软RAIDS机器CPU够牛的话,速度也会不错,但软RAID情况下,CPU如果不够快的,那么它并不一定会快过RAID1,因为它需要运算那个逻辑值。容量:各磁盘容量和减去一块磁盘的空量。
RAID10:由上面衍生出的一种类型,最少四块磁盘,且必须总数据是双数。做法先1(镜橡)后0(带区)。优点:访问速度和容错能力都很好,缺点:浪费磁盘资源,只能有一半的空间可用,且最少四块才能做。
RAID01:先0后1的做法,实际应用非常少。不如10
RAID6:RAID5的一种扩展,专门用一块磁盘存储逻辑运算值,另一块备份这个逻辑值,其余磁盘存数据。用的也不多,证实不是很好。
注意,实际上系统上做软RAID阵列时,系统都只支持0、1、5,需10、01、6都是在有硬件RAID设备时才能实现的。
步骤:
1.第一步分区
1.1用fdisk -l杳看分区表,没有分区表,证明还没对其分区,SDC也是一样
1.2用fisk /dev/sdb命令对SDB盘进行分区,进入分区模式
1.3 输入P查看这盘的分区表,因为还没分过区,分区表下啥也没有(按P查看后可看到所有能控制的命令,如n新建一个分区,w保存所做的更改并退出,l查看系统所支持的分区类型所对应的编号等等)
1.4输入n新增一个分区(新增一个主分区,起始柱面默认,结束柱面输+1500M,让系统自己算应该在哪个柱面结束)然后输入w保存退出,下图漏了这里。+1500M也就是说给这个分区1500M空间。
1.5用同样的办法在SDC盘上也建这个一个分区大小最好一样,不一样也行,系统会用最大的交集来做.
1.6分区建好后一定要输w保存,否则不会被创建。千万注意
2.第二大步:建RAID阵列(以RAID为例)
2.1先用fdisk –l查看分区表,可以看到下图标记出的二个分区的类型是编号为83的linux分区(普通分区),怎样知道RAID的分区类型是什么呢?下图中详解
2.2在分区模式下输入l查看linux已知的分区类型,可以看到fd代表raid分区类型的编号
2.3用t命令把分区1改变成raid分区类型.下图可以看到因为只有一个分区,所以在让选择所要改变的分区时,不是让你选,默认成了1,而如果该磁盘有二个或以上分区时,就可选了,回车后,输入fd表示将改变成的分区类型是raid类型.完后,输入w保存更改并退出.
2.4SDC盘也是同样的方法改变分区类型
2.5再用fdisk -l查看磁盘分区表,可以看到下面二个盘的分区类型已由默认的83变成了fd(RAID分区类型)了,别忘了w保存
2.6用partprobe强制让分区类型生效或重启机器也行.
2.7用mdadm –C /dev/md0 –l 0 –n 2 /dev/sdb1 /dev/sdc1命令创建RAID(-C代表creat新建之意,-l代表类型 –n代表组成这个RAID的磁盘个数后面2表示二块磁盘)
2.8用cat /proc/mdstat文件中的内容查看raid的状态,可以看到有个md0存在(/proc/mdstat文件是专门是来存放raid状态信息的)
2.9用mke2fs命令格式化这个md0分区。mke2fs –j /dev/md0 加上-j参数把 dev下的md0格式化成ext3格式文件系统,完成后挂到一个空目录上就可存储数据了。
2.10在根分区下建一个用于挂载md0分区的空文件夹raid0data dev md0(即前面建的RAID0挂载到 raid0data目录下,到时就可存东西了)
2.11用df命令可以查看到md0分我是否被挂载了,如果没被挂载就没有最后一行
2.12/etc目录下的所有东西递规复制到 raid0data下的etc.bak目录下,再杳看raid0data的内容有了,证明/raid0data对应的RAID分区可以存放东西了,到此RAID配置成功
2.13用df -h命令查看分区是否被挂载,这里也可看到分区容量,已用和可用的容量,该命令很常用,非常有用。
2.14/etc/fstab文件中存放的是系统启动时自动挂载的设备,所以要想让刚刚做的raid目录raid0data每次重启都实现自动挂载,只需在此加上红框标记出的挂载信息就行了。可参考上面的挂载的写法。命令vi /etc/fstab 养成好习惯(vi修改配置文件之前先备份cp /etc/fstab /etc/fstab.bak),改完后:wq保存退出。
2.15重启一下机器,验证是否会自动挂载。
2.16用df -h命令查看是否被挂载,可以看出/dev/md0已经被挂到/raid0data目录下了,证明自动挂载成功。
2.17直接输入mount命令不带任何参数也可看到当前已挂载的设备,其中就有md0表示挂载成功,并看到后面是rw状态(可读写状态)如果是一次性光盘被挂载,但不会有w了。
总结一下前面的流程:1.先分区,改变分区级别为fd (在 fdisk /dev/xxx下实现)
2.创建RAID分区,并把事先划好的(并且类型是raid的)分区加进来
3.mke2fs –j /dev/mdx格式化成ext3格式
4.挂载到一个空目录上.
5.在/etc/fstab文件中加入需自动挂载的信息,实现开机挂载.
第三大步:模拟raid1中损坏一个硬盘,重新放入新硬盘,加入阵列,使其数据同步恢复.
3.1先快速搭一个raid1环境.(sda、sdb、sdc、sdd四块硬盘,后3块上将做个raid1)
#首先在sdb上分一个主分区名称1即sdb1,再使之成这raid类型
#输入如下命令
fdisk /dev/sdb
n
p
1
回车
+2000M
n
1
fd
w
partprobe
#同样的步骤,分sdc1和sdc2
#创建一个raid级别为1的分区取名md10并把sdb1、sdc1和sdd1三个分区加进来
mdadm –C /dev/md10 –l 1 –n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1
#格式化这个raid1级别的分区raid10成ext3的主流linux文件系统格式。
mke2fs –j /dev/md10
#在根目录下创建一个空的目录取名为raid1data用于挂载md10这个分区
mkdir /raid1data
#把已格式化好的分区/dev/md10挂载到/raid1data目录
mount /dev/md10 /raid1data
#直接用mount命令查看所有挂载的分区,看是否md10分区挂载到了raid1data
#查看一下raid的状态
cat /proc/mdstat
#修改/etc/fstab文件,让系统启动时自动挂载这个raid10的区到raid1data目录
vi /etc/fstab
#在空的行中加入如下信息
/dev/md10 /raid1data ext3 default 1 2 3
:wq……………………………………………………保存退出
#向raid1data目录中写入一些东西
cd /raid1data
touch www
vi www
#写入内容
I am zhaoxiyu
:wq保存退出
3.2以上环境就好了,现在要模拟后二块硬盘损坏
#用mdadm加上参数f,模拟后二块硬盘出帮障。
mdadm /dev/md10 –f /dev/sdc1
mdadm /dev/md10 –f /dev/sdd1
#再次查看raid的状态
cat /proc/mdstat
3.3重启一下,看启动会不会有问题。结果没看到任何问题。里面的数据依然存在。
用less /raid1data/www查看里面的数据,依然存在。
3.4模拟一下损坏了的硬盘修好了,加入到它以前的raid1阵列(参数a加入)
mdadm /dev/md10 –a /dev/sdc1 /dev/sdd1
#再次查看一下raid的状态
cat /proc/mdstat
查看一下数据有没丢,结果依然存在。
3.5模拟一下损坏的硬盘没法修好了,重新加新硬盘,且取下的是二块,但只加一块新的试试。
#模拟损坏sdc1和sdd1
mdadm /dev/md10 –f /dev/sdc1
mdadm /dev/md10 –f /dev/sdd1
#先卸载
umount /raid1data
关机,取出损坏的硬盘,换上新的硬盘(由于是虚拟机,所以想要几块硬盘就可以加几块)
#加入的硬盘叫sde,首先分区,改类型为fd(raid),加入md10,命令如下
fdisk /dev/sde
n
p
回车
+2000M
t
fd
w
partprobe
mdadm /dev/md10 –a /dev/sde1
#查看一下raid的状态
#同步完成后,挂载
mount /dev/md10 /raid1data
#查看其内容有没丢失。
l.s /raid1data less /raid1data/www
结论:RAID1只要存在一块好的硬盘,数据就不会丢失。
第四大步,用RAID5试验
4.1 快速步置环境,不多说了,步骤和上面的做raid1一样,只有下面不同(建的raid级别不同)
mdadm –C /dev/md5 –l 5 –n 4 /dev/sdb2 /dev/sdc2 /dev/sdd2 /dev/sde2
#挂载到/raid5data
mount /dev/md5 /raid5data
#在raid5data目录下建一个www5文件,并写入内空“this is raid5”
#实现开机自动挂载
vi /etc/fstab
#加入如下内容,并保存退出。
/dev/md5 /raid5data exit3 defaults 1 2 3 4
4.2损坏其中一块硬盘sde,查看其中内容,数据没有丢失,然后重启也没出问题。
mdadm /dev/md5 –f /dev/sde2
cat /raid5data/www5
数据存在没问题,但查看raud状态时,可以看到有个硬是丢失的。
而且重启后,RAID5中的sde2就看不到了,但数据照样可用,RAID1也一样
4.3再次损坏一块硬盘sdd(加上面损坏的一个共损坏二块了),看效果
结果系统无法正常启动,提示raid已经失效,因为raid5只能允许坏一块硬盘,而现在坏了二块,为什么前面的RAID1损失二块会没事了,因为RAID1为镜像卷,所有数据都会在每个成员磁盘上有全部数据,所以只要还有一块没坏,它就起的来。输入管理员的密码,进行级别1的单用户模式(救援模式),把自动挂载的fstab文件里raid5删掉或注释掉就能启动了
4.4输入管理员密码,进救援模式,注释掉/etc/fstab里关于raid5的项,重启,能正常进入系统了。但cat /proc/mdstat已经看不到raid5对应的md5了
4.5现在模拟损坏的二块硬盘修好了,放回原地。(结论:按以下步骤可还原数据)
#先停止运行md5(即raid5)用参数大写的S
mdadm –S /dev/md5
#再重建这个阵列
mdadm –C /dev/md5 –l 5 –n 4 /dev/sdb2 /dev/sdc2 /dev/sdd2 /dev/sde2
y确认
#重新挂载
mount /dev/md5 /raid5data
#查看其中内容在不在(这是最关心的)
cd /raid5data
ls
可以看到文件还存在
#查看文件中的内容有没损坏
cat www5
可以看到内容存在,没被损坏。
4.6现在模拟损坏的二块硬盘修不好了,换上二块新的(sdf和sdg)。
fdisk /dev/sdf
n
p
2
回车
+500M
t
fd
w
partprobe
同理sdg也一样(分一个sdg2分区)
mdadm –S /dev/md5
mdadm –C /dev/md5 –l 5 –n 4 /dev/sdb2 /dev/sdc2 /dev/sdf2 /dev/sdg2
y
mount /dev/md5 /raid5data
#查看文件是否不存在,结果www5这个文件仍然存在
cd /raid5data
ls
#查看内容是否还存在,结果内容也存在
cat www5
阅读(762) | 评论(0) | 转发(0) |