• 快捷搜索
  • 全站搜索

商用存储系统RAID新技术研究与实践

2016-09-30 13:34:00作者:中国工商银行数据中心(上海)俞晓静 刘礼加编辑:金融咨询网
独立磁盘冗余阵列RAID是存储系统磁盘容量的基本组建技术;存储系统对RAID技术的选择和实现,决定了存储系统的整体水平。本文重点研究了最新的RAID技术,并结合商业系统的使用实践提出了具体的使用建议。

随着大数据时代的到来,商业信息中心对存储系统的容量需求越来越大。独立磁盘冗余阵列(Redundant Arrays of Independent Disks,RAID) 是存储系统磁盘容量的基本组建技术;存储系统对RAID技术的选择和实现,决定了存储系统的整体水平。RAID技术的基本任务是将同一套控制系统中的特定数量的磁盘盘包上的数据按照一定的规则进行重新分布,以满足容量、性能或可靠性的基本需求。最早出现的是RAID0技术,1988年加利福尼亚大学伯克利分校正式发表文章定义了5种层级的RAID。近年来,RAID技术得到进一步的发展,并逐步在商业系统中得到实现。本文重点研究了最新的RAID技术,并结合商业系统的使用实践提出了具体的使用建议。
  
一、传统RAID技术特点比较

  传统RAID技术主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力和扩展性。根据存储系统所采取的规则或组合规则不同,传统RAID技术可分类为:RAID0、RAID1、RAID1+0、RAID0+1、RAID2、RAID3、RAID4、RAID5、RAID6等。由于部分RAID技术的对比缺陷是非常明显的,因此在商用系统实现上,一般主要采用RAID0、RAID1、RAID1+0、RAID5、RAID6这五种技术。这几种RAID技术比较如表1所示。

图片1.jpg

  对于表1中的5种RAID技术,在商用存储系统中都有其应用场景。RAID0主要使用在Hadoop等需要大数据容量的大数据应用上。RAID1的数据安全性高,是大部分商用服务器的默认配置选项,在配置双硬盘的设备中一般都使用RAID1,比如华为、浪潮等服务器,而Teradata数据仓库等也使用RAID1技术则是出于其他方面的考虑。RAID1+0技术在HP服务器中能够找到。RAID5由于具有纠错能力且性能容量损失不大而被大多数传统的高中端存储磁盘机广泛使用,比如IBM、HDS、华为等的高端存储盘机,也有部分小型服务器会根据需要配置RAID5,例如浪潮的DAS。RAID6的最大亮点在于具有两块奇偶校验盘从而允许同一段时间盘组最多可以损坏两块硬盘,可靠性大大提高,因此主要使用在对数据安全性要求特别高的存储应用上,其中一个使用场景是早期主机带库虚拟磁带库系统,随着硬盘价格的下降,近期也有商家在高中端存储上采用RAID6;另一个应用场景是SSD磁盘组,这是因为SSD存在擦写寿命限制,且SSD的快速读写能弥补RAID6数据校验带来的性能下降,比如IBM DS8000系统磁盘机的SSD磁盘组默认为RAID6模式。
  
二、RAID新技术研究

  随着内存技术、处理器技术、虚拟化技术以及存储介质等快速发展和成熟,以及各部件生产成本的相对下降,近年已经有人开始研究新的RAID技术、以满足日益发展的存储使用需求。为了提升磁盘阵列的整体读写性能和容错能力,在主流RAID技术上又出现了一些新兴的RAID技术,比如小众的RAID7,尚在推广的RAID2.0+,以及固态硬盘(Solid State Drives,SSD)的RAID-SE技术等。

  1.RAID7技术

  RAID7磁盘阵列结构如图1所示。 RAID7技术的数据结构与其他阵列的结构有所不同,单个硬盘被分割成多个独立硬盘,各自有自己的读写通道,所有I/O传送均是同步进行的。拥有集成Cache的数据总线,使每个磁盘都有高速缓冲存储器。RAID7本身带有实时操作系统和管理工具,可自动对主机发送过来的读/写指令进行优化处理,将可能被读取的数据预先读入快速缓存中,从而减少磁头的转动次数。RAID7类似于一个独立的存储计算机,性能优越,适用于对性能有高速响应的应用,但RAID7最多只能扩展48块盘,整体的盘包容量介于小型服务器和存储盘机之间,内部Cahce还需要持续的供电技术保障数据安全不丢失。RAID7性能高,但容量中下而且价格高,对于使用者来说性价比较低,可能更适合追求性能的小型使用者,建议RAID7加强扩展盘数量,加大总容量,笔者认为50T~100T十分适用于小型市场。

