首页 > 代码库 > 12.文件系统——磁盘管理之RAID概述

12.文件系统——磁盘管理之RAID概述

一、什么是RAID

从上个世纪80年代起,主流的硬盘接口主要有两类:

A.IDE:用于桌面系统

B.SCSI:用于工业系统(因为转速高,平均巡道时间短,性能较IDE好)

SCSI的性能虽然优于IDE,但其成本约是IDE的五倍以上,故无法广泛应用。人们为了节省成本的同时保持性能,于是设计出了一种方案,即将很多廉价的IDE设备联合起来,当做一块硬盘使用。这种将多块廉价IDE设备并行联合使用的模式就是RAID——廉价冗余磁盘阵列(Redundent Array ofInexpensive Disk)。

RAID能够让多块廉价的硬盘并行工作,在一定程度上提供了高效、可靠的特点。但它需要在IDE控制器之上再提供一种逻辑更高的控制器,这种控制器即为RAID控制器。IDE设备虽然廉价,但是RAID控制器本身非常昂贵,且RAID模式所提供的可靠性不足以满足人们的需要,所以后来在工业级别的应用上,人们将SCSI联合起来组成了RAID,这种RAID得到了更广泛的应用。此时RAID廉价的特性已经不明显了,于是其含义变成了:RedundentArray of Independent Disk——独立冗余磁盘阵列。当让无论RAID的名称如何变化,它体现的思想都是一致的,即将底层的物理磁盘在更高层次的架构上组织起来,使它们能像一块完整的物理设备那样工作。

wKioL1Pk5mDRG9I0AABDa5dX6s4735.png

在没有RADI之前,每一个单独的设备,其控制器是直接连接到主板的总线上的,这个控制器可以和CPU及其他设备进行通信;而有了RAID级别的概念之后,需要在原有控制器之上附加一个更高级别的总控制器,该控制器会对其他低级别的控制器进行集中控制,然后再连接到内存、CPU或其他设备的总线上。

在没有使用RAID之前,CUP会将每一个设备识别为一个单独的个体,而有了RAID之后,CPU会认为这几个设备是一个整体,即由RAID控制器抽象出来的设备。对RAID的管理,就是对总控制器(RAID的芯片)的管理,这个芯片可能是内嵌在主板上的,也可能是个独立的卡片——适配器,通过PCI-E的插槽连接到一个存储设备上,该存储设备称为DAS设备(直接附加存储设备)。

 

 

二、RAID的级别

RAID的目的主要有两个方面:

A、高性能:所谓高性能指的是读写性能,有的场景要求读性能高,有的场景要求写性能高,还有一些场景需要同时兼顾读写的性能

B、可靠性(冗余):频繁的读写操作容易损坏磁盘,可靠性就意味着即使某一块磁盘坏掉了,也不会影响数据的使用(有备份硬盘),这种概念即为冗余。

为了满足不同高性能和可靠性的需求,RAID提供了不同的级别,而区分不同RAID级别的方式,就是在RAID后面加上不同的数字,即从Raid0,Raid1,...Raid78种;而后来随着RAID的进一步发展,产生了不同的RAID级别的组合方式,即Raid10,Raid50等等。

RAID的级别本身没有高低上下之分,也就意味着Raid1并不会优于Raid0,它们只是用来描述多块磁盘的组合方式。下面来逐一介绍不同RAID级别的组合方式:

 

(1)Raid0

Raid0也称为条带设备,即将多块设备并联起来提供高性能的方式。RAID0以条带的形式将数据均匀分布在阵列的各个磁盘上,D0D1...个数据块并不是指的Block,数据块要大得多。每个数据块会按照顺序分别存储到对应的硬盘数据块上,故在RAID0上存储数据,是将数据平均分布到磁盘上,从而实现了并行存取,因此(读写)性能得到了极大的提升。

wKiom1Pk5a6jVvCMAAHqmdTBPPs152.jpg

RAID0的特性

wKioL1Pk5zyj4KCxAABOI74ZrkM515.png

 

 

(2)Raid1

Raid1也称为镜像,镜像顾名思义就是将一份数据存储多份,以镜像为冗余方式,对虚拟磁盘上的数据做多份拷贝,放在成员磁盘上。如果一块物理磁盘坏了,另一块还能继续提供服务。对于Raid1来说,它仍然需要将数据切割为数据块。对于镜像设备来说,两个或多个磁盘上的位(扇区),都是一一对应的。

