RAID技术详解

背景介绍

在单机时代,采用单块硬盘进行数据存储和读写的方式寻址和读写的时间消耗大,IO性能低,存储容量小,而且单块硬盘若是出现无法修复的物理故障,就会导致数据丢失随着存储技术的发展,使用多块硬盘组成存储阵列的RAID(redundant array of indeprndent disk)技术应运而生,它是使用多个独立硬盘组成的大型硬盘系统,通过组建立不同的RAID阵列,可以实现比单块硬盘更好的存储性能或是数据恢复能力。

1. RAID 0

RAID 0技术比较简单,即把几块硬盘从相同偏移量位置按block(块)或sector(扇区)组织在一起,形成一个stripe(条带),如图1所示:

图1.RAID 0示意图

图1是一个由4块硬盘(extent0-extent4)组成的RAID 0示意图,当遇到大块数据写入时,数据常以条带为单位写入,最佳情况是RAID控制器将数据被分为4部分写入4块硬盘中,此时写入速度为单块硬盘的4倍。

RAID 0阵列的存储和IO效率与条带深度和存取文件大小有很大关系,若条带深度相对于存取文件大小过大,单个段就可以完成文件存储,那么RAID阵列就会退化为单硬盘IO,存储性能和单硬盘模式一样甚至低于单硬盘,而条带深度过小,虽然存储性能大幅提升,但IO的开销就会很大,极大影响IO效率,所以RAID 0在设置时需要在条带深度和IO大小之间做平衡,才能最大程度发挥阵列的效率。综上所述,RAID 0阵列相对于单硬盘性能对比如表1所示:

表1 RAID 0阵列系统相较于单盘的IO对比

RAID 0 IOPS

并发IO

顺序IO

并发IO

顺序IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

IO SIZE/Stripe SIZE较大

不支持

不支持

提升很小

提升N*系数倍

不支持

不支持

提升很小

提升N*系数倍

IO SIZE/Stripe SIZE较小

提升(1+并发系数)倍

提升(1+并发系数+系数)倍

提升很小

提升系数倍

提升(1+并发系数)倍

提升(1+并发系数+系数)倍

提升很小

提升系数倍

此外,由于RAID 0阵列未设置数据校验或恢复区,一旦阵列中任一块硬盘损坏,阵列中所有数据将会丢失。

2. RAID 1

由于RAID 0没有任何数据保护措施,在RAID 0的基础上对每个虚拟逻辑盘的Block都做一份物理备份在其他盘上,也就是在写数据时同时向备份盘写一份数据,以实现数据保护的效果,如图2所示:

图2.RAID 1示意图

与RAID 0不同,RAID 1对虚拟逻辑盘上的每个物理Block,都在物理盘上有一个备份,因此RAID 1的写IO速度相较于RAID 0有所下降,因为数据需要写两份,且速度以最慢的物理盘为准,由此RAID 1系统相较于单盘的IO对比如表2所示(其中N为组成镜像物理盘的数目):

表2. RAID 1系统相较于单盘的IO对比

RAID 1 IOPS

并发IO

顺序IO

并发IO

顺序IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

提升N倍或并发系数倍

提升N倍或并发系数倍

提升很小

提升N倍

不支持

事务型IO可并发,提升并发系数倍

没有提升

没有提升

在读、并发IO模式下,由于可以并发N个IO,每个IO占用一个物理盘,相当于提升了N倍IOPS。由于每个IO只独占了一个物理盘,所以数据传输速度相较于单盘没有改变。

在读,顺序IO模式或随机IO模式下下由于IO不能并发,所以此时一个IO可以同时读取N个盘上的内容。但随机IO时,寻到时间影响很大,总体来说性能提升很小。

在读、顺序IO或连续IO模式下寻道时间影响最低,此时性能主要取决于硬盘传输速度,性能提升了N倍。

3. RAID 2

RAID 2是一种特殊的模式,它是一种专用RAID,现在已经被淘汰,与RAID 1不同,RAID 2的备份盘用于存储校验数据的汉明码(Hamming Code ECC)用于错误检测和修正,它能够修正一位的错误,即只允许一个硬盘出问题,但它需要的校验码位数与存储数据的位数正相关,也就是硬盘阵列中存储硬盘数量越多,需要的校验盘数量也越多。

为了保证每次写数据都能保证多硬盘并行,RAID 2把条带深度设置为1b,但这也导致RAID 1无法并发IO,因为每次写数据都会占用全部硬盘的IO,RAID 2系统与单盘IO的对比如表3所示(N为数据盘数量):

表3. RAID 2系统相较于单盘的IO对比

RAID 2 IOPS

顺序IO

顺序IO

非事务性随机IO

事务性随机IO

连续IO

非事务性随机IO

事务性随机IO

连续IO

提升极小

提升极小

提升N倍

性能降低

提升极小

提升N倍

4. RAID 3

RAID 3把校验盘也虚拟化为条带的形式,如图3所示,它采用更为高效的XOR校验算法,在写入数据时同时向校验盘相同偏移量的条带写入数据经过XOR校验后的校验码。这种算法可以在阵列中某块硬盘故障后恢复其中的数据,但在针对数据传输时出现的错误,XOR校验算法只能判断数据是否有错误,无法找出哪里有误,更无法修复错误。

RAID 3摒弃了RAID 2把条带深度仅仅设置为1b的设计,而是把条带深度设置为随硬盘数量而定,最小1个扇区,条带长度为一个文件系统块的大小,即每个Segment的大小为一个或几个扇区。这样一来不仅保留了每次IO尽可能占用全部硬盘的并行性,还解决了RAID 2非事务性IO效率低下的问题,但因为校验盘无法共享IO,RAID 3和RAID 2一样无法并发IO。RAID 3系统与单盘IO的对比见表4。

