RAID2.0优势

一、定义

      RAID2.0技术将硬盘域中的硬盘空间切分成固定大小的物理空间-CK(Chunk64M),实现底层虚拟化,不同硬盘的多个CK组成存储池,相同类型的CK按照RAID策略组成(CKG),CKG将再次切分成更小粒度的逻辑空间Extent(大小512KB-64MB,默认4MB),Extent是存储池中申请空间、释放空间、数据统计和数据迁移的基本单位。再由这些逻辑空间Extent组成LUN(逻辑存储单元)。(Extent再划分为更小粒度的Gain,Thin LUN以Grain为单位映射到LUN),最终LUN映射给主机进行读写。

二、RAID2.0+与传统RAID优势

快速重构:由于热备空间也是按照Chunk分散在多个盘中,因此多个CKG的重构几乎是同时进行,避免了传统RAID发生故障时,写单个热备盘造成的性能瓶颈,大大减少了重构的时间。

硬盘负载均衡:LUN的数据被均匀的分布到阵列内所有的硬盘上,可以防止局部硬盘过热,提升可靠性,在参与业务读写过程中,阵列内硬盘参与度高,提升系统响应速度。

最大化硬盘资源利用率:性能上LUN基于资源池创建,不再受限于RAID组硬盘数量,LUN的随机读写性能可得到大大提升,容量上资源池中的硬盘数量不受RAID级别影响,免除传统RAID环境下有些RAID组空间利用率高有的低的状况,并借助智能精简配置,提升硬盘的容量利用率。

提升存储管理效率:基于RAID2.0技术,我们无需花费过多时间做存储预规划,只需简单讲硬盘组成存储池设置分层策略,从存储池划分LUN即可,后续扩容硬盘或者LUN时,系统会自动从存储池划分所需的空间并自动调整LUN数据分布,使得LUN数据更加均衡的到所有硬盘中。

三、块虚拟化过程

1. 存储系统所有硬盘划分为多个硬盘域,每个硬盘域可以由多块相同或不同类型的硬盘组成,硬盘域的硬盘类型决定了存储池可以创建的存储层级。一个硬盘域里可以创建多个存储池,存储池的数量由硬盘域的容量决定。

2. 存储系统将硬盘域中的存储介质划分为CHUNK。每个CHUNK大小是固定的,不能被修改。

3. 创建硬盘域时,存储系统会创建默认的“热备策略”。当硬盘出现故障时,存储系统会根据硬盘使用情况实时随机分配空闲的CHUNK作为热备空间使用。

4. 在硬盘域中的每个存储池中,最多可以创建三个存储层,每一个存储层由若干个相同类型的CKG组成。

– 高性能层是由SSD盘的CKG组成,性能最高,由于其存储介质成本较高且单盘容量小,适合存放访问频率很高的数据。

– 性能层是由SAS盘的CKG组成,性能较高,由于其存储介质成本适中且单盘容量较大,适合存放访问频率中等的数据。

– 容量层是由NL-SAS盘的CKG组成,性能最低,由于其存储介质成本最低且单盘容量大,适合存放大容量的数据以及访问频率较低的数据。

5. 每一个存储层的CHUNK按照用户在DeviceManager管理界面上设置的“RAID策略”组成CHUNK group,每个CHUNK group的CHUNK均来自于不同的硬盘。用户可以分别设置每一个存储层的“RAID策略”,包括RAID级别以及组成RAID级别的数据块和校验块的个数。

6. 存储系统按照用户在DeviceManager管理界面上设置的“数据迁移粒度”将CHUNK group划分为更小的extent,它是组成thick LUN的最小单位。不同存储池的extent大小可以不同,但同一存储池中的extent大小是统一的。

