Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6320028
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: LINUX

2013-07-30 03:32:53

原文地址:RAID磁盘阵列详解 作者:YGril

磁盘阵列(Redundant Arrays of Inexpensive Disks,RAID),有“价格便宜具有冗余能力的磁盘阵列”之意。原理是利用数组方式来
作磁盘组,配合数据分散排列的设计,提升数据的安全性。磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个
别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。磁盘阵列还能
利用同位检查(Parity Check)的观念,在数组中任一颗硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。

RAID 0(条带 (strping))
是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。
RAID 0没有提供冗余或错误修复能力,但实现成本是最低的。
特点:速度快,没有容错能力


RAID1:镜像(mirroring)
ID 1称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,
在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的
硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。虽然这
样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%,以四块80GB容量的硬盘来讲,可利用的磁盘空间仅为160GB。另外,出现
硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。更换新盘后原有数据会需要
很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。因此,RAID 1多用在保存关键性的重要数据的场合。
RAID 1示意图

RAID5:条带+分布校验
3块以上,利用率为(n-1)/n,有容错功能,最多可以坏一块磁盘


RAID6:条带+分布校验+分布校验
5块以上,利用率为(n-2)/n,有容错功能,最多可以坏二块磁盘

RAID10:镜像+条带
利用率为50%


RAID配置总结:



mdadm命令:
  mdadm - manage MD(mutiple disk) devices aka Linux Software RAID
  Currently, Linux supports LINEAR md devices,  RAID0  (striping),  RAID1
       (mirroring),  RAID4,  RAID5, RAID6, RAID10, MULTIPATH, FAULTY, and CON-
       TAINER.
-C:新建RAID设备
-l:设定RAID级别
-n:磁盘数目:设定RAID成员设备数目
-x(spare device):磁盘数目,设定备用磁盘数目
-s:扫描配置文件/etc/madam.conf
-D:查看RAID设备信息
-S:停用RAID
-A:激活RAID


[root@lvm ~]# cat /proc/mdstat   查看RAID的配置信息
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sde[5] sdf[4](S) sdd[2] sdc[1] sdb[0]
      3144192 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
      
unused devices:


[root@lvm ~]# mdadm -Ds 查看设备信息
ARRAY /dev/md5 metadata=1.2 spares=1 name=lvm:5 UUID=e433a3d5:94c67839:5e66cae5:e4976d17


创建RAID5
mdadm  -C /dev/md5  -l5 -n4 -x1  /dev/sd[bcdef]

查看RAID的详细信息
mdadm -D /dev/md5

创建配置文件
mdadm -Ds >>/etc/mdadm.conf

停止 RAID
mdadm  -S /dev/md5

查看RAID信息
cat /proc/mdstat

格式化挂载RAID磁盘阵列
mkfs.ext4 /dev/md5

自动挂载RAID阵列
修改/etc/fstab
注:/boot分区用于存放引导文件,不用应用RAID机制

RAID5模拟故障
让失效的/dev/sdb1替换为/dev/sdg1
mdadm  /dev/md5 -a /dev/sdg1 -r /dev/sdb1

配置共享的热备份磁盘
多个RAID共享备份磁盘节约空间
修改 mdadm.conf文件添加 spare-group\sparedisks
--monitor开启监控RAID

多种元数据格式
-Es 查看成员设备上的元数据信息
--zero -superblock 清空成员设备上的元数据信息
[root@localhost ~]# mdadm -E /dev/sdb 查看磁盘上的元数据

千万不要在没有关闭RAID的情况下删除分区
正确关闭RAID的步骤
1.umount卸载RAID文件系统
2.mdadm -S停用RAID
3.清空/etc/mdadm.conf文件
4.清除/etc/fstab中RAID的挂载记录
5.清除每块磁盘上的元数据
6.删除/dev/下所对应的raid设备


[root@lvm ~]# cat /proc/mdstat   查看RAID的配置信息
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sde[5] sdf[4](S) sdd[2] sdc[1] sdb[0]
      3144192 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
     
unused devices:

[root@lvm ~]# mdadm -Ds
ARRAY /dev/md5 metadata=1.2 spares=1 name=lvm:5 UUID=e433a3d5:94c67839:5e66cae5:e4976d17

==========================================================================
练习:
1.新建raid5卷,使用4块磁盘作raid5,1块磁盘作热备
[root@localhost Desktop]# mdadm -C /dev/md5 -l5 -n4 -x1 /dev/sd[bcdef]
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

[root@localhost Desktop]# cat /proc/mdstat  查看RAID的配置信息
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sde[5] sdf[4](S) sdd[2] sdc[1] sdb[0] 可知sdf[4]做了热备盘
      3144192 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

[root@localhost Desktop]# mdadm -D /dev/md5  查看/dev/md5的设备信息
/dev/md5:
        Version : 1.2
  Creation Time : Sun Jul 21 01:19:25 2013
     Raid Level : raid5
     Array Size : 3144192 (3.00 GiB 3.22 GB)
  Used Dev Size : 1048064 (1023.67 MiB 1073.22 MB)
   Raid Devices : 4
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Sun Jul 21 01:19:33 2013
          State : clean
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

           Name : lvm:5  (local to host lvm)
           UUID : e433a3d5:94c67839:5e66cae5:e4976d17
         Events : 18