图片2.jpg

  2、RAID2.0+技术
  
  RAID2.0+技术的底层数据结构为将单个硬盘划分成一个个小颗粒度的数据块,以数据块为单位来进行资源管理。数据块会组成存储池,数据块来构建RAID组,这样数据可均匀地分布到存储池的所有硬盘上。其具体架构原理如下。

  (1)底层块级虚拟化:将不同类型的盘加入到硬盘域中。存储系统将硬盘域中各存储层的硬盘都划分为64MB固定大小的块(Chunk)。用户在硬盘域中创建存储池,并指定存储池的每个存储层RAID策略和容量。存储系统根据用户指定的RAID策略和容量,从同一存储层中的硬盘上随机选取空闲的块,按照RAID算法组成块组(Chunk Group)。可以理解为每个Chunk Group就是一个小的RAID组。

  (2)上层虚拟化:存储系统将每个Chunk Group划分为固定大小(默认为4MB)的逻辑存储空间(Extent),Extent构成LUN。用户在存储池上创建LUN,系统从存储池内的Chunk Group上选取空闲的Extent来组成LUN。

  从RAID2.0+原理可以发现,RAID2.0+就是底层块级虚拟化,在底层就将硬盘进行了颗粒化,为后续中高端存储的上层虚拟化作基础。底层的块级虚拟化可以帮助均衡热点,一般热点盘的故障率较高,分散均衡热点可以减少硬盘故障率。块级虚拟化还能提升硬盘重构效率,例如在华为Oceanstor的NL-SAS高容量环境中重构1TB数据,使用传统RAID需要10小时,使用华为RAID2.0+则只需0.5小时。笔者认为RAID2.0+技术按照其特性十分适用于大型的中高端存储,能满足大容量存储需求,同时比RAID5/6有更好的性能。

  3.关于SSD的RAlD技术

  目前SSD已经逐渐开始替代机械硬盘(HDD),RAID技术也已经被使用在SSD上,最常见的是RAID0、RAID5、RAID6。RAID6为了将固态盘的性能进一步加速,往往追求极致的读写性能体验,而完全忽略了数据安全性,使用者是小众玩家,RAID5、RAID6则更多考虑保护数据安全性。已有研究表明RAID5技术在SSD阵列的校验信息不断更新以及写入循环增加后,会使得SSD过早磨损,也就是会减少SSD闪存芯片的擦写寿命,同样RAID6的双校验需求,也会减少SSD闪存的寿命。目前主要商用的SSD容量都是400G以上,其中的闪存芯片都是MLC,寿命是约3000~1000次擦写。目前西部数据HGST旗下Skyera公司不仅研发出了MLC寿命100000次擦写的SSD,而且设计出了一种RAID-SE算法,这是一个采用双奇偶校验数据保护的算法,针对SSD固态硬盘,能提供比RAID6更好的数据保护,并减少写入循环,极大提高了闪存介质的耐久性。
  
三、RAID新技术的商业应用实践

  1.RAlD技术在服务器上的使用

  目前中低端类服务器如HP/IBM P/浪潮/华为等主要使用RAIDO/1/I+O/5技术,通常以该应用所需的本地内置盘大小来确定RAID类型,对内置盘需求小的选择RAIDO/l/l+0,然后挂外置存储,对内置盘需求大的则优先选择RAID5。

  服务器RAID技术的实现需要依靠RAID卡。RAID卡就是用来实现RAID功能的板卡。不同的RAID卡支持的RAID功能不同。RAID卡硬件主要由IO处理器、IO控制器、主机总线接口、电池备份模块、缓存、Flash ROM等组成。RAID卡结构如图2所示,其中,IOP:IO处理器,提供RAID数据校验计算、输入输出处理等功能。IOC:IO控制器,提供总线通道,用来连接硬盘、存储设备。电池备份模块:提供意外掉电的数据保护。缓存:提供数据从IO处理器到硬盘之间的缓冲,提高整体性能。FLASH ROM:用来存放微码和BIOS。NVRAM:用于保存RAID配置信息。RAID卡工作流程:IO处理器通过执行闪存中的微码,控制IO控制器、缓存,来实现RAID卡功能。

