linux系统中独立冗余磁盘阵列RAID
CPU及缓存技术(内存)速度发展很快,而硬盘设备的性能提升却不是很大,因此硬盘逐渐成为当代计算机性能提升的瓶颈。
硬盘设备需要进行持续、频繁、大量的IO操作,损害几率较大。
1988年,加利福尼亚大学伯克利分校首次提出并定义了RAID技术的概念。
RAID技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,
然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果。
技术特点:把多个硬盘设备组合成一个用量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别放在各个不同的物理硬盘设备上
独立冗余磁盘阵列技术解决的问题:
1、提高硬盘设备的IO性能(主要是通过分散读写技术来实现)
2、数据冗余备份(防止因硬盘损坏造成的数据丢失,提高了数据的安全性)
常见的RAID技术方案:
1、RAID0:
RAID0技术把多块物理硬盘设备通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入到各个物理硬盘中。
RAID0技术有效的提升了硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力,任意一块硬盘发生故障将导致整个系统的数据都受到破坏。(linux就该这么学p135)
2、RAID1
RAID1技术在多块硬盘中备份相同的数据,虽然提高了读写性能,提高了安全性,其中一块硬盘的损坏不影响其他硬盘中的数据,但是
由于在多个硬盘中备份相同的数据,降低了硬盘的利用率。(linux就该这么学p135)
3、RAID5
RAID5技术把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID5磁盘阵列组中数据的奇偶娇艳信息并不是单保存到某一块硬盘中。
下图中parity部分存放的就是数据的奇偶校验信息,换句话术,就是RAID5技术实际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后
通过奇偶校验信息来尝试重建损坏的数据。RAID5这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题。
以四块磁盘raid5为例,由于RAID5会损失《相当于》一块磁盘的空间,并不是有一块磁盘不能用了,而是每个磁盘上损失的零散的空间之和等于一块磁盘的空间。
(前提是你所使用的组建RAID5的所有磁盘容量相同。)阵列控制器会自动根据你选择的磁盘数,知道它需要把数据分散成三分,并且计算出一份校验信息,
然后一次性写入四个磁盘上。注意:无论几块磁盘的raid5,假设X块磁盘,都是把需要写入磁盘的数据先分成 X-1 份,然后对 X-1 份数据进行运算,
只产生一份的校验信息,最后把X份数据写入由X块磁盘组成的raid5卷,X份数据包含X-1份正常数据信息和一份校验信息。RAID5的校验信息是根据异或运算得到的,
不论数据分成几份只产生一份校验信息。想深入了解你可以根据搜索“异或运算”。而产生的校验信息存放在哪里呢?
之前我们知道产生了需要把3个数据和一个校验信息写入四个磁盘,阵列控制器会提前计算好存放位置,它根据自己预定的规则,当第一次数据来了,先分成三份,
算出校验信息,假设第一次把校验信息写在第一块磁盘,其他三块磁盘写数据信息;第二次就把校验信息存第二块磁盘,其他三块磁盘存数据信息。以此类推,
把校验信息零散分布在每个磁盘上,所以校验信息是其他所有磁盘数据信息的校验结果。当一块磁盘损坏,它上面有校验信息也有数据信息,但是不管是什么信息,
都可以根据其他磁盘的信息通过异或运算,算出这块磁盘的所有信息。
我们可以看到,由于总会计算校验信息,校验信息会占用空间,这才导致RAID会损失一块磁盘空间来存储校验信息,但是校验信息占用的空间是零散分布在不同磁盘上的。
等磁盘都写满了的时候,你会发现,这些校验信息所占用的零散空间之和正好等于一块磁盘的空间。(https://zhidao.baidu.com/question/190987038.html)
4 、 RAID 10
RAID10技术是RAID1和RAID0技术的一个“组合体",如下图:RAID10技术需要至少4块硬盘,其中先两两制作成RAID1磁盘阵列,以保证数据的安全性;然后再对两个RAID1实施RAID0技术,
用以提高硬盘的读写性能。这样从理论上来讲,只要坏的不是同一组中的所有硬盘,数据就不会丢失。(linux就该这么学p137)
RAID、RAID0和RAID10的区别:
RAID1和RAID10都进行了数据的多重备份,RAID10相较于RAID1,多出了RAID0,提高了硬盘的读写性能。
RAID10相较于RAID0,数据实现了多重备份,更加安全。