自 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(三重奇偶校验)。
以RAID为基础的改进
另一种替代传统RAID的想法是试图重新创造一种RAID。他们通常以RAID为基础,并在上面做一些改进。其概念就是保留RAID技术的优点,并改进其不足。改进型RAID技术包括带有自愈能力的存储系统以及BeyondRAID。
带有自愈能力的存储系统:Xiotech公司的Intelligent Storage Elements (ISE)是一个典型的带有自愈能力的存储系统。ISE将 RAID和磁盘紧密集成,形成一个单一的存储单元。
Xiotech 设计的ISE架构,可以避免大多数因RAID重建带来的问题,因为它可以减少67%到90%的RAID重建次数。首先,ISE通过主动预防/修复的方式在 磁盘故障被发现之前完成修复,这可以减少磁盘报错的次数(这个过程采用的修复算法与在工厂维修过程中使用的算法相同)。ISE还采用了先进的抗震控制系统 和称为DataPacs的密闭系统,以减少外部环境原因引发的磁盘故障。如果仍然有故障发生,DataPacs密闭系统内部的修复单元会自动启动出厂时定 义好的维修程序,通过分析电流的波动、重新校准各单元组件、重新初始化磁盘等方法进行自动维修。在需要时,系统还可以将数据迁移到其他扇区或其他磁盘上保 存,以防丢失。如果故障仍然不能排除,ISE系统会隔离那些不可恢复的扇区,并在这些扇区上重构数据。利用这些技术,RAID需要重建的几率会小得多。此 外,这些修复都是系统自动进行的,不需要管理员插拔故障磁盘进行人工干预,效果相当于把磁盘直接送回工厂返修。ISE系统的缺点是它的前期成本较高,尽管 它可以降低TCO总体拥有成本(Xiotech公司为它的产品提供5年保修)。
Atrato公司的Velocity 1000(V1000)产品使用了一种叫做FDIR (Fault Detection, Isolation Recovery )的主动修复技术,该技术集成在Atrato的虚拟化引擎(AVE)中。FDIR监测部件和系统的健康状况,并且具有自我诊断和自愈功能。与 Xiotech的技术不同的是,它不会尝试直接修复磁盘的错误。Atrato的设计是在一个3U大小的系统中放置160块 2.5英寸SATA磁盘,这个系统被称作SAID (Self-maintaining array of independent disks),意为具有自主维护能力的磁盘阵列。为了在实际应用环境中判断磁盘是否存在问题,Atrato将实际监测到的性能同它的ORT(大量SATA 磁盘环境下的业务可靠性测试)性能数据库做比对,以此来检验真实业务环境中SATA磁盘出现的偏差。在应对磁盘故障时,Atrato的系统会先尝试修复出 错的磁盘扇区(尽管这种修复方法达不到工厂的那种级别),如果磁盘故障或不可恢复的读错误无法被修复,系统会隔离这些扇区,只有受影响的(扇区中的)数据 才进行重建并重定向到虚拟的地址空间。如果某个磁盘完全损坏,其上的数据会整体重建并重定向到虚拟的地址空间。Atrato的系统仅仅处理损坏的扇区上的 数据,因此可以减少重建的次数和时间。Atrato为他的产品提供三年保修。
DataDirect Networks公司的S2A产品采用了即时自愈技术。在磁盘完全失效之前,通过多级别的恢复设计,处理出错的磁盘。它会为每个磁盘维护一个写操作日志, 跟踪出现问题的写操作,在出现问题时尝试恢复这些操作。如果恢复操作能够成功,那说明其实只有一小部分数据需要通过日志信息恢复。利用这个技术,重建的时 间被大大缩短,用户也没有必要打电话找人支持了。
Panasas公司的ActiveScan技术通过连续监视磁盘及其数据内容来发现问题。 ActiveScan监视数据对象、RAID奇偶校验、磁盘介质以及磁盘驱动器的属性。当检测到可能有问题出现时,系统会将数据迁移到同一个磁盘的空闲块 中。系统通过对SMART(磁盘自我监测分析和报告技术)信息的统计分析,可以预知潜在的磁盘故障,并提前采取措施保护数据。因此,当预测到磁盘即将发生 故障时,系统会根据用户设置好的策略,提前将数据迁移到其他的磁盘上,以此减缓RAID重建的必要。
LSI公司和NEC公司的存储系统都能 做到在探测出扇区错误的同时,该磁盘仍然可以像RAID组中其他磁盘一样连续运行。如果能够分配到可替代的扇区,(出错的)磁盘就可以返回到运行状态,从 而避免了整个磁盘完全重建。在整个探测及修复的过程中,系统的性能是可以保证的。这是一种功能有限的自我修复技术,但是也可以有效降低重建的次数,并且能 够帮助系统保持较高的性能水平。
3PAR公司的InSpire存储系统采用了特殊的架构设计,可以实现较高的重建性能。通过利用高级磁盘错 误隔离技术,减少了需要重构的数据量。与此同时,充分发挥其大规模并行处理能力的优势,快速地重建数据(时间通常少于30分钟)。InSpire系统以 “chunklets”(3PAR定义的最小虚拟盘单位)为逻辑单元,采用多对多关系的集群结构设计。此外,高并发处理能力使得3PAR可以跨多个物理磁 盘柜分离RAID组成员,将数据丢失的风险降到最低,即便是某个机箱整体出现问题也不用担心。
BeyondRAID:Data Robotics公司设计了这个概念,BeyondRAID建立在RAID之上,并且对管理员完全透明。决策故障盘离线的过程是传统RAID的工作机制, 而BeyondRAID将其设计思想转化为动态的在线状态管理。BeyondRAID在本质上实现了RAID的自主管理。它基于RAID设计是因为任意特 定的时间点都需要保护数据,但是人们真正关注它的原因是BeyondRAID可以解决传统RAID的不足。它可以应对一块或者两块磁盘出错,并且内建自动 的数据自愈功能(非存储自愈)。数据块跨所有的磁盘分布,数据重建的速度非常快。由于该系统具有“数据识别”能力,因此磁盘不需要统一容量,磁盘的槽位可 以重新排序,重建时间也会根据数据量线性变化。BeyondRAID系统最大只能管理8个SATA磁盘,虽然只对中小企业(SMB)来说颇具吸引力,但它 是一个真正的不需要管理的存储系统。
放弃RAID技术:Erasure codes分布式数据存储技术
Erasure codes的设计是将数据分割成多个等长的不能直接读取的数据块,并且在每个数据块上附加元数据信息。一份完整的数据通过全部数据块中的部分子集就可以复 原,也就是说只要有部分数据块存在,数据就不会丢失。这些数据块可以分布在不同的存储位置,可以是一个数据中心内部,可以跨越城市、跨越一个地区,或者在 世界上任何其他地方。
Erasure codes天生具有数据安全性机制,因为每个独立数据块所包含的信息量都不足以揭示原始数据集的全貌。必须有足够数量的数据块集合(可能来自于不同的存储 节点)才能恢复完整的数据,这个数量由附加在每个数据块上的元数据信息量决定。附加的元数据信息越多,意味着恢复时需要的数据块就越少。
Erasure codes在面对自然灾难以及技术错误时具有很强的生存适应能力,因为只要有部分数据块存在,就能复原完整的原始数据。实际上,如果使用Erasure codes技术保护数据,即使客户端、服务器、存储单元,磁盘驱动器或者网络这一些列环节中同时发生多个故障,我们仍然可以实时访问数据。
Erasure codes也被叫做正向纠错(FEC,forward error correction),与RAID的存储机制完全不同。Erasure codes可以消除上文中我们提到过的所有RAID的不足。这是一项新技术,到目前为止,只有三个厂商推出了基于Erasure codes技术的产品:Cleversafe公司的dsNet;EMC公司的ATMOS;以及NEC公司的Hydrastor。
Erasure codes似乎更适合大规模数据存储环境,而不是小规模存储。它特别适合于云存储或者分布式存储,因为它根本不需要数据复制,并可以在广域的多个地理位置分散存储数据。
RAID技术的演变
众 所周知传统的RAID技术存在很多的问题,而且随着磁盘容量的不断提高,这些问题带来的负面影响越来越大。我们在这里介绍的诸多RAID替代技术可以解决 其中的一部分问题,而更多新的解决方案还在开发过程中。对于这些非传统的技术,我们需要找一个合适的、特殊的环境进行研究、测试和试用,还要有耐心 ,要敢于承担风险。