RAID技术详解以及性能测试
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级别)。
- RAIDO (不含校验与冗余的条带存储)
多块磁盘组合为RAID 0后,数据将被分割并分别存储在每块硬盘中,所以能最大地提升存储性能与存储空间,但无法容错,RAID0至少需要两块磁盘缺点:因为没有校验与备份,两块硬盘中如果有一块磁盘损坏,即磁盘中的任何一个数据块损坏将导致整个文件无法读取。
- RAID 1 (不含校验的镜像存储)
多块磁盘组合为RAID 1后,数据将被同时复制到每块硬盘中,制作这种磁盘阵列至少需要两块硬盘,该级别的RAID只要有一块磁盘可用,即可正常工作,该级别的阵列安全性是最好的,磁盘利用率是最低的缺点: RAID 1的写入效率低下。此外,磁盘的利用率极低,如果两块磁盘的存储空间均为120GB,则RaID 1的总存储空间依然为120GB。
- 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技术详解以及性能测试相关推荐
- 【硬件】存储的RAID技术详解
存储的 RAID 技术详解 1.RAID 技术: 存储中的控制器将硬盘按照某种规则进行整合,从而加快了存储中硬盘的读写效率. 2.RAID 技术特点 ( 1 )提供存储中硬盘的冗余 ( 2 )提高存储 ...
- 磁盘阵列RAID技术详解
RAID简介 简单的说,RAID(Redundant Array of indenpensive Disk)是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比 ...
- 图文并茂raid技术详解(raid大全)
RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征.基本原理.关键技术.各种等级和发展现状进 ...
- RAID技术详解与总结
目录 1. RAID概述 2. RAID基本原理 3. RAID相应术语 3.1 扇区.块.段.条带 3.2 磁盘的IO指令 3.3 数据校验( Data parity) 4. RAID标准分级 4. ...
- Linux磁盘阵列技术详解(二)--raid 1创建
我在Linux磁盘阵列技术详解(一)里已经详细介绍了几种RAID磁盘阵列方式,原理以及创建raid 0 的详细步骤.那么这篇文档就着重讲解如何创建raid 1的技术: 步骤如下: ① 分区 同样我们还 ...
- 视频直播技术详解(8)直播云 SDK 性能测试模型
<视频直播技术详解>系列之八:直播云 SDK 性能测试模型 牛小七2016年10月12日发布在 视频直播技术详解 七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完 ...
- 《视频直播技术详解》系列之八:直播云 SDK 性能测试模型
七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣. 结合七牛实时流网络 LiveNet 和直播云解 ...
- 视频直播技术详解之直播云SDK性能测试模型
声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 作者:七牛云 责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN 高级架构师群 ...
- linux磁盘阵列教程,Linux磁盘阵列技术详解(二)--raid 1创建
我在Linux磁盘阵列技术详解(一)里已经详细介绍了几种RAID磁盘阵列方式,原理以及创建raid 0 的详细步骤.那么这篇文档就着重讲解如何创建raid 1的技术: 步骤如下: ① 分区 同样我们还 ...
最新文章
- vb 6.0服务器组件选哪个,VB 6.0包括几种版本?分别是什么?
- 2021年炼丹笔记最受欢迎的10篇技术文章
- 【蓝桥杯省赛】冲刺练习题【数学公式】倒计时【06】天(准考证组委会已下发,请查询)
- 【解析】1012 The Best Rank (25 分)
- mysqli扩展是mysql扩展的增强版_PHP学习笔记【22】--PHP数据库编程 mysql扩展库 和mysqli扩展库...
- 【原创】大叔算法分享(6)机器学习概览
- RAIM (GNSS完好性监测算法合集)
- System.Web.Mvc.UrlHelper的学习与使用
- 微信小程序富文本去除首行缩进样式_小程序富文本处理wxParse
- 同学聚会幽默 , 小学生搞笑图片
- Python Web 框架-Django day07
- iOS使用wifi传输文件到iPhone
- Excel VBA 代替Sumproduct实现多条件求和
- 榆熙教育:拼多多有效提高店铺出评率的技巧
- GESD 离群值检验——理论与 Python 实现
- 进阶篇:3.9)3d打印件设计
- PHP获取系统时间的方法(毫秒数)
- 开源的多媒体播放器MPV
- WIN7系统忘记密码怎么办?忘记开机密码的解决方法
- 老干妈大战腾讯,最新迷幻反转!我笑疯了。。。