• 磁盘RAID分类-2015.04.09


    背景

    之前一直对服务器硬盘RAID等级没有概念,因此特地调研学习一下。受已有知识限制,以下内容主要来自参考资料,自己理解的部分不是很多。


    参考

    RAID wikipedia
    知乎提问


    正文

    RAID在wikipedia上的定义:

    独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。实际的分类为RAID 0-6 7种,再加上常用的组合分类
    分为RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID-10,RAID-50,RAID-60。(因此之前的小白读法“raid十”明显应该读作“raid一零”,明显在经理面前秀了一次下限)

    各等级定义

    • JBOD
      JBOD ( Just a Bunch Of Disks )不是标准的 RAID 等级,它通常用来表示一个没有控制软件提供协调控制的磁盘集合。此阵列把多块磁盘连接起来当作一块大硬盘使用,并没有任何的安全、协调功能。整个阵列的可用空间为所有硬盘的总和,这种“串联”起来的方式会造成任何一块硬盘的故障都会导致整个阵列的故障,可用性大大降低。因此目前已经没有这种应用方法,目前JBOD多指机柜。

    • RAID0
      RAID0也称为带区集。不提供任何形式的冗余策略。该方案将所在磁盘条带化后组成大容量的存储空间,对比JBOD的优势是:将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验, RAID0的性能在所有RAID等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。磁盘个数n最小值为1。

    • RAID1
      RAID1又称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘(100%内容备份),它的磁盘空间利用率仅为50%。 该方案的数据写入性能有所降低,数据读取性能则没有影响。该方案提供了最佳的数据保护,一旦工作磁盘发生故障,系统则自动从镜像磁盘读取数据,不会影响用户工作。对比RAID0方案,本方案是为了增强数据安全性使两块磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。RAID1拥有完全容错的能力,但实现成本过高,需要冗余一倍的硬盘。 因此RAID1只应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护等。磁盘个数n最小值为2。

    • RAID2
      RAID2是RAID0的改良版,以汉明码(Hamming Code)的方式将数据进行编码后分区为独立的比特,并将数据分别写入硬盘中。因为在数据中加入了错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些,RAID2最少要三台磁盘驱动器方能运作.磁盘个数n最小值为3。

    • RAID3
      采用Bit-interleaving(数据交错存储)技术,它需要通过编码再将数据比特分割后分别存在硬盘中,而将同比特检查后单独存在一个硬盘中。也就是说n个盘的阵列里,n-1个盘像RAID0一样工作,然后单独的一个硬盘做校验盘。但由于数据内的比特分散在不同的硬盘上,因此就算要读取一小段数据资料都可能需要所有的硬盘进行工作,所以这种规格比较适于读取大量数据时使用。磁盘个数n最小值为3

    • RAID4
      本方案又称为块交织技术(Block interleaving)。与RAID3不同的是它在分区时是以区块为单位分别存在硬盘中,但每次的数据访问都必须从同比特检查的那个硬盘中取出对应的同比特数据进行核对,由于过于频繁的使用,所以对硬盘的损耗可能会提高。

    • RAID5
      RAID5 应该是目前最常见的RAID等级,它的原理与RAID4相似,优点在于校验数据会分块分布在阵列中的所有磁盘上。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5不存在RAID4中的并发写操作时的校验盘性能瓶颈问题。另外,RAID5还具备很好的扩展性。当阵列磁盘数量增加时,并行操作量的能力也随之增长,可以比RAID4支持更多的磁盘,从而拥有更高的容量以及更高的性能。RAID5的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他RAID等级一样,重建数据时,RAID5的性能会受到较大的影响。RAID5兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0和RAID1的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。该方案可以最多坏一块硬盘,磁盘个数n最小值为3。

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

    混合RAID定义

    • RAID7
      RAID7并非公开的RAID标准,而是Storage Computer Corporation的专利硬件产品名称。RAID7是以RAID3及RAID4为基础所发展,但是经过强化以解决原来的一些限制。另外,在实现中使用大量的高速缓存以及用以实现异步数组管理的专用即时处理器,使得RAID 7可以同时处理大量的IO要求,所以性能甚至超越了许多其他RAID标准的实做产品。但也因为如此,在价格方面非常的高昂。

    • RAID10/01
      RAID10是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID0的最低组合,然后将这两组各自视为RAID1运作。
      RAID01则是跟RAID10的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID1的最低组合,而将两组硬盘各自视为RAID0运作。
      当RAID10有一个硬盘受损,其余硬盘会继续运作。RAID01只要有一个硬盘受损,同组RAID0的所有硬盘都会停止运作,只剩下其他组的硬盘运作,可靠性较低。如果以六个硬盘建RAID01,镜射再用三个建RAID0,那么坏一个硬盘便会有三个硬盘离线。因此,RAID10远较RAID01常用,零售主板绝大部分支持RAID0/1/5/10,但不支持RAID01。

    • RAID50
      RAID5与RAID0的组合,先作RAID5,再作RAID0,也就是对多组RAID5彼此构成Stripe访问。由于RAID50是以RAID5为基础,而RAID5至少需要3颗硬盘,因此要以多组RAID5构成RAID 50,至少需要6颗硬盘。以RAID50最小的6颗硬盘配置为例,先把6颗硬盘分为2组,每组3颗构成RAID5,如此就得到两组RAID5,然后再把两组RAID5构成RAID0。
      RAID50在底层的任一组或多组RAID5中出现1颗硬盘损坏时,仍能维持运作,不过如果任一组RAID5中出现2颗或2颗以上硬盘损毁,整组RAID50就会失效。
      RAID50由于在上层把多组RAID5构成Stripe,性能比起单纯的RAID5高,容量利用率比RAID5要低。比如同样使用9颗硬盘,由各3颗RAID5再组成RAID0的RAID50,每组RAID5浪费一颗硬盘,利用率为(1-3/9),RAID 5则为(1-1/9)。

    • RAID 53
      它拥有一个镜射条带数组,硬盘里其中一个条带就是一个是由3组以上的RAID 5组成RAID 3硬盘阵列。

    • RAID60
      RAID6与RAID0的组合:先作RAID6,再作RAID0。换句话说,就是对两组以上的RAID6作Stripe访问。RAID6至少需具备4颗硬盘,所以RAID60的最小需求是8颗硬盘。
      由于底层是以RAID6组成,所以RAID60可以容许任一组RAID6中损毁最多2颗硬盘,而系统仍能维持运作;不过只要底层任一组RAID6中损毁3颗硬盘,整组RAID60就会失效,当然这种情况的概率相当低。比起单纯的RAID 6,RAID 60的上层通过结合多组RAID 6构成Stripe访问,因此性能较高。不过使用门槛高,而且容量利用率低是较大的问题。


    最后搬运一个知乎上总结的常用RAID组合的表格(出处)

    RAID 等级 RAID0 RAID1 RAID5 RAID6 RAID10
    别名 条带 镜像 分布奇偶校验条带 双重奇偶校验条带 镜像加条带
    容错性
    冗余类型
    热备盘
    读性能
    随机写性能 一般 一般
    连续写性能 一般
    需要磁盘数 n≥1 2n (n≥1) n≥3 n≥4 2n(n≥2)≥4
    可用容量 100% 50% (n-1)/n (n-2)/n 50%
    靡不有初 鲜克有终
  • 相关阅读:
    leetcode -- Count and Say
    leetcode -- Sudoku Solver
    leetcode -- Valid Sudoku
    leetcode -- Search Insert Position
    leetcode -- Search for a Range (TODO)
    leetcode -- Search in Rotated Sorted Array II
    leetcode -- Search in Rotated Sorted Array
    SDL多线程显示更新窗口
    SDL初始化和创建窗口
    中国天气网API接口
  • 原文地址:https://www.cnblogs.com/asfan/p/7560665.html
Copyright © 2020-2023  润新知