自1989年以来,RAID(独立磁盘冗余阵列的缩写)技术一直是磁盘系统数据保护的标准。在用户眼中,RAID是一种成熟、可靠的解决方案,也被视为数据存储的基础技术。那些基本的RAID概念很多年都不曾改变过,仍然十分流行,也有众多的用户。但事实上,RAID技术正在潜移默化的进行着自我更新。
在深入分析为什么传统RAID技术可能被替代之前,我们需要了解一些关于RAID的知识,以及一直以来与这门技术相关的问题。
进入21世纪之后,传统RAID技术暴露的问题
使用RAID是为了在磁盘出现故障的情况下保护数据。当故障发生时,根据用户使用的RAID类型,(一个或多个)故障磁盘上的数据会通过校验值计算或者从镜像盘拷贝的方式重新生成。在各类存储介质中,磁盘设备由于采用了电机驱动,因此故障率最高,平均无故障时间(MTBF)指标也最低,因此磁盘保护技术至关重要。
根据IDC、Gartner和ESG等市场分析公司的预测,数据存储的需求在快速增长,每年的增速介于50%到62%之间。因此,企业需要使用大量的磁盘以满足数据增长的需求。从统计学的角度来说,磁盘数量越多,出现故障的可能性也越高。目前,磁盘设备制造商仍然在不断地增加单位存储密度,现在我们已经有了2 TB的SATA磁盘,而4TB的高容量磁盘也可能在2010年底出现。即便是高性能的SAS和光纤通道磁盘,也在向单盘容量600 GB发展。当使用这些高容量磁盘进行数据重建的时候,传统RAID的弱点会立即显现出来。
每种RAID类型都会在写性能、读性能、数据保护级别、数据重建速度、以及磁盘实际可用容量之间寻求平衡。如果优先考虑数据的可用性保证,那么就需要镜像或者多重镜像(RAID 1,10,三重镜像等等),由于在其他磁盘上有完整的数据副本,所以数据的保护和恢复都比较简单。当然,使用这种RAID类型需要付出高昂的硬件成本,因为每份镜像数据都需要消耗与原始数据相同大小的可用空间。此外,每个镜像都需要消耗系统资源,也会影响I / O性能。现实情况是,大多数企业并不会使用这种昂贵的镜像保护模式,他们更倾向于使用RAID 5或RAID 6。
在RAID 5的设置中,当有磁盘出现故障时,备用磁盘会取代故障磁盘的角色,系统随即在备用盘上重建数据。系统会读取 RAID组中每一块磁盘上的每一个扇区,来重建数据。在重建的过程中,繁重的读写操作很可能引起RAID组中其他磁盘出现错误(通常是无法恢复的读错误),而这个概率将比平时高一个数量级,数据出现错误的可能性大大增加。在10年或20年之前,那时候磁盘的容量还很小,重建RAID只需要几分钟的时间。但是随着普通磁盘的容量达到TB这个数量级之后,重建RAID可能需要花费几小时、几天甚至几个星期的时间。RAID重建会导致应用系统整体性能下降,如果用户不能容忍这一点,而把重建工作的优先级调低的话,重建的时间还将明显延长。越长的重建时间,也就意味着数据丢失的风险越高。正因为如此,很多存储系统厂商都在加紧提供对RAID 6的支持。
RAID 6以双重条带校验的方式来保护数据,即使RAID组中有两个磁盘损坏或者出现不可恢复的读错误,系统也可以应对。数据丢失的风险大幅降低,但是额外的校验条带也将消耗掉更多的可用存储容量。而且,当一个RAID组中同时有两块磁盘需要重建的话,系统性能将受到严重的冲击。更麻烦的是,在RAID 6重建过程中,如果有第三块磁盘失效或者出现不可恢复的读错误,数据丢失的风险将大大增加。
传统RAID还有其他的问题,比如磁盘经过长期的背景辐射、磨损,以及受到灰尘影响等因素,会出现“位元物理衰减”的情况,这也可能导致数据重建失败。大多数存储系统都内建各种类型的后台扫描功能,能够在不可恢复的错误发生之前读取、校验并修正“位元物理衰减”,但这需要消耗系统资源。而且,存储容量越大,也就意味着需要的时间越久。
还有一个问题是,RAID系统需要为发生故障的那个磁盘记录一系列的关联信息, 包括跟踪故障磁盘的位置、相关数据、数据位置、数据产生时间等信息的痕迹,这个时间周期从故障磁盘被拔出那一刻开始,一直到RAID组被修复(或者RAID组被毁坏)。这是一个冗长乏味的过程,如果是加密的磁盘,则还需要复杂的手工操作。更令人沮丧的是,我们发现绝大多数返厂检测和维修的“故障”磁盘(比例在67%到90%之间)根本就是完好无损的,或者没发现有任何的故障。在经历了一系列令人心烦的操作(系统发现磁盘错误,拔出磁盘,数据重建,记录维护信息)之后,才发现磁盘根本没有问题,那真是太糟糕了。
如果用户使用SSD固态盘,那么上述问题会更加严重。固态盘具有非常高的性能,它会取代存储系统中原有的高性能磁盘。NetApp公司首席执行官Tom Georgens最近指出:“需要快速访问的数据将保存在闪存中,而其它数据放在SATA磁盘里。”因为容量的原因,我们不得不增加高密度、低性能的磁盘,而且会越来越多。面对这一趋势,传统RAID技术暴露的问题越来越多。所以,从某些方面考虑,前期在存储系统上花费的采购成本和维护成本越低,最终需要付出的维护成本可能越高。
传统RAID技术的问题,激发了众多存储厂商、学术界人士和企业家们纷纷提出传统RAID技术的替代方案。我们将这些创新归为三类:1、以RAID为基础的创新;2、以RAID为基础的改进;3、放弃RAID,追求全新的(数据保护)模式。
以RAID为基础的创新
为了解决传统RAID技术中存在的问题,几家公司采取了循序渐进的方法,在利用RAID技术可靠性的同时,取消了原来一些的折中设计。IBM的EVENODD技术(由EMC公司在其Symmetrix DMX系统上实现)和NetApp的RAID ? DP技术(由NetApp公司在其FAS和V系列产品上实现)都是通过减少算法开销的方法,从而提升了RAID 6的性能。
NEC公司的RAID-TM技术(也称为三重镜像技术,在其D系列存储系统上实现)旨在解决RAID 1的数据丢失风险问题–即RAID1的主磁盘和镜像磁盘都发生故障或者出现不可恢复的读错误。RAID-TM技术会同时向三个独立的磁盘写数据,在三重镜像磁盘组中,即使有两个磁盘出现故障或读错误,应用程序仍然可以访问它的数据,而且性能也不会下降,甚至在磁盘重建的时候也是一样。RAID-TM的优点是性能出色,缺点是需要消耗更多的可用存储容量。
RAID-X是IBM XIV存储系统上的创新技术,它使用“更宽”的条带(stripe)优化RAID,在性能和数据丢失风险之间寻求新的平衡。RAID-X基本上是RAID 10的一个变种,它使用智能的风险控制算法,将镜像的数据块随机分布于整个阵列上。使用这种方法,XIV可以在30分钟之内完成2TB大容量磁盘的重建数据。如同其他所有的镜像技术一样,它的代价也是可用容量损耗比较大。
Pivot3公司、以及被惠普收购的LeftHand Networks公司在其基于x86集群平台的iSCSI存储系统上都提供一种变种的“网络RAID”技术。“网络RAID”充分利用了RAID的概念,但它以存储节点作为基本的组成单元,而不是磁盘。根据不同的“网络RAID”级别,它能够以逻辑卷为单位,将一到四份镜像的数据块分布于集群之上。实时的块级节点状态检测自愈功能使得“网络RAID”可以在节点之间拷贝并修复数据,在错误发生之前将隐患排除。这样做可以降低因磁盘故障或不可恢复的读错误导致的数据重建的几率(数据重建操作对系统性能影响非常大)。如同其他所有的镜像技术一样,它也减少了存储系统的实际可用容量。
上面提到的以RAID为基础的创新技术仅仅是一部分,其他正在孕育中的技术提案包括RAID 7(三重或多重奇偶校验)或TSHOVER(三重奇偶校验)。