存储 频道

全面概括RAID 6加速

  【IT168 技术】本人很喜欢RAID 6加速,在工作中也很喜欢总结关于RAID 6加速的经验教训,下面就这个问题来详细说说吧。众所周知,服务器和存储阵列的硬盘上的数据是珍贵的。RAID加速技术就是用以保护这些数据的有效方式之一。经过多年的发展,RAID技术虽然种类众多,但一个突出的局限性就是,无法容忍两块硬盘同时故障的情况发生。一旦存储系统中两块硬盘同时损坏,以往的RAID技术对此也无能为力了。

  RAID 6正是为了解决这个问题应运而生的。由于采用双重校验的容错方式,因而大大提高存储系统双磁盘容错能力,广受厂商追捧,成为磁盘冗余家族的新兴贵族。一时间,各厂商均宣称自身产品支持RAID 6,一场RAID 6的普及大潮似乎已经来临。

  然而仔细研究这些宣称支持RAID 6的厂商的产品我们可以发现,真正意义上完全实现RAID 6支持的厂商只有HDS一家,其他厂商则或多或少在实现方式上打了少许折扣。例如IBM用RAID5E和RAID5EE来替代,结合了RAID5和热备用技术,一定程度上支持两个磁盘故障,但无法真正做到两块硬盘同时掉线。HP的ADG通过在PROLIANT NT服务器上的阵列技术,最终实现二块硬盘同时可以坏,安全性虽好于RAID 5,但牺牲了一定的性能。而NETAPP则一贯通过RAIDDP来替代RAID 6。

  为什么这些追捧RAID 6的厂商迟迟无法提供支持真正RAID 6的产品?看起来很美的RAID 6在普及过程中遭遇了怎样的瓶颈呢?

  要安全还是要性能

  通过前面介绍过的“RAID 6算法解析”,我们已经知道RAID 6是通过使用基于Galois Field算法或者有限场的数学MDS代码,以便在驱动器上对数据进行编码校验,从而避免产生错误或者删除。

  毫无疑问,RAID 6是比传统RAID5冗余级别更高的磁盘容错系统,数据平均无故障时间(MTDL)也比传统RAID5系统更高,但基于如此复杂的校验运算,任何一台存储系统或者服务器要实现RAID 6,都需要耗费大量的资源。

  举例来说明的话:如果磁盘没有故障,RAID 6的写操作通常是可以接受的。可是一旦一块磁盘故障,性能会降低N倍。原来一个写操作只需并行完成两个磁盘写,而如果RAID中1块磁盘有故障,8块盘的 RAID 6即需要完成7个块盘的并行读和两块盘的并行写。RAID组中磁盘越多,性能越差,而针对RAID 6所主要预防的双磁盘故障的情况,如果2块磁盘同时发生故障,我们很难想象系统需要通过多么复杂的运算才能完成一次读、写的操作。

  通常写操作可以100% cache hit,而读操作能做到90%以上就已经很不错了,何况这种大规模的磁盘读写。所以存储系统通常要求物理读,写cache是0.00x毫秒级的,而物理读写如果需要若干毫秒,respnd time则可能达到1000倍以上的差别,对于大型系统,这种性能的变化无法接受,所谓的双磁盘容错也变得没有实际意义。

  尽管Intel等厂商已经基于RAID 6校验运算原理开发出了硬件的校验加速器,但实际上只能应付一定数量磁盘的RAID组发生故障的情况。搭载到存储系统的硬盘的大容量化趋势可能永无止境,越来越多的硬盘数量也造成了越来越大的故障概率。同时我们还不能排除RAID 6加速芯片的单点故障,对RAID系统可能产生的毁灭性的打击。因此实际上RAID 6加速运算芯片目前还存在一定的性能和可靠性的局限。

  而同时,RAID 6对磁盘空间的利用率也远不及RAID5,势必意味着用户需要花费额外的费用来保证数据的安全,这让某些厂商和用户也为此头疼不已。

0
相关文章