[root@localhost Desktop]# mdadm -Ds >> /etc/mdadm.conf 创建配置文件

[root@localhost Desktop]# mdadm -S  /dev/md5 停止RAID
mdadm: stopped /dev/md5
[root@localhost Desktop]# mdadm -A  /dev/md5  激活RAID
mdadm: /dev/md5 has been started with 4 drives and 1 spare.
[root@localhost Desktop]# mkfs.ext4 /dev/md5

2.格式化raid5设备
[root@localhost Desktop]# mkfs.ext4 /dev/md5  格式化md5

3.挂载使用
[root@localhost Desktop]# mkdir /file
[root@localhost Desktop]# mount /dev/md5 /file

4.自动挂载功能,修改/etc/fstab文件,添加
在/etc/fstab写入
/devsda5                /file                   ext4    defaults       0 0

[root@localhost Desktop]# mdadm -D /dev/md5  格式化及挂载后, 再次查看md5设备信息
/dev/md5:
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       5       8       64        3      active sync   /dev/sde

       4       8       80        -      spare

5.让其中的一块失效,然后看raid5是否能够继续使用
[root@localhost Desktop]# mdadm /dev/md5  -f /dev/sdd(先失效一块)
[root@localhost Desktop]# mdadm /dev/md5  -f /dev/sde (后失效一块)
使用cat /proc/mdstat命令查看修复过程(需赶快查看,才能看到效果)
      

6.删除有问题的磁盘,添加一个好的磁盘作热备,要求磁盘>容量一致
mdadm  /dev/md5 -r /dev/sde[de]  -a /dev/sd【gh】

[root@localhost ~]# cat /proc/mdstat 查看raid的构建过程
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sde[5] sdf[4](S) sdd[2] sdc[1] sdb[0]
      3144192 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/3] [UUU_]
      [=============>.......]  recovery = 68.5% (719232/1048064) finish=0.0min speed=143846K/sec
[root@localhost file]# mdadm -D  /dev/md5
/dev/md5:
        Version : 1.2
  Creation Time : Sun Jul 21 01:19:25 2013
     Raid Level : raid5
     Array Size : 3144192 (3.00 GiB 3.22 GB)
  Used Dev Size : 1048064 (1023.67 MiB 1073.22 MB)
   Raid Devices : 4
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Sun Jul 21 01:44:49 2013
          State : clean
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

           Name : lvm:5  (local to host lvm)
           UUID : e433a3d5:94c67839:5e66cae5:e4976d17
         Events : 68

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       80        2      active sync   /dev/sdf
       6       8      112        3      active sync   /dev/sdh

       5       8       96        -      spare   /dev/sdg

[root@localhost file]# mdadm /dev/md5 -f /dev/sdh  再次破坏/dev/sdh
[root@localhost file]# mdadm -D  /dev/md5
 Active Devices : 4
Working Devices : 4
 Failed Devices : 1


    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       80        2      active sync   /dev/sdf
       5       8       96        3      active sync   /dev/sdg

       6       8      112        -      faulty spare   /dev/sdh

[root@localhost file]# mdadm /dev/md5 -f /dev/sdh
[root@localhost file]# mdadm -D /dev/md5
/dev/md5:
         State : clean, degraded, recovering
 Active Devices : 3
Working Devices : 4
 Failed Devices : 1
  Spare Devices : 1
 Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       4       8       80        2      active sync   /dev/sdf
       5       8       96        3      spare rebuilding   /dev/sdg

       6       8      112        -      faulty spare   /dev/sdh
【root@localhost file]# mdadm /dev/md5 -f /dev/sdf 破坏/sdf盘
 Active Devices : 2
Working Devices : 2
 Failed Devices : 3

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       0        0        2      removed
       3       0        0        3      removed

       4       8       80        -      faulty spare   /dev/sdf
       5       8       96        -      faulty spare   /dev/sdg
[root@localhost /]# mount -a 卸载再挂载
mount: wrong fs type, bad option, bad superblock on /dev/md5,


[root@localhost /]# mdadm -S /dev/md5
mdadm: stopped /dev/md5
[root@localhost /]# mdadm -A  /dev/md5
mdadm: /dev/md5 assembled from 2 drives - not enough to start the array.

[root@localhost /]# mdadm -Es /dev/sdb   查看成员设备上的元数据信息
ARRAY /dev/md/5 metadata=1.2 UUID=e433a3d5:94c67839:5e66cae5:e4976d17 name=lvm:5
[root@localhost /]# mdadm -E /dev/sdb
     Raid Level : raid5
   Device Role : Active device 0
   Array State : AA.. ('A' == active, '.' == missing)
=========
删除/dev/md5
1.卸载挂载点
[root@localhost /]# umount /dev/sda5
2.[root@localhost /]#mdadm -S停用RAID
3.清空 /etc/mdadm.conf文件
4彻底清除/etc/fstab文件的挂载记录
5.清除每块磁盘的元数据
[root@localhost /]# mdadm --zero-superblock /dev/sd[bcdefg]
6.删除/dev/下所对应的raid设备


阅读(737) | 评论(0) | 转发(0) |
0

上一篇:开源CMS赏析

下一篇:浅谈linux的死锁检测

给主人留下些什么吧!~~