• home > theory > CST > Constitution >

    磁盘整列详解:raid0/raid1/raid5/raid6/raid01/raid10性能比较

    Author:[email protected] Date:

    RAID( Redundant Array of Independent Disks)磁盘阵列的定义:部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据

    做影视后期,固态盘太贵,切组一年的回顾片,预览还是吃不住。只有考虑磁盘阵列。第一次搞raid0系列,速度是上来了,但是坏过一次,去开盘恢复数据,花了一千大洋(两个1TB硬盘组成2Tb数据,叫价四千,砍价到一千,醉了!)raid0速度是原来的一倍,但是硬盘一坏,恢复太昂贵。raid1可以备份。这个两个组合,可以解决问题,但是到底是raid10还是选择raid01呢?找了大堆自交,笔记整理如下:

    RAID( Redundant Array of Independent Disks)磁盘阵列的定义:部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。磁盘条带化虽然与 RAID 定义不符,通常还是称为 RAID(即 RAID0 )

    RAID 的初衷是为大型服务器提供高端的存储功能和冗余的数据安全。在整个系统中, RAID 被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的 I/O 性能。大多数 RAID 等级具有完备的数据校验、纠正措施,从而提高系统的容错性,甚至镜像方式,大大增强系统的可靠性, Redundant 也由此而来。

    raid主要有三个关键概念和技术:

    • 镜像( Mirroring):镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。镜像技术提供了非常高的数据安全性,其代价也是需要至少双倍的存储空间

    • 数据条带(Data Stripping):数据条带,将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。通俗来讲,就是把数据分割成n分由n个磁盘来装载,其性能也是单个磁盘的n倍。数据条带是基于提高 I/O 性能而提出的,也就是说它只关注性能, 而对数据可靠性、可用性没有任何改善

    • 数据校验(Data parity):数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能

    不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。

    设计何种 RAID (甚至新的等级或类型)或采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。

    SNIA 、 Berkeley 等组织机构把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七个等级定为标准的 RAID 等级

    RAID0

    RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。

    RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。

    RAID1

    RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。 RAID1 拥有完全容错的能力,但实现成本高。

     RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。

    raid0和raid1的区别

    RAID5

    RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。

    把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。

    数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷

    图中parity部分存放的就是数据的奇偶校验信息

    实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据

    这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。

    raid5技术原理

    RAID6

    RAID6 引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。 RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式,它可以看作是一种扩展的 RAID5 等级。

    RAID6 不仅要支持数据的恢复,还要支持校验数据的恢复,因此实现代价很高,控制器的设计也比其他等级更复杂、更昂贵。 RAID6 思想最常见的实现方式是采用两个独立的校验算法,假设称为 P 和 Q ,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据。RAID6 具有快速的读取性能、更高的容错能力。但是,它的成本要高于 RAID5 许多,写性能也较差,并有设计和实施非常复杂。因此, RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。它一般是替代 RAID10 方案的经济性选择

    raid5与raid6的区别

    RAID类型 个数 利用率 优缺点总结

    RAID0 条带集:2 ,速递: n*100% 读写速率最快,不容错

    RAID1 镜像集:2 n*50% 读写速率一般,容错

    RAID5 带奇偶校验条带集:3, (n-1)/n 读写速率快,容错,允许坏一块

    RAID6 带奇偶校验条带集双校验dp 4,(n-2)/n 读写快,容错,允许坏两块

    RAID10 和 RAID01

    RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像;

    RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常 RAID01 比 RAID10 具有更好的容错能力

    RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。 RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。 RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。

    RAID 50与RAID 60

    这个两种组合都是土豪模式,目的都是提高性能。这里还是忽略掉

    RAID10和RAID5的比较

    安全性方面的比较

    其实在安全性方面,勿须质疑,肯定是RAID10的安全性高于RAID5。我们也可以从简单的分析来得出。当盘1损坏时,对于RAID10,只有当盘1对应的镜象盘损坏,才导致RAID失效。但是对于RAID5,剩下的3块盘中,任何一块盘故障,都将导致RAID失效。

    在恢复的时候,RAID10恢复的速度也快于RAID5。

    空间利用率的比较

    RAID10的利用率是50%,RAID5的利用率是75%。硬盘数量越多,RAID5的空间利用率越高。

    读写性能方面的比较

    主要分析分析如下三个过程:读,连续写,离散写。

    在介绍这三个过程之前,先介绍一个特别重要的概念:cache。

    cache已经是整个存储的核心所在,就是中低端存储,也有很大的cache存在,包括最简单的raid卡,一般都包含有几十,甚至几百兆的raid cache。

    cache的主要作用是什么

    体现在读与写两个不同的方面,如果作为写,一般存储阵列只要求写到cache就算完成了写操作,所以,阵列的写是非常快速的,在写cache的数据积累到一定程度,阵列才把数据刷到磁盘,可以实现批量的写入,至于cache数据的保护,一般都依赖于镜相与电池(或者是UPS)。

    cache的读一样不可忽视,因为如果读能在cache中命中的话,将减少磁盘的寻道,因为磁盘从寻道开始到找到数据,一般都在6ms以上,而这个时间,对于那些密集型io的应用可能不是太理想。但是,如果cache能命中,一般响应时间则可以在1ms以内。两者应该相差3个数量级(1000倍)。

    不要迷信存储厂商的IOPS(每秒的io数)数据,他们可能全部在cache命中的基础上做到的,但是实际上,你的cache命中率可能只有10%

    读操作方面的性能差异

    RAID10可供读取有效数据的磁盘个数为4,RAID5可供读取有效数据的磁盘个数也为4个(校验信息分布在所有的盘上),所以两者的读的性能应该是基本一致的

    读操作方面的性能差异

    连续写方面的性能差异

    在连续写操作过程,如果有写cache存在,并且算法没有问题的话,RAID5比RAID10甚至会更好一些,虽然也许并没有太大的差别。(这里要假定存储有一定大小足够的写cache,而且计算校验的cpu不会出现瓶颈)。

    因为这个时候的RAID校验是在cache中完成,如4块盘的RAID5,可以先在内存中计算好校验,同时写入3个数据+1个校验。而RAID10只能同时写入2个数据+2个镜相。

    连续写方面的性能差异

    如上图所示,4块盘的RAID5可以在同时间写入1、2、3到cache,并且在cache计算好校验之后,这里假定是6,同时把三个数据写到磁盘。而4块盘的RAID10不管cache是否存在,写的时候,都是同时写2个数据与2个镜相。

    根据前面对缓存原理的介绍,写cache是可以缓存写操作的,等到缓存写数据积累到一定时期再写到磁盘。但是,写到磁盘阵列的过程是迟早也要发生的,所以RAID5与RAID10在连续写的情况下,从缓存到磁盘的写操作速度会有较小的区别。不过,如果不是连续性的强连续写,只要不达到磁盘的写极限,差别并不是太大

    离散写方面的性能差异

    例如oracle 数据库每次写一个数据块的数据,如8K;由于每次写入的量不是很大,而且写入的次数非常频繁,因此联机日志看起来会像是连续写。但是因为不保证能够添满RAID5的一个条带,比如32K(保证每张盘都能写入),所以很多时候更加偏向于离散写入(写入到已存在数据的条带中)。

    离散写方面的性能差异

    我们从上图看一下离散写的时候,RAID5与RAID10工作方式有什么不同。如上图:我们假定要把一个数字2变成数字4,那么对于RAID5,实际发生了4次io:先读出2与校验6,可能发生读命中然后在cache中计算新的校验写入新的数字4与新的校验8。

    如上图我们可以看到:对于RAID10,同样的单个操作,最终RAID10只需要2个io,而RAID5需要4个io.

    这里我忽略了RAID5在那两个读操作的时候,可能会发生读命中操作的情况。也就是说,如果需要读取的数据已经在cache中,可能是不需要4个io的。这也证明了cache对RAID5 的重要性,不仅仅是计算校验需要,而且对性能的提升尤为重要。

    当然,并不是说cache对RAID10就不重要了,因为写缓冲,读命中等,都是提高速度的关键所在,只不过RAID10对cache的依赖性没有RAID5那么明显而已。

    磁盘的IOPS对比

    假定一个case,业务的iops是10000,读cache命中率是30%,读iops为60%,写iops为40%,磁盘个数为120,那么分别计算在raid5与raid10的情况下,每个磁盘的iops为多少。

    raid5

    单块盘的iops = (10000*(1-0.3)*0.6 + 4 * (10000*0.4))/120= (4200 + 16000)/120= 168

    这里的10000*(1-0.3)*0.6表示是读的iops,比例是0.6,除掉cache命中,实际只有4200个iops。

    4 * (10000*0.4) 表示写的iops,因为每一个写,在raid5中,实际发生了4个io,所以写的iops为16000个

    为了考虑raid5在写操作的时候,那2个读操作也可能发生命中,所以更精确的计算为:

    单块盘的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4)*(1-0.3) + 2 * (10000*0.4))/120= (4200 + 5600 + 8000)/120= 148

    计算出来单个盘的iops为148个,基本达到磁盘极限

    raid10

    单块盘的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4))/120= (4200 + 8000)/120= 102

    可以看到,因为raid10对于一个写操作,只发生2次io,所以,同样的压力,同样的磁盘,每个盘的iops只有102个,还远远低于磁盘的极限iops。

    raid01于raid5性能對比总结

    所以要求较高的空间利用率,对安全性要求不是特别高、大文件存储的系统采用RAID5比较好。

    相反,安全性要求很高,不计成本,小数据量频繁写入的系统采用RAID10的方式比较好。

    鉴于RAID 5技术是因为硬盘设备的成本问题对读写速度和数据的安全性能而有了一定的妥协,但是大部分企业更在乎的是数据本身的价值而非硬盘价格,因此生产环境中主要使用RAID 10技术。



    参考文章:https://www.zhihu.com/question/20131784/answer/90235520

    RAID基础,RAID10与RAID01比较,RAID10与RAID5比较 https://www.cnblogs.com/seesky/p/6252573.html




    转载本站文章《磁盘整列详解:raid0/raid1/raid5/raid6/raid01/raid10性能比较》,
    请注明出处:https://www.zhoulujun.cn/html/theory/ComputerScienceTechnology/Constitution/2016_0215_4630.html