7. 若干extent组成了用户需要使用的LUN。在处理用户的读写请求以及进行数据迁移时,LUN向存储系统申请空间、释放空间和迁移数据都是以extent为单位进行的。用户在创建LUN时,可以指定容量从某一个存储层中获得,此时LUN由指定的某一个存储层上的extent组成。在用户的业务开始运行后,存储系统会根据用户设定的迁移策略,对访问频繁的数据以及较少被访问的数据在存储层之间进行迁移(此功能需要购买License)。此时,LUN上的数据就会以extent为单位分布到存储池的各个存储层上。

     在用户创建thin LUN时,存储系统还会在Extent的基础上再进行更细粒度的划分(Grain),并以Grain为单位映射到thin LUN,从而实现对存储的精细化管理。

四、Raid2.0技术FAQ

Q1:什么RAID 2.0+能够比传统RAID实现更快的重构?

在传统RAID技术环境中,硬盘发生故障后,系统会启动热备盘,根据RAID策略进行数据重构。当更换故障硬盘后,需要将热备盘中的数据拷贝到新的硬盘中。在此过程中,重构的速度完全取决于热备盘和更换的硬盘单盘的性能,因此,耗时非常长。   

但RAID 2.0+采用了底层虚拟化技术,存储池中的chunk按照RAID级别组成chunk group,因此当硬盘故障时,该硬盘上chunk所在的chunk group会进行重构,即参与重构的硬盘数量非常多。同时热备空间不是来自于一块硬盘,而是随机分配在硬盘域中。

因此,重构的速度不受限于单盘的性能,重构速度非常快,是传统RAID的20倍!

Q2:RAID 2.0+的RAID级别是怎么体现的?

RAID 2.0+的原理是将硬盘组成硬盘域,然后将硬盘划分为更小的单位—chunk,在创建存储池时,需要指定存储池中存储层的RAID策略,即是chunk按照RAID策略组成chunk group。

需要注意的是,硬盘域支持3种硬盘类型,因此,存储池也支持3个存储层,也就是说,一个存储池里面最多可能存在3种RAID策略(每个存储层一种)。

Q3:RAID 2.0+支持的RAID级别有最低盘数的限制么?为什么?

有。例如RAID 5(8D+1P)要求最低需要9块硬盘,这是因为按照RAID 5级别组成chunk group的chunk不能同时来自于同一块硬盘。也就是说组成RAID 5(8D+1P)需要9个chunk,这9个chunk必须来自于9块不同的硬盘。这是基于可靠性角度来考虑的,如果一个chunk group中有两个或两个以上的chunk来自于同一块硬盘,当这块硬盘故障时,将会导致该chunk group无法恢复(由该chunk group的RAID策略决定),从而导致数据丢失。

Q4:RAID 2.0+的热备空间来自于哪里?

RAID 2.0+的热备空间与传存储技术来源不一致,并不是来自于热备硬盘,而是来自于热备chunk(因为是chunk按照RAID级别组成的chunk group),热备chunk则随机分布于整个硬盘域的硬盘中,并不会集中于一块硬盘中。

Chunk group的成员chunk是不是必须是同一种类型的硬盘?能否支持RAID级别动态改变?

    Chunk group成员必须是同一种类型硬盘,不支持RAID级别的动态改变,即当一个存储池创建完成时,它所包含的存储层的RAID级别也就固定了,不能更改。

Q5:为什么RAID 2.0+需要extent,Chunk group和Chunk三层数据结果?不能只使用两层吗?

三层的作用各不相同。Extent是动态分层存储的基本单位;Chunk group是做Chunk的RAID级别数据保护;Chunk是做块虚拟化。 

Q6:为什么要区分extent和chunk,而不把chunk的颗粒度做得很小?

Chunk粒度过小会影响性能,所以不能太小。而extent是动态分级存储的基本单位,不能太大。

Q7:硬盘域的硬盘个数有限制吗?有没有建议值?

硬盘域是有最低盘数的限制的,取决于硬盘域中的存储池以及它的RAID级别、热备策略等;同时也有最高盘数限制,即不能超过规格支持。从可靠性、性能等角度考虑,建议硬盘域中每个层级(每个层级对应不同的硬盘类型)的硬盘数为48块。