Chinaunix首页 | 论坛 | 博客

qsh

  • 博客访问: 4029547
  • 博文数量: 1015
  • 博客积分: 15904
  • 博客等级: 上将
  • 技术积分: 8572
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-04 19:16
文章分类

全部博文(1015)

文章存档

2019年(1)

2017年(1)

2016年(19)

2015年(27)

2014年(30)

2013年(95)

2012年(199)

2011年(72)

2010年(109)

2009年(166)

2008年(296)

分类:

2008-09-30 00:03:21

 

环境: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
阅读(754) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~