文档章节

基于软件的方式实现RAID(冗余磁盘阵列)技术

Andy-xu
 Andy-xu
发布于 2014/07/18 17:26
字数 2249
阅读 300
收藏 13

        在摘要部分已经对raid进行了简单的介绍,而在实际生产中主要用的便是软件RAID和硬件RAID,同时由于硬件RAID的价钱比较贵,因而,越来越多的人使用软件RAID来构建企业的一套存储方案。那么,使用RAID的最大好处是什么呢?哈哈,当然就是省钱了啊,同时RAID技术具有以下优点:

        提高传输速率。RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)。在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。

        通过数据校验提供容错功能。普通磁盘驱动器无法提供容错功能,如果不包括写在磁盘上的CRC(循环冗余校验)码的话。RAID容错是建立在每个磁盘驱动器的硬件容错功能之上的,所以它提供更高的安全性。在很多RAID模式中都有较为完备的相互校验/恢复的措施,甚至是直接相互的镜像备份,从而大大提高了RAID系统的容错度,提高了系统的稳定冗余性。

简单介绍以下常用的几种RAID模式:

RAID0:磁盘分条技术,效率最高至少一块硬盘。只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供冗余或错误修复能力,实现交叉复制,总容量是所有磁盘的综合。但是缺点也很致命,即如果任何一块硬盘损坏,数据就很难恢复。

RAID1:磁盘镜像技术,最少两块硬盘。原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证 系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效 时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。安全性最高,但是磁盘利用率仅有50%,也就是说凉快硬盘,实际只有一块的容量。

RAID5:一种带校验的磁盘分条技术,为系统提供数据安全保障,最少需要三块硬盘,可以支持一块磁盘损坏。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。

                                        RAID5原理图

同时基于RAID0和RAID1的优缺点,经常会有人讲两个结合使用,成为RAID0+1或者RAID1+0(至少四块硬盘),既能满足磁盘的读写性能,又能保障数据的可靠性。在这里不多介绍,感兴趣的可以下去自己多多了解。






接下来将在试验环境下构建RAID5存储方案:

环境:Centos 6.5

软件环境:mdadm

#yum install mdadm -y

要求:利用四块分区做成RAID5
         每个分区1G,最好每个分区一样大
        使用一块分区作为spare disk,且大小与其他一样,作为备用磁盘
         将此RAID5设备挂载到/mnt/raid下

1.使用fdisk工具准备5个1G的分区

#fdisk -cu /dev/sdb

# cat /proc/partitions

  8       21    1048576 sdb5
   8       22    1048576 sdb6
   8       23    1048576 sdb7
   8       24    1048576 sdb8
   8       25    1048576 sdb9

2.创建raid磁盘阵列

 # mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sdb{5,6,7,8,9}

--create表示创建raid   --auto 决定创建后面接的软件磁盘阵列设备/dev/md0  --leavel表示raid的等级,这里使用raid5

--raid-devices表示使用的磁盘个数  --spare-devices表示使用备用磁盘个数 并且指定那些磁盘分区

3.查看创建好的设备

# mdadm --detail /dev/md0                         查看raid设备信息
/dev/md0:                                                    设备名称
        Version : 1.2
  Creation Time : Fri Jul 18 03:41:56 2014      创建日期
     Raid Level : raid5                                        raid等级
     Array Size : 3142656 (3.00 GiB 3.22 GB)    可用容量
  Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)    每个磁盘的容量
   Raid Devices : 4                                              四块raid设备
  Total Devices : 5                                                总共五块设备(一块在做备份用哦)
    Persistence : Superblock is persistent
    Update Time : Fri Jul 18 03:42:04 2014
          State : clean
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1                                            一块作为备份磁盘
         Layout : left-symmetric
     Chunk Size : 512K
           Name : node1.example.com:0  (local to host node1.example.com)
           UUID : 69e94971:195da1d1:ac94ce25:d330e237        raid的uuid
         Events : 18
    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6
       2       8       23        2      active sync   /dev/sdb7
       5       8       24        3      active sync   /dev/sdb8
       4       8       25        -      spare   /dev/sdb9

从上面的信息可以看出来,激活的磁盘为/dev/sdb5-8.  /dev/sdb9为备份磁盘

# cat /proc/mdstat         查看raid状态信息
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb8[5] sdb9[4](S) sdb7[2] sdb6[1] sdb5[0]
      3142656 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

sdb9后面的s表示此磁盘用作spare
第二行表明有3142656个block,每个block单位为1k。写入磁盘的小区块(chunk)大小为512k   [m/n]表示需要m个磁盘,n个盘正常运行   U代表正常,-代表不正常

4.挂载使用raid

#mkfs.ext4 /dev/md0
#mkdir /mnt/raid
#mount /dev/md0 /mnt/raid/

raid5设备/dev/md0现在可以正式使用咯!


RAID的错误救援模式:

试想,生产环境中谁也无法预料硬盘的损坏,如果突然损坏,我们应该怎么办呢?不用着急,接下来继续讲讲!

