【大V开讲】RAID 2.0+相关概念及原理
什么是RAID 2.0+? 随着各行业数字化进程的推进,数据逐渐成为企业单位的运营核心,而企业级存储是一个复杂的系统,数量最多且最脆弱的组件就是硬盘。在传统RAID技术环境中,存储系统一般会有多个RAID组,每个RAID组中包含多块硬盘。由于每个RAID组的业务繁忙程度不同,导致硬盘的工作负载不均衡,热点盘的故障率会增高。甚至可能会出现多个硬盘故障,造成存储系统性能下降、业务中断。传统RAID组的重构,应用系统整体性能下降,漫长重构时间、数据丢失风险剧增。在传统RAID技术环境中,硬盘发生故障后,系统会启动热备盘,根据RAID策略进行数据重构。当更换故障硬盘后,需要将热备盘中的数据拷贝到新的硬盘中;此过程需要较长的时间,导致坏盘数据恢复速度慢。以7.2K RPM 4TB硬盘为例,在传统的RAID 5(8D+1P)中,其重构时间在40个小时左右,可靠性风险很大。 在这种大背景下,华为公司在传统RAID技术的基础上创新开发出了RAID 2.0+的新技术,它可以克服传统RAID的缺点,使存储系统实现:负载均衡、性能提升、以及快速的数据恢复。 l 数据在存储池中硬盘上的自动均衡分布,避免了硬盘的冷热不均,从而降低了存储系统整体的故障率。 l 数据在存储池中硬盘上的自动均衡分布,更多的硬盘参与了读写请求,从而大大提高系统整体的读写速度。 l 在硬盘出现故障的情况,存储池内所有来源硬盘参与重构,从而实现快速重构,RAID 2.0+的重构速度是传统RAID的20倍! 你需要了解的RAID 2.0+主要概念: 硬盘域:由存储阵列中多个硬盘组成,硬盘可选择SSD(高性能层)、SAS(性能层)或者NL-SAS(容量层)中的一种或者多种。 Chunk(CK):硬盘空间会被划分成若干小块的物理空间;CK的大小为64M。 存储池:由来自一种或者多种存储介质上的多个CKG组成。 Chunk Group(CKG):在存储池中,CK按照RAID策略组合成CKG。 Extent:存储池空间会被切分一定大小的逻辑空间--Extent;Extent是存储池中申请空间、释放空间和迁移数据的最小单位。Extent大小为512K~64M,默认值4M。 LUN:由存储池中的多个Extent组成,LUN可以由不同存储介质中的Extent组成,因而可以调动多个硬盘同时读写数据,响应速度快、效率高,也就是实现性能提升。 RAID 2.0+的实现原理如下图所示。
为什么RAID 2.0+能够比传统RAID实现更快的重构? 在传统RAID技术环境中,硬盘发生故障后,系统会启动热备盘,根据RAID策略进行数据重构。当更换故障硬盘后,需要将热备盘中的数据拷贝到新的硬盘中。在此过程中,重构的速度完全取决于热备盘和更换的硬盘单盘的性能,因此,耗时非常长。 但RAID 2.0+采用了底层虚拟化技术,存储池中的chunk按照RAID级别组成chunk group,因此当硬盘故障时,该硬盘上chunk所在的chunk group会进行重构,即参与重构的硬盘数量非常多。同时热备空间不是来自于一块硬盘,而是随机分配在硬盘域中。如下图所示: 因此,重构的速度不受限于单盘的性能,重构速度非常快,是传统RAID的20倍! RAID 2.0+的RAID级别是怎么体现的? RAID 2.0+的原理是将硬盘组成硬盘域,然后将硬盘划分为更小的单位?chunk,在创建存储池时,需要指定存储池中存储层的RAID策略,即是chunk按照RAID策略组成chunk group。 需要注意的是,硬盘域支持3种硬盘类型,因此,存储池也支持3个存储层,也就是说,一个存储池里面最多可能存在3种RAID策略(每个存储层一种)。 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策略决定),从而导致数据丢失。 RAID 2.0+的热备空间来自于哪里? RAID 2.0+的热备空间与传统存储技术来源不一致,并不是来自于热备硬盘,而是来自于热备chunk(因为是chunk按照RAID级别组成的chunk group),热备chunk则随机分布于整个硬盘域的硬盘中,并不会集中于一块硬盘中。 热备空间的大小由热备策略决定,关于热备策略和热备空间大小的关系,请参见《OceanStor V3系列 存储系统 基础存储业务指南 》。 Chunk group的成员chunk是不是必须是同一种类型的硬盘?能否支持RAID级别动态改变? Chunk group成员必须是同一种类型硬盘,不支持RAID级别的动态改变,即当一个存储池创建完成时,它所包含的存储层的RAID级别也就固定了,不能更改。 为什么RAID 2.0+需要extent,Chunk group和Chunk三层数据结果?不能只使用两层吗? 三层的作用各不相同。Extent是动态分层存储的基本单位;Chunk group是做Chunk的RAID级别数据保护;Chunk是做块虚拟化。 为什么要区分extent和chunk,而不把chunk的颗粒度做得很小? Chunk粒度过小会影响性能,所以不能太小。而extent是动态分级存储的基本单位,不能太大。 硬盘域的硬盘个数有限制吗?有没有建议值? 硬盘域是有最低盘数的限制的,取决于硬盘域中的存储池以及它的RAID级别、热备策略等;同时也有最高盘数限制,即不能超过规格支持。从可靠性、性能等角度考虑,建议硬盘域中每个层级(每个层级对应不同的硬盘类型)的硬盘数为48块。
99%的用户都查阅了《RAID 2.0+技术多媒体》了解该特性的实现原理。 如想进一步了解RAID 2.0+的相关原理和相关配置操作请参见《OceanStor V3系列存储系统 基础存储业务指南 》。 |
本帖被以下专题推荐:
- · 大V开讲|