磁盘阵列:redundant arrays of inexpensive disks,RAID,独立冗余磁盘阵列。它是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。
基本思想:将多个容量较小、相对廉价的磁盘进行组合,从而以较低成本获得与昂贵大容量磁盘相当的容量、性能、可靠性。
RAID可以通过技术(软件或者硬件)将多个较小的磁盘整合成为一个较大的磁盘设备,同时该磁盘不仅具有存储功能还可以保护数据。
raid分类:软raid、硬raid。
软raid:由操作系统和cpu完成,无独立的raid控制器处理芯片和IO处理芯片,效率低。
硬raid:由专门的raid控制器处理芯片和IO处理芯片以及阵列缓冲,不占用cpu资源,但成本很高。
基本技术:镜像(morroring)、数据条带(data stripping)、数据校验(data parity)
镜像:将数据复制到多个磁盘。一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能稍低,确保数据正确写到多个磁盘需要更多的时间消耗。
数据条带:将数据分片保存在不同的磁盘,多个数据分片共同组成一个完成数据副本。它是用于性能考虑。数据条带具有更高的并发力度,当访问数据时,可同时对位于不同磁盘上数据进行读写操作,从而获得非常可观的 I/O 性能提升。
数据校验:利用冗余数据进行数据错误检测和修复。利用校验功能,可以很大程度上提高磁盘阵列的可靠性和容错能力。但数据校验需要从多处读取数据和进行计算比对,会影响系统性能。
磁盘阵列的优点(为什么需要磁盘阵列这个东西?)
1)数据的安全性和可靠性
当硬件(磁盘)损坏时,数据是否还能安全地恢复和使用。
2)读写性能的要求
当只关注读写性能而不是安全可靠性时,raid0可以加强读写性能。当两者兼顾的时候,还有几种级别可以选用。
3)容量的要求
可以让多块磁盘组合起来,故单一文件系统可以有相当大的容量。
RAID的级别(level)有以下几种:
RAID0(stripe,条带模式):性能最佳,安全性最差
该模式下的总容量=n个磁盘容量之和。
最少两块磁盘。
raid0模式会将磁盘先切出等量的数据块(trunk,一般可设置成4KB-1MB),当一个文件要写入raid时,该文件慧根据chunk的大小切割好,之后再依序放到各个磁盘中去,因此数据会被等量的放置在各个磁盘上面。由于文件数据被切割放在不同磁盘上面,每块磁盘负责的数据量就低了性能就高了,因此越多块磁盘组成RAID0性能会越好,但是也存在很大的风险。因为每个文件都是这样存放的,因此只要任何一块磁盘损坏,文件数据将缺一块文件就损坏了,在RAID上面的数据都会遗失而无法读取,不能容错!
当使用相同型号和容量的磁盘来组成时,效果最佳。写入时,如果是n块磁盘,那么写性能将会提高到n,读性能也会提高到n。
当使用不同容量的磁盘来组成时,由于数据一直是等量地依序放置到不同磁盘,当小容量磁盘的数据块被用完了,那么剩余的所有数据都将写入到还有数据块的磁盘中,因此越使用性能越差,最后只剩下一块可以存放数据。
RAID1(mirror,镜像模式):完整备份
该模式下的总容量=1块磁盘容量。
两块磁盘。
让同一份数据,完整的保存在两块磁盘上面。数据的安全性是最佳的。
最好是两块型号容量一样的磁盘,否则,总容量将会以最小的那一块磁盘为主。
RAID10/01:兼顾冗余和性能
该模式下的总容量=n/2块磁盘容量。
至少4块磁盘的偶数盘。
RAID0性能佳但数据不安全,RAID1数据安全但性能不佳,RAID10就是两者的结合。先将两个磁盘组成RAID1,这样就很多组RAID1,再将这些组成一组RAID0。
RAID5:性能和安全的均衡考虑
该模式下的总容量=n-1磁盘容量之和。
最少3块磁盘。
raid5的数据写入类似raid0,不过每个循环写入过程中(striping),在每块磁盘还会加入一个奇偶校验数据(parity)这个数据会记录其他磁盘的备份数据,用于当有磁盘损坏时的恢复。
由于raid5仅能支持1块磁盘的损坏,因此又有了RAID6这个级别。
RAID6:安全性比RAID5好
该模式下的总容量=n-2磁盘容量之和。
最少4块磁盘。
RAID6使用了两块磁盘的容量存储奇偶校验值,因此整体的磁盘容量就会少2快,但是允许出错的数量就可以达到两块。