假如/dev/sdb8磁盘坏了,查看磁盘阵列信息,/dev/sdb9备用磁盘会自动替换
[root@node1 ~]# mdadm --manage /dev/md0 --fail /dev/sdb8          模拟磁盘错误
mdadm: set /dev/sdb8 faulty in /dev/md0
[root@node1 ~]# mdadm --detail /dev/md0                                         查看raid设备发现备用/dev/sdb9自动替换工作了
。。。。。。。。。。。。。。。。省略
    Update Time : Fri Jul 18 03:56:19 2014
          State : clean
 Active Devices : 4
Working Devices : 4                                                 坏了一个磁盘,但是工作设备仍然4个
 Failed Devices : 1         
                                           显示一个设备坏了哦
  Spare Devices : 0

    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6
       2       8       23        2      active sync   /dev/sdb7
       4       8       25        3      active sync   /dev/sdb9
       5       8       24        -      faulty spare   /dev/sdb8

那么为了保证真个raid存储的安全性,我们需要重新新建分区,作为新的spare分区。

仍然使用fdisk工具创建1G分区/dev/sdb10

1.增加一个磁盘设备,将损坏的设备移除,就可以直接拔掉硬盘了(注意,要支持热插拔哦)

[root@node1 ~]# mdadm --manage /dev/md0  --add /dev/sdb10 --remove /dev/sdb8
mdadm: added /dev/sdb10
mdadm: hot removed /dev/sdb8 from /dev/md0
重新查看raid设备信息,发现/dev/sdb10变成了备用磁盘了,/dev/sdb8删除了

现在,我们又能保障我们的RAID设备健壮的运行了。

2.设置RAID设备开机自动挂载

#mdadm --detail /dev/md0 | grep UUID            查看/dev/md0磁盘设备的UUID
#vim /etc/mdadm.conf   

(ARRAY /dev/md0  UUID=69e94971:195da1d1:ac94ce25:d330e237)
#vim /etc/fstab        

(/dev/md0  /mnt/raid ext4 defaults  1 2 )
#mount -a         重新挂载分区

这样,一个RAID5设备就完全构建好了!


注意:文章内容使用虚拟环境分区来模拟真实硬盘构建RAID,因此和生产环境有一定出入,希望大家能够适当借鉴。


© 著作权归作者所有

共有 人打赏支持
Andy-xu
粉丝 108
博文 95
码字总数 179246
作品 0
大兴
运维
私信 提问
RAID介绍

第1章 什么是Raid? Raid是廉价冗余磁盘阵列(Redundant Array of Inexpensive Disk)的简称,有时也简称磁盘阵列(Disk Array) Raid是一种把多块独立的物理磁盘按不同的技术方式组合起来形...

筚路
2016/05/08
0
0
Raid教程:全程图解手把手教你做RAID

说到磁盘阵列(RAID,Redundant Array of Independent Disks),现在几乎成了网管员所必须掌握的一门技术之一,特别是中小型企业,因为磁盘阵列应用非常广泛,它是当前数据备份的主要方案之一...

JavaGG
2009/05/08
1K
5
RAID 0, RAID 1, RAID 5, RAID 10图解

RAID 0, RAID 1, RAID 5, RAID 10图解 RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同...

爱你的蔡
2017/03/21
0
0
RAID学习笔记

一、简介 名称:RAID廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks) 组织形式:多个独立的物理硬盘按照不同的方式组合起来,形成一个虚拟的硬盘。 优势: 1.易于灵活地进行容量的扩...

Liekkas_liuli
2017/06/30
0
0
浅析数据存储的“那些事儿”

写在前面 对于运维来说,数据读取、安全与存储,也是至关重要的一点,数据存储的技术点也是相当的多,面比较广,今天,民工哥来给各位小伙伴聊一聊有关于数据存储的“那些事儿” 存储的概念介...

民工哥
02/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

&和&&,==和equals的区别

&和&& 相同点:都可以表示逻辑与(and),当运算符两边的结果都为true时,结果才为true,只要有一边为false,结果就为false。 不同点:&&还有短路的作用,即如果第一个表达式的结果为false,就...

森林之下
9分钟前
0
0
我和 Spring 大神的一天

摘要: 先介绍一下故事的5位主人公。 Josh Long 龙之春:Spring 技术布道师,撰写过5部著作,录制过3部畅销的培训视频,是一位开源软件贡献者。 Spencer Gibb:Spring 技术布道师,Spring Cl...

阿里云官方博客
12分钟前
0
0
【Zookeeper】源码分析目录(保存)

https://www.cnblogs.com/leesf456/p/6518040.html

Java搬砖工程师
15分钟前
0
0
vue-cli图片路径使用

https://www.cnblogs.com/minigrasshopper/p/8011630.html

LM_Mike
15分钟前
0
0
前方高能,重要通知!明珠不蒙尘,有才你就来。

11月开源众包服务之星计划--开发商招募正式开启了! 您还是否在为能接更多的订单而操碎了心? 开源众包即将迎来三周年华诞,重磅上线服务之星品牌计划。你有强大的技术实力?你有丰富的案例经...

开源中国众包平台
17分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部