RAID及热备盘详解

RAID,为Redundant Arrays of Independent Disks的简称,中文为廉价冗余磁盘阵列。 

一.出现的原因(RAID的优点):

  1. 它的用途主要是面向服务器,但现在的个人电脑由于需求变大,需要几块硬盘,而计算机默认的是对第一块硬盘有缓存,而其它的则没有,这样就导致计算机访问其它的硬盘的速度特别的慢,这时磁盘阵列技术出现了,组合小的廉价磁盘来代替大的昂贵磁盘,用于协调几块硬盘的访问。
  2. 在很多RAID模式中都有较为完备的相互校验/恢复的措施,甚至是直接相互的镜像备份,从而大大提高了RAID系统的容错度,提高了系统的稳定冗余性。

二.不足之处(RAID的缺点)

      做不同的RAID,有RAID模式硬盘利用率低,价格昂贵。

三.RAID的分类

   1.RAID0 (又称为StripeStriping)数据分条技术,即文件要写入RAID时,文件会被切割成大小相同的数据条,然后数据条被依次按顺序存放到不同的磁盘中去。

                                                                                                  

  如图1所示:系统向三个磁盘组成的逻辑硬盘(RADI 0 磁盘组)发出的I/O数据请求被转化为3项操作,其中的每一项操作都对应于一块物理硬盘。我们从图中可以清楚的看到通过建立RAID 0,原先顺序的数据请求被分散到所有的三块硬盘中同时执行。
  从理论上讲,三块硬盘的并行操作使同一时间内磁盘读写速度提升了3倍。硬盘越多,传输速度越块,但由于总线带宽等多种因素的影响,实际的提升速率肯定会低于理论值,但是,大量数据并行传输与串行传输比较,提速效果显著显然毋庸置疑。 
  RAID 0的缺点是不提供数据冗余,因为数据被分条储存,所以只要有一个硬盘挂了,文件的一部分数据条就丢失了,整个文件也损坏。所以一旦用户任意一个硬盘损坏,损坏的数据将无法得到恢复。 
  RAID 0具有的特点,使其特别适用于对性能要求较高,而对数据安全不太在乎的领域,如图形工作站或其他对硬盘性能要求较高的应用等。感觉RAID 0适用的情况比较极端,企业应用服务器极少会用到,另外,由于同品牌同型号、大小的硬盘在一起用才会更能体现,且效果不如SSD,因此RAID 0对家用电脑来说也略显不实。

硬盘需求数量:2或者2个以上

硬盘利用率:利用率最高,所有磁盘容量之和,100%

容错性:容错性最低,0

  2.RAID 1 (又称为MirrorMirroring)镜像技术

 一份数据被传入RAID 1中会被分为两股,并分别写入到各个磁盘里去,由於同一份数据会被分别写入到其他不同磁碟,因此如果要写入 100MB 时,数据传送到 I/O 汇流排后会被复制多份到各个磁碟, 结果就是数据量感觉变大了!因此在大量写入 RAID-1 的情况下,写入的效能可能会变的非常差 (因为我们只有一个南桥啊!)。 好在如果你使用的是硬件 RAID (磁盘阵列卡) 时,磁盘阵列卡会主动的复制一份而不使用系统的 I/O 汇流排,效能方面则还可以。 如果使用软件磁盘阵列,可能效能就不好了。

由於两颗硬盘内的数据一模一样,所以任何一颗硬盘损毁时,你的数据还是可以完整的保留下来的! 所以我们可以说, RAID 1 最大的优点大概就在於数据的备份吧!不过由於磁碟容量有一半用在备份, 因此总容量会是全部磁碟容量的一半而已。虽然 RAID-1 的写入效能不佳,不过读取的效能则还可以啦!这是因为数据有两份在不同的磁碟上面,如果多个 processes 在读取同一笔数据时, RAID 会自行取得最佳的读取平衡。

                                                                

 如图2所示:当读取数据时,系统先从RAID1的源盘读取数据,如果读取数据成功,则系统不去管备份盘上的数据;如果读取源盘数据失败,则系统自动转而读取备份盘上的数据,不会造成用户工作任务的中断。当然,我们应当及时地更换损坏的硬盘并利用备份数据重新建立Mirror,避免备份盘在发生损坏时,造成不可挽回的数据损失。

硬盘需求数量:2 + 2*N(N ≥0) (大部分控制器只支持2块盘纯RAID 1)

硬盘利用率:利用率最低分,所有磁盘容量的一半50%

容错性:容错性最高,容许坏一半的硬盘。

