RAID磁盘阵列概述

早在1978年,美国加州大学伯克利分校就提出了RAID (edundant Array of Independen Disk)虚拟存储系统。RAID即独立冗余磁盘阵列,其思想是将多块独立的磁盘按不同的方式组合为一个逻辑磁盘,从而提高存储容量,提升存储性能或提供数据备份功能。
RAID 存储系统的组合方式根据RAID级别定义。

RAID分为软件RAID和硬件RAID两类。在现有的操作系统中,如Windows、Linux、UNIX等已经集成了软RAID的功能。软件RAID可以实现与硬件RAID相同的功能,但由于其没有独立的硬件控制设备,所以性能不如硬件RAID,但软件RAID 实现简单,不需要额外的硬件设备。
硬件RAID通常需要有RAID卡,RAID卡本身会有独立的控制部件和内存,所以不会占有系统资源,效率高、性能强。
当然目前市面上有很多主板已经集成了RAID卡,具体的使用方式可以参考硬件说明书。

  现在RAID存储系统被广泛应用于生产环境作为存储解决方案。
1 RAID 级别

RAID根据组合的方式不同,有多种设计解决方案,以下介绍儿种常见的RAID方案(RAID级别)。

  1. RAIDO (不含校验与冗余的条带存储)
      多块磁盘组合为RAID 0后,数据将被分割并分别存储在每块硬盘中,所以能最大地提升存储性能与存储空间,但无法容错,RAID0至少需要两块磁盘缺点:因为没有校验与备份,两块硬盘中如果有一块磁盘损坏,即磁盘中的任何一个数据块损坏将导致整个文件无法读取。
  1. RAID 1 (不含校验的镜像存储)
      多块磁盘组合为RAID 1后,数据将被同时复制到每块硬盘中,制作这种磁盘阵列至少需要两块硬盘,该级别的RAID只要有一块磁盘可用,即可正常工作,该级别的阵列安全性是最好的,磁盘利用率是最低的缺点: RAID 1的写入效率低下。此外,磁盘的利用率极低,如果两块磁盘的存储空间均为120GB,则RaID 1的总存储空间依然为120GB。
  1. RAID 2 (位级别的校验式条带存储)
多块磁盘组合为RAID 2后,数据将以位(bit) 为单位同步式分别存储在不同的硬盘上,
并采用海明码( 海明码是一种 具有纠错功能的校验码)对数据进行校验与恢复。
如果有一个文件要写入RAiD2,则该文件会被分成数据位分别同步写入不同的磁盘中,
DATA1与DATA2进行海明码运算后再写入校验盘中,其他部分依此类推。
拥有校验位的RAID2允许E三块磁盘中的任何一块磁盘损坏,
并能够对未损坏的两块磁盘进行运算后还原已损坏磁盘上的数据,从而实现数据恢复的功能。
RAID 2对大数据量的读写具有很高的性能,但对少量数据的读写时性能反而不好,该磁盘阵列至少需要三块硬盘。

下面还有RAID3(字节级别的校验式条带存储)
RAID4 (数据块级别的校验式条带存储))
RAID5 (数据块级别得到分布式的校验式条带存储))
RAID 10(镜像与条带存储)

3 创建与管理raid实例
 1.查看磁盘信息[root@localhost ~]# fdisk -l..部分内容省略...Disk /dev/sdb: 2147 MB, 2147483648 bytes255 heads, 63 sectors/track, 261 cylindersUnits = cylinders of 16065★512 = 8225280 bytesDisk /dev/sdb doesn't contain a valid partition tableDisk /dev/sdc: 2147 MB, 2147483648 bytes255 heads, 63 sectors/track, 261 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDisk /dev/sdc doesn't contain a valid partition tableDisk /dev/sdd: 2147 MB, 214 7483648 bytes255 heads, 63 sectors/ track, 261 cyl inders Units = cyl inders of 16065★512 = 8225280 bytesDisk /dev/sdd doesn't contain a valid partition table 

从以上输出信息可以看出,本机有sdb、sdc、 sdd三块硬盘未分区,如果需要在Linux中实现软RAID,可以将每块硬盘分-一个区组建RAID,也可以对硬盘分多个区实现软RAID,这里我们将每块硬盘分两个区。

3.1 创建硬盘分区
 [root@localhost ~]# fdisk /dev/sdb划分两个分区 sd1 sd2后  其他两块磁盘执行相同的操作,这里就不在赘述[root@localhost ~]# partprobe -a
3.2创建RAID (本例将分别创建RAIDO与RAID5)

Linux中创建磁盘阵列可以使用mdadm命令,在CentOS 7中,目前支持的RAID级别RAIDO、RAID1、 RAID4、RAIDS、RAID6、 RAID10。
下面我们看看该命令的使用方法。

