2008年(8065)
分类: 服务器与存储
2008-12-07 15:50:49
面对硬盘损坏导致数据丢失的风险,一般企业用户都会对磁盘使用RAID冗余技术。如采用RAID1(镜像)及RAID5(分散数据保护)都可以保证在一块硬盘发生故障时得以恢复数据。但问题是,如果两块硬盘同时损坏,数据就会完全丢失。随着存储容量越来越大,使用的硬盘密度越来越高,这种现象发生的比率也在随之提高。
和RAID 5不同的是,RAID 6允许应用第二个独立的奇偶校验方案来获得更好的容错性(双重奇偶校验),它的好处在于:增加了更广泛适用可靠性较低的硬盘的可能,如SATA硬盘虽然能够实现更高的密度,但是也有着较高的错误率和较低的性能,而RAID-6的出现将会改变这种状况,使SATA 也能够应用到高端高性能的环境中去;越来越大的容量意味着越来越长的重建时间,重建时有大量资料存取极易使硬盘受损,RAID6可保护资料的完整;可尽量降低由于硬盘数目增加而导致显著上升的故障率。因此,RAID6主要是用于要求数据绝对不能出错的场合。
但问题是,正因为RAID6使用了二种奇偶校验值,所以需要N+2个磁盘,RAID本身价格就不菲,而再添加一个奇偶校验驱动器的成本就更为可观了;同时对控制器的设计变得十分复杂,写入速度也不好,用于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了不必须的负载。
下面,我们来分析一下RAID 6的性能问题。
解决性能与密度的矛盾
首先,我们看看RAID6出现的主要动因在哪里?从下图可以看到,最近十多年来,读取单一驱动器的时间显著增加了。
出现这种情况的主要原因在于,磁盘密度的增长远远快于性能的提升。从1991年起,企业级磁盘容量(如SCSI和FC)从500MB增加到了300GB,也就是增长了600倍之多。而在同一时期,最高性能从4MB/秒增长到125MB/秒,仅仅增长了31.25倍。如果磁盘驱动的性能可以与密度的增长速度相同的话,我们现在驱动的读/写速度应该是2.4GB/秒。但这只不过是一种美好的幻想,短期内不太可能实现。很明显,用于重建RAID LUN(逻辑单元号)的时间显著增加了。
另外值得注意的是:早在1996年,当1Gb的半双工FC刚刚问世的时候,磁盘驱动的传输率为16MB/秒,容量是9GB。而到今天,磁盘的最高性能仅增长了7.8倍,密度则增长了33.33倍。要知道,在1996年,一个FC通道可最多支持6.25个磁盘的全速读写,而即便是在我们实现了全双工的情况下,今天这一数字也只是3.2。目前在企业磁盘领域,我还看不到有哪种新技术可以扭转这种趋势。而同时,大量采用SATA驱动器只会让这对矛盾更加恶化,因为这类磁盘的密度更大,而传输速度更低。我相信,这是人们期待RAID-6的主要动因,因为随着密度的增加,RAID-5丢失数据的风险也就越大。
RAID6需要消耗更多资源
因此,针对FC的RAID-6将会更加普及,加上SATA硬盘的广泛使用,可以预见在没有出现其他更先进的技术之前,RAID-6将稳坐主流技术宝座。
当然,问题也随之而来。RAID-6不仅需要控制器提供更多的资源来计算额外的奇偶性,而且也需要更高的带宽来读写这些奇偶性校验。而所需带宽的大小主要取决于RAID-6的配置。比如,8+1 RAID-5的配置需要9个驱动器的带宽,而要实现RAID-6 8+2,带宽就需要就要增加11%,或者说是10个驱动器;4+1 RAID-5的配置需要5个驱动器的带宽,而RAID-6 4+2则还需要增加20%,或者说是6个驱动器。因此,如果一个LUN的带宽需求增加20%的话,几乎各种RAID控制器都还能应付,但是如果系统中所有的LUN都采用了RAID-6,结果又会怎样呢?
检查RAID的性能
因为几乎所有主流RAID厂商都是按照RAID-5,而不是RAID-6的性能要求来设计控制器的,所以为了能够达到RAID-6的性能要求,用户需要考虑两方面的问题:一是计算奇偶性的处理器的性能,另一个是后端通道的性能。
处理器的性能评估起来非常简单。让厂商准备一个或最多四个磁盘托架。在开始评估之前,你必须确定后端连接的数量及其性能。比如,如果有4个4Gb的后端FC连接,那么就需要为这4个连接配备4个FC HBA 及一个或者多个能够全速运行这些HBA 的系统。必须确保前台的性能(由服务器到RAID)与后台的性能(由RAID控制器到磁盘托架)相匹配。然后分别创建一个4+1 LUN和一个4+2 LUN,同时使用可以通过多线程写入原设备的程序,例如从ioperformance.com下载xdd。对4+1的写入应该和对4+2的写入保持一致。
现在,对所有LUN进行相同的操作,使其达到全速运行时的性能。为便于比较,我们使用外部柱面的LUN中所获取的磁盘驱动最大性能,同时向厂商询问磁盘托架的最大性能。在这两者之间选取相对较低的数值。在全速运行状态下,对所有LUN重复进行8+1和8+2操作。在奇偶校验性能起关键作用的情况下,写操作的性能应该是相同的。如果不相同,那么可能是奇偶校验处理器的速度不够快,或者是RAID后端的设计性能不够好,或者两种情况兼有。
但要想明确到底是哪个的问题会比较困难。今天,大多数RAID控制器都支持在磁盘阵列之间使用FC连接,而在阵列内部则使用FC-AI、SATA或者SAS连接。第一个需要理解的问题是从RAID控制器到主机的性能和从RAID控制器到缓存之间的性能比。对于中端控制器来讲,这一比率通常在1:1到1:4之间,有时会更高些(从控制器到磁盘阵列的带宽更高)。需要注意的是,如果使用RAID-6,就需要对第二个奇偶校验驱动器进行写操作,对许多厂商而言,还要进行读操作,所以RAID-6也就需要更多的带宽。
让我们来看下面这个例子:该用户前端拥有4个4Gb的FC以及6个从缓存到磁盘阵列的通道。
该例子中的RAID控制器占用了4个4+2LUN的最大带宽。这一点无所谓好坏,它仅仅表明RAID-6 比RAID-5 占用了更多的带宽。一些厂商通过不读取所有奇偶驱动器来解决读取过程中占用的带宽问题,这样一来,就只剩下写入的带宽问题了。还有一些厂商则采取了其他的做法。
选购前的准备
RAID-6比RAID-5需要更大的带宽,而且会影响RAID控制器的性能。我之前谈到的写入问题,不仅在用户由主机进行写入时会出现,当控制器需要对LUN进行重建时也会出现。用户需要清楚了解RAID控制器的后端性能并作为LUN配置的参考,这一点对于RAID-6尤为重要。对于中端产品来讲,从缓存到主机的控制器性能通常会低于从缓存到磁盘的性能。企业级产品的情况亦是如此。
上述问题也就意味着用户在购买任何一款RAID控制器之前,要对计划配置以及主机所需的I/O大小要有准确的了解。RAID-6需要在缓存、磁盘阵列和RAID-5之间占用更多的带宽,因此,在准备采用RAID-6时,需要认真考虑所需要的配置。