在单机时代,采用单块磁盘进行数据存储和读写的方式,因为寻址和读写的时间消耗,致使I/O性能很是低,且存储容量还会受到限制。另外,单块磁盘极其容易出现物理故障,常常致使数据的丢失。所以你们就在想,有没有一种办法将多块独立的磁盘结合在一块儿组成一个技术方案,来提升数据的可靠性和I/O性能呢。算法
在这种状况下,RAID技术就应运而生了。安全
1、RAID 是什么?并发
RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,简称为「磁盘阵列」,其实就是用多个独立的磁盘组成在一块儿造成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。性能
2、RAID 有哪些?设计
RAID方案常见的能够分为:blog
RAID0
RAID1
RAID5
RAID6
RAID10
下面来分别介绍一下。效率
RAID0基础
RAID0 是一种很是简单的的方式,它将多块磁盘组合在一块儿造成一个大容量的存储。当咱们要写数据的时候,会将数据分为N份,以独立的方式实现N块磁盘的读写,那么这N份数据会同时并发的写到磁盘中,所以执行性能很是的高。原理
RAID0 的读写性能理论上是单块磁盘的N倍(仅限理论,由于实际中磁盘的寻址时间也是性能占用的大头)高可用
但RAID0的问题是,它并不提供数据校验或冗余备份,所以一旦某块磁盘损坏了,数据就直接丢失,没法恢复了。所以RAID0就不可能用于高要求的业务中,但能够用在对可靠性要求不高,对读写性能要求高的场景中。
那有没有可让存储可靠性变高的方案呢?
有的,下面的RAID1就是。
RAID1
如图,
RAID1 是磁盘阵列中单位成本最高的一种方式。由于它的原理是在往磁盘写数据的时候,将同一份数据无差异的写两份到磁盘,分别写到工做磁盘和镜像磁盘,那么它的实际空间使用率只有50%了,两块磁盘当作一块用,这是一种比较昂贵的方案。
RAID1其实与RAID0效果恰好相反。RAID1 这种写双份的作法,就给数据作了一个冗余备份。这样的话,任何一块磁盘损坏了,均可以再基于另一块磁盘去恢复数据,数据的可靠性很是强,但性能就没那么好了。
了解了RAID0和RAID1以后,咱们发现这两个方案都不完美啊。
这时候就该 性能又好、可靠性也高 的方案 RAID5 登场了。
RAID5
这是目前用的最多的一种方式。
由于 RAID5 是一种将 存储性能、数据安全、存储成本 兼顾的一种方案。
在了解RAID5以前,咱们能够先简单看一下RAID3,虽然RAID3用的不多,但弄清楚了RAID3就很容易明白RAID5的思路。
RAID3的方式是:将数据按照RAID0的形式,分红多份同时写入多块磁盘,可是还会另外再留出一块磁盘用于写「奇偶校验码」。例如总共有N块磁盘,那么就会让其中额度N-1块用来并发的写数据,第N块磁盘用记录校验码数据。一旦某一块磁盘坏掉了,就能够利用其它的N-1块磁盘去恢复数据。
可是因为第N块磁盘是校验码磁盘,所以有任何数据的写入都会要去更新这块磁盘,致使这块磁盘的读写是最频繁的,也就很是的容易损坏。
RAID5的方式能够说是对RAID3进行了改进。
RAID5模式中,再也不须要用单独的磁盘写校验码了。它把校验码信息分布到各个磁盘上。例如,总共有N块磁盘,那么会将要写入的数据分红N份,并发的写入到N块磁盘中,同时还将数据的校验码信息也写入到这N块磁盘中(数据与对应的校验码信息必须得分开存储在不一样的磁盘上)。一旦某一块磁盘损坏了,就能够用剩下的数据和对应的奇偶校验码信息去恢复损坏的数据。
RAID5校验位算法原理:P = D1 xor D2 xor D3 … xor Dn (D1,D2,D3 … Dn为数据块,P为校验,xor为异或运算)
RAID5的方式,最少须要三块磁盘来组建磁盘阵列,容许最多同时坏一块磁盘。若是有两块磁盘同时损坏了,那数据就没法恢复了。
RAID6
为了进一步提升存储的高可用,聪明的人们又提出了RAID6方案,能够在有两块磁盘同时损坏的状况下,也能保障数据可恢复。
为何RAID6这么牛呢,由于RAID6在RAID5的基础上再次改进,引入了双重校验的概念。
RAID6除了每块磁盘上都有同级数据XOR校验区之外,还有针对每一个数据块的XOR校验区,这样的话,至关于每一个数据块有两个校验保护措施,所以数据的冗余性更高了。
可是RAID6的这种设计也带来了很高的复杂度,虽然数据冗余性好,读取的效率也比较高,可是写数据的性能就不好。所以RAID6在实际环境中应用的比较少。
RAID10
RAID10其实就是RAID1与RAID0的一个合体。
咱们看图就明白了:
RAID10兼备了RAID1和RAID0的有优势。首先基于RAID1模式将磁盘分为2份,当要写入数据的时候,将全部的数据在两份磁盘上同时写入,至关于写了双份数据,起到了数据保障的做用。且在每一份磁盘上又会基于RAID0技术讲数据分为N份并发的读写,这样也保障了数据的效率。
但也能够看出RAID10模式是有一半的磁盘空间用于存储冗余数据的,浪费的很严重,所以用的也不是不少。
总体对比一下 RAID0、RAID一、RAID五、RAID六、RAID10 的几个特征: