自动精简配置的方法及装置与流程

文档序号:11406699阅读:659来源:国知局
自动精简配置的方法及装置与流程

本申请涉及数据存储技术领域,尤其涉及一种自动精简配置的方法及装置。



背景技术:

自动精简配置技术是一种新的存储空间配置管理技术,该技术通过将所有的存储空间汇集到一个存储池,并将存储池中的存储空间划分成相同大小的数据块,最终,按需分配给上层应用的是存储池中的数据块。使用自动精简配置技术的存储系统,通常采用写时分配技术将数据写入数据块中。

在相关技术中,存储系统的写时分配技术采用二级分配粒度方式分配数据块,即在存储设备接收到上层应用针对某一逻辑卷的写请求时,遍历查询该逻辑卷的一级分配位图中未被置位的比特位,然后再根据写请求中的数据大小遍历查询该比特位对应的二级分配位图中未被置位的比特位,并将查询到的比特位置位,以完成分配位图的持久化操作,最后再向分配的数据块中写入数据。然而,在逻辑卷的分配位图经过多次回收释放(unmap)操作后,会造成比特位为0的位置比较离散,这样每次接收到写请求时,需要多次遍历查询分配位图才可获取到用于存储数据的数据块,影响存储系统的写性能,并且在写请求的粒度较大或者数量较多时,会存在分配位图的多次持久化操作,从而进一步影响存储系统的写性能。



技术实现要素:

有鉴于此,本申请提供一种自动精简配置的方法及装置,以解决现有实现方式会影响存储系统写性能的问题。

根据本申请实施例的第一方面,提供一种自动精简配置的方法,所述方法应用于存储设备,所述方法包括:

根据预设策略判断是否需要为逻辑卷预分配数据块;

若是,则根据该逻辑卷当前分配的数据块的剩余额度确定需要为该逻辑卷预分配数据块的额度,并为该逻辑卷分配所述额度的数据块;

当接收到针对该逻辑卷的写请求时,根据所述写请求中的数据大小从该逻辑卷当前分配的数据块中获取数据块,并将所述写请求中的数据写入获取的数据块中,并将获取的数据块的物理地址记录到所述写请求中的逻辑地址对应的地址映射单元中。

根据本申请实施例的第二方面,提供一种自动精简配置的装置,所述装置应用于存储设备,所述装置包括:

判断模块,用于根据预设策略判断是否需要为逻辑卷预分配数据块;

分配模块,用于当判断结果为是时,根据该逻辑卷当前分配的数据块的剩余额度确定需要为该逻辑卷预分配数据块的额度,并为该逻辑卷分配所述额度的数据块;

写模块,用于当接收到针对该逻辑卷的写请求时,根据所述写请求中的数据大小从该逻辑卷当前分配的数据块中获取数据块,并将所述写请求中的数据写入获取的数据块中,并将获取的数据块的物理地址记录到所述写请求中的逻辑地址对应的地址映射单元中。

应用本申请实施例,存储设备可以根据预设策略判断是否需要为逻辑卷预分配数据块;若是,则根据该逻辑卷当前分配的数据块的剩余额度确定需要为该逻辑卷预分配数据块的额度,并为该逻辑卷分配所述额度的数据块;当接收到针对该逻辑卷的写请求时,根据写请求中的数据大小从该逻辑卷当前分配的数据块中获取数据块,并将写请求中的数据写入获取的数据块中,并将获取的数据块的物理地址记录到写请求中的逻辑地址对应的地址映射单元中。基于上述实现方式,通过预先为逻辑卷分配数据块,在写时分配时,无论是在写请求的粒度较大还是在写请求数量较多的情况下,均可以通过直接获取分配的数据块来存储数据,从而可减少写时分配时多次遍历查询分配位图所带来的性能损耗,进而提高了存储系统的写速度,并且还可避免在为单个逻辑卷分配数据块时阻塞为其它逻辑卷分配数据块的问题。

附图说明

图1a为本申请根据一示例性实施例示出的一种自动精简配置的方法的实施例流程图;

图1b为本申请根据图1a所示实施例示出的一种逻辑卷的分配位图的结构图;

图1c为本申请根据图1a所示实施例示出的一种元数据区与数据区的结构图;

图2为本申请根据一示例性实施例示出的一种存储设备的硬件结构图;

