资讯详情

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级别)。

  1. RAIDO (不含验证和冗余条带存储)
      多磁盘组合为RAID 0后,数据将被分割并存储在每个硬盘中,       因此,可以最大限度地提高存储性能和存储空间,但不能容错,RAID至少需要两个磁盘       缺点:如果两个硬盘中有一个磁盘因为没有验证和备份而损坏,       也就是说,磁盘中任何数据块的损坏都会导致整个文件无法读取。 
  1. RAID 1 (不含校准镜像存储)
      多磁盘组合为RAID 1之后,数据将同时复制到每个硬盘中,至少需要两个硬盘至少需要两个硬盘,       该级别的RAID只要有磁盘可用,就可以正常工作,       该级别阵列安全性最好,磁盘利用率最低       缺点: RAID 1写入效率低。另外,磁盘利用率极低,       如果两个磁盘的存储空间都是120GB,则RaID 1总存储空间仍为120GB。  
  1. RAID 2 (存储位级校准条带)
多磁盘组合为RAID 2之后,数据将以位(bit) 不同同步存储在不同的硬盘上, 并采用海明码( 海明码是一种 具有纠错功能的校验码)验证和恢复数据。 如果有文件需要写入RAiD2,将该文件分为数据位,同步写入不同的磁盘, DATA1与DATA2.海明码操作后,写入验证盘,其他部分以此类推。 有验证位的RAID允许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 cylinders        Units = cylinders of 16065★512 = 8225280 bytes        Disk /dev/sdb doesn't contain a valid partition table        Disk /dev/sdc: 2147 MB, 2147483648 bytes255 heads, 63 sectors/track, 261 cylinders        Units = cylinders of 16065 * 512 = 8225280 bytes        Disk /dev/sdc doesn't contain a valid partition table        Disk /dev/sdd: 2147 MB, 214 7483648 bytes255 heads, 63 sectors/ track, 261 cyl inders 

      Units = cyl inders of 16065★512 = 8225280 bytes

      Disk /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磁盘空间
Etecetec

Preferred 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ï ÉA

Minor1834

RaidDevice 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/fstab

UUID=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.209s


seconds, 48.1 MB/s
可以看出,对普通磁盘写入1GB的数据所需总时间为23.262s.

 **  RAID 0:写入模拟  ★*★********
  [root@localhost raid0]# time dd if=/dev/zero of=txt bs=1M count =1000
  1000+0 records in1000+0 records out

      1048576000 bytes (1.0 GB) copied, 3. 87193 seconds, 271 MB/s
      real    0m4.308s
      user  0m0.001s 
      sys  0ml.604s

      可以看出,对RAIDO写入1GB数据所需总时间为4.308s。

      ★★★★★*★★★****************

      工件  ★★  RAID 5:写入模拟★*

      ★★★★★★★★**★**************

      [root@localhost raid5]# time dd if=/dev/zero of=txt bs=1M count= 1000

      1000+0 records in1000+0 records out

      1048576000 bytes (1.0 GB) copied, 12. 5047 seconds, 83.9 MB/s
     
       real   0m12.614s
       use r  0m0.004s
       sys  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/md1

Numbe r
Major
Minor
RaidDevice State

标签: 308s传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台