《信息存储》:服务器中的RAID产品特性介绍

    RAID,Redundant Array of Inexpensive Disks的缩写,中文简称为廉价磁盘冗余阵列。自从RAID这个概念提出后,RAID技术越来越多的广泛应用于芯片、控制卡、主板、磁盘阵列等诸多产品中。


   按照大的种类来分,有软RAID(HostRAID)以及硬件RAID两种。软RAID没有专门的IOP运算芯片,一般是利用主机的CPU进行“兼职”校验,所以性能一般都比较低,而且附带的软件“虚拟”功能也比较少,应该算是最简单的RAID。软RAID的表现形式又可分为两种,一种是纯粹的基于上层软件的RAID,如Windows/Linux/Veritas Volume manager等中具备的RAID功能;另一种是接口芯片上板载的RAID,如Ultra320 SCSI、SAS接口芯片所具有的RAID功能。


    硬件RAID最大的特征是具有专门的用于IOP运算的芯片,所以会有比较高的性能,而且一般也会附带一些高级的“虚拟”功能。我们也可以把硬RAID分为两种,一种被广泛的应用到外部磁盘阵列中;另一种是在服务器中的RAID,例如ROMB(RAID On Motherboard)、RAID卡等,这些产品使用Intel的IOP芯片或者具有RISC运算的ROC(RAID on Chip)芯片。本文的重点在于介绍服务器中RAID技术的特性。


    一、 服务器中的RAID产品介绍


    服务器中的RAID技术被广泛应用是从RAID卡开始的,早期的RAID卡基于PCI总线(64bit/33MHz or 66MHz),提供Ultra160的SCSI通道。当时提供类似产品的厂家有DPT、Mylex、AMI,但随着时间的流逝,这些厂家已经被全部并购。随着新的总线、接口技术的出现,之后的RAID卡开始支持PCI-X总线(64bit/66MHz, 64bit/100MHz,64bit/133MHz)、PCI-E总线(X1、X4、X8等等),也开始支持Ultra320 SCSI、SATA1、SAS、SATA2等接口。


    RAID卡最大的两大功能是提供RAID运算,以及提供数据通道,所以在一般的RAID卡上都会有两个大的核心芯片,一个是基于Intel或IBM PowerPC的IOP芯片,另一个是提供SCSI/SATA/SAS的I/O控制器芯片。当然,最新的ROC(RAID on Chip)技术已经可以把这两大功能集成到一个单芯片中,以降低成本,并有利于小尺寸设计。另外,还有一种特殊的被称为ZCR(Zero Channel RAID)的卡,上面只有一个IOP芯片,它是通过和主板上板载的SCSI/SATA/SAS等接口控制器配合来实现两大功能的。


    对于SCSI来说,属于并行通道技术,所以有零通道、单通道、双通道甚至四通道的RAID卡,每个通道支持15个有效地址。对于SATA来说,属于点对点串行通道技术,所以有双端口、四端口、八端口甚至更多端口的RAID卡。对于SAS来说,也属于点对点串行技术,并且引入了交换、虚拟端口等概念,一般有X4(即4个PHY组成的一个宽Port)、2X4(即有两个宽Port)宽端口的RAID卡。


    RAID卡需要占用主机的PCI插槽,而且成本相对比较高,随着计算机集成度越来越高,ROMB(Raid on Motherboard)技术出现了,这种技术把RAID卡的RAID校验运算、数据通道两大功能集成到主板上,从而进一步降低了成本。


    上面提到的不管是RAID卡,还是ROMB,都属于硬件RAID,只是硬件上的表现形式不一样,而在软件方面是统一的。RAID产品的软件分为两个部分,一个是底层的用于和主机启动交互的BIOS以及功能软体Firmware;另一个是上层的基于OS的管理软件,一般都具有图形化和命令行的管理软件。举个例子,Adaptec公司的SCSI、SATA、SAS RAID卡以及ROMB产品具有统一的Firmware版本,统一的RAID功能,而且可以通过统一的图形化管理软件进行集中管理。


    二、 服务器中的RAID产品业界标准功能特性介绍


    上面提到了,服务器中的RAID产品软件功能是统一的,而软件功能又决定了产品的特性。目前已经有很多厂家参与到RAID产品的市场中,而这些厂家的产品也具有一些业界“标准”的功能特性。下面逐一进行简单介绍。


   1. RAID0,1,10,5,50


    最初的RAID定义包括了RAID0到RAID5,但经过客户实际需求的洗礼,目前在服务器中使用的RAID级别一般都是RAID0、1、5,以及复合RAID 10、50。大家对这些标准的RAID级别应该非常熟悉了,就不多介绍了。


    2. 在线RAID优化调整


    现在的业务要求很少的宕机时间,所以标准的RAID卡也都具有了一些在线RAID调整功能,从而不需要重启系统就可以完成某些任务。
    - 在线扩容:例如在原来RAID5基础上增加一个或者几个盘的容量。
    - 在线RAID级别转换: 根据客户应用的变化,进行RAID级别的转换,例如从RAID10到RAID5,从而实现可用容量、冗余度、安全性的调整。
    - 在线条带大小调整:根据客户应用对性能要求的变化,对RAID的条带大小(Stripe Size)进行在线调整。


    3.可配置的热备份盘(Hot Spares)


    热备份技术用于对一些RAID级别进行保护,如RAID1/5等,当RAID组中的一个磁盘损坏后,热备份盘就会自动顶替损坏磁盘,在进行Rebuild(重构)后,之前的RAID组又重新恢复完整性。


    热备份盘可以配置成Global全局的,每个RAID中的损坏磁盘都可以顶替;也可以配置成Dedicated专职的,只对某个RAID中的损坏磁盘进行顶替;还可以划分Pool池,从而在多个热备份盘的配置下可以有效管理。


    4. 热插拔磁盘以及自动重构


    上面提到,现在的业务要求更多的在线操作,所以能够支持在线插拔磁盘是非常重要的。另外,在更换完磁盘后,能够自动的进行Rebuild(重构)也是非常关键的。


    5. 灵活的初始化(Initialization)方式


    根据客户的需求,在做RAID的时候可以选择多种灵活的初始化(Initialization)方式,如前台Clear初始化,对所包含磁盘写0,初始化之后RAID组才可见;后台初始化,对所包含磁盘进行奇偶校验运算,边初始化边可用;立即生效初始化,只对磁盘的Metadata RAID信息区写操作,对数据区不进行任何操作。


    6. 多个物理磁盘上可以创建多个虚拟RAID


    之前的RAID成员都是以物理磁盘为单位的,比如3个36GB的磁盘做一个RAID5,这个RAID就包括了3块磁盘的所有容量。但现在的RAID技术都添加了“虚拟”功能,在多个物理磁盘上可以创建多个RAID,例如3个72GB的磁盘,可以创建2个RAID5,每个RAID5都是3个36GB的磁盘空间组成的。


    三、 服务器中的RAID产品高级特性介绍


    随着RAID技术的发展,目前市场上也出现了一些更高级的RAID技术,例如一些新RAID级别、更高级的“虚拟”功能以及从外部存储中引入的一些概念等。下面就对这些新的技术、概念分别进行介绍。


    1. 更优化的磁盘利用率


    随着硬盘的技术的发展,单个硬盘的容量逐渐变大,但客户的原有系统不可能随着新的技术出现而淘汰,这样就产生了老系统与新设备的融合问题。例如之前使用的RAID5是5块36GB硬盘组成的,随着业务的发展,RAID5需要在线扩容,由于36GB的盘已经停产,客户只能购买72GB的磁盘,那么对于每个扩容上去的72GB磁盘,只能有效利用36GB的空间,从而浪费掉了50%容量。


    新的更优化的磁盘利用率功能,采用更为“虚拟”的技术,可以有效地利用大容量硬盘剩下的空间。例如左图所示,2个36GB的磁盘和2个72GB的磁盘可以做成一个Array1(4×36GB),那两个72GB的剩余的2×36GB空间可以做成另外一个Array2,从而利用上了所有的硬盘空间。当然,从性能上考虑,可以把Array1做成RAID5,用于大I/O要求的生产系统数据存取;把Array2做成RAID0,用于很少I/O要求的临时数据存放。


    2. Copyback热备份


    Copyback热备份功能是一个非常简单的概念,但却是比较有用的一个功能。我们还是回顾一下传统的RAID5+热备份盘的情况吧,参照图一,3个磁盘做成一个RAID5,另外有一个热备份盘。当Disk3磁盘坏掉之后,热备份盘会自动顶替Disk3,再Rebuild之后恢复为完整的RAID5。之后拔下Disk3,换上新的盘,但其实热备份盘已经变成了”Disk3”,需要手工把新换上的新盘设置为热备份盘,从而热备份盘的位置发生了改变。


    Copyback热备份的功能在于自动“回拷”,见图二,在新的Disk3插入之后,热备份盘上的数据会自动拷贝到新的Disk3上,之后自动还原成热备份盘,从而保证了热备份盘的固定位置。对于系统管理员来说,总是希望把热备份盘定义为固定槽位以便于管理,Copyback热备份功能就可以帮助管理员实现这个愿望,无论多少次换盘,热备份盘的位置永远是固定的。


    当然,并不是所有的管理员都认为越自动化越好。比如在Copyback功能激活后,插入新盘的情况下会自动“回拷”,由于性能会受到一定的影响,所以一般需要在系统I/O比较少的时候进行。管理员可以根据自身的需要,“Enable”或者“Disable”此功能。


    3. RAID1E


    RAID1是指两块硬盘做Mirror,完全的镜像,两块硬盘不进行条带化,而只是写入同样的数据,RAID1技术只适应于两块磁盘。能否在奇数数量盘上也实现镜像?RAID1E可以实现这样的功能,和RAID1不一样,RAID1E是一种虚拟的镜像,不是基于单个物理盘,而是基于盘上的条带化数据。如下图所示,在3块磁盘的情况下,数据被条带化为A,B,C,D……..,在第一个条带组中分别写入A,B,C,在第二个条带组中写入C,A,B,以此类推。这样对于每个条带化的数据A,B,C,D……,都会在不同的盘上存放两份,实现了基于数据块的镜像。


    当然,根据RAID1E的工作原理,在多个偶数盘上,比如4/6/8等也可以实现RAID1E,但一般不建议这么做,而是建议做RAID10,因为在这些情况下,RAID10的容错概率要比RAID1E高。


    4. RAID5EE


    RAID5EE是一个比较实用的技术。让我们回顾一下传统的RAID5+HotSpare盘的情况,正常的I/O读写都是在RAID5上进行的,只有在RAID5中的一块磁盘损坏的情况下,HotSpare磁盘才进行顶替,换句话说,如果RAID5中的磁盘都能正常工作的话,HotSpare磁盘是空闲、不需要转动的,这是一种被动的热备份方式,因为热备份磁盘的带宽并没有被有效利用。


    有没有一种解决办法呢?RAID5EE提供了一个完善的替代“RAID5+HotSpare”盘的解决办法。如下图所示,原来的一块单独HotSpare热备份盘也进行Stripe条带化,并且平均分配到了5块磁盘中。这样,在RAID5EE读写的时候,5块磁盘同时参与I/O,相比于4块磁盘+HotSpare盘的情况,多了一个磁盘的读写带宽,提高了性能。特别是在整体磁盘数量比较少,如4/5/6等的情况下,性能的提高尤为明显。


    RAID5EE相比于RAID5性能提高,那对于可靠性和容量利用率有什么影响呢?对于RAID5EE来讲,一块硬盘损坏,就会自动重构成一个RAID5,另外一个硬盘再损坏,就会变成Degraded状态的RAID5,这和RAID5+HotSpare的容错能力是一样的,也就是可靠性一样;对于RAID5EE来讲,损失的容量为2块物理磁盘,而对于RAID5+HotSpare来讲,损失的容量也为2块物理磁盘,所以容量利用率也一致。


    值得注意的一点,RAID5EE中包括的HotSpare盘是分布在每个磁盘中的,只能供RAID5EE本身来使用,不能做另外RAID5的热备。也就是说,如果客户有两个或者更多个RAID5,一个HotSpare盘需要为所有RAID5服务的话,客户不要使用RAID5EE,因为RAID5EE只适用于替代一个RAID5+HotSpare盘的情况。


    5. RAID6


    RAID6是在RAID5的基础上,可以允许2块磁盘的同时损坏,属于更高级的一种容错技术。目前各个厂家的产品都相继推出了RAID6,但使用的RAID6不尽相同,如采用Intel P+Q编码、RAID-DP编码、PARK编码等等。


    由于RAID6能够支持2块磁盘的同时损坏,所以更适合应用于MTBF相对低的SATA磁盘。但由于RAID6的算法相对比较复杂,所以写性能,特别是在损坏一块盘、两块盘情况下的性能会比较差,客户需要根据自己的实际应用综合评定选择,千万不能拣了芝麻而丢了西瓜。


    下图就是一种形式的RAID6。大家可以看到,对于数据区从0到11来说,都有两个不同的校验区,如1,有绿色P和黄色P两个校验区。这样,无论同时损坏哪两块硬盘,都可以从另外的硬盘中恢复出所有的数据。


    6. Snapshot快照


    提起Snapshot快照,很多人都会以为我在谈外部存储。的确,对于外部存储来讲,Snapshot已经成为了一个标准的功能,无论对于高端磁盘阵列,还是中低端磁盘阵列,一般都具有这种功能。但是随着服务器内部RAID技术的发展,有的厂家,比如Adaptec,也把Snapshot快照功能融入进来。


    Snapshot的核心在于对逻辑卷进行指定时间点的快照,从而生成一个虚拟的快照卷,从而进行数据备份、克隆等等。对于Adaptec的Snapshot而言,有两种实现方式。


    一是Snapshot Backup。在这种模式下,会把源逻辑盘上指定时间点的数据完全复制到目标快照卷中,从而客户可以对Snapshot快照卷进行操作,也可以实现复制多个一样的系统。需要指出的是,和普通的Copy不同,Snapshot是指定时间点的拷贝,所以Snapshot卷上的数据在指定时间点上是一致性的,可以适用于数据库等应用环境。


    另外一种是Snapshot Nobackup。这种模式更类似外部存储中使用的Snapshot技术。它对于源逻辑卷创建指定时间点的临时“Copy”,生成了Snapshot卷,从而用于磁带备份或者数据参考。这种模式并不拷贝所有的数据,而仅仅是采用Copy-on-Write的机制拷贝写入的即将变化的数据,所以相对于第一种方式而言,需要更少的I/O,对系统的性能影响也比较小。客户可以根据自身的需求来选择相应的Snapshot方式。


    总结


    以上是目前服务器中的RAID特性介绍,大家可以明显的感觉到服务器中的RAID产品软件功能越来越多样化。其实,这都是底层的Firmware中具有的功能,对于上层的图形化GUI管理软件而言,功能也越来越复杂,但管理上却越来越简单化。另外,一些外部存储中具有的高级功能正慢慢转移到了服务器中,为以后外部存储和内部存储的无缝结合提供了基础。
  (本文作者现就职于Adaptec公司)