图3为本申请根据一示例性实施例示出的一种自动精简配置的装置的实施例结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1a为本申请根据一示例性实施例示出的一种自动精简配置的方法的实施例流程图;图1b为本申请根据图1a所示实施例示出的一种逻辑卷的分配位图;图1c为本申请根据图1a所示实施例示出的一种元数据区与数据区的结构图,该自动精简配置的方法可以应用在存储系统的存储设备上,在本申请实施例中,存储设备中设置有独立磁盘,或由多个独立磁盘组成的raid(redundantarraysofindependentdisks,磁盘阵列),通过磁盘管理模块可以将独立的磁盘或raid汇集成一个存储池,在存储池中可以创建多个逻辑卷(精简lun(logicalunitnumber,逻辑单元号),每个逻辑卷在创建时,存储设备可以为逻辑卷设定用于存储数据的逻辑容量和实际物理容量,逻辑容量是该逻辑卷能够达到的最大容量,实际物理容量是从存储池初始分配的实际存储空间大小,当该逻辑卷对应的已分配的存储空间的使用率达到阈值时,存储设备再从存储池中划分一定的配额给逻辑卷,如此反复,直到该逻辑卷对应的已分配存储空间大小达到设定的逻辑容量为止,从而这种按需分配的方式可提高存储空间的利用率。如图1a所示,该自动精简配置的方法可以包括如下步骤:

步骤101:根据预设策略判断是否需要为逻辑卷预分配数据块,若是,则执行步骤102,否则,执行步骤103。

在一实施例中,存储设备根据预设策略可以为逻辑卷预先分配好一定额度的数据块(block块),当进行写时分配时,可直接获取数据块。该预设策略可以有两种实现方式,下面分别进行详细阐述:

第一种实现方式为智能分配判定策略,存储设备每隔第一预设时间周期,统计该周期内写入数据的带宽,并判断该逻辑卷当前分配的数据块的剩余额度是否小于该带宽的预设倍数;若是,则确定需要为该逻辑卷预分配数据块;否则,确定不需要为该逻辑卷预分配数据块。

其中,存储设备在第一预设时间周期内,可以通过统计每个逻辑卷的写请求中的数据大小,并将这些数据大小进行累加,从而得到该周期内写入数据的带宽。通常,如果逻辑卷当前分配的数据块的剩余额度大于该带宽的预设倍数,表示该逻辑卷当前分配的数据块,能够满足下一周期内的写请求需要的额度,不需要为该逻辑卷预分配数据块,该预设倍数可以根据实践经验进行设置,例如,可以设置为2倍。

第二种实现方式为固定额度判定策略,存储设备每隔第二预设时间周期,判断该逻辑卷当前分配的数据块的剩余额度是否小于预设数值;若是,则确定需要为该逻辑卷预分配数据块;否则,确定不需要为该逻辑卷预分配数据块。

其中,存储设备可以预先设置一个缺醒值,即预设数值,例如,该缺醒值可以设置为32mb,如果逻辑卷当前分配的数据块的剩余额度大于该缺醒值,表示该逻辑卷当前分配的数据块能够满足下一次的写请求需要的额度,不需要为该逻辑卷预分配数据块。

本领域技术人员可以理解的是,由于存储设备的存储池包括多个逻辑卷,因此需要针对每个逻辑卷,为其预先分配好一定额度的数据块,在本申请实施例中,为了描述方便,以一个逻辑卷进行示例性说明。

步骤102:根据该逻辑卷当前分配的数据块的剩余额度确定需要为该逻辑卷预分配数据块的额度,并为该逻辑卷分配所述额度的数据块。

在一实施例中,针对上述第一种智能分配判定策略,存储设备可以先将统计得到的带宽乘以预设倍数,然后再与逻辑卷当前分配的数据块的剩余额度相减,得到的数值即为需要为该逻辑卷预分配数据块的额度;针对上述第二种固定额度判定策略,存储设备可以根据实践经验预先设置一个固定数值(例如64mb),将该固定数值与逻辑卷当前分配的数据块的剩余额度相减,得到的数值即为需要为该逻辑卷预分配数据块的额度。

在另一实施例中,针对为该逻辑卷分配确定出来的额度的数据块的过程,存储设备可以先获取该额度对应的数据块的数量,然后遍历查询该逻辑卷的一级分配位图,获取未被置位的第一比特位,并遍历查询该第一比特位对应的二级分配位图,获取该数量的未被置位的第二比特位,并将第二比特位置位,从而将第二比特位对应的数据块作为分配的数据块。从而,在预分配过程中,将比特位置位完成分配位图的持久化,可避免写时分配时再遍历查询分配位图并对分配位图持久化所带来的性能损耗。

其中,由于一级分配位图中未被置位的比特位对应的二级分配位图中的比特位不可能全部都是未被置位的,或者,需要分配的数据块的数量大于每个二级分配位图中的比特位总数量,因此为了查询到未被置位的第二比特位的数量达到需要分配的数据块的数量,存储设备最终获取的第一比特位可能不止一个,但存储设备对一级分配位图中比特位是依次遍历查询的,直到获取到的第二比特位的数量达到需要分配的数据块的数量为止。

需要说明的是,当一级分配位图中的某一比特位对应的二级分配位图中的所有比特位均被置位时,需要将一级分配位图中的该某一比特位置位,表示该比特位对应的二级分配位图中包括的所有数据块均已被分配出去。

在一示例性场景中,逻辑卷的逻辑容量为100gb,而物理容量为16gb,数据块为8kb,按照二级分配粒度方式分配数据块,如图1b所示,为一种逻辑卷的分配位图,其中,一级分配位图中的一级分配粒度较大,为1gb,包括16个比特位(大小为2b),二级分配位图中的二级分配粒度较小,为8kb,即为一个数据块的大小,一个一级分配位图的比特位对应一个二级分配位图,因此二级分配位图总计有16个,而每个二级分配位图又包括128k个比特位(大小为8kb),每个比特位对应一个数据块。假设确定的需要为该逻辑卷预分配数据块的额度为20mb,可以确定数据块的数量为20mb/8kb=2560个,因此需要遍历查询2560个第二比特位,遍历查询一级分配位图,可获取到的第一比特位为一级分配位图的第一个比特位,进而再遍历查询第一个比特位对应的二级分配位图,假设该二级分配位图中未被置位的比特位有2500个,从而该2500个比特位都可作为第二比特位,并将该2500个比特位置位,此时,由于该二级分配位图中的所有比特位均被置位,因此,可以将该二级分配位图在一级分配位图中对应的比特位置位。此外,由于遍历查询一次并未获取到所需数量的数据块,因此需要继续遍历查询一级分配位图,可获取到另一个第一比特位为一级分配位图的第四个比特位,进而再遍历查询第四个比特位对应的二级分配位图,假设该二级分配位图中未被置位的比特位为128k个,因此可以从128k个比特位中依次选取剩余的60个比特位作为第二比特位,并将选取的60个比特位置位。从而经过两轮的遍历查询最终获取到2560个数据块。

步骤103:当接收到针对该逻辑卷的写请求时,根据写请求中的数据大小从该逻辑卷当前分配的数据块中获取数据块,并将写请求中的数据写入获取的数据块中,并将获取的数据块的物理地址记录到写请求中的逻辑地址对应的地址映射单元中。

在一实施例中,存储设备接收到针对该逻辑卷的写请求时,在根据写请求中的数据大小从该逻辑卷当前分配的数据块中获取数据块之前,可以根据写请求中的数据大小和逻辑地址计算逻辑地址对应的地址映射单元,并获取该地址映射单元中存储的物理地址;若获取的物理地址为有效地址,则将写请求中的数据写入该物理地址对应的数据块中;若获取的物理地址为无效地址,则再执行根据写请求中的数据大小从该逻辑卷当前分配的数据块中获取数据块的过程。

其中,由于数据在写入数据块之后,存储设备会将写入数据的数据块的物理地址记录到逻辑地址对应的地址映射单元中,地址映射单元位于磁盘的元数据区,而数据块位于磁盘的数据区,每个数据块均有一个对应的地址映射单元,通常地址映射单元中存储一个无效地址,例如全f或者是空,如果数据块中写入了数据,该数据块的物理地址便会写入对应的地址映射单元中,此时,地址映射单元中存储的是一个真实的地址,即有效地址,逻辑地址即为lba(logicalblockaddress,逻辑区块地址),指的是一个虚拟地址,而物理地址即为pba(physicsblockaddress,物理区块地址),指的是一个数据块的实际地址。因此存储设备在接收到上层应用的写请求时,可以先判断一下写请求中的逻辑地址对应的地址映射单元存储的物理地址是否有效,如果有效,表示无需为该写请求从该逻辑卷当前分配的数据块中获取数据块,可直接将写请求中的数据写入物理地址对应的数据块中。针对根据写请求中的数据大小和逻辑地址计算逻辑地址对应的地址映射单元的过程包括如下步骤:

(1)计算地址映射单元的起始序列号n1=lba/block;

(2)计算地址映射单元的结束序列号n2=((lba+size)/block)-1;

其中,写请求中的数据大小为size,逻辑地址为lba,数据块大小为block,且n1和n2均取整数。

(3)将起始序列号到结束序列号之间包括的地址映射单元确定为逻辑地址对应的地址映射单元。

在一示例性场景中,如图1c所示,pba由64位比特位表示,需8b空间存放,数据块的大小block=8kb,一个物理容量为100gb的逻辑卷,可将对应的数据区的存储空间划分为100gb/8kb=12.5m个数据块,也即需要在元数据区有12.5m个地址映射单元对应,从而地址映射单元需要元数据区的存储空间为12.5m*8b=100mb,假设写请求携带的逻辑地址lba=9kb,数据大小size=15kb,由n1=lba/block=1,n2=((lba+size)/block)-1=2,可得到逻辑地址对应的地址映射单元的序列号为1和2。

在另一实施例中,上层应用发送的写请求可以携带要写入的数据大小和逻辑地址,如果获取的物理地址为无效地址,表示需要根据数据大小确定需要获取的数据块个数,然后从逻辑卷当前分配的数据块中获取相应个数的数据块,以将写请求中的数据写入数据块中,并将获取的数据块的物理地址记录到该逻辑地址对应的地址映射单元中,从而将逻辑地址与物理地址的映射关系持久化到磁盘。当后续接收到携带有该逻辑地址的写请求或者读请求,可以直接利用该映射关系找到相应的数据块,写入新数据或者读取数据。

根据上述步骤102和步骤103的描述,需要说明的是,存储设备可以在为逻辑卷分配所述额度的数据块之后,将逻辑卷的标识与分配的数据块的物理地址记录到缓存日志中;在将写请求中的数据写入获取的数据块中之前,再从缓存日志中查找获取的数据块的物理地址,并将写请求中的逻辑地址对应查找到的物理地址记录到缓存日志中;最后再将获取的数据块的物理地址记录到写请求中的逻辑地址对应的地址映射单元中之后,从缓存日志中再删除先前记录的逻辑卷的标识、逻辑地址以及物理地址。从而,在写入数据之前,如果存储设备出现故障,可以利用缓存日志记录的逻辑地址与物理地址的映射关系进行容错处理。

进一步地,在将写请求中的逻辑地址对应查找到的物理地址记录到缓存日志中之后,当存储设备检测到故障时,可以获取缓存日志中记录的物理地址对应的数据块,并在相应二级分配位图中将获取的数据块对应的比特位清零,以重新用于预分配使用,并清空缓存日志,从而实现故障的容错处理,并且清零的比特位对应的数据块还可被重新预分配,可进一步提高空间利用率。

再进一步地,当存储设备检测到故障时,还可以将缓存日志中记录的物理地址记录到逻辑地址对应的地址映射列表中,即将逻辑地址与物理地址的映射关系持久化到磁盘中,然后再将缓存日志中记录的逻辑地址、物理地址以及对应的逻辑卷的标识删除,从而也可实现故障的容错处理,即使后续接收到携带有该逻辑地址的写请求,也可以通过该映射关系找到相应的数据块并写入新数据,而无需再获取数据块。

由上述实施例可知,存储设备可以根据预设策略判断是否需要为逻辑卷预分配数据块;若是,则根据该逻辑卷当前分配的数据块的剩余额度确定需要为该逻辑卷预分配数据块的额度,并为该逻辑卷分配所述额度的数据块;当接收到针对该逻辑卷的写请求时,根据写请求中的数据大小从该逻辑卷当前分配的数据块中获取数据块,并将写请求中的数据写入获取的数据块中,并将获取的数据块的物理地址记录到写请求中的逻辑地址对应的地址映射单元中。基于上述实现方式,通过预先为逻辑卷分配数据块,在写时分配时,无论是在写请求的粒度较大还是在写请求数量较多的情况下,均可以通过直接获取分配的数据块来存储数据,从而可减少写时分配时多次遍历查询分配位图所带来的性能损耗,进而提高了存储系统的写速度,并且还可避免在为单个逻辑卷分配数据块时阻塞为其它逻辑卷分配数据块的问题。

与前述自动精简配置的方法的实施例相对应,本申请还提供了自动精简配置的装置的实施例。

本申请自动精简配置的装置的实施例可以应用在存储设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本申请根据一实施例性实施例示出的一种存储设备的硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。

图3为本申请根据一示例性实施例示出的一种自动精简配置的装置的实施例结构图,该自动精简配置的装置可以应用在存储系统的存储设备上,如图3所示,该自动精简配置的装置包括:判断模块31、分配模块32、写模块33。

其中,判断模块31,用于根据预设策略判断是否需要为逻辑卷预分配数据块;

分配模块32,用于当判断结果为是时,根据该逻辑卷当前分配的数据块的剩余额度确定需要为该逻辑卷预分配数据块的额度,并为该逻辑卷分配所述额度的数据块;

写模块33,用于当接收到针对该逻辑卷的写请求时,根据所述写请求中的数据大小从该逻辑卷当前分配的数据块中获取数据块,并将所述写请求中的数据写入获取的数据块中,并将获取的数据块的物理地址记录到所述写请求中的逻辑地址对应的地址映射单元中。

在一可选的实现方式中,所述判断模块31,具体用于每隔第一预设时间周期,统计该周期内写入数据的带宽;判断该逻辑卷当前分配的数据块的剩余额度是否小于该带宽的预设倍数;若是,则确定需要为该逻辑卷预分配数据块;否则,确定不需要为该逻辑卷预分配数据块;或者,每隔第二预设时间周期,判断该逻辑卷当前分配的数据块的剩余额度是否小于预设数值;若是,则确定需要为该逻辑卷预分配数据块;否则,确定不需要为该逻辑卷预分配数据块。

在一可选的实现方式中,所述装置还包括(图3中未示出):

查找模块,用于在写模块33根据所述写请求中的数据大小从该逻辑卷当前分配的数据块中获取数据块之前,根据所述写请求中的数据大小和逻辑地址计算所述逻辑地址对应的地址映射单元,并获取所述地址映射单元中存储的物理地址;若获取的物理地址为有效地址,则将所述写请求中的数据写入所述物理地址对应的数据块中;若获取的物理地址无效地址,则执行根据所述写请求中的数据大小从该逻辑卷当前分配的数据块中获取数据块的过程。

在一可选的实现方式中,所述分配模块32,具体用于在为该逻辑卷分配所述额度的数据块过程中,获取所述额度对应的数据块的数量;遍历查询该逻辑卷的一级分配位图,获取未被置位的第一比特位,并遍历查询所述第一比特位对应的二级分配位图,获取所述数量的未被置位的第二比特位,并将所述第二比特位置位;将所述第二比特位对应的数据块作为分配的数据块。

在一可选的实现方式中,所述装置还包括(图3中未示出):

第一记录模块,用于在所述分配模块32为该逻辑卷分配所述额度的数据块之后,将该逻辑卷的标识与分配的数据块的物理地址记录到缓存日志中;

第二记录模块,用于在所述写模块33将写请求中的数据写入获取的数据块中之前,从所述缓存日志中查找获取的数据块的物理地址,并将所述写请求中的逻辑地址对应查找到的物理地址记录到所述缓存日志中;

删除模块,用于在所述写模块33将获取的数据块的物理地址记录到所述写请求中的逻辑地址对应的地址映射单元中之后,从所述缓存日志中删除该逻辑卷的标识、所述逻辑地址以及所述物理地址。

在一可选的实现方式中,所述装置还包括(图3中未示出):

修复模块,用于在所述第二记录模块将所述写请求中的逻辑地址对应查找到的物理地址记录到所述缓存日志中之后,当检测到故障时,获取所述缓存日志中记录的物理地址对应的数据块,并在相应二级分配位图中将获取的数据块对应的比特位清零,并清空所述缓存日志。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1