存储 频道

存储那点事:关于RAID保护

  存储器底层虚拟化下的RAID保护技术

  前文我们讲的主要是传统的RAID保护的概念,传统的RAID保护基本上是以单个磁盘为单位做数据保护,比如说6块磁盘做RAID 5的保护(5+1,一块校验磁盘,5块数据磁盘,磁盘空间利用率为83.33%);或者说3块磁盘做RAID 1+0镜像保护(磁盘空间利用率50%);或者说3块磁盘做RAID 0条带化,数据完全打散在三块磁盘中,磁盘空间利用率为100%,但是没有办法在这一层提供数据保护功能,参考下图图示:

 存储器底层虚拟化下的RAID保护技术

  我们前文讲过,传统RAID基于磁盘为最小分配单位带来一个问题就是可能存在性能瓶颈(整个lun受制于RAID组里面有多少块磁盘)。而存储器底层虚拟化则不一样,他通过把底层磁盘作为统一的资源池,解决了潜在的性能瓶颈问题。

 存储器底层虚拟化下的RAID保护技术

  这样做到好处在于

  l 从根本上消除瓶颈问题,提高吞吐量

  l 读写IO工作量被平均地分布到每个disk group的所有磁盘上

  l 真正地允许混用不同容量、不同转速的磁盘(作为一个统一的存储池)

  l 避免对应用程序和数据库复杂的分析调优过程

  下图是一个典型的图示,当磁盘组内磁盘从5块扩张到10块时的数据重构打散过程:在五块磁盘中做RAID,和传统的RAID 5实现形式很类似:

 存储器底层虚拟化下的RAID保护技术

  当在磁盘组中插入更多的磁盘后,底层存储虚拟化的技术将把原先分布在5块盘上的数据都打散到10块磁盘上,每块磁盘上实际数据占用减少一半,同时整个磁盘组从5块磁盘扩展到10块磁盘,性能提高一倍,原有的RAID 5保护机制也没有改变。

  下图演示加入5块盘以后的,采用存储虚拟化技术的存储器RAID保护机制的运行示意图(仍然是RAID 5的保护模式):

 存储器底层虚拟化下的RAID保护技术

  1、基于一对存储控制器的完全虚拟化+RAID技术保护

  存储器底层虚拟化技术可以提高性能,但是如何把最新的存储虚拟化技术和传统的RAID数据保护结合起来呢?

  第一种是采用完全虚拟化的存储器的RAID保护机制

 存储器底层虚拟化下的RAID保护技术

  可以看到,完全底层虚拟化的技术环境下,数据保护的基本单位不是磁盘,而是每一个可以分配的最小磁盘条块,比如在disk 1上,同时存在5种不同的数据类型(数据4的parity条块,数据3的parity条块,数据1和数据2的mirror条块,还有一个Data 1条块)。一个磁盘上能够有不同RAID保护数据的存在,其核心原因在于此时存储器根本没有单个磁盘的概念,而是把每个磁盘的空间细分成很多最小分配单位磁盘块,然后把这些磁盘块集合起来当作一个大的存储池来统一管理和做RAID保护(当然在做RAID保护的时候也要遵循一定的原则,比如做RAID 1+0镜像保护时,数据必然是写到两块磁盘的最小分配单元磁盘块里面,不能写进同一块磁盘里面)。

  下图演示了当一块磁盘出现问题时,如何通过底层虚拟化重构来实现数据保护,其重构基本原理仍然符合RAID保护的算法。

 存储器底层虚拟化下的RAID保护技术

  前文中提到的不少基于scale out架构的存储器,多采用此类完全虚拟化的技术进行数据保护,通过这种方法把底层的存储资源当作一个存储池统一分配管理,做到磁盘热点的消除。代表产品有HP公司的EVA系列存储器。

  2、基于一对存储控制器的半虚拟化+RAID技术保护

  所谓半虚拟化的存储器,即上一节中笔者提到的很多“历史悠久”的存储器所采用的底层打散技术。由于历史原因,这些存储器底层RAID技术还是基于磁盘为最小单位分配做RAID保护,只是在做完RAID保护以后在存储器映射给主机之前再做一次虚拟化打散(相当于存储控制器内部做一个LVM)。在这种情况下存储器的RAID保护机制仍然采用传统的RAID保护思路。

  大多数双控制的存储器和“Scale up”架构的存储器都是采用经典的基于磁盘的RAID保护技术,并且与时俱进地在lun一层再次做虚拟化,此为半虚拟化+RAID保护技术。代表产品有EMC公司的Clarion系列存储器(通过Meta lun技术上层做一次虚拟),日立公司的存储器(在LDEV层上通过HDP技术做一次虚拟打散)等。

  3、基于Scale Out架构多对存储控制的存储虚拟化技术

  以上谈到的都是基于一对控制器情况下底层虚拟化后的RAID保护思路,而随着云计算环境的发展,基于Scale Out架构的多存储器控制器技术的存储阵列慢慢走向舞台(参考笔者上一个章节文章),这种基于动车组概念设计的存储器有一个重要的特点是每次扩容不仅仅是扩展磁盘容量,而且同时扩展存储控制器的能力(每一个磁盘柜都自带存储控制器)。因此底层打散虚拟化技术面临新的挑战,能够跨多个控制器对实现底层虚拟化兼RAID保护,其中代表产品就是Dell公司的EqualLogic系列存储器。

 存储器底层虚拟化下的RAID保护技术

  主要实现方法如下,上图中是当只配置有一个Dell 公司EqualLogic PS系列存储柜(此时已经包含了一对存储控制器)时数据打散的情况。可以看到初始配置的环境下数据是完全打散在该磁盘柜的所有磁盘中(和传统的基于一对存储控制器底层打散的思路一致),而随着该磁盘柜的扩容,也就带来了更多的存储控制器,EqualLogic存储器的一大优势就表现出来,数据能够跨多个存储控制器间实现自动数据底层打散和RAID保护,具体实现方法参考下图:

 存储器底层虚拟化下的RAID保护技术

  这样做的一个好处在于底层打散和虚拟化技术将脱离一对存储控制器的束缚,而能够充分使用多对存储控制器的能力,真正的实现云存储架构的威力。

  当然能够实现这个功能的另外一个技术基础是在于Dell Equallogic系列存储器的体系架构。该存储器的设计思想是把整个存储器资源池分成三个层次,逻辑层、虚拟化层和物理层。通过一个逻辑层(IP地址)对于主机完全屏蔽了多个控制器的复杂性,数据到底在哪个存储控制器所在的磁盘柜里,对于主机来讲是完全透明的。多个存储控制器端口(采用iSCSI协议,TCP/IP端口)绑在一起形成了一个虚拟的IP地址,主机只要访问一个IP地址(逻辑层),就可以访问所有的存储柜资源,而物理层的数据通过虚拟化层(控制器的软件功能实现)自动实现了RAID保护(RAID 1/0、RAID 5、RAID 6)和底层虚拟化数据打散。

  以下Dell QqualLogic PS系列控制器的体系架构图,供参考

 存储器底层虚拟化下的RAID保护技术

  由此也可见iscsi或FcoE的确为云计算环境的一个理想的网络架构,而FC的市场增长率令人担忧....

  4、其他创新型RAID保护技术

  IT技术发展日新月异,可以说各种RAID保护思想层出不穷,笔者在这里稍微介绍几种思路。

  一种思路是通过纵横交叉进行RAID保护计算的方法来减轻存储控制器关于RAID计算的负载,这种算法能够提供类似于RAID 6的高可靠性,但CPU消耗更低效率更高,有些新兴存储厂商的产品采用了此种创新型RAID 6计算思路;

  另外一种干脆不在底层做RAID保护,取而代之地是通过在主机文件系统层把数据在不同的地点的另外一个服务器上复制一份(甚至更多份)来实现文件的冗余保护,这样做的另外一个好处是通过网络的仲裁机制,两个内容相同的文件可以交替提供存储服务给服务器,从而提高访问性能,这种思路多用于公有云环境中,由于数据量太大,网络运营商无法支付起磁盘阵列的价格,干脆通过在裸盘上写多次来实现数据冗余保护。

  还有一种是进一步细化RAID写入条带的block size的思路:IBM XIV系列的产品采用了以1MB为粒度的单元将数据写入到各个存储模块中,通过内部通过智能算法,实现数据在各模块的均衡分布。XIV希望通过打散写入的方式来提高性能(多个磁盘并发相应主机端的IO请求),据IBM称这种特殊的打散的方式也可以加快数据的恢复速度。3Par也是采用了类似的思路进行数据保护。

  具体细节参考下图:

 存储器底层虚拟化下的RAID保护技术

0
相关文章