名称: mdadm
描述:管理Linux软件RAID设备。
用法: mdadm [模式]选项<raid 设备>
创建软件RAID (create)。-1  指定RAID级别(level)。
指定磁盘个数。
指定备用设备个数。
[root@localhost ~]# mdadm -C /dev/md0 -1 0 -n 3 /dev/sdb1 /dev/sdc1 , dev/sdd1
mdadm: array /dev/md0 started.
[ root@ localhost ~] # mdadm  -C  /dev/md1 -1 5 -n 3-x 1 \
> /dev/sdb2  /dev/sdc2  /dev/sdd2 /dev/sde2
> mdadm: array /dev/md1 started.
以上两条命令分别创建了名称为md0的RAID0设备以及名称为md1的RAID5设备,这里的名称可以根据自己的习惯自行指定。
刚刚创建的RAIDO及RAID 5的详细信息如下。
[root@localhost ~]# mdadm --detail /dev/md0/dev/md0:
Version : 0. 90
Creation Time :  Thu May 17 03:46:55 2012
Raid Level : raid0
Arrav size : 2963520 12.83 GiB 3.03 GB)#查看md0信息
#创建时间#RAID级别
#RAID磁盘空间
EtecetecPreferred Minor : O
Persistence : superblock is persistent IUpdate Time : Thu May 17 03:46:55 2012
State : cleanActive Devices : 3Working Devices : 3Failed Devices : CSpare Devices : 0
Chunk Size : 64K
UUID : 62e9bd3e: f4dcf02d: 31 9e2a62: 8099eb72 ix 1 UUIDEvents : 0.1Numbe r  Major
0  8  01  82  8
/dev/md1 :Number  Major
0  81  8/dev/ sdb1/dev/ sdc1/dev/ sdd1#*~ md1 íTï ÉAMinor1834RaidDevice State
0  active sync1  active sync/dev/ sdb2/dev/ sdc2
3.3 格式化与挂载
[root@localhost ~]# mkfs. xfs /dev/md0[root@localhost ~]# mkdir /raid0
[ root@localhost ~]# mount  /dev/md0 /raid0[root@localhost ~]# mkfs.xfs /dev/md1[root@localhost ~]# mkdir /raid5
[root@localhost ~]# mount /dev/md1 /raid5

将磁盘阵列设备设置为开机自动挂载项,CeniOS 系统开机会读取磁盘阵列的配置文件/etc/mdadm.conf以启动RAID设备。下面两条命令可以帮助我们快速创建这样的配置文件,DEVICE行代表填写所有磁盘阵列的设备成员名称,ARRAY 行描述磁盘阵列具体的基本信息,包括名称、级别、UUID等信息。

[root@localhost ~] #echo "DEVICE /dev/sdb1 /dev/sdb2 \
/dev/sdc1 /dev/sdc2 /dev/sdd1 /dev/sdd2 /dev/sde2" > /etc/mdadm . conf
[root@localhost ~]# mdadm -Evs > > / dev/ mdadm. conf
ARRAY /dev/md/0  level=raid0 metadata=1.2 num-devices=32591cc4d:a588f799:88123b79 name=centos7 . example. com:0
devices=/dev/ sddl, /dev/ sdcl, /dev/ sdb1
ARRAY /dev/md/1 level=raid5 metadata=1.2 num-devices= 3 6bc3a 612: 969239d8: 7a78a301 name=centos7. example. com: 1
spares=1 devices=/dev/sde2, /dev/sdd2, /dev/ sdc2, /dev/sdb2
[root@localhost ~]# echo "/dev/md0 /raid0 xfs defaults 0 0" >> /etc/fstab
[root@localhost ~]# echo "/dev/md1 /raid5 xfs defaults 0 0" >> /etc/fstabUUID=4282a2c2:
UUID=d6cc7bdc:
3.4 RAID性能模拟
**************************
★*  普通磁盘:写入模拟  ★★
**************************[root@localhost ~]# time dd if=/dev/zero of=txt   bs=1M  count=1000
1000+0 records in1000+0 records out
1048576000 bytes (1.0 GB) copied, 21. 7965
real  0m23.262s
user  0m0.001s
sys  0m2.209sseconds, 48.1 MB/s
可以看出,对普通磁盘写入1GB的数据所需总时间为23.262s.
 **  RAID 0:写入模拟  ★*★********[root@localhost raid0]# time dd if=/dev/zero of=txt bs=1M count =10001000+0 records in1000+0 records out1048576000 bytes (1.0 GB) copied, 3. 87193 seconds, 271 MB/sreal    0m4.308suser  0m0.001s sys  0ml.604s可以看出,对RAIDO写入1GB数据所需总时间为4.308s。★★★★★*★★★****************工件  ★★  RAID 5:写入模拟★*★★★★★★★★**★**************[root@localhost raid5]# time dd if=/dev/zero of=txt bs=1M count= 10001000+0 records in1000+0 records out1048576000 bytes (1.0 GB) copied, 12. 5047 seconds, 83.9 MB/sreal   0m12.614suse r  0m0.004ssys  0m3.705s可以看出,由于RAID 5需要生成校验位数据,所以写入数据的速度比RAIDO慢,但比普通磁盘快,写入1GB数据所需总时间为12.614s。 
