云计算项目交付时,不可避免的需要考虑存储磁盘采用何种RAID。例如:我们的项目工程师可能会建议大家连接克隆虚拟机系统盘组RAID 10,完整复制虚拟机数据盘
使用RAID5或者RAID6等,那么RAID到底是什么?我们为什么要采用RAID?如何选取合适的RAID 形式呢?
1)RAID 概念
RAID是Redundant Array of Independent Disk 的缩写,独立磁盘冗余阵列。它是一种数据保护技术,它通过把多块独立的硬盘(物理硬盘)按不同方式组合起来
形成一个硬盘组(逻辑硬盘),提供比单个硬盘更高的存储性能和提供数据冗余。
2)RAID的优点
·提高传输速率
RAID 通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量。在RAID 中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘
驱动器,所以使用RAID 可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。
·提供容错功能
普通磁盘驱动器无法提供容错功能,RAID 可提供容错功能,RAID容错是建立在每个磁盘驱动器的硬件容错功能之上的,所以它提供更高的安全性。在很多RAID模式中都有
较为完备的相互校验/恢复的措施,甚至是直接相互的镜像备份,从而明显提高了RAID系统的容错度,提高了系统的稳定冗余性。
二、RAID 分类
目前业界公认的标准是 RAID0~RAID5。另外,其他还有6,7,10等。
本文中只给出几种常用的RAID 级别的简要介绍:
·RAID0
它将数据分成一定的大小,顺序地写到阵列的磁盘里。如下图所示:
理论上讲,一个由N个磁盘组成的RAID0系统,它的读写性能将是单个磁盘读取性能的N倍,且磁盘空间的存储效率最大(100%)。由于总线带宽等多种因素的影响,
实际的提升速率会低于理论值。但是,大量数据并行传输与串行传输比较,性能必然大幅提高。RAID0有一个明显的缺点:不提供数据冗余保护,一旦数据损坏,
将无法恢复。RAID0至少需要2块硬盘才能实现。
·RAID1
也称为镜像(mirror),它将数据完全一致的分别写到工作磁盘和镜像磁盘。
RAID1系统的磁盘空间利用率为50%,对数据写入时间会产生影响,但是读的时候没有任何影响。RAID1提供了非常好的数据保护,一旦工作磁盘发生故障,系统自动从
镜像磁盘读取数据,不会影响用户工作。而且RAID1支持“热替换”,即不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。RAID1至少需要2块硬盘才能实现。---偶数块。
·RAID5
采用分布式奇偶校验的独立磁盘结构。数据校验的信息被均匀的分散到阵列的各个磁盘上,阵列的磁盘上既有数据,也有数据校验信息,数据块和对应的校验信息会存储于不同的磁盘上。
校验位即P位是通过同一带区的数据做异或求得的。当一个数据盘损坏时,RAID5系统可以根据同一带区的其他数据块和对应的校验信息来重构损坏的数据。RAID5至少需要3块硬盘才能实现。
·RAID6
采用两种奇偶校验的磁盘结构。RAID6在RAID5的基础上,进一步加强了数据保护,实际上是一种扩展RAID5等级。
RAID6的数据冗余性能相当好。但是由于增加了一个校验,所以写入的效率较RAID5还差。而且控制系统的设计也更为复杂,第二块的校验区也减少了有效存储空间。
RAID6至少需要4块硬盘才能实现。
·RAID10
是一个RAID0与RAID1的组合体。RAID10的结构非常简单,首先创建2个独立的RAID1,然后将这两个独立的RAID0组成一个RAID0,当往这个逻辑RAID中写入数据时,数据被有序的写入两个RAID1中。
RAID10 以 RAID0 为执行阵列,以RAID1为数据保护阵列。具有与RAID1一样的容错能力,用于容错处理的系统开销与单独的镜像操作基本一样,由于使用RAID0作为执行等级,因此具有较高的I/O宽带。
RAID10至少需要4块硬盘才能实现。
使用场景
·RAID0使用场景
RAID0不提供容错能力,但是它的读取性能很高。故RAID0应用对于读取性能要求较高但所存储的数据为非重要数据的场合。
·RAID1使用场景
RAID1提供了非常好的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,且支持“热替换”,故RAID1应用于对数据保护极为重视的场合。
·RAID5及RAID6的使用场景
RAID5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID5可以为系统提供数据安全保障,但保障程度要比RAID1 低而磁盘空间利用率要比RAID1高。
RAID6两个独立的奇偶系统使用不同的算法,数据的可靠性比RAID5 高,即使两块磁盘同时失效也不会影响数据的使用。
故对于数据的保存所需级别要求并不是很高的情况下,我们只需要使用常规的RAID5即可。就现在而言,对于那些数据中心,信息中心等对数据安全级别要求比较高的企业,
使用RAID6保护数据还是有必要的。
·RAID10使用场景
RAID10适用于数据库存储服务器等需要高性能、高容错但对容量要求不大的场合。
实际项目中,需要综合考虑客户对数据存储的安全要求,价格要求等各项因素选择合理的RAID形式。