目录
RAID 2.0逻辑图
RAID 2.0技术原理
硬盘域
Storage Pool & Tier
Disk Group
LD(逻辑磁盘)
CK(Chunk)
CKG(Chunk Group)
Extent
Grain
LUN
RAID 1.0技术存在的问题
在最初的RAID技术中,是将几块小容量廉价的磁盘组合成一个大的逻辑磁盘给大型机使用。后来硬盘的容量不断增大,组建RAID的初衷不再是构建一个大容量的磁盘,而是利用RAID技术实现数据的可靠性和安全性,以及提升存储性能,由于单个容量硬盘都已经较大了,数据硬盘组建的RAID容量更大,然后再把RAID划分成一个一个的LUN映射给服务器使用。
随着硬盘技术的发展,单块硬盘的容量已经达到数T,传统RAID技术在硬盘重构的过程中需要的时间越来越长,也增加了在重构过程中其它硬盘再坏掉对数据丢失造成的风险,为了解决这一问题,块虚拟化技术应运而生。
RAID 2.0+ 是华为的块虚拟化技术,该技术将物理空间和数据空间分散分布成分散的块,可以充分发挥系统的读写能力,方便扩展,也方便了空间的按需分配,数据的热度排布,迁移,它是华为所有Smart软件特性的实现基础。同时,由于热备空间也是分散在多个盘上的,因此硬盘数据的重构写几乎可以同时进行,避免了写单个热备盘造成的性能瓶颈,大大减少了重构时间。
华为RAID2.0+采用底层硬盘管理和上层资源管理两层虚拟化管理模式,在系统内部,每个硬盘空间被划分成一个个小粒度的数据块,基于数据块来构建RAID组,使得数据均匀地分布到存储池的所有硬盘上,同时,以数据块为单元来进行资源管理,大大提高了资源管理的效率。
OceanStor存储系统支持不同类型(SSD、SAS、NL-SAS)的硬盘,这些硬盘组成一个个的硬盘域(Disk Domain)。在一个硬盘域中,同种类型的硬盘构成一个存储层,每个存储层内部再按一定的规则划分为Disk Group;
各存储层的硬盘被划分为固定大小的Chunk(CK),其中,SSD层和SAS层的CK的大小为64MB,NL-SAS层的CK大小为256M。 OceanStor 存储系统通过随机算法,将每一个存储层的Chunk(CK)按照“RAID策略”来组成Chunk Group(CKG),用户可以为存储池(Storage Pool)中的每一个存储层分别设置“RAID策略”。
OceanStor存储系统会将Chunk Group(CKG)切分为更小的Extent。Extent作为数据迁移的最小粒度和构成Thick LUN的基本单位,在创建存储池(Storage Pool)时可以在“高级”选项中进行设置,默认4MB。对于Thin LUN或文件系统,会在Extent上再进行更细粒度的划分(Grain),并以Grain为单位映射到Thin LUN、文件系统。
若干Extent组成了卷(Volume),卷(Volume)对外体现为主机访问的LUN。在处理用户的读写请求以及进行数据迁移时,LUN向存储系统申请空间、释放空间、迁移数据都是以Extent为单位进行的。例如:用户在创建LUN时,可以指定容量从某一个存储层中获得,此时LUN由指定的某一个存储层上的Extent组成。在用户的业务开始运行后,存储系统会根据用户设定的迁移策略,对访问频繁的数据以及较少被访问的数据在存储层之间进行迁移。此时,LUN上的数据就会以Extent为单位分布到存储池的各个存储层上。
在用户创建Thin LUN或文件系统时,OceanStor存储系统还会在Extent的基础上再进行更细粒度的划分(Grain),并以Grain为单位映射到Thin LUN或文件系统,从而实现对存储容量的精细化管理。
Disk Domain即硬盘域,是一堆硬盘的组合(可以是整个系统所有硬盘)这些硬盘整合并预留热备容量后统一向存储池提供存储资源。
在传统的RAID的技术中,第一步是创建RAID组,但是对硬盘本身就有要求,RAID组中要求磁盘的类型、转速、容量需要一致,并且一个RAID组中的硬盘不能超过12个。
在RAID 2.0中,创建的是一个硬盘域,一个硬盘域有多个硬盘,数量可以有很多,而且可以包含不同类型;每种不同类型的硬盘可以分配到不同的存储层级,比如SSD盘对应分配到高性能层,SAS盘分配到性能层,NL-SAS盘分配到容量层。在创建硬盘域时,RAID级别尚未指定,即数据的冗余保护方式还未指定。
Storage Pool即存储池,是存放存储空间资源的容器,所有应用服务器使用的存储空间都来自于存储池。 Tier即存储层级,存储池中性能类似的存储介质集合,用于管理不同性能的存储介质,以便为不同性能要求的应用提供不同存储空间。
存储层级 |
层级名称 |
支持硬盘类型 |
应用 |
Tier0 |
高性能层 |
SSD |
性能和价格较高,适合存放访问频率很高的数据 |
Tier1 |
性能层 |
SAS |
性能较高,价格适中,适合存放访问频率中等的数据 |
Tier2 |
容量层 |
NL-SAS |
性能较低,价格最低且单盘容量大,适合存放大容量的数据以及访问频率较低的数据 |
一个存储池基于指定的一个硬盘域创建,可以从该硬盘域上动态的分配Chunk(CK)资源,并按照每个存储层级(Tier)的“RAID策略”组成Chunk Group(CKG)向应用提供具有RAID保护的存储资源。 存储池根据硬盘类型可划分为多个Tier。
创建存储池可以指定该存储池从硬盘域上划分的存储层级(Tier)类型以及该类型的“RAID策略”和“容量”。 容量层由大容量的SATA、NL-SAS盘组成,RAID策略建议使用双重校验方式的RAID6。
Disk Group (DG)即硬盘组,由硬盘域内相同类型的多个硬盘组成的集合,硬盘类型包括SSD、SAS和NL-SAS三种。
Logical Drive (LD)即逻辑磁盘,是被存储系统所管理的硬盘,和物理硬盘一一对应。
Chunk简称CK,是存储池内的硬盘空间切分成若干固定大小的物理空间,是组成RAID的基本单位。块大小是系统在切分物理空间的时候固定的大小,不能进行更改。
Chunk Group简称CKG,是由来自于同一个DG内不同硬盘的CK按照RAID算法组成的逻辑存储单元,是存储池从硬盘域上分配资源的最小单位。
一个CKG中的CK均来自于同一个DG中的硬盘,CKG具有RAID属性(RAID属性实际配置在Tier上),CK和CKG均属于系统内部对象,由存储系统自动完成配置,对外不体现。
Extent是在CKG基础上划分的固定大小的逻辑存储空间,大小可调,是热点数据统计和迁移的最小单元(数据迁移粒度),也是存储池中申请空间、释放空间的最小单位。
一个Extent归属于一个Volume或一个LUN,Extent大小在创建存储池时可以进行设置,创建之后不可更改,不同存储池的Extent大小可以不同,但同一存储池中的Extent大小是统一的。
在Thin LUN模式下,Extent按照固定大小被进一步划分为更细粒度的块,这些块称之为Grain。Thin LUN以Grain为粒度进行空间分配,Grain内的LBA是连续的。
Thin LUN以Grain为单位映射到LUN,对于Thick LUN,没有该对象。
Volume即卷,是存储系统内部管理对象。 LUN是可以直接映射给主机读写的存储单元,是Volume对象的对外体现。
一个Volume对象用于组织同一个LUN的所有Extent、Grain逻辑存储单元,可动态申请释放Extent来增加或者减少Volume实际占用的空间。