P.S. 有次跟Dell的工程师沟通过,dell的工程师说如果如果4块盘考虑纯RAID 1,那么只有一块盘的容量能用,别的盘都是镜像盘,那么容错是同时容许N-1块盘坏,可是实际上Dell及惠普的阵列卡在选择RAID 1的模式下是只能选择2块,不容许选再多了(╯' - ')╯︵ ┻━┻

  3.RAID 1+0 RAID 0+1

RAID-0 的效能佳但是数据不安全,RAID-1 的数据安全但是效能不佳,那么能不能将这两者整合起来配置 RAID 呢? 可以啊!那就是 RAID 0+1 或 RAID 1+0。所谓的 RAID 0+1 就是: (1)先让两颗磁碟组成 RAID 0,并且这样的配置共有两组; (2)将这两组 RAID 0 再组成一组 RAID 1。这就是 RAID 0+1 罗!反过来说,RAID 1+0 就是先组成 RAID-1 再组成 RAID-0 的意思。

硬盘需求数量:4 + 2*N(N ≥0)

硬盘利用率:利用率低,所有磁盘容量一半,50%

容错性:容错性尚可,允许同时损坏一半的盘片,但是至于如何损坏会对RAID有影响取决于是用RAID1+0 还是用RAID 0+1 。

  4.RAID5 、Raid 6

                                                             

如上图所示,每个循环写入时,都会有部分的同位检查码 (parity) 被记录起来,并且记录的同位检查码每次都记录在不同的磁碟, 因此,任何一个磁碟损毁时都能够藉由其他磁碟的检查码来重建原本磁碟内的数据喔!不过需要注意的是, 由於有同位检查码,因此 RAID 5 的总容量会是整体磁碟数量减一颗。以上图为例, 原本的 3 颗磁碟只会剩下 (3-1)=2 颗磁碟的容量。而且当损毁的磁碟数量大於等於两颗时,这整组 RAID 5 的数据就损毁了。 因为 RAID 5 默认仅能支持一颗磁碟的损毁情况。

在读写效能的比较上,读取的效能还不赖!与 RAID 0 有的比!不过写的效能就不见得能够添加很多! 这是因为要写入 RAID 5 的数据还得要经过计算同位检查码 (parity) 的关系。由於加上这个计算的动作, 所以写入的效能与系统的硬件关系较大!尤其当使用软件磁盘阵列时,同位检查码是透过 CPU 去计算而非专职的磁盘阵列卡, 因此效能方面还需要评估。

另外,由於 RAID 5 仅能支持一颗磁碟的损毁,因此近来还有发展出另外一种等级,就是 RAID 6 ,这个 RAID 6 则使用两颗磁碟的容量作为 parity 的储存,因此整体的磁碟容量就会少两颗,但是允许出错的磁碟数量就可以达到两颗了! 也就是在 RAID 6 的情况下,同时两颗磁碟损毁时,数据还是可以救回来!

硬盘需求数量: N(N ≥3)

硬盘利用率:利用率尚可,利用率为N-1块盘的容量

容错性:容错性尚可,所有磁盘磁盘坏一个,如果RAID6,容许所有磁盘坏两个,但同时利用率也为N-2

四 热备盘

当坏盘出现后,服务器会报警,人工可以手动将坏盘替换出来,当插入好盘的时候,RAID控制器会根据XOR,将的三块盘的信息在后台算出来,然后写入新的硬盘。有些RAID控制系统会用NVRAM来存放阵列信息,因此和整列相关的条带化数据也会重新分配到新盘上,这些工作都对用户和应用程序来说都是透明的,用户可能会感受到的就是系统会因为在后台底层进行条带数据的重新分配而带来的服务器响应延迟。

当然,如果条件允许,用户也可以强制作重新分配,当然是在维护停机时间内操作。

好,看了上面的基础知识,大家可以知道,如果RAID 5的盘阵中即便出现一个坏盘,里的数据也不会丢失,甚至你可以不用去理睬他(当然系统性能会有比较大的下降)。

但是由于XOR的限制和RAID 5这个级别的限制,如果连续两个盘出现了问题,呢么整个盘阵中的数据就完蛋了,系统也会不可用。

特别是那些无人值守的机房,RAID 5中死掉一个盘,没有关系,如果他们比较倒霉,在管理人员没有更换坏盘的时候,第二个硬盘也死掉了,那麽就都完蛋了。

Hot-Spare盘就是一个不参与盘阵的,但是加电上线的盘,一点RAID 中的盘出现问题,它都可以自动的替换进入盘阵,你可以把它想象成一个"自动换盘"的概念。

原文地址:https://www.cnblogs.com/LinuxBlogs/p/4353973.html