wKioL1Pk54Kzjf0MAADh6csH7lY925.jpg

如果其中一块磁盘坏掉了,将由另一块磁盘继续提供服务;为了防止备份磁盘也坏掉,就需要马上将已经坏掉的磁盘用一块好的新盘替换掉,而当新磁盘替换上来后,它会马上和正在工作的磁盘做一次同步(Sync),即和原有磁盘建立对应关系,并将原有磁盘上的数据按位复制过来。所以做镜像服务的磁盘,需要时时监控。现在有很多RAID1提供热备份,即在镜像磁盘之外还有一块热备份磁盘,时时监控正在工作的镜像磁盘,一旦发现其中任何一块磁盘坏了,就自动顶替上来,从而保证可靠性。

 

RAID1的特性

wKioL1Pk58STXg24AABMoWXKa9I259.png

(3)Raid2

Raid0性能高,但没有可靠性;Raid1提供了可靠性,但是牺牲了部分性能,因此为了兼顾性能和可靠,出现了Raid2Raid2采用校验冗余:

1. 把数据分散为位或块,加入汉明码,间隔写入到磁盘阵列的每个磁盘中。它采用异或运算(两者相同为假,不同为真,可以用来还原数据),假设一个磁盘块上存的是1,另一个磁盘块上存的是0,那么其中一块坏了,可以根据好磁盘上的数据,和异或结果推断出坏磁盘上的数据。Raid2就是通过3块硬盘来实现校验冗余。

2. 在成员磁盘上的地址都一样

3. 采用了并行存取方式

4. 花费大,成本昂贵

Raid2在实际中使用不多。

 

(4)Raid3

RAID3中,数据块再次分割为更小的块并行传输到各个成员磁盘上,同时计算异或校验数据,存放到专用的校验磁盘上,它和RAID2差距并不大,其存储方式比较复杂,使用也不多。


RAID3的特性

wKiom1Pk5xPSmsTcAABUs-exJzk283.pngwKiom1Pk5zXCZohNAAHBBChkvTM311.jpg


(5)Raid4

Raid4中,数据被分为更大的块,并行传输到各个成员磁盘上,同时计算异或校验数据,存放到专用的校验磁盘上。RAID4采用独立存取方式,将条带由RAID3的小数据块改为更大的数据块,这是RAID4RAID3最大的不同。

RAID4的校验较为迅速,可以获得相对于RAID3更高的读取速度,但写入速度极差,控制器的设计更加复杂,故也不常用。

wKioL1Pk6NfTj3UvAAIUtyXbhA0563.jpg

(6)Raid5

RAID5采用独立存取的阵列方式,校验信息被均匀的分散到阵列的各个磁盘上,没有哪一块磁盘是专门用来存放校验信息的,所以单个校验数据不会成为吞吐量的瓶颈。因此RAID5融合了RAID4的优点,同时避免了RAID4的缺陷,使用较为广泛。

wKiom1Pk5_TAqsGnAAJOLbvUhrs876.jpgRAID5的特性

wKioL1Pk6UOD5eB7AABH4F_bwqA256.png

(7)Raid6

RAID6是指带有两种分布存储的检验信息的磁盘阵列,它是对RAID5的扩展,主要是用于要求数据绝对不能出错的场合,使用了二种奇偶校验方法,需要N+2个磁盘。

常用的RAID6技术:

A. RAID6 PQ:根据公式计算出PQ的值,当有两个数据同时丢失时,仍可以计算出原数据

wKiom1Pk6GaCg8DbAABRxihiMnQ123.png            B. RAID6 DPDP中的DPDouble Parity,它在RAID4的基础上不仅有行的校验,还增加了一个用来存放斜向校验信息的磁盘

wKiom1Pk6LOiJpWpAABLmb6mBZU551.png

(8)Raid7

RAID7是一种新的RAID标准,它与以前见到的RAID级别有明显的区别,可以理解成一个独立的“存储计算机”。RAID7自身带有智能化实时操作系统和用于存储管理的软件工具,可以完全独立与主机运行,不占用主机CPU资源。


本文出自 “重剑无锋 大巧不工” 博客,请务必保留此出处http://wuyelan.blog.51cto.com/6118147/1537647