RAID 10和RAID 5的比较(1) 在我们考虑存储I/O设计时,到底用RAID 10还是选择RAID5呢?下面我们来做个比较。 为了方便对比,这里拿同样多驱动器的磁盘来做对比,RAID10选择2D+2D的RAID方案,RAID5选择3D+1P的RAID方案,如图2-5和2-6所示。
| (点击查看大图)图2-5 RAID 10(2D+2D) |
| (点击查看大图)图2-6 RADI 5(3D+1P) |
1. 安全性方面的比较 其实在安全性方面,毋庸置疑,肯定是RAID10的安全性高于RAID5。我们可以通过简单的分析来得出此结论。当盘1损坏时,对于RAID10,只有当盘1对应的镜像盘也损坏,才会导致RAID失效。但是对于RAID5,剩下的3块盘中,任何一块盘出现故障,都将导致RAID失效。 在恢复的时候,RAID10恢复的速度也快于RAID5。 2. 空间利用率的比较 RAID10的利用率是50%,RAID5的利用率是75%。硬盘数量越多,RAID5的空间利用率越高。 3. 读写性能方面的比较 主要分析如下三个操作:读、连续写、离散写。 提示: 存储的Cache我们已经在2.1.3中讲述,因为这三个操作跟Cache有很大的关系。 1) 读操作方面的性能差异 RAID10可供读取有效数据的磁盘个数为4,RAID5可供读取有效数据的磁盘个数也为4个(校验信息分布在所有的盘上),所以两者在读方面的性能应该是基本一致的。 2) 连续写方面的性能差异 在连续写操作过程中,如果有写Cache存在,并且算法没有问题的话,RAID5比RAID10甚至会更好一些,虽然也许并没有太大的差别(这里要假定存储有一定大小,足够的写Cache,而且计算校验的CPU不会出现瓶颈)。 因为这个时候的RAID校验是在Cache中完成,如4块盘的RAID5,可以先在内存中计算好校验,然后同时写入3个数据+1个校验。而RAID10只能同时写入2个数据+2个镜像。 如图2-7所示,4块盘的RAID5可以在同时间写入1、2、3到Cache,并且在Cache计算好校验之后,这里假定是6,同时把这4个数据写到磁盘。而4块盘的RAID10不管Cache是否存在,写的时候,都是同时写2个数据或2个镜像。
根据前面对缓存原理的介绍,写Cache是可以缓存写操作的,等到缓存写数据积累到一定时期再写到磁盘。但是,写到磁盘阵列的过程是迟早也要发生的,所以RAID5与RAID10在连续写的情况下,从缓存到磁盘的写操作速度会有较小的区别。不过,如果不是连续性的强连续写,只要不达到磁盘的写极限,差别并不是太大
3) 离散写方面的性能差异 例如DB2 数据库每次写一个数据块的数据,如4KB或8KB,由于每次写入的量不是很大,而且写入的次数非常频繁,因此联机日志看起来会像是连续写。但是因为不保证能够填满RAID5的一个条带,比如32KB(保证每张盘都能写入),所以很多时候更加偏向于离散写入(写入到已存在数据的条带中)。 离散写的时候,RAID5与RAID10的工作方式有什么不同?查看图2-8,假定要把一个数字2变成数字4,那么对于RAID5,实际发生了4次IO:先读出2与校验6,可能发生读命中,然后在Cache中计算新的校验,写入新的数字4与新的校验8; 对于RAID10,同样的操作,最终RAID10只需要2个IO,而RAID5需要4个IO。
这里我忽略了RAID5在那两个读操作的时候,可能会发生读命中操作的情况。也就是说,如果需要读取的数据已经在Cache中,可能是不需要4个IO的。这也证明了Cache对RAID5 的重要性,不仅仅是计算校验需要,而且对性能的提升尤为重要。 当然,并不是说Cache对RAID10就不重要了,因为写缓冲,读命中等,都是提高速度的关键所在,只不过RAID10对Cache的依赖性没有RAID5那么明显而已。 4) 磁盘的IOPS对比 对空间利用率要求较高,而对安全性要求不是特别高的大文件存储的系统,采用RAID5比较好。相反,安全性要求很高,不计成本,小数据量频繁写入的系统采用RAID10的方式比较好。 根据我的经验与分析:小I/O的数据库类型操作,如ERP等应用,建议采用RAID10;而大型文件存储、数据仓库,如医疗PACS系统、视频编辑系统,从空间利用的角度,建议采用RAID5。 在一个实际的案例中,一个恢复压力很大的standby(这里主要是写,而且是小IO的写),采用了RAID5的方案,发现性能很差,通过分析,每个磁盘的IOPS在高峰时期,快达到200了,导致响应速度非常之慢。后来改造成RAID10,就避免了这个性能问题,每个磁盘的IOPS降到了100左右。所以,了解RAID5和RAID10原理,对我们根据应用系统的特点来做存储I/O设计,从而保证性能非常重要
|