图片3.jpg

  目前影响RAID卡性能的主要因素有条带大小、RAID卡缓存、读策略、写策略。
  
   (1)条带大小。根据应用需要选择适合的条带大小,条带大小与磁盘经常读写的数据块大小越接近,读写性能越高;在顺序读写应用中条带越大越好;在随机读写应用中条带小的性能较好。

  (2)RAID卡缓存是RAID卡电路板上的一块存储芯片,是低速硬盘与高速外部内存之间的缓冲器。预读和回写都会占用大量缓存容量。缓存的大小与速度是直接关系到RAID卡的实际传输速度的重要因素,大缓存能够大幅度地提高数据命中率,从而提高RAID卡整体性能。目前普遍使用的是512MB或者1024MB的RAID卡缓存。

  (3)读策略优选预读。预读是将请求的数据的后一个扇区数据也读取放入缓存中,方便顺序读取,如此可以提高RAID读性能。

  (4)写策略分为两种:通写Write_throu曲和回写write_back。回写是暂时将数据存在缓存中,推迟将数据写到硬盘,当硬盘空闲时再写到硬盘中,可以提高写效率。通写是将数据直接写入硬盘中。与采用通写相比,回写能提升15%~20%的性能。但是回写存在一定的风险,当突然断电时,会丢失缓存中尚未写入硬盘的数据,所以需要配RAID卡电池模块对缓存进行断电保护。

  对华为和浪潮两种服务器进行回写和通写测试比较结果见表2,可以看到,回写模式比通写模式的IO性能更优秀。所以从性能角度出发建议选择回写模式,但出于对数据安全性的考虑,建议在回写模式下配备电池模块以避免因为缓存掉电而导致数据丢失。但是RAID卡电池需要到期更换,服务器进行批量集中更换RAID卡电池对使用者而言同样有操作难度和风险。建议使用者考虑自身实际情况按需配备。

图片4.jpg

  此外,目前越来越多的应用不支持外置存储,对本地内置存储的要求越来越多。目前常用的RAID卡支捍8个硬盘,同样的RAID类型,RAID卡能支持的盘数越多,性能越好。当前已有华为支持23个硬盘,本趔内置盘总容量可达23×900GB。服务器能支持越来越爹的内置盘已经是一个趋势。
  
  2.RAID技术在磁盘机上的使用

  大型存储磁盘机未使用单独的RAID卡,而是通趔硬件微码来实现RAID技术。RAID5/6在磁盘机上的伎用已经十分普遍,一般对数据安全性要求更高的应用会部署在RAID6上,其余则部署在RAID5上。而SSD力面,HDS和华为都支持RAID5和RAID6,但IBM为砩保高安全性默认支持RAID6。

  当前数据中心开始使用华为的开放高端存储系列,故RAID2.0块虚拟化技术也开始被使用。RAID2.0技术的原理就是底层块虚拟化。目前有华为、HP 3PAR以及IBM XIV三种块虚拟化产品。HP的块单位是256MB或1GB;IBM块单位为1MB;华为块单位为64MB。目前华为的RAID2.0+技术可以使数据在存储池中硬盘上自动均衡分布,避免了硬盘的冷热不均,降低存储系统整体的故障率;增加LUN所跨硬盘数,大幅提升单LUN性能。

  为了不断地提升磁盘阵列数据读取性能、数据安全冗余、磁盘容量使用率这三个要素,RAID技术从RAID0一路发展到了当前的RAID2.0+。随着云计算、大数据等技术的迅速发展,未来可能会出现更新的RAID算法,通过不断提升RAID卡功能,改进RAID卡缓存模式,增加支持硬盘数等来解决各种存储问题。同时,也应该注意到,SSD固态盘技术的出现也可能会引发一场RAID技术革命,开发出新的SSD型RAID算法。
  
(文章来源:《中国金融电脑》杂志)

扫码即可手机
阅读转发此文

本文评论

相关文章