图3.RAID 3示意图

表4 RAID 3阵列系统相较于单盘的IO对比

RAID 3 IOPS

并发IO

顺序IO

并发IO

顺序IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

IO SIZE/Stripe SIZE较大

不支持

不支持

提升很小

提升N倍

不支持

不支持

提升很小

提升N倍

IO SIZE/Stripe SIZE较小

不支持

事务型IO可并发,提升并发系数倍

提升很小

提升N*IO SIZE/Stripe SIZE倍

不支持

事务型IO可并发,提升并发系数倍

提升很小

提升N*IO SIZE/Stripe SIZE倍

5. RAID 4

RAID 4 为提高IO并发的几率,在RAID 3的基础上又加大了条带的深度,使得大部分文件写入的IO操作只调用阵列中的一部分硬盘,但RAID 4只有一块校验盘,在写入数据的同时也会对校验盘进行IO操作,这样校验盘就成为了热点盘,由于单块校验盘不支持IO并发,RAID 4依然难以做到并发IO,业界针对这种情况专门研制了优化方案,例如WAFL文件系统,它提供一个控制器,将两个不同事务的IO写操作,尽量放到同一条带上,以人为制造更多的重构写模式,这样不仅并发了IO,还增加了写效率。RAID 4系统与单盘IO的对比见表5所示。

表5 RAID 4阵列系统相较于单盘的IO对比

RAID 4 IOPS

特别优化的并发IO

顺序IO

特别优化的并发IO

顺序IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

IO SIZE/Stripe SIZE较大

冲突

冲突

提升很小

提升N倍

冲突

冲突

没有提升

提升N倍

IO SIZE/Stripe SIZE较小

提升很小

提升N*并发系数倍

几乎无提升

几乎无提升

提升并发系数倍

提升N*并发系数倍

性能降低

性能降低

6. RAID 5

RAID 5系统与RAID 3和RAID 4相比,它不使用单独的一块物理盘作为校验盘,而是将校验盘以条带的形式分布于各数据盘中,一个5硬盘、条带深度为5个block的RAID 5系统如图4所示:

图5.RAID 5示意图

RAID 5阵列中的每个条带都有一个校验Segment,但是不同条带中位置不同,在相邻条带间循环分布。为保证并发IO,RAID 5将条带大小做得比较大,以保证每次IO不会占满整个条带,造成队列中其他IO的等待。因此RAID 5要保证高并发率,一旦某时刻没有成功并发,则这次IO几乎就是读改写模式,所以RAID 5有较高的写惩罚。但是在随机写IO频发的环境下,由于频发的随机IO提高了潜在的并发几率,如果碰巧并发的IO处在一个条带上,还可以降低写惩罚的几率。因此RAID 5 系统面对频发的随机写IO时,其IOPS下降趋势比其他RAID系统更平缓一些。

RAID 5相较于经过特别优化的RAID 4,其在底层就实现了并发,可以脱离文件系统的干预。而不像基于WAFL文件系统的RAID 4,需要预先规划并发环境,就效率而言,仍然是WAFL拥有更高的并发系数,因为WAFL是主动创造并发环境,RAID 5是被动等待并发发生。RAID 5系统与单盘IO对比见表6。

表6 RAID 5阵列系统相较于单盘的IO对比

RAID 5 IOPS

并发IO

顺序IO

并发IO

顺序IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

IO SIZE近似Stripe SIZE

不支持

不支持

提升很小

提升N倍

不支持

不支持

提升很小

提升N倍

IO SIZE大于Segment Size且重构写

提升并发系数倍

提升N*并发系数倍

几乎无提升

提升IO SIZE/Segment Size倍

提升并发系数倍

提升N*并发系数倍

性能降低

提升很小

IO SIZE小于Segment Size且读改写

提升并发系数倍

提升N*并发系数倍

提升很小

几乎无提升

提升并发系数倍

提升N*并发系数倍

性能降低

性能降低

此外还有RAID 5E系统,它在RAID 5的基础上,每块硬盘又各自分出一部分区域充当热备区域,目的是在遇到阵列中突然有硬盘损坏时,其他硬盘立即恢复数据并写入热备区域中。RAID 5EE系统是将RAID 5E中的热备区域也条带化,以便于规划硬盘空间。

7. RAID 6

RAID 6相较于RAID 5,其在每个条带中又增加了一个Segment存储校验数据,即每个RAID 6阵列使用相当于两块硬盘的空间充当校验盘,这样一来整个存储阵列遇到同时损坏两块硬盘时,也能恢复数据。RAID 6系统示意图见图6所示。

RAID 6在写的时候会比RAID 5同时读取或写入额外的一份校验数据,不过由于是并行操作,所以不会比RAID 5慢多少,其他性能则与RAID 5类似,RAID 6系统与单盘IO的对比见表7所示。

图6.RAID 6示意图

表7 RAID 6阵列系统相较于单盘的IO对比

RAID 6 IOPS

并发IO

顺序IO

并发IO

顺序IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

随机IO

连续IO

IO SIZE近似Stripe SIZE

不支持

不支持

提升很小

提升N倍

不支持

不支持

提升很小

提升N倍

IO SIZE大于Segment Size且重构写

提升并发系数倍

提升N*并发系数倍

几乎无提升

提升IO SIZE/Segment Size倍

提升并发系数倍

提升N*并发系数倍

性能降低

提升很小

IO SIZE小于Segment Size且读改写

提升并发系数倍

提升N*并发系数倍

提升很小

几乎无提升

提升并发系数倍

提升N*并发系数倍

性能降低

性能降低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值