2008年(8065)
分类: 服务器与存储
2008-05-28 15:08:14
最常用的RAID配置等级分别是RAID-0、RAID-1、RAID-5。这三种RAID等级针对数据的传输速度和保护程度都有所不同:RAID-0(数据条带化存储阵列)旨在提供速度,在所有RAID中速度最快,但是提供的保护最少;RAID-1(透明或条带化存储镜像)这种RAID能够提供最好的数据保护;而RAID-5(磁盘阵列,奇偶校验散布)能够同时提供良好的速度和保护,使得RAID-5在所有RAID中使用最为广泛。
确实,为什么采用低价RAID控制器的RAID-5的性能会不尽理想?要明白这一切,我们先要弄清楚RAID-5的运作原理……
众所周知,最常用的RAID配置等级分别是RAID-0、RAID-1、RAID-5。这三种RAID等级针对数据的传输速度和保护程度都有所不同:RAID-0(数据条带化存储阵列)旨在提供速度,在所有RAID中速度最快,但是提供的保护最少;RAID-1(透明或条带化存储镜像)这种RAID能够提供最好的数据保护;而RAID-5(磁盘阵列,奇偶校验散布)能够同时提供良好的速度和保护,使得RAID-5在所有RAID中使用最为广泛。
不过,我们发现了一个普遍性的现象,那就是:采用RAID-5(ZCR)的服务器,在测试中的表现(一个可靠MySQL资料库测试项目),远不及采用Host RAID-1的系统,而且测试表明,就算同样的RAID-1,采用独立RAID控制器的效果,竟然还不如最简单的集成的Host RAID-1,令人颇感意外。
一、寻找原因
确实,为什么采用低价RAID控制器的RAID-5的性能会不尽理想?要明白这一切,我们先要弄清楚RAID-5的运作原理。RAID-5是经过XOR运算比对各硬盘写入资料,再将所得到的奇偶校验的信息分散到阵列中的每个硬盘中。这样可以进行独立或者并行的数据读写操作,可以在提高数据访问速度的同时实现数据冗余性。
RAID-5将数据交错存储在多个磁盘上(类似RAID0),同时维护着一个奇偶校验块(parity blocks)系统,由此使整个阵列清楚每一个物理磁盘上所存储的数据,即使某个磁盘出现了故障也不会对访问产生影响。
采用这样的模式需要至少三块物理磁盘。此外,为了存储奇偶校验数据以及在故障中进行数据恢复还会损失一部分的磁盘空间。对于RAID5模式而言,通常需要基于硬件的RAID控制器。绝大多数的服务器已经具备了SCSI控制器,这也是RAID-5在企业服务器中被广泛采用的原因,尤其对大多数只能安装三个硬盘的1U服务器而言,更是相当理想。
不过从中我们可以明白:RAID控制器的XOR运算能力与快取记忆体的容量,对RAID-5的性能就有着举足轻重的影响。从测试结果显示,采用Intel RAID控制器的服务器,相较于采用Adaprec 120 ZCR控制器的服务器,RADI-5在性能上更享有相当程度的优势,但都不如运算原理最简单的Host RAID-1。就算是RAID-1,独立RAID控制器也都不如集成的Host RAID。
另一个值得注意的地方是,太大的硬盘分割区对于RAID-5的能性也有不利的影响。比方将三个73GB硬盘所组成的146GB RAID-5容量,全数作为一个超大的作业系统分割区,MySQL的测试效果只能以“惨绝人寰”来比拟,但将测试用分割区缩小到36GB,效果就瞬间成长五倍之多。这主要是RAID控制器卡快取记忆体容量不足之故,因为测试数据显示,同样的情况并没有发生在内建设256MB RAID快取记忆体的服务器上。
如果要同时解决RAID控制器的XOR运算能力与快取记忆体的容量给RAID-5所带来的限制,惟有购买高档的RAID控制卡,也就是单通道/多通道SCSI RAID HBA。一般一块高档SCSI RAID HBA约售20000至30000元,再加上三至四个SCSI硬盘约售10000元左右。大多数企业是难以承受如此高额的费用。
二、Host RAID 可取?
不过,这是不是意味着,我们只需要采用最便宜的Host RAID,再也不需要独立的RAID控制器?答案绝对是否定的。首先,Host RAID并无法提供Hotfix之类的可靠性机制(平时多安装一台硬盘作为应急之用,如果发生硬盘损坏,就立即补救),历史的教训也证明了,在同一台服务器上的硬盘是很有可能连续阵亡的。
另外,采用Host RAID-1时,在更换硬盘后,由于必须从一台硬盘完全转移资料到另一台硬盘上,加上因缺乏辅助控制器和独立快取记忆体,必须以来处理器进行这个工作,所以进行恢复作业时的时间会相当的长,也会大幅度降低系统的性能,对于某些高负载的服务器而言,在绝对是难以忍受的,尤其目前节节高升的硬盘容量,更会突显这个问题的严重性。
隐而不显的是,Host RAID-1因以来处理器之故,会有着较高的处理器及系统主记忆体利用率。比方采用两个硬盘组成的Host RAID-1,其效率明显就会落后于单硬盘的情况。换言之,如果日后持续增加硬盘数量,Host RAID的扩充性就会相当的不利,这也就是不如独立RAID控制器之处。
其实在表现方面,Host RAID-0及Host RAID-1并不需要太多的系统资源,但在重建损坏了的RAID(Degraded Mode)或是碰上大量运算资源的RAID-5(需于每次写入时计算Parity),Host RAID未必是一个良好的选择,加上Host RAID须依赖操作系统,如Windows2000、Solaris或 Linux等先启动,所以操作系统并未能受到RAID的保护。Host RAID只需两块SCSI硬盘的价钱便可以完成,甚至可以是免费,但除非是用RAID-1(镜像),否则RAID-0有任何差错,资料尽毁!
三、结论
事实上,RAID并不能完全保障硬盘自身的安全,就算是看起来很安全、能兼顾性能的RAID 0+1和1+0,只要两个硬盘位于不同的RAID-0区域的硬盘接连损坏,资料照样全军覆没,而RAID-5也无法承受一颗以上的硬盘损坏。更重要的是,在预算有限的前提下,企业不见得有能力采购昂贵的高档RAID控制卡和那么多的硬盘去构建RAID 0+5或者RAID 5+0。