5RAID 故障模拟
[root@localhost raid5]# mdadm /dev/md1 -f /dev/sdb2
mdadm :  set /dev/sdb2 faulty in /dev /md1
注释:使用-f选项( failed)模拟磁盘sdb2的损坏。
由于上面做性能测试时已经往RAID5中写入了1GB的数据,所以使用命令模拟磁盘损坏后,快速查看Rald详细信息可以看出正在使用/dev/sde2重建数据(还原数据),而原来的/dev/sdb2成了损坏的空闲设备。
[root@localhost ~]# mdadm --detail /dev/md1Numbe r
Major
Minor
RaidDevice State

RAID技术详解以及性能测试相关推荐

  1. 【硬件】存储的RAID技术详解

    存储的 RAID 技术详解 1.RAID 技术: 存储中的控制器将硬盘按照某种规则进行整合,从而加快了存储中硬盘的读写效率. 2.RAID 技术特点 ( 1 )提供存储中硬盘的冗余 ( 2 )提高存储 ...

  2. 磁盘阵列RAID技术详解

    RAID简介 简单的说,RAID(Redundant Array of indenpensive Disk)是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比 ...

  3. 图文并茂raid技术详解(raid大全)

    RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征.基本原理.关键技术.各种等级和发展现状进 ...

  4. RAID技术详解与总结

    目录 1. RAID概述 2. RAID基本原理 3. RAID相应术语 3.1 扇区.块.段.条带 3.2 磁盘的IO指令 3.3 数据校验( Data parity) 4. RAID标准分级 4. ...

  5. Linux磁盘阵列技术详解(二)--raid 1创建

    我在Linux磁盘阵列技术详解(一)里已经详细介绍了几种RAID磁盘阵列方式,原理以及创建raid 0 的详细步骤.那么这篇文档就着重讲解如何创建raid 1的技术: 步骤如下: ① 分区 同样我们还 ...

  6. 视频直播技术详解(8)直播云 SDK 性能测试模型

    <视频直播技术详解>系列之八:直播云 SDK 性能测试模型 牛小七2016年10月12日发布在 视频直播技术详解 七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完 ...

  7. 《视频直播技术详解》系列之八:直播云 SDK 性能测试模型

    七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣. 结合七牛实时流网络 LiveNet 和直播云解 ...

  8. 视频直播技术详解之直播云SDK性能测试模型

    声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 作者:七牛云 责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN 高级架构师群 ...

  9. linux磁盘阵列教程,Linux磁盘阵列技术详解(二)--raid 1创建

    我在Linux磁盘阵列技术详解(一)里已经详细介绍了几种RAID磁盘阵列方式,原理以及创建raid 0 的详细步骤.那么这篇文档就着重讲解如何创建raid 1的技术: 步骤如下: ① 分区 同样我们还 ...

最新文章

  1. vb 6.0服务器组件选哪个,VB 6.0包括几种版本?分别是什么?
  2. 2021年炼丹笔记最受欢迎的10篇技术文章
  3. 【蓝桥杯省赛】冲刺练习题【数学公式】倒计时【06】天(准考证组委会已下发,请查询)
  4. 【解析】1012 The Best Rank (25 分)
  5. mysqli扩展是mysql扩展的增强版_PHP学习笔记【22】--PHP数据库编程 mysql扩展库 和mysqli扩展库...
  6. 【原创】大叔算法分享(6)机器学习概览
  7. RAIM (GNSS完好性监测算法合集)
  8. System.Web.Mvc.UrlHelper的学习与使用
  9. 微信小程序富文本去除首行缩进样式_小程序富文本处理wxParse
  10. 同学聚会幽默 , 小学生搞笑图片
  11. Python Web 框架-Django day07
  12. iOS使用wifi传输文件到iPhone
  13. Excel VBA 代替Sumproduct实现多条件求和
  14. 榆熙教育:拼多多有效提高店铺出评率的技巧
  15. GESD 离群值检验——理论与 Python 实现
  16. 进阶篇:3.9)3d打印件设计
  17. PHP获取系统时间的方法(毫秒数)
  18. 开源的多媒体播放器MPV
  19. WIN7系统忘记密码怎么办?忘记开机密码的解决方法
  20. 老干妈大战腾讯,最新迷幻反转!我笑疯了。。。

热门文章

  1. Oracle之行转列,列转行大全
  2. iOS 组件化的三种方案
  3. 高三党听音乐自习哪款蓝牙耳机好?平价高音质这五款蓝牙耳机值得入手
  4. 初学Java如何快速编译运行打包
  5. CPU指令集是什么东西,以及指令集的架构有哪些(有哪些大类),以及具体的指令集都有哪些
  6. 怎样用云计算来进行软件恢复?
  7. Js 比较日期/时间的大小
  8. 模拟农场 Farming Simulator 2019 for Mac
  9. 治臻新能源冲刺科创板:年营收2.2亿 上汽创投是股东
  10. 连Python产生器(Generator)的原理都解释不了,还